aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-07-15 18:39:27 +0000
committerRichard Stallman <rms@gnu.org>1992-07-15 18:39:27 +0000
commite0b382b17ae011b19fa2cda8201e2588a910632e (patch)
treef43c06beb436626c1d852a4e7fa7084c68cb501a
parent6cb72a7d5cae9ca6f616e9784055d029bfe0d67a (diff)
downloadgcc-e0b382b17ae011b19fa2cda8201e2588a910632e.zip
gcc-e0b382b17ae011b19fa2cda8201e2588a910632e.tar.gz
gcc-e0b382b17ae011b19fa2cda8201e2588a910632e.tar.bz2
(layout_record): Handle NULL dsize.
From-SVN: r1592
-rw-r--r--gcc/stor-layout.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c
index 7c4ef96..e220284 100644
--- a/gcc/stor-layout.c
+++ b/gcc/stor-layout.c
@@ -430,7 +430,12 @@ layout_record (rec)
{
register tree dsize = DECL_SIZE (field);
- if (TREE_CODE (dsize) == INTEGER_CST)
+ /* This can happen when we have an invalid nested struct definition,
+ such as struct j { struct j { int i; } }. The error message is
+ printed in finish_struct. */
+ if (dsize == 0)
+ /* Do nothing. */;
+ else if (TREE_CODE (dsize) == INTEGER_CST)
const_size += TREE_INT_CST_LOW (dsize);
else
{