[clang] [clang] Lower _BitInt(129+) to a different type in LLVM IR (PR #91364)

Eli Friedman via cfe-commits cfe-commits at lists.llvm.org
Tue May 7 10:58:22 PDT 2024


================
@@ -1774,6 +1774,18 @@ llvm::Constant *ConstantEmitter::emitForMemory(CodeGenModule &CGM,
     return Res;
   }
 
+  if (const auto *BIT = destType->getAs<BitIntType>()) {
+    if (BIT->getNumBits() > 128) {
+      // Long _BitInt has array of bytes as in-memory type.
+      ConstantAggregateBuilder Builder(CGM);
+      llvm::Type *DesiredTy = CGM.getTypes().ConvertTypeForMem(destType);
+      auto *CI = cast<llvm::ConstantInt>(C);
----------------
efriedma-quic wrote:

I'm not sure this cast is guaranteed to succeed?  At least in some cases, we emit constant expressions involving a ptrtoint.  Maybe at the widths in question, that can't happen, but this deserves a comment explaining what's going on.

https://github.com/llvm/llvm-project/pull/91364


More information about the cfe-commits mailing list