/* { dg-do compile { target freorder } } */ /* { dg-options "-O2 -fdump-tree-optimized-details-blocks -fdump-rtl-bbpart-details-blocks -freorder-blocks-and-partition" } */ volatile int v; void bar (void) __attribute__((leaf, cold)); void baz (int *); void foo (int x, int y, int z) { static int f __attribute__((section ("mysection"))); f = 1; if (__builtin_expect (x, 0)) if (__builtin_expect (y, 0)) if (__builtin_expect (z, 0)) { f = 2; bar (); v += 1; v *= 2; v /= 2; v -= 1; v += 1; v *= 2; v /= 2; v -= 1; v += 1; v *= 2; v /= 2; v -= 1; v += 1; v *= 2; v /= 2; v -= 1; v += 1; v *= 2; v /= 2; v -= 1; v += 1; v *= 2; v /= 2; v -= 1; v += 1; v *= 2; v /= 2; v -= 1; v += 1; v *= 2; v /= 2; v -= 1; f = 3; __builtin_abort (); } f = 4; f = 5; baz (&f); } /* { dg-final { scan-tree-dump-times "Invalid sum" 0 "optimized"} } */ /* { dg-final { scan-tree-dump-times "count 0 .precise.," 1 "optimized"} } */ /* { dg-final { scan-rtl-dump-times "COLD_PARTITION" 1 "bbpart"} } */