From 8311a11f170297cb47767a206b1ba852d9ae7b26 Mon Sep 17 00:00:00 2001 From: Per Bothner Date: Wed, 5 Jun 1996 12:55:01 -0700 Subject: [PATCH] * varasm.c (output_constructor): Handle RANGE_EXPR in array index. From-SVN: r12165 --- gcc/varasm.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/gcc/varasm.c b/gcc/varasm.c index 31045fca19df..08399f227949 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -3895,7 +3895,26 @@ output_constructor (exp, size) if (val != 0) STRIP_NOPS (val); - if (field == 0 || !DECL_BIT_FIELD (field)) + if (index && TREE_CODE (index) == RANGE_EXPR) + { + register int fieldsize + = int_size_in_bytes (TREE_TYPE (TREE_TYPE (exp))); + HOST_WIDE_INT lo_index = TREE_INT_CST_LOW (TREE_OPERAND (index, 0)); + HOST_WIDE_INT hi_index = TREE_INT_CST_LOW (TREE_OPERAND (index, 1)); + HOST_WIDE_INT index; + for (index = lo_index; index <= hi_index; index++) + { + /* Output the element's initial value. */ + if (val == 0) + assemble_zeros (fieldsize); + else + output_constant (val, fieldsize); + + /* Count its size. */ + total_bytes += fieldsize; + } + } + else if (field == 0 || !DECL_BIT_FIELD (field)) { /* An element that is not a bit-field. */ -- 2.43.5