aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <richard@codesourcery.com>2006-04-27 16:21:50 +0000
committerRichard Sandiford <richard@codesourcery.com>2006-04-27 16:21:50 +0000
commit1ba790f3005f05ff033e11c26073352732c106df (patch)
tree2ea91f4998adf560c794d1fda4667c0e8e433f11
parent62b31e97f5db6e5cb3985a4188c13a3eee2b89ea (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.csl6
-rw-r--r--gcc/config/m68k/m68k.c3
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)