# 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, _, blockaddress(@test, %ir-block.block), _
    %rax = LEA64r %rip, 1, _, blockaddress(@test, %ir-block.block), _
    MOV64mr %rip, 1, _, @addr, _, killed %rax
    JMP64m %rip, 1, _, @addr, _

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

  bb.1 (address-taken):
    RETQ
...
---
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, _, blockaddress(@test3, %ir-block.0), _
    %rax = LEA64r %rip, 1, _, blockaddress(@test3, %ir-block.0), _
    MOV64mr killed %rdi, 1, _, 0, _, killed %rax
    RETQ
...
---
name:            test3
tracksRegLiveness: true
body: |
  bb.0.entry:
    successors: %bb.1
  ; CHECK-LABEL: name: test3
  ; CHECK: %rax = LEA64r %rip, 1, _, blockaddress(@test3, %ir-block.0), _
    %rax = LEA64r %rip, 1, _, blockaddress(@test3, %ir-block.0), _
    MOV64mr %rip, 1, _, @addr, _, killed %rax
    JMP64m %rip, 1, _, @addr, _

  bb.1 (address-taken):
    RETQ
...
---
name:            test4
body: |
  bb.0.entry:
    successors: %bb.1.block
  ; CHECK: %rax = LEA64r %rip, 1, _, blockaddress(@test, %ir-block.block) + 2, _
    %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):
    RETQ
...
