aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-pretty-print.c
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2004-05-28 16:37:08 +0000
committerPaolo Bonzini <bonzini@gcc.gnu.org>2004-05-28 16:37:08 +0000
commitd1a7edafe6a978e8f380a74f1f6d386d871bf417 (patch)
tree7ddeb479040eb4166d908a90967e3c0027eb6800 /gcc/tree-pretty-print.c
parent2966b00e88d24531be8ff24ac6c82d5cf70ae116 (diff)
downloadgcc-d1a7edafe6a978e8f380a74f1f6d386d871bf417.zip
gcc-d1a7edafe6a978e8f380a74f1f6d386d871bf417.tar.gz
gcc-d1a7edafe6a978e8f380a74f1f6d386d871bf417.tar.bz2
re PR rtl-optimization/15649 (ICE with __builtin_isgreater and -ffast-math)
gcc/ChangeLog: 2004-05-27 Paolo Bonzini <bonzini@gnu.org> Roger Sayle <roger@eyesopen.com> PR rtl-optimization/15649 Add LTGT_EXPR and improve pretty-printing of unordered comparisons. * c-common.c (c_common_truthvalue_conversion): Handle LTGT_EXPR. * c-typeck.c (build_binary_op): Likewise. * dojump.c (do_jump): Likewise. * expr.c (expand_expr_real_1, do_store_flag): Likewise. * predict.c (tree_predict_by_opcode): Likewise. * real.c (real_compare): Likewise. * tree-cfg.c (verify_expr): Likewise. * tree-inline.c (estimate_num_insns_1): Likewise. * tree-pretty-print.c (dump_generic_node): Likewise. Handle ORDERED_EXPR, UNORDERED_EXPR. (op_symbol): Print unordered comparisons differently than ordered ones. * tree.def (LTGT_EXPR): New '<' tree code. * doc/c-tree.texi (Expressions): Document floating-point comparison nodes. Fold comparisons between floating point values. * fold-const.c (enum comparison_code): New, from #define'd constants. Define compcodes for unordered comparisons and for invalid transformations. (invert_tree_comparison): Add "honor_nans" parameter. (fold_truthop): Revamp to work on floating-point types too. (comparison_to_compcode): Support unordered comparisons. Use new enum comparison_code. (compcode_to_comparison): Likewise. (combine_compcodes): New function. (invert_truthvalue): Let invert_tree_comparison decide whether it is valid to fold the comparison. Fold ORDERED and UNORDERED even if flag_unsafe_math_optimizations is off, and the remaining even if flag_unsafe_math_optimizations is off but we are under -fno-trapping-math. (fold_relational_const): Integer modes do not honor NaNs. gcc/testsuite/ChangeLog: 2004-05-27 Paolo Bonzini <bonzini@gnu.org> * gcc.c-torture/compare-fp-1.c, gcc.c-torture/compare-fp-2.c, gcc.c-torture/compare-fp-3.c, gcc.c-torture/compare-fp-4.c, gcc.c-torture/compare-fp-3.x, gcc.c-torture/compare-fp-4.x, gcc.c-torture/pr15649-1.c: New. Co-Authored-By: Roger Sayle <roger@eyesopen.com> From-SVN: r82365
Diffstat (limited to 'gcc/tree-pretty-print.c')
-rw-r--r--gcc/tree-pretty-print.c42
1 files changed, 29 insertions, 13 deletions
diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c
index e4c6b07..ce1f750 100644
--- a/gcc/tree-pretty-print.c
+++ b/gcc/tree-pretty-print.c
@@ -905,6 +905,9 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
case UNGT_EXPR:
case UNGE_EXPR:
case UNEQ_EXPR:
+ case LTGT_EXPR:
+ case ORDERED_EXPR:
+ case UNORDERED_EXPR:
{
const char *op = op_symbol (node);
op0 = TREE_OPERAND (node, 0);
@@ -999,14 +1002,6 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
pp_character (buffer, '>');
break;
- case UNORDERED_EXPR:
- NIY;
- break;
-
- case ORDERED_EXPR:
- NIY;
- break;
-
case IN_EXPR:
NIY;
break;
@@ -1681,6 +1676,14 @@ op_prio (tree op)
case NE_EXPR:
return 9;
+ case UNLT_EXPR:
+ case UNLE_EXPR:
+ case UNGT_EXPR:
+ case UNGE_EXPR:
+ case UNEQ_EXPR:
+ case LTGT_EXPR:
+ case ORDERED_EXPR:
+ case UNORDERED_EXPR:
case LT_EXPR:
case LE_EXPR:
case GT_EXPR:
@@ -1786,28 +1789,41 @@ op_symbol (tree op)
case BIT_AND_EXPR:
return "&";
+ case ORDERED_EXPR:
+ return "ord";
+ case UNORDERED_EXPR:
+ return "unord";
+
case EQ_EXPR:
- case UNEQ_EXPR:
return "==";
+ case UNEQ_EXPR:
+ return "u==";
case NE_EXPR:
return "!=";
case LT_EXPR:
- case UNLT_EXPR:
return "<";
+ case UNLT_EXPR:
+ return "u<";
case LE_EXPR:
- case UNLE_EXPR:
return "<=";
+ case UNLE_EXPR:
+ return "u<=";
case GT_EXPR:
- case UNGT_EXPR:
return ">";
+ case UNGT_EXPR:
+ return "u>";
case GE_EXPR:
- case UNGE_EXPR:
return ">=";
+ case UNGE_EXPR:
+ return "u>=";
+
+ case LTGT_EXPR:
+ return "<>";
case LSHIFT_EXPR:
return "<<";