aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTom Wood <wood@gnu.org>1992-11-06 11:47:37 +0000
committerTom Wood <wood@gnu.org>1992-11-06 11:47:37 +0000
commit1192c651c6276a49d0e5d799e43bd659a923723a (patch)
treea8ee77fb568bbcce6276f7b4e7db439d91a3ddab /gcc
parentf95fd40ed558e7e4c587ecd2b129d6b3a581cd35 (diff)
downloadgcc-1192c651c6276a49d0e5d799e43bd659a923723a.zip
gcc-1192c651c6276a49d0e5d799e43bd659a923723a.tar.gz
gcc-1192c651c6276a49d0e5d799e43bd659a923723a.tar.bz2
(tcnd_divide_by_zero...
(tcnd_divide_by_zero, divsi3, udivsi3): Allow the explicit trap for divide by zero to resume execution along the expected path. From-SVN: r2706
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/m88k/m88k.md20
1 files changed, 5 insertions, 15 deletions
diff --git a/gcc/config/m88k/m88k.md b/gcc/config/m88k/m88k.md
index 5742c09..a13f49c 100644
--- a/gcc/config/m88k/m88k.md
+++ b/gcc/config/m88k/m88k.md
@@ -28,7 +28,7 @@
(define_expand "m88k_sccs_id"
[(match_operand:SI 0 "" "")]
""
- "{ static char sccs_id[] = \"@(#)m88k.md 2.2.13.5 10/19/92 10:13:13\";
+ "{ static char sccs_id[] = \"@(#)m88k.md 2.3.2.2 11/05/92 09:03:51\";
FAIL; }")
;; Attribute specifications
@@ -2377,7 +2377,6 @@
emit_insn (gen_cmpsi (operands[0], const0_rtx));
emit_jump_insn (gen_bne (operands[1]));
emit_insn (gen_trap_divide_by_zero ());
- emit_barrier ();
DONE;
}")
@@ -2406,7 +2405,6 @@
if (op2 == const0_rtx)
{
emit_insn (gen_trap_divide_by_zero ());
- emit_barrier ();
emit_insn (gen_dummy (op0));
DONE;
}
@@ -2448,11 +2446,8 @@
if (TARGET_CHECK_ZERO_DIV)
emit_insn (gen_tcnd_divide_by_zero (op2, join_label));
- else
- {
- emit_jump_insn (gen_jump (join_label));
- emit_barrier ();
- }
+ emit_jump_insn (gen_jump (join_label));
+ emit_barrier ();
emit_label (label1); /* constant / positive */
emit_move_insn (op0, gen_rtx (UDIV, SImode, op1, op2));
@@ -2517,13 +2512,9 @@
emit_jump_insn (gen_bne (join_label));
emit_label (label4);
emit_insn (gen_trap_divide_by_zero ());
- emit_barrier ();
- }
- else
- {
- emit_jump_insn (gen_jump (join_label));
- emit_barrier ();
}
+ emit_jump_insn (gen_jump (join_label));
+ emit_barrier ();
emit_label (label2); /* pos.-or-0 / neg.-or-0 */
emit_move_insn (op0, gen_rtx (UDIV, SImode, op1, neg_op2));
@@ -2578,7 +2569,6 @@
if (op2 == const0_rtx)
{
emit_insn (gen_trap_divide_by_zero ());
- emit_barrier ();
emit_insn (gen_dummy (operands[0]));
DONE;
}