squeezing for MINIX & bug fix in dumpidf
This commit is contained in:
parent
eab3243973
commit
43b01a70a0
|
@ -364,7 +364,7 @@ int2float(expp, tp)
|
|||
converted to the floating type tp.
|
||||
*/
|
||||
register struct expr *exp = *expp;
|
||||
int uns = (*expp)->ex_type->tp_unsigned;
|
||||
int uns = exp->ex_type->tp_unsigned;
|
||||
|
||||
if (is_cp_cst(exp)) {
|
||||
*expp = new_expr();
|
||||
|
@ -596,19 +596,19 @@ field2arith(expp)
|
|||
(*expp)->ex_type = word_type;
|
||||
|
||||
if (tp->tp_unsigned) { /* don't worry about the sign bit */
|
||||
if (fd->fd_width >= 8 * word_size)
|
||||
if (fd->fd_width >= 8 * (int)word_size)
|
||||
(*expp)->ex_type = uword_type;
|
||||
ch3bin(expp, RIGHT, intexpr((arith)fd->fd_shift, INT));
|
||||
ch3bin(expp, '&', intexpr(fd->fd_mask, INT));
|
||||
}
|
||||
else { /* take care of the sign bit: sign extend if needed */
|
||||
arith bits_in_type = word_size * 8;
|
||||
arith other_bits = (int)word_size * 8 - fd->fd_width;
|
||||
|
||||
ch3bin(expp, LEFT,
|
||||
intexpr(bits_in_type - fd->fd_width - fd->fd_shift,
|
||||
intexpr(other_bits - fd->fd_shift,
|
||||
INT)
|
||||
);
|
||||
ch3bin(expp, RIGHT, intexpr(bits_in_type - fd->fd_width, INT));
|
||||
ch3bin(expp, RIGHT, intexpr(other_bits, INT));
|
||||
}
|
||||
}
|
||||
#endif NOBITFIELD
|
||||
|
|
|
@ -7,4 +7,8 @@
|
|||
|
||||
#include "sizes.h"
|
||||
|
||||
#define ATW(arg) ((((arg) + word_size - 1) / word_size) * word_size)
|
||||
#if word_size==2 || word_size==4
|
||||
#define ATW(arg) (((arg) + (word_size - 1)) & ~ (word_size - 1))
|
||||
#else
|
||||
#define ATW(arg) ((((arg) + ((int)word_size - 1)) / word_size) * word_size)
|
||||
#endif
|
||||
|
|
|
@ -326,7 +326,7 @@ dump_type(tp)
|
|||
ops = 0;
|
||||
break;
|
||||
}
|
||||
if (!ops) tp = tp->tp_up;
|
||||
if (ops) tp = tp->tp_up;
|
||||
}
|
||||
dumplevel--;
|
||||
}
|
||||
|
|
|
@ -1019,10 +1019,10 @@ load_val(expr, rlval)
|
|||
load_cst(val, siz)
|
||||
arith val, siz;
|
||||
{
|
||||
if (siz <= word_size)
|
||||
if ((int)siz <= (int)word_size)
|
||||
C_loc(val);
|
||||
else
|
||||
if (siz == dword_size)
|
||||
if ((int)siz == (int)dword_size)
|
||||
C_ldc(val);
|
||||
else {
|
||||
label datlab;
|
||||
|
|
|
@ -53,7 +53,7 @@ eval_field(expr, code)
|
|||
struct type *tp = leftop->ex_type->tp_up;
|
||||
arith tmpvar = 0;
|
||||
struct type *atype = ( tp->tp_unsigned
|
||||
&& fd->fd_width >= 8 * word_size)
|
||||
&& fd->fd_width >= 8 * (int)word_size)
|
||||
? uword_type
|
||||
: word_type;
|
||||
|
||||
|
@ -89,7 +89,7 @@ eval_field(expr, code)
|
|||
C_and(word_size);
|
||||
}
|
||||
else {
|
||||
arith sft = word_size * 8 - fd->fd_width;
|
||||
arith sft = (int)word_size * 8 - fd->fd_width;
|
||||
C_loc(sft - fd->fd_shift);
|
||||
C_sli(word_size);
|
||||
C_loc(sft);
|
||||
|
@ -118,7 +118,7 @@ eval_field(expr, code)
|
|||
retrieval) is on top of stack.
|
||||
*/
|
||||
if (tp->tp_unsigned == 0) { /* sign extension */
|
||||
register arith shift = word_size * 8 - fd->fd_width;
|
||||
register arith shift = (int)word_size * 8 - fd->fd_width;
|
||||
|
||||
C_loc(shift);
|
||||
C_sli(word_size);
|
||||
|
|
|
@ -23,9 +23,9 @@ enter_label(idf, defining)
|
|||
scope, i.e., on the lowest possible level.
|
||||
If defining, the label comes from a label statement.
|
||||
*/
|
||||
if (idf->id_def) {
|
||||
register struct def *def = idf->id_def;
|
||||
|
||||
register struct def *def = idf->id_def;
|
||||
|
||||
if (def) {
|
||||
if (def->df_sc == LABEL) {
|
||||
if (defining && def->df_initialized)
|
||||
error("redeclaration of label %s",
|
||||
|
@ -41,11 +41,12 @@ enter_label(idf, defining)
|
|||
}
|
||||
else {
|
||||
add_def(idf, LABEL, label_type, L_LOCAL);
|
||||
def = idf->id_def;
|
||||
}
|
||||
if (idf->id_def->df_address == 0)
|
||||
idf->id_def->df_address = (arith) text_label();
|
||||
if (def->df_address == 0)
|
||||
def->df_address = (arith) text_label();
|
||||
if (defining)
|
||||
idf->id_def->df_initialized = 1;
|
||||
def->df_initialized = 1;
|
||||
}
|
||||
|
||||
unstack_label(idf)
|
||||
|
|
Loading…
Reference in a new issue