================ @@ -107,17 +107,52 @@ llvm::Type *CodeGenTypes::ConvertTypeForMem(QualType T, bool ForBitField) { return llvm::IntegerType::get(FixedVT->getContext(), BytePadded); } - // If this is a bool type, or a bit-precise integer type in a bitfield - // representation, map this integer to the target-specified size. ---------------- rjmccall wrote:
Let's keep this comment; we just need to update it a little: ``` // If T is _Bool or a _BitInt type, ConvertType will produce an IR type // with the exact semantic bit-width of the AST type; for example, // _BitInt(17) will turn into i17. In memory, however, we need to store // such values extended to their full storage size as decided by AST // layout; this is an ABI requirement. Ideally, we would always use an // integer type that's just the bit-size of the AST type; for example, if // sizeof(_BitInt(17)) == 4, _BitInt(17) would turn into i32. That is what's // returned by convertTypeForLoadStore. However, that type does not // always satisfy the size requirement on memory representation types // describe above. For example, a 32-bit platform might reasonably set // sizeof(_BitInt(65)) == 12, but i96 is likely to have to have an alloc size // of 16 bytes in the LLVM data layout. In these cases, we simply return // a byte array of the appropriate size. ``` https://github.com/llvm/llvm-project/pull/91364 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits