combine.c (find_split_point): Verify that the shift count is a constant when...
authorJeff Law <law@redhat.com>
Wed, 27 May 2015 04:59:42 +0000 (22:59 -0600)
committerJeff Law <law@gcc.gnu.org>
Wed, 27 May 2015 04:59:42 +0000 (22:59 -0600)
       * combine.c (find_split_point): Verify that the shift count is a
       constant when choosing (plus (ashift ...)) as a split point.

From-SVN: r223736

gcc/ChangeLog
gcc/combine.c

index f02ba5cc1c3473945a54f2bf4f82af2f5aa185a5..bf90c86420695570a2991d44e3a94850764144b7 100644 (file)
@@ -1,5 +1,8 @@
 2015-05-26  Jeff Law  <law@redhat.com>
 
+       * combine.c (find_split_point): Verify that the shift count is a
+       constant when choosing (plus (ashift ...)) as a split point.
+
        * tree-ssa-threadupdate.c: Replace 8 space sequences with tabs.
        No functional changes.
 
index 73d141edc0787ff36334da8816355933657b1ba0..55a2e35ba48bd9bb4e4c9b1c40ab0732c4449392 100644 (file)
@@ -5157,7 +5157,8 @@ find_split_point (rtx *loc, rtx_insn *insn, bool set_src)
          worthless to try this split.  */
       if (!set_src
          && (GET_CODE (XEXP (x, 0)) == MULT
-             || GET_CODE (XEXP (x, 0)) == ASHIFT))
+             || (GET_CODE (XEXP (x, 0)) == ASHIFT
+                 && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT)))
         return loc;
 
     default: