aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Ellcey <sellcey@imgtec.com>2016-01-29 16:29:58 +0000
committerSteve Ellcey <sje@gcc.gnu.org>2016-01-29 16:29:58 +0000
commit87a5ab58c5ffe762d4ff8f76daa41846cdffa472 (patch)
tree4fefacfdaa6161f57d1093c48115fde5a6358e55
parent33e89989f63ba5148362ecbdaed7d6c62e74e8ea (diff)
downloadgcc-87a5ab58c5ffe762d4ff8f76daa41846cdffa472.zip
gcc-87a5ab58c5ffe762d4ff8f76daa41846cdffa472.tar.gz
gcc-87a5ab58c5ffe762d4ff8f76daa41846cdffa472.tar.bz2
re PR target/65604 (MIPS -fno-delayed-branch generates incorrect code with -mcheck-zero-division)
PR target/65604 * config/mips/mips.c (mips_output_division): Check flag_delayed_branch. From-SVN: r232985
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/mips/mips.c14
2 files changed, 16 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9f99842..2450e4f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-01-29 Steve Ellcey <sellcey@imgtec.com>
+
+ PR target/65604
+ * config/mips/mips.c (mips_output_division): Check flag_delayed_branch.
+
2016-01-29 Jakub Jelinek <jakub@redhat.com>
PR target/69551
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 84fbc97..9ec2dcb 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -13712,9 +13712,17 @@ mips_output_division (const char *division, rtx *operands)
}
else
{
- output_asm_insn ("%(bne\t%2,%.,1f", operands);
- output_asm_insn (s, operands);
- s = "break\t7%)\n1:";
+ if (flag_delayed_branch)
+ {
+ output_asm_insn ("%(bne\t%2,%.,1f", operands);
+ output_asm_insn (s, operands);
+ s = "break\t7%)\n1:";
+ }
+ else
+ {
+ output_asm_insn (s, operands);
+ s = "bne\t%2,%.,1f\n\tnop\n\tbreak\t7\n1:";
+ }
}
}
return s;