/* { dg-do run } */ /* { dg-options "-O" } */ struct test { int type; char buffer[4242]; /* should trigger pass-by-reference */ }; int flag = 0; struct test reset (void) { struct test retval; retval.type = 1; return retval; } struct test test (void) { struct test result; result.type = 0; for (int i = 0; i < 2; ++i) { struct test candidate = reset (); if (flag) result = candidate; } return result; } int main (void) { struct test result = test (); return result.type; }