public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc/devel/omp/gcc-11] Revert "Target mapping C++ members inside member functions"
@ 2021-05-31 9:02 Chung-Lin Tang
0 siblings, 0 replies; only message in thread
From: Chung-Lin Tang @ 2021-05-31 9:02 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:c86171a265a2f501213eef027ecb7b93ac1b742f
commit c86171a265a2f501213eef027ecb7b93ac1b742f
Author: Chung-Lin Tang <cltang@codesourcery.com>
Date: Wed May 26 19:12:17 2021 +0800
Revert "Target mapping C++ members inside member functions"
This reverts commit e6258503835311ae3508ed123cb3b155fc2626ca.
Diff:
---
gcc/cp/parser.c | 2 +-
gcc/cp/semantics.c | 31 +++----------------------------
gcc/testsuite/g++.dg/gomp/target-3.C | 36 ------------------------------------
gcc/testsuite/g++.dg/gomp/this-2.C | 24 ++++++++++++------------
4 files changed, 16 insertions(+), 77 deletions(-)
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 901402bccb1..89f7af18857 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -38051,7 +38051,7 @@ cp_parser_omp_clause_map (cp_parser *parser, tree list)
}
nlist = cp_parser_omp_var_list_no_open (parser, OMP_CLAUSE_MAP, list,
- NULL, C_ORT_OMP, true);
+ NULL);
for (c = nlist; c != list; c = OMP_CLAUSE_CHAIN (c))
OMP_CLAUSE_SET_MAP_KIND (c, kind);
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 80e486a090d..536e3bf1655 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -4936,9 +4936,6 @@ handle_omp_array_sections_1 (tree c, tree t, vec<tree> &types,
if (REFERENCE_REF_P (t)
&& TREE_CODE (TREE_OPERAND (t, 0)) == COMPONENT_REF)
t = TREE_OPERAND (t, 0);
- if ((ort == C_ORT_ACC || ort == C_ORT_OMP)
- && TREE_CODE (t) == FIELD_DECL)
- t = finish_non_static_data_member (t, NULL_TREE, NULL_TREE);
ret = t;
if (TREE_CODE (t) == COMPONENT_REF
&& (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_MAP
@@ -4964,12 +4961,8 @@ handle_omp_array_sections_1 (tree c, tree t, vec<tree> &types,
return error_mark_node;
}
t = TREE_OPERAND (t, 0);
- if ((ort == C_ORT_ACC || ort == C_ORT_OMP)
- && TREE_CODE (t) == INDIRECT_REF)
- {
- t = TREE_OPERAND (t, 0);
- STRIP_NOPS (t);
- }
+ if (ort == C_ORT_ACC && TREE_CODE (t) == INDIRECT_REF)
+ t = TREE_OPERAND (t, 0);
}
if (REFERENCE_REF_P (t))
t = TREE_OPERAND (t, 0);
@@ -4989,9 +4982,6 @@ handle_omp_array_sections_1 (tree c, tree t, vec<tree> &types,
return error_mark_node;
}
else if (ort == C_ORT_OMP
- && OMP_CLAUSE_CODE (c) != OMP_CLAUSE_MAP
- && OMP_CLAUSE_CODE (c) != OMP_CLAUSE_TO
- && OMP_CLAUSE_CODE (c) != OMP_CLAUSE_FROM
&& TREE_CODE (t) == PARM_DECL
&& DECL_ARTIFICIAL (t)
&& DECL_NAME (t) == this_identifier)
@@ -7728,11 +7718,6 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort)
t = TREE_OPERAND (t, 0);
if (REFERENCE_REF_P (t))
t = TREE_OPERAND (t, 0);
- if (TREE_CODE (t) == INDIRECT_REF)
- {
- t = TREE_OPERAND (t, 0);
- STRIP_NOPS (t);
- }
if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_MAP
&& OMP_CLAUSE_MAP_IMPLICIT (c)
&& (bitmap_bit_p (&map_head, DECL_UID (t))
@@ -7857,14 +7842,6 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort)
goto handle_map_references;
}
}
- if ((ort == C_ORT_ACC || ort == C_ORT_OMP)
- && !processing_template_decl
- && TREE_CODE (t) == FIELD_DECL)
- {
- OMP_CLAUSE_DECL (c) = finish_non_static_data_member (t, NULL_TREE,
- NULL_TREE);
- break;
- }
if (!VAR_P (t) && TREE_CODE (t) != PARM_DECL)
{
if (processing_template_decl && TREE_CODE (t) != OVERLOAD)
@@ -7891,9 +7868,7 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort)
omp_clause_code_name[OMP_CLAUSE_CODE (c)]);
remove = true;
}
- else if (ort != C_ORT_ACC
- && ort != C_ORT_OMP
- && t == current_class_ptr)
+ else if (ort != C_ORT_ACC && t == current_class_ptr)
{
error_at (OMP_CLAUSE_LOCATION (c),
"%<this%> allowed in OpenMP only in %<declare simd%>"
diff --git a/gcc/testsuite/g++.dg/gomp/target-3.C b/gcc/testsuite/g++.dg/gomp/target-3.C
deleted file mode 100644
index fe2e38b46a3..00000000000
--- a/gcc/testsuite/g++.dg/gomp/target-3.C
+++ /dev/null
@@ -1,36 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fopenmp -fdump-tree-gimple" }
-
-struct S
-{
- int a, b;
- void bar (int);
-};
-
-void
-S::bar (int x)
-{
- #pragma omp target map (alloc: a, b)
- ;
- #pragma omp target enter data map (alloc: a, b)
-}
-
-template <int N>
-struct T
-{
- int a, b;
- void bar (int);
-};
-
-template <int N>
-void
-T<N>::bar (int x)
-{
- #pragma omp target map (alloc: a, b)
- ;
- #pragma omp target enter data map (alloc: a, b)
-}
-
-template struct T<0>;
-
-/* { dg-final { scan-tree-dump-times "map\\(alloc:this->b \\\[len: \[0-9\]+\\\]\\) map\\(alloc:this->a \\\[len: \[0-9\]+\\\]\\)" 4 "gimple" } } */
diff --git a/gcc/testsuite/g++.dg/gomp/this-2.C b/gcc/testsuite/g++.dg/gomp/this-2.C
index b521a4faf5e..d03b8a0728e 100644
--- a/gcc/testsuite/g++.dg/gomp/this-2.C
+++ b/gcc/testsuite/g++.dg/gomp/this-2.C
@@ -9,14 +9,14 @@ struct S
void
S::bar (int x)
{
- #pragma omp target map (this, x) // { dg-error "cannot take the address of .this., which is an rvalue expression" }
+ #pragma omp target map (this, x) // { dg-error ".this. allowed in OpenMP only in .declare simd. clauses" }
;
- #pragma omp target map (this[0], x)
+ #pragma omp target map (this[0], x) // { dg-error ".this. allowed in OpenMP only in .declare simd. clauses" }
;
- #pragma omp target update to (this, x) // { dg-error "cannot take the address of .this., which is an rvalue expression" }
- #pragma omp target update to (this[0], x)
- #pragma omp target update from (this, x) // { dg-error "cannot take the address of .this., which is an rvalue expression" }
- #pragma omp target update from (this[1], x)
+ #pragma omp target update to (this, x) // { dg-error ".this. allowed in OpenMP only in .declare simd. clauses" }
+ #pragma omp target update to (this[0], x) // { dg-error ".this. allowed in OpenMP only in .declare simd. clauses" }
+ #pragma omp target update from (this, x) // { dg-error ".this. allowed in OpenMP only in .declare simd. clauses" }
+ #pragma omp target update from (this[1], x) // { dg-error ".this. allowed in OpenMP only in .declare simd. clauses" }
}
template <int N>
@@ -29,14 +29,14 @@ template <int N>
void
T<N>::bar (int x)
{
- #pragma omp target map (this, x) // { dg-error "cannot take the address of .this., which is an rvalue expression" }
+ #pragma omp target map (this, x) // { dg-error ".this. allowed in OpenMP only in .declare simd. clauses" }
;
- #pragma omp target map (this[0], x)
+ #pragma omp target map (this[0], x) // { dg-error ".this. allowed in OpenMP only in .declare simd. clauses" }
;
- #pragma omp target update to (this, x) // { dg-error "cannot take the address of .this., which is an rvalue expression" }
- #pragma omp target update to (this[0], x)
- #pragma omp target update from (this, x) // { dg-error "cannot take the address of .this., which is an rvalue expression" }
- #pragma omp target update from (this[1], x)
+ #pragma omp target update to (this, x) // { dg-error ".this. allowed in OpenMP only in .declare simd. clauses" }
+ #pragma omp target update to (this[0], x) // { dg-error ".this. allowed in OpenMP only in .declare simd. clauses" }
+ #pragma omp target update from (this, x) // { dg-error ".this. allowed in OpenMP only in .declare simd. clauses" }
+ #pragma omp target update from (this[1], x) // { dg-error ".this. allowed in OpenMP only in .declare simd. clauses" }
}
template struct T<0>;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-05-31 9:02 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-31 9:02 [gcc/devel/omp/gcc-11] Revert "Target mapping C++ members inside member functions" Chung-Lin Tang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).