From: Kwok Cheung Yeung Date: Wed, 3 Jan 2024 14:34:39 +0000 (+0000) Subject: openmp: Adjust position of OMP_CLAUSE_INDIRECT in OpenMP clauses X-Git-Tag: basepoints/gcc-15~3242 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a56a693a74dd3bee71b1266b09dbd753694ace94;p=thirdparty%2Fgcc.git openmp: Adjust position of OMP_CLAUSE_INDIRECT in OpenMP clauses Move OMP_CLAUSE_INDIRECT so that it is outside of the range checked by OMP_CLAUSE_SIZE and OMP_CLAUSE_DECL. 2024-01-03 Kwok Cheung Yeung gcc/c/ * c-parser.cc (c_parser_omp_clause_name): Move handling of indirect clause to correspond to alphabetical order. gcc/cp/ * parser.cc (cp_parser_omp_clause_name): Move handling of indirect clause to correspond to alphabetical order. gcc/ * tree-core.h (enum omp_clause_code): Move OMP_CLAUSE_INDIRECT to before OMP_CLAUSE__SIMDUID_. * tree.cc (omp_clause_num_ops): Update position of entry for OMP_CLAUSE_INDIRECT to correspond with omp_clause_code. (omp_clause_code_name): Likewise. --- diff --git a/gcc/c/c-parser.cc b/gcc/c/c-parser.cc index 64e436010d5e..e7b74fb07f02 100644 --- a/gcc/c/c-parser.cc +++ b/gcc/c/c-parser.cc @@ -14899,10 +14899,10 @@ c_parser_omp_clause_name (c_parser *parser) result = PRAGMA_OMP_CLAUSE_IN_REDUCTION; else if (!strcmp ("inbranch", p)) result = PRAGMA_OMP_CLAUSE_INBRANCH; - else if (!strcmp ("indirect", p)) - result = PRAGMA_OMP_CLAUSE_INDIRECT; else if (!strcmp ("independent", p)) result = PRAGMA_OACC_CLAUSE_INDEPENDENT; + else if (!strcmp ("indirect", p)) + result = PRAGMA_OMP_CLAUSE_INDIRECT; else if (!strcmp ("is_device_ptr", p)) result = PRAGMA_OMP_CLAUSE_IS_DEVICE_PTR; break; diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index 1a6b53933a70..37536faf2cf7 100644 --- a/gcc/cp/parser.cc +++ b/gcc/cp/parser.cc @@ -37645,10 +37645,10 @@ cp_parser_omp_clause_name (cp_parser *parser) result = PRAGMA_OMP_CLAUSE_IN_REDUCTION; else if (!strcmp ("inbranch", p)) result = PRAGMA_OMP_CLAUSE_INBRANCH; - else if (!strcmp ("indirect", p)) - result = PRAGMA_OMP_CLAUSE_INDIRECT; else if (!strcmp ("independent", p)) result = PRAGMA_OACC_CLAUSE_INDEPENDENT; + else if (!strcmp ("indirect", p)) + result = PRAGMA_OMP_CLAUSE_INDIRECT; else if (!strcmp ("is_device_ptr", p)) result = PRAGMA_OMP_CLAUSE_IS_DEVICE_PTR; break; diff --git a/gcc/tree-core.h b/gcc/tree-core.h index d1c7136c2045..8a89462bd7ec 100644 --- a/gcc/tree-core.h +++ b/gcc/tree-core.h @@ -350,9 +350,6 @@ enum omp_clause_code { /* OpenMP clause: doacross ({source,sink}:vec). */ OMP_CLAUSE_DOACROSS, - /* OpenMP clause: indirect [(constant-integer-expression)]. */ - OMP_CLAUSE_INDIRECT, - /* Internal structure to hold OpenACC cache directive's variable-list. #pragma acc cache (variable-list). */ OMP_CLAUSE__CACHE_, @@ -497,6 +494,9 @@ enum omp_clause_code { /* OpenMP clause: filter (integer-expression). */ OMP_CLAUSE_FILTER, + /* OpenMP clause: indirect [(constant-integer-expression)]. */ + OMP_CLAUSE_INDIRECT, + /* Internally used only clause, holding SIMD uid. */ OMP_CLAUSE__SIMDUID_, diff --git a/gcc/tree.cc b/gcc/tree.cc index 82eff2bf34da..8aee3ef18d82 100644 --- a/gcc/tree.cc +++ b/gcc/tree.cc @@ -269,7 +269,6 @@ unsigned const char omp_clause_num_ops[] = 2, /* OMP_CLAUSE_MAP */ 1, /* OMP_CLAUSE_HAS_DEVICE_ADDR */ 1, /* OMP_CLAUSE_DOACROSS */ - 1, /* OMP_CLAUSE_INDIRECT */ 2, /* OMP_CLAUSE__CACHE_ */ 2, /* OMP_CLAUSE_GANG */ 1, /* OMP_CLAUSE_ASYNC */ @@ -316,6 +315,7 @@ unsigned const char omp_clause_num_ops[] = 0, /* OMP_CLAUSE_ORDER */ 0, /* OMP_CLAUSE_BIND */ 1, /* OMP_CLAUSE_FILTER */ + 1, /* OMP_CLAUSE_INDIRECT */ 1, /* OMP_CLAUSE__SIMDUID_ */ 0, /* OMP_CLAUSE__SIMT_ */ 0, /* OMP_CLAUSE_INDEPENDENT */ @@ -362,7 +362,6 @@ const char * const omp_clause_code_name[] = "map", "has_device_addr", "doacross", - "indirect", "_cache_", "gang", "async", @@ -409,6 +408,7 @@ const char * const omp_clause_code_name[] = "order", "bind", "filter", + "indirect", "_simduid_", "_simt_", "independent",