# RUN: llc -march=x86-64 -run-pass none -o - %s | FileCheck %s
# This test ensures that the MIR parser parses the block address operands
# correctly.

--- |

  @addr = global i8* null

  define void @test() {
  entry:
    store volatile i8* blockaddress(@test, %block), i8** @addr
    %val = load volatile i8*, i8** @addr
    indirectbr i8* %val, [label %block]

  block:
    ret void
  }

  define void @test2() {
  entry:
    store volatile i8* blockaddress(@test2, %"quoted block"), i8** @addr
    %val = load volatile i8*, i8** @addr
    indirectbr i8* %val, [label %"quoted block"]

  "quoted block":
    ret void
  }

  define void @slot_in_other_function(i8** %addr) {
  entry:
    store volatile i8* blockaddress(@test3, %0), i8** %addr
    ret void
  }

  define void @test3() {
  entry:
    store volatile i8* blockaddress(@test3, %0), i8** @addr
    %val = load volatile i8*, i8** @addr
    indirectbr i8* %val, [label %0]

    ret void
  }

  define void @test4() {
  entry:
    store volatile i8* blockaddress(@test4, %block), i8** @addr
    %val = load volatile i8*, i8** @addr
    indirectbr i8* %val, [label %block]

  block:
    ret void
  }

...
---
name:            test
body: |
  bb.0.entry:
    successors: %bb.1.block
  ; CHECK: $rax = LEA64r $rip, 1, $noreg, blockaddress(@test, %ir-block.block), $noreg
    $rax = LEA64r $rip, 1, _, blockaddress(@test, %ir-block.block), _
    MOV64mr $rip, 1, _, @addr, _, killed $rax
    JMP64m $rip, 1, _, @addr, _

  bb.1.block (address-taken):
    RET64
...
---
name:            test2
tracksRegLiveness: true
body: |
  bb.0.entry:
    successors: %bb.1
  ; CHECK: $rax = LEA64r $rip, 1, $noreg, blockaddress(@test2, %ir-block."quoted block"), $noreg
    $rax = LEA64r $rip, 1, _, blockaddress(@test2, %ir-block."quoted block"), _
    MOV64mr $rip, 1, _, @addr, _, killed $rax
    JMP64m $rip, 1, _, @addr, _

  bb.1 (address-taken):
    RET64
...
---
name:            slot_in_other_function
tracksRegLiveness: true
body: |
  bb.0.entry:
    liveins: $rdi
  ; CHECK-LABEL: name: slot_in_other_function
  ; CHECK: $rax = LEA64r $rip, 1, $noreg, blockaddress(@test3, %ir-block.0), $noreg
    $rax = LEA64r $rip, 1, _, blockaddress(@test3, %ir-block.0), _
    MOV64mr killed $rdi, 1, _, 0, _, killed $rax
    RET64
...
---
name:            test3
tracksRegLiveness: true
body: |
  bb.0.entry:
    successors: %bb.1
  ; CHECK-LABEL: name: test3
  ; CHECK: $rax = LEA64r $rip, 1, $noreg, blockaddress(@test3, %ir-block.0), $noreg
    $rax = LEA64r $rip, 1, _, blockaddress(@test3, %ir-block.0), _
    MOV64mr $rip, 1, _, @addr, _, killed $rax
    JMP64m $rip, 1, _, @addr, _

  bb.1 (address-taken):
    RET64
...
---
name:            test4
body: |
  bb.0.entry:
    successors: %bb.1.block
  ; CHECK: $rax = LEA64r $rip, 1, $noreg, blockaddress(@test, %ir-block.block) + 2, $noreg
    $rax = LEA64r $rip, 1, _, blockaddress(@test, %ir-block.block) + 2, _
    MOV64mr $rip, 1, _, @addr, _, killed $rax
    JMP64m $rip, 1, _, @addr, _

  bb.1.block (address-taken):
    RET64
...
