| /* { dg-do compile } */ |
| /* { dg-options "-O -fsignaling-nans -fdump-tree-original" } */ |
| |
| /* We can not get rid of comparison in tests below because of |
| pending NaN exceptions. |
| |
| TODO: avoid under -fno-trapping-math. */ |
| |
| #define QNAN __builtin_nanf ("0") |
| #define SNAN __builtin_nansf ("0") |
| |
| void nonfinite(unsigned short x) { |
| { |
| volatile int nonfinite_1; |
| nonfinite_1 = (float) x > QNAN; |
| /* { dg-final { scan-tree-dump "nonfinite_1 = 0" "original" } } */ |
| } |
| |
| { |
| volatile int nonfinite_2; |
| nonfinite_2 = (float) x >= QNAN; |
| /* { dg-final { scan-tree-dump "nonfinite_2 = 0" "original" } } */ |
| } |
| |
| { |
| volatile int nonfinite_3; |
| nonfinite_3 = (float) x < QNAN; |
| /* { dg-final { scan-tree-dump "nonfinite_3 = 0" "original" } } */ |
| } |
| |
| { |
| volatile int nonfinite_4; |
| nonfinite_4 = (float) x <= QNAN; |
| /* { dg-final { scan-tree-dump "nonfinite_4 = 0" "original" } } */ |
| } |
| |
| { |
| volatile int nonfinite_5; |
| nonfinite_5 = (float) x > SNAN; |
| /* { dg-final { scan-tree-dump "nonfinite_5 = \\(float\\)" "original" } } */ |
| } |
| |
| { |
| volatile int nonfinite_6; |
| nonfinite_6 = (float) x >= SNAN; |
| /* { dg-final { scan-tree-dump "nonfinite_6 = \\(float\\)" "original" } } */ |
| } |
| |
| { |
| volatile int nonfinite_7; |
| nonfinite_7 = (float) x < SNAN; |
| /* { dg-final { scan-tree-dump "nonfinite_7 = \\(float\\)" "original" } } */ |
| } |
| |
| { |
| volatile int nonfinite_8; |
| nonfinite_8 = (float) x <= SNAN; |
| /* { dg-final { scan-tree-dump "nonfinite_8 = \\(float\\)" "original" } } */ |
| } |
| |
| { |
| volatile int nonfinite_9; |
| nonfinite_9 = (float) x == SNAN; |
| /* { dg-final { scan-tree-dump "nonfinite_9 = \\(float\\)" "original" } } */ |
| } |
| |
| { |
| volatile int nonfinite_10; |
| nonfinite_10 = (float) x != SNAN; |
| /* { dg-final { scan-tree-dump "nonfinite_10 = \\(float\\)" "original" } } */ |
| } |
| |
| { |
| volatile int nonfinite_11; |
| nonfinite_11 = (float) x == QNAN; |
| /* { dg-final { scan-tree-dump "nonfinite_11 = 0" "original" } } */ |
| } |
| |
| { |
| volatile int nonfinite_12; |
| nonfinite_12 = (float) x != QNAN; |
| /* { dg-final { scan-tree-dump "nonfinite_12 = 1" "original" } } */ |
| } |
| } |