/* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ void unlikely () __attribute__ ((cold)); void unlikely2 () __attribute__ ((cold)); __attribute__ ((noinline)) void i_am_also_unlikely (int a) { if (a) unlikely (); else unlikely2 (); } void i_am_also_unlikely2 (int a,int b) { if (b) i_am_also_unlikely (a); else unlikely (); } void i_am_not_unlikely (int a,int b,int c) { if (c) __builtin_exit (0); i_am_also_unlikely2 (a,b); } /* Detect i_am_also_unlikely i_am_also_unlikely2 as unlikely. */ /* { dg-final { scan-tree-dump "i_am_also_unlikely\[^\r\n\]*(unlikely executed)" "optimized"} } */ /* { dg-final { scan-tree-dump "i_am_also_unlikely2\[^\r\n\]*(unlikely executed)" "optimized"} } */ /* { dg-final { scan-tree-dump-not "i_am_not_unlikely\[^\r\n\]*(unlikely executed)" "optimized"} } */