forked from OSchip/llvm-project
[WebAssembly] Do not use EHCatchret symbols with wasm EH
D94835 added support for WinEH to export public symbols pointing to basic blocks which are catchret targets for use with Windows CET. Wasm currently doesn't support public symbols to non-function code addresses (they get treated like new functions in asm but then don't lower to object files correctly). It created them unconditionally for all catchret targets. This change disables those symbols unless the exceptionHandlingType is WinEH (since they aren't used with ExceptionHandling::Wasm) Differential Revision: https://reviews.llvm.org/D96824
This commit is contained in:
parent
799f7865c8
commit
1f9e551a81
|
@ -3202,7 +3202,8 @@ void AsmPrinter::emitBasicBlockStart(const MachineBasicBlock &MBB) {
|
|||
}
|
||||
}
|
||||
|
||||
if (MBB.isEHCatchretTarget()) {
|
||||
if (MBB.isEHCatchretTarget() &&
|
||||
MAI->getExceptionHandlingType() == ExceptionHandling::WinEH) {
|
||||
OutStreamer->emitLabel(MBB.getEHCatchretSymbol());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -exception-model=wasm -mattr=+exception-handling -verify-machineinstrs | FileCheck -allow-deprecated-dag-overlap %s
|
||||
; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -exception-model=wasm -mattr=+exception-handling -verify-machineinstrs | FileCheck --implicit-check-not=ehgcr -allow-deprecated-dag-overlap %s
|
||||
; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -exception-model=wasm -mattr=+exception-handling -verify-machineinstrs -O0 | FileCheck -allow-deprecated-dag-overlap --check-prefix=NOOPT %s
|
||||
; RUN: llc < %s -disable-wasm-fallthrough-return-opt -wasm-keep-registers -exception-model=wasm -mattr=+exception-handling
|
||||
|
||||
|
|
Loading…
Reference in New Issue