[PatternInit] Explicitly allow implicit truncation
It's okay if the pattern value gets truncated here, it's a splat.
This commit is contained in:
parent
744552d870
commit
857748d4af
@ -37,7 +37,8 @@ llvm::Constant *clang::CodeGen::initializationPatternFor(CodeGenModule &CGM,
|
||||
unsigned BitWidth =
|
||||
cast<llvm::IntegerType>(Ty->getScalarType())->getBitWidth();
|
||||
if (BitWidth <= 64)
|
||||
return llvm::ConstantInt::get(Ty, IntValue);
|
||||
return llvm::ConstantInt::get(Ty, IntValue, /*IsSigned=*/false,
|
||||
/*ImplicitTrunc=*/true);
|
||||
return llvm::ConstantInt::get(
|
||||
Ty, llvm::APInt::getSplat(BitWidth, llvm::APInt(64, IntValue)));
|
||||
}
|
||||
@ -48,7 +49,8 @@ llvm::Constant *clang::CodeGen::initializationPatternFor(CodeGenModule &CGM,
|
||||
if (PtrWidth > 64)
|
||||
llvm_unreachable("pattern initialization of unsupported pointer width");
|
||||
llvm::Type *IntTy = llvm::IntegerType::get(CGM.getLLVMContext(), PtrWidth);
|
||||
auto *Int = llvm::ConstantInt::get(IntTy, IntValue);
|
||||
auto *Int = llvm::ConstantInt::get(IntTy, IntValue, /*IsSigned=*/false,
|
||||
/*ImplicitTrunc=*/true);
|
||||
return llvm::ConstantExpr::getIntToPtr(Int, PtrTy);
|
||||
}
|
||||
if (Ty->isFPOrFPVectorTy()) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user