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