1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-optimized"  } */
3 int p,q,r,s,*ptr=&q, *ptr2=&p;
4 __attribute__ ((noinline))
5 int
test(int * p)6 test (int *p)
7 {
8   *p = 1;
9 }
10 int
test1()11 test1()
12 {
13   q = 123;
14   test(&p);
15   return q;
16 }
17 int
test2()18 test2()
19 {
20   int *ptr = p ? &q : &s;
21   *ptr = 124;
22   test(&p);
23   return *ptr;
24 }
25 int
test3()26 test3()
27 {
28   int *ptr = p ? &p : &s;
29   q = 125;
30   test(ptr);
31   return q;
32 }
33 int
test4()34 test4()
35 {
36   int *ptr1 = p ? &q : &s;
37   int *ptr = p ? &r : &p;
38   *ptr1 = 126;
39   test(ptr);
40   return *ptr1;
41 }
42 /* { dg-final { scan-tree-dump "return 123" "optimized"} } */
43 /* { dg-final { scan-tree-dump "return 124" "optimized"} } */
44 /* { dg-final { scan-tree-dump "return 125" "optimized"} } */
45 /* { dg-final { scan-tree-dump "return 126" "optimized"} } */
46