From 5f76898789cbf6dd1dc930fafe477195ae26c648 Mon Sep 17 00:00:00 2001 From: dje Date: Sat, 7 Jan 2006 22:23:27 +0000 Subject: [PATCH] 2005-01-07 Ian Lance Taylor David Edelsohn 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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109456 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/optabs.c | 11 ++++++++--- gcc/simplify-rtx.c | 10 +++++----- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 428c5230ab4..f4a023ca002 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2005-01-07 Ian Lance Taylor + David Edelsohn + + 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 * tree.c (iterative_hash_expr): Hash decls based on UID. diff --git a/gcc/optabs.c b/gcc/optabs.c index d79cf668c60..349a922a7dd 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 c773900c405..5a5c5ca9668 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); } -- 2.11.0