This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG72f863fd37c3: [CodeGen] Use getCharWidth() more consistently in CGRecordLowering. NFC (authored by bjope).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D94977/new/ https://reviews.llvm.org/D94977 Files: clang/lib/CodeGen/CGRecordLayoutBuilder.cpp Index: clang/lib/CodeGen/CGRecordLayoutBuilder.cpp =================================================================== --- clang/lib/CodeGen/CGRecordLayoutBuilder.cpp +++ clang/lib/CodeGen/CGRecordLayoutBuilder.cpp @@ -127,15 +127,20 @@ /// Wraps llvm::Type::getIntNTy with some implicit arguments. llvm::Type *getIntNType(uint64_t NumBits) { + unsigned AlignedBits = llvm::alignTo(NumBits, Context.getCharWidth()); + return llvm::Type::getIntNTy(Types.getLLVMContext(), AlignedBits); + } + /// Get the LLVM type sized as one character unit. + llvm::Type *getCharType() { return llvm::Type::getIntNTy(Types.getLLVMContext(), - (unsigned)llvm::alignTo(NumBits, 8)); + Context.getCharWidth()); } - /// 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()); + /// 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.
Index: clang/lib/CodeGen/CGRecordLayoutBuilder.cpp =================================================================== --- clang/lib/CodeGen/CGRecordLayoutBuilder.cpp +++ clang/lib/CodeGen/CGRecordLayoutBuilder.cpp @@ -127,15 +127,20 @@ /// Wraps llvm::Type::getIntNTy with some implicit arguments. llvm::Type *getIntNType(uint64_t NumBits) { + unsigned AlignedBits = llvm::alignTo(NumBits, Context.getCharWidth()); + return llvm::Type::getIntNTy(Types.getLLVMContext(), AlignedBits); + } + /// Get the LLVM type sized as one character unit. + llvm::Type *getCharType() { return llvm::Type::getIntNTy(Types.getLLVMContext(), - (unsigned)llvm::alignTo(NumBits, 8)); + Context.getCharWidth()); } - /// 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()); + /// 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.
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits