/* { dg-do compile } */ /* { dg-options "-O2 -ffinite-math-only" } */ int f1 (int a) { return a == 17 || a == 32; } int f2 (int a) { return a == 33 || a == 18; } int f3 (int a, int b) { return a == 19 && b == 34; } int f4 (int a, int b) { return a == 35 && b == 20; } int f5 (int a) { return a == 0 || a == 5; } int f6 (int a) { return a == 6 || a == 0; } int f7 (int a, int b) { return a == 0 && b == 7; } int f8 (int a, int b) { return a == 9 && b == 0; } int f9 (float a, float b) { return a < 0.0f && a > b; } int f10 (float a, float b) { return a == b || b == 0.0f; } int f11 (double a, int b) { return a < 0.0f && b == 30; } int f12 (double a, int b) { return b == 31 || a == 0.0f; } int f13 (int a, int b) { a += b; return a == 3 || a == 0; } /* { dg-final { scan-assembler "cmp\t(.)+32" } } */ /* { dg-final { scan-assembler "cmp\t(.)+33" } } */ /* { dg-final { scan-assembler "cmp\t(.)+34" } } */ /* { dg-final { scan-assembler "cmp\t(.)+35" } } */ /* { dg-final { scan-assembler-times "\tcmp\tw\[0-9\]+, 0" 4 } } */ /* { dg-final { scan-assembler-times "fcmpe\t(.)+0\\.0" 2 } } */ /* { dg-final { scan-assembler-times "fcmp\t(.)+0\\.0" 2 } } */ /* { dg-final { scan-assembler "adds\t" } } */ /* { dg-final { scan-assembler-times "\tccmp\t" 11 } } */ /* { dg-final { scan-assembler-times "fccmp\t.*0\\.0" 1 } } */ /* { dg-final { scan-assembler-times "fccmpe\t.*0\\.0" 1 } } */