aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2009-08-31 21:34:44 +0000
committerDevang Patel <dpatel@apple.com>2009-08-31 21:34:44 +0000
commitc9f322d9a62c57ba965678a874faad6d239b9256 (patch)
tree9c9113b85edfada55571aee3a00cd561aa1fa34f
parentdc8f6049d11ee73835c7b7e9b7c6d0b9e6a2c9b1 (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.h10
-rw-r--r--lib/Analysis/DebugInfo.cpp8
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
//===----------------------------------------------------------------------===//