From: Jakub Kuderski Date: Tue, 3 Oct 2017 21:17:48 +0000 (+0000) Subject: [Dominators] Make eraseNode invalidate DFS numbers X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=044f6a472648186b882fdb88aea6ca974008ea8b;p=llvm [Dominators] Make eraseNode invalidate DFS numbers This patch makes DT::eraseNode mark DFSInfo as invalid. Not marking it as invalid leads to DFS numbers getting corrupted and failing VerifyDFSNumbers check. This patch also makes children iterator const (NFC). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314847 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Support/GenericDomTree.h b/include/llvm/Support/GenericDomTree.h index c4dd18751f4..8d9640f76fd 100644 --- a/include/llvm/Support/GenericDomTree.h +++ b/include/llvm/Support/GenericDomTree.h @@ -637,11 +637,12 @@ class DominatorTreeBase { assert(Node && "Removing node that isn't in dominator tree."); assert(Node->getChildren().empty() && "Node is not a leaf node."); + DFSInfoValid = false; + // Remove node from immediate dominator's children list. DomTreeNodeBase *IDom = Node->getIDom(); if (IDom) { - typename std::vector *>::iterator I = - find(IDom->Children, Node); + const auto I = find(IDom->Children, Node); assert(I != IDom->Children.end() && "Not in immediate dominator children set!"); // I am no longer your child...