From 08ab58b30f4ae0b42751ce52ac444691e6da2606 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 31 Aug 2008 13:21:28 +0200 Subject: [PATCH] dwarf2out.c (native_encode_initializer): Subtract min_index for non-range array index. * dwarf2out.c (native_encode_initializer): Subtract min_index for non-range array index. Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR. From-SVN: r139825 --- gcc/ChangeLog | 5 +++++ gcc/dwarf2out.c | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 39836ecd124c..f78b20822541 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-08-31 Jakub Jelinek + + * dwarf2out.c (native_encode_initializer): Subtract min_index for + non-range array index. Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR. + 2008-08-31 Jan Hubicka * sparc.h (BRANCH_COST): Fix macro definition. diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 567fc7ad9570..6a8d34c54559 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -11846,7 +11846,7 @@ native_encode_initializer (tree init, unsigned char *array, int size) pos = (tree_low_cst (TREE_OPERAND (index, 0), 0) - min_index) * fieldsize; else if (index) - pos = tree_low_cst (index, 0) * fieldsize; + pos = (tree_low_cst (index, 0) - min_index) * fieldsize; if (val) { @@ -11916,6 +11916,9 @@ native_encode_initializer (tree init, unsigned char *array, int size) return true; } return false; + case VIEW_CONVERT_EXPR: + case NON_LVALUE_EXPR: + return native_encode_initializer (TREE_OPERAND (init, 0), array, size); default: return native_encode_expr (init, array, size) == size; }