aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2000-11-19 17:25:59 -0800
committerRichard Henderson <rth@gcc.gnu.org>2000-11-19 17:25:59 -0800
commit3df188844eefbdf39417e026cd3b763282801878 (patch)
treec7f9433913abe0a942f2afbaf5b53ef772aabcd1 /gcc
parentcfd1c7ea39cd437ce827b193b4d920638111b2f7 (diff)
downloadgcc-3df188844eefbdf39417e026cd3b763282801878.zip
gcc-3df188844eefbdf39417e026cd3b763282801878.tar.gz
gcc-3df188844eefbdf39417e026cd3b763282801878.tar.bz2
dwarf2out.c (simple_type_size_in_bits): Handle a type with no computed size as size zero.
* dwarf2out.c (simple_type_size_in_bits): Handle a type with no computed size as size zero. (field_byte_offset): Likewise. From-SVN: r37578
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/dwarf2out.c28
2 files changed, 18 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9f291c2..13a4ba8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2000-11-19 Richard Henderson <rth@redhat.com>
+
+ * dwarf2out.c (simple_type_size_in_bits): Handle a type with
+ no computed size as size zero.
+ (field_byte_offset): Likewise.
+
2000-11-20 Joseph S. Myers <jsm28@cam.ac.uk>
* config.gcc: Fix another typo.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 6ddd982..3ec00b9 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -7790,17 +7790,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 (! host_integerp (type_size_tree, 1))
- return TYPE_ALIGN (type);
-
- return tree_low_cst (type_size_tree, 1);
- }
+ 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
@@ -7835,14 +7835,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 are variable, so
for now, when we see such things, we simply return 0. Someday, we may
@@ -7852,7 +7848,7 @@ field_byte_offset (decl)
bitpos_int = int_bit_position (decl);
- /* If we don't know the size of the field, pretend it's a full word. */
+ /* If we don't know the size of the field, pretend it's a full word. */
if (host_integerp (field_size_tree, 1))
field_size_in_bits = tree_low_cst (field_size_tree, 1);
else