* fixed set+range on big endian systems

git-svn-id: trunk@6704 -
This commit is contained in:
florian 2007-03-03 19:51:34 +00:00
parent cb746ec830
commit c3f22aae94

View File

@ -1086,7 +1086,17 @@ implementation
inserttypeconv(right,tsetdef(ld).elementdef); inserttypeconv(right,tsetdef(ld).elementdef);
end end
else else
CGMessage(type_e_mismatch) CGMessage(type_e_mismatch);
{ ranges require normsets on big endian system }
if (target_info.endian=endian_big) and
(tsetdef(ld).size<>32) and
(rt=setelementn) and
assigned(tsetelementnode(right).right) then
begin
{ generate a temporary normset def, it'll be destroyed
when the symtable is unloaded }
inserttypeconv(left,tsetdef.create(tsetdef(ld).elementdef,255));
end;
end end
else else
begin begin
@ -1102,8 +1112,7 @@ implementation
else else
inserttypeconv(right,left.resultdef); inserttypeconv(right,left.resultdef);
end; end;
end; end;
end end
{ pointer comparision and subtraction } { pointer comparision and subtraction }
else if ( else if (
@ -2447,6 +2456,7 @@ implementation
ccallparanode.create(ctemprefnode.create(temp), ccallparanode.create(ctemprefnode.create(temp),
ccallparanode.create(left,nil))))) ccallparanode.create(left,nil)))))
); );
{ remove reused parts from original node } { remove reused parts from original node }
tsetelementnode(right).right:=nil; tsetelementnode(right).right:=nil;
tsetelementnode(right).left:=nil; tsetelementnode(right).left:=nil;