# Start after bbsections0-prepare and check that the BB address map is generated.
# RUN: llc -mtriple x86_64-unknown-linux-gnu -start-after=bbsections-prepare -basic-block-address-map %s -o - | FileCheck %s -check-prefix=CHECK

# How to generate the input:
# foo.cc
# int foo(bool k) {
#  if (k) return 1;
#  return 0;
# }
#
# clang -O0 -S -emit-llvm foo.cc
# llc < foo.ll -stop-after=bbsections-prepare -basic-block-address-map

# CHECK: .section	.llvm_bb_addr_map,"o",@llvm_bb_addr_map,.text
--- |
  ; ModuleID = '<stdin>'
  source_filename = "/tmp/foo.cc"
  target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
  target triple = "x86_64-pc-linux-gnu"
  
  ; Function Attrs: mustprogress noinline nounwind optnone uwtable
  define dso_local noundef i32 @_Z3foob(i1 noundef zeroext %0) #0 {
    %2 = alloca i32, align 4
    %3 = alloca i8, align 1
    %4 = zext i1 %0 to i8
    store i8 %4, ptr %3, align 1
    %5 = load i8, ptr %3, align 1
    %6 = trunc i8 %5 to i1
    br i1 %6, label %7, label %8
  
  7:                                                ; preds = %1
    store i32 1, ptr %2, align 4
    br label %9
  
  8:                                                ; preds = %1
    store i32 0, ptr %2, align 4
    br label %9
  
  9:                                                ; preds = %8, %7
    %10 = load i32, ptr %2, align 4
    ret i32 %10
  }
  
  attributes #0 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
  
  !llvm.module.flags = !{!0, !1, !2, !3, !4}
  !llvm.ident = !{!5}
  
  !0 = !{i32 1, !"wchar_size", i32 4}
  !1 = !{i32 7, !"PIC Level", i32 2}
  !2 = !{i32 7, !"PIE Level", i32 2}
  !3 = !{i32 7, !"uwtable", i32 1}
  !4 = !{i32 7, !"frame-pointer", i32 2}
  !5 = !{!"Debian clang version 14.0.6-2"}

...
---
name:            _Z3foob
alignment:       16
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
failedISel:      false
tracksRegLiveness: true
hasWinCFI:       false
callsEHReturn:   false
callsUnwindInit: false
hasEHCatchret:   false
hasEHScopes:     false
hasEHFunclets:   false
failsVerification: false
tracksDebugUserValues: true
registers:       []
liveins:
  - { reg: '$edi', virtual-reg: '' }
frameInfo:
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       8
  offsetAdjustment: -8
  maxAlignment:    4
  adjustsStack:    false
  hasCalls:        false
  stackProtector:  ''
  functionContext: ''
  maxCallFrameSize: 0
  cvBytesOfCalleeSavedRegisters: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
  hasTailCall:     false
  localFrameSize:  0
  savePoint:       ''
  restorePoint:    ''
fixedStack:
  - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16, stack-id: default, 
      callee-saved-register: '', callee-saved-restored: true, debug-info-variable: '', 
      debug-info-expression: '', debug-info-location: '' }
stack:
  - { id: 0, name: '', type: default, offset: -24, size: 4, alignment: 4, 
      stack-id: default, callee-saved-register: '', callee-saved-restored: true, 
      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
  - { id: 1, name: '', type: default, offset: -17, size: 1, alignment: 1, 
      stack-id: default, callee-saved-register: '', callee-saved-restored: true, 
      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
callSites:       []
debugValueSubstitutions: []
constants:       []
machineFunctionInfo: {}
body:             |
  bb.0 (%ir-block.1, bb_id 0):
    successors: %bb.2(0x40000000), %bb.1(0x40000000)
    liveins: $edi
  
    frame-setup PUSH64r killed $rbp, implicit-def $rsp, implicit $rsp
    frame-setup CFI_INSTRUCTION def_cfa_offset 16
    frame-setup CFI_INSTRUCTION offset $rbp, -16
    $rbp = frame-setup MOV64rr $rsp
    frame-setup CFI_INSTRUCTION def_cfa_register $rbp
    renamable $dil = AND8ri renamable $dil, 1, implicit-def dead $eflags, implicit killed $edi, implicit-def $edi
    MOV8mr $rbp, 1, $noreg, -1, $noreg, renamable $dil, implicit killed $edi :: (store (s8) into %ir.3)
    TEST8mi $rbp, 1, $noreg, -1, $noreg, 1, implicit-def $eflags :: (load (s8) from %ir.3)
    JCC_1 %bb.2, 4, implicit killed $eflags
  
  bb.1 (%ir-block.7, bb_id 1):
    successors: %bb.3(0x80000000)
  
    MOV32mi $rbp, 1, $noreg, -8, $noreg, 1 :: (store (s32) into %ir.2)
    JMP_1 %bb.3
  
  bb.2 (%ir-block.8, bb_id 2):
    successors: %bb.3(0x80000000)
  
    MOV32mi $rbp, 1, $noreg, -8, $noreg, 0 :: (store (s32) into %ir.2)
  
  bb.3 (%ir-block.9, bb_id 3 2):
    renamable $eax = MOV32rm $rbp, 1, $noreg, -8, $noreg :: (load (s32) from %ir.2)
    $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp
    frame-destroy CFI_INSTRUCTION def_cfa $rsp, 8
    RET64 implicit $eax

...
