Commit 627ab861 by Paolo Bonzini Committed by David Edelsohn

re PR target/36090 (ppc64 cacoshl miscompilation)

2008-05-08  Paolo Bonzini  <bonzini@gnu.org>

        PR target/36090
        * simplify-rtx.c (simplify_plus_minus): Create CONST of
        similar RTX_CONST_OBJ before CONST_INT.

From-SVN: r135086
parent 41ccb5d1
2008-05-08 Paolo Bonzini <bonzini@gnu.org>
PR target/36090
* simplify-rtx.c (simplify_plus_minus): Create CONST of
similar RTX_CONST_OBJ before CONST_INT.
2008-05-08 Steve Ellcey <sje@cup.hp.com> 2008-05-08 Steve Ellcey <sje@cup.hp.com>
* stmt.c (expand_stack_restore): Change sa mode if needed. * stmt.c (expand_stack_restore): Change sa mode if needed.
......
...@@ -3674,6 +3674,24 @@ simplify_plus_minus (enum rtx_code code, enum machine_mode mode, rtx op0, ...@@ -3674,6 +3674,24 @@ simplify_plus_minus (enum rtx_code code, enum machine_mode mode, rtx op0,
one CONST_INT, and the sort will have ensured that it is last one CONST_INT, and the sort will have ensured that it is last
in the array and that any other constant will be next-to-last. */ in the array and that any other constant will be next-to-last. */
if (GET_CODE (ops[n_ops - 1].op) == CONST_INT)
i = n_ops - 2;
else
i = n_ops - 1;
if (i >= 1
&& ops[i].neg
&& !ops[i - 1].neg
&& CONSTANT_P (ops[i].op)
&& GET_CODE (ops[i].op) == GET_CODE (ops[i - 1].op))
{
ops[i - 1].op = gen_rtx_MINUS (mode, ops[i - 1].op, ops[i].op);
ops[i - 1].op = gen_rtx_CONST (mode, ops[i - 1].op);
if (i < n_ops - 1)
ops[i] = ops[i + 1];
n_ops--;
}
if (n_ops > 1 if (n_ops > 1
&& GET_CODE (ops[n_ops - 1].op) == CONST_INT && GET_CODE (ops[n_ops - 1].op) == CONST_INT
&& CONSTANT_P (ops[n_ops - 2].op)) && CONSTANT_P (ops[n_ops - 2].op))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment