[llvm] Two DWARF variant part improvements (PR #138953)

Tom Tromey via llvm-commits llvm-commits at lists.llvm.org
Thu May 8 06:59:13 PDT 2025


================
@@ -961,6 +961,43 @@ void DwarfUnit::addAnnotation(DIE &Buffer, DINodeArray Annotations) {
   }
 }
 
+void DwarfUnit::addDiscriminant(DIE &Variant, Constant *Discriminant,
+                                bool IsUnsigned) {
+  if (const auto *CI = dyn_cast_or_null<ConstantInt>(Discriminant)) {
+    addInt(Variant, dwarf::DW_AT_discr_value, CI->getValue(), IsUnsigned);
+  } else if (const auto *CA =
+                 dyn_cast_or_null<ConstantDataArray>(Discriminant)) {
+    // Must have an even number of operands.
+    unsigned NElems = CA->getNumElements();
+    if (NElems % 2 != 0) {
+      return;
+    }
+
+    DIEBlock *Block = new (DIEValueAllocator) DIEBlock;
+
+    const auto AddInt = [&](const APInt &Val) {
----------------
tromey wrote:

Thanks, I fixed this.

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


More information about the llvm-commits mailing list