[DebugInfo] Support for DW_AT_associated and DW_AT_allocated.
Summary:
This support is needed for the Fortran array variables with pointer/allocatable
attribute. This support enables debugger to identify the status of variable
whether that is currently allocated/associated.
for pointer array (before allocation/association)
without DW_AT_associated
(gdb) pt ptr
type = integer (140737345375288:140737354129776)
(gdb) p ptr
value requires 35017956 bytes, which is more than max-value-size
with DW_AT_associated
(gdb) pt ptr
type = integer (:)
(gdb) p ptr
$1 = <not associated>
for allocatable array (before allocation)
without DW_AT_allocated
(gdb) pt arr
type = integer (140737345375288:140737354129776)
(gdb) p arr
value requires 35017956 bytes, which is more than max-value-size
with DW_AT_allocated
(gdb) pt arr
type = integer, allocatable (:)
(gdb) p arr
$1 = <not allocated>
Testing
- unit test cases added
- check-llvm
- check-debuginfo
Reviewed By: aprantl
Differential Revision: https://reviews.llvm.org/D83544
This commit is contained in:
committed by
Sourabh Singh Tomar
parent
5e999cbe8d
commit
2d10258a31
@@ -1632,6 +1632,8 @@ void ModuleBitcodeWriter::writeDICompositeType(
|
||||
Record.push_back(VE.getMetadataOrNullID(N->getRawIdentifier()));
|
||||
Record.push_back(VE.getMetadataOrNullID(N->getDiscriminator()));
|
||||
Record.push_back(VE.getMetadataOrNullID(N->getRawDataLocation()));
|
||||
Record.push_back(VE.getMetadataOrNullID(N->getRawAssociated()));
|
||||
Record.push_back(VE.getMetadataOrNullID(N->getRawAllocated()));
|
||||
|
||||
Stream.EmitRecord(bitc::METADATA_COMPOSITE_TYPE, Record, Abbrev);
|
||||
Record.clear();
|
||||
|
||||
Reference in New Issue
Block a user