some arith variables changed into int
This commit is contained in:
parent
c6134a1f59
commit
01b937d82e
1 changed files with 9 additions and 5 deletions
|
@ -325,10 +325,14 @@ add_field(szp, fd, fdtpp, idf, stp)
|
||||||
an explicit alignment is given, a new address is needed.
|
an explicit alignment is given, a new address is needed.
|
||||||
Note that the fields are packed into machine words.
|
Note that the fields are packed into machine words.
|
||||||
*/
|
*/
|
||||||
long bits_in_type = word_size * 8;
|
#ifdef word_size
|
||||||
|
#define bits_in_type ((int)(8*word_size))
|
||||||
|
#else
|
||||||
|
int bits_in_type = (int)word_size * 8;
|
||||||
|
#endif
|
||||||
static int field_offset = (arith)0;
|
static int field_offset = (arith)0;
|
||||||
static struct type *current_struct = 0;
|
static struct type *current_struct = 0;
|
||||||
static long bits_declared; /* nr of bits used in *field_offset */
|
static int bits_declared; /* nr of bits used in *field_offset */
|
||||||
|
|
||||||
if (current_struct != stp) {
|
if (current_struct != stp) {
|
||||||
/* This struct differs from the last one
|
/* This struct differs from the last one
|
||||||
|
@ -354,7 +358,7 @@ add_field(szp, fd, fdtpp, idf, stp)
|
||||||
strict("non-portable field type");
|
strict("non-portable field type");
|
||||||
case INT:
|
case INT:
|
||||||
/* right type; size OK? */
|
/* right type; size OK? */
|
||||||
if ((*fdtpp)->tp_size > word_size) {
|
if ((int) (*fdtpp)->tp_size > (int) word_size) {
|
||||||
error("bit field type %s does not fit in a word",
|
error("bit field type %s does not fit in a word",
|
||||||
symbol2str((*fdtpp)->tp_fund));
|
symbol2str((*fdtpp)->tp_fund));
|
||||||
*fdtpp = error_type;
|
*fdtpp = error_type;
|
||||||
|
@ -377,7 +381,7 @@ add_field(szp, fd, fdtpp, idf, stp)
|
||||||
field_offset = align(*szp, int_align);
|
field_offset = align(*szp, int_align);
|
||||||
*szp = field_offset + int_size;
|
*szp = field_offset + int_size;
|
||||||
stp->tp_align = lcm(stp->tp_align, int_align);
|
stp->tp_align = lcm(stp->tp_align, int_align);
|
||||||
bits_declared = (arith)0;
|
bits_declared = 0;
|
||||||
field_busy = 1;
|
field_busy = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -419,7 +423,7 @@ add_field(szp, fd, fdtpp, idf, stp)
|
||||||
else /* adjust the field at the left */
|
else /* adjust the field at the left */
|
||||||
fd->fd_shift = bits_in_type - bits_declared;
|
fd->fd_shift = bits_in_type - bits_declared;
|
||||||
|
|
||||||
if (stp->tp_fund == UNION) bits_declared = (arith)0;
|
if (stp->tp_fund == UNION) bits_declared = 0;
|
||||||
|
|
||||||
return field_offset;
|
return field_offset;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue