diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-06-02 23:17:30 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-06-02 23:17:30 +0000 |
commit | 451d38944b3ceb1b2ba7f7d0bd4729b47e48910a (patch) | |
tree | 7602533b0bae9619681516bd8afaf9da88822e42 /gcc/dwarf2out.c | |
parent | 756d0f7c5d949666a96e60abb4cc954b64b15147 (diff) | |
download | gcc-451d38944b3ceb1b2ba7f7d0bd4729b47e48910a.tar.gz |
* fixinc/fixincl.x: Rebuilt.
* fixinc/inclhack.def (thread_keyword): Match `*__thread'.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54192 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r-- | gcc/dwarf2out.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index f4b0ee7ff5d..12e9e8f3991 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; } |