sh.md (divsi_inv_m3): Handle zero dividend specially.
authorKaz Kojima <kkojima@gcc.gnu.org>
Thu, 22 Nov 2007 21:15:19 +0000 (21:15 +0000)
committerKaz Kojima <kkojima@gcc.gnu.org>
Thu, 22 Nov 2007 21:15:19 +0000 (21:15 +0000)
* config/sh/sh.md (divsi_inv_m3): Handle zero dividend
specially.

From-SVN: r130357

gcc/ChangeLog
gcc/config/sh/sh.md

index 32c472e03bf9f59e940f696c470084dfdb700fd7..2270e80095b1b2bd3b04dd7bda31225d9c425095 100644 (file)
@@ -1,3 +1,8 @@
+2007-11-22  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+       * config/sh/sh.md (divsi_inv_m3): Handle zero dividend
+       specially.
+
 2007-11-22  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Change checking
index 90353b2df7ba8deb79056106f01943858515b5ca..00221cc2f37a3dbf5270f6af6f7a3669d98a7424 100644 (file)
@@ -2471,6 +2471,12 @@ norm32: r25
   rtx scratch1 = operands[8];
   rtx scratch2 = operands[9];
 
+  if (satisfies_constraint_N (dividend))
+    {
+      emit_move_insn (result, dividend);
+      DONE;
+    }
+
   emit_insn (gen_mulsidi3_media (scratch0, inv1, dividend));
   emit_insn (gen_mulsidi3_media (scratch1, inv2, dividend));
   emit_insn (gen_ashrdi3_media (scratch2, scratch0, GEN_INT (63)));