diff options
| -rw-r--r-- | gcc/ChangeLog | 9 | ||||
| -rw-r--r-- | gcc/optabs.c | 11 | ||||
| -rw-r--r-- | gcc/simplify-rtx.c | 10 |
3 files changed, 22 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 428c523..f4a023c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2005-01-07 Ian Lance Taylor <ian@airs.com> + David Edelsohn <edelsohn@gnu.org> + + PR rtl-optimization/25662 + * optabs.c (simplify_expand_binop): Use simplify_binary_operation + for constant operands instead of simplify_gen_binary. + * simplify-rtx.c (simplify_gen_binary): Swap commutative operands + after trying simplify_binary_operation + 2006-01-06 Daniel Berlin <dberlin@dberlin.org> * tree.c (iterative_hash_expr): Hash decls based on UID. diff --git a/gcc/optabs.c b/gcc/optabs.c index d79cf66..349a922 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -427,9 +427,14 @@ simplify_expand_binop (enum machine_mode mode, optab binoptab, enum optab_methods methods) { if (CONSTANT_P (op0) && CONSTANT_P (op1)) - return simplify_gen_binary (binoptab->code, mode, op0, op1); - else - return expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods); + { + rtx x = simplify_binary_operation (binoptab->code, mode, op0, op1); + + if (x) + return x; + } + + return expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods); } /* Like simplify_expand_binop, but always put the result in TARGET. diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index c773900..5a5c5ca 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -114,16 +114,16 @@ simplify_gen_binary (enum rtx_code code, enum machine_mode mode, rtx op0, { rtx tem; - /* Put complex operands first and constants second if commutative. */ - if (GET_RTX_CLASS (code) == RTX_COMM_ARITH - && swap_commutative_operands_p (op0, op1)) - tem = op0, op0 = op1, op1 = tem; - /* If this simplifies, do it. */ tem = simplify_binary_operation (code, mode, op0, op1); if (tem) return tem; + /* Put complex operands first and constants second if commutative. */ + if (GET_RTX_CLASS (code) == RTX_COMM_ARITH + && swap_commutative_operands_p (op0, op1)) + tem = op0, op0 = op1, op1 = tem; + return gen_rtx_fmt_ee (code, mode, op0, op1); } |
