mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 20:09:25 +02:00
* fixes for temp type patch
This commit is contained in:
parent
1688a42f0d
commit
6b90162c5a
@ -685,7 +685,7 @@ implementation
|
||||
not paramanager.ret_in_param(resulttype.def,procdefinition.proccalloption) and
|
||||
not assigned(funcretnode) then
|
||||
begin
|
||||
tg.gettemptyped(exprasmlist,resulttype.def,tt_persistent,refcountedtemp);
|
||||
tg.gettemptyped(exprasmlist,resulttype.def,tt_normal,refcountedtemp);
|
||||
cg.g_decrrefcount(exprasmlist,resulttype.def,refcountedtemp,false);
|
||||
end;
|
||||
|
||||
@ -1008,7 +1008,7 @@ implementation
|
||||
if resulttype.def.needs_inittable and
|
||||
not paramanager.ret_in_param(resulttype.def,procdefinition.proccalloption) then
|
||||
begin
|
||||
tg.gettemptyped(exprasmlist,resulttype.def,tt_persistent,refcountedtemp);
|
||||
tg.gettemptyped(exprasmlist,resulttype.def,tt_normal,refcountedtemp);
|
||||
cg.g_decrrefcount(exprasmlist,resulttype.def,refcountedtemp,false);
|
||||
end;
|
||||
|
||||
@ -1133,7 +1133,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.136 2003-11-04 15:35:13 peter
|
||||
Revision 1.137 2003-11-04 19:03:54 peter
|
||||
* fixes for temp type patch
|
||||
|
||||
Revision 1.136 2003/11/04 15:35:13 peter
|
||||
* fix for referencecounted temps
|
||||
|
||||
Revision 1.135 2003/10/30 17:12:49 peter
|
||||
|
@ -903,7 +903,8 @@ implementation
|
||||
hp:=tg.templist;
|
||||
while assigned(hp) do
|
||||
begin
|
||||
if assigned(hp^.def) then
|
||||
if assigned(hp^.def) and
|
||||
hp^.def.needs_inittable then
|
||||
begin
|
||||
if (cs_implicit_exceptions in aktmoduleswitches) then
|
||||
include(current_procinfo.flags,pi_needs_implicit_finally);
|
||||
@ -925,7 +926,8 @@ implementation
|
||||
hp:=tg.templist;
|
||||
while assigned(hp) do
|
||||
begin
|
||||
if assigned(hp^.def) then
|
||||
if assigned(hp^.def) and
|
||||
hp^.def.needs_inittable then
|
||||
begin
|
||||
reference_reset_base(href,current_procinfo.framepointer,hp^.pos);
|
||||
cg.g_finalize(list,hp^.def,href,false);
|
||||
@ -1943,7 +1945,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.163 2003-11-04 15:35:13 peter
|
||||
Revision 1.164 2003-11-04 19:03:50 peter
|
||||
* fixes for temp type patch
|
||||
|
||||
Revision 1.163 2003/11/04 15:35:13 peter
|
||||
* fix for referencecounted temps
|
||||
|
||||
Revision 1.162 2003/10/25 11:34:02 florian
|
||||
|
@ -380,10 +380,13 @@ unit tgobj;
|
||||
{ Update tempfreelist }
|
||||
if assigned(hprevfree) then
|
||||
begin
|
||||
{ Connect With previous tt_free block? }
|
||||
{ Concat blocks when the previous block is free and
|
||||
there is no block assigned for a tdef }
|
||||
if assigned(hprev) and
|
||||
(hp^.temptype=tt_free) and
|
||||
(hprev^.temptype=tt_free) then
|
||||
not assigned(hp^.def) and
|
||||
(hprev^.temptype=tt_free) and
|
||||
not assigned(hprev^.def) then
|
||||
begin
|
||||
inc(hprev^.size,hp^.size);
|
||||
if direction=1 then
|
||||
@ -401,11 +404,14 @@ unit tgobj;
|
||||
|
||||
tempfreelist:=hp;
|
||||
end;
|
||||
{ Next block tt_free ? Yes, then concat }
|
||||
{ Concat blocks when the next block is free and
|
||||
there is no block assigned for a tdef }
|
||||
hnext:=hp^.next;
|
||||
if assigned(hnext) and
|
||||
(hp^.temptype=tt_free) and
|
||||
(hnext^.temptype=tt_free) then
|
||||
not assigned(hp^.def) and
|
||||
(hnext^.temptype=tt_free) and
|
||||
not assigned(hnext^.def) then
|
||||
begin
|
||||
inc(hp^.size,hnext^.size);
|
||||
if direction=1 then
|
||||
@ -557,7 +563,10 @@ unit tgobj;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.41 2003-11-04 15:35:13 peter
|
||||
Revision 1.42 2003-11-04 19:03:54 peter
|
||||
* fixes for temp type patch
|
||||
|
||||
Revision 1.41 2003/11/04 15:35:13 peter
|
||||
* fix for referencecounted temps
|
||||
|
||||
Revision 1.40 2003/10/01 20:34:49 peter
|
||||
|
Loading…
Reference in New Issue
Block a user