The following is miscompiled by RTL cse at -O2 int __attribute__((noinline)) foo (int *__restrict p, int i) { int *__restrict q; int *__restrict r; int v, w; q = p + 1; r = q - i; v = *r; *p = 1; w = *r; return v + w; } extern void abort (void); int main() { int i = 0; if (foo (&i, 1) != 1) abort (); return 0; }
-- Summary: restrict implementation causes wrong-code Product: gcc Version: 4.4.0 Status: UNCONFIRMED Keywords: wrong-code, alias 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=38212