xref: /llvm-project/flang/test/Fir/boxchar.fir (revision 959de15055c45e33160308bc6b4846d93d08aaa2)
1// RUN: tco %s | FileCheck %s
2// RUN: %flang_fc1 -emit-llvm %s -o - | FileCheck %s
3
4// Test of building and passing boxchar.
5
6func.func private @callee(%x : !fir.boxchar<1>)
7
8// CHECK-LABEL: define void @get_name
9func.func @get_name() {
10  %1 = fir.address_of (@name) : !fir.ref<!fir.char<1,9>>
11  %2 = arith.constant 9 : i64
12  %3 = fir.convert %1 : (!fir.ref<!fir.char<1,9>>) -> !fir.ref<!fir.char<1,?>>
13  %4 = fir.emboxchar %3, %2 : (!fir.ref<!fir.char<1,?>>, i64) -> !fir.boxchar<1>
14  // CHECK: call void @callee(ptr @name, i64 9)
15  fir.call @callee(%4) : (!fir.boxchar<1>) -> ()
16  return
17}
18
19// CHECK-LABEL: define void @get_name_2
20func.func @get_name_2() {
21  %1 = fir.address_of (@name) : !fir.ref<!fir.char<1,9>>
22  %2 = arith.constant 9 : i64
23  %4 = fir.emboxchar %1, %2 : (!fir.ref<!fir.char<1,9>>, i64) -> !fir.boxchar<1>
24  // CHECK: call void @callee(ptr @name, i64 9)
25  fir.call @callee(%4) : (!fir.boxchar<1>) -> ()
26  return
27}
28
29fir.global @name constant : !fir.char<1,9> {
30  %str = fir.string_lit "Your name"(9) : !fir.char<1,9>
31  //constant 1
32  fir.has_value %str : !fir.char<1,9>
33}
34