summaryrefslogtreecommitdiff
path: root/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-07-06 20:24:04 +0000
committerDan Gohman <gohman@apple.com>2010-07-06 20:24:04 +0000
commit14152b480d09c7ca912af7c06d00b0ff3912e4f5 (patch)
tree17b422ff111807bada29abda9f198784ae4b74e5 /lib/CodeGen/SelectionDAG/InstrEmitter.cpp
parent004c82ad7c0d2da761726f063373c28ffd18e66d (diff)
downloadllvm-14152b480d09c7ca912af7c06d00b0ff3912e4f5.tar.gz
llvm-14152b480d09c7ca912af7c06d00b0ff3912e4f5.tar.bz2
llvm-14152b480d09c7ca912af7c06d00b0ff3912e4f5.tar.xz
Reapply r107655 with fixes; insert the pseudo instruction into
the block before calling the expansion hook. And don't put EFLAGS in a mbb's live-in list twice. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107691 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/InstrEmitter.cpp')
-rw-r--r--lib/CodeGen/SelectionDAG/InstrEmitter.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/CodeGen/SelectionDAG/InstrEmitter.cpp b/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
index a6f63c746b..935679a113 100644
--- a/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
+++ b/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
@@ -723,6 +723,11 @@ EmitMachineNode(SDNode *Node, bool IsClone, bool IsCloned,
MI->setMemRefs(cast<MachineSDNode>(Node)->memoperands_begin(),
cast<MachineSDNode>(Node)->memoperands_end());
+ // Insert the instruction into position in the block. This needs to
+ // happen before any custom inserter hook is called so that the
+ // hook knows where in the block to insert the replacement code.
+ MBB->insert(InsertPos, MI);
+
if (II.usesCustomInsertionHook()) {
// Insert this instruction into the basic block using a target
// specific inserter which may returns a new basic block.
@@ -731,8 +736,6 @@ EmitMachineNode(SDNode *Node, bool IsClone, bool IsCloned,
return;
}
- MBB->insert(InsertPos, MI);
-
// Additional results must be an physical register def.
if (HasPhysRegOuts) {
for (unsigned i = II.getNumDefs(); i < NumResults; ++i) {