diff options
author | Devang Patel <dpatel@apple.com> | 2009-08-31 21:34:44 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2009-08-31 21:34:44 +0000 |
commit | c9f322d9a62c57ba965678a874faad6d239b9256 (patch) | |
tree | 9c9113b85edfada55571aee3a00cd561aa1fa34f | |
parent | dc8f6049d11ee73835c7b7e9b7c6d0b9e6a2c9b1 (diff) |
Derive DICompileUnit from DIScope.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80627 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Analysis/DebugInfo.h | 10 | ||||
-rw-r--r-- | lib/Analysis/DebugInfo.cpp | 8 |
2 files changed, 15 insertions, 3 deletions
diff --git a/include/llvm/Analysis/DebugInfo.h b/include/llvm/Analysis/DebugInfo.h index 314873a384..e6737d0ef0 100644 --- a/include/llvm/Analysis/DebugInfo.h +++ b/include/llvm/Analysis/DebugInfo.h @@ -95,6 +95,7 @@ namespace llvm { bool isSubprogram() const; bool isGlobalVariable() const; bool isScope() const; + bool isCompileUnit() const; }; /// DISubrange - This is used to represent ranges, for array bounds. @@ -129,10 +130,13 @@ namespace llvm { }; /// DICompileUnit - A wrapper for a compile unit. - class DICompileUnit : public DIDescriptor { + class DICompileUnit : public DIScope { public: - explicit DICompileUnit(MDNode *N = 0) - : DIDescriptor(N, dwarf::DW_TAG_compile_unit) {} + explicit DICompileUnit(MDNode *N = 0) { + DbgNode = N; + if (DbgNode && !isCompileUnit()) + DbgNode = 0; + } unsigned getLanguage() const { return getUnsignedField(2); } const std::string &getFilename(std::string &F) const { diff --git a/lib/Analysis/DebugInfo.cpp b/lib/Analysis/DebugInfo.cpp index e815931e61..3e3b802302 100644 --- a/lib/Analysis/DebugInfo.cpp +++ b/lib/Analysis/DebugInfo.cpp @@ -227,6 +227,14 @@ bool DIDescriptor::isScope() const { return false; } +/// isCompileUnit - Return true if the specified tag is DW_TAG_compile_unit. +bool DIDescriptor::isCompileUnit() const { + assert (!isNull() && "Invalid descriptor!"); + unsigned Tag = getTag(); + + return Tag == dwarf::DW_TAG_compile_unit; +} + //===----------------------------------------------------------------------===// // Simple Descriptor Constructors and other Methods //===----------------------------------------------------------------------===// |