diff --git a/lang/cem/cemcom/eval.c b/lang/cem/cemcom/eval.c index f49e21bc4..5bb66bff8 100644 --- a/lang/cem/cemcom/eval.c +++ b/lang/cem/cemcom/eval.c @@ -482,7 +482,7 @@ EVAL(expr, val, code, true_label, false_label) if (gencode) { if (is_struct_or_union(tp->tp_fund)) { C_lfr(pointer_size); - load_block(tp->tp_size, word_align); + load_block(tp->tp_size, (int) word_size); } else C_lfr(ATW(tp->tp_size)); diff --git a/lang/cem/cemcom/struct.c b/lang/cem/cemcom/struct.c index 03f53348c..8e2c34de8 100644 --- a/lang/cem/cemcom/struct.c +++ b/lang/cem/cemcom/struct.c @@ -414,9 +414,9 @@ add_field(szp, fd, fdtpp, idf, stp) /* align this selector on the next boundary : the previous selector wasn't a bitfield. */ - field_offset = align(*szp, word_align); - *szp = field_offset + word_size; - stp->tp_align = lcm(stp->tp_align, word_align); + field_offset = align(*szp, int_align); + *szp = field_offset + int_size; + stp->tp_align = lcm(stp->tp_align, int_align); bits_declared = (arith)0; field_busy = 1; } @@ -424,9 +424,9 @@ add_field(szp, fd, fdtpp, idf, stp) if (fd->fd_width > bits_in_type - bits_declared) { /* field overflow: fetch next memory unit */ - field_offset = align(*szp, word_align); - *szp = field_offset + word_size; - stp->tp_align = lcm(stp->tp_align, word_align); + field_offset = align(*szp, int_align); + *szp = field_offset + int_size; + stp->tp_align = lcm(stp->tp_align, int_align); bits_declared = fd->fd_width; } else