https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62107
Bug ID: 62107 Summary: libgomp.fortran/target2.f90 FAIL while compiling for OpenMP 4.0 offload target Product: gcc Version: 4.10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libgomp Assignee: unassigned at gcc dot gnu.org Reporter: andrey.turetskiy at gmail dot com CC: jakub at gcc dot gnu.org To reproduce with trunk GCC: gfortran -fopenmp libgomp/testsuite/libgomp.fortran/target2.f90 Reduced testcase: module target2 contains subroutine foo (a) integer, pointer :: a logical :: r !$omp target map (to: a) map (from: r) r = a /= 1 !$omp end target if (r) call abort end subroutine foo end module target2 use target2, only : foo integer, pointer :: a allocate (a) a = 1 call foo (a) end GIMPLE for reduced testcase: foo (integer(kind=4) * & a) { integer(kind=4) * & a.1; logical(kind=4) r.4; logical(kind=4) r; try { a.1 = a; // Looks like the map clause for data pointed by 'a' is missed #pragma omp target map(to:*a.1 [len: 8]) map(alloc:a [pointer assign, bias: 0]) map(from:r [len: 4]) { { integer(kind=4) * & a.2; integer(kind=4) * D.2342; integer(kind=4) D.2343; logical(kind=4) r.3; a.2 = a; D.2342 = *a.2; D.2343 = *D.2342; r.3 = D.2343 != 1; r = r.3; } } r.4 = r; if (r.4 != 0) goto <D.2346>; else goto <D.2347>; <D.2346>: _gfortran_abort (); <D.2347>: L.1: } finally { r = {CLOBBER}; } }