git-svn-id: branches/i8086@23791 -
@@ -435,14 +435,34 @@ implementation
{ load left operators in a register }
if is_signed(left.resultdef) then
begin
- opsize:=OS_SINT;
- opdef:=ossinttype
+ {$ifdef cpu16bitalu}
+ if left.resultdef.size > 2 then
+ begin
+ opsize:=OS_S32;
+ opdef:=s32inttype;
+ end
+ else
+ {$endif cpu16bitalu}
+ opsize:=OS_SINT;
+ opdef:=ossinttype
+ end;
end
else
- opsize:=OS_INT;
- opdef:=osuinttype;
- end;
+ opsize:=OS_32;
+ opdef:=u32inttype;
+ opsize:=OS_INT;
+ opdef:=osuinttype;
{$endif cpunodefaultint}
hlcg.location_force_reg(current_asmdata.CurrAsmList,left.location,left.resultdef,opdef,true);