diff --git a/flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp b/flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp index 1ab6c76dae8eda..e387e27533a006 100644 --- a/flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp +++ b/flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp @@ -581,6 +581,8 @@ DebugTypeGenerator::convertType(mlir::Type Ty, mlir::LLVM::DIFileAttr fileAttr, /*genAssociated=*/false); } else if (auto vecTy = mlir::dyn_cast_or_null(Ty)) { return convertVectorType(vecTy, fileAttr, scope, declOp); + } else if (mlir::isa(Ty)) { + return mlir::LLVM::DINullTypeAttr::get(context); } 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-none-type.fir b/flang/test/Transforms/debug-none-type.fir new file mode 100644 index 00000000000000..5eee6a63321904 --- /dev/null +++ b/flang/test/Transforms/debug-none-type.fir @@ -0,0 +1,14 @@ +// RUN: fir-opt --add-debug-info --mlir-print-debuginfo %s | FileCheck %s + +module attributes {dlti.dl_spec = #dlti.dl_spec<>} { + func.func private @_FortranAAssign(i8) -> none loc(#loc1) + func.func private @foo() -> !fir.ref loc(#loc2) +} +#loc1 = loc("test.f90":5:1) +#loc2 = loc("test.f90":15:1) + +// CHECK: #[[INT8_TY:.*]] = #llvm.di_basic_type +// CHECK: #[[NONE_TY:.*]] = #llvm.di_null_type +// CHECK: #[[REFNONE_TY:.*]] = #llvm.di_derived_type +// CHECK: #llvm.di_subroutine_type<{{.*}}types = #[[NONE_TY]], #[[INT8_TY]]> +// CHECK: #llvm.di_subroutine_type<{{.*}}types = #[[REFNONE_TY]]>