OSDN Git Service

* fold-const.c (fold_unary, fold_binary): Take decomposed
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Mar 2005 19:21:11 +0000 (19:21 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Mar 2005 19:21:11 +0000 (19:21 +0000)
arguments, code, type, op0, and op1 in case of fold_binary.
(fold): Update calls to fold_unary and fold_binary.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96202 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/fold-const.c

index 7ec54e8..e969a7b 100644 (file)
@@ -5,6 +5,10 @@
        (fold): Return the original tree when any of the functions
        mentioned above NULL_TREE.
 
+       * fold-const.c (fold_unary, fold_binary): Take decomposed
+       arguments, code, type, op0, and op1 in case of fold_binary.
+       (fold): Update calls to fold_unary and fold_binary.
+
 2005-03-09  Roger Sayle  <roger@eyesopen.com>
 
        * builtins.c (fold_builtin_unordered_cmp): Change prototype to take
index 88ca036..6d099d9 100644 (file)
@@ -6605,20 +6605,16 @@ fold_complex_div (tree type, tree ac, tree bc, enum tree_code code)
    expression.  */
 
 static tree
-fold_unary (tree expr)
+fold_unary (enum tree_code code, tree type, tree op0)
 {
-  const tree t = expr;
-  const tree type = TREE_TYPE (expr);
   tree tem;
-  tree op0, arg0;
-  enum tree_code code = TREE_CODE (t);
+  tree arg0;
   enum tree_code_class kind = TREE_CODE_CLASS (code);
 
   gcc_assert (IS_EXPR_CODE_CLASS (kind)
              && TREE_CODE_LENGTH (code) == 1);
 
-
-  arg0 = op0 = TREE_OPERAND (t, 0);
+  arg0 = op0;
   if (arg0)
     {
       if (code == NOP_EXPR || code == FLOAT_EXPR || code == CONVERT_EXPR)
@@ -7022,15 +7018,11 @@ fold_unary (tree expr)
    expression.  */
 
 static tree
-fold_binary (tree expr)
+fold_binary (enum tree_code code, tree type, tree op0, tree op1)
 {
-  const tree t = expr;
-  const tree type = TREE_TYPE (expr);
   tree t1 = NULL_TREE;
   tree tem;
-  tree op0, op1;
   tree arg0 = NULL_TREE, arg1 = NULL_TREE;
-  enum tree_code code = TREE_CODE (t);
   enum tree_code_class kind = TREE_CODE_CLASS (code);
 
   /* WINS will be nonzero when the switch is done
@@ -7040,8 +7032,8 @@ fold_binary (tree expr)
   gcc_assert (IS_EXPR_CODE_CLASS (kind)
              && TREE_CODE_LENGTH (code) == 2);
 
-  arg0 = op0 = TREE_OPERAND (t, 0);
-  arg1 = op1 = TREE_OPERAND (t, 1);
+  arg0 = op0;
+  arg1 = op1;
 
   if (arg0)
     {
@@ -9908,13 +9900,19 @@ fold (tree expr)
 
   if (IS_EXPR_CODE_CLASS (kind))
     {
+      tree type = TREE_TYPE (t);
+      tree op0, op1;
+
       switch (TREE_CODE_LENGTH (code))
        {
        case 1:
-         tem = fold_unary (expr);
+         op0 = TREE_OPERAND (t, 0);
+         tem = fold_unary (code, type, op0);
          return tem ? tem : expr;
        case 2:
-         tem = fold_binary (expr);
+         op0 = TREE_OPERAND (t, 0);
+         op1 = TREE_OPERAND (t, 1);
+         tem = fold_binary (code, type, op0, op1);
          return tem ? tem : expr;
        case 3:
          tem = fold_ternary (expr);