Skip to content

Commit 77bfb15

Browse files
committed
[llvm][DebugInfo] Adjust ModuleDebugInfoPrinter to versioned language names
1 parent a9301d8 commit 77bfb15

File tree

2 files changed

+34
-6
lines changed

2 files changed

+34
-6
lines changed

llvm/lib/Analysis/ModuleDebugInfoPrinter.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,19 @@ static void printModuleDebugInfo(raw_ostream &O, const Module *M,
4343
// filenames), so just print a few useful things.
4444
for (DICompileUnit *CU : Finder.compile_units()) {
4545
O << "Compile unit: ";
46-
auto Lang =
47-
dwarf::LanguageString(CU->getSourceLanguage().getUnversionedName());
48-
if (!Lang.empty())
49-
O << Lang;
46+
47+
DISourceLanguageName Lang = CU->getSourceLanguage();
48+
auto LangStr =
49+
Lang.hasVersionedName()
50+
? dwarf::SourceLanguageNameString(
51+
static_cast<llvm::dwarf::SourceLanguageName>(Lang.getName()))
52+
: dwarf::LanguageString(Lang.getName());
53+
54+
if (!LangStr.empty())
55+
O << LangStr;
5056
else
51-
O << "unknown-language(" << CU->getSourceLanguage().getUnversionedName()
52-
<< ")";
57+
O << "unknown-language(" << CU->getSourceLanguage().getName() << ")";
58+
5359
printFile(O, CU->getFilename(), CU->getDirectory());
5460
O << '\n';
5561
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
; RUN: opt -passes='print<module-debuginfo>' -disable-output 2>&1 < %s \
2+
; RUN: | FileCheck %s
3+
4+
; CHECK: Compile unit: DW_LANG_C99 from /tmp/test1.c
5+
; CHECK: Compile unit: DW_LNAME_C from /tmp/test2.c
6+
; CHECK: Compile unit: unknown-language(0) from /tmp/test3.c
7+
8+
!llvm.dbg.cu = !{!0, !6, !10}
9+
!llvm.module.flags = !{!8, !9}
10+
11+
!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
12+
!1 = !DIFile(filename: "test1.c", directory: "/tmp")
13+
!2 = !{}
14+
!3 = !DIFile(filename: "test1.c", directory: "/tmp")
15+
!4 = !DISubroutineType(types: !7)
16+
!5 = !{null}
17+
!6 = distinct !DICompileUnit(sourceLanguageName: DW_LNAME_C, producer: "clang", isOptimized: false, emissionKind: FullDebug, file: !7, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
18+
!7 = !DIFile(filename: "test2.c", directory: "/tmp")
19+
!8 = !{i32 2, !"Dwarf Version", i32 4}
20+
!9 = !{i32 1, !"Debug Info Version", i32 3}
21+
!10 = distinct !DICompileUnit(sourceLanguageName: 0, producer: "clang", isOptimized: false, emissionKind: FullDebug, file: !11, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
22+
!11 = !DIFile(filename: "test3.c", directory: "/tmp")

0 commit comments

Comments
 (0)