From d3858e149d0aa557d5d610056b10fef09b67c463 Mon Sep 17 00:00:00 2001 From: kazu Date: Sat, 23 Apr 2005 02:01:53 +0000 Subject: [PATCH] PR tree-optimization/21088 * fold-const.c (fold_unary, fold_binary, fold_ternary): Export. * tree-vrp.c (compare_values): Use fold_binary to compare pointers. Use boolean_type_node as the type of a comparison expression being folded. * tree.h: Add prototypes for fold_unary, fold_binary, fold_ternary. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@98600 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++++++++ gcc/fold-const.c | 6 +++--- gcc/tree-vrp.c | 6 +++--- gcc/tree.h | 3 +++ 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9bfd962b37b..38cb114d885 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2005-04-23 Kazu Hirata + + PR tree-optimization/21088 + * fold-const.c (fold_unary, fold_binary, fold_ternary): + Export. + * tree-vrp.c (compare_values): Use fold_binary to compare + pointers. Use boolean_type_node as the type of a comparison + expression being folded. + * tree.h: Add prototypes for fold_unary, fold_binary, + fold_ternary. + 2005-04-22 Diego Novillo * Makefile.in (tree-into-ssa.o): Add dependency on PARAMS_H. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index af1af3382ad..1327c74ee86 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -6678,7 +6678,7 @@ fold_complex_div (tree type, tree ac, tree bc, enum tree_code code) OP0. Return the folded expression if folding is successful. Otherwise, return NULL_TREE. */ -static tree +tree fold_unary (enum tree_code code, tree type, tree op0) { tree tem; @@ -7113,7 +7113,7 @@ fold_unary (enum tree_code code, tree type, tree op0) OP0 and OP1. Return the folded expression if folding is successful. Otherwise, return NULL_TREE. */ -static tree +tree fold_binary (enum tree_code code, tree type, tree op0, tree op1) { tree t1 = NULL_TREE; @@ -9852,7 +9852,7 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1) OP0, OP1, and OP2. Return the folded expression if folding is successful. Otherwise, return NULL_TREE. */ -static tree +tree fold_ternary (enum tree_code code, tree type, tree op0, tree op1, tree op2) { tree tem; diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index bb68df6ccc3..4a0859ef333 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -416,17 +416,17 @@ compare_values (tree val1, tree val2) return 0; /* If VAL1 is a lower address than VAL2, return -1. */ - t = fold (build2 (LT_EXPR, TREE_TYPE (val1), val1, val2)); + t = fold_binary (LT_EXPR, boolean_type_node, val1, val2); if (t == boolean_true_node) return -1; /* If VAL1 is a higher address than VAL2, return +1. */ - t = fold (build2 (GT_EXPR, TREE_TYPE (val1), val1, val2)); + t = fold_binary (GT_EXPR, boolean_type_node, val1, val2); if (t == boolean_true_node) return 1; /* If VAL1 is different than VAL2, return +2. */ - t = fold (build2 (NE_EXPR, TREE_TYPE (val1), val1, val2)); + t = fold_binary (NE_EXPR, boolean_type_node, val1, val2); if (t == boolean_true_node) return 2; diff --git a/gcc/tree.h b/gcc/tree.h index ba1e1fd5876..a6f9e57f44b 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -3511,6 +3511,9 @@ extern void using_eh_for_cleanups (void); subexpressions are not changed. */ extern tree fold (tree); +extern tree fold_unary (enum tree_code, tree, tree); +extern tree fold_binary (enum tree_code, tree, tree, tree); +extern tree fold_ternary (enum tree_code, tree, tree, tree, tree); extern tree fold_build1 (enum tree_code, tree, tree); extern tree fold_build2 (enum tree_code, tree, tree, tree); extern tree fold_build3 (enum tree_code, tree, tree, tree, tree); -- 2.11.0