implement Transforms/InstCombine/malloc2.ll and PR1313

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35700 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2007-04-06 18:57:34 +00:00
parent b62eee4a69
commit 4802d90ca8

View File

@ -4744,7 +4744,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) {
if (Instruction *NV = FoldOpIntoPhi(I))
return NV;
break;
case Instruction::Select:
case Instruction::Select: {
// If either operand of the select is a constant, we can fold the
// comparison into the select arms, which will cause one to be
// constant folded and the select turned into a bitwise or.
@ -4771,6 +4771,16 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) {
return new SelectInst(LHSI->getOperand(0), Op1, Op2);
break;
}
case Instruction::Malloc:
// If we have (malloc != null), and if the malloc has a single use, we
// can assume it is successful and remove the malloc.
if (LHSI->hasOneUse() && isa<ConstantPointerNull>(RHSC)) {
AddToWorkList(LHSI);
return ReplaceInstUsesWith(I, ConstantInt::get(Type::Int1Ty,
!isTrueWhenEqual(I)));
}
break;
}
}
// If we can optimize a 'icmp GEP, P' or 'icmp P, GEP', do so now.