[gomp4] optimize GOMP_MAP_TO_PSET
Cesar Philippidis
cesar@codesourcery.com
Thu Feb 2 15:08:00 GMT 2017
On 01/30/2017 02:26 AM, Thomas Schwinge wrote:
> ... also there is some bug somewhere; I see:
>
> PASS: libgomp.fortran/examples-4/async_target-2.f90 -O0 (test for excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/examples-4/async_target-2.f90 -O0 execution test
> PASS: libgomp.fortran/examples-4/async_target-2.f90 -O1 (test for excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/examples-4/async_target-2.f90 -O1 execution test
> PASS: libgomp.fortran/examples-4/async_target-2.f90 -O2 (test for excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/examples-4/async_target-2.f90 -O2 execution test
> PASS: libgomp.fortran/examples-4/async_target-2.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/examples-4/async_target-2.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test
> PASS: libgomp.fortran/examples-4/async_target-2.f90 -O3 -g (test for excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/examples-4/async_target-2.f90 -O3 -g execution test
> PASS: libgomp.fortran/examples-4/async_target-2.f90 -Os (test for excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/examples-4/async_target-2.f90 -Os execution test
>
> ..., and:
>
> PASS: libgomp.fortran/target3.f90 -O0 (test for excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/target3.f90 -O0 execution test
> PASS: libgomp.fortran/target3.f90 -O1 (test for excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/target3.f90 -O1 execution test
> PASS: libgomp.fortran/target3.f90 -O2 (test for excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/target3.f90 -O2 execution test
> PASS: libgomp.fortran/target3.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/target3.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test
> PASS: libgomp.fortran/target3.f90 -O3 -g (test for excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/target3.f90 -O3 -g execution test
> PASS: libgomp.fortran/target3.f90 -Os (test for excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/target3.f90 -Os execution test
>
> In all cases, the run-time error message is:
>
> libgomp: Pointer target of array section wasn't mapped
That problem occurred because I wasn't handling NULL pointers
gomp_map_pset. Basically, that can occur when you have an nullified
pointer to an array. I taught libgomp to handle that situation like
gomp_map_pointer, i.e., just propagate the NULL pointer to the accelerator.
This patch also fixes a bug with pointers to reference types. The
approach I took in this patch is to be conservative by demoting
GOMP_MAP_FIRSTPRIVATE_POINTER to GOMP_MAP_POINTER for such types.
I've applied this patch to gomp-4_0-branch.
Cesar
More information about the Gcc-patches
mailing list