https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82870
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Known to work| |7.2.1 Keywords| |needs-bisection, wrong-code Last reconfirmed| |2017-11-07 Component|c |tree-optimization CC| |rguenth at gcc dot gnu.org Ever confirmed|0 |1 Summary|Assignment by Designated |[6 Regression] Assignment |Initializer Overwrites a |by Designated Initializer |Flexible Array Member |Overwrites a Flexible Array | |Member Target Milestone|--- |6.5 Known to fail| |6.4.0, 7.2.0 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- *obj = (struct Example){ .bitmap = {0, 0, 0, 0, 0, 0} }; this _probably_ adds a single 0 for the flex array. The bug seems to be fixed on the GCC 7 branch, confirmed on the tip of the GCC 6 branch. GCC 6 DSEs the table[0] assignment in the following: Example_assignment () { struct Example * obj; struct Example * D.1788; struct Example * obj; <bb 2>: obj_6 = __builtin_malloc (64); obj_6->table[0] = 1000; *obj_6 = {}; return obj_6; Wonder what fixed it / which bug is the dup.