/* 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; }