OSDN Git Service

PR tree-optimization/21088
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 23 Apr 2005 02:01:53 +0000 (02:01 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 23 Apr 2005 02:01:53 +0000 (02:01 +0000)
* 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
gcc/fold-const.c
gcc/tree-vrp.c
gcc/tree.h

index 9bfd962..38cb114 100644 (file)
@@ -1,3 +1,14 @@
+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.
index af1af33..1327c74 100644 (file)
@@ -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;
index bb68df6..4a0859e 100644 (file)
@@ -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;
 
index ba1e1fd..a6f9e57 100644 (file)
@@ -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);