-
Notifications
You must be signed in to change notification settings - Fork 137
Flang Fortran Debug Metadata Plan
Gary Klimowicz edited this page May 22, 2019
·
6 revisions
The table below summarizes the status of Fortran debug metadata support in Flang and the Flang-specific version of LLVM.
Area | Feature | Status | LLVM IR Metadata | DWARF Information | DWARF Generated by LLVM? |
---|---|---|---|---|---|
CHARACTER type | CHARACTER type with deferred length | Not Complete | Need to emit !DIStringType(..., stringLength:, stringLengthExpression:) | Need to emit DW_TAG_variable, DW_TAG_string_type, DW_AT_string_length | No |
Arrays | Explicit array dimensions | Completed | Emit !DIFortranArrayType, !DIFortranSubrange | Emit DW_TAG_variable, DW_TAG_array_type, DW_TAG_subrange_type | Emitted by Flang LLVM |
Arrays | Adjustable arrays | Completed | Emit !DIFortranArrayType, !DIFortranSubrange | Emit DW_TAG_variable, DW_TAG_array_type, DW_TAG_subrange_type | Emitted by Flang LLVM |
Arrays | Assumed size arrays | Completed | Emit !DIFortranArrayType, !DIFortranSubrange | Emit DW_TAG_variable, DW_TAG_array_type, DW_TAG_subrange_type | Emitted by Flang LLVM |
Arrays | Assumed shape arrays | Completed | Emit !DIFortranArrayType, !DIFortranSubrange | Emit DW_TAG_variable, DW_TAG_array_type, DW_TAG_subrange_type | Emitted by Flang LLVM |
Modules | Module variables | Completed | Emit !DIModule, !DIGlobalVariable | Emit DW_TAG_module, DW_TAG_variable | Emitted by Flang LLVM |
Modules | Module imports | Completed | Emit !DIModule, !DIImportedEntity, !DIGlobalVariable | Emit DW_TAG_module, DW_TAG_imported_module, DW_TAG_variable | Emitted by Flang LLVM |
COMMON Blocks | Named common variables | Completed | Emit !DICommonBlock, !DIGlobalVariable | Emit DW_TAG_common_block, DW_TAG_variable | Emitted by Flang LLVM |
COMMON Blocks | Unnamed common variables | Completed | Emit !DICommonBlock, !DIGlobalVariable | Emit DW_TAG_common_block, DW_TAG_variable | Emitted by Flang LLVM |
Procedures | Pure procedures | Next | Need to emit !DISubprogram(…, flags: DIFlagPure) | Need to emit DW_AT_pure | |
Procedures | Elemental procedures | Next | Need to emit !DISubprogram(…, flags: DIFlagElemental) | Need to emit DW_AT_elemental | |
Procedures | Recursive procedures | Next | Need to emit !DISubprogram(…, flags: DIFlagRecursive | Need to emit DW_AT_recursive | |
Procedures | Alternate entries | To Do | Need to emit !DIEntryPoint | Need to emit DW_AT_entry_point | |
Allocatables, Pointers | Variable metadata | Completed | |||
C Interop | To Do | ||||
Finalization | To Do | ||||
Associate | Associate names | To Do |