Skip to content

Commit 0094f64

Browse files
Michael137kastiglione
authored andcommitted
[llvm][Dwarf] Add DW_LNAME_ string/enum getters (llvm#162434)
These are going to be used in a follow-up patch. And they are generally useful for consumers (we have these for most other attributes). (cherry picked from commit 9ac8cd6)
1 parent f6dd49f commit 0094f64

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

llvm/include/llvm/BinaryFormat/Dwarf.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -997,6 +997,7 @@ LLVM_ABI StringRef VisibilityString(unsigned Visibility);
997997
LLVM_ABI StringRef VirtualityString(unsigned Virtuality);
998998
LLVM_ABI StringRef EnumKindString(unsigned EnumKind);
999999
LLVM_ABI StringRef LanguageString(unsigned Language);
1000+
LLVM_ABI StringRef SourceLanguageNameString(SourceLanguageName Lang);
10001001
LLVM_ABI StringRef CaseString(unsigned Case);
10011002
LLVM_ABI StringRef ConventionString(unsigned Convention);
10021003
LLVM_ABI StringRef InlineCodeString(unsigned Code);
@@ -1037,6 +1038,7 @@ LLVM_ABI unsigned getSubOperationEncoding(unsigned OpEncoding,
10371038
LLVM_ABI unsigned getVirtuality(StringRef VirtualityString);
10381039
LLVM_ABI unsigned getEnumKind(StringRef EnumKindString);
10391040
LLVM_ABI unsigned getLanguage(StringRef LanguageString);
1041+
LLVM_ABI unsigned getSourceLanguageName(StringRef SourceLanguageNameString);
10401042
LLVM_ABI unsigned getCallingConvention(StringRef LanguageString);
10411043
LLVM_ABI unsigned getAttributeEncoding(StringRef EncodingString);
10421044
LLVM_ABI unsigned getMacinfo(StringRef MacinfoString);

llvm/lib/BinaryFormat/Dwarf.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -583,6 +583,26 @@ StringRef llvm::dwarf::LanguageDescription(dwarf::SourceLanguageName Name,
583583
return LanguageDescription(Name);
584584
}
585585

586+
llvm::StringRef llvm::dwarf::SourceLanguageNameString(SourceLanguageName Lang) {
587+
switch (Lang) {
588+
#define HANDLE_DW_LNAME(ID, NAME, DESC, LOWER_BOUND) \
589+
case DW_LNAME_##NAME: \
590+
return "DW_LNAME_" #NAME;
591+
#include "llvm/BinaryFormat/Dwarf.def"
592+
}
593+
594+
return {};
595+
}
596+
597+
unsigned
598+
llvm::dwarf::getSourceLanguageName(StringRef SourceLanguageNameString) {
599+
return StringSwitch<unsigned>(SourceLanguageNameString)
600+
#define HANDLE_DW_LNAME(ID, NAME, DESC, LOWER_BOUND) \
601+
.Case("DW_LNAME_" #NAME, DW_LNAME_##NAME)
602+
#include "llvm/BinaryFormat/Dwarf.def"
603+
.Default(0);
604+
}
605+
586606
StringRef llvm::dwarf::CaseString(unsigned Case) {
587607
switch (Case) {
588608
case DW_ID_case_sensitive:

0 commit comments

Comments
 (0)