[clang] [llvm] WebAssembly: Stop changing MCAsmInfo's ExceptionsType based on flags (PR #146343)

Heejin Ahn via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 1 23:05:48 PDT 2025


aheejin wrote:

> > And it was a little confusing that the PR description argues we should remove `-wasm-enable-eh/sjlj` options, which disagree, when the code seems to fix something else. Those flags control behaviors, not exception models, so we still need them. For example, someone might want to use only SjLj support but not EH support, but because we implement SjLj using EH constructs, we still need `-exception-model=wasm` and `-wasm-enable-sjlj`, but in this case not `-wasm-enable-eh`.
> 
> There should be no cl::opts that change backend behavior like this. It needs to be part of the triple, or at worst a module flag explicitly in the IR. This is worse than TargetOptions, since it's an ABI option hidden in the backend. We should not have program state hidden in structs outside of the IR.

I don't understand. They just control code transformations, and every LLVM target has tons of them. And while they are exception-related flags, after this PR, they don't change the exception model.

> Additionally requiring this second flag on top of the -exception-model flag is an obnoxious user experience

`llc` is not an external user-facing tool. Clang users mostly need only `-fwasm-exceptions`. (If they only need SjLj and want to disable EH, they need `-wasm-enable-sjlj`)

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


More information about the llvm-commits mailing list