]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix regression of array members in OpenMP map clauses.
authorChung-Lin Tang <cltang@codesourcery.com>
Fri, 26 Feb 2021 12:13:29 +0000 (20:13 +0800)
committerKwok Cheung Yeung <kcy@codesourcery.com>
Thu, 22 Apr 2021 17:14:32 +0000 (10:14 -0700)
Fixed a regression of array members not working in OpenMP map clauses after
commit bf8605f14ec33ea31233a3567f3184fee667b695.

This patch itself probably should be considered a fix for commit aadfc9843.

2021-02-26  Chung-Lin Tang  <cltang@codesourcery.com>

gcc/cp/ChangeLog:

* semantics.c (handle_omp_array_sections): Adjust position of making
COMPONENT_REF from FIELD_DECL to earlier position.

gcc/cp/semantics.c

index 3577f17ec981ce8b2553799e03308084c7117784..d37e231641c3fafd14f9224a8ee00101f9d0d75f 100644 (file)
@@ -5578,6 +5578,8 @@ handle_omp_array_sections (tree c, enum c_omp_region_type ort)
            }
          OMP_CLAUSE_DECL (c) = first;
          OMP_CLAUSE_SIZE (c) = size;
+         if (TREE_CODE (t) == FIELD_DECL)
+           t = finish_non_static_data_member (t, NULL_TREE, NULL_TREE);
          if (OMP_CLAUSE_CODE (c) != OMP_CLAUSE_MAP
              || (TREE_CODE (t) == COMPONENT_REF
                  && TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE))
@@ -5606,8 +5608,6 @@ handle_omp_array_sections (tree c, enum c_omp_region_type ort)
              }
          tree c2 = build_omp_clause (OMP_CLAUSE_LOCATION (c),
                                      OMP_CLAUSE_MAP);
-         if (TREE_CODE (t) == FIELD_DECL)
-           t = finish_non_static_data_member (t, NULL_TREE, NULL_TREE);
          if ((ort & C_ORT_OMP_DECLARE_SIMD) != C_ORT_OMP && ort != C_ORT_ACC)
            OMP_CLAUSE_SET_MAP_KIND (c2, GOMP_MAP_POINTER);
          else if (TREE_CODE (t) == COMPONENT_REF)