diff options
author | Devang Patel <dpatel@apple.com> | 2009-08-31 20:44:45 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2009-08-31 20:44:45 +0000 |
commit | 43d98b3c4ecd564d4666468983322c019819f730 (patch) | |
tree | 6db693366f7d4bf9918fb8439c7d4c1cfffb962d | |
parent | 5a68509b17c8e332a434d890e1296ba677c51b03 (diff) |
Introduce DIScope.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80620 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Analysis/DebugInfo.h | 10 | ||||
-rw-r--r-- | lib/Analysis/DebugInfo.cpp | 16 |
2 files changed, 26 insertions, 0 deletions
diff --git a/include/llvm/Analysis/DebugInfo.h b/include/llvm/Analysis/DebugInfo.h index 01c1decb83..b8a6ce3cd5 100644 --- a/include/llvm/Analysis/DebugInfo.h +++ b/include/llvm/Analysis/DebugInfo.h @@ -94,6 +94,7 @@ namespace llvm { bool isVariable() const; bool isSubprogram() const; bool isGlobalVariable() const; + bool isScope() const; }; /// DISubrange - This is used to represent ranges, for array bounds. @@ -118,6 +119,15 @@ namespace llvm { } }; + /// DIScope - A base class for various scopes. + class DIScope : public DIDescriptor { + public: + explicit DIScope(MDNode *N = 0) : DIDescriptor (N) { + if (DbgNode && !isScope()) + DbgNode = 0; + } + }; + /// DICompileUnit - A wrapper for a compile unit. class DICompileUnit : public DIDescriptor { public: diff --git a/lib/Analysis/DebugInfo.cpp b/lib/Analysis/DebugInfo.cpp index a67539c1a0..e815931e61 100644 --- a/lib/Analysis/DebugInfo.cpp +++ b/lib/Analysis/DebugInfo.cpp @@ -210,6 +210,22 @@ bool DIDescriptor::isGlobalVariable() const { return Tag == dwarf::DW_TAG_variable; } +/// isScope - Return true if the specified tag is one of the scope +/// related tag. +bool DIDescriptor::isScope() const { + assert (!isNull() && "Invalid descriptor!"); + unsigned Tag = getTag(); + + switch (Tag) { + case dwarf::DW_TAG_compile_unit: + case dwarf::DW_TAG_lexical_block: + case dwarf::DW_TAG_subprogram: + return true; + default: + break; + } + return false; +} //===----------------------------------------------------------------------===// // Simple Descriptor Constructors and other Methods |