An Instruction has a trivial kill only if its use is in the same
authorDan Gohman <gohman@apple.com>
Thu, 13 May 2010 19:19:32 +0000 (19:19 +0000)
committerDan Gohman <gohman@apple.com>
Thu, 13 May 2010 19:19:32 +0000 (19:19 +0000)
basic block.

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

lib/CodeGen/SelectionDAG/FastISel.cpp

index 24456504ccf13185356153c0f6eac15c5121a118..253ceca15ebb4c5decba61f0cec37d172494043c 100644 (file)
 using namespace llvm;
 
 bool FastISel::hasTrivialKill(const Value *V) const {
-  // Don't consider constants or arguments to have trivial kills.
+  // Don't consider constants or arguments to have trivial kills. Only
+  // instructions with a single use in the same basic block.
   const Instruction *I = dyn_cast<Instruction>(V);
-  return I && I->hasOneUse();
+  return I &&
+         I->hasOneUse() &&
+         cast<Instruction>(I->use_begin())->getParent() == I->getParent();
 }
 
 unsigned FastISel::getRegForValue(const Value *V) {