diff options
author | David S. Miller <davem@davemloft.net> | 2013-02-07 23:19:27 +0000 |
---|---|---|
committer | David S. Miller <davem@gcc.gnu.org> | 2013-02-07 15:19:27 -0800 |
commit | 499f32e8fa6c398878d8c52757ac87f444e18886 (patch) | |
tree | f23a678c9097ac59a77279afd266d0db3247bbd9 /gcc/dwarf2out.c | |
parent | 48227088fd83bcfa7f05192475923171431e9719 (diff) | |
download | gcc-499f32e8fa6c398878d8c52757ac87f444e18886.zip gcc-499f32e8fa6c398878d8c52757ac87f444e18886.tar.gz gcc-499f32e8fa6c398878d8c52757ac87f444e18886.tar.bz2 |
Fix variable tracking for leaf functions on sparc.
* dwarf2out.c (based_loc_descr): Perform leaf register remapping
on 'reg'.
* var-tracking.c (vt_add_function_parameter): Test the presence of
HAVE_window_save properly and do not remap argument registers when
we have a leaf function.
From-SVN: r195869
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r-- | gcc/dwarf2out.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 13c31ad..4e75407 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -10865,7 +10865,16 @@ based_loc_descr (rtx reg, HOST_WIDE_INT offset, } } - regno = DWARF_FRAME_REGNUM (REGNO (reg)); + regno = REGNO (reg); +#ifdef LEAF_REG_REMAP + if (crtl->uses_only_leaf_regs) + { + int leaf_reg = LEAF_REG_REMAP (regno); + if (leaf_reg != -1) + regno = (unsigned) leaf_reg; + } +#endif + regno = DWARF_FRAME_REGNUM (regno); if (!optimize && fde && (fde->drap_reg == regno || fde->vdrap_reg == regno)) |