Changes in directory llvm/lib/Transforms/Scalar:
InstructionCombining.cpp updated: 1.549 -> 1.550 --- Log message: Remove 4 FIXME's from the CAST patch now that the back end is correctly producing code for "trunc to bool". This passes all tests on Linux. --- Diffs of the changes: (+3 -46) InstructionCombining.cpp | 49 ++--------------------------------------------- 1 files changed, 3 insertions(+), 46 deletions(-) Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.549 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.550 --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.549 Mon Nov 27 13:55:07 2006 +++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Tue Nov 28 01:23:01 2006 @@ -5739,13 +5739,6 @@ unsigned SrcBitSize = SrcTy->getPrimitiveSizeInBits(); unsigned DestBitSize = DestTy->getPrimitiveSizeInBits(); - // FIXME. We currently implement cast-to-bool as a setne %X, 0. This is - // because codegen cannot accurately perform a truncate to bool operation. - // Something goes wrong in promotion to a larger type. When CodeGen can - // handle a proper truncation to bool, this should be removed. - if (DestTy == Type::BoolTy) - return BinaryOperator::createSetNE(Src, Constant::getNullValue(SrcTy)); - // See if we can simplify any instructions used by the LHS whose sole // purpose is to compute bits we don't care about. uint64_t KnownZero = 0, KnownOne = 0; @@ -6021,35 +6014,11 @@ } Instruction *InstCombiner::visitFPToUI(CastInst &CI) { - if (Instruction *I = commonCastTransforms(CI)) - return I; - - // FIXME. We currently implement cast-to-bool as a setne %X, 0. This is - // because codegen cannot accurately perform a truncate to bool operation. - // Something goes wrong in promotion to a larger type. When CodeGen can - // handle a proper truncation to bool, this should be removed. - Value *Src = CI.getOperand(0); - const Type *SrcTy = Src->getType(); - const Type *DestTy = CI.getType(); - if (DestTy == Type::BoolTy) - return BinaryOperator::createSetNE(Src, Constant::getNullValue(SrcTy)); - return 0; + return commonCastTransforms(CI); } Instruction *InstCombiner::visitFPToSI(CastInst &CI) { - if (Instruction *I = commonCastTransforms(CI)) - return I; - - // FIXME. We currently implement cast-to-bool as a setne %X, 0. This is - // because codegen cannot accurately perform a truncate to bool operation. - // Something goes wrong in promotion to a larger type. When CodeGen can - // handle a proper truncation to bool, this should be removed. - Value *Src = CI.getOperand(0); - const Type *SrcTy = Src->getType(); - const Type *DestTy = CI.getType(); - if (DestTy == Type::BoolTy) - return BinaryOperator::createSetNE(Src, Constant::getNullValue(SrcTy)); - return 0; + return commonCastTransforms(CI); } Instruction *InstCombiner::visitUIToFP(CastInst &CI) { @@ -6061,19 +6030,7 @@ } Instruction *InstCombiner::visitPtrToInt(CastInst &CI) { - if (Instruction *I = commonCastTransforms(CI)) - return I; - - // FIXME. We currently implement cast-to-bool as a setne %X, 0. This is - // because codegen cannot accurately perform a truncate to bool operation. - // Something goes wrong in promotion to a larger type. When CodeGen can - // handle a proper truncation to bool, this should be removed. - Value *Src = CI.getOperand(0); - const Type *SrcTy = Src->getType(); - const Type *DestTy = CI.getType(); - if (DestTy == Type::BoolTy) - return BinaryOperator::createSetNE(Src, Constant::getNullValue(SrcTy)); - return 0; + return commonCastTransforms(CI); } Instruction *InstCombiner::visitIntToPtr(CastInst &CI) { _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits