// RUN: mlir-translate -mlir-to-llvmir %s -split-input-file | FileCheck %s llvm.mlir.global private @g() {addr_space = 0 : i32, dso_local} : !llvm.ptr { %0 = llvm.blockaddress > : !llvm.ptr llvm.return %0 : !llvm.ptr } llvm.func @fn() { llvm.br ^bb1 ^bb1: llvm.blocktag llvm.return } // CHECK: @g = private global ptr blockaddress(@fn, %1) // CHECK: define void @fn() { // CHECK: br label %[[RET:.*]] // CHECK: [[RET]]: // CHECK: ret void // CHECK: } // ----- llvm.func @blockaddr0() -> !llvm.ptr { %0 = llvm.blockaddress > : !llvm.ptr llvm.br ^bb1 ^bb1: llvm.blocktag llvm.return %0 : !llvm.ptr } // CHECK: define ptr @blockaddr0() { // CHECK: br label %[[RET:.*]] // CHECK: [[RET]]: // CHECK: ret ptr blockaddress(@blockaddr0, %1) // CHECK: } // ----- llvm.mlir.global private @h() {addr_space = 0 : i32, dso_local} : !llvm.ptr { %0 = llvm.blockaddress > : !llvm.ptr llvm.return %0 : !llvm.ptr } // CHECK: @h = private global ptr blockaddress(@h3, %[[BB_ADDR:.*]]) // CHECK: define void @h3() { // CHECK: br label %[[BB_ADDR]] // CHECK: [[BB_ADDR]]: // CHECK: ret void // CHECK: } // CHECK: define void @h0() llvm.func @h3() { llvm.br ^bb1 ^bb1: llvm.blocktag llvm.return } llvm.func @h0() { llvm.return }