Commit 64b4ab5a by Richard Henderson Committed by Richard Henderson

alpha.md (builtin_longjmp_internal): New.

        * config/alpha/alpha.md (builtin_longjmp_internal): New.
        (builtin_longjmp): Use it instead of emit_indirect_jump.

From-SVN: r39232
parent 28d0a4d8
2001-01-24 Richard Henderson <rth@redhat.com>
* config/alpha/alpha.md (builtin_longjmp_internal): New.
(builtin_longjmp): Use it instead of emit_indirect_jump.
2001-01-23 John David Anglin <dave@hiauly1.hia.nrc.ca> 2001-01-23 John David Anglin <dave@hiauly1.hia.nrc.ca>
* bb-reorder.c (make_reorder_chain_1): Handle case where * bb-reorder.c (make_reorder_chain_1): Handle case where
......
...@@ -5913,7 +5913,7 @@ ...@@ -5913,7 +5913,7 @@
"lda %0,%1(%0)") "lda %0,%1(%0)")
(define_expand "builtin_longjmp" (define_expand "builtin_longjmp"
[(unspec_volatile [(match_operand:DI 0 "register_operand" "r")] 3)] [(use (match_operand:DI 0 "register_operand" "r"))]
"! TARGET_OPEN_VMS && ! TARGET_WINDOWS_NT" "! TARGET_OPEN_VMS && ! TARGET_WINDOWS_NT"
" "
{ {
...@@ -5933,10 +5933,20 @@ ...@@ -5933,10 +5933,20 @@
/* Load the label we are jumping through into $27 so that we know /* Load the label we are jumping through into $27 so that we know
where to look for it when we get back to setjmp's function for where to look for it when we get back to setjmp's function for
restoring the gp. */ restoring the gp. */
emit_indirect_jump (pv); emit_jump_insn (gen_builtin_longjmp_internal (pv));
emit_barrier ();
DONE; DONE;
}") }")
;; This is effectively a copy of indirect_jump, but constrained such
;; that register renaming cannot foil our cunning plan with $27.
(define_insn "builtin_longjmp_internal"
[(set (pc)
(unspec_volatile [(match_operand:DI 0 "register_operand" "c")] 3))]
""
"jmp $31,(%0),0"
[(set_attr "type" "ibr")])
(define_insn "*builtin_setjmp_receiver_sub_label" (define_insn "*builtin_setjmp_receiver_sub_label"
[(unspec_volatile [(label_ref (match_operand 0 "" ""))] 2)] [(unspec_volatile [(label_ref (match_operand 0 "" ""))] 2)]
"! TARGET_OPEN_VMS && ! TARGET_WINDOWS_NT && TARGET_AS_CAN_SUBTRACT_LABELS" "! TARGET_OPEN_VMS && ! TARGET_WINDOWS_NT && TARGET_AS_CAN_SUBTRACT_LABELS"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment