File tree Expand file tree Collapse file tree 1 file changed +8
-0
lines changed
compiler/rustc_llvm/llvm-wrapper Expand file tree Collapse file tree 1 file changed +8
-0
lines changed Original file line number Diff line number Diff line change @@ -480,6 +480,14 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine(
480480 // it prevents control flow from "falling through" into whatever code
481481 // happens to be laid out next in memory.
482482 Options.TrapUnreachable = true ;
483+ // But don't emit traps after other traps or no-returns unnecessarily.
484+ // ...except for when targeting WebAssembly, because the NoTrapAfterNoreturn
485+ // option causes bugs in the LLVM WebAssembly backend. You should be able to
486+ // remove this check when Rust's minimum supported LLVM version is >= 18
487+ // https://github.com/llvm/llvm-project/pull/65876
488+ if (!Trip.isWasm ()) {
489+ Options.NoTrapAfterNoreturn = true ;
490+ }
483491 }
484492
485493 if (Singlethread) {
You can’t perform that action at this time.
0 commit comments