diff --git a/src/IceOperand.cpp b/src/IceOperand.cpp
index e1faf0f..8cf181a 100644
--- a/src/IceOperand.cpp
+++ b/src/IceOperand.cpp
@@ -350,18 +350,8 @@
   for (Inst *I : Node->getInsts()) {
     if (I->isDeleted())
       continue;
-    if (InstFakeKill *Kill = llvm::dyn_cast<InstFakeKill>(I)) {
-      // A FakeKill instruction indicates certain Variables (usually
-      // physical scratch registers) are redefined, so we register
-      // them as defs.
-      for (SizeT SrcNum = 0; SrcNum < I->getSrcSize(); ++SrcNum) {
-        Variable *Var = llvm::cast<Variable>(I->getSrc(SrcNum));
-        SizeT VarNum = Var->getIndex();
-        assert(VarNum < Metadata.size());
-        Metadata[VarNum].markDef(Kind, Kill, Node);
-      }
-      continue; // no point in executing the rest
-    }
+    // Note: The implicit definitions (and uses) from InstFakeKill are
+    // deliberately ignored.
     if (Variable *Dest = I->getDest()) {
       SizeT DestNum = Dest->getIndex();
       assert(DestNum < Metadata.size());
