2
0
mirror of git://gcc.gnu.org/git/gcc.git synced 2025-03-23 14:11:05 +08:00

re PR rtl-optimization/37363 (Fix for PR 36090 causes libstdc++ regressions)

gcc/
	PR rtl-optimization/37363
	* simplify-rtx.c (simplify_plus_minus): Don't create (const (minus ...))
	expresisons.

From-SVN: r141774
This commit is contained in:
Richard Sandiford 2008-11-11 23:23:23 +00:00 committed by Richard Sandiford
parent 5dbd125c5c
commit 2f1e2391d8
2 changed files with 6 additions and 18 deletions

@ -1,3 +1,9 @@
2008-11-11 Richard Sandiford <rdsandiford@googlemail.com>
PR rtl-optimization/37363
* simplify-rtx.c (simplify_plus_minus): Don't create (const (minus ...))
expresisons.
2008-11-11 Eric Botcazou <ebotcazou@adacore.com>
* ira-lives.c (process_bb_node_lives): Restore EH_RETURN_DATA_REGNO

@ -3678,24 +3678,6 @@ 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
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
&& GET_CODE (ops[n_ops - 1].op) == CONST_INT
&& CONSTANT_P (ops[n_ops - 2].op))