mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-25 12:49:50 +00:00
fix PR8867: a crash handling fp128. Thanks to Nick for the testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122613 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b4601bd2ff
commit
e562dba845
@ -637,7 +637,7 @@ Constant *llvm::ConstantFoldCastInstruction(unsigned opc, Constant *V,
|
||||
case Instruction::SIToFP:
|
||||
if (ConstantInt *CI = dyn_cast<ConstantInt>(V)) {
|
||||
APInt api = CI->getValue();
|
||||
APFloat apf(APInt::getNullValue(DestTy->getPrimitiveSizeInBits()));
|
||||
APFloat apf(APInt::getNullValue(DestTy->getPrimitiveSizeInBits()), true);
|
||||
(void)apf.convertFromAPInt(api,
|
||||
opc==Instruction::SIToFP,
|
||||
APFloat::rmNearestTiesToEven);
|
||||
|
@ -109,5 +109,14 @@ TEST(ConstantsTest, IntSigns) {
|
||||
EXPECT_EQ(0x3b, ConstantInt::get(Int8Ty, 0x13b)->getSExtValue());
|
||||
}
|
||||
|
||||
TEST(ConstantsTest, FP128Test) {
|
||||
const Type *FP128Ty = Type::getFP128Ty(getGlobalContext());
|
||||
|
||||
const IntegerType *Int128Ty = Type::getIntNTy(getGlobalContext(), 128);
|
||||
Constant *Zero128 = Constant::getNullValue(Int128Ty);
|
||||
Constant *X = ConstantExpr::getUIToFP(Zero128, FP128Ty);
|
||||
EXPECT_TRUE(isa<ConstantFP>(X));
|
||||
}
|
||||
|
||||
} // end anonymous namespace
|
||||
} // end namespace llvm
|
||||
|
Loading…
Reference in New Issue
Block a user