aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKaz Kojima <kkojima@gcc.gnu.org>2007-11-22 21:15:19 +0000
committerKaz Kojima <kkojima@gcc.gnu.org>2007-11-22 21:15:19 +0000
commitcd9a21ca0b5ee9e1c4d5ae0140a0ac26564e5143 (patch)
tree35a4ababd2c4fd9267091d756a93dc0e14b056f8 /gcc
parent6c01f02b2c8fc4357a2b6337a6b921941fb063a7 (diff)
downloadgcc-cd9a21ca0b5ee9e1c4d5ae0140a0ac26564e5143.zip
gcc-cd9a21ca0b5ee9e1c4d5ae0140a0ac26564e5143.tar.gz
gcc-cd9a21ca0b5ee9e1c4d5ae0140a0ac26564e5143.tar.bz2
sh.md (divsi_inv_m3): Handle zero dividend specially.
* config/sh/sh.md (divsi_inv_m3): Handle zero dividend specially. From-SVN: r130357
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sh/sh.md6
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 32c472e..2270e80 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index 90353b2..00221cc 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -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)));