[PATCH] Fix __builtin_init_dwarf_reg_size_table when built with -mfpxx

Jeff Law law@redhat.com
Fri May 17 16:28:00 GMT 2019


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" <dmladjenovic@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  <dmladjenovic@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  <dmladjenovic@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



More information about the Gcc-patches mailing list