OSDN Git Service

* config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 4 Jan 2007 16:36:57 +0000 (16:36 +0000)
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 4 Jan 2007 16:36:57 +0000 (16:36 +0000)
MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
rs6000_cost->fp not 0 as adjustment for outer NEG.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120442 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 602f2e7..c6b21eb 100644 (file)
@@ -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.
 2007-01-04  Jan Hubicka  <jh@suse.cz>
 
        * cgraph.c (cgraph_release_function_body): New function.
index 15f263a..7ef7551 100644 (file)
@@ -19738,11 +19738,12 @@ rs6000_rtx_costs (rtx x, int code, int outer_code, int *total)
     case MINUS:
       if (mode == DFmode)
        {
     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)
            {
              /* FNMA accounted in outer NEG.  */
              if (outer_code == NEG)
-               *total = 0;
+               *total = rs6000_cost->dmul - rs6000_cost->fp;
              else
                *total = rs6000_cost->dmul;
            }
              else
                *total = rs6000_cost->dmul;
            }