|  | @@ -1368,17 +1368,18 @@ implementation
 | 
	
		
			
				|  |  |                    taddnode(left).left.isequal(tcallparanode(tinlinenode(p).left).left) and
 | 
	
		
			
				|  |  |                    not(assigned(tcallparanode(tinlinenode(p).left).right)) then
 | 
	
		
			
				|  |  |                    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;
 | 
	
		
			
				|  |  |                    end;
 | 
	
		
			
				|  |  |                end
 | 
	
		
			
				|  |  |              else if not(cs_opt_size in current_settings.optimizerswitches) and
 | 
	
		
			
				|  |  |                (node_complexity(left)<=3) then
 | 
	
		
			
				|  |  |                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;
 |