https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88380

            Bug ID: 88380
           Summary: Sequence of not-explicitly initialised, initialised,
                    variable length generates no initialiser
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: matt at godbolt dot org
  Target Milestone: ---

In the following code:

---
struct S {
    char uninit;
    char initialised = 11;
    char variable[];
};

void test() {
    extern void use(const S & p);
    S p {};
    use(p);
}
---
(Compiled with Wall Wextra; see https://gcc.godbolt.org/z/4ubhIM )

...no code to initialise "initialised" is generated. Commenting out any one of
the members causes structure initialisation to take place. Changing the
`variable` to be either zero-sized or not an array also causes initialisation
to take place.

The equivalent in clang always initialises.

I'm not sure whether this is expected, or not, but I would hope for either a
diagnostic if this is UB, or for it to be consistent when other memebers are
initialised.

Reply via email to