diff options
Diffstat (limited to 'gcc/config/mips/mips.c')
-rw-r--r-- | gcc/config/mips/mips.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 30b14c5..0a82ce1 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -6276,8 +6276,18 @@ mips_set_frame_expr (rtx frame_pattern) static rtx mips_frame_set (rtx mem, rtx reg) { - rtx set = gen_rtx_SET (VOIDmode, mem, reg); + rtx set; + + /* If we're saving the return address register and the dwarf return + address column differs from the hard register number, adjust the + note reg to refer to the former. */ + if (REGNO (reg) == GP_REG_FIRST + 31 + && DWARF_FRAME_RETURN_COLUMN != GP_REG_FIRST + 31) + reg = gen_rtx_REG (GET_MODE (reg), DWARF_FRAME_RETURN_COLUMN); + + set = gen_rtx_SET (VOIDmode, mem, reg); RTX_FRAME_RELATED_P (set) = 1; + return set; } |