111
|
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
|
|
16 store_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 }
|