[clang] [clang] Lower _BitInt(129+) to a different type in LLVM IR (PR #91364)
John McCall via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 10 11:59:24 PDT 2024
================
@@ -1886,6 +1896,29 @@ llvm::Constant *ConstantEmitter::emitForMemory(CodeGenModule &CGM,
return Res;
}
+ if (destType->isBitIntType()) {
+ if (CGM.getTypes().typeRequiresSplitIntoByteArray(destType, C->getType())) {
+ // Long _BitInt has array of bytes as in-memory type.
+ // So, split constant into individual bytes.
+ ConstantAggregateBuilder Builder(CGM);
+ llvm::Type *DesiredTy = CGM.getTypes().ConvertTypeForMem(destType);
+ llvm::Type *LoadStoreTy =
----------------
rjmccall wrote:
Right. Momchil, your description is actually a totally reasonable way of understanding what `convertTypeForLoadStore` *means* for `_BitInt`: the load/store type is an integer type that has the same width as the in-memory type. We're just recognizing that as a more general concept.
https://github.com/llvm/llvm-project/pull/91364
More information about the cfe-commits
mailing list