diff --git a/compiler/cgobj.pas b/compiler/cgobj.pas index bbcabadcdf..e27808150e 100644 --- a/compiler/cgobj.pas +++ b/compiler/cgobj.pas @@ -1245,7 +1245,8 @@ implementation begin hreg:=paraloc.register; cgsize:=paraloc.size; - if paraloc.shiftval>0 then + if (paraloc.shiftval>0) and + not ((target_info.endian=endian_big) and (sizeleft in [3,5,6,7])) then a_op_const_reg_reg(list,OP_SHL,OS_INT,paraloc.shiftval,paraloc.register,paraloc.register) { in case the original size was 3 or 5/6/7 bytes, the value was shifted to the top of the to 4 resp. 8 byte register on the