aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/frontend-passes.c
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2016-07-22 10:38:32 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2016-07-22 10:38:32 +0000
commit1603ebe016da010dcfe264901c4f9a07f9d89e63 (patch)
tree3079ee3a42a7d958ac9f39d6af5f07745081498f /gcc/fortran/frontend-passes.c
parentbc91c4361527fb229ad47f20a45de0b3160f2de9 (diff)
downloadgcc-1603ebe016da010dcfe264901c4f9a07f9d89e63.zip
gcc-1603ebe016da010dcfe264901c4f9a07f9d89e63.tar.gz
gcc-1603ebe016da010dcfe264901c4f9a07f9d89e63.tar.bz2
re PR fortran/71795 (Two Bugs in array constructors (optimization))
2016-07-22 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/71795 * frontend-passes.c (combine_array_constructor): Don't do anything if the expression is inside an array iterator. 2016-07-22 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/71795 * gfortran.dg/constructor_50.f90: New test. From-SVN: r238638
Diffstat (limited to 'gcc/fortran/frontend-passes.c')
-rw-r--r--gcc/fortran/frontend-passes.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/fortran/frontend-passes.c b/gcc/fortran/frontend-passes.c
index d4dee47..d333c68 100644
--- a/gcc/fortran/frontend-passes.c
+++ b/gcc/fortran/frontend-passes.c
@@ -1255,6 +1255,11 @@ combine_array_constructor (gfc_expr *e)
if (forall_level > 0)
return false;
+ /* Inside an iterator, things can get hairy; we are likely to create
+ an invalid temporary variable. */
+ if (iterator_level > 0)
+ return false;
+
op1 = e->value.op.op1;
op2 = e->value.op.op2;