aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-02-07 23:19:27 +0000
committerDavid S. Miller <davem@gcc.gnu.org>2013-02-07 15:19:27 -0800
commit499f32e8fa6c398878d8c52757ac87f444e18886 (patch)
treef23a678c9097ac59a77279afd266d0db3247bbd9 /gcc/dwarf2out.c
parent48227088fd83bcfa7f05192475923171431e9719 (diff)
downloadgcc-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.c11
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))