(tcnd_divide_by_zero...
authorTom Wood <wood@gnu.org>
Fri, 6 Nov 1992 11:47:37 +0000 (11:47 +0000)
committerTom Wood <wood@gnu.org>
Fri, 6 Nov 1992 11:47:37 +0000 (11:47 +0000)
(tcnd_divide_by_zero, divsi3, udivsi3): Allow the
explicit trap for divide by zero to resume execution along the
expected path.

From-SVN: r2706

gcc/config/m88k/m88k.md

index 5742c092d14c08b0e405af71803463a8b4ed20db..a13f49c336a8b53b918a235316c1de7da1b7e8af 100644 (file)
@@ -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; }")
 \f
 ;; Attribute specifications
   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;
 }")
 
   if (op2 == const0_rtx)
     {
       emit_insn (gen_trap_divide_by_zero ());
-      emit_barrier ();
       emit_insn (gen_dummy (op0));
       DONE;
     }
 
       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));
          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));
   if (op2 == const0_rtx)
     {
       emit_insn (gen_trap_divide_by_zero ());
-      emit_barrier ();
       emit_insn (gen_dummy (operands[0]));
       DONE;
     }