InequalityGraph::node() can create new nodes, invalidating iterators across
authorNick Lewycky <nicholas@mxc.ca>
Tue, 27 May 2008 00:59:05 +0000 (00:59 +0000)
committerNick Lewycky <nicholas@mxc.ca>
Tue, 27 May 2008 00:59:05 +0000 (00:59 +0000)
the set of nodes. Fix makeEqual to handle this by creating the new node first
then iterating across them second.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51573 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/PredicateSimplifier.cpp

index 9befdc7bc9057c57b6202616eb0c0a4c679d082e..2672e4e762a6fc9dedf2bdf15d1ef9cbecc67125 100644 (file)
@@ -1594,6 +1594,7 @@ namespace {
       if (mergeIGNode) {
         // Create N1.
         if (!n1) n1 = VN.getOrInsertVN(V1, Top);
+        IG.node(n1); // Ensure that IG.Nodes won't get resized
 
         // Migrate relationships from removed nodes to N1.
         for (SetVector<unsigned>::iterator I = Remove.begin(), E = Remove.end();