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:
Paul Thomas 2009-02-26 06:23:42 +00:00
parent 1a46aef0bd
commit c1cfed038a
4 changed files with 35 additions and 1 deletions

View File

@ -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

View File

@ -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;

View File

@ -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

View 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