mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-26 13:31:27 +01:00
* 16/8-bit ALU fixes in ncgutil.gen_alloc_regvar
git-svn-id: trunk@25760 -
This commit is contained in:
parent
3b99974847
commit
d1f0eea902
@ -790,21 +790,63 @@ implementation
|
|||||||
begin
|
begin
|
||||||
{ Allocate register already, to prevent first allocation to be
|
{ Allocate register already, to prevent first allocation to be
|
||||||
inside a loop }
|
inside a loop }
|
||||||
{$ifdef cpu64bitalu}
|
{$if defined(cpu64bitalu)}
|
||||||
if sym.initialloc.size in [OS_128,OS_S128] then
|
if sym.initialloc.size in [OS_128,OS_S128] then
|
||||||
begin
|
begin
|
||||||
cg.a_reg_sync(list,sym.initialloc.register128.reglo);
|
cg.a_reg_sync(list,sym.initialloc.register128.reglo);
|
||||||
cg.a_reg_sync(list,sym.initialloc.register128.reghi);
|
cg.a_reg_sync(list,sym.initialloc.register128.reghi);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
{$else cpu64bitalu}
|
{$elseif defined(cpu32bitalu)}
|
||||||
if sym.initialloc.size in [OS_64,OS_S64] then
|
if sym.initialloc.size in [OS_64,OS_S64] then
|
||||||
begin
|
begin
|
||||||
cg.a_reg_sync(list,sym.initialloc.register64.reglo);
|
cg.a_reg_sync(list,sym.initialloc.register64.reglo);
|
||||||
cg.a_reg_sync(list,sym.initialloc.register64.reghi);
|
cg.a_reg_sync(list,sym.initialloc.register64.reghi);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
{$endif cpu64bitalu}
|
{$elseif defined(cpu16bitalu)}
|
||||||
|
if sym.initialloc.size in [OS_64,OS_S64] then
|
||||||
|
begin
|
||||||
|
cg.a_reg_sync(list,sym.initialloc.register64.reglo);
|
||||||
|
cg.a_reg_sync(list,GetNextReg(sym.initialloc.register64.reglo));
|
||||||
|
cg.a_reg_sync(list,sym.initialloc.register64.reghi);
|
||||||
|
cg.a_reg_sync(list,GetNextReg(sym.initialloc.register64.reghi));
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if sym.initialloc.size in [OS_32,OS_S32] then
|
||||||
|
begin
|
||||||
|
cg.a_reg_sync(list,sym.initialloc.register);
|
||||||
|
cg.a_reg_sync(list,GetNextReg(sym.initialloc.register));
|
||||||
|
end
|
||||||
|
else
|
||||||
|
{$elseif defined(cpu8bitalu)}
|
||||||
|
if sym.initialloc.size in [OS_64,OS_S64] then
|
||||||
|
begin
|
||||||
|
cg.a_reg_sync(list,sym.initialloc.register64.reglo);
|
||||||
|
cg.a_reg_sync(list,GetNextReg(sym.initialloc.register64.reglo));
|
||||||
|
cg.a_reg_sync(list,GetNextReg(GetNextReg(sym.initialloc.register64.reglo)));
|
||||||
|
cg.a_reg_sync(list,GetNextReg(GetNextReg(GetNextReg(sym.initialloc.register64.reglo))));
|
||||||
|
cg.a_reg_sync(list,sym.initialloc.register64.reghi);
|
||||||
|
cg.a_reg_sync(list,GetNextReg(sym.initialloc.register64.reghi));
|
||||||
|
cg.a_reg_sync(list,GetNextReg(GetNextReg(sym.initialloc.register64.reghi)));
|
||||||
|
cg.a_reg_sync(list,GetNextReg(GetNextReg(GetNextReg(sym.initialloc.register64.reghi))));
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if sym.initialloc.size in [OS_32,OS_S32] then
|
||||||
|
begin
|
||||||
|
cg.a_reg_sync(list,sym.initialloc.register);
|
||||||
|
cg.a_reg_sync(list,GetNextReg(sym.initialloc.register));
|
||||||
|
cg.a_reg_sync(list,GetNextReg(GetNextReg(sym.initialloc.register)));
|
||||||
|
cg.a_reg_sync(list,GetNextReg(GetNextReg(GetNextReg(sym.initialloc.register))));
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if sym.initialloc.size in [OS_16,OS_S16] then
|
||||||
|
begin
|
||||||
|
cg.a_reg_sync(list,sym.initialloc.register);
|
||||||
|
cg.a_reg_sync(list,GetNextReg(sym.initialloc.register));
|
||||||
|
end
|
||||||
|
else
|
||||||
|
{$endif}
|
||||||
cg.a_reg_sync(list,sym.initialloc.register);
|
cg.a_reg_sync(list,sym.initialloc.register);
|
||||||
end;
|
end;
|
||||||
sym.localloc:=sym.initialloc;
|
sym.localloc:=sym.initialloc;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user