aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/DebugInfo.cpp
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2009-05-07 17:26:14 +0000
committerBill Wendling <isanbard@gmail.com>2009-05-07 17:26:14 +0000
commit5b8479c38532a28d86dea8ded09a30ff68f26912 (patch)
tree578c8cc8f428988f19a7d35f6b5d7fbec04e1b44 /lib/Analysis/DebugInfo.cpp
parent72861308d5fd60bc0d45a9683da054d4884980ee (diff)
Temporarily revert r71158. It was causing a failure during a full bootstrap:
checking for bcopy... no checking for getc_unlocked... Assertion failed: (0 && "Unknown SCEV kind!"), function operator(), file /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore.roots/llvmCore~obj/src/lib/Analysis/ScalarEvolution.cpp, line 511. /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/libdecnumber/decUtility.c:360: internal compiler error: Abort trap Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://developer.apple.com/bugreporter> for instructions. make[4]: *** [decUtility.o] Error 1 make[4]: *** Waiting for unfinished jobs.... Assertion failed: (0 && "Unknown SCEV kind!"), function operator(), file /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore.roots/llvmCore~obj/src/lib/Analysis/ScalarEvolution.cpp, line 511. /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/libdecnumber/decNumber.c:5591: internal compiler error: Abort trap Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://developer.apple.com/bugreporter> for instructions. make[4]: *** [decNumber.o] Error 1 make[3]: *** [all-stage2-libdecnumber] Error 2 make[3]: *** Waiting for unfinished jobs.... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71165 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/DebugInfo.cpp')
-rw-r--r--lib/Analysis/DebugInfo.cpp32
1 files changed, 31 insertions, 1 deletions
diff --git a/lib/Analysis/DebugInfo.cpp b/lib/Analysis/DebugInfo.cpp
index 181f3e9eff..4e398f27c1 100644
--- a/lib/Analysis/DebugInfo.cpp
+++ b/lib/Analysis/DebugInfo.cpp
@@ -59,6 +59,9 @@ bool DIDescriptor::ValidDebugInfo(Value *V, CodeGenOpt::Level OptLevel) {
case DW_TAG_subprogram:
assert(DISubprogram(GV).Verify() && "Invalid DebugInfo value");
break;
+ case DW_TAG_inlined_subroutine:
+ assert(DIInlinedSubprogram(GV).Verify() && "Invalid DebugInfo value");
+ break;
case DW_TAG_lexical_block:
/// FIXME. This interfers with the quality of generated code when
/// during optimization.
@@ -146,6 +149,8 @@ DIBasicType::DIBasicType(GlobalVariable *GV)
: DIType(GV, dwarf::DW_TAG_base_type) {}
DISubprogram::DISubprogram(GlobalVariable *GV)
: DIGlobal(GV, dwarf::DW_TAG_subprogram) {}
+DIInlinedSubprogram::DIInlinedSubprogram(GlobalVariable *GV)
+ : DIGlobal(GV, dwarf::DW_TAG_inlined_subroutine) {}
DIGlobalVariable::DIGlobalVariable(GlobalVariable *GV)
: DIGlobal(GV, dwarf::DW_TAG_variable) {}
DIBlock::DIBlock(GlobalVariable *GV)
@@ -286,6 +291,25 @@ bool DISubprogram::Verify() const {
return true;
}
+/// Verify - Verify that an inlined subprogram descriptor is well formed.
+bool DIInlinedSubprogram::Verify() const {
+ if (isNull())
+ return false;
+
+ if (getContext().isNull())
+ return false;
+
+ DICompileUnit CU = getCompileUnit();
+ if (!CU.Verify())
+ return false;
+
+ DICompositeType Ty = getType();
+ if (!Ty.isNull() && !Ty.Verify())
+ return false;
+
+ return true;
+}
+
/// Verify - Verify that a global variable descriptor is well formed.
bool DIGlobalVariable::Verify() const {
if (isNull())
@@ -983,7 +1007,8 @@ namespace llvm {
/// dump - print descriptor.
void DIDescriptor::dump() const {
- cerr << " [" << dwarf::TagString(getTag()) << "]\n";
+ cerr << "[" << dwarf::TagString(getTag()) << "] ";
+ cerr << std::hex << "[GV:" << GV << "]" << std::dec;
}
/// dump - print compile unit.
@@ -1085,6 +1110,11 @@ void DISubprogram::dump() const {
DIGlobal::dump();
}
+/// dump - print subprogram.
+void DIInlinedSubprogram::dump() const {
+ DIGlobal::dump();
+}
+
/// dump - print global variable.
void DIGlobalVariable::dump() const {
cerr << " ["; getGlobal()->dump(); cerr << "] ";