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)6test (int *p) 7 { 8 *p = 1; 9 } 10 int test1()11test1() 12 { 13 q = 123; 14 test(&p); 15 return q; 16 } 17 int test2()18test2() 19 { 20 int *ptr = p ? &q : &s; 21 *ptr = 124; 22 test(&p); 23 return *ptr; 24 } 25 int test3()26test3() 27 { 28 int *ptr = p ? &p : &s; 29 q = 125; 30 test(ptr); 31 return q; 32 } 33 int test4()34test4() 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