https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67662
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |wrong-code
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot
gnu.org
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
/* With undefined overflow we can only associate constants with one
variable, and constants whose association doesn't overflow. */
if ((POINTER_TYPE_P (atype) && POINTER_TYPE_OVERFLOW_UNDEFINED)
|| (INTEGRAL_TYPE_P (atype) && !TYPE_OVERFLOW_WRAPS (atype)))
{
...
/* The only case we can still associate with two variables
is if they are the same, modulo negation and bit-pattern
preserving conversions. */
if (!operand_equal_p (tmp0, tmp1, 0))
ok = false;
but that's only if they cancel out. I think the above code is mine, thus,
mine.