1 /* { dg-do compile } */ 2 /* { dg-options "-O2" } */ 3 void abort(void) __attribute__((__noreturn__)); 4 typedef struct { 5 int container; 6 } edge_iterator; 7 struct ls_expr 8 { 9 int index; 10 int stores; 11 struct ls_expr * next; 12 }; 13 struct ls_expr * pre_ldst_mems; 14 edge_iterator ei; 15 void store_motion(void)16store_motion (void) 17 { 18 struct ls_expr * ptr, **prev_next_ptr_ptr; 19 edge_iterator ei1; 20 edge_iterator ei2; 21 int a = ptr != ((void *)0); 22 for (ptr = pre_ldst_mems, prev_next_ptr_ptr = &pre_ldst_mems; 23 ptr != ((void *)0); 24 ptr = *prev_next_ptr_ptr) 25 if (!((ptr)->stores)) 26 *prev_next_ptr_ptr = ptr->next; 27 else 28 prev_next_ptr_ptr = &ptr->next; 29 30 for (ptr = pre_ldst_mems; ptr != 0; ptr = ptr->next) 31 ; 32 ei1 = ei; 33 ei2 = ei1; 34 if (!ei2.container) 35 abort (); 36 ei2 = ei1; 37 if (!ei2.container) 38 abort (); 39 } 40