diff --git a/compiler/ncgutil.pas b/compiler/ncgutil.pas index 005c4ad155..f90f820658 100644 --- a/compiler/ncgutil.pas +++ b/compiler/ncgutil.pas @@ -436,6 +436,9 @@ implementation paramanager.freecgpara(list,paraloc1); { perform the fpc_pushexceptaddr call } pushexceptres:=hlcg.g_call_system_proc(list,pd,[@paraloc1,@paraloc2,@paraloc3],nil); + paraloc1.done; + paraloc2.done; + paraloc3.done; { get the result } location_reset(tmpresloc,LOC_REGISTER,def_cgsize(pushexceptres.def)); @@ -451,6 +454,7 @@ implementation paramanager.freecgpara(list,paraloc1); { perform the fpc_setjmp call } setjmpres:=hlcg.g_call_system_proc(list,pd,[@paraloc1],nil); + paraloc1.done; location_reset(tmpresloc,LOC_REGISTER,def_cgsize(setjmpres.def)); tmpresloc.register:=hlcg.getintregister(list,setjmpres.def); hlcg.gen_load_cgpara_loc(list,setjmpres.def,setjmpres,tmpresloc,true); @@ -459,9 +463,6 @@ implementation longjmp'd back here } hlcg.a_cmp_const_reg_label(list,setjmpres.def,OC_NE,0,tmpresloc.register,exceptlabel); setjmpres.resetiftemp; - paraloc1.done; - paraloc2.done; - paraloc3.done; end;