瀏覽代碼

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

J. Gareth "Curious Kit" Moreton 1 年之前
父節點
當前提交
59ff8a0f65
共有 1 個文件被更改,包括 4 次插入1 次删除
  1. 4 1
      compiler/nbas.pas

+ 4 - 1
compiler/nbas.pas

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