OSDN Git Service

2005-07-12 Andrew Pinski <pinskia@physics.uc.edu>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / pr22335-2.c
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 }