https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77745
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |trippels at gcc dot gnu.org --- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- Runtime example, e.g.: #include <new> long 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() { char c[128]; if (foo(c, c) == 100) __builtin_abort(); } gcc hits the abort with -O2, all other compilers (clang, icc, visual c++) not.