summaryrefslogtreecommitdiff
path: root/gcc/mips-tfile.c
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1997-12-07 00:31:01 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1997-12-07 00:31:01 +0000
commitad87de1ece2f52d260b582709751ab9f315ab349 (patch)
treeec80f8d1e46852ac1ba45aecdcda7201c302ac6f /gcc/mips-tfile.c
parent8098b1a5d828997acb2555106b3edccc0b43b661 (diff)
downloadgcc-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.c23
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. */