|
@@ -1368,17 +1368,18 @@ implementation
|
|
taddnode(left).left.isequal(tcallparanode(tinlinenode(p).left).left) and
|
|
taddnode(left).left.isequal(tcallparanode(tinlinenode(p).left).left) and
|
|
not(assigned(tcallparanode(tinlinenode(p).left).right)) then
|
|
not(assigned(tcallparanode(tinlinenode(p).left).right)) then
|
|
begin
|
|
begin
|
|
- result:=cifnode.create_internal(left.getcopy,getcopy,nil);
|
|
|
|
- include(twhilerepeatnode(tifnode(result).right).loopflags,lnf_checknegate);
|
|
|
|
- exclude(twhilerepeatnode(tifnode(result).right).loopflags,lnf_testatbegin);
|
|
|
|
|
|
+ result:=cifnode.create_internal(left.getcopy,cwhilerepeatnode.create(left,right,false,true),nil);
|
|
|
|
+ left:=nil;
|
|
|
|
+ right:=nil;
|
|
twhilerepeatnode(tifnode(result).right).left.nodetype:=equaln;
|
|
twhilerepeatnode(tifnode(result).right).left.nodetype:=equaln;
|
|
end;
|
|
end;
|
|
end
|
|
end
|
|
else if not(cs_opt_size in current_settings.optimizerswitches) and
|
|
else if not(cs_opt_size in current_settings.optimizerswitches) and
|
|
(node_complexity(left)<=3) then
|
|
(node_complexity(left)<=3) then
|
|
begin
|
|
begin
|
|
- result:=cifnode.create_internal(left.getcopy,getcopy,nil);
|
|
|
|
- exclude(twhilerepeatnode(tifnode(result).right).loopflags,lnf_testatbegin);
|
|
|
|
|
|
+ result:=cifnode.create_internal(left.getcopy,cwhilerepeatnode.create(left,right,false,false),nil);
|
|
|
|
+ left:=nil;
|
|
|
|
+ right:=nil;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|