On 5/16/19 7:15 AM, Dragan Mladjenovic wrote:
> Ping.
>
>
> ________________________________
> From: Dragan Mladjenovic
> Sent: Thursday, May 9, 2019 12:29 PM
> To: gcc-patches@gcc.gnu.org
> Cc: Dragan Mladjenovic; Jakub Jelinek; Matthew Fortune
> Subject: [PATCH] Fix __builtin_init_dwarf_reg_size_table when built with
> -mfpxx
>
> From: "Dragan Mladjenovic" <dmladjeno...@wavecomp.com>
>
>
> Hi all,
>
> For TARGET_FLOATXX the odd-numbered FP registers in SFmode are
> HARD_REGNO_CALL_PART_CLOBBERED. This causes dwarf_frame_reg_mode to fall
> back to VOIDmode and for __builtin_init_dwarf_reg_size_table to fill them
> as zero sized.
>
> This prevents libgcc's unwinder form ever restoring high parts of
> calle-saved double precision registers.
>
> This patch fixes the issue by forcing dwarf_frame_reg_mode to use SImode
> for FP registers.
>
> Bootstrapped and done regression tests on mipsel-unknown-linux-gnu -
> no new failures found.
>
>
> Best regards,
> Dragan
>
>
> gcc/ChangeLog:
>
> 2019-04-23 Dragan Mladjenovic <dmladjeno...@wavecomp.com>
>
> * gcc/config/mips/mips.c(mips_dwarf_frame_reg_mode): Replace TARGET_FLOAT64
> with !TARGET_FLOAT32, thus handling both fp64 and fpxx modes.
>
> gcc/testsuite/ChangeLog:
>
> 2019-04-23 Dragan Mladjenovic <dmladjeno...@wavecomp.com>
>
> * g++.dg/eh/o32-fp.C: New.
> * gcc.target/mips/dwarfregtable-1.c: New.
> * gcc.target/mips/dwarfregtable-2.c: New.
> * gcc.target/mips/dwarfregtable-3.c: New.
> * gcc.target/mips/dwarfregtable-4.c: New.
> * gcc.target/mips/dwarfregtable.h: New.
THanks. I've installed this on the trunk.
jeff