[Bug c++/70932] flexible array member with non-trivial destructor
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed May 4 14:54:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70932
Martin Sebor <msebor at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2016-05-04
Known to work| |4.9.3, 5.3.0
Assignee|unassigned at gcc dot gnu.org |msebor at gcc dot gnu.org
Ever confirmed|0 |1
Known to fail| |6.1.0
--- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> ---
The problem was introduced r233126 as a result of switching the internal
flexible array representation to use a null type domain. Prior to 6.1, GCC
treated flexible array members the same as arrays of zero elements.
I'll have to think about what the right solution is: reject flexible array
members with non-trivial destructors with a better error (like clang does) or
allow them with a warning. My concern with allowing them is that while G++ 6.1
allows them to be initialized (5.x rejects the initialization which seems like
a bug), it won't be able to invoke their destructor in code like this:
struct A {
int i;
~A() { __builtin_printf ("%s\n", __PRETTY_FUNCTION__); }
};
struct S {
int i;
A a[];
};
int main ()
{
S s = { 3, { 1, 2, 3 } };
}
More information about the Gcc-bugs
mailing list