re PR fortran/39292 (ICE in gfc_conv_array_initializer, at fortran/trans-array.c:3884)
2009-02-26 Paul Thomas <pault@gcc.gnu.org> PR fortran/39292 * trans-array.c (gfc_conv_array_initializer): Convert all expressions rather than ICEing. 2009-02-26 Paul Thomas <pault@gcc.gnu.org> PR fortran/39292 * gfortran.dg/initialization_22.f90: New test. From-SVN: r144444
This commit is contained in:
parent
1a46aef0bd
commit
c1cfed038a
@ -1,3 +1,9 @@
|
||||
2009-02-26 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/39292
|
||||
* trans-array.c (gfc_conv_array_initializer): Convert all
|
||||
expressions rather than ICEing.
|
||||
|
||||
2008-02-21 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/38914
|
||||
|
@ -4005,8 +4005,21 @@ gfc_conv_array_initializer (tree type, gfc_expr * expr)
|
||||
CONSTRUCTOR_APPEND_ELT (v, index, se.expr);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
/* Catch those occasional beasts that do not simplify
|
||||
for one reason or another, assuming that if they are
|
||||
standard defying the frontend will catch them. */
|
||||
gfc_conv_expr (&se, c->expr);
|
||||
if (range == NULL_TREE)
|
||||
CONSTRUCTOR_APPEND_ELT (v, index, se.expr);
|
||||
else
|
||||
{
|
||||
if (index != NULL_TREE)
|
||||
CONSTRUCTOR_APPEND_ELT (v, index, se.expr);
|
||||
CONSTRUCTOR_APPEND_ELT (v, range, se.expr);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -1,3 +1,8 @@
|
||||
2009-02-26 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/39292
|
||||
* gfortran.dg/initialization_22.f90: New test.
|
||||
|
||||
2008-02-25 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR rtl-optimization/39241
|
||||
|
10
gcc/testsuite/gfortran.dg/initialization_22.f90
Normal file
10
gcc/testsuite/gfortran.dg/initialization_22.f90
Normal file
@ -0,0 +1,10 @@
|
||||
! { dg-do run }
|
||||
! tests the fix for PR39292, where the intitialization expression
|
||||
! did not simplify and caused an ICE in gfc_conv_array_initializer.
|
||||
!
|
||||
! Contributed by Richard Guenther <rguenth@gcc.gnu.org>
|
||||
!
|
||||
integer :: n
|
||||
real, dimension(2) :: a = (/ ( (float(n))**(1.0), n=1,2) /)
|
||||
if (any (a .ne. (/ ( (float(n))**(1.0), n=1,2) /))) call abort
|
||||
end
|
Loading…
Reference in New Issue
Block a user