@@ -34,7 +34,7 @@ void gen_load(const Type *type) {
3434 case TY_FIXNUM :
3535 case TY_PTR :
3636 {
37- bool u = ! is_fixnum (type ) || type -> fixnum . is_unsigned ;
37+ bool u = is_unsigned (type );
3838 switch (type_size (type )) {
3939 case 1 : ADD_CODE (u ? OP_I32_LOAD8_U : OP_I32_LOAD8_S , 0 , 0 ); break ;
4040 case 2 : ADD_CODE (u ? OP_I32_LOAD16_U : OP_I32_LOAD16_S , 1 , 0 ); break ;
@@ -79,7 +79,7 @@ void gen_store(const Type *type) {
7979static void gen_arith (enum ExprKind kind , const Type * type ) {
8080 assert (is_number (type ) || ptr_or_array (type ));
8181 int index = 0 ;
82- bool is_unsigned = is_fixnum (type ) && type -> fixnum . is_unsigned ;
82+ bool u = is_unsigned (type );
8383 if (is_flonum (type )) {
8484 assert (kind < EX_MOD );
8585 index = type -> flonum .kind >= FL_DOUBLE ? 3 : 2 ;
@@ -103,17 +103,17 @@ static void gen_arith(enum ExprKind kind, const Type *type) {
103103 };
104104
105105 assert (EX_ADD <= kind && kind <= EX_RSHIFT );
106- assert (kOpTable [is_unsigned ][index ][kind - EX_ADD ] != OP_NOP );
107- ADD_CODE (kOpTable [is_unsigned ][index ][kind - EX_ADD ]);
106+ assert (kOpTable [u ][index ][kind - EX_ADD ] != OP_NOP );
107+ ADD_CODE (kOpTable [u ][index ][kind - EX_ADD ]);
108108}
109109
110110static void gen_cast_to_i (const Type * dst , Type * src ) {
111111 switch (src -> kind ) {
112112 case TY_FIXNUM : case TY_PTR : case TY_FUNC :
113113 {
114114 size_t d = type_size (dst ), s = type_size (src );
115- bool du = dst -> kind != TY_FIXNUM || dst -> fixnum . is_unsigned ;
116- bool su = src -> kind != TY_FIXNUM || src -> fixnum . is_unsigned ;
115+ bool du = dst -> kind == TY_FUNC || is_unsigned ( dst ) ;
116+ bool su = src -> kind == TY_FUNC || is_unsigned ( src ) ;
117117 enum { I64TO32 = 1 , I32TO64 = 2 };
118118 switch ((d > I32_SIZE ? 2 : 0 ) + (s > I32_SIZE ? 1 : 0 )) {
119119 case I64TO32 : ADD_CODE (OP_I32_WRAP_I64 ); break ;
@@ -153,7 +153,7 @@ static void gen_cast_to_i(const Type *dst, Type *src) {
153153 };
154154 int d = type_size (dst );
155155 int index = (d > I32_SIZE ? 2 : 0 ) + (src -> flonum .kind >= FL_DOUBLE ? 1 : 0 );
156- bool du = ! is_fixnum (dst ) || dst -> fixnum . is_unsigned ;
156+ bool du = is_unsigned (dst );
157157 ADD_CODE (OpTable [du ][index ]);
158158 }
159159 break ;
@@ -171,7 +171,7 @@ static void gen_cast_to_f(const Type *dst, Type *src) {
171171 };
172172 int s = type_size (src );
173173 int index = (dst -> flonum .kind >= FL_DOUBLE ? 2 : 0 ) + (s > I32_SIZE ? 1 : 0 );
174- bool su = ! is_fixnum (src ) || src -> fixnum . is_unsigned ;
174+ bool su = is_unsigned (src );
175175 ADD_CODE (OpTable [su ][index ]);
176176 }
177177 break ;
0 commit comments