inline-limit-1.c   [plain text]


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