typedef struct { unsigned int addr; unsigned int next; unsigned int prev; } list;
static inline list * shift (list * l, unsigned na) { return (list *) ((char *) l + na); } static inline int is_valid (list * l) { return shift (l, l->prev)->next == (l->addr); } static inline int not_empty (list * l) { return shift (l, l->next) != l; } void aaa (void); void func (list * l) { unsigned int a = l->addr; while (1) { while (not_empty (l)) aaa (); if (is_valid (l)) aaa (); } } ICEs with -O1 -m32 and above. Might be related to PR27616, but without debugging/fixing one of these that's hard to say. -- Summary: [4.1/4.2 regression] ICE because of fold_rtx endless recursion Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jakub at gcc dot gnu dot org GCC target triplet: i?86-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28010