diff options
author | Richard Sandiford <richard@codesourcery.com> | 2007-03-06 09:04:27 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2007-03-06 09:04:27 +0000 |
commit | afcb440c3f7605745e5bdca07927be75250f1d34 (patch) | |
tree | bdef561a358640afd89baae0def843f5630d4716 /gcc | |
parent | 6357eb0da4207f2c0ff0672ee206582b5405f98a (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.c | 4 |
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 |