Not all custom inserters create new basic blocks. If the inserter
authorDan Gohman <gohman@apple.com>
Wed, 7 Jul 2010 21:18:22 +0000 (21:18 +0000)
committerDan Gohman <gohman@apple.com>
Wed, 7 Jul 2010 21:18:22 +0000 (21:18 +0000)
didn't create a new block, don't reset the insert position.

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

lib/CodeGen/SelectionDAG/InstrEmitter.cpp

index f36620c3edfabb00636282cf7c3022e3faba9ad1..5f93e2fcb2efe490901d86a222d89566d8609d30 100644 (file)
@@ -732,8 +732,11 @@ EmitMachineNode(SDNode *Node, bool IsClone, bool IsCloned,
   if (II.usesCustomInsertionHook()) {
     // Insert this instruction into the basic block using a target
     // specific inserter which may returns a new basic block.
-    MBB = TLI->EmitInstrWithCustomInserter(MI, MBB);
-    InsertPos = MBB->end();
+    MachineBasicBlock *NewMBB = TLI->EmitInstrWithCustomInserter(MI, MBB);
+    if (NewMBB != MBB) {
+      MBB = NewMBB;
+      InsertPos = NewMBB->end();
+    }
     return;
   }