except.c: Revert change of 2004-05-26.
authorBryce McKinlay <mckinlay@redhat.com>
Fri, 28 May 2004 01:14:02 +0000 (01:14 +0000)
committerBryce McKinlay <bryce@gcc.gnu.org>
Fri, 28 May 2004 01:14:02 +0000 (02:14 +0100)
* except.c: Revert change of 2004-05-26.
* config/i386/i386.md: Revert change of 2004-05-27.

From-SVN: r82349

gcc/ChangeLog
gcc/config/i386/i386.md
gcc/except.c

index 500ce95aff86ff8b6480004b3c254c6ca6ed7686..3793ff05118daaa84b2fa3bc69c3a93e7463c7c0 100644 (file)
@@ -1,3 +1,8 @@
+2004-05-27  Bryce McKinlay  <mckinlay@redhat.com>
+
+       * except.c: Revert change of 2004-05-26.
+       * config/i386/i386.md: Revert change of 2004-05-27.
+
 2004-05-27  Bryce McKinlay  <mckinlay@redhat.com>
 
        * configure.ac: Remove --enable-tree-browser option.
index 40f33fba29e79b349c7d5151195ca85130487f73..270168ff75b9421df6c714cf0ef0a6bbc05789f6 100644 (file)
 
    ; REP instruction
    (UNSPEC_REP                 75)
-
-   (UNSPEC_EH_RETURN           76)
   ])
 
 (define_constants
   [(UNSPECV_BLOCKAGE           0)
+   (UNSPECV_EH_RETURN          13)
    (UNSPECV_EMMS               31)
    (UNSPECV_LDMXCSR            37)
    (UNSPECV_STMXCSR            40)
   ""
 {
   rtx tmp, sa = EH_RETURN_STACKADJ_RTX, ra = operands[0];
-  rtx jmp;
 
   /* Tricky bit: we write the address of the handler to which we will
      be returning into someone else's stack frame, one word below the
   emit_move_insn (tmp, ra);
 
   if (Pmode == SImode)
-    jmp = emit_jump_insn (gen_eh_return_si (sa));
+    emit_insn (gen_eh_return_si (sa));
   else
-    jmp = emit_jump_insn (gen_eh_return_di (sa));
-  REG_NOTES (jmp) = alloc_EXPR_LIST (REG_NON_LOCAL_GOTO, const0_rtx,
-                                     REG_NOTES (jmp));
+    emit_insn (gen_eh_return_di (sa));
   emit_barrier ();
   DONE;
 })
 
 (define_insn_and_split "eh_return_si"
-  [(set (pc) 
-        (unspec [(match_operand:SI 0 "register_operand" "c")]
-                UNSPEC_EH_RETURN))]
+  [(unspec_volatile [(match_operand:SI 0 "register_operand" "c")]
+                   UNSPECV_EH_RETURN)]
   "!TARGET_64BIT"
   "#"
   "reload_completed"
   "ix86_expand_epilogue (2); DONE;")
 
 (define_insn_and_split "eh_return_di"
-  [(set (pc) 
-        (unspec [(match_operand:DI 0 "register_operand" "c")]
-                UNSPEC_EH_RETURN))]
+  [(unspec_volatile [(match_operand:DI 0 "register_operand" "c")]
+                   UNSPECV_EH_RETURN)]
   "TARGET_64BIT"
   "#"
   "reload_completed"
index 5e9ce337431c9b70906605dd6a4b2a71981eebc1..2dfd073e70a792e1577a1d7a56b89568e2df45ef 100644 (file)
@@ -3145,11 +3145,6 @@ can_throw_internal (rtx insn)
       return false;
     }
 
-  if (GET_CODE (insn) == JUMP_INSN
-      && GET_CODE (PATTERN (insn)) == RESX
-      && XINT (PATTERN (insn), 0) > 0)
-    return can_throw_internal_1 (XINT (PATTERN (insn), 0));
-
   /* Every insn that might throw has an EH_REGION note.  */
   note = find_reg_note (insn, REG_EH_REGION, NULL_RTX);
   if (!note || INTVAL (XEXP (note, 0)) <= 0)