Commit 21bc13c9 by Richard Henderson Committed by Richard Henderson

dwarf.h (FMT_CODE): Adjust argument order; fix mapping to dwarf_subscr_data_formats bits.

        * dwarf.h (FMT_CODE): Adjust argument order; fix mapping to
        dwarf_subscr_data_formats bits.
        * dwarfout.c (simple_type_size_in_bits): Handle a type with
        no computed size as size zero.
        (field_byte_offset): Likewise.
        (subscript_data_attribute): Handle a range with no upper bound.

From-SVN: r37592
parent 5e90dd71
2000-11-20 Richard Henderson <rth@redhat.com>
* dwarf.h (FMT_CODE): Adjust argument order; fix mapping to
dwarf_subscr_data_formats bits.
* dwarfout.c (simple_type_size_in_bits): Handle a type with
no computed size as size zero.
(field_byte_offset): Likewise.
(subscript_data_attribute): Handle a range with no upper bound.
2000-11-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* gansidecl.h (const): Check __STDC__ before undef'ing `const'.
......
......@@ -285,10 +285,10 @@ enum dwarf_subscr_data_formats {
/* Derived from above for ease of use. */
#define FMT_CODE(_FUNDAMENTAL_TYPE_P, _UB_CONST_P, _LB_CONST_P) \
#define FMT_CODE(_FUNDAMENTAL_TYPE_P, _LB_CONST_P, _UB_CONST_P) \
(((_FUNDAMENTAL_TYPE_P) ? 0 : 4) \
| ((_UB_CONST_P) ? 0 : 2) \
| ((_LB_CONST_P) ? 0 : 1))
| ((_LB_CONST_P) ? 0 : 2) \
| ((_UB_CONST_P) ? 0 : 1))
/* Source language names and codes. */
......
......@@ -1886,17 +1886,17 @@ static inline unsigned HOST_WIDE_INT
simple_type_size_in_bits (type)
register tree type;
{
tree type_size_tree;
if (TREE_CODE (type) == ERROR_MARK)
return BITS_PER_WORD;
else
{
register tree type_size_tree = TYPE_SIZE (type);
type_size_tree = TYPE_SIZE (type);
if (type_size_tree == NULL_TREE)
return 0;
if (! host_integerp (type_size_tree, 1))
return TYPE_ALIGN (type);
return tree_low_cst (type_size_tree, 1);
}
}
/* Given a pointer to what is assumed to be a FIELD_DECL node, compute and
......@@ -1931,14 +1931,10 @@ field_byte_offset (decl)
type = field_type (decl);
field_size_tree = DECL_SIZE (decl);
/* If there was an error, the size could be zero. */
/* The size could be unspecified if there was an error, or for
a flexible array member. */
if (! field_size_tree)
{
if (errorcount)
return 0;
abort ();
}
field_size_tree = bitsize_zero_node;
/* We cannot yet cope with fields whose positions or sizes are variable,
so for now, when we see such things, we simply return 0. Someday,
......@@ -2533,28 +2529,26 @@ subscript_data_attribute (type)
register tree upper = TYPE_MAX_VALUE (domain);
/* Handle only fundamental types as index types for now. */
if (! type_is_fundamental (domain))
abort ();
/* Output the representation format byte for this dimension. */
ASM_OUTPUT_DWARF_FMT_BYTE (asm_out_file,
FMT_CODE (1, TREE_CODE (lower) == INTEGER_CST,
(upper && TREE_CODE (upper) == INTEGER_CST)));
upper && TREE_CODE (upper) == INTEGER_CST));
/* Output the index type for this dimension. */
ASM_OUTPUT_DWARF_FUND_TYPE (asm_out_file,
fundamental_type_code (domain));
/* Output the representation for the lower bound. */
output_bound_representation (lower, dimension_number, 'l');
/* Output the representation for the upper bound. */
if (upper)
output_bound_representation (upper, dimension_number, 'u');
else
ASM_OUTPUT_DWARF_DATA2 (asm_out_file, 0);
}
else
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment