46 lines · plain
1// RUN: fir-opt --canonicalize %s | FileCheck %s2 3// No folding for !fir.box<none>.4func.func @test_none(%arg0: !fir.box<none>) -> index {5 %0 = fir.box_total_elements %arg0 : (!fir.box<none>) -> index6 return %0 : index7}8// CHECK-LABEL: func.func @test_none(9// CHECK-SAME: %[[VAL_0:[0-9]+|[a-zA-Z$._-][a-zA-Z0-9$._-]*]]: !fir.box<none>) -> index {10// CHECK: %[[VAL_1:.*]] = fir.box_total_elements %[[VAL_0]] : (!fir.box<none>) -> index11// CHECK: return %[[VAL_1]] : index12// CHECK: }13 14// No folding for assumed rank arrays.15func.func @test_assumed_rank(%arg0: !fir.box<!fir.array<*:f32>>) -> index {16 %0 = fir.box_total_elements %arg0 : (!fir.box<!fir.array<*:f32>>) -> index17 return %0 : index18}19// CHECK-LABEL: func.func @test_assumed_rank(20// CHECK-SAME: %[[VAL_0:[0-9]+|[a-zA-Z$._-][a-zA-Z0-9$._-]*]]: !fir.box<!fir.array<*:f32>>) -> index {21// CHECK: %[[VAL_1:.*]] = fir.box_total_elements %[[VAL_0]] : (!fir.box<!fir.array<*:f32>>) -> index22// CHECK: return %[[VAL_1]] : index23// CHECK: }24 25// Scalar boxes hold one element.26func.func @test_scalar_i32(%arg0: !fir.class<!fir.type<sometype{i:i32}>>) -> i32 {27 %0 = fir.box_total_elements %arg0 : (!fir.class<!fir.type<sometype{i:i32}>>) -> i3228 return %0 : i3229}30// CHECK-LABEL: func.func @test_scalar_i32(31// CHECK-SAME: %[[VAL_0:[0-9]+|[a-zA-Z$._-][a-zA-Z0-9$._-]*]]: !fir.class<!fir.type<sometype{i:i32}>>) -> i32 {32// CHECK: %[[VAL_1:.*]] = arith.constant 1 : i3233// CHECK: return %[[VAL_1]] : i3234// CHECK: }35 36// Scalar boxes hold one element.37func.func @test_scalar_index(%arg0: !fir.class<!fir.type<sometype{i:i32}>>) -> index {38 %0 = fir.box_total_elements %arg0 : (!fir.class<!fir.type<sometype{i:i32}>>) -> index39 return %0 : index40}41// CHECK-LABEL: func.func @test_scalar_index(42// CHECK-SAME: %[[VAL_0:[0-9]+|[a-zA-Z$._-][a-zA-Z0-9$._-]*]]: !fir.class<!fir.type<sometype{i:i32}>>) -> index {43// CHECK: %[[VAL_1:.*]] = arith.constant 1 : index44// CHECK: return %[[VAL_1]] : index45// CHECK: }46