// Test hlfir.assign code generation to FIR of derived type requiring // or not finalization. // RUN: fir-opt %s -convert-hlfir-to-fir | FileCheck %s !t_simple = !fir.type fir.type_info @simple noinit nodestroy nofinal : !t_simple func.func @test_simple(%a: !fir.ref, %b: !fir.ref) { hlfir.assign %b to %a : !fir.ref, !fir.ref return } // CHECK-LABEL: func.func @test_simple( // CHECK-NOT: Destroy // CHECK: %[[VAL_1:.*]] = fir.coordinate_of %{{.*}}, %{{.*}} : (!fir.ref>, !fir.field) -> !fir.ref // CHECK: %[[VAL_3:.*]] = fir.coordinate_of %{{.*}}, %{{.*}} : (!fir.ref>, !fir.field) -> !fir.ref // CHECK: %[[VAL_4:.*]] = fir.load %[[VAL_1]] : !fir.ref // CHECK: fir.store %[[VAL_4]] to %[[VAL_3]] : !fir.ref !t_with_final = !fir.type fir.type_info @with_final noinit : !t_with_final func.func @test_with_final(%a: !fir.ref, %b: !fir.ref) { hlfir.assign %b to %a : !fir.ref, !fir.ref return } // CHECK-LABEL: func.func @test_with_final( // CHECK: fir.call @_FortranAAssign