From 0b1069b6ab5f5016fb76eeaaeab1f2ff72e9e312 Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Wed, 4 Feb 2004 18:45:29 +0000 Subject: [PATCH] + some more usage of register temps --- compiler/ncgbas.pas | 19 ++++++++++--------- compiler/ninl.pas | 7 +++++-- compiler/pinline.pas | 7 +++++-- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/compiler/ncgbas.pas b/compiler/ncgbas.pas index 335d443600..d0ec9c52c4 100644 --- a/compiler/ncgbas.pas +++ b/compiler/ncgbas.pas @@ -444,17 +444,15 @@ interface LOC_CREGISTER, LOC_REGISTER: begin + { make sure the register allocator doesn't reuse the } + { register e.g. in the middle of a loop } + cg.a_load_reg_reg(exprasmlist,OS_INT,OS_INT,tempinfo^.loc.reg, + tempinfo^.loc.reg); if release_to_normal then tempinfo^.loc.loc := LOC_REGISTER else - begin - { make sure the register allocator doesn't reuse the } - { register e.g. in the middle of a loop } - cg.a_load_reg_reg(exprasmlist,OS_INT,OS_INT,tempinfo^.loc.reg, - tempinfo^.loc.reg); - { !!tell rgobj this register is no longer a regvar!! } - cg.ungetregister(exprasmlist,tempinfo^.loc.reg); - end; + { !!tell rgobj this register is no longer a regvar!! } + cg.ungetregister(exprasmlist,tempinfo^.loc.reg); end; end; end; @@ -471,7 +469,10 @@ begin end. { $Log$ - Revision 1.54 2004-02-03 19:48:06 jonas + Revision 1.55 2004-02-04 18:45:29 jonas + + some more usage of register temps + + Revision 1.54 2004/02/03 19:48:06 jonas * fixed and re-enabled temps in registers Revision 1.53 2004/02/03 17:55:50 jonas diff --git a/compiler/ninl.pas b/compiler/ninl.pas index 4ce751ea82..137886d5e8 100644 --- a/compiler/ninl.pas +++ b/compiler/ninl.pas @@ -403,7 +403,7 @@ implementation if (filepara.left.nodetype <> loadn) then begin { create a temp which will hold a pointer to the file } - filetemp := ctempcreatenode.create(voidpointertype,voidpointertype.def.size,tt_persistent); + filetemp := ctempcreatenode.create_reg(voidpointertype,voidpointertype.def.size,tt_persistent); { add it to the statements } addstatement(newstatement,filetemp); @@ -2374,7 +2374,10 @@ begin end. { $Log$ - Revision 1.130 2004-02-03 22:32:54 peter + Revision 1.131 2004-02-04 18:45:29 jonas + + some more usage of register temps + + Revision 1.130 2004/02/03 22:32:54 peter * renamed xNNbittype to xNNinttype * renamed registers32 to registersint * replace some s32bit,u32bit with torddef([su]inttype).def.typ diff --git a/compiler/pinline.pas b/compiler/pinline.pas index d08230d6c9..a5bd985312 100644 --- a/compiler/pinline.pas +++ b/compiler/pinline.pas @@ -321,7 +321,7 @@ implementation newblock:=internalstatements(newstatement); { create temp for result } - temp := ctempcreatenode.create(p1.resulttype,p1.resulttype.def.size,tt_persistent); + temp := ctempcreatenode.create_reg(p1.resulttype,p1.resulttype.def.size,tt_persistent); addstatement(newstatement,temp); { create call to fpc_getmem } @@ -734,7 +734,10 @@ implementation end. { $Log$ - Revision 1.28 2004-02-03 22:32:54 peter + Revision 1.29 2004-02-04 18:45:29 jonas + + some more usage of register temps + + Revision 1.28 2004/02/03 22:32:54 peter * renamed xNNbittype to xNNinttype * renamed registers32 to registersint * replace some s32bit,u32bit with torddef([su]inttype).def.typ