https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119831
Bug ID: 119831
Summary: Missed pointer compare folding
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: rguenth at gcc dot gnu.org
Target Milestone: ---
We fail to simplify sth like
_Bool foo (char *p, unsigned long o)
{
if (&p + o > &p)
return 0;
return 1;
}
this is folded early to
if ((ssizetype) (o * 8) > 0)
but it could fold to o != 0 or o == 1 since &p + o is UB when not in [0, 1].
Possibly the existing folding preempts such other existing folding (if it
exists).