diff options
author | Jim Wilson <wilson@cygnus.com> | 1997-09-05 02:36:53 +0000 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1997-09-04 19:36:53 -0700 |
commit | d5d1738a3a56748bc7c8c9f591d18d6bae469b6c (patch) | |
tree | 739c81643195564ca87208a8ab213e6f3113e429 | |
parent | f4da78811e4cfecc28779c94a861c305b6ac078d (diff) | |
download | gcc-d5d1738a3a56748bc7c8c9f591d18d6bae469b6c.zip gcc-d5d1738a3a56748bc7c8c9f591d18d6bae469b6c.tar.gz gcc-d5d1738a3a56748bc7c8c9f591d18d6bae469b6c.tar.bz2 |
Fix mips-sgi-irix5.2 eh25 g++ testsuite failure.
* mips.md (nonlocal_goto_receiver): Define.
From-SVN: r15091
-rw-r--r-- | gcc/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/config/mips/mips.md | 18 |
2 files changed, 20 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 039e408..9bea4de 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,7 @@ Thu Sep 4 15:02:27 1997 Jim Wilson <wilson@cygnus.com> + * mips.md (nonlocal_goto_receiver): Define. + * profile.c (output_arc_profiler): Check next_insert_after for non NULL before deferencing it. diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md index 770a91c..8bc70b7 100644 --- a/gcc/config/mips/mips.md +++ b/gcc/config/mips/mips.md @@ -6392,6 +6392,24 @@ move\\t%0,%z4\\n\\ (set_attr "mode" "none") (set_attr "length" "6")]) +;; ??? This is a hack to work around a problem with expand_builtin_setjmp. +;; It restores the frame pointer, and then does a call to restore the global +;; pointer (gp) register. The call insn implicitly (via the assembler) reloads +;; gp from the stack. However, call insns do not depend on $fp, so it is +;; possible for the instruction scheduler to move the fp restore after the +;; call, which then causes gp to be corrupted. We fix this by emitting a +;; scheduler barrier. A better fix is to put code here that restores the +;; $gp, and then the call is unnecessary. This is only a problem when PIC +;; (TARGET_ABICALLS), and only when the gp register is caller-saved +;; (irix5/o32, but not irix6/n32/n64). + +(define_expand "nonlocal_goto_receiver" + [(const_int 0)] + "" + " +{ + emit_insn (gen_blockage ()); +}") ;; ;; .................... |