aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/m68k/m68k.c10
2 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a7fb0df..d232111 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2005-02-24 Andrea Tarani <andrea.tarani@gilbarco.com>
+
+ * config/m68k/m68k.c (m68k_save_reg): Also save A5 for non-leaf
+ functions when -mid-shared-library is being used.
+
2005-02-23 Daniel Jacobowitz <dan@codesourcery.com>
* doc/tm.texi (LINK_LIBGCC_SPECIAL): Remove.
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index 1db78d9..e3ac6fa 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -371,9 +371,13 @@ m68k_initial_elimination_offset (int from, int to)
static bool
m68k_save_reg (unsigned int regno, bool interrupt_handler)
{
- if (flag_pic && current_function_uses_pic_offset_table
- && regno == PIC_OFFSET_TABLE_REGNUM)
- return true;
+ if (flag_pic && regno == PIC_OFFSET_TABLE_REGNUM)
+ {
+ if (current_function_uses_pic_offset_table)
+ return true;
+ if (!current_function_is_leaf && TARGET_ID_SHARED_LIBRARY)
+ return true;
+ }
if (current_function_calls_eh_return)
{