Based on Joseph’s review comments on May 30, 2025.
https://gcc.gnu.org/pipermail/gcc-patches/2025-May/685211.html

I will push this patch to GCC15 if no further concern in a day. 

Qing
> On Jul 24, 2025, at 09:36, Qing Zhao <qing.z...@oracle.com> wrote:
> 
> Ping.
> 
> The patch has been committed to trunk 2 months ago. 
> 
> Okay for committing to GCC15 now?
> 
> thanks.
> 
> Qing
> 
>> On Jul 17, 2025, at 17:26, Qing Zhao <qing.z...@oracle.com> wrote:
>> 
>> The root cause of the bug is: the TYPE_INCLUDES_FLEXARRAY marking of the
>> structure type is not copied to its aliased type.
>> The fix is to copy this marking to all the variant types of the current
>> structure type.
>> 
>> PR c/120353
>> 
>> gcc/c/ChangeLog:
>> 
>> * c-decl.cc (finish_struct): Copy TYPE_INCLUDES_FLEXARRAY marking
>> to all the variant types of the current structure type.
>> 
>> gcc/testsuite/ChangeLog:
>> 
>> * gcc.dg/pr120353.c: New test.
>> 
>> (cherry picked from commit f37c5f1d88c9da17f16cdb33e7c9d43e4bb5f64d)
>> 
>> bootstrapped and regression tested on both x86 and aarch64.
>> 
>> Okay for backporting to GCC15?
>> 
>> Qing
>> ---
>> gcc/c/c-decl.cc                 |  1 +
>> gcc/testsuite/gcc.dg/pr120353.c | 11 +++++++++++
>> 2 files changed, 12 insertions(+)
>> create mode 100644 gcc/testsuite/gcc.dg/pr120353.c
>> 
>> diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc
>> index 8c420f22976..42e17dcdbf8 100644
>> --- a/gcc/c/c-decl.cc
>> +++ b/gcc/c/c-decl.cc
>> @@ -9909,6 +9909,7 @@ finish_struct (location_t loc, tree t, tree fieldlist, 
>> tree attributes,
>>      C_TYPE_VARIABLE_SIZE (x) = C_TYPE_VARIABLE_SIZE (t);
>>      C_TYPE_VARIABLY_MODIFIED (x) = C_TYPE_VARIABLY_MODIFIED (t);
>>      C_TYPE_INCOMPLETE_VARS (x) = NULL_TREE;
>> +      TYPE_INCLUDES_FLEXARRAY (x) = TYPE_INCLUDES_FLEXARRAY (t);
>>    }
>> 
>>  /* Update type location to the one of the definition, instead of e.g.
>> diff --git a/gcc/testsuite/gcc.dg/pr120353.c 
>> b/gcc/testsuite/gcc.dg/pr120353.c
>> new file mode 100644
>> index 00000000000..6f8e4acf7f2
>> --- /dev/null
>> +++ b/gcc/testsuite/gcc.dg/pr120353.c
>> @@ -0,0 +1,11 @@
>> +/* PR120353: Test for -Wflex-array-member-not-at-end on structure with 
>> +   typedef.  */ 
>> +/* { dg-do compile } */
>> +/* { dg-options "-Wflex-array-member-not-at-end" } */
>> +
>> +typedef struct flex flex_t;
>> +struct flex { int n; int data[]; };
>> +struct out_flex_mid {flex_t flex_data;  int m; }; /* { dg-warning 
>> "structure containing a flexible array member is not at the end of another 
>> structure" } */
>> +
>> +typedef struct flex flex_t1;
>> +struct out_flex_mid1 {flex_t1 flex_data1; int n; }; /* { dg-warning 
>> "structure containing a flexible array member is not at the end of another 
>> structure" } */ 
>> -- 
>> 2.31.1
>> 
> 

Reply via email to