49 lines · plain
1// Test hlfir.get_length operation parse, verify (no errors), and unparse.2 3// RUN: fir-opt %s | fir-opt | FileCheck %s --check-prefix CHECK --check-prefix CHECK-ALL4 5// Test canonicalization.6// RUN: fir-opt %s --canonicalize | FileCheck %s --check-prefix CHECK-CANON --check-prefix CHECK-ALL7 8func.func @fixed_len_scalar(%arg0: !hlfir.expr<!fir.char<1,10>>) -> index {9 %1 = hlfir.get_length %arg0 : (!hlfir.expr<!fir.char<1,10>>) -> index10 return %1 : index11}12// CHECK-ALL-LABEL: func.func @fixed_len_scalar(13// CHECK-ALL-SAME: %[[VAL_0:.*]]: !hlfir.expr<!fir.char<1,10>>) -> index {14// CHECK: %[[VAL_1:.*]] = hlfir.get_length %[[VAL_0]] : (!hlfir.expr<!fir.char<1,10>>) -> index15// CHECK-CANON: %[[VAL_1:.*]] = arith.constant 10 : index16// CHECK-ALL: return %[[VAL_1]] : index17// CHECK-ALL: }18 19func.func @assumed_len_scalar(%arg0: !hlfir.expr<!fir.char<1,?>>) -> index {20 %1 = hlfir.get_length %arg0 : (!hlfir.expr<!fir.char<1,?>>) -> index21 return %1 : index22}23// CHECK-ALL-LABEL: func.func @assumed_len_scalar(24// CHECK-ALL-SAME: %[[VAL_0:.*]]: !hlfir.expr<!fir.char<1,?>>) -> index {25// CHECK-ALL: %[[VAL_1:.*]] = hlfir.get_length %[[VAL_0]] : (!hlfir.expr<!fir.char<1,?>>) -> index26// CHECK-ALL: return %[[VAL_1]] : index27// CHECK-ALL: }28 29func.func @fixed_len_array(%arg0: !hlfir.expr<?x!fir.char<1,10>>) -> index {30 %1 = hlfir.get_length %arg0 : (!hlfir.expr<?x!fir.char<1,10>>) -> index31 return %1 : index32}33// CHECK-ALL-LABEL: func.func @fixed_len_array(34// CHECK-ALL-SAME: %[[VAL_0:.*]]: !hlfir.expr<?x!fir.char<1,10>>) -> index {35// CHECK: %[[VAL_1:.*]] = hlfir.get_length %[[VAL_0]] : (!hlfir.expr<?x!fir.char<1,10>>) -> index36// CHECK-CANON: %[[VAL_1:.*]] = arith.constant 10 : index37// CHECK-ALL: return %[[VAL_1]] : index38// CHECK-ALL: }39 40func.func @assumed_len_array(%arg0: !hlfir.expr<?x!fir.char<1,?>>) -> index {41 %1 = hlfir.get_length %arg0 : (!hlfir.expr<?x!fir.char<1,?>>) -> index42 return %1 : index43}44// CHECK-ALL-LABEL: func.func @assumed_len_array(45// CHECK-ALL-SAME: %[[VAL_0:.*]]: !hlfir.expr<?x!fir.char<1,?>>) -> index {46// CHECK-ALL: %[[VAL_1:.*]] = hlfir.get_length %[[VAL_0]] : (!hlfir.expr<?x!fir.char<1,?>>) -> index47// CHECK-ALL: return %[[VAL_1]] : index48// CHECK-ALL: }49