diff options
author | Martin Liska <mliska@suse.cz> | 2022-07-10 16:45:06 +0200 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2022-07-10 16:45:06 +0200 |
commit | c9de7a601878148247a44c4b04f550daa27cd556 (patch) | |
tree | 26b101e7703b42390ee048daf0b14bd8cf5b59db /gcc/c | |
parent | 3af708eb4547ffc02b446585dde47f71984cf385 (diff) | |
parent | 4ebbf3906895bcb40d7ff2729cf46deae66bc268 (diff) | |
download | gcc-c9de7a601878148247a44c4b04f550daa27cd556.zip gcc-c9de7a601878148247a44c4b04f550daa27cd556.tar.gz gcc-c9de7a601878148247a44c4b04f550daa27cd556.tar.bz2 |
Merge branch 'master' into devel/sphinx
Diffstat (limited to 'gcc/c')
-rw-r--r-- | gcc/c/ChangeLog | 15 | ||||
-rw-r--r-- | gcc/c/c-parser.cc | 41 |
2 files changed, 50 insertions, 6 deletions
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 077b726..989f293 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,18 @@ +2022-07-04 Tobias Burnus <tobias@codesourcery.com> + Chung-Lin Tang <cltang@codesourcery.com> + Thomas Schwinge <thomas@codesourcery.com> + + * c-parser.cc (c_parser_omp_target_data, c_parser_omp_target_update, + c_parser_omp_target_enter_data, c_parser_omp_target_exit_data): Set + OMP_REQUIRES_TARGET_USED. + (c_parser_omp_requires): Remove sorry. + +2022-07-01 Tobias Burnus <tobias@codesourcery.com> + + * c-parser.cc (c_parser_omp_target_enter_data, + c_parser_omp_target_exit_data): Accept tofrom + map-type modifier but use 'to' / 'from' internally. + 2022-06-16 David Malcolm <dmalcolm@redhat.com> * c-decl.cc (implicitly_declare): Add auto_diagnostic_group to diff --git a/gcc/c/c-parser.cc b/gcc/c/c-parser.cc index 1704a52..9c02141 100644 --- a/gcc/c/c-parser.cc +++ b/gcc/c/c-parser.cc @@ -20915,6 +20915,10 @@ c_parser_omp_teams (location_t loc, c_parser *parser, static tree c_parser_omp_target_data (location_t loc, c_parser *parser, bool *if_p) { + if (flag_openmp) + omp_requires_mask + = (enum omp_requires) (omp_requires_mask | OMP_REQUIRES_TARGET_USED); + tree clauses = c_parser_omp_all_clauses (parser, OMP_TARGET_DATA_CLAUSE_MASK, "#pragma omp target data"); @@ -21010,6 +21014,10 @@ c_parser_omp_target_update (location_t loc, c_parser *parser, return false; } + if (flag_openmp) + omp_requires_mask + = (enum omp_requires) (omp_requires_mask | OMP_REQUIRES_TARGET_USED); + tree stmt = make_node (OMP_TARGET_UPDATE); TREE_TYPE (stmt) = void_type_node; OMP_TARGET_UPDATE_CLAUSES (stmt) = clauses; @@ -21057,6 +21065,10 @@ c_parser_omp_target_enter_data (location_t loc, c_parser *parser, return true; } + if (flag_openmp) + omp_requires_mask + = (enum omp_requires) (omp_requires_mask | OMP_REQUIRES_TARGET_USED); + tree clauses = c_parser_omp_all_clauses (parser, OMP_TARGET_ENTER_DATA_CLAUSE_MASK, "#pragma omp target enter data"); @@ -21072,6 +21084,14 @@ c_parser_omp_target_enter_data (location_t loc, c_parser *parser, case GOMP_MAP_ALLOC: map_seen = 3; break; + case GOMP_MAP_TOFROM: + OMP_CLAUSE_SET_MAP_KIND (*pc, GOMP_MAP_TO); + map_seen = 3; + break; + case GOMP_MAP_ALWAYS_TOFROM: + OMP_CLAUSE_SET_MAP_KIND (*pc, GOMP_MAP_ALWAYS_TO); + map_seen = 3; + break; case GOMP_MAP_FIRSTPRIVATE_POINTER: case GOMP_MAP_ALWAYS_POINTER: case GOMP_MAP_ATTACH_DETACH: @@ -21080,7 +21100,7 @@ c_parser_omp_target_enter_data (location_t loc, c_parser *parser, map_seen |= 1; error_at (OMP_CLAUSE_LOCATION (*pc), "%<#pragma omp target enter data%> with map-type other " - "than %<to%> or %<alloc%> on %<map%> clause"); + "than %<to%>, %<tofrom%> or %<alloc%> on %<map%> clause"); *pc = OMP_CLAUSE_CHAIN (*pc); continue; } @@ -21143,6 +21163,10 @@ c_parser_omp_target_exit_data (location_t loc, c_parser *parser, return true; } + if (flag_openmp) + omp_requires_mask + = (enum omp_requires) (omp_requires_mask | OMP_REQUIRES_TARGET_USED); + tree clauses = c_parser_omp_all_clauses (parser, OMP_TARGET_EXIT_DATA_CLAUSE_MASK, "#pragma omp target exit data"); @@ -21159,6 +21183,14 @@ c_parser_omp_target_exit_data (location_t loc, c_parser *parser, case GOMP_MAP_DELETE: map_seen = 3; break; + case GOMP_MAP_TOFROM: + OMP_CLAUSE_SET_MAP_KIND (*pc, GOMP_MAP_FROM); + map_seen = 3; + break; + case GOMP_MAP_ALWAYS_TOFROM: + OMP_CLAUSE_SET_MAP_KIND (*pc, GOMP_MAP_ALWAYS_FROM); + map_seen = 3; + break; case GOMP_MAP_FIRSTPRIVATE_POINTER: case GOMP_MAP_ALWAYS_POINTER: case GOMP_MAP_ATTACH_DETACH: @@ -21167,8 +21199,8 @@ c_parser_omp_target_exit_data (location_t loc, c_parser *parser, map_seen |= 1; error_at (OMP_CLAUSE_LOCATION (*pc), "%<#pragma omp target exit data%> with map-type other " - "than %<from%>, %<release%> or %<delete%> on %<map%>" - " clause"); + "than %<from%>, %<tofrom%>, %<release%> or %<delete%> " + "on %<map%> clause"); *pc = OMP_CLAUSE_CHAIN (*pc); continue; } @@ -22763,9 +22795,6 @@ c_parser_omp_requires (c_parser *parser) c_parser_skip_to_pragma_eol (parser, false); return; } - if (p && this_req != OMP_REQUIRES_DYNAMIC_ALLOCATORS) - sorry_at (cloc, "%qs clause on %<requires%> directive not " - "supported yet", p); if (p) c_parser_consume_token (parser); if (this_req) |