diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-12-07 00:31:01 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-12-07 00:31:01 +0000 |
commit | ad87de1ece2f52d260b582709751ab9f315ab349 (patch) | |
tree | ec80f8d1e46852ac1ba45aecdcda7201c302ac6f /gcc/mips-tfile.c | |
parent | 8098b1a5d828997acb2555106b3edccc0b43b661 (diff) | |
download | gcc-ad87de1ece2f52d260b582709751ab9f315ab349.tar.gz |
Merge from gcc-2.8
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16987 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/mips-tfile.c')
-rw-r--r-- | gcc/mips-tfile.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/gcc/mips-tfile.c b/gcc/mips-tfile.c index b87a8ac5e49..39f3bc61f1f 100644 --- a/gcc/mips-tfile.c +++ b/gcc/mips-tfile.c @@ -3294,14 +3294,22 @@ parse_def (name_start) } - t.extra_sizes = (tag_start != (char *) 0); + if (storage_class == sc_Bits) + { + t.bitfield = 1; + t.extra_sizes = 1; + } + else + t.extra_sizes = 0; + if (t.num_dims > 0) { - int diff = t.num_dims - t.num_sizes; + int num_real_sizes = t.num_sizes - t.extra_sizes; + int diff = t.num_dims - num_real_sizes; int i = t.num_dims - 1; int j; - if (t.num_sizes != 1 || diff < 0) + if (num_real_sizes != 1 || diff < 0) { error_line = __LINE__; saber_stop (); @@ -3312,7 +3320,6 @@ parse_def (name_start) and sizes were passed, creating extra sizes for multiply dimensioned arrays if not passed. */ - t.extra_sizes = 0; if (diff) { for (j = (sizeof (t.sizes) / sizeof (t.sizes[0])) - 1; j >= 0; j--) @@ -3329,14 +3336,6 @@ parse_def (name_start) } } - else if (symbol_type == st_Member && t.num_sizes - t.extra_sizes == 1) - { /* Is this a bitfield? This is indicated by a structure member - having a size field that isn't an array. */ - - t.bitfield = 1; - } - - /* Except for enumeration members & begin/ending of scopes, put the type word in the aux. symbol table. */ |