1 /* { dg-do run } */ 2 /* { dg-options "-O" } */ 3 struct test 4 { 5 int type; 6 char buffer[4242]; /* should trigger pass-by-reference */ 7 }; 8 9 int flag = 0; 10 11 struct test reset(void)12reset (void) 13 { 14 struct test retval; 15 retval.type = 1; 16 return retval; 17 } 18 19 struct test test(void)20test (void) 21 { 22 struct test result; 23 result.type = 0; 24 25 for (int i = 0; i < 2; ++i) 26 { 27 struct test candidate = reset (); 28 if (flag) 29 result = candidate; 30 } 31 32 return result; 33 } 34 35 int main(void)36main (void) 37 { 38 struct test result = test (); 39 return result.type; 40 } 41