+2016-08-09 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
+ PR fortran/71795
+ * frontend-passes.c (combine_array_constructor): Don't
+ do anything if the expression is inside an array iterator.
+
2016-08-09 Thomas Koenig <tkoenig@gcc.gnu.org>
Backport from trunk
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;
+2016-08-09 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
+ PR fortran/71795
+ * gfortran.dg/array_constructor_50.f90: New test.
+
2016-08-09 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/69742
--- /dev/null
+! { dg-do run }
+! PR 71795 - wrong result when putting an array constructor
+! instide an iterator.
+ program test
+
+ implicit none
+ integer :: i,n
+ logical, dimension(1) :: ra
+ logical :: rs
+ integer, allocatable :: a(:)
+
+ allocate ( a(1) )
+
+ n = 1
+ a = 2
+
+ ra = (/ (any(a(i).eq.(/1,2,3/)) ,i=1,n) /)
+ if (.not. all(ra)) call abort
+ rs = any ( (/ (any(a(i).eq.(/1,2,3/)) ,i=1,n) /) )
+ if (.not. rs) call abort
+ end program test