Skip to content

Commit 1807e02

Browse files
authored
[llvm] Fix assertion error where we didn't check fixed point types. (#80757)
This fixes #81555
1 parent 6abf5e5 commit 1807e02

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,12 +224,15 @@ bool DebugHandlerBase::isUnsignedDIType(const DIType *Ty) {
224224
Encoding == dwarf::DW_ATE_float || Encoding == dwarf::DW_ATE_UTF ||
225225
Encoding == dwarf::DW_ATE_boolean ||
226226
Encoding == dwarf::DW_ATE_complex_float ||
227+
Encoding == dwarf::DW_ATE_signed_fixed ||
228+
Encoding == dwarf::DW_ATE_unsigned_fixed ||
227229
(Ty->getTag() == dwarf::DW_TAG_unspecified_type &&
228230
Ty->getName() == "decltype(nullptr)")) &&
229231
"Unsupported encoding");
230232
return Encoding == dwarf::DW_ATE_unsigned ||
231233
Encoding == dwarf::DW_ATE_unsigned_char ||
232234
Encoding == dwarf::DW_ATE_UTF || Encoding == dwarf::DW_ATE_boolean ||
235+
Encoding == llvm::dwarf::DW_ATE_unsigned_fixed ||
233236
Ty->getTag() == dwarf::DW_TAG_unspecified_type;
234237
}
235238

llvm/test/DebugInfo/fixed-point.ll

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
;; This fixes https://github.com/llvm/llvm-project/issues/81555
2+
; RUN: %llc_dwarf %s -filetype=obj -o - | llvm-dwarfdump - | FileCheck %s
3+
; RUN: %llc_dwarf %s -filetype=obj -o - | llvm-dwarfdump - -verify | FileCheck %s --check-prefix=VERIFY
4+
5+
; VERIFY-NOT: error:
6+
7+
; CHECK: {{.*}}: DW_TAG_base_type
8+
; CHECK-NEXT: DW_AT_name ("var")
9+
; CHECK-NEXT: DW_AT_encoding (DW_ATE_signed_fixed)
10+
define void @func() !dbg !26 {
11+
entry:
12+
%classifier = alloca i32, align 4
13+
tail call void @llvm.dbg.value(metadata i32 32768, metadata !37, metadata !DIExpression()), !dbg !39
14+
store i32 32768, ptr %classifier, align 4, !dbg !39
15+
ret void
16+
}
17+
18+
declare void @llvm.dbg.value(metadata, metadata, metadata)
19+
20+
!llvm.dbg.cu = !{!0}
21+
!llvm.module.flags = !{!19}
22+
23+
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, emissionKind: FullDebug)
24+
!1 = !DIFile(filename: "a", directory: "")
25+
!6 = !DIBasicType(name: "var", size: 32, encoding: DW_ATE_signed_fixed)
26+
!19 = !{i32 2, !"Debug Info Version", i32 3}
27+
!3 = !DISubroutineType(types: null)
28+
!26 = distinct !DISubprogram(unit: !0, type: !3)
29+
!37 = !DILocalVariable(name: "intercept", arg: 2, scope: !26, file: !1, line: 7, type: !6)
30+
!39 = !DILocation(line: 0, scope: !26)
31+

0 commit comments

Comments
 (0)