[ExpandMemCmp] Update CFG before DTU
authorNikita Popov <nikita.ppv@gmail.com>
Mon, 18 Oct 2021 19:47:15 +0000 (21:47 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Mon, 18 Oct 2021 19:49:47 +0000 (21:49 +0200)
The applyUpdates() API requires that the CFG is already updated,
so make sure to insert the new terminator first.

llvm/lib/CodeGen/ExpandMemCmp.cpp

index 50fdc21..d0c2b8c 100644 (file)
@@ -348,17 +348,17 @@ void MemCmpExpansion::emitLoadCompareByteBlock(unsigned BlockIndex,
                                     ConstantInt::get(Diff->getType(), 0));
     BranchInst *CmpBr =
         BranchInst::Create(EndBlock, LoadCmpBlocks[BlockIndex + 1], Cmp);
+    Builder.Insert(CmpBr);
     if (DTU)
       DTU->applyUpdates(
           {{DominatorTree::Insert, BB, EndBlock},
            {DominatorTree::Insert, BB, LoadCmpBlocks[BlockIndex + 1]}});
-    Builder.Insert(CmpBr);
   } else {
     // The last block has an unconditional branch to EndBlock.
     BranchInst *CmpBr = BranchInst::Create(EndBlock);
+    Builder.Insert(CmpBr);
     if (DTU)
       DTU->applyUpdates({{DominatorTree::Insert, BB, EndBlock}});
-    Builder.Insert(CmpBr);
   }
 }