/* x's mask should be meet(0xc, 0x3) == 0xf */ /* { dg-do compile } */ /* { dg-options "-O2 -fno-early-inlining -fdump-ipa-cp -fdump-tree-optimized" } */ extern int pass_test (); extern int fail_test (); __attribute__((noinline)) static int f1(int x) { if ((x & ~0xf) == 0) return pass_test (); else return fail_test (); } __attribute__((noinline)) static int f2(int y) { return f1(y & 0x03); } __attribute__((noinline)) static int f3(int z) { return f1(z & 0xc); } extern int a; extern int b; int main(void) { int k = f2(a); int l = f3(b); return k + l; } /* { dg-final { scan-ipa-dump "Adjusting mask for param 0 to 0xf" "cp" } } */ /* { dg-final { scan-tree-dump-not "fail_test" "optimized" } } */