* properly handle address and temp registers in return locations

git-svn-id: branches/hlcgllvm@26996 -
This commit is contained in:
Jonas Maebe 2014-03-06 21:41:12 +00:00
parent 6b7ed0234c
commit 752b6739a8

View File

@ -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: