diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-02-21 00:43:09 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-02-21 00:43:09 +0000 |
commit | c22a5c2c6c519d9a5d25bc52b8b26ccebff62264 (patch) | |
tree | 5815fb10a35b7e2d5a4499c83d63b96390db8f6f /llvm/lib/IR/DebugInfo.cpp | |
parent | ee1b391275d13bc1cee933af634b9bae77f439e1 (diff) | |
download | bcm5719-llvm-c22a5c2c6c519d9a5d25bc52b8b26ccebff62264.tar.gz bcm5719-llvm-c22a5c2c6c519d9a5d25bc52b8b26ccebff62264.zip |
IR: Add debug info flag string conversions
Add `DIDescriptor::getFlag(StringRef)` and
`DIDescriptor::getFlagString(unsigned)`. The latter only converts exact
matches; I'll add separate API for breaking the flags bitfield up into
parts.
llvm-svn: 230107
Diffstat (limited to 'llvm/lib/IR/DebugInfo.cpp')
-rw-r--r-- | llvm/lib/IR/DebugInfo.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/lib/IR/DebugInfo.cpp b/llvm/lib/IR/DebugInfo.cpp index f682ad548f2..ad75fbae80d 100644 --- a/llvm/lib/IR/DebugInfo.cpp +++ b/llvm/lib/IR/DebugInfo.cpp @@ -17,6 +17,7 @@ #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/SmallString.h" +#include "llvm/ADT/StringSwitch.h" #include "llvm/Analysis/ValueTracking.h" #include "llvm/IR/Constants.h" #include "llvm/IR/DIBuilder.h" @@ -36,6 +37,24 @@ using namespace llvm::dwarf; // DIDescriptor //===----------------------------------------------------------------------===// +unsigned DIDescriptor::getFlag(StringRef Flag) { + return StringSwitch<unsigned>(Flag) +#define HANDLE_DI_FLAG(ID, NAME) .Case("DIFlag" #NAME, Flag##NAME) +#include "llvm/IR/DebugInfoFlags.def" + .Default(0); +} + +const char *DIDescriptor::getFlagString(unsigned Flag) { + switch (Flag) { + default: + return ""; +#define HANDLE_DI_FLAG(ID, NAME) \ + case Flag##NAME: \ + return "DIFlag" #NAME; +#include "llvm/IR/DebugInfoFlags.def" + } +} + bool DIDescriptor::Verify() const { return DbgNode && (DIDerivedType(DbgNode).Verify() || |