aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKazu Hirata <kazu@cs.umass.edu>2005-03-09 19:21:11 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2005-03-09 19:21:11 +0000
commitfbaa905cda199093acf4069adcb2b25ce5d0f6c1 (patch)
treeebe7a797873997482f562ac91acebdcb152b0801 /gcc
parent62ab45cc129875ec3baef6eea7d60c69d263d853 (diff)
downloadgcc-fbaa905cda199093acf4069adcb2b25ce5d0f6c1.zip
gcc-fbaa905cda199093acf4069adcb2b25ce5d0f6c1.tar.gz
gcc-fbaa905cda199093acf4069adcb2b25ce5d0f6c1.tar.bz2
fold-const.c (fold_unary, [...]): Take decomposed arguments, code, type, op0, and op1 in case of fold_binary.
* 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. From-SVN: r96202
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/fold-const.c30
2 files changed, 18 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7ec54e8..e969a7b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 88ca036..6d099d9 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -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);