Explorar o código

* Node-stripping optimisation in "TBlockNode.simplify" now uses "has_child_of_type" to determine stop point

J. Gareth "Curious Kit" Moreton hai 1 ano
pai
achega
59ff8a0f65
Modificáronse 1 ficheiros con 4 adicións e 1 borrados
  1. 4 1
      compiler/nbas.pas

+ 4 - 1
compiler/nbas.pas

@@ -763,6 +763,9 @@ implementation
 
 
 
 
     function tblocknode.simplify(forinline : boolean): tnode;
     function tblocknode.simplify(forinline : boolean): tnode;
+      const
+        NodeStripTerminators = [labeln, asmn, tempcreaten, tempdeleten];
+
       var
       var
         n, p, first, last: tstatementnode;
         n, p, first, last: tstatementnode;
 {$ifdef break_inlining}
 {$ifdef break_inlining}
@@ -819,7 +822,7 @@ implementation
                           p := TStatementNode(n.Next);
                           p := TStatementNode(n.Next);
                           while Assigned(p) do
                           while Assigned(p) do
                             begin
                             begin
-                              if (TStatementNode(p).left.nodetype in [labeln, asmn, tempcreaten, tempdeleten, blockn]) then
+                              if has_node_of_type(TStatementNode(p).left, NodeStripTerminators) then
                                 Break;
                                 Break;
 
 
                               last := p;
                               last := p;