* allocate registers properly before icall

* use emit_mov to load registers before icall

git-svn-id: trunk@30758 -
This commit is contained in:
florian 2015-05-02 08:02:17 +00:00
parent 7dd1d6aa77
commit 9a5b458d4e

View File

@ -402,12 +402,12 @@ unit cgcpu;
procedure tcgavr.a_call_reg(list : TAsmList;reg: tregister);
begin
a_reg_alloc(list,NR_ZLO);
emit_mov(list,NR_ZLO,reg);
a_reg_alloc(list,NR_ZHI);
list.concat(taicpu.op_reg_reg(A_MOV,NR_ZLO,reg));
list.concat(taicpu.op_reg_reg(A_MOV,NR_ZHI,GetHigh(reg)));
emit_mov(list,NR_ZHI,GetHigh(reg));
list.concat(taicpu.op_none(A_ICALL));
a_reg_dealloc(list,NR_ZLO);
a_reg_dealloc(list,NR_ZHI);
a_reg_dealloc(list,NR_ZLO);
include(current_procinfo.flags,pi_do_call);
end;