mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-27 15:30:26 +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
|
||||
case retlocitem^.loc of
|
||||
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:
|
||||
include(regs_to_save_fpu,getsupreg(retlocitem^.register));
|
||||
LOC_MMREGISTER:
|
||||
@ -1092,10 +1101,16 @@ implementation
|
||||
begin
|
||||
case retlocitem^.loc of
|
||||
LOC_REGISTER:
|
||||
if getregtype(retlocitem^.register)=R_INTREGISTER then
|
||||
exclude(regs_to_save_int,getsupreg(retlocitem^.register))
|
||||
else
|
||||
exclude(regs_to_save_address,getsupreg(retlocitem^.register));
|
||||
case getregtype(retlocitem^.register) of
|
||||
R_INTREGISTER:
|
||||
exclude(regs_to_save_int,getsupreg(retlocitem^.register));
|
||||
R_ADDRESSREGISTER:
|
||||
exclude(regs_to_save_address,getsupreg(retlocitem^.register));
|
||||
R_TEMPREGISTER:
|
||||
;
|
||||
else
|
||||
internalerror(2014020103);
|
||||
end;
|
||||
LOC_FPUREGISTER:
|
||||
exclude(regs_to_save_fpu,getsupreg(retlocitem^.register));
|
||||
LOC_MMREGISTER:
|
||||
|
Loading…
Reference in New Issue
Block a user