diff options
author | Richard Sandiford <richard@codesourcery.com> | 2006-04-27 16:21:50 +0000 |
---|---|---|
committer | Richard Sandiford <richard@codesourcery.com> | 2006-04-27 16:21:50 +0000 |
commit | 1ba790f3005f05ff033e11c26073352732c106df (patch) | |
tree | 2ea91f4998adf560c794d1fda4667c0e8e433f11 | |
parent | 62b31e97f5db6e5cb3985a4188c13a3eee2b89ea (diff) |
gcc/
* config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
functions that call eh_return.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/csl/coldfire-4_1@113307 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | ChangeLog.csl | 6 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.c | 3 |
2 files changed, 9 insertions, 0 deletions
diff --git a/ChangeLog.csl b/ChangeLog.csl index fc236097d28..9de865b7cb9 100644 --- a/ChangeLog.csl +++ b/ChangeLog.csl @@ -1,6 +1,12 @@ 2006-04-27 Richard Sandiford <richard@codesourcery.com> gcc/ + * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in + functions that call eh_return. + +2006-04-27 Richard Sandiford <richard@codesourcery.com> + + gcc/ * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead of qnan_msb_set to determine the lower bits of a canonical NaN significand. diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c index 6f5e5f34003..622792fd341 100644 --- a/gcc/config/m68k/m68k.c +++ b/gcc/config/m68k/m68k.c @@ -761,6 +761,9 @@ m68k_save_reg (unsigned int regno, bool interrupt_handler) { if (flag_pic && regno == PIC_OFFSET_TABLE_REGNUM) { + /* We need to restore the PIC register on exceptional returns. */ + if (current_function_calls_eh_return) + return true; if (current_function_uses_pic_offset_table) return true; if (!current_function_is_leaf && TARGET_ID_SHARED_LIBRARY) |