aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <richard@codesourcery.com>2007-03-06 09:04:27 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2007-03-06 09:04:27 +0000
commitafcb440c3f7605745e5bdca07927be75250f1d34 (patch)
treebdef561a358640afd89baae0def843f5630d4716 /gcc
parent6357eb0da4207f2c0ff0672ee206582b5405f98a (diff)
downloadgcc-afcb440c3f7605745e5bdca07927be75250f1d34.zip
gcc-afcb440c3f7605745e5bdca07927be75250f1d34.tar.gz
gcc-afcb440c3f7605745e5bdca07927be75250f1d34.tar.bz2
m68k.c (m68k_save_reg): Save the PIC register in functions that call eh_return.
gcc/ * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in functions that call eh_return. From-SVN: r122611
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/m68k/m68k.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 249d3e8..e974798 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,6 +1,11 @@
2007-03-06 Richard Sandiford <richard@codesourcery.com>
* config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
+ functions that call eh_return.
+
+2007-03-06 Richard Sandiford <richard@codesourcery.com>
+
+ * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
functions that need a constant pool.
2007-03-06 Richard Sandiford <richard@codesourcery.com>
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index 1d7b448..642927e 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -747,6 +747,10 @@ m68k_save_reg (unsigned int regno, bool interrupt_handler)
{
if (flag_pic && regno == PIC_OFFSET_TABLE_REGNUM)
{
+ /* A function that receives a nonlocal goto must save all call-saved
+ registers. */
+ if (current_function_has_nonlocal_label)
+ return true;
if (current_function_uses_pic_offset_table)
return true;
/* Reload may introduce constant pool references into a function