majaha wrote:

> These are just non-wasm options, so they mean nothing to wasm.

Yes, and using them gives no warning. 

> Wasm simply doesn't do anything with respect to these options and wasm is not 
> overriding them.

--trap-unreachable is absolutely overridden, in exactly the same place as 
--no-trap-after-noreturn. It happens on the previous line of code.

> they wouldn't know that their request was silently rejected/overridden.
> To say it another way, the difference is, Wasm doesn't understand 
> --xcoff-traceback-table=true and will do nothing with respect to it. But Wasm 
> understands --no-trap-after-noreturn and will silently reject it after this 
> PR.

There's no difference between "doing nothing with respect to it" and "silently 
rejecting", it's the same thing. The wasm backend understands neither 
--xcoff-traceback-table, --trap-unreachable, *or* --no-trap-after-noreturn (the 
fact that --no-trap-after-noreturn affects the wasm output despite being 
conceptually unsupported *is* the bug).
None of those are supported by the wasm backend, and they are all equally 
silently ignored.

> I have been kind of confused by your characterization of this as "bugfix", 
> given that this does not change anything functionality-wise.
> ...So I'm not sure if I agree that this PR is a bugfix. I consider this as an 
> improvement adding a failsafe mechanism.

It *does* change things functionality wise. [Look at the 
tests](https://github.com/llvm/llvm-project/pull/65876/commits/7e834694b09e6a7787674879442b5f0d0c92eb22#diff-1b973bc4d02665dc4a2d31916df466a5bf53c64ef70aa701ef579fc67dfbd2e4L96),
 the output has changed with this pull request from invalid to valid. If that's 
not a bug fix, I don't know what is.

> What's your distinction criteria for "real contradiction" and "hints or 
> suggestions"?

A real contradiction would be asking for two incompatible target options, like 
[-exception-model=wasm 
-enable-emscripten-cxx-exceptions](https://godbolt.org/z/n77WeqaT6). 
TrapUnreachable is a much more wishy-washy request, it's frequently ignored 
across the codebase, and [using it doesn't even guarantee that unreachable will 
produce a trap](https://godbolt.org/z/evdrEvh1h). It's just a code-hardening 
hint that reduces the effect of runaway code in some instances.

To put it plainly: the --trap-unreachable and --no-trap-after-noreturn options 
*are not supported* on the wasm backend, and they are silently ignored just 
like every other unsupported option.
This is consistent with the behaviour both [in the wasm 
backend](https://github.com/llvm/llvm-project/blob/21f8bc25adba762ab06e26a7dd50da78fcd17528/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp#L129),
 and across the codebase: 
[1](https://github.com/llvm/llvm-project/blob/aa8f5e6156821aec1fed595f2e13d69655ec3311/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp#L340),
 
[2](https://github.com/llvm/llvm-project/blob/aa8f5e6156821aec1fed595f2e13d69655ec3311/llvm/lib/Target/ARM/ARMTargetMachine.cpp#L254),
 
[3](https://github.com/llvm/llvm-project/blob/aa8f5e6156821aec1fed595f2e13d69655ec3311/llvm/lib/Target/X86/X86TargetMachine.cpp#L237).

https://github.com/llvm/llvm-project/pull/65876
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to