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:
parent
ad8fda29e6
commit
1cde289f1c
4 changed files with 29 additions and 2 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
14
gcc/testsuite/gfortran.dg/dependency_51.f90
Normal file
14
gcc/testsuite/gfortran.dg/dependency_51.f90
Normal 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
|
Loading…
Add table
Reference in a new issue