From c67b2a58d8efcdb982028d1a3a78cdcb0d29ed92 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Thu, 31 Jul 2003 21:31:24 +0000 Subject: [PATCH] * dwarf2out.c (loc_descriptor_from_tree, case CONSTRUCTOR): New case. From-SVN: r70013 --- gcc/ChangeLog | 4 ++++ gcc/dwarf2out.c | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1f48c7c67ca..87ce37ab103 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2003-07-31 Richard Kenner + + * dwarf2out.c (loc_descriptor_from_tree, case CONSTRUCTOR): New case. + 2003-07-31 Per Bothner * opts.c (in_fnames, num_in_fnames): Moved here from c-opts. diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 591d2da6539..bee42a15b22 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: