aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@dberlin.org>2003-11-21 21:18:45 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2003-11-21 16:18:45 -0500
commitd44c7e3643a6d313b09d54b122ca70db045fc771 (patch)
tree78cd72bd087b6d697b94d744765e65f92a813055
parentf7ba331c2a4b654341f7b9770679fe10f5955919 (diff)
downloadgcc-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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/dwarf2out.c27
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 ();
}