diff options
author | Daniel Berlin <dberlin@dberlin.org> | 2003-11-21 21:18:45 +0000 |
---|---|---|
committer | David Edelsohn <dje@gcc.gnu.org> | 2003-11-21 16:18:45 -0500 |
commit | d44c7e3643a6d313b09d54b122ca70db045fc771 (patch) | |
tree | 78cd72bd087b6d697b94d744765e65f92a813055 /gcc | |
parent | f7ba331c2a4b654341f7b9770679fe10f5955919 (diff) | |
download | gcc-d44c7e3643a6d313b09d54b122ca70db045fc771.zip gcc-d44c7e3643a6d313b09d54b122ca70db045fc771.tar.gz gcc-d44c7e3643a6d313b09d54b122ca70db045fc771.tar.bz2 |
dwarf2out.c (add_location_or_const_value_attribute): Add support for PARALLEL.
2003-11-21 Daniel Berlin <dberlin@dberlin.org>
David Edelsohn <edelsohn@gnu.org>
* dwarf2out.c (add_location_or_const_value_attribute): Add support
for PARALLEL.
Co-Authored-By: David Edelsohn <edelsohn@gnu.org>
From-SVN: r73817
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/dwarf2out.c | 27 |
2 files changed, 33 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9d0e3ad..04758fb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-11-21 Daniel Berlin <dberlin@dberlin.org> + David Edelsohn <edelsohn@gnu.org> + + * dwarf2out.c (add_location_or_const_value_attribute): Add support + for PARALLEL. + 2003-11-21 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> * config/mips/t-iris6 (CRTSTUFF_T_CFLAGS): Add -Wno-error. diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 972ad7c..78c6bdf 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -9456,6 +9456,33 @@ add_location_or_const_value_attribute (dw_die_ref die, tree decl) add_AT_location_description (die, DW_AT_location, descr); break; + case PARALLEL: + { + rtvec par_elems = XVEC (rtl, 0); + int num_elem = GET_NUM_ELEM (par_elems); + enum machine_mode mode; + int i; + + /* Create the first one, so we have something to add to. */ + descr = loc_descriptor (XEXP (RTVEC_ELT (par_elems, 0), 0)); + mode = GET_MODE (XEXP (RTVEC_ELT (par_elems, 0), 0)); + add_loc_descr (&descr, + new_loc_descr (DW_OP_piece, GET_MODE_SIZE (mode), 0)); + for (i = 1; i < num_elem; i++) + { + dw_loc_descr_ref temp; + + temp = loc_descriptor (XEXP (RTVEC_ELT (par_elems, i), 0)); + add_loc_descr (&descr, temp); + mode = GET_MODE (XEXP (RTVEC_ELT (par_elems, i), 0)); + add_loc_descr (&descr, + new_loc_descr (DW_OP_piece, + GET_MODE_SIZE (mode), 0)); + } + } + add_AT_location_description (die, DW_AT_location, descr); + break; + default: abort (); } |