diff --git a/compiler/ncgcal.pas b/compiler/ncgcal.pas index d81e764269..a32a1e4778 100644 --- a/compiler/ncgcal.pas +++ b/compiler/ncgcal.pas @@ -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: