diff options
author | Chris Lattner <sabre@nondot.org> | 2006-06-28 17:34:50 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-06-28 17:34:50 +0000 |
commit | d2280183961dd120288e8a0ee319d46e0cf81e97 (patch) | |
tree | b995f3bffbb7caaf964457907769d829037dcccd /lib | |
parent | f363ce2de71e81f20303218a37e26ad008abeac0 (diff) | |
download | llvm-d2280183961dd120288e8a0ee319d46e0cf81e97.tar.gz llvm-d2280183961dd120288e8a0ee319d46e0cf81e97.tar.bz2 llvm-d2280183961dd120288e8a0ee319d46e0cf81e97.tar.xz |
Fix Transforms/InstCombine/2006-06-28-infloop.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28961 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Transforms/Scalar/InstructionCombining.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp index 63cd256dc5..797b2b8db2 100644 --- a/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/lib/Transforms/Scalar/InstructionCombining.cpp @@ -4934,6 +4934,12 @@ static bool CanEvaluateInDifferentType(Value *V, const Type *Ty, // If this is a cast from the destination type, we can trivially eliminate // it, and this will remove a cast overall. if (I->getOperand(0)->getType() == Ty) { + // If the first operand is itself a cast, and is eliminable, do not count + // this as an eliminable cast. We would prefer to eliminate those two + // casts first. + if (CastInst *OpCast = dyn_cast<CastInst>(I->getOperand(0))) + return true; + ++NumCastsRemoved; return true; } |