llvm-project/llvm/test/CodeGen/WinEH/wineh-musttail-call.ll
Hans Wennborg 1d070988d9
[WinEH] Take musttail calls into account when unlinking eh records (#119702)
Exception handling records are unlinked on function return. However, if
there is a musttail call before the return, that's the de-facto point of
termination and the unlinking instructions must be inserted *before*
that.

Fixes #119255
2024-12-13 09:16:52 +01:00

33 lines
718 B
LLVM

; RUN: llc < %s | FileCheck %s
target triple = "i386-pc-windows-msvc"
; Check that codegen doesn't fail due to wineh inserting instructions between
; the musttail call and return instruction.
define void @test() personality ptr @__CxxFrameHandler3 {
; CHECK-LABEL: test:
entry:
invoke void @foo() to label %try.cont unwind label %catch.dispatch
catch.dispatch:
%0 = catchswitch within none [label %catch] unwind to caller
catch:
%1 = catchpad within %0 [ptr null, i32 64, ptr null]
catchret from %1 to label %try.cont
try.cont:
; CHECK: movl %{{[a-z0-9]+}}, %fs:0
; CHECK: jmp _bar
musttail call void @bar()
ret void
}
declare i32 @__CxxFrameHandler3(...)
declare void @foo()
declare void @bar()