clang 20.0.0git
|
It wraps the AnalysisDeclContext to represent both the call stack with the help of StackFrameContext and inside the function calls the BlockInvocationContext. More...
#include "clang/Analysis/AnalysisDeclContext.h"
Public Types | |
enum | ContextKind { StackFrame , Block } |
Public Member Functions | |
virtual | ~LocationContext () |
ContextKind | getKind () const |
int64_t | getID () const |
LLVM_ATTRIBUTE_RETURNS_NONNULL AnalysisDeclContext * | getAnalysisDeclContext () const |
const LocationContext * | getParent () const |
It might return null. | |
bool | isParentOf (const LocationContext *LC) const |
const Decl * | getDecl () const |
CFG * | getCFG () const |
template<typename T > | |
T * | getAnalysis () const |
const ParentMap & | getParentMap () const |
const ImplicitParamDecl * | getSelfDecl () const |
const StackFrameContext * | getStackFrame () const |
virtual bool | inTopFrame () const |
virtual void | Profile (llvm::FoldingSetNodeID &ID)=0 |
LLVM_DUMP_METHOD void | dumpStack (raw_ostream &Out) const |
Prints out the call stack. | |
void | printJson (raw_ostream &Out, const char *NL="\n", unsigned int Space=0, bool IsDot=false, std::function< void(const LocationContext *)> printMoreInfoPerContext=[](const LocationContext *) {}) const |
Prints out the call stack in json format. | |
LLVM_DUMP_METHOD void | dump () const |
Static Public Member Functions | |
static void | ProfileCommon (llvm::FoldingSetNodeID &ID, ContextKind ck, AnalysisDeclContext *ctx, const LocationContext *parent, const void *data) |
Protected Member Functions | |
LocationContext (ContextKind k, AnalysisDeclContext *ctx, const LocationContext *parent, int64_t ID) | |
It wraps the AnalysisDeclContext to represent both the call stack with the help of StackFrameContext and inside the function calls the BlockInvocationContext.
It is needed for context sensitive analysis to model entering, leaving or inlining function calls.
Definition at line 215 of file AnalysisDeclContext.h.
Enumerator | |
---|---|
StackFrame | |
Block |
Definition at line 217 of file AnalysisDeclContext.h.
|
inlineprotected |
Definition at line 230 of file AnalysisDeclContext.h.
References Parent.
|
virtualdefault |
LLVM_DUMP_METHOD void LocationContext::dump | ( | ) | const |
Definition at line 583 of file AnalysisDeclContext.cpp.
References printJson().
void LocationContext::dumpStack | ( | raw_ostream & | Out | ) | const |
Prints out the call stack.
Out | The out stream. |
Definition at line 496 of file AnalysisDeclContext.cpp.
References Block, D, getAnalysisDeclContext(), clang::AnalysisDeclContext::getASTContext(), clang::Decl::getBeginLoc(), getDecl(), clang::AnalysisDeclContext::getFunctionName(), clang::ASTContext::getLangOpts(), getParent(), clang::ASTContext::getSourceManager(), printLocation(), SM, StackFrame, and clang::PrintingPolicy::TerseOutput.
Referenced by clang::ento::PrettyStackTraceLocationContext::print().
Definition at line 255 of file AnalysisDeclContext.h.
References clang::AnalysisDeclContext::getAnalysis(), and clang::T.
Referenced by clang::ento::ExplodedNode::getAnalysis().
|
inline |
Definition at line 244 of file AnalysisDeclContext.h.
Referenced by clang::ento::SValBuilder::conjureSymbolVal(), dumpStack(), findTopAutosynthesizedParentContext(), clang::ento::SValBuilder::getBlockPointer(), clang::ento::CallEvent::getCalleeAnalysisDeclContext(), clang::ento::CallEvent::getCalleeStackFrame(), clang::ento::ExplodedNode::getCFGBlock(), clang::ento::CheckerContext::getCurrentAnalysisDeclContext(), clang::ento::ObjCMethodCall::getInitialStackFrameContents(), getLocationForCaller(), clang::ento::AnyFunctionCall::getRuntimeDefinition(), clang::ento::ExplodedNode::getStmtForDiagnostics(), clang::ento::getWidenedLoopState(), clang::ento::isPossiblyEscaped(), clang::ento::retaincountchecker::isSynthesizedAccessor(), printIndicesOfElementsToConstructJson(), clang::ProgramPoint::printJson(), printJson(), printObjectsUnderConstructionJson(), printPendingInitLoopJson(), clang::ento::ExprEngine::processCallExit(), clang::StackFrameContext::Profile(), clang::BlockInvocationContext::Profile(), clang::ento::ExprEngine::removeDeadOnEndOfFunction(), clang::ento::PathDiagnosticCallPiece::setCallee(), shouldRemoveDeadBindings(), and clang::ento::SuppressInlineDefensiveChecksVisitor::VisitNode().
|
inline |
Definition at line 253 of file AnalysisDeclContext.h.
References clang::AnalysisDeclContext::getCFG().
Referenced by clang::ento::CoreEngine::ExecuteWorkList(), clang::FunctionExitPoint::getBlock(), clang::ento::ExplodedNode::getCFG(), clang::CallEnter::getEntry(), clang::ento::PathSensitiveBugReport::getStmt(), and clang::ento::NoStateChangeFuncVisitor::VisitNode().
|
inline |
Definition at line 251 of file AnalysisDeclContext.h.
References clang::AnalysisDeclContext::getDecl().
Referenced by clang::ento::retaincountchecker::RetainCountChecker::checkBeginFunction(), checkInvariantViolation(), checkSelfIvarsForInvariantViolation(), clang::ento::ExprEngine::computeObjectUnderConstruction(), clang::ento::PathDiagnosticCallPiece::construct(), clang::ento::PathDiagnosticLocation::createDeclBegin(), clang::ento::PathDiagnosticLocation::createDeclEnd(), dumpStack(), clang::ento::SymbolConjured::dumpToStream(), clang::ento::CoreEngine::ExecuteWorkList(), clang::ento::ExprEngine::ExecuteWorkList(), clang::ento::LikelyFalsePositiveSuppressionBRVisitor::finalizeVisitor(), findExecutedLines(), clang::ento::CallEventManager::getCaller(), clang::ento::ExplodedNode::getCodeDecl(), clang::ento::MemRegionManager::getCXXThisRegion(), clang::ento::ParamVarRegion::getDecl(), clang::ento::PathSensitiveBugReport::getDeclWithIssue(), getEnclosingStmtLocation(), clang::ento::AnyFunctionCall::getInitialStackFrameContents(), clang::ento::BlockCall::getInitialStackFrameContents(), clang::ento::CXXInstanceCall::getInitialStackFrameContents(), clang::ento::AnyCXXConstructorCall::getInitialStackFrameContents(), clang::ento::ObjCMethodCall::getInitialStackFrameContents(), clang::ento::ExprEngine::getInitialState(), clang::ento::MemRegionManager::getVarRegion(), clang::ento::getWidenedLoopState(), clang::ento::isCapturedByReference(), isInMIGCall(), clang::ento::retaincountchecker::isSynthesizedAccessor(), printJson(), clang::ento::ExprEngine::ProcessBaseDtor(), clang::ento::ExprEngine::processCallExit(), clang::ento::ExprEngine::processCFGBlockEntrance(), clang::ento::ExprEngine::ProcessMemberDtor(), clang::ento::PathDiagnosticCallPiece::setCallee(), clang::ento::ExprEngine::VisitCommonDeclRefExpr(), clang::ento::SValExplainer::VisitParamVarRegion(), wasDifferentDeclUsedForInlining(), clang::ento::NoOwnershipChangeVisitor::wasModifiedInFunction(), and willObjectBeAnalyzedLater().
|
inline |
Definition at line 241 of file AnalysisDeclContext.h.
Referenced by clang::ento::SymbolConjured::dumpToStream().
|
inline |
Definition at line 239 of file AnalysisDeclContext.h.
Referenced by clang::StackFrameContext::classof(), and clang::BlockInvocationContext::classof().
|
inline |
It might return null.
Definition at line 247 of file AnalysisDeclContext.h.
References Parent.
Referenced by clang::ento::ExprEngine::computeObjectUnderConstruction(), dumpStack(), clang::ento::LikelyFalsePositiveSuppressionBRVisitor::finalizeVisitor(), findTopAutosynthesizedParentContext(), getCalleeNode(), clang::ento::CallEventManager::getCaller(), clang::ento::MemRegionManager::getCXXThisRegion(), clang::ento::CXXInheritedConstructorCall::getInheritingStackFrame(), clang::ento::ExprEngine::getInitialState(), getStackFrame(), getStackOrCaptureRegionForDeclContext(), clang::StackFrameContext::inTopFrame(), isInMIGCall(), isParentOf(), clang::ento::Environment::printJson(), printJson(), clang::ento::ExprEngine::processCallExit(), clang::ento::ExprEngine::processEndOfFunction(), clang::StackFrameContext::Profile(), clang::BlockInvocationContext::Profile(), clang::ento::ExprEngine::removeDead(), clang::ento::ExprEngine::updateObjectsUnderConstruction(), and willObjectBeAnalyzedLater().
|
inline |
Definition at line 257 of file AnalysisDeclContext.h.
References clang::AnalysisDeclContext::getParentMap().
Referenced by addContextEdges(), getEnclosingStmtLocation(), clang::ento::ObjCMethodCall::getMessageKind(), clang::ento::ExplodedNode::getParentMap(), and optimizeEdges().
|
inline |
self
if this AnalysisDeclContext wraps an ObjCMethodDecl or nullptr otherwise. Definition at line 260 of file AnalysisDeclContext.h.
References clang::AnalysisDeclContext::getSelfDecl().
Referenced by checkSelfIvarsForInvariantViolation(), and clang::ento::ProgramState::getSelfSVal().
const StackFrameContext * LocationContext::getStackFrame | ( | ) | const |
Definition at line 462 of file AnalysisDeclContext.cpp.
References getParent().
Referenced by clang::ento::NodeBuilderContext::blockCount(), clang::ento::ExprEngine::computeObjectUnderConstruction(), clang::ento::MemRegionManager::getAllocaRegion(), GetAllocationSite(), clang::ento::MemRegionManager::getBlockDataRegion(), getCalleeNode(), clang::ento::CallEventManager::getCaller(), clang::ento::MemRegionManager::getCompoundLiteralRegion(), clang::ento::MemRegionManager::getCXXLifetimeExtendedObjectRegion(), clang::ento::MemRegionManager::getCXXTempObjectRegion(), clang::ento::MemRegionManager::getCXXThisRegion(), clang::ento::PathSensitiveBugReport::getDeclWithIssue(), clang::ento::ExprEngine::getIndexOfElementToConstruct(), clang::ento::CXXInheritedConstructorCall::getInheritingStackFrame(), clang::ento::ExprEngine::getInitialState(), clang::ento::ExprEngine::getObjectUnderConstruction(), clang::ento::MemRegionManager::getParamVarRegion(), clang::ento::ExprEngine::getPendingArrayDestruction(), clang::ento::ExprEngine::getPendingInitLoop(), clang::ProgramPoint::getStackFrame(), clang::ento::MemRegionManager::getVarRegion(), clang::ento::getWidenedLoopState(), inTopFrame(), isInitializationOfVar(), isInMIGCall(), clang::ento::SymbolReaper::isLive(), clang::ento::Environment::printJson(), clang::ento::ExprEngine::ProcessBaseDtor(), clang::ento::ExprEngine::processCallExit(), clang::ento::ExprEngine::processCFGBlockEntrance(), clang::ento::ExprEngine::processEndOfFunction(), clang::ento::ExprEngine::ProcessMemberDtor(), clang::ento::ExprEngine::removeDead(), clang::ento::ExprEngine::updateObjectsUnderConstruction(), clang::ento::ExprEngine::VisitCommonDeclRefExpr(), clang::ento::NoStateChangeFuncVisitor::VisitNode(), and clang::ento::retaincountchecker::RefCountReportVisitor::VisitNode().
|
virtual |
Reimplemented in clang::StackFrameContext.
Definition at line 472 of file AnalysisDeclContext.cpp.
References getStackFrame(), and clang::StackFrameContext::inTopFrame().
Referenced by clang::ento::ExprEngine::ExecuteWorkList(), clang::ento::MemRegionManager::getCXXThisRegion(), clang::ento::CheckerContext::inTopFrame(), and clang::ento::ExprEngine::processEndOfFunction().
bool LocationContext::isParentOf | ( | const LocationContext * | LC | ) | const |
Definition at line 476 of file AnalysisDeclContext.cpp.
References getParent(), and Parent.
Referenced by GetAllocationSite(), clang::ento::SymbolReaper::isLive(), isVarAnInterestingCondition(), and clang::ento::SuppressInlineDefensiveChecksVisitor::VisitNode().
void LocationContext::printJson | ( | raw_ostream & | Out, |
const char * | NL = "\n" , |
||
unsigned int | Space = 0 , |
||
bool | IsDot = false , |
||
std::function< void(const LocationContext *)> | printMoreInfoPerContext = [](const LocationContext *) {} |
||
) | const |
Prints out the call stack in json
format.
Out | The out stream. |
NL | The newline. |
Space | The space count for indentation. |
IsDot | Whether the output format is dot . |
printMoreInfoPerContext | A callback to print more information for each context, for example: [&](const LocationContext *LC) { LC->dump(); }
It wraps the AnalysisDeclContext to represent both the call stack with the help of StackFrameContext ... Definition: AnalysisDeclContext.h:215 |
Definition at line 531 of file AnalysisDeclContext.cpp.
References Block, D, getAnalysisDeclContext(), clang::AnalysisDeclContext::getASTContext(), clang::Decl::getBeginLoc(), getDecl(), clang::ASTContext::getLangOpts(), getParent(), clang::ASTContext::getSourceManager(), clang::printSourceLocationAsJson(), SM, StackFrame, and clang::PrintingPolicy::TerseOutput.
Referenced by dump(), clang::ento::Environment::printJson(), and printStateTraitWithLocationContextJson().
|
pure virtual |
Implemented in clang::StackFrameContext, and clang::BlockInvocationContext.
|
static |
Definition at line 403 of file AnalysisDeclContext.cpp.
Referenced by clang::BlockInvocationContext::Profile(), and clang::StackFrameContext::Profile().