forked from OSchip/llvm-project
[CodeGen] Use getCharWidth() more consistently in CGRecordLowering. NFC
When using getByteArrayType the requested size is calculated in char units, but the type used for the array was hardcoded to the Int8Ty. This patch is using getCharWIdth a bit more consistently by using getIntNTy in combination with getCharWidth, instead of explictly using getInt8Ty. Reviewed By: rjmccall Differential Revision: https://reviews.llvm.org/D94977
This commit is contained in:
parent
29d420e0bf
commit
72f863fd37
|
@ -127,15 +127,20 @@ struct CGRecordLowering {
|
|||
|
||||
/// Wraps llvm::Type::getIntNTy with some implicit arguments.
|
||||
llvm::Type *getIntNType(uint64_t NumBits) {
|
||||
return llvm::Type::getIntNTy(Types.getLLVMContext(),
|
||||
(unsigned)llvm::alignTo(NumBits, 8));
|
||||
unsigned AlignedBits = llvm::alignTo(NumBits, Context.getCharWidth());
|
||||
return llvm::Type::getIntNTy(Types.getLLVMContext(), AlignedBits);
|
||||
}
|
||||
/// Gets an llvm type of size NumBytes and alignment 1.
|
||||
llvm::Type *getByteArrayType(CharUnits NumBytes) {
|
||||
assert(!NumBytes.isZero() && "Empty byte arrays aren't allowed.");
|
||||
llvm::Type *Type = llvm::Type::getInt8Ty(Types.getLLVMContext());
|
||||
return NumBytes == CharUnits::One() ? Type :
|
||||
(llvm::Type *)llvm::ArrayType::get(Type, NumBytes.getQuantity());
|
||||
/// Get the LLVM type sized as one character unit.
|
||||
llvm::Type *getCharType() {
|
||||
return llvm::Type::getIntNTy(Types.getLLVMContext(),
|
||||
Context.getCharWidth());
|
||||
}
|
||||
/// Gets an llvm type of size NumChars and alignment 1.
|
||||
llvm::Type *getByteArrayType(CharUnits NumChars) {
|
||||
assert(!NumChars.isZero() && "Empty byte arrays aren't allowed.");
|
||||
llvm::Type *Type = getCharType();
|
||||
return NumChars == CharUnits::One() ? Type :
|
||||
(llvm::Type *)llvm::ArrayType::get(Type, NumChars.getQuantity());
|
||||
}
|
||||
/// Gets the storage type for a field decl and handles storage
|
||||
/// for itanium bitfields that are smaller than their declared type.
|
||||
|
|
Loading…
Reference in New Issue