diff options
| author | Chris Lattner <sabre@nondot.org> | 2006-01-19 07:40:22 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2006-01-19 07:40:22 +0000 |
| commit | e154abf9b34efa3a626fea5b3485122af02d3eef (patch) | |
| tree | 091f57f8cc1f9b104e9904b33c207117e08ebad2 | |
| parent | ef25927f4fae4527221f45d0626be30803d7eb88 (diff) | |
| download | bcm5719-llvm-e154abf9b34efa3a626fea5b3485122af02d3eef.tar.gz bcm5719-llvm-e154abf9b34efa3a626fea5b3485122af02d3eef.zip | |
Implement casts.ll:test26: a cast from float -> double -> integer, doesn't
need the float->double part.
llvm-svn: 25452
| -rw-r--r-- | llvm/lib/Transforms/Scalar/InstructionCombining.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp index 2fcf9194846..f440e475e0b 100644 --- a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp @@ -3799,8 +3799,8 @@ static CastType getCastType(const Type *Src, const Type *Dest) { // isEliminableCastOfCast - Return true if it is valid to eliminate the CI // instruction. // -static inline bool isEliminableCastOfCast(const Type *SrcTy, const Type *MidTy, - const Type *DstTy, TargetData *TD) { +static bool isEliminableCastOfCast(const Type *SrcTy, const Type *MidTy, + const Type *DstTy, TargetData *TD) { // It is legal to eliminate the instruction if casting A->B->A if the sizes // are identical and the bits don't get reinterpreted (for example @@ -3856,6 +3856,15 @@ static inline bool isEliminableCastOfCast(const Type *SrcTy, const Type *MidTy, return ResultCast == FirstCast; } } + + // If this is a cast from 'float -> double -> integer', cast from + // 'float -> integer' directly, as the value isn't changed by the + // float->double conversion. + if (SrcTy->isFloatingPoint() && MidTy->isFloatingPoint() && + DstTy->isIntegral() && + SrcTy->getPrimitiveSize() < MidTy->getPrimitiveSize()) + return true; + return false; } |

