You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.167
Former-commit-id: 289509151e0fee68a1b591a20c9f109c3c789d3a
This commit is contained in:
parent
e19d552987
commit
b084638f15
@ -1,191 +0,0 @@
|
||||
# RUN: llvm-mc -triple=x86_64-windows -filetype=obj < %s | llvm-readobj -codeview | FileCheck %s
|
||||
|
||||
# C source to generate the assembly:
|
||||
# volatile int unlikely_cond = 0;
|
||||
# extern void __declspec(noreturn) abort();
|
||||
# __forceinline void f() {
|
||||
# if (unlikely_cond)
|
||||
# abort();
|
||||
# }
|
||||
# void g() {
|
||||
# unlikely_cond = 0;
|
||||
# f();
|
||||
# unlikely_cond = 0;
|
||||
# }
|
||||
|
||||
# This test is interesting because the inlined instructions are discontiguous.
|
||||
# LLVM's block layout algorithms will put the 'abort' call last, as it is
|
||||
# considered highly unlikely to execute. This is similar to what it does for
|
||||
# calls to __asan_report*, for which it is very important to have an accurate
|
||||
# stack trace.
|
||||
|
||||
# CHECK: GlobalProcIdSym {
|
||||
# CHECK: FunctionType: g (0x1003)
|
||||
# CHECK: CodeOffset: g+0x0
|
||||
# CHECK: DisplayName: g
|
||||
# CHECK: LinkageName: g
|
||||
# CHECK: }
|
||||
# CHECK: InlineSiteSym {
|
||||
# CHECK: Inlinee: f (0x1002)
|
||||
# CHECK: BinaryAnnotations [
|
||||
# CHECK-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0xE, LineOffset: 1}
|
||||
# CHECK-NEXT: ChangeCodeLength: 0x9
|
||||
# CHECK-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0xF, LineOffset: 1}
|
||||
# CHECK-NEXT: ChangeCodeLength: 0x7
|
||||
# CHECK-NEXT: ]
|
||||
|
||||
.text
|
||||
.globl g
|
||||
g: # @g
|
||||
.Lfunc_begin0:
|
||||
.cv_func_id 0
|
||||
.cv_file 1 "C:\\src\\llvm\\build\\t.cpp"
|
||||
.cv_loc 0 1 7 0 is_stmt 0 # t.cpp:7:0
|
||||
.seh_proc g
|
||||
subq $40, %rsp
|
||||
.seh_stackalloc 40
|
||||
.seh_endprologue
|
||||
.cv_loc 0 1 8 17 # t.cpp:8:17
|
||||
movl $0, unlikely_cond(%rip)
|
||||
.cv_inline_site_id 1 within 0 inlined_at 1 9 3
|
||||
.cv_loc 1 1 4 7 # t.cpp:4:7
|
||||
cmpl $0, unlikely_cond(%rip)
|
||||
jne .LBB0_1
|
||||
.cv_loc 0 1 10 17 # t.cpp:10:17
|
||||
movl $0, unlikely_cond(%rip)
|
||||
.cv_loc 0 1 11 1 # t.cpp:11:1
|
||||
addq $40, %rsp
|
||||
retq
|
||||
|
||||
.LBB0_1: # %if.then.i
|
||||
.cv_loc 1 1 5 5 # t.cpp:5:5
|
||||
callq abort
|
||||
ud2
|
||||
.Lfunc_end0:
|
||||
.seh_handlerdata
|
||||
.text
|
||||
.seh_endproc
|
||||
|
||||
.bss
|
||||
.globl unlikely_cond # @unlikely_cond
|
||||
.p2align 2
|
||||
unlikely_cond:
|
||||
.long 0 # 0x0
|
||||
|
||||
.section .debug$S,"dr"
|
||||
.p2align 2
|
||||
.long 4 # Debug section magic
|
||||
.long 246 # Inlinee lines subsection
|
||||
.long .Ltmp9-.Ltmp8 # Subsection size
|
||||
.Ltmp8:
|
||||
.long 0 # Inlinee lines signature
|
||||
|
||||
# Inlined function f starts at t.cpp:3
|
||||
.long 4098 # Type index of inlined function
|
||||
.long 0 # Offset into filechecksum table
|
||||
.long 3 # Starting line number
|
||||
.Ltmp9:
|
||||
.p2align 2
|
||||
.long 241 # Symbol subsection for g
|
||||
.long .Ltmp11-.Ltmp10 # Subsection size
|
||||
.Ltmp10:
|
||||
.short .Ltmp13-.Ltmp12 # Record length
|
||||
.Ltmp12:
|
||||
.short 4423 # Record kind: S_GPROC32_ID
|
||||
.long 0 # PtrParent
|
||||
.long 0 # PtrEnd
|
||||
.long 0 # PtrNext
|
||||
.long .Lfunc_end0-g # Code size
|
||||
.long 0 # Offset after prologue
|
||||
.long 0 # Offset before epilogue
|
||||
.long 4099 # Function type index
|
||||
.secrel32 g # Function section relative address
|
||||
.secidx g # Function section index
|
||||
.byte 0 # Flags
|
||||
.asciz "g" # Function name
|
||||
.Ltmp13:
|
||||
.short .Ltmp15-.Ltmp14 # Record length
|
||||
.Ltmp14:
|
||||
.short 4429 # Record kind: S_INLINESITE
|
||||
.long 0 # PtrParent
|
||||
.long 0 # PtrEnd
|
||||
.long 4098 # Inlinee type index
|
||||
.cv_inline_linetable 1 1 3 .Lfunc_begin0 .Lfunc_end0
|
||||
.Ltmp15:
|
||||
.short 2 # Record length
|
||||
.short 4430 # Record kind: S_INLINESITE_END
|
||||
.short 2 # Record length
|
||||
.short 4431 # Record kind: S_PROC_ID_END
|
||||
.Ltmp11:
|
||||
.p2align 2
|
||||
.cv_linetable 0, g, .Lfunc_end0
|
||||
.long 241 # Symbol subsection for globals
|
||||
.long .Ltmp17-.Ltmp16 # Subsection size
|
||||
.Ltmp16:
|
||||
.short .Ltmp19-.Ltmp18 # Record length
|
||||
.Ltmp18:
|
||||
.short 4365 # Record kind: S_GDATA32
|
||||
.long 4100 # Type
|
||||
.secrel32 unlikely_cond # DataOffset
|
||||
.secidx unlikely_cond # Segment
|
||||
.asciz "unlikely_cond" # Name
|
||||
.Ltmp19:
|
||||
.Ltmp17:
|
||||
.p2align 2
|
||||
.cv_filechecksums # File index to string table offset subsection
|
||||
.cv_stringtable # String table
|
||||
.section .debug$T,"dr"
|
||||
.p2align 2
|
||||
.long 4 # Debug section magic
|
||||
# ArgList (0x1000) {
|
||||
# TypeLeafKind: LF_ARGLIST (0x1201)
|
||||
# NumArgs: 0
|
||||
# Arguments [
|
||||
# ]
|
||||
# }
|
||||
.byte 0x06, 0x00, 0x01, 0x12
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
# Procedure (0x1001) {
|
||||
# TypeLeafKind: LF_PROCEDURE (0x1008)
|
||||
# ReturnType: void (0x3)
|
||||
# CallingConvention: NearC (0x0)
|
||||
# FunctionOptions [ (0x0)
|
||||
# ]
|
||||
# NumParameters: 0
|
||||
# ArgListType: () (0x1000)
|
||||
# }
|
||||
.byte 0x0e, 0x00, 0x08, 0x10
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x10, 0x00, 0x00
|
||||
# FuncId (0x1002) {
|
||||
# TypeLeafKind: LF_FUNC_ID (0x1601)
|
||||
# ParentScope: 0x0
|
||||
# FunctionType: void () (0x1001)
|
||||
# Name: f
|
||||
# }
|
||||
.byte 0x0e, 0x00, 0x01, 0x16
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x01, 0x10, 0x00, 0x00
|
||||
.byte 0x66, 0x00, 0xf2, 0xf1
|
||||
# FuncId (0x1003) {
|
||||
# TypeLeafKind: LF_FUNC_ID (0x1601)
|
||||
# ParentScope: 0x0
|
||||
# FunctionType: void () (0x1001)
|
||||
# Name: g
|
||||
# }
|
||||
.byte 0x0e, 0x00, 0x01, 0x16
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x01, 0x10, 0x00, 0x00
|
||||
.byte 0x67, 0x00, 0xf2, 0xf1
|
||||
# Modifier (0x1004) {
|
||||
# TypeLeafKind: LF_MODIFIER (0x1001)
|
||||
# ModifiedType: int (0x74)
|
||||
# Modifiers [ (0x2)
|
||||
# Volatile (0x2)
|
||||
# ]
|
||||
# }
|
||||
.byte 0x0a, 0x00, 0x01, 0x10
|
||||
.byte 0x74, 0x00, 0x00, 0x00
|
||||
.byte 0x02, 0x00, 0xf2, 0xf1
|
||||
|
Reference in New Issue
Block a user