diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.c | 10 |
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) { |