* assignn check in exitnode changed to use a separate boolean as the

assignn can be changed to a calln
This commit is contained in:
peter 2002-09-01 18:47:00 +00:00
parent 76bd75ed4a
commit 274624f2f6
2 changed files with 31 additions and 4 deletions

View File

@ -465,7 +465,7 @@ implementation
include(flowcontrol,fc_exit);
if assigned(left) then
begin
if left.nodetype=assignn then
if onlyassign then
begin
{ just do a normal assignment followed by exit }
secondpass(left);
@ -1238,7 +1238,11 @@ begin
end.
{
$Log$
Revision 1.40 2002-09-01 14:41:47 peter
Revision 1.41 2002-09-01 18:47:00 peter
* assignn check in exitnode changed to use a separate boolean as the
assignn can be changed to a calln
Revision 1.40 2002/09/01 14:41:47 peter
* increase refcount in exit(arg) for arg
Revision 1.39 2002/08/24 18:41:52 peter

View File

@ -82,7 +82,10 @@ interface
tfornodeclass = class of tfornode;
texitnode = class(tunarynode)
onlyassign : boolean;
constructor create(l:tnode);virtual;
constructor ppuload(t:tnodetype;ppufile:tcompilerppufile);override;
procedure ppuwrite(ppufile:tcompilerppufile);override;
function det_resulttype:tnode;override;
function pass_1 : tnode;override;
end;
@ -656,7 +659,7 @@ implementation
{Can we spare the first comparision?}
if (right.nodetype=ordconstn) and (Tassignmentnode(left).right.nodetype=ordconstn) then
if (
(nf_backward in flags) and
(nf_backward in flags) and
(Tordconstnode(Tassignmentnode(left).right).value>=Tordconstnode(right).value)
)
or not(
@ -789,6 +792,21 @@ implementation
constructor texitnode.create(l:tnode);
begin
inherited create(exitn,l);
onlyassign:=false;
end;
constructor texitnode.ppuload(t:tnodetype;ppufile:tcompilerppufile);
begin
inherited ppuload(t,ppufile);
onlyassign:=boolean(ppufile.getbyte);
end;
procedure texitnode.ppuwrite(ppufile:tcompilerppufile);
begin
inherited ppuwrite(ppufile);
ppufile.putbyte(byte(onlyassign));
end;
@ -809,6 +827,7 @@ implementation
begin
pt:=cfuncretnode.create(aktprocdef.funcretsym);
left:=cassignmentnode.create(pt,left);
onlyassign:=true;
end;
end;
end;
@ -1386,7 +1405,11 @@ begin
end.
{
$Log$
Revision 1.49 2002-09-01 08:01:16 daniel
Revision 1.50 2002-09-01 18:47:00 peter
* assignn check in exitnode changed to use a separate boolean as the
assignn can be changed to a calln
Revision 1.49 2002/09/01 08:01:16 daniel
* Removed sets from Tcallnode.det_resulttype
+ Added read/write notifications of variables. These will be usefull
for providing information for several optimizations. For example