* 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
+2005-04-23 Kazu Hirata <kazu@cs.umass.edu>
+
+ 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 <dnovillo@redhat.com>
* Makefile.in (tree-into-ssa.o): Add dependency on PARAMS_H.
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;
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;
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;
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;
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);