[clang] [CIR] Upstream support for setjmp & longjmp builtins (PR #178989)
Andy Kaylor via cfe-commits
cfe-commits at lists.llvm.org
Fri Feb 13 12:15:06 PST 2026
================
@@ -1352,8 +1352,44 @@ RValue CIRGenFunction::emitBuiltinExpr(const GlobalDecl &gd, unsigned builtinID,
case Builtin::BI__builtin_eh_return:
case Builtin::BI__builtin_unwind_init:
case Builtin::BI__builtin_extend_pointer:
- case Builtin::BI__builtin_setjmp:
- case Builtin::BI__builtin_longjmp:
+ return errorBuiltinNYI(*this, e, builtinID);
+ case Builtin::BI__builtin_setjmp: {
+ Address buf = emitPointerWithAlignment(e->getArg(0));
+ mlir::Location loc = getLoc(e->getExprLoc());
+
+ cir::PointerType ppTy = builder.getPointerTo(builder.getVoidPtrTy());
+ mlir::Value castBuf = builder.createBitcast(buf.getPointer(), ppTy);
----------------
andykaylor wrote:
```suggestion
cir::PointerType voidPtrTy = builder.getVoidPtrTy();
cir::PointerType ppTy = builder.getPointerTo(voidPtrTy);
Adddress castBuf = buf.withElementType(voidPtrTy);
```
This will preserve the alignment that `buf` already has.
https://github.com/llvm/llvm-project/pull/178989
More information about the cfe-commits
mailing list