[llvm] 1807e02 - [llvm] Fix assertion error where we didn't check fixed point types. (#80757)

via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 15 23:29:23 PST 2024


Author: PiJoules
Date: 2024-02-15T23:29:20-08:00
New Revision: 1807e02b8c280af10628538d69e9511d3df3ed5f

URL: https://github.com/llvm/llvm-project/commit/1807e02b8c280af10628538d69e9511d3df3ed5f
DIFF: https://github.com/llvm/llvm-project/commit/1807e02b8c280af10628538d69e9511d3df3ed5f.diff

LOG: [llvm] Fix assertion error where we didn't check fixed point types. (#80757)

This fixes https://github.com/llvm/llvm-project/issues/81555

Added: 
    llvm/test/DebugInfo/fixed-point.ll

Modified: 
    llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp b/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp
index eb2d992c7e75e7..f00ff1565c665f 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp
@@ -224,12 +224,15 @@ bool DebugHandlerBase::isUnsignedDIType(const DIType *Ty) {
           Encoding == dwarf::DW_ATE_float || Encoding == dwarf::DW_ATE_UTF ||
           Encoding == dwarf::DW_ATE_boolean ||
           Encoding == dwarf::DW_ATE_complex_float ||
+          Encoding == dwarf::DW_ATE_signed_fixed ||
+          Encoding == dwarf::DW_ATE_unsigned_fixed ||
           (Ty->getTag() == dwarf::DW_TAG_unspecified_type &&
            Ty->getName() == "decltype(nullptr)")) &&
          "Unsupported encoding");
   return Encoding == dwarf::DW_ATE_unsigned ||
          Encoding == dwarf::DW_ATE_unsigned_char ||
          Encoding == dwarf::DW_ATE_UTF || Encoding == dwarf::DW_ATE_boolean ||
+         Encoding == llvm::dwarf::DW_ATE_unsigned_fixed ||
          Ty->getTag() == dwarf::DW_TAG_unspecified_type;
 }
 

diff  --git a/llvm/test/DebugInfo/fixed-point.ll b/llvm/test/DebugInfo/fixed-point.ll
new file mode 100644
index 00000000000000..0de984484c0e60
--- /dev/null
+++ b/llvm/test/DebugInfo/fixed-point.ll
@@ -0,0 +1,31 @@
+;; This fixes https://github.com/llvm/llvm-project/issues/81555
+; RUN: %llc_dwarf %s -filetype=obj -o - | llvm-dwarfdump - | FileCheck %s
+; RUN: %llc_dwarf %s -filetype=obj -o - | llvm-dwarfdump - -verify | FileCheck %s --check-prefix=VERIFY
+
+; VERIFY-NOT: error:
+
+; CHECK: {{.*}}:   DW_TAG_base_type
+; CHECK-NEXT:          DW_AT_name  ("var")
+; CHECK-NEXT:          DW_AT_encoding  (DW_ATE_signed_fixed)
+define void @func() !dbg !26 {
+entry:
+  %classifier = alloca i32, align 4
+  tail call void @llvm.dbg.value(metadata i32 32768, metadata !37, metadata !DIExpression()), !dbg !39
+  store i32 32768, ptr %classifier, align 4, !dbg !39
+  ret void
+}
+
+declare void @llvm.dbg.value(metadata, metadata, metadata)
+
+!llvm.dbg.cu = !{!0}
+!llvm.module.flags = !{!19}
+
+!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, emissionKind: FullDebug)
+!1 = !DIFile(filename: "a", directory: "")
+!6 = !DIBasicType(name: "var", size: 32, encoding: DW_ATE_signed_fixed)
+!19 = !{i32 2, !"Debug Info Version", i32 3}
+!3 = !DISubroutineType(types: null)
+!26 = distinct !DISubprogram(unit: !0, type: !3)
+!37 = !DILocalVariable(name: "intercept", arg: 2, scope: !26, file: !1, line: 7, type: !6)
+!39 = !DILocation(line: 0, scope: !26)
+


        


More information about the llvm-commits mailing list