diff options
author | Tobias Burnus <tobias@codesourcery.com> | 2021-01-19 11:57:34 +0100 |
---|---|---|
committer | Tobias Burnus <tobias@codesourcery.com> | 2021-01-19 11:58:21 +0100 |
commit | 049bfd186fae9fb764a3ec04acb20d3eaacda7a3 (patch) | |
tree | ccfc528fa1495feaf59625d72f52ad034f229d37 /gcc/omp-low.c | |
parent | 9b8741c98f2876a430c12c85b396d29a87c9c488 (diff) | |
download | gcc-049bfd186fae9fb764a3ec04acb20d3eaacda7a3.zip gcc-049bfd186fae9fb764a3ec04acb20d3eaacda7a3.tar.gz gcc-049bfd186fae9fb764a3ec04acb20d3eaacda7a3.tar.bz2 |
OpenMP/Fortran: Fixes for {use,is}_device_ptr
gcc/fortran/ChangeLog:
PR fortran/98476
* openmp.c (resolve_omp_clauses): Change use_device_ptr
to use_device_addr for unless type(c_ptr); check all
list item for is_device_ptr.
gcc/ChangeLog:
PR fortran/98476
* omp-low.c (lower_omp_target): Handle nonpointer is_device_ptr.
libgomp/ChangeLog:
PR fortran/98476
* testsuite/libgomp.fortran/is_device_ptr-1.f90: New test.
gcc/testsuite/ChangeLog:
PR fortran/98476
* gfortran.dg/gomp/map-3.f90: Update expected scan-dump-tree.
* gfortran.dg/gomp/is_device_ptr-2.f90: New test.
* gfortran.dg/gomp/use_device_ptr-1.f90: New test.
Diffstat (limited to 'gcc/omp-low.c')
-rw-r--r-- | gcc/omp-low.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/omp-low.c b/gcc/omp-low.c index c1267dc..df5b6ce 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -12520,7 +12520,8 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx) || omp_is_allocatable_or_ptr (ovar)) { type = TREE_TYPE (type); - if (TREE_CODE (type) != ARRAY_TYPE + if (POINTER_TYPE_P (type) + && TREE_CODE (type) != ARRAY_TYPE && ((OMP_CLAUSE_CODE (c) != OMP_CLAUSE_USE_DEVICE_ADDR && !omp_is_allocatable_or_ptr (ovar)) || (omp_is_reference (ovar) @@ -12784,7 +12785,8 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx) if (omp_is_reference (var)) { type = TREE_TYPE (type); - if (TREE_CODE (type) != ARRAY_TYPE + if (POINTER_TYPE_P (type) + && TREE_CODE (type) != ARRAY_TYPE && (OMP_CLAUSE_CODE (c) != OMP_CLAUSE_USE_DEVICE_ADDR || (omp_is_reference (var) && omp_is_allocatable_or_ptr (var)))) |