unsigned long * sat_add(unsigned long *ptr, unsigned long i, unsigned long
*end)
{
if ((unsigned long)ptr + i * sizeof(*ptr) > (unsigned long)ptr)
return ptr + i;
else
return end;
}
is folded to
if (ptr + (long unsigned int) (i * 8) > ptr)
{
return ptr + (long unsigned int) (i * 8);
}
else
{
return end;
}
--
Summary: [4.3/4.4 Regression] POINTER_PLUS folding introduces
undefined overflow
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rguenth at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36227