diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2016-07-22 10:38:32 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2016-07-22 10:38:32 +0000 |
commit | 1603ebe016da010dcfe264901c4f9a07f9d89e63 (patch) | |
tree | 3079ee3a42a7d958ac9f39d6af5f07745081498f /gcc/fortran/frontend-passes.c | |
parent | bc91c4361527fb229ad47f20a45de0b3160f2de9 (diff) | |
download | gcc-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.c | 5 |
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; |