From: Richard Biener Date: Mon, 4 Dec 2023 12:31:35 +0000 (+0100) Subject: c/86869 - preserve address-space info when building qualified ARRAY_TYPE X-Git-Tag: basepoints/gcc-15~4006 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e00c00730912cd6072954cd2c29ca44e33dbb598;p=thirdparty%2Fgcc.git c/86869 - preserve address-space info when building qualified ARRAY_TYPE The following adjusts the C FE specific qualified type building to preserve address-space info also for ARRAY_TYPE. PR c/86869 gcc/c/ * c-typeck.cc (c_build_qualified_type): Preserve address-space info for ARRAY_TYPE. gcc/testsuite/ * gcc.target/avr/pr86869.c: New testcase. --- diff --git a/gcc/c/c-typeck.cc b/gcc/c/c-typeck.cc index a6edbc85f109..836893905fa0 100644 --- a/gcc/c/c-typeck.cc +++ b/gcc/c/c-typeck.cc @@ -16263,6 +16263,7 @@ c_build_qualified_type (tree type, int type_quals, tree orig_qual_type, t = build_variant_type_copy (type); TREE_TYPE (t) = element_type; + TYPE_ADDR_SPACE (t) = TYPE_ADDR_SPACE (element_type); if (TYPE_STRUCTURAL_EQUALITY_P (element_type) || (domain && TYPE_STRUCTURAL_EQUALITY_P (domain))) diff --git a/gcc/testsuite/gcc.target/avr/pr86869.c b/gcc/testsuite/gcc.target/avr/pr86869.c new file mode 100644 index 000000000000..fbfb378e8c90 --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/pr86869.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ + +struct S { + char y[2]; +}; + +void foo(const __memx struct S *s) { + const char (*p)[2] = &s->y; +}