+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 Andre Vehreschild <vehre@gcc.gnu.org>
* expr.c (gfc_find_stat_co): Fixed whitespaces.
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;
--- /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