mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 11:19:58 +02:00
* override tcgvecnode.update_reference_reg_mul for i8086 and add code that
preserves the reference segment (because reference_reset_base, which is sometimes used by the base method, kills the segment) git-svn-id: trunk@27480 -
This commit is contained in:
parent
7a873f495d
commit
f00f7d6ee7
@ -41,6 +41,11 @@ interface
|
|||||||
procedure pass_generate_code;override;
|
procedure pass_generate_code;override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ tx86vecnode doesn't work for i8086, so we inherit tcgvecnode }
|
||||||
|
ti8086vecnode = class(tcgvecnode)
|
||||||
|
procedure update_reference_reg_mul(maybe_const_reg:tregister;l:aint);override;
|
||||||
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
@ -161,10 +166,21 @@ implementation
|
|||||||
inherited pass_generate_code;
|
inherited pass_generate_code;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{*****************************************************************************
|
||||||
|
TI8086VECNODE
|
||||||
|
*****************************************************************************}
|
||||||
|
|
||||||
|
procedure ti8086vecnode.update_reference_reg_mul(maybe_const_reg:tregister;l:aint);
|
||||||
|
var
|
||||||
|
saveseg: TRegister;
|
||||||
|
begin
|
||||||
|
saveseg:=location.reference.segment;
|
||||||
|
inherited update_reference_reg_mul(maybe_const_reg,l);
|
||||||
|
location.reference.segment:=saveseg;
|
||||||
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
caddrnode:=ti8086addrnode;
|
caddrnode:=ti8086addrnode;
|
||||||
cderefnode:=ti8086derefnode;
|
cderefnode:=ti8086derefnode;
|
||||||
{ override tx86vecnode, which doesn't work for i8086 }
|
cvecnode:=ti8086vecnode;
|
||||||
cvecnode:=tcgvecnode;
|
|
||||||
end.
|
end.
|
||||||
|
Loading…
Reference in New Issue
Block a user