* corrected fix for endian differences in tcginnode

This commit is contained in:
Jonas Maebe 2003-05-23 19:52:28 +00:00
parent ae88588462
commit 25435fe881

View File

@ -595,10 +595,11 @@ implementation
else if left.nodetype=ordconstn then
begin
{ use location.register as scratch register here }
inc(right.location.reference.offset,tordconstnode(left).value shr 3);
{ adjust for endianess differences }
if (source_info.endian <> target_info.endian) then
right.location.reference.offset := right.location.reference.offset xor 3;
if (source_info.endian = target_info.endian) then
inc(right.location.reference.offset,tordconstnode(left).value shr 3)
else
{ adjust for endianess differences }
inc(right.location.reference.offset,(tordconstnode(left).value shr 3) xor 3);
cg.a_load_ref_reg(exprasmlist, OS_8, right.location.reference, location.register);
location_release(exprasmlist,right.location);
cg.a_op_const_reg(exprasmlist,OP_SHR, tordconstnode(left).value and 7,
@ -1124,7 +1125,10 @@ begin
end.
{
$Log$
Revision 1.33 2003-05-17 19:17:35 jonas
Revision 1.34 2003-05-23 19:52:28 jonas
* corrected fix for endian differences in tcginnode
Revision 1.33 2003/05/17 19:17:35 jonas
* fixed size setting of result location of innodes
Revision 1.32 2003/05/01 12:26:50 jonas