mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-01 08:42:33 +02:00
* set expectloc correctly for far pointer comparison as well
git-svn-id: trunk@28217 -
This commit is contained in:
parent
04234c733f
commit
200df7a136
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user