[clang] [CIR] Simplify try-catch handling (PR #180857)

Henrich Lauko via cfe-commits cfe-commits at lists.llvm.org
Tue Feb 10 23:58:39 PST 2026


================
@@ -280,224 +286,87 @@ mlir::LogicalResult CIRGenFunction::emitCXXTryStmt(const CXXTryStmt &s) {
         scopeIP = builder.saveInsertionPoint();
       });
 
+  // Set personality function if not already set
+  auto funcOp = mlir::cast<cir::FuncOp>(curFn);
+  if (!funcOp.getPersonality())
+    funcOp.setPersonality(getPersonalityFn(cgm, EHPersonality::get(*this)));
----------------
xlauko wrote:

This sets Itanium personality uncoditionally, but you dropped `funclet-based EH` and wasm EH path, or is this gonna be supported later elsewhere?

```suggestion
  if (!funcOp.getPersonality())
    funcOp.setPersonality(getPersonalityFn(cgm, EHPersonality::get(*this)));
    
  const EHPersonality &personality = EHPersonality::get(*this);
  if (personality.usesFuncletPads()) {
    cgm.errorNYI("funclet-based EH (Windows SEH/C++ EH)");
    return mlir::success();
  }

  if (personality.isWasmPersonality()) {
    cgm.errorNYI("WASM exception handling");
    return mlir::success();
  }
```

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


More information about the cfe-commits mailing list