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;
}