[llvm-commits] CVS: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
Chris Lattner
sabre at nondot.org
Fri Apr 6 11:57:51 PDT 2007
Changes in directory llvm/lib/Transforms/Scalar:
InstructionCombining.cpp updated: 1.731 -> 1.732
---
Log message:
implement Transforms/InstCombine/malloc2.ll and PR1313: http://llvm.org/PR1313
---
Diffs of the changes: (+11 -1)
InstructionCombining.cpp | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletion(-)
Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.731 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.732
--- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.731 Wed Apr 4 14:16:42 2007
+++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Fri Apr 6 13:57:34 2007
@@ -4744,7 +4744,7 @@
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 @@
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.
More information about the llvm-commits
mailing list