From 5e19f3155333837dbc18d4b848e2a84ba2a498a1 Mon Sep 17 00:00:00 2001 From: rsandifo Date: Tue, 6 Mar 2007 09:04:27 +0000 Subject: [PATCH] gcc/ * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in functions that call eh_return. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122611 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/m68k/m68k.c | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 249d3e85dbd6..e97479851729 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 1d7b44864c14..642927e7d824 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.47.3