[clang] [CIR] Upstream the CatchParamOp (PR #165110)
Bruno Cardoso Lopes via cfe-commits
cfe-commits at lists.llvm.org
Mon Oct 27 12:25:56 PDT 2025
================
@@ -4490,6 +4490,50 @@ def CIR_TryOp : CIR_Op<"try",[
let hasLLVMLowering = false;
}
+//===----------------------------------------------------------------------===//
+// CatchParamOp
+//===----------------------------------------------------------------------===//
+
+def CIR_CatchParamKind : CIR_I32EnumAttr<
+ "CatchParamKind", "Designate limits for begin/end of catch param handling", [
+ I32EnumAttrCase<"Begin", 0, "begin">,
+ I32EnumAttrCase<"End", 1, "end">
+]>;
+
+def CIR_CatchParamOp : CIR_Op<"catch_param"> {
+ let summary = "Represents catch clause formal parameter";
+ let description = [{
+ The `cir.catch_param` can operate in two modes: within catch regions of
+ `cir.try` or anywhere else with the `begin` or `end` markers. The `begin`
+ version requires an exception pointer of `cir.ptr<!void>`.
----------------
bcardosolopes wrote:
It might be worth expanding on how the two modes are used (one that assumes structured control and the other one for lower level lowering). An alternative design would be split this into two operations (let's see if others have any strong opinions here).
https://github.com/llvm/llvm-project/pull/165110
More information about the cfe-commits
mailing list