[Bug libgomp/62107] New: libgomp.fortran/target2.f90 FAIL while compiling for OpenMP 4.0 offload target
andrey.turetskiy at gmail dot com
gcc-bugzilla@gcc.gnu.org
Tue Aug 12 11:29:00 GMT 2014
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};
}
}
More information about the Gcc-bugs
mailing list