]> git.ipfire.org Git - thirdparty/gcc.git/commit
openmp, fortran: Add Fortran support for indirect clause on the declare target directive
authorKwok Cheung Yeung <kcyeung@baylibre.com>
Thu, 15 Feb 2024 20:59:39 +0000 (20:59 +0000)
committerKwok Cheung Yeung <kcyeung@baylibre.com>
Thu, 15 Feb 2024 21:04:53 +0000 (21:04 +0000)
commit451bb5866021cc854cd972396c6bc4923eb14d39
tree25eed3b7bd77d7ce4eb6d9d71468ca95d1c14887
parent617bd59c659dcf6e5391409a2e9f64f75e905a96
openmp, fortran: Add Fortran support for indirect clause on the declare target directive

2024-02-15  Kwok Cheung Yeung  <kcyeung@baylibre.com>

gcc/fortran/
* dump-parse-tree.cc (show_attr): Handle omp_declare_target_indirect
attribute.
* f95-lang.cc (gfc_gnu_attributes): Add entry for 'omp declare
target indirect'.
* gfortran.h (symbol_attribute): Add omp_declare_target_indirect
field.
(struct gfc_omp_clauses): Add indirect field.
* openmp.cc (omp_mask2): Add OMP_CLAUSE_INDIRECT.
(gfc_match_omp_clauses): Match indirect clause.
(OMP_DECLARE_TARGET_CLAUSES): Add OMP_CLAUSE_INDIRECT.
(gfc_match_omp_declare_target): Check omp_device_type and apply
omp_declare_target_indirect attribute to symbol if indirect clause
active.  Show warning if there are only device_type and/or indirect
clauses on the directive.
* trans-decl.cc (add_attributes_to_decl): Add 'omp declare target
indirect' attribute if symbol has indirect attribute set.

gcc/testsuite/
* gfortran.dg/gomp/declare-target-4.f90 (f1): Update expected warning.
* gfortran.dg/gomp/declare-target-indirect-1.f90: New.
* gfortran.dg/gomp/declare-target-indirect-2.f90: New.

libgomp/
* testsuite/libgomp.fortran/declare-target-indirect-1.f90: New.
* testsuite/libgomp.fortran/declare-target-indirect-2.f90: New.
* testsuite/libgomp.fortran/declare-target-indirect-3.f90: New.
gcc/fortran/dump-parse-tree.cc
gcc/fortran/f95-lang.cc
gcc/fortran/gfortran.h
gcc/fortran/openmp.cc
gcc/fortran/trans-decl.cc
gcc/testsuite/gfortran.dg/gomp/declare-target-4.f90
gcc/testsuite/gfortran.dg/gomp/declare-target-indirect-1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/declare-target-indirect-2.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/declare-target-indirect-1.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/declare-target-indirect-2.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/declare-target-indirect-3.f90 [new file with mode: 0644]