https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80075
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code Target Milestone|7.0 |5.5 --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- Which also mean that the following generates wrong-code in not treating *p = (struct s){} as possibly throwing since that revision. struct s { int i; }; extern int use_memcpy; extern void my_memcpy(void*, void*, int); int f (struct s* p) { struct s a; try { a = (struct s){}; if (!use_memcpy) *p = (struct s){}; else my_memcpy (p, &a, sizeof (struct s)); } catch (...) { return 0; } return 1; }