1 /* x's mask should be meet(0xc, 0x3) == 0xf */ 2 3 /* { dg-do compile } */ 4 /* { dg-options "-O2 -fno-early-inlining -fdump-ipa-cp -fdump-tree-optimized" } */ 5 6 extern int pass_test (); 7 extern int fail_test (); 8 9 __attribute__((noinline)) f1(int x)10static int f1(int x) 11 { 12 if ((x & ~0xf) == 0) 13 return pass_test (); 14 else 15 return fail_test (); 16 } 17 18 __attribute__((noinline)) f2(int y)19static int f2(int y) 20 { 21 return f1(y & 0x03); 22 } 23 24 __attribute__((noinline)) f3(int z)25static int f3(int z) 26 { 27 return f1(z & 0xc); 28 } 29 30 extern int a; 31 extern int b; 32 main(void)33int main(void) 34 { 35 int k = f2(a); 36 int l = f3(b); 37 return k + l; 38 } 39 40 /* { dg-final { scan-ipa-dump "Adjusting mask for param 0 to 0xf" "cp" } } */ 41 /* { dg-final { scan-tree-dump-not "fail_test" "optimized" } } */ 42