diff options
author | Jakub Jelinek <jakub@redhat.com> | 2021-01-15 19:17:53 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2021-01-15 19:21:58 +0100 |
commit | 50dbced2f37ba9c4b9756c523a7a06b036151d2d (patch) | |
tree | 1b6f8f1a5e4afe33b7d203c96cbb43f6641d8461 /gcc/c | |
parent | d3959070aa46635734a9f3ad68ce4d95d1445673 (diff) | |
download | gcc-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.c | 4 |
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); |