| /* APPLE LOCAL file 4209014 4210936 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-Os" } */ |
| /* Call to inlinex25 should be inlined. */ |
| /* { dg-final { scan-assembler-not "(\tbl|\tcall)\[ \]*_?inlinex25" } } */ |
| /* Call to calleex25 should be called, not inlined. */ |
| /* { dg-final { scan-assembler "(\tcall|\tbl)\[ \]*_?calleex25" } } */ |
| |
| /* Insure non-trivial callees (between 30 and 450 "estimated insns") |
| are inlined only if marked 'inline' in C/Obj-C. It's unfortunate, |
| but this testcase is expected to require revision every time the |
| GCC inlining heuristics change. */ |
| |
| extern void bulk (int); /* CALLs are assumed to generate 10 'estimated insns'. */ |
| |
| void |
| calleex25 (void) |
| { |
| bulk ( 1); bulk ( 2); bulk ( 3); bulk ( 4); bulk ( 5); |
| bulk ( 6); bulk ( 7); bulk ( 8); bulk ( 9); bulk (10); |
| bulk (11); bulk (12); bulk (13); bulk (14); bulk (15); |
| bulk (16); bulk (17); bulk (18); bulk (19); bulk (20); |
| bulk (21); bulk (22); bulk (23); bulk (24); bulk (25); |
| } |
| |
| void inline |
| inlinex25 (void) |
| { |
| bulk ( 1); bulk ( 2); bulk ( 3); bulk ( 4); bulk ( 5); |
| bulk ( 6); bulk ( 7); bulk ( 8); bulk ( 9); bulk (10); |
| bulk (11); bulk (12); bulk (13); bulk (14); bulk (15); |
| bulk (16); bulk (17); bulk (18); bulk (19); bulk (20); |
| bulk (21); bulk (22); bulk (23); bulk (24); bulk (25); |
| } |
| |
| int |
| main () |
| { |
| calleex25 (); |
| inlinex25 (); |
| return 0; |
| } |