llvm/flang/test/HLFIR/destroy.fir

// Test hlfir.destroy operation parse, verify (no errors), and unparse.

// RUN: fir-opt %s | fir-opt | FileCheck %s

func.func @test(%expr : !hlfir.expr<?x?xf64>) {
  hlfir.destroy %expr : !hlfir.expr<?x?xf64>
  return
}
// CHECK-LABEL: func.func @test(
// CHECK-SAME:    %[[VAL_0:.*]]: !hlfir.expr<?x?xf64>) {
// CHECK:   hlfir.destroy %[[VAL_0]] : !hlfir.expr<?x?xf64>

func.func @test_finalize_dt(%expr : !hlfir.expr<?x!fir.type<_QMtypesTt>>) {
  hlfir.destroy %expr finalize : !hlfir.expr<?x!fir.type<_QMtypesTt>>
  return
}
// CHECK-LABEL:   func.func @test_finalize_dt(
// CHECK-SAME:        %[[VAL_0:.*]]: !hlfir.expr<?x!fir.type<_QMtypesTt>>) {
// CHECK:           hlfir.destroy %[[VAL_0]] finalize : !hlfir.expr<?x!fir.type<_QMtypesTt>>

func.func @test_finalize_poly(%expr : !hlfir.expr<?x!fir.type<_QMtypesTt>?>) {
  hlfir.destroy %expr finalize : !hlfir.expr<?x!fir.type<_QMtypesTt>?>
  return
}
// CHECK-LABEL:   func.func @test_finalize_poly(
// CHECK-SAME:        %[[VAL_0:.*]]: !hlfir.expr<?x!fir.type<_QMtypesTt>?>) {
// CHECK:           hlfir.destroy %[[VAL_0]] finalize : !hlfir.expr<?x!fir.type<_QMtypesTt>?>