From 762c919f44677099fd2fe3e8c7e4d98ac1dca287 Mon Sep 17 00:00:00 2001
From: Joseph Myers <joseph@codesourcery.com>
Date: Thu, 4 Jan 2007 16:36:57 +0000
Subject: [PATCH] rs6000.c (rs6000_rtx_costs): Make adjustment for MULT inside
 MINUS as either argument.

	* config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
	MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
	rs6000_cost->fp not 0 as adjustment for outer NEG.

From-SVN: r120442
---
 gcc/ChangeLog              | 6 ++++++
 gcc/config/rs6000/rs6000.c | 5 +++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 602f2e7e328a..c6b21eb1b69f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-01-04  Joseph Myers  <joseph@codesourcery.com>
+
+	* config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
+	MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
+	rs6000_cost->fp not 0 as adjustment for outer NEG.
+
 2007-01-04  Jan Hubicka  <jh@suse.cz>
 
 	* cgraph.c (cgraph_release_function_body): New function.
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 15f263ab0166..7ef7551764f5 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -19738,11 +19738,12 @@ rs6000_rtx_costs (rtx x, int code, int outer_code, int *total)
     case MINUS:
       if (mode == DFmode)
 	{
-	  if (GET_CODE (XEXP (x, 0)) == MULT)
+	  if (GET_CODE (XEXP (x, 0)) == MULT
+	      || GET_CODE (XEXP (x, 1)) == MULT)
 	    {
 	      /* FNMA accounted in outer NEG.  */
 	      if (outer_code == NEG)
-		*total = 0;
+		*total = rs6000_cost->dmul - rs6000_cost->fp;
 	      else
 		*total = rs6000_cost->dmul;
 	    }
-- 
GitLab