pa.md (interspace_jump): Revise comment.
* pa.md (interspace_jump): Revise comment. (builtin_longjmp): Block initial setup insns from delay slot of interspace branch. (builtin_setjmp_receiver): New expander to save and restore PIC register. * som.h (NM_FLAGS): Remove `-n' sort option. Revise comment. From-SVN: r41902
This commit is contained in:
parent
1a560c3a48
commit
5c8cfcd63d
@ -1,3 +1,13 @@
|
||||
2001-05-07 John David Anglin <dave@hiauly1.hia.nrc.ca>
|
||||
|
||||
* pa.md (interspace_jump): Revise comment.
|
||||
(builtin_longjmp): Block initial setup insns from delay slot of
|
||||
interspace branch.
|
||||
(builtin_setjmp_receiver): New expander to save and restore PIC
|
||||
register.
|
||||
|
||||
* som.h (NM_FLAGS): Remove `-n' sort option. Revise comment.
|
||||
|
||||
Mon May 7 09:30:14 2001 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* toplev.c (compile_file): Set up the output file before we call
|
||||
|
@ -6212,8 +6212,7 @@
|
||||
|
||||
;;; EH does longjmp's from and within the data section. Thus,
|
||||
;;; an interspace branch is required for the longjmp implementation.
|
||||
;;; Registers r1 and r2 are not saved in the jmpbuf environment.
|
||||
;;; Thus, they can be used as scratch registers for the jump.
|
||||
;;; Registers r1 and r2 are used as scratch registers for the jump.
|
||||
(define_expand "interspace_jump"
|
||||
[(parallel
|
||||
[(set (pc) (match_operand 0 "pmode_register_operand" "a"))
|
||||
@ -6263,10 +6262,16 @@
|
||||
where to look for it when we get back to setjmp's function for
|
||||
restoring the gp. */
|
||||
emit_move_insn (pv, lab);
|
||||
|
||||
/* Prevent the insns above from being scheduled into the delay slot
|
||||
of the interspace jump because the space register could change. */
|
||||
emit_insn (gen_blockage ());
|
||||
|
||||
emit_jump_insn (gen_interspace_jump (pv));
|
||||
emit_barrier ();
|
||||
DONE;
|
||||
}")
|
||||
|
||||
;;; Hope this is only within a function...
|
||||
(define_insn "indirect_jump"
|
||||
[(set (pc) (match_operand 0 "register_operand" "r"))]
|
||||
@ -7124,3 +7129,18 @@
|
||||
emit_insn (gen_blockage ());
|
||||
DONE;
|
||||
}")
|
||||
|
||||
(define_expand "builtin_setjmp_receiver"
|
||||
[(label_ref (match_operand 0 "" ""))]
|
||||
"flag_pic"
|
||||
"
|
||||
{
|
||||
if (PIC_OFFSET_TABLE_SAVE_RTX == NULL_RTX)
|
||||
hppa_init_pic_save ();
|
||||
|
||||
/* Restore the PIC register. Hopefully, this will always be from
|
||||
a stack slot. The only registers that are valid after a
|
||||
builtin_longjmp are the stack and frame pointers. */
|
||||
emit_move_insn (pic_offset_table_rtx, PIC_OFFSET_TABLE_SAVE_RTX);
|
||||
DONE;
|
||||
}")
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Definitions for SOM assembler support.
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2001 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
@ -52,9 +52,10 @@ Boston, MA 02111-1307, USA. */
|
||||
"\t.stabs \"\",%d,0,0,L$text_end0000\nL$text_end0000:\n", N_SO)
|
||||
|
||||
/* The HP supplied NM will print out the subspace names for each symbol it
|
||||
finds, which can cause false matches when looking for ctors/dtors. The
|
||||
"-p" argument changes the output to not include subspace names. */
|
||||
#define NM_FLAGS "-p -n"
|
||||
finds, which can cause collect2 to find false matches when searching
|
||||
for ctors/dtors. The "-p" option changes the output to not include
|
||||
subspace names. The "-n" sorting option is unnecessary. */
|
||||
#define NM_FLAGS "-p"
|
||||
|
||||
/* HPUX has a program 'chatr' to list the dependencies of dynamically
|
||||
linked executables and shared libraries. */
|
||||
|
Loading…
Reference in New Issue
Block a user