struct { int *b1; } *f1 (); short v1[1]; struct S { int b2; }; void foo (struct S *a1, union { char *b3; unsigned *b4; int *b5; } *a2) { int d; switch (d) { case 0: { int c = a1->b2, i; if (f1 () == 0) *a2->b3++ = 2; else if (((long) (f1 () - f1 ())) ^ ((long) f1 ()->b1 - ((long) f1 () & 8))) *a2->b3++ = (long) f1 - ((long) f1 () & 0xff); else *a2->b4++ = (long) f1; for (i = 0; i < c; i++) *a2->b5++ = (long) v1; foo (a1, a2); } } }
ICEs with -g -O2 -fpic on x86_64-linux with: rh588154.i: In function 'foo': rh588154.i:24:1: internal compiler error: in loc_cmp, at var-tracking.c:2681 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. -- Summary: [4.5/4.6 Regression] ICE in loc_cmp Product: gcc Version: 4.5.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: debug AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jakub at gcc dot gnu dot org GCC target triplet: x86_64-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43972