aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2003-07-31 21:31:24 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2003-07-31 17:31:24 -0400
commitc67b2a58d8efcdb982028d1a3a78cdcb0d29ed92 (patch)
tree8c6f366e4a3ecb5d2bfbafab8b00cbda056ba172 /gcc/dwarf2out.c
parent40e941afc1a0d648ba1e42c0d50add96a64b1911 (diff)
downloadgcc-c67b2a58d8efcdb982028d1a3a78cdcb0d29ed92.zip
gcc-c67b2a58d8efcdb982028d1a3a78cdcb0d29ed92.tar.gz
gcc-c67b2a58d8efcdb982028d1a3a78cdcb0d29ed92.tar.bz2
* dwarf2out.c (loc_descriptor_from_tree, case CONSTRUCTOR): New case.
From-SVN: r70013
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r--gcc/dwarf2out.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 591d2da..bee42a1 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -8558,6 +8558,26 @@ loc_descriptor_from_tree (tree loc, int addressp)
return 0;
break;
+ case CONSTRUCTOR:
+ {
+ /* If this is already in memory and at a constant address, we can
+ support it. */
+ rtx rtl = TREE_CST_RTL (loc);
+
+#ifdef ASM_SIMPLIFY_DWARF_ADDR
+ if (rtl)
+ rtl = ASM_SIMPLIFY_DWARF_ADDR (rtl);
+#endif
+
+ if (rtl == NULL_RTX || GET_CODE (rtl) != MEM
+ || !CONSTANT_P (XEXP (rtl, 0)))
+ return 0;
+
+ indirect_p = 1;
+ ret = mem_loc_descriptor (XEXP (rtl, 0), GET_MODE (rtl));
+ break;
+ }
+
case TRUTH_AND_EXPR:
case TRUTH_ANDIF_EXPR:
case BIT_AND_EXPR: