aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1997-04-20 17:44:57 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1997-04-20 17:44:57 -0400
commitf0f6a2233fb12c26e42ddee6856396585bbd79cd (patch)
treea2543bb7e56a2d0e75344466ad70e3621c2aad7e
parentc7ca610ed5e808e725711d3a9acd275f6f3eb727 (diff)
downloadgcc-f0f6a2233fb12c26e42ddee6856396585bbd79cd.zip
gcc-f0f6a2233fb12c26e42ddee6856396585bbd79cd.tar.gz
gcc-f0f6a2233fb12c26e42ddee6856396585bbd79cd.tar.bz2
(nonlocal_goto_receiver): New pattern.
From-SVN: r13943
-rw-r--r--gcc/config/rs6000/rs6000.md13
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index c64c4f1..eba1a89 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -1,5 +1,5 @@
;; Machine description for IBM RISC System 6000 (POWER) for GNU C compiler
-;; Copyright (C) 1990, 91, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
+;; Copyright (C) 1990, 91-96, 1997 Free Software Foundation, Inc.
;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
;; This file is part of GNU CC.
@@ -7082,6 +7082,17 @@
DONE;
}")
+;; If we have -mmiminal-toc, we need to reload r30 after a nonlocal goto.
+
+(define_insn "nonlocal_goto_receiver"
+ [(unspec_volatile [(const_int 0)] 1)]
+ "TARGET_TOC && TARGET_MINIMAL_TOC && get_pool_size () != 0"
+ "*
+{
+ rs6000_output_load_toc_table (asm_out_file);
+ return \"\";
+}"
+ [(set_attr "type" "load")])
;; A function pointer under AIX is a pointer to a data area whose first word
;; contains the actual address of the function, whose second word contains a