xref: /llvm-project/llvm/test/CodeGen/X86/basic-block-address-map-with-basic-block-sections.ll (revision 6e83c0a1cbfdb0c0f13c282312c47c7945970f55)
1acec6419SRahman Lavaee;; Check that the -basic-block-address-map option works when used along with -basic-block-sections.
2acec6419SRahman Lavaee;; Let a function with 4 basic blocks get split into 2 sections.
3acec6419SRahman Lavaee; RUN: echo '!_Z3bazb' > %t
4acec6419SRahman Lavaee; RUN: echo '!!0 2' >> %t
5acec6419SRahman Lavaee; RUN: llc < %s -mtriple=x86_64 -basic-block-address-map -basic-block-sections=%t | FileCheck %s
6acec6419SRahman Lavaee
7*6e83c0a1SNikita Popovdefine void @_Z3bazb(i1 zeroext) personality ptr @__gxx_personality_v0 {
8acec6419SRahman Lavaee  br i1 %0, label %2, label %7
9acec6419SRahman Lavaee
10acec6419SRahman Lavaee2:
11acec6419SRahman Lavaee  %3 = invoke i32 @_Z3barv()
12acec6419SRahman Lavaee          to label %7 unwind label %5
13acec6419SRahman Lavaee  br label %9
14acec6419SRahman Lavaee
15acec6419SRahman Lavaee5:
16*6e83c0a1SNikita Popov  landingpad { ptr, i32 }
17*6e83c0a1SNikita Popov          catch ptr null
18acec6419SRahman Lavaee  br label %9
19acec6419SRahman Lavaee
20acec6419SRahman Lavaee7:
21acec6419SRahman Lavaee  %8 = call i32 @_Z3foov()
22acec6419SRahman Lavaee  br label %9
23acec6419SRahman Lavaee
24acec6419SRahman Lavaee9:
25acec6419SRahman Lavaee  ret void
26acec6419SRahman Lavaee}
27acec6419SRahman Lavaee
28acec6419SRahman Lavaeedeclare i32 @_Z3barv() #1
29acec6419SRahman Lavaee
30acec6419SRahman Lavaeedeclare i32 @_Z3foov() #1
31acec6419SRahman Lavaee
32acec6419SRahman Lavaeedeclare i32 @__gxx_personality_v0(...)
33acec6419SRahman Lavaee
34acec6419SRahman Lavaee; CHECK:		.text
35acec6419SRahman Lavaee; CHECK-LABEL:	_Z3bazb:
36acec6419SRahman Lavaee; CHECK-LABEL:	.Lfunc_begin0:
37acec6419SRahman Lavaee; CHECK-LABEL:	.LBB_END0_0:
38acec6419SRahman Lavaee; CHECK-LABEL:	.LBB0_1:
39acec6419SRahman Lavaee; CHECK-LABEL:	.LBB_END0_1:
40acec6419SRahman Lavaee; CHECK:		.section .text.split._Z3bazb,"ax",@progbits
41acec6419SRahman Lavaee; CHECK-LABEL:	_Z3bazb.cold:
42acec6419SRahman Lavaee; CHECK-LABEL:	.LBB_END0_2:
43acec6419SRahman Lavaee; CHECK-LABEL:	.LBB0_3:
44acec6419SRahman Lavaee; CHECK-LABEL:	.LBB_END0_3:
45acec6419SRahman Lavaee; CHECK-LABEL:	.Lfunc_end0:
46acec6419SRahman Lavaee
47acec6419SRahman Lavaee; CHECK:		.section	.llvm_bb_addr_map,"o",@llvm_bb_addr_map,.text.hot._Z3bazb
48acec6419SRahman Lavaee; CHECK-NEXT:   .byte   2               # version
49acec6419SRahman Lavaee; CHECK-NEXT:   .byte   8               # feature
50acec6419SRahman Lavaee; CHECK-NEXT:   .byte   2               # number of basic block ranges
51acec6419SRahman Lavaee; CHECK-NEXT:	.quad	.Lfunc_begin0   # base address
52acec6419SRahman Lavaee; CHECK-NEXT:	.byte	2               # number of basic blocks
53acec6419SRahman Lavaee; CHECK-NEXT:	.byte	0               # BB id
54acec6419SRahman Lavaee; CHECK-NEXT:	.uleb128 .Lfunc_begin0-.Lfunc_begin0
55acec6419SRahman Lavaee; CHECK-NEXT:	.uleb128 .LBB_END0_0-.Lfunc_begin0
56acec6419SRahman Lavaee; CHECK-NEXT:	.byte	0
57acec6419SRahman Lavaee; CHECK-NEXT:	.byte	2               # BB id
58acec6419SRahman Lavaee; CHECK-NEXT:	.uleb128 .LBB0_1-.LBB_END0_0
59acec6419SRahman Lavaee; CHECK-NEXT:	.uleb128 .LBB_END0_1-.LBB0_1
60acec6419SRahman Lavaee; CHECK-NEXT:	.byte	5
61acec6419SRahman Lavaee; CHECK-NEXT:	.quad	_Z3bazb.cold    # base address
62acec6419SRahman Lavaee; CHECK-NEXT:	.byte	2               # number of basic blocks
63acec6419SRahman Lavaee; CHECK-NEXT:	.byte	1               # BB id
64acec6419SRahman Lavaee; CHECK-NEXT:	.uleb128 _Z3bazb.cold-_Z3bazb.cold
65acec6419SRahman Lavaee; CHECK-NEXT:	.uleb128 .LBB_END0_2-_Z3bazb.cold
66acec6419SRahman Lavaee; CHECK-NEXT:	.byte	8
67acec6419SRahman Lavaee; CHECK-NEXT:	.byte	3               # BB id
68acec6419SRahman Lavaee; CHECK-NEXT:	.uleb128 .LBB0_3-.LBB_END0_2
69acec6419SRahman Lavaee; CHECK-NEXT:	.uleb128 .LBB_END0_3-.LBB0_3
70acec6419SRahman Lavaee; CHECK-NEXT:	.byte	1
71acec6419SRahman Lavaee
72