[llvm] [llvm][DebugInfo][DWARF] Add DW_AT_LLVM_optimized extension. (PR #214261)

via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 5 08:50:56 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-debuginfo

@llvm/pr-subscribers-llvm-binary-utilities

Author: cmtice

<details>
<summary>Changes</summary>

Add a new DW_AT extension for LLVM that indicates if a compile unit was built with optimizations enabled (very similar to Apple's DW_AT_APPLE_optimized extension).

---
Full diff: https://github.com/llvm/llvm-project/pull/214261.diff


3 Files Affected:

- (modified) llvm/include/llvm/BinaryFormat/Dwarf.def (+1) 
- (modified) llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (+3) 
- (modified) llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp (+3) 


``````````diff
diff --git a/llvm/include/llvm/BinaryFormat/Dwarf.def b/llvm/include/llvm/BinaryFormat/Dwarf.def
index 32195aae562c3..b80e2f1a584d1 100644
--- a/llvm/include/llvm/BinaryFormat/Dwarf.def
+++ b/llvm/include/llvm/BinaryFormat/Dwarf.def
@@ -654,6 +654,7 @@ HANDLE_DW_AT(0x3e12, LLVM_lane_pc, 0, LLVM)
 HANDLE_DW_AT(0x3e13, LLVM_vector_size, 0, LLVM)
 HANDLE_DW_AT(0x3e14, LLVM_virtual_call_origin, 0, LLVM)
 HANDLE_DW_AT(0x3e15, LLVM_language_dialect, 0, LLVM)
+HANDLE_DW_AT(0x3e16, LLVM_optimized, 0, LLVM)
 
 // https://llvm.org/docs/AMDGPUUsage.html#address-space-identifier
 HANDLE_DW_ASPACE(0x0, none)
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index 0b21819cb7bdf..b2228324b36b4 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -1155,6 +1155,9 @@ void DwarfDebug::finishUnitAttributes(const DICompileUnit *DIUnit,
     if (unsigned RVer = DIUnit->getRuntimeVersion())
       NewCU.addUInt(Die, dwarf::DW_AT_APPLE_major_runtime_vers,
                     dwarf::DW_FORM_data1, RVer);
+  } else {
+    if (DIUnit->isOptimized())
+      NewCU.addFlag(Die, dwarf::DW_AT_LLVM_optimized);
   }
 
   if (DIUnit->getDWOId()) {
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
index 78c0769e49161..2dc11404c1f68 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
@@ -1548,6 +1548,9 @@ void DwarfUnit::applySubprogramAttributes(const DISubprogram *SP, DIE &SPDie,
 
     if (unsigned isa = Asm->getISAEncoding())
       addUInt(SPDie, dwarf::DW_AT_APPLE_isa, dwarf::DW_FORM_flag, isa);
+  } else {
+    if (SP->isOptimized())
+      addFlag(SPDie, dwarf::DW_AT_LLVM_optimized);
   }
 
   if (SP->isLValueReference())

``````````

</details>


https://github.com/llvm/llvm-project/pull/214261


More information about the llvm-commits mailing list