66 lines · plain
1// RUN: mlir-translate -mlir-to-llvmir %s -split-input-file | FileCheck %s2 3llvm.mlir.global private @g() {addr_space = 0 : i32, dso_local} : !llvm.ptr {4 %0 = llvm.blockaddress <function = @fn, tag = <id = 0>> : !llvm.ptr5 llvm.return %0 : !llvm.ptr6}7 8llvm.func @fn() {9 llvm.br ^bb110^bb1:11 llvm.blocktag <id = 0>12 llvm.return13}14 15// CHECK: @g = private global ptr blockaddress(@fn, %1)16// CHECK: define void @fn() {17// CHECK: br label %[[RET:.*]]18// CHECK: [[RET]]:19// CHECK: ret void20// CHECK: }21 22// -----23 24llvm.func @blockaddr0() -> !llvm.ptr {25 %0 = llvm.blockaddress <function = @blockaddr0, tag = <id = 1>> : !llvm.ptr26 llvm.br ^bb127^bb1:28 llvm.blocktag <id = 1>29 llvm.return %0 : !llvm.ptr30}31 32// CHECK: define ptr @blockaddr0() {33// CHECK: br label %[[RET:.*]]34// CHECK: [[RET]]:35// CHECK: ret ptr blockaddress(@blockaddr0, %1)36// CHECK: }37 38// -----39 40llvm.mlir.global private @h() {addr_space = 0 : i32, dso_local} : !llvm.ptr {41 %0 = llvm.blockaddress <function = @h3, tag = <id = 0>> : !llvm.ptr42 llvm.return %0 : !llvm.ptr43}44 45// CHECK: @h = private global ptr blockaddress(@h3, %[[BB_ADDR:.*]])46 47// CHECK: define void @h3() {48// CHECK: br label %[[BB_ADDR]]49 50// CHECK: [[BB_ADDR]]:51// CHECK: ret void52// CHECK: }53 54// CHECK: define void @h0()55 56llvm.func @h3() {57 llvm.br ^bb158^bb1:59 llvm.blocktag <id = 0>60 llvm.return61}62 63llvm.func @h0() {64 llvm.return65}66