[flang-commits] [flang] [flang][debug] Support assumed size arrays. (PR #96316)
Abid Qadeer via flang-commits
flang-commits at lists.llvm.org
Mon Jun 24 07:42:22 PDT 2024
================
@@ -155,28 +155,32 @@ mlir::LLVM::DITypeAttr DebugTypeGenerator::convertSequenceType(
fir::SequenceType seqTy, mlir::LLVM::DIFileAttr fileAttr,
mlir::LLVM::DIScopeAttr scope, mlir::Location loc) {
mlir::MLIRContext *context = module.getContext();
- // FIXME: Only fixed sizes arrays handled at the moment.
- if (seqTy.hasDynamicExtents())
- return genPlaceholderType(context);
llvm::SmallVector<mlir::LLVM::DINodeAttr> elements;
mlir::LLVM::DITypeAttr elemTy =
convertType(seqTy.getEleTy(), fileAttr, scope, loc);
for (fir::SequenceType::Extent dim : seqTy.getShape()) {
- auto intTy = mlir::IntegerType::get(context, 64);
- // FIXME: Only supporting lower bound of 1 at the moment. The
- // 'SequenceType' has information about the shape but not the shift. In
- // cases where the conversion originated during the processing of
- // 'DeclareOp', it may be possible to pass on this information. But the
- // type conversion should ideally be based on what information present in
- // the type class so that it works from everywhere (e.g. when it is part
- // of a module or a derived type.)
- auto countAttr = mlir::IntegerAttr::get(intTy, llvm::APInt(64, dim));
- auto lowerAttr = mlir::IntegerAttr::get(intTy, llvm::APInt(64, 1));
- auto subrangeTy = mlir::LLVM::DISubrangeAttr::get(
- context, countAttr, lowerAttr, nullptr, nullptr);
- elements.push_back(subrangeTy);
+ if (dim == seqTy.getUnknownExtent()) {
+ auto subrangeTy = mlir::LLVM::DISubrangeAttr::get(
+ context, /*count=*/nullptr, /*lowerBound=*/nullptr,
+ /*upperBound*/ nullptr, /*stride*/ nullptr);
+ elements.push_back(subrangeTy);
----------------
abidh wrote:
As I see there is no descriptor in this case. The type of a variable I get is `!fir.array<?xf32>`
https://github.com/llvm/llvm-project/pull/96316
More information about the flang-commits
mailing list