/* PR rtl-optimization/48156 */ /* { dg-do run } */ /* { dg-options "-O -fcrossjumping --param min-crossjump-insns=1" } */ extern void abort (void); static int __attribute__ ((noinline, noclone)) equals (int s1, int s2) { return s1 == s2; } static int __attribute__ ((noinline, noclone)) bar (void) { return 1; } static void __attribute__ ((noinline, noclone)) baz (int f, int j) { if (f != 4 || j != 2) abort (); } void foo (int x) { int i = 0, j = bar (); if (x == 1) i = 2; if (j && equals (i, j)) baz (8, i); else baz (4, i); } int main () { foo (1); return 0; }