diff options
author | Richard Stallman <rms@gnu.org> | 1992-07-15 18:39:27 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-07-15 18:39:27 +0000 |
commit | e0b382b17ae011b19fa2cda8201e2588a910632e (patch) | |
tree | f43c06beb436626c1d852a4e7fa7084c68cb501a | |
parent | 6cb72a7d5cae9ca6f616e9784055d029bfe0d67a (diff) | |
download | gcc-e0b382b17ae011b19fa2cda8201e2588a910632e.zip gcc-e0b382b17ae011b19fa2cda8201e2588a910632e.tar.gz gcc-e0b382b17ae011b19fa2cda8201e2588a910632e.tar.bz2 |
(layout_record): Handle NULL dsize.
From-SVN: r1592
-rw-r--r-- | gcc/stor-layout.c | 7 |
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 { |