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