re PR rtl-optimization/37363 (Fix for PR 36090 causes libstdc++ regressions)
authorRichard Sandiford <rdsandiford@googlemail.com>
Tue, 11 Nov 2008 23:23:23 +0000 (23:23 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 11 Nov 2008 23:23:23 +0000 (23:23 +0000)
gcc/
PR rtl-optimization/37363
* simplify-rtx.c (simplify_plus_minus): Don't create (const (minus ...))
expresisons.

From-SVN: r141774

gcc/ChangeLog
gcc/simplify-rtx.c

index 2d5803f..4fee1bb 100644 (file)
@@ -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
index c7cd218..dd91e12 100644 (file)
@@ -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))