aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2011-01-04 22:44:04 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2011-01-04 22:44:04 +0000
commitd5d4d14e156d91fa4f5490eee269b6fc01b12160 (patch)
treed3f331d5e4da342751a22707e4ec2414cebc9f72 /gcc/dwarf2out.c
parent5e208e74b37744d823fdf438ee0d0841dfdac055 (diff)
downloadgcc-d5d4d14e156d91fa4f5490eee269b6fc01b12160.zip
gcc-d5d4d14e156d91fa4f5490eee269b6fc01b12160.tar.gz
gcc-d5d4d14e156d91fa4f5490eee269b6fc01b12160.tar.bz2
dwarf2out.c (rtl_for_decl_init): Strip no-op conversions off the initializer.
* dwarf2out.c (rtl_for_decl_init): Strip no-op conversions off the initializer. Skip view conversions from aggregate types. From-SVN: r168488
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r--gcc/dwarf2out.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 9fe1e9c..22ee324 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -16526,6 +16526,8 @@ rtl_for_decl_init (tree init, tree type)
{
rtx rtl = NULL_RTX;
+ STRIP_NOPS (init);
+
/* If a variable is initialized with a string constant without embedded
zeros, build CONST_STRING. */
if (TREE_CODE (init) == STRING_CST && TREE_CODE (type) == ARRAY_TYPE)
@@ -16550,7 +16552,10 @@ rtl_for_decl_init (tree init, tree type)
}
/* Other aggregates, and complex values, could be represented using
CONCAT: FIXME! */
- else if (AGGREGATE_TYPE_P (type) || TREE_CODE (type) == COMPLEX_TYPE)
+ else if (AGGREGATE_TYPE_P (type)
+ || (TREE_CODE (init) == VIEW_CONVERT_EXPR
+ && AGGREGATE_TYPE_P (TREE_TYPE (TREE_OPERAND (init, 0))))
+ || TREE_CODE (type) == COMPLEX_TYPE)
;
/* Vectors only work if their mode is supported by the target.
FIXME: generic vectors ought to work too. */