re PR fortran/83224 (creating character array from elements shorter than declared does not pad with whitespace properly and aborts)

2017-12-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/83224
	* frontend-passes.c (create_var): Also handle
	character arrays, handling deferred lenghts.

2017-12-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/83224
	* gfortran.dg/dependency_51.f90: New test.

From-SVN: r255331
This commit is contained in:
Thomas Koenig 2017-12-01 18:06:31 +00:00
parent ad8fda29e6
commit 1cde289f1c
4 changed files with 29 additions and 2 deletions

View file

@ -1,3 +1,9 @@
2017-12-01 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/83224
* frontend-passes.c (create_var): Also handle
character arrays, handling deferred lenghts.
2017-12-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82605

View file

@ -767,7 +767,7 @@ create_var (gfc_expr * e, const char *vname)
}
deferred = 0;
if (e->ts.type == BT_CHARACTER && e->rank == 0)
if (e->ts.type == BT_CHARACTER)
{
gfc_expr *length;
@ -778,6 +778,8 @@ create_var (gfc_expr * e, const char *vname)
else
{
symbol->attr.allocatable = 1;
symbol->ts.u.cl->length = NULL;
symbol->ts.deferred = 1;
deferred = 1;
}
}
@ -790,7 +792,7 @@ create_var (gfc_expr * e, const char *vname)
result = gfc_get_expr ();
result->expr_type = EXPR_VARIABLE;
result->ts = e->ts;
result->ts = symbol->ts;
result->ts.deferred = deferred;
result->rank = e->rank;
result->shape = gfc_copy_shape (e->shape, e->rank);

View file

@ -1,3 +1,8 @@
2017-12-01 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/83224
* gfortran.dg/dependency_51.f90: New test.
2017-12-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82605

View file

@ -0,0 +1,14 @@
! { dg-do run }
! PR 83224 - dependency mishandling with an array constructor
! Original test case by Urban Jost
program dusty_corner
implicit none
character(len=:),allocatable :: words(:)
integer :: n
words=[character(len=3) :: 'one', 'two']
n = 5
words=[character(len=n) :: words, 'three']
if (any(words /= [ "one ", "two ", "three"])) call abort
end program dusty_corner