https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97519
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
We would certainly need to punt on gimple_could_trap_p assignments, as can be
seen e.g. on
static inline int
foo (int x)
{
return __builtin_constant_p ((x + 32) / 0);
}
int
bar (void)
{
return foo (35);
}
with -O2 -fno-early-inlining.
Anyway, I'm actually not sure if it is safe to perform this change at all.
Consider:
int
foo (int x)
{
if (x < __INT_MAX__ - 30)
return 23;
int y = x + 30;
if (__builtin_constant_p (y))
return y;
return 42;
}
with -O2 -fdisable-tree-evrp
y is constant (__INT_MAX__), but x is certainly not constant.