https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84003
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |marxin at gcc dot gnu.org --- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> --- So running: $ g++ pr77745.C -O2 -flto -fno-use-linker-plugin -m32 -fpic -mtune=native for: $ cat pr77745.C // { dg-do run } // #include <new> #include <stdio.h> //inline void* operator new(__SIZE_TYPE__, void* __p) noexcept { return __p; } long __attribute__((noinline)) foo(char *c1, char *c2) { long *p1 = new (c1) long; *p1 = 100; long long *p2 = new (c2) long long; *p2 = 200; long *p3 = new (c2) long; *p3 = 200; return *p1; } int main() { union { char c; long l; long long ll; } c; if (foo(&c.c, &c.c) != 200) { fprintf (stderr, "aborting\n"); __builtin_abort(); } } Aborts for all GCC releases I have (4.5.0+).