https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70306
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |pinskia at gcc dot gnu.org Component|c |ipa Known to work| |4.9.0 Target Milestone|--- |5.4 Summary|wrong code at -O2 and -O3 |[5/6 Regression] wrong code |in 32-bit and 64-bit mode |at -O2 and -O3 in 32-bit |on x86_64-linux-gnu |and 64-bit mode on |[related to |x86_64-linux-gnu [related |__attribute__((destructor)) |to |and |__attribute__((destructor)) |__attribute__((constructor) |and |)] |__attribute__((constructor) | |)] Known to fail| |5.1.0, 6.0 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Most likely IPA commoning pass is causing C to become an alias of A and D an alias of B but not emmitting an extra constructor/deconstructor.