2008-09-01 Paul Brook <paul@codesourcery.com>
authorpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 1 Sep 2008 12:28:06 +0000 (12:28 +0000)
committerpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 1 Sep 2008 12:28:06 +0000 (12:28 +0000)
gcc/
* config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.

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

gcc/ChangeLog
gcc/config/arm/arm.c

index fb9b352..45fea8a 100644 (file)
@@ -1,3 +1,7 @@
+2008-09-01  Paul Brook  <paul@codesourcery.com>
+
+       * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
+
 2008-00-01  Jan Hubicka  <jh@suse.cz>
 
        * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
index 6a4b3ef..d22b4fe 100644 (file)
@@ -18235,8 +18235,15 @@ arm_no_early_mul_dep (rtx producer, rtx consumer)
     op = XVECEXP (op, 0, 0);
   op = XEXP (op, 1);
 
-  return (GET_CODE (op) == PLUS
-         && !reg_overlap_mentioned_p (value, XEXP (op, 0)));
+  if (GET_CODE (op) == PLUS || GET_CODE (op) == MINUS)
+    {
+      if (GET_CODE (XEXP (op, 0)) == MULT)
+       return !reg_overlap_mentioned_p (value, XEXP (op, 0));
+      else
+       return !reg_overlap_mentioned_p (value, XEXP (op, 1));
+    }
+
+  return 0;
 }
 
 /* We can't rely on the caller doing the proper promotion when