aboutsummaryrefslogtreecommitdiff
path: root/gcc/c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2021-01-15 19:17:53 +0100
committerJakub Jelinek <jakub@redhat.com>2021-01-15 19:21:58 +0100
commit50dbced2f37ba9c4b9756c523a7a06b036151d2d (patch)
tree1b6f8f1a5e4afe33b7d203c96cbb43f6641d8461 /gcc/c
parentd3959070aa46635734a9f3ad68ce4d95d1445673 (diff)
downloadgcc-50dbced2f37ba9c4b9756c523a7a06b036151d2d.zip
gcc-50dbced2f37ba9c4b9756c523a7a06b036151d2d.tar.gz
gcc-50dbced2f37ba9c4b9756c523a7a06b036151d2d.tar.bz2
openmp: Change the way of building of reduction array type
The PR98597 patch regresses on _Atomic-3.c, as in the C FE building an array type with qualified elements results in a type incompatible with when an array type with unqualified elements is qualified afterwards. This patch adds a workaround for that. 2021-01-15 Jakub Jelinek <jakub@redhat.com> * c-typeck.c (c_finish_omp_clauses): For reduction build array with unqualified element type and then call c_build_qualified_type on the ARRAY_TYPE.
Diffstat (limited to 'gcc/c')
-rw-r--r--gcc/c/c-typeck.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
index 67c0080..083134a 100644
--- a/gcc/c/c-typeck.c
+++ b/gcc/c/c-typeck.c
@@ -13979,7 +13979,9 @@ c_finish_omp_clauses (tree clauses, enum c_omp_region_type ort)
size = size_binop (MINUS_EXPR, size, size_one_node);
size = save_expr (size);
tree index_type = build_index_type (size);
- tree atype = build_array_type (type, index_type);
+ tree atype = build_array_type (TYPE_MAIN_VARIANT (type),
+ index_type);
+ atype = c_build_qualified_type (atype, TYPE_QUALS (type));
tree ptype = build_pointer_type (type);
if (TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE)
t = build_fold_addr_expr (t);