[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