1 /* { dg-do link } */ 2 /* { dg-options "-O2" } */ 3 4 /* We have enough cascading at -O2 to cover the missed control-dependence 5 in SCCVN (which considers the link_error calls to clobber the structs). */ 6 7 struct example 8 { 9 char a; 10 int b; 11 char c; 12 } *ex1; 13 14 extern void link_error(void); 15 16 void bar(void)17bar (void) 18 { 19 ex1->a = 1; 20 ex1->b = 2; 21 ex1->c = 3; 22 23 if (ex1->a != 1) 24 link_error (); 25 if (ex1->b != 2) 26 link_error (); 27 if (ex1->c != 3) 28 link_error (); 29 30 } 31 32 void foo(struct example * ex2)33foo (struct example *ex2) 34 { 35 ex2->a = 1; 36 ex2->b = 2; 37 ex2->c = 3; 38 39 if (ex2->a != 1) 40 link_error (); 41 if (ex2->b != 2) 42 link_error (); 43 if (ex2->c != 3) 44 link_error (); 45 46 } 47 main(void)48int main (void) 49 { 50 bar (); 51 foo (ex1); 52 return 0; 53 } 54