[LLVM] Fix Maintainers.md formatting (NFC)
[llvm-project.git] / flang / test / HLFIR / assign-codegen-derived.fir
blobc45c118ed46c594ace8e3655a7d6626461bd15f7
1 // Test hlfir.assign code generation to FIR of derived type requiring
2 // or not finalization.
4 // RUN: fir-opt %s -convert-hlfir-to-fir | FileCheck %s
6 !t_simple = !fir.type<simple{i:i32}>
7 fir.type_info @simple noinit nodestroy nofinal : !t_simple
9 func.func @test_simple(%a: !fir.ref<!t_simple>, %b: !fir.ref<!t_simple>) {
10   hlfir.assign %b to %a : !fir.ref<!t_simple>, !fir.ref<!t_simple>
11   return
13 // CHECK-LABEL: func.func @test_simple(
14 // CHECK-NOT: Destroy
15 // CHECK:  %[[VAL_1:.*]] = fir.coordinate_of %{{.*}}, %{{.*}} : (!fir.ref<!fir.type<simple{i:i32}>>, !fir.field) -> !fir.ref<i32>
16 // CHECK:  %[[VAL_3:.*]] = fir.coordinate_of %{{.*}}, %{{.*}} : (!fir.ref<!fir.type<simple{i:i32}>>, !fir.field) -> !fir.ref<i32>
17 // CHECK:  %[[VAL_4:.*]] = fir.load %[[VAL_1]] : !fir.ref<i32>
18 // CHECK:  fir.store %[[VAL_4]] to %[[VAL_3]] : !fir.ref<i32>
21 !t_with_final = !fir.type<with_final{i:i32}>
22 fir.type_info @with_final noinit : !t_with_final
24 func.func @test_with_final(%a: !fir.ref<!t_with_final>, %b: !fir.ref<!t_with_final>) {
25   hlfir.assign %b to %a : !fir.ref<!t_with_final>, !fir.ref<!t_with_final>
26   return
28 // CHECK-LABEL: func.func @test_with_final(
29 // CHECK:  fir.call @_FortranAAssign