/* { dg-options "-O2 -fdump-tree-optimized -fgnu89-inline" } */ int a; int b[100]; void abort (void); inline void cold_function () { int i; for (i = 0; i < 99; i++) if (b[i] / (b[i+1] + 1)) abort (); } inline void hot_function () { int i; for (i = 0; i < 99; i++) if (b[i] / (b[i+1] + 1)) abort (); } int main () { int i; for (i = 0; i < 1000000; i++) { if (a) cold_function (); /* Should not be inlined. */ else hot_function (); /* Should be inlined. */ } return 0; } /* The call to hot_function should be inlined, while cold_function should not be. Look for the "cold_function ();" call statement and not for its declaration or other occurrences of the string in the dump. */ /* { dg-final-use { scan-tree-dump "cold_function ..;" "optimized"} } */ /* { dg-final-use { scan-tree-dump-not "hot_function ..;" "optimized"} } */