clang: clang::LocationContext Class Reference (original) (raw)
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](AnalysisDeclContext%5F8h%5Fsource.html)"
| 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 |
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.
◆ ContextKind
Definition at line 230 of file AnalysisDeclContext.h.
References LocationContext().
Referenced by clang::BlockInvocationContext::classof(), clang::StackFrameContext::classof(), dumpStack(), getParent(), getStackFrame(), isParentOf(), LocationContext(), clang::BlockInvocationContext::LocationContextManager, clang::StackFrameContext::LocationContextManager, printJson(), clang::BlockInvocationContext::Profile(), Profile(), clang::StackFrameContext::Profile(), and ProfileCommon().
◆ ~LocationContext()
| LocationContext::~LocationContext ( ) | virtualdefault |
|---|
◆ dump()
| LLVM_DUMP_METHOD void LocationContext::dump | ( | ) | const |
|---|
◆ dumpStack()
| void LocationContext::dumpStack | ( | raw_ostream & | Out | ) | const |
|---|
Prints out the call stack.
Parameters
Definition at line 499 of file AnalysisDeclContext.cpp.
References Block, clang::cast(), getAnalysisDeclContext(), clang::AnalysisDeclContext::getASTContext(), getDecl(), clang::AnalysisDeclContext::getFunctionName(), clang::ASTContext::getSourceManager(), LocationContext(), printLocation(), SM, StackFrame, and clang::PrintingPolicy::TerseOutput.
◆ getAnalysis()
template<typename T>
| T * clang::LocationContext::getAnalysis ( ) const | inline |
|---|
◆ getAnalysisDeclContext()
| LLVM_ATTRIBUTE_RETURNS_NONNULL AnalysisDeclContext * clang::LocationContext::getAnalysisDeclContext ( ) const | inline |
|---|
Definition at line 244 of file AnalysisDeclContext.h.
Referenced by clang::ento::SValBuilder::conjureSymbolVal(), dumpStack(), findTopAutosynthesizedParentContext(), clang::ento::SValBuilder::getBlockPointer(), clang::ento::ExplodedNode::getCFGBlock(), clang::ento::ObjCMethodCall::getInitialStackFrameContents(), getLocationForCaller(), clang::ento::AnyFunctionCall::getRuntimeDefinition(), clang::ento::ExplodedNode::getStmtForDiagnostics(), clang::ento::getWidenedLoopState(), clang::ento::isPossiblyEscaped(), clang::ento::retaincountchecker::isSynthesizedAccessor(), printIndicesOfElementsToConstructJson(), printJson(), clang::ProgramPoint::printJson(), printObjectsUnderConstructionJson(), printPendingInitLoopJson(), clang::ento::ExprEngine::processCallExit(), clang::BlockInvocationContext::Profile(), clang::StackFrameContext::Profile(), clang::ento::ExprEngine::removeDeadOnEndOfFunction(), clang::ento::PathDiagnosticCallPiece::setCallee(), shouldRemoveDeadBindings(), timeTraceMetadata(), and clang::ento::SuppressInlineDefensiveChecksVisitor::VisitNode().
◆ getCFG()
| CFG * clang::LocationContext::getCFG ( ) const | inline |
|---|
◆ getDecl()
| const Decl * clang::LocationContext::getDecl ( ) const | inline |
|---|
Examples
/work/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/StaticAnalyzer/Core/RegionStore.cpp.
Definition at line 251 of file AnalysisDeclContext.h.
Referenced by clang::ento::retaincountchecker::RetainCountChecker::checkBeginFunction(), checkInvariantViolation(), checkSelfIvarsForInvariantViolation(), clang::ento::ExprEngine::computeObjectUnderConstruction(), clang::ento::PathDiagnosticCallPiece::construct(), clang::ento::PathDiagnosticLocation::create(), clang::ento::PathDiagnosticLocation::createDeclBegin(), clang::ento::PathDiagnosticLocation::createDeclEnd(), dumpStack(), clang::ento::CoreEngine::ExecuteWorkList(), clang::ento::ExprEngine::ExecuteWorkList(), exitingDestructor(), 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::AnyCXXConstructorCall::getInitialStackFrameContents(), clang::ento::AnyFunctionCall::getInitialStackFrameContents(), clang::ento::BlockCall::getInitialStackFrameContents(), clang::ento::CXXInstanceCall::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::processBranch(), 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().
◆ getID()
| int64_t clang::LocationContext::getID ( ) const | inline |
|---|
◆ getKind()
| ContextKind clang::LocationContext::getKind ( ) const | inline |
|---|
◆ getParent()
It might return null.
Definition at line 247 of file AnalysisDeclContext.h.
References LocationContext().
Referenced by clang::ento::ExprEngine::computeObjectUnderConstruction(), 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(), clang::ento::ExprEngine::processCallExit(), clang::ento::ExprEngine::processEndOfFunction(), clang::BlockInvocationContext::Profile(), clang::StackFrameContext::Profile(), clang::ento::ExprEngine::removeDead(), clang::ento::ExprEngine::updateObjectsUnderConstruction(), and willObjectBeAnalyzedLater().
◆ getParentMap()
| const ParentMap & clang::LocationContext::getParentMap ( ) const | inline |
|---|
◆ getSelfDecl()
◆ getStackFrame()
Definition at line 465 of file AnalysisDeclContext.cpp.
References getParent(), and LocationContext().
Referenced by 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(), getInlinedLocationContext(), clang::ento::ExprEngine::getObjectUnderConstruction(), clang::ento::MemRegionManager::getParamVarRegion(), clang::ento::ExprEngine::getPendingArrayDestruction(), clang::ento::ExprEngine::getPendingInitLoop(), clang::AnalysisDeclContext::getStackFrame(), clang::AnalysisDeclContextManager::getStackFrame(), clang::AnalysisDeclContextManager::getStackFrame(), clang::ento::CheckerContext::getStackFrame(), 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::processBranch(), 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().
◆ inTopFrame()
| bool LocationContext::inTopFrame ( ) const | virtual |
|---|
◆ isParentOf()
◆ printJson()
Prints out the call stack in json format.
Parameters
| 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(); } LocationContext(ContextKind k, AnalysisDeclContext *ctx, const LocationContext *parent, int64_t ID) |
Definition at line 534 of file AnalysisDeclContext.cpp.
References Block, clang::cast(), std::function, getAnalysisDeclContext(), clang::AnalysisDeclContext::getASTContext(), getDecl(), clang::ASTContext::getSourceManager(), clang::Indent(), LocationContext(), clang::printSourceLocationAsJson(), SM, StackFrame, and clang::PrintingPolicy::TerseOutput.
Referenced by dump(), clang::ento::Environment::printJson(), and printStateTraitWithLocationContextJson().
◆ Profile()
| virtual void clang::LocationContext::Profile ( llvm::FoldingSetNodeID & ID) | pure virtual |
|---|
◆ ProfileCommon()
The documentation for this class was generated from the following files:
- include/clang/Analysis/AnalysisDeclContext.h
- lib/Analysis/AnalysisDeclContext.cpp