+2006-04-28 Roger Sayle <roger@eyesopen.com>
+
+ PR c/25309
+ * c-typeck.c (struct spelling): Make I an unsigned HOST_WIDE_INT.
+ (push_array_bounds): Delete prototype. Change BOUNDS argument to
+ an unsigned HOST_WIDE_INT.
+ (print_spelling): Use HOST_WIDE_INT_PRINT_UNSIGNED to output the
+ array index.
+ (really_start_incremental_init): No need to call convert because
+ bitsize_zero_node is already of type bitsizetype.
+ (push_init_level): Extract the value of constructor_index as an
+ unsigned HOST_WIDE_INT quantity, using tree_low_cst.
+ (process_init_element): Likewise.
+
2006-04-28 Joseph S. Myers <joseph@codesourcery.com>
* gcc.c (process_command): Add program name to GCC_EXEC_PREFIX
static tree valid_compound_expr_initializer (tree, tree);
static void push_string (const char *);
static void push_member_name (tree);
-static void push_array_bounds (int);
static int spelling_length (void);
static char *print_spelling (char *);
static void warning_init (const char *);
int kind;
union
{
- int i;
+ unsigned HOST_WIDE_INT i;
const char *s;
} u;
};
/* Push an array bounds on the stack. Printed as [BOUNDS]. */
static void
-push_array_bounds (int bounds)
+push_array_bounds (unsigned HOST_WIDE_INT bounds)
{
PUSH_SPELLING (SPELLING_BOUNDS, bounds, u.i);
}
for (p = spelling_base; p < spelling; p++)
if (p->kind == SPELLING_BOUNDS)
{
- sprintf (d, "[%d]", p->u.i);
+ sprintf (d, "[" HOST_WIDE_INT_PRINT_UNSIGNED "]", p->u.i);
d += strlen (d);
}
else
/* Vectors are like simple fixed-size arrays. */
constructor_max_index =
build_int_cst (NULL_TREE, TYPE_VECTOR_SUBPARTS (constructor_type) - 1);
- constructor_index = convert (bitsizetype, bitsize_zero_node);
+ constructor_index = bitsize_zero_node;
constructor_unfilled_index = constructor_index;
}
else
else if (TREE_CODE (constructor_type) == ARRAY_TYPE)
{
constructor_type = TREE_TYPE (constructor_type);
- push_array_bounds (tree_low_cst (constructor_index, 0));
+ push_array_bounds (tree_low_cst (constructor_index, 1));
constructor_depth++;
}
/* Now output the actual element. */
if (value.value)
{
- push_array_bounds (tree_low_cst (constructor_index, 0));
+ push_array_bounds (tree_low_cst (constructor_index, 1));
output_init_element (value.value, strict_string,
elttype, constructor_index, 1);
RESTORE_SPELLING_DEPTH (constructor_depth);