diff options
author | Dan Gohman <gohman@apple.com> | 2010-05-07 01:10:20 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-05-07 01:10:20 +0000 |
commit | e6d40166a8252bfbc2afe369295915b2a706088c (patch) | |
tree | 09496f26a4e23131c61fbaad131636c754e224c2 /llvm/lib/CodeGen/SelectionDAG/FastISel.cpp | |
parent | e7dff14d5dd080057bc00d2da84ac3fe3f126102 (diff) | |
download | bcm5719-llvm-e6d40166a8252bfbc2afe369295915b2a706088c.tar.gz bcm5719-llvm-e6d40166a8252bfbc2afe369295915b2a706088c.zip |
Transfer debug location information from PHI nodes to resulting
lowered copies.
llvm-svn: 103228
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/FastISel.cpp')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/FastISel.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp index 2328ed034dd..6107c8cb7a6 100644 --- a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp @@ -1082,6 +1082,7 @@ bool FastISel::HandlePHINodesInSuccessorBlocks(const BasicBlock *LLVMBB) { // emitted yet. for (BasicBlock::const_iterator I = SuccBB->begin(); const PHINode *PN = dyn_cast<PHINode>(I); ++I) { + // Ignore dead phi's. if (PN->use_empty()) continue; @@ -1104,12 +1105,19 @@ bool FastISel::HandlePHINodesInSuccessorBlocks(const BasicBlock *LLVMBB) { const Value *PHIOp = PN->getIncomingValueForBlock(LLVMBB); + // Set the DebugLoc for the copy. Prefer the location of the operand + // if there is one; use the location of the PHI otherwise. + DL = PN->getDebugLoc(); + if (const Instruction *Inst = dyn_cast<Instruction>(PHIOp)) + DL = Inst->getDebugLoc(); + unsigned Reg = getRegForValue(PHIOp); if (Reg == 0) { PHINodesToUpdate.resize(OrigNumPHINodesToUpdate); return false; } PHINodesToUpdate.push_back(std::make_pair(MBBI++, Reg)); + DL = DebugLoc(); } } |