[DebugInfo] Support for DW_TAG_generic_subrange
This is needed to support fortran assumed rank arrays which have runtime rank. Summary: Fortran assumed rank arrays have dynamic rank. DWARF TAG DW_TAG_generic_subrange is needed to support that. Testing: unit test cases added (hand-written) check llvm check debug-info Reviewed By: aprantl Differential Revision: https://reviews.llvm.org/D89218
This commit is contained in:
@@ -875,6 +875,7 @@ MetadataLoader::MetadataLoaderImpl::lazyLoadModuleMetadataBlock() {
|
||||
case bitc::METADATA_OBJC_PROPERTY:
|
||||
case bitc::METADATA_IMPORTED_ENTITY:
|
||||
case bitc::METADATA_GLOBAL_VAR_EXPR:
|
||||
case bitc::METADATA_GENERIC_SUBRANGE:
|
||||
// We don't expect to see any of these, if we see one, give up on
|
||||
// lazy-loading and fallback.
|
||||
MDStringRef.clear();
|
||||
@@ -1371,6 +1372,18 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
|
||||
NextMetadataNo++;
|
||||
break;
|
||||
}
|
||||
case bitc::METADATA_GENERIC_SUBRANGE: {
|
||||
Metadata *Val = nullptr;
|
||||
Val = GET_OR_DISTINCT(DIGenericSubrange,
|
||||
(Context, getMDOrNull(Record[1]),
|
||||
getMDOrNull(Record[2]), getMDOrNull(Record[3]),
|
||||
getMDOrNull(Record[4])));
|
||||
|
||||
MetadataList.assignValue(Val, NextMetadataNo);
|
||||
IsDistinct = Record[0] & 1;
|
||||
NextMetadataNo++;
|
||||
break;
|
||||
}
|
||||
case bitc::METADATA_ENUMERATOR: {
|
||||
if (Record.size() < 3)
|
||||
return error("Invalid record");
|
||||
|
||||
Reference in New Issue
Block a user