* set expectloc correctly for far pointer comparison as well

git-svn-id: trunk@28217 -
This commit is contained in:
nickysn 2014-07-13 16:25:20 +00:00
parent 04234c733f
commit 200df7a136

View File

@ -39,6 +39,7 @@ interface
function first_addhugepointer: tnode;
function first_cmppointer: tnode; override;
function first_cmphugepointer: tnode;
function first_cmpfarpointer: tnode;
procedure second_addordinal; override;
procedure second_add64bit;override;
procedure second_addfarpointer;
@ -358,6 +359,8 @@ interface
begin
if is_hugepointer(left.resultdef) or is_hugepointer(right.resultdef) then
result:=first_cmphugepointer
else if is_farpointer(left.resultdef) or is_farpointer(right.resultdef) then
result:=first_cmpfarpointer
else
result:=inherited;
end;
@ -401,6 +404,22 @@ interface
end;
function ti8086addnode.first_cmpfarpointer: tnode;
begin
{ = and <> are handled as a 32-bit comparison }
if nodetype in [equaln,unequaln] then
begin
result:=nil;
expectloc:=LOC_JUMP;
end
else
begin
result:=nil;
expectloc:=LOC_FLAGS;
end;
end;
procedure ti8086addnode.second_addfarpointer;
var
tmpreg : tregister;