+2016-09-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/77665
+ * tree-inline.c (remap_gimple_stmt): Set has_simduid_loops
+ for all IFN_GOMP_SIMD_* internal fns, not just for
+ IFN_GOMP_SIMD_ORDERED_*.
+
2016-09-21 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/77670
+2016-09-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/77665
+ * gfortran.dg/gomp/pr77665.f90: New test.
+
2016-09-22 Paul Thomas <pault@gcc.gnu.org>
* gfortran.dg/dtio_11.f90: Correct for changed error messages.
--- /dev/null
+! PR fortran/77665
+! { dg-do compile }
+! { dg-additional-options "-O2" }
+
+program pr77665
+ type t
+ integer :: a = 0
+ end type
+ type(t) :: x
+ integer :: i
+ !$omp declare reduction (+:t: omp_out%a = omp_out%a + omp_in%a)
+ !$omp simd reduction(+:x)
+ do i = 1, 8
+ if (abs(i) < 5) call abort
+ x%a = x%a + 1
+ end do
+ print *, x%a
+end
gimple_call_set_tail (call_stmt, false);
if (gimple_call_from_thunk_p (call_stmt))
gimple_call_set_from_thunk (call_stmt, false);
- if (gimple_call_internal_p (call_stmt)
- && IN_RANGE (gimple_call_internal_fn (call_stmt),
- IFN_GOMP_SIMD_ORDERED_START,
- IFN_GOMP_SIMD_ORDERED_END))
- DECL_STRUCT_FUNCTION (id->dst_fn)->has_simduid_loops = true;
+ if (gimple_call_internal_p (call_stmt))
+ switch (gimple_call_internal_fn (call_stmt))
+ {
+ case IFN_GOMP_SIMD_LANE:
+ case IFN_GOMP_SIMD_VF:
+ case IFN_GOMP_SIMD_LAST_LANE:
+ case IFN_GOMP_SIMD_ORDERED_START:
+ case IFN_GOMP_SIMD_ORDERED_END:
+ DECL_STRUCT_FUNCTION (id->dst_fn)->has_simduid_loops = true;
+ break;
+ default:
+ break;
+ }
}
/* Remap the region numbers for __builtin_eh_{pointer,filter},