-
Notifications
You must be signed in to change notification settings - Fork 141
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 |