diff options
author | Kazu Hirata <kazu@cs.umass.edu> | 2005-03-09 19:21:11 +0000 |
---|---|---|
committer | Kazu Hirata <kazu@gcc.gnu.org> | 2005-03-09 19:21:11 +0000 |
commit | fbaa905cda199093acf4069adcb2b25ce5d0f6c1 (patch) | |
tree | ebe7a797873997482f562ac91acebdcb152b0801 /gcc | |
parent | 62ab45cc129875ec3baef6eea7d60c69d263d853 (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/fold-const.c | 30 |
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); |