https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117333
Bug ID: 117333
Summary: structure copy with flexible array member
Product: gcc
Version: 14.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: jbeulich at suse dot com
Target Milestone: ---
Created attachment 59476
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59476&action=edit
example code
There are two issues.
First, the attached example causes an ICE (at least at -O2) on x86-64 (if that
matters).
Second, removing either half of the conditional in test() allows compilation to
succeed, yet the generated code then has accesses beyond sizeof(struct s). Imo
clause 22 in C99 section 6.2.1 gives a close enough example, where it is
explicitly stated that nothing past sizeof() would be copied.
As an aside, gcc5 rejected the assignment with "invalid use of flexible array
member". That's still wrong imo, but better than an ICE.