diff --git a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp index 968e6ad4e94d..5a586e022b7a 100644 --- a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp @@ -5784,7 +5784,7 @@ Instruction *InstCombiner::visitCastInst(CastInst &CI) { return &CI; } } - + // If we are casting a malloc or alloca to a pointer to a type of the same // size, rewrite the allocation instruction to allocate the "right" type. // @@ -7144,35 +7144,6 @@ Instruction *InstCombiner::visitPHINode(PHINode &PN) { if (Value *V = PN.hasConstantValue()) return ReplaceInstUsesWith(PN, V); - // If the only user of this instruction is a cast instruction, and all of the - // incoming values are constants, change this PHI to merge together the casted - // constants. - if (PN.hasOneUse()) - if (CastInst *CI = dyn_cast(PN.use_back())) - if (CI->getType() != PN.getType()) { // noop casts will be folded - bool AllConstant = true; - for (unsigned i = 0, e = PN.getNumIncomingValues(); i != e; ++i) - if (!isa(PN.getIncomingValue(i))) { - AllConstant = false; - break; - } - if (AllConstant) { - // Make a new PHI with all casted values. - PHINode *New = new PHINode(CI->getType(), PN.getName(), &PN); - for (unsigned i = 0, e = PN.getNumIncomingValues(); i != e; ++i) { - Constant *OldArg = cast(PN.getIncomingValue(i)); - New->addIncoming(ConstantExpr::getCast(OldArg, New->getType()), - PN.getIncomingBlock(i)); - } - - // Update the cast instruction. - CI->setOperand(0, New); - WorkList.push_back(CI); // revisit the cast instruction to fold. - WorkList.push_back(New); // Make sure to revisit the new Phi - return &PN; // PN is now dead! - } - } - // If all PHI operands are the same operation, pull them through the PHI, // reducing code size. if (isa(PN.getIncomingValue(0)) &&