| //==- PrettyStackTraceLocationContext.h - show analysis backtrace --*- C++ -*-// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_CLANG_LIB_STATICANALYZER_CORE_PRETTYSTACKTRACELOCATIONCONTEXT_H |
| #define LLVM_CLANG_LIB_STATICANALYZER_CORE_PRETTYSTACKTRACELOCATIONCONTEXT_H |
| |
| #include "clang/Analysis/AnalysisDeclContext.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); |
| } |
| |
| void print(raw_ostream &Out) const override { |
| Out << "While analyzing stack: \n"; |
| LCtx->dumpStack(Out); |
| } |
| }; |
| |
| } // end ento namespace |
| } // end clang namespace |
| |
| #endif |