re PR fortran/66385 (ICE: FORALL writing multiple elements of one array)

2015-06-05  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/66385
	* frontend-passes.c (combine_array_constructor): Return early if
	inside a FORALL loop.

2015-06-05  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/66385
	* gfortran.dg/forall_17.f90:  New test.

From-SVN: r224172
This commit is contained in:
Thomas Koenig 2015-06-05 20:51:08 +00:00
parent e7547bc697
commit 9c3e121b01
4 changed files with 32 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2015-06-05 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/66385
* frontend-passes.c (combine_array_constructor): Return early if
inside a FORALL loop.
2015-06-05 Aldy Hernandez <aldyh@redhat.com>
* f95-lang.c (gfc_write_global_declarations): Remove.

View File

@ -1243,6 +1243,10 @@ combine_array_constructor (gfc_expr *e)
if (in_assoc_list)
return false;
/* With FORALL, the BLOCKS created by create_var will cause an ICE. */
if (forall_level > 0)
return false;
op1 = e->value.op.op1;
op2 = e->value.op.op2;

View File

@ -1,3 +1,8 @@
2015-06-05 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/66385
* gfortran.dg/forall_17.f90: New test.
2015-06-05 Aldy Hernandez <aldyh@redhat.com>
* g++.dg/cpp0x/pr57101.C: Add warning.

View File

@ -0,0 +1,17 @@
! { dg-do compile }
! { dg-options "-ffrontend-optimize" }
! PR fortran/66385 - this used to ICE
! Original test case by Mianzhi Wang
program test
double precision::aa(30)
double precision::a(3,3),b
b=1d0
forall(i=1:3)
a(:,i)=b*[1d0,2d0,3d0]
end forall
forall(i=1:10)
aa(10*[0,1,2]+i)=1d0
end forall
end program