| /* target/36834 */ |
| /* Check that, with keep_aggregate_return_pointer attribute, callee does |
| not pop the stack for the implicit pointer arg when returning a large |
| structure in memory. */ |
| /* { dg-do compile } */ |
| /* { dg-require-effective-target ia32 } */ |
| |
| struct foo { |
| int a; |
| int b; |
| int c; |
| int d; |
| }; |
| |
| __attribute__ ((callee_pop_aggregate_return(0))) |
| struct foo |
| bar (void) |
| { |
| struct foo retval; |
| retval.a = 1; |
| retval.b = 2; |
| retval.c = 3; |
| retval.d = 4; |
| return retval; |
| } |
| |
| /* { dg-final { scan-assembler-not "ret\[ \t\]\\\$4" } } */ |
| |
| |