/* { dg-do compile } */ /* { dg-options "-O2" } */ void abort(void) __attribute__((__noreturn__)); typedef struct { int container; } edge_iterator; struct ls_expr { int index; int stores; struct ls_expr * next; }; struct ls_expr * pre_ldst_mems; edge_iterator ei; void store_motion (void) { struct ls_expr * ptr, **prev_next_ptr_ptr; edge_iterator ei1; edge_iterator ei2; int a = ptr != ((void *)0); for (ptr = pre_ldst_mems, prev_next_ptr_ptr = &pre_ldst_mems; ptr != ((void *)0); ptr = *prev_next_ptr_ptr) if (!((ptr)->stores)) *prev_next_ptr_ptr = ptr->next; else prev_next_ptr_ptr = &ptr->next; for (ptr = pre_ldst_mems; ptr != 0; ptr = ptr->next) ; ei1 = ei; ei2 = ei1; if (!ei2.container) abort (); ei2 = ei1; if (!ei2.container) abort (); }