summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Core/PrettyStackTraceLocationContext.h
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2013-07-19 00:59:08 +0000
committerJordan Rose <jordan_rose@apple.com>2013-07-19 00:59:08 +0000
commite9c57229f9cbcf2231779a72fa8c3614b212cae3 (patch)
tree3c467586cd856b2c6a264f646d66eec7b2bb78f0 /clang/lib/StaticAnalyzer/Core/PrettyStackTraceLocationContext.h
parent978c8393156b94317ba195b7ff5880fde6327020 (diff)
downloadbcm5719-llvm-e9c57229f9cbcf2231779a72fa8c3614b212cae3.tar.gz
bcm5719-llvm-e9c57229f9cbcf2231779a72fa8c3614b212cae3.zip
[analyzer] Include analysis stack in crash traces.
Sample output: 0. Program arguments: ... 1. <eof> parser at end of file 2. While analyzing stack: #0 void inlined() #1 void test() 3. crash-trace.c:6:3: Error evaluating statement llvm-svn: 186639
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/PrettyStackTraceLocationContext.h')
-rw-r--r--clang/lib/StaticAnalyzer/Core/PrettyStackTraceLocationContext.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/PrettyStackTraceLocationContext.h b/clang/lib/StaticAnalyzer/Core/PrettyStackTraceLocationContext.h
new file mode 100644
index 00000000000..ed64fcbec76
--- /dev/null
+++ b/clang/lib/StaticAnalyzer/Core/PrettyStackTraceLocationContext.h
@@ -0,0 +1,45 @@
+//==- PrettyStackTraceLocationContext.h - show analysis backtrace --*- C++ -*-//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_STATICANALYZER_PRETTYSTACKTRACELOCATIONCONTEXT_H
+#define LLVM_CLANG_STATICANALYZER_PRETTYSTACKTRACELOCATIONCONTEXT_H
+
+#include "clang/Analysis/AnalysisContext.h"
+
+namespace clang {
+namespace ento {
+
+/// While alive, includes the current analysis stack in a crash trace.
+///
+/// Example:
+/// \code
+/// 0. Program arguments: ...
+/// 1. <eof> parser at end of file
+/// 2. While analyzing stack:
+/// #0 void inlined()
+/// #1 void test()
+/// 3. crash-trace.c:6:3: Error evaluating statement
+/// \endcode
+class PrettyStackTraceLocationContext : public llvm::PrettyStackTraceEntry {
+ const LocationContext *LCtx;
+public:
+ PrettyStackTraceLocationContext(const LocationContext *LC) : LCtx(LC) {
+ assert(LCtx);
+ }
+
+ virtual void print(raw_ostream &OS) const {
+ OS << "While analyzing stack: \n";
+ LCtx->dumpStack(OS, "\t");
+ }
+};
+
+} // end ento namespace
+} // end clang namespace
+
+#endif
OpenPOWER on IntegriCloud