diff --git a/SMPBasicBlock.cpp b/SMPBasicBlock.cpp
index 272c2826d2576eec06e3453a0c45d6bbdf916ef7..55d37383abae65dc59d25473d228457e4cf2fda7 100644
--- a/SMPBasicBlock.cpp
+++ b/SMPBasicBlock.cpp
@@ -1102,10 +1102,11 @@ set<SMPPhiFunction, LessPhi>::iterator SMPBasicBlock::InferPhiDefType(set<SMPPhi
 		}
 	}
 	// Must have seen consistent types if we reach this point.
-	ReturnPhi = this->SetPhiDefType(DefPhi->GetAnyOp(), UseType);
+	ReturnPhi = this->SetPhiDefType(DefOp, UseType);
 	changed = true;
 	// Propagate down to USEs of this DEF.
 	if (!MDIsIndirectMemoryOpnd(DefOp, this->MyFunc->UsesFramePointer()))
+		this->MyFunc->ResetProcessedBlocks();
 		changed |= this->PropagateGlobalDefType(DefOp, UseType, SSANum);
 	return ReturnPhi;
 } // end of SMPBasicBlock::InferPhiDefType()