dwarf2out.c (add_location_or_const_value_attribute): Add support for PARALLEL.
authorDaniel Berlin <dberlin@dberlin.org>
Fri, 21 Nov 2003 21:18:45 +0000 (21:18 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Fri, 21 Nov 2003 21:18:45 +0000 (16:18 -0500)
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

gcc/ChangeLog
gcc/dwarf2out.c

index 9d0e3ad..04758fb 100644 (file)
@@ -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.
index 972ad7c..78c6bdf 100644 (file)
@@ -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 ();
     }