Remove 4 FIXMEs to hack around cast-to-bool problems which no longer exist.
llvm-svn: 32051
This commit is contained in:
parent
6dbdfe2baa
commit
ad05ee9f39
|
@ -5778,13 +5778,6 @@ Instruction *InstCombiner::commonIntCastTransforms(CastInst &CI) {
|
||||||
unsigned SrcBitSize = SrcTy->getPrimitiveSizeInBits();
|
unsigned SrcBitSize = SrcTy->getPrimitiveSizeInBits();
|
||||||
unsigned DestBitSize = DestTy->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
|
// See if we can simplify any instructions used by the LHS whose sole
|
||||||
// purpose is to compute bits we don't care about.
|
// purpose is to compute bits we don't care about.
|
||||||
uint64_t KnownZero = 0, KnownOne = 0;
|
uint64_t KnownZero = 0, KnownOne = 0;
|
||||||
|
@ -6092,35 +6085,11 @@ Instruction *InstCombiner::visitFPExt(CastInst &CI) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Instruction *InstCombiner::visitFPToUI(CastInst &CI) {
|
Instruction *InstCombiner::visitFPToUI(CastInst &CI) {
|
||||||
if (Instruction *I = commonCastTransforms(CI))
|
return 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Instruction *InstCombiner::visitFPToSI(CastInst &CI) {
|
Instruction *InstCombiner::visitFPToSI(CastInst &CI) {
|
||||||
if (Instruction *I = commonCastTransforms(CI))
|
return 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Instruction *InstCombiner::visitUIToFP(CastInst &CI) {
|
Instruction *InstCombiner::visitUIToFP(CastInst &CI) {
|
||||||
|
@ -6132,19 +6101,7 @@ Instruction *InstCombiner::visitSIToFP(CastInst &CI) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Instruction *InstCombiner::visitPtrToInt(CastInst &CI) {
|
Instruction *InstCombiner::visitPtrToInt(CastInst &CI) {
|
||||||
if (Instruction *I = commonCastTransforms(CI))
|
return 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Instruction *InstCombiner::visitIntToPtr(CastInst &CI) {
|
Instruction *InstCombiner::visitIntToPtr(CastInst &CI) {
|
||||||
|
|
Loading…
Reference in New Issue