From: Devang Patel Date: Mon, 31 Aug 2009 22:00:15 +0000 (+0000) Subject: Rename DIBlock as DILexicalBlock. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=5e005d814f13f1796cf9e32c7525a5241fface1a;p=oota-llvm.git Rename DIBlock as DILexicalBlock. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80633 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Analysis/DebugInfo.h b/include/llvm/Analysis/DebugInfo.h index e6737d0ef0a..f27d03b7d0b 100644 --- a/include/llvm/Analysis/DebugInfo.h +++ b/include/llvm/Analysis/DebugInfo.h @@ -96,6 +96,7 @@ namespace llvm { bool isGlobalVariable() const; bool isScope() const; bool isCompileUnit() const; + bool isLexicalBlock() const; }; /// DISubrange - This is used to represent ranges, for array bounds. @@ -419,12 +420,14 @@ namespace llvm { void dump() const; }; - /// DIBlock - This is a wrapper for a block (e.g. a function, scope, etc). - class DIBlock : public DIDescriptor { + /// DILexicalBlock - This is a wrapper for a lexical block. + class DILexicalBlock : public DIScope { public: - explicit DIBlock(MDNode *N = 0) - : DIDescriptor(N, dwarf::DW_TAG_lexical_block) {} - + explicit DILexicalBlock(MDNode *N = 0) { + DbgNode = N; + if (DbgNode && !isLexicalBlock()) + DbgNode = 0; + } DIDescriptor getContext() const { return getDescriptorField(1); } }; @@ -524,9 +527,9 @@ namespace llvm { DICompileUnit CompileUnit, unsigned LineNo, DIType Type); - /// CreateBlock - This creates a descriptor for a lexical block with the - /// specified parent context. - DIBlock CreateBlock(DIDescriptor Context); + /// CreateLexicalBlock - This creates a descriptor for a lexical block + /// with the specified parent context. + DILexicalBlock CreateLexicalBlock(DIDescriptor Context); /// InsertStopPoint - Create a new llvm.dbg.stoppoint intrinsic invocation, /// inserting it at the end of the specified basic block. diff --git a/lib/Analysis/DebugInfo.cpp b/lib/Analysis/DebugInfo.cpp index 3e3b8023024..92731335af9 100644 --- a/lib/Analysis/DebugInfo.cpp +++ b/lib/Analysis/DebugInfo.cpp @@ -235,6 +235,14 @@ bool DIDescriptor::isCompileUnit() const { return Tag == dwarf::DW_TAG_compile_unit; } +/// isLexicalBlock - Return true if the specified tag is DW_TAG_lexical_block. +bool DIDescriptor::isLexicalBlock() const { + assert (!isNull() && "Invalid descriptor!"); + unsigned Tag = getTag(); + + return Tag == dwarf::DW_TAG_lexical_block; +} + //===----------------------------------------------------------------------===// // Simple Descriptor Constructors and other Methods //===----------------------------------------------------------------------===// @@ -758,12 +766,12 @@ DIVariable DIFactory::CreateVariable(unsigned Tag, DIDescriptor Context, /// CreateBlock - This creates a descriptor for a lexical block with the /// specified parent VMContext. -DIBlock DIFactory::CreateBlock(DIDescriptor Context) { +DILexicalBlock DIFactory::CreateLexicalBlock(DIDescriptor Context) { Value *Elts[] = { GetTagConstant(dwarf::DW_TAG_lexical_block), Context.getNode() }; - return DIBlock(MDNode::get(VMContext, &Elts[0], 2)); + return DILexicalBlock(MDNode::get(VMContext, &Elts[0], 2)); } diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 40ff3e49cf7..f7e782c794a 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -1222,7 +1222,7 @@ DbgScope *DwarfDebug::getOrCreateScope(MDNode *N) { if (Slot) return Slot; DbgScope *Parent = NULL; - DIBlock Block(N); + DILexicalBlock Block(N); // Don't create a new scope if we already created one for an inlined function. DenseMap::iterator