From: Ian Lance Taylor Date: Sat, 7 Jan 2006 22:23:27 +0000 (+0000) Subject: re PR target/25662 (Unrecognizable insn with -O on PPC) X-Git-Tag: releases/gcc-4.2.0~4981 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=68162a976669a165633f4905f0ab1d60962b0666;p=thirdparty%2Fgcc.git re PR target/25662 (Unrecognizable insn with -O on PPC) 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 Co-Authored-By: David Edelsohn From-SVN: r109456 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 428c5230ab4e..f4a023ca0029 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 d79cf668c60f..349a922a7dd3 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 c773900c4054..5a5c5ca96683 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); }