1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 04:22:57 +02:00
llvm-mirror/test/CodeGen/X86/win64_eh_leaf.ll
Reid Kleckner 40f680ac82 Mark functions as not having CFI once we finalize an x86 stack frame
We'll set it back to true in emitPrologue if it gets called. It doesn't
get called for naked functions.

Fixes PR32912

llvm-svn: 302092
2017-05-03 23:13:42 +00:00

41 lines
874 B
LLVM

; RUN: llc < %s -O1 -mtriple=x86_64-pc-win32 | FileCheck %s -check-prefix=ASM
; RUN: llc < %s -O1 -mtriple=x86_64-pc-win32 -filetype=obj -o %t
; RUN: llvm-readobj -unwind %t | FileCheck %s -check-prefix=READOBJ
declare void @g(i32)
define i32 @not_leaf(i32) uwtable {
entry:
call void @g(i32 42)
ret i32 42
; ASM-LABEL: not_leaf:
; ASM: .seh
; READOBJ: RuntimeFunction {
; READOBJ-NEXT: StartAddress: not_leaf
; READOBJ-NEXT: EndAddress: not_leaf
}
define void @leaf_func(i32) uwtable {
entry:
tail call void @g(i32 42)
ret void
; A Win64 "leaf" function gets no .seh directives in the asm.
; ASM-LABEL: leaf_func:
; ASM-NOT: .seh
; and no unwind info in the object file.
; READOBJ-NOT: leaf_func
}
define void @naked_func() naked {
call void asm sideeffect "ret", ""()
unreachable
}
; ASM-LABEL: naked_func:
; ASM-NOT: .seh_
; ASM: ret
; ASM-NOT: .seh_