|
@@ -736,8 +736,15 @@ begin
|
|
|
a_load_store(list, op, reg, ref2);
|
|
|
{ sign extend shortint if necessary, since there is no
|
|
|
load instruction that does that automatically (JM) }
|
|
|
- if fromsize = OS_S8 then
|
|
|
- list.concat(taicpu.op_reg_reg(A_EXTSB, reg, reg));
|
|
|
+ if (fromsize = OS_S8) then
|
|
|
+ begin
|
|
|
+ list.concat(taicpu.op_reg_reg(A_EXTSB, reg, reg));
|
|
|
+ if (tosize in [OS_16,OS_32]) then
|
|
|
+ a_load_reg_reg(list,fromsize,tosize,reg,reg);
|
|
|
+ end
|
|
|
+ else if (fromsize = OS_S16) and
|
|
|
+ (tosize = OS_32) then
|
|
|
+ a_load_reg_reg(list,fromsize,tosize,reg,reg);
|
|
|
end;
|
|
|
|
|
|
procedure tcgppc.a_load_reg_reg(list: TAsmList; fromsize, tosize: tcgsize;
|