-
- Downloads
fold-const.c (fold): Add constant folding for unordered comparison tree nodes.
* fold-const.c (fold) <UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR>: Add constant folding for unordered comparison tree nodes. If both operands are real constants, call fold_relational_const. If either operand is a NaN, evaluate the other for side-effects and return a constant. Optimize (double)float1 CMP (double)float2 into the equivalent float1 CMP float2. (nondestructive_fold_binary_to_constant) <UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR>: Call fold_relational_const for constant operands. (fold_relational_const): Add support for unordered comparison tree nodes. Don't constant fold "ordered" floating point comparisons against NaN if when flag_trapping_math is set. * gcc.dg/unordered-2.c: New test case. * gcc.dg/unordered-3.c: New test case. From-SVN: r83379
Showing
- gcc/ChangeLog 16 additions, 0 deletionsgcc/ChangeLog
- gcc/fold-const.c 141 additions, 14 deletionsgcc/fold-const.c
- gcc/testsuite/ChangeLog 5 additions, 0 deletionsgcc/testsuite/ChangeLog
- gcc/testsuite/gcc.dg/unordered-2.c 51 additions, 0 deletionsgcc/testsuite/gcc.dg/unordered-2.c
- gcc/testsuite/gcc.dg/unordered-3.c 79 additions, 0 deletionsgcc/testsuite/gcc.dg/unordered-3.c
Loading
Please register or sign in to comment