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