From afcb440c3f7605745e5bdca07927be75250f1d34 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Tue, 6 Mar 2007 09:04:27 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/config/m68k/m68k.c | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 249d3e85dbd..e9747985172 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-03-06 Richard Sandiford + + * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in + functions that call eh_return. + 2007-03-06 Richard Sandiford * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c index 1d7b44864c1..642927e7d82 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 -- 2.30.2