From c07abf727220e3bd2c78b129a683ad79f735e43c Mon Sep 17 00:00:00 2001 From: Abid Qadeer Date: Thu, 24 Oct 2024 11:38:17 +0100 Subject: [PATCH] [flang][debug] Support fir::ReferenceType. (#113480) --- flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp | 5 +++++ flang/test/Transforms/debug-ref-type.fir | 10 ++++++++++ 2 files changed, 15 insertions(+) create mode 100644 flang/test/Transforms/debug-ref-type.fir diff --git a/flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp b/flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp index 71e534b4f2e2a3..84f7873a9fd009 100644 --- a/flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp +++ b/flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp @@ -511,6 +511,11 @@ DebugTypeGenerator::convertType(mlir::Type Ty, mlir::LLVM::DIFileAttr fileAttr, /*hasDescriptor=*/false); } else if (auto recTy = mlir::dyn_cast_or_null(Ty)) { return convertRecordType(recTy, fileAttr, scope, declOp); + } else if (auto refTy = mlir::dyn_cast_if_present(Ty)) { + auto elTy = refTy.getEleTy(); + return convertPointerLikeType(elTy, fileAttr, scope, declOp, + /*genAllocated=*/false, + /*genAssociated=*/false); } else if (auto boxTy = mlir::dyn_cast_or_null(Ty)) { auto elTy = boxTy.getElementType(); if (auto seqTy = mlir::dyn_cast_or_null(elTy)) diff --git a/flang/test/Transforms/debug-ref-type.fir b/flang/test/Transforms/debug-ref-type.fir new file mode 100644 index 00000000000000..2b3af485385d8a --- /dev/null +++ b/flang/test/Transforms/debug-ref-type.fir @@ -0,0 +1,10 @@ +// RUN: fir-opt --add-debug-info --mlir-print-debuginfo %s | FileCheck %s + +module attributes {dlti.dl_spec = #dlti.dl_spec<>} { + func.func private @_FortranAioBeginExternalListOutput(i8) -> !fir.ref loc(#loc1) +} +#loc1 = loc("test.f90":5:1) + +// CHECK: #[[INT8_TY:.*]] = #llvm.di_basic_type +// CHECK: #[[REF_TY:.*]] = #llvm.di_derived_type +// CHECK: #llvm.di_subroutine_type<{{.*}}types = #[[REF_TY]], #[[INT8_TY]]>