Index: llvm/include/llvm/IR/DIBuilder.h =================================================================== --- llvm/include/llvm/IR/DIBuilder.h +++ llvm/include/llvm/IR/DIBuilder.h @@ -494,8 +494,17 @@ /// \param AlignInBits Alignment. /// \param Ty Element type. /// \param Subscripts Subscripts. + /// \param DataLocation The location of the raw data of a descriptor-based + /// Fortran array. Typically a DIExpression*. + /// \param Associated The associated attribute of a descriptor-based + /// Fortran array. Typically a DIExpression*. + /// \param Allocated The allocated attribute of a descriptor-based + /// Fortran array. Typically a DIExpression*. DICompositeType *createArrayType(uint64_t Size, uint32_t AlignInBits, - DIType *Ty, DINodeArray Subscripts); + DIType *Ty, DINodeArray Subscripts, + Metadata *DataLocation = nullptr, + Metadata *Associated = nullptr, + Metadata *Allocated = nullptr); /// Create debugging information entry for a vector type. /// \param Size Array size. Index: llvm/lib/IR/DIBuilder.cpp =================================================================== --- llvm/lib/IR/DIBuilder.cpp +++ llvm/lib/IR/DIBuilder.cpp @@ -527,10 +527,15 @@ DICompositeType *DIBuilder::createArrayType(uint64_t Size, uint32_t AlignInBits, DIType *Ty, - DINodeArray Subscripts) { + DINodeArray Subscripts, + Metadata *DataLocation, + Metadata *Associated, + Metadata *Allocated) { auto *R = DICompositeType::get(VMContext, dwarf::DW_TAG_array_type, "", nullptr, 0, nullptr, Ty, Size, AlignInBits, 0, - DINode::FlagZero, Subscripts, 0, nullptr); + DINode::FlagZero, Subscripts, 0, nullptr, + nullptr, "", nullptr, DataLocation, + Associated, Allocated); trackIfUnresolved(R); return R; }