| /* PR tree-optimization/90248 */ |
| /* { dg-do run } */ |
| /* { dg-options "-Ofast" } */ |
| |
| volatile float b1 = -1.f; |
| volatile float b2 = 0.f; |
| |
| __attribute__((noipa)) float |
| f1 (float x) |
| { |
| return x > 0 ? 1.f : -1.f; |
| } |
| |
| __attribute__((noipa)) float |
| f2 (float x) |
| { |
| return x >= 0 ? 1.f : -1.f; |
| } |
| |
| __attribute__((noipa)) float |
| f3 (float x) |
| { |
| return x < 0 ? 1.f : -1.f; |
| } |
| |
| __attribute__((noipa)) float |
| f4 (float x) |
| { |
| return x <= 0 ? 1.f : -1.f; |
| } |
| |
| __attribute__((noipa)) float |
| f5 (float x) |
| { |
| return x > 0 ? -1.f : 1.f; |
| } |
| |
| __attribute__((noipa)) float |
| f6 (float x) |
| { |
| return x >= 0 ? -1.f : 1.f; |
| } |
| |
| __attribute__((noipa)) float |
| f7 (float x) |
| { |
| return x < 0 ? -1.f : 1.f; |
| } |
| |
| __attribute__((noipa)) float |
| f8 (float x) |
| { |
| return x <= 0 ? -1.f : 1.f; |
| } |
| |
| int |
| main () |
| { |
| float a = 0.f; |
| float b = b1 * b2; |
| float c = 2.f; |
| float d = -2.f; |
| if (f1 (a) != -1.f || f1 (b) != -1.f || f1 (c) != 1.f || f1 (d) != -1.f |
| || f2 (a) != 1.f || f2 (b) != 1.f || f2 (c) != 1.f || f2 (d) != -1.f |
| || f3 (a) != -1.f || f3 (b) != -1.f || f3 (c) != -1.f || f3 (d) != 1.f |
| || f4 (a) != 1.f || f4 (b) != 1.f || f4 (c) != -1.f || f4 (d) != 1.f |
| || f5 (a) != 1.f || f5 (b) != 1.f || f5 (c) != -1.f || f5 (d) != 1.f |
| || f6 (a) != -1.f || f6 (b) != -1.f || f6 (c) != -1.f || f6 (d) != 1.f |
| || f7 (a) != 1.f || f7 (b) != 1.f || f7 (c) != 1.f || f7 (d) != -1.f |
| || f8 (a) != -1.f || f8 (b) != -1.f || f8 (c) != 1.f || f8 (d) != -1.f) |
| __builtin_abort (); |
| return 0; |
| } |