http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49194

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2011.05.27 16:02:09
                 CC|                            |hubicka at gcc dot gnu.org,
                   |                            |jakub at gcc dot gnu.org
     Ever Confirmed|0                           |1

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-05-27 
16:02:09 UTC ---
I agree if the called function is big and it is very unlikely (most probably
just in PROB_VERY_UNLIKELY cases) -finline-functions-called-once shouldn't
inline.

E.g.
void baz (void);

static void
foo (int x)
{
  char buf[65536];
  int a, b, c, d, e, f, g, h, i, j, k, l, m;
#define A asm volatile ("nop" : "+r" (x), "=r" (a), "=r" (b), "=r" (c), \
"=r" (d), "=r" (e), "=r" (f), "=r" (g), "=r" (h), \
"=r" (i), "=r" (j), "=r" (k), "=r" (l), "=r" (m) \
: "r" (buf));
#define B A A A A A A A A A A A
#define C B B B B B B B B B B B
  C
}

int
bar (int x)
{
  if (__builtin_expect (x > 65, 0))
    foo (x + 6);
  baz ();
  return x;
}

inlines foo at -O2.

Reply via email to