aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2002-06-02 23:17:30 +0000
committerTom Tromey <tromey@gcc.gnu.org>2002-06-02 23:17:30 +0000
commit5d83269d111d5fce6d7d85063a1eef38829536d4 (patch)
tree7602533b0bae9619681516bd8afaf9da88822e42 /gcc/dwarf2out.c
parent62f6a494be3afb80fa3cbc84067e419e6d2fb272 (diff)
downloadgcc-5d83269d111d5fce6d7d85063a1eef38829536d4.zip
gcc-5d83269d111d5fce6d7d85063a1eef38829536d4.tar.gz
gcc-5d83269d111d5fce6d7d85063a1eef38829536d4.tar.bz2
fixincl.x: Rebuilt.
* fixinc/fixincl.x: Rebuilt. * fixinc/inclhack.def (thread_keyword): Match `*__thread'. From-SVN: r54192
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r--gcc/dwarf2out.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index f4b0ee7..12e9e8f 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -7656,16 +7656,27 @@ reg_loc_descriptor (rtl)
rtx rtl;
{
dw_loc_descr_ref loc_result = NULL;
- unsigned reg;
+ unsigned reg, i, max;
if (REGNO (rtl) >= FIRST_PSEUDO_REGISTER)
return 0;
reg = reg_number (rtl);
- if (reg <= 31)
- loc_result = new_loc_descr (DW_OP_reg0 + reg, 0, 0);
- else
- loc_result = new_loc_descr (DW_OP_regx, reg, 0);
+ max = HARD_REGNO_NREGS (reg, GET_MODE (rtl));
+ for (i = 0; i < max; ++i)
+ {
+ add_loc_descr (&loc_result,
+ new_loc_descr (reg <= 31 ? DW_OP_reg0 + reg : DW_OP_regx,
+ reg <= 31 ? 0 : reg,
+ 0));
+
+ if (max > 1)
+ add_loc_descr (&loc_result,
+ new_loc_descr (DW_OP_piece,
+ GET_MODE_SIZE (reg_raw_mode[reg]), 0));
+
+ ++reg;
+ }
return loc_result;
}