llvm-project
1a23bca6 - [DebugInfo][NVPTX] Adding support for `inlined_at` debug directive in NVPTX backend (#170239)

Commit
23 days ago
[DebugInfo][NVPTX] Adding support for `inlined_at` debug directive in NVPTX backend (#170239) This change adds support for emitting the enhanced PTX debugging directives `function_name` and `inlined_at` as part of the `.loc` directive in the NVPTX backend. `.loc` syntax - >.loc file_index line_number column_position `.loc` syntax with `inlined_at` attribute - >.loc file_index line_number column_position,function_name label {+ immediate }, inlined_at file_index2 line_number2 column_position2 `inlined_at` attribute specified as part of the `.loc` directive indicates PTX instructions that are generated from a function that got inlined. It specifies the source location at which the specified function is inlined. `file_index2`, `line_number2`, and `column_position2` specify the location at which the function is inlined. The `function_name` attribute specifies an offset in the DWARF section- `.debug_str`. Offset is specified as a label expression or a label + immediate expression, where label is defined in the `.debug_str` section. DWARF section `.debug_str` contains ASCII null-terminated strings that specify the name of the function that is inlined. These attributes were introduced in PTX ISA version 7.2 (see NVIDIA’s documentation: https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#debugging-directives-loc ). To support these features, the PR introduces a new `NVPTXDwarfDebug` class derived from `DwarfDebug`, which implements NVPTX-specific logic for emitting these directives. The base DwarfDebug infrastructure is extended with new virtual functions (`initializeTargetDebugInfo()` and `recordTargetSourceLine()`) that enable the NVPTX backend to generate this additional debug information. The MC layer is also updated to emit the NVPTX-specific `.loc` attributes (function_name and inlined_at). The implementation applies to PTX ISA 7.2 and later when the debug-info emission kind is either lineTableOnly or DebugDirectiveOnly. A new command-line option, `--line-info-inlined-at=<true/false>`, is added to control whether the inlined_at attribute is generated. Note - The `NVCC` compiler already emits the `.loc` directive with `inlined_at` when compiled with `-lineinfo` option.
Author
Parents
Loading