mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-04 18:50:37 +02:00
* properly handle address and temp registers in return locations
git-svn-id: branches/hlcgllvm@26996 -
This commit is contained in:
parent
6b7ed0234c
commit
752b6739a8
@ -830,7 +830,16 @@ implementation
|
|||||||
begin
|
begin
|
||||||
case retlocitem^.loc of
|
case retlocitem^.loc of
|
||||||
LOC_REGISTER:
|
LOC_REGISTER:
|
||||||
include(regs_to_save_int,getsupreg(retlocitem^.register));
|
case getregtype(retlocitem^.register) of
|
||||||
|
R_INTREGISTER:
|
||||||
|
include(regs_to_save_int,getsupreg(retlocitem^.register));
|
||||||
|
R_ADDRESSREGISTER:
|
||||||
|
include(regs_to_save_address,getsupreg(retlocitem^.register));
|
||||||
|
R_TEMPREGISTER:
|
||||||
|
;
|
||||||
|
else
|
||||||
|
internalerror(2014020102);
|
||||||
|
end;
|
||||||
LOC_FPUREGISTER:
|
LOC_FPUREGISTER:
|
||||||
include(regs_to_save_fpu,getsupreg(retlocitem^.register));
|
include(regs_to_save_fpu,getsupreg(retlocitem^.register));
|
||||||
LOC_MMREGISTER:
|
LOC_MMREGISTER:
|
||||||
@ -1092,10 +1101,16 @@ implementation
|
|||||||
begin
|
begin
|
||||||
case retlocitem^.loc of
|
case retlocitem^.loc of
|
||||||
LOC_REGISTER:
|
LOC_REGISTER:
|
||||||
if getregtype(retlocitem^.register)=R_INTREGISTER then
|
case getregtype(retlocitem^.register) of
|
||||||
exclude(regs_to_save_int,getsupreg(retlocitem^.register))
|
R_INTREGISTER:
|
||||||
else
|
exclude(regs_to_save_int,getsupreg(retlocitem^.register));
|
||||||
exclude(regs_to_save_address,getsupreg(retlocitem^.register));
|
R_ADDRESSREGISTER:
|
||||||
|
exclude(regs_to_save_address,getsupreg(retlocitem^.register));
|
||||||
|
R_TEMPREGISTER:
|
||||||
|
;
|
||||||
|
else
|
||||||
|
internalerror(2014020103);
|
||||||
|
end;
|
||||||
LOC_FPUREGISTER:
|
LOC_FPUREGISTER:
|
||||||
exclude(regs_to_save_fpu,getsupreg(retlocitem^.register));
|
exclude(regs_to_save_fpu,getsupreg(retlocitem^.register));
|
||||||
LOC_MMREGISTER:
|
LOC_MMREGISTER:
|
||||||
|
Loading…
Reference in New Issue
Block a user