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.