003 File Manager
Current Path:
/usr/src/contrib/llvm-project/clang/lib/StaticAnalyzer/Core
usr
/
src
/
contrib
/
llvm-project
/
clang
/
lib
/
StaticAnalyzer
/
Core
/
📁
..
📄
APSIntType.cpp
(1.53 KB)
📄
AnalysisManager.cpp
(2.59 KB)
📄
AnalyzerOptions.cpp
(6.85 KB)
📄
BasicValueFactory.cpp
(9.8 KB)
📄
BlockCounter.cpp
(2.5 KB)
📄
BugReporter.cpp
(115.16 KB)
📄
BugReporterVisitors.cpp
(105.05 KB)
📄
CallEvent.cpp
(50.1 KB)
📄
Checker.cpp
(1.42 KB)
📄
CheckerContext.cpp
(4.54 KB)
📄
CheckerHelpers.cpp
(4.38 KB)
📄
CheckerManager.cpp
(32.45 KB)
📄
CheckerRegistryData.cpp
(8.19 KB)
📄
CommonBugCategories.cpp
(1.03 KB)
📄
ConstraintManager.cpp
(1.69 KB)
📄
CoreEngine.cpp
(22.98 KB)
📄
DynamicSize.cpp
(2.76 KB)
📄
DynamicType.cpp
(11.09 KB)
📄
Environment.cpp
(8.97 KB)
📄
ExplodedGraph.cpp
(17.8 KB)
📄
ExprEngine.cpp
(119.37 KB)
📄
ExprEngineC.cpp
(43.12 KB)
📄
ExprEngineCXX.cpp
(43.21 KB)
📄
ExprEngineCallAndReturn.cpp
(43.63 KB)
📄
ExprEngineObjC.cpp
(11.57 KB)
📄
FunctionSummary.cpp
(1000 B)
📄
HTMLDiagnostics.cpp
(36.55 KB)
📄
IssueHash.cpp
(6.14 KB)
📄
LoopUnrolling.cpp
(11.23 KB)
📄
LoopWidening.cpp
(4.03 KB)
📄
MemRegion.cpp
(55.71 KB)
📄
PlistDiagnostics.cpp
(43.27 KB)
📄
PrettyStackTraceLocationContext.h
(1.3 KB)
📄
ProgramState.cpp
(21.81 KB)
📄
RangeConstraintManager.cpp
(50.62 KB)
📄
RangedConstraintManager.cpp
(8.08 KB)
📄
RegionStore.cpp
(97.14 KB)
📄
SMTConstraintManager.cpp
(657 B)
📄
SValBuilder.cpp
(23.41 KB)
📄
SVals.cpp
(12.25 KB)
📄
SarifDiagnostics.cpp
(14.69 KB)
📄
SimpleConstraintManager.cpp
(4.57 KB)
📄
SimpleSValBuilder.cpp
(50.41 KB)
📄
Store.cpp
(21.79 KB)
📄
SymbolManager.cpp
(16.21 KB)
📄
TextDiagnostics.cpp
(5.82 KB)
📄
WorkList.cpp
(8.62 KB)
Editing: BlockCounter.cpp
//==- BlockCounter.h - ADT for counting block visits -------------*- 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 // //===----------------------------------------------------------------------===// // // This file defines BlockCounter, an abstract data type used to count // the number of times a given block has been visited along a path // analyzed by CoreEngine. // //===----------------------------------------------------------------------===// #include "clang/StaticAnalyzer/Core/PathSensitive/BlockCounter.h" #include "llvm/ADT/ImmutableMap.h" using namespace clang; using namespace ento; namespace { class CountKey { const StackFrameContext *CallSite; unsigned BlockID; public: CountKey(const StackFrameContext *CS, unsigned ID) : CallSite(CS), BlockID(ID) {} bool operator==(const CountKey &RHS) const { return (CallSite == RHS.CallSite) && (BlockID == RHS.BlockID); } bool operator<(const CountKey &RHS) const { return std::tie(CallSite, BlockID) < std::tie(RHS.CallSite, RHS.BlockID); } void Profile(llvm::FoldingSetNodeID &ID) const { ID.AddPointer(CallSite); ID.AddInteger(BlockID); } }; } typedef llvm::ImmutableMap<CountKey, unsigned> CountMap; static inline CountMap GetMap(void *D) { return CountMap(static_cast<CountMap::TreeTy*>(D)); } static inline CountMap::Factory& GetFactory(void *F) { return *static_cast<CountMap::Factory*>(F); } unsigned BlockCounter::getNumVisited(const StackFrameContext *CallSite, unsigned BlockID) const { CountMap M = GetMap(Data); CountMap::data_type* T = M.lookup(CountKey(CallSite, BlockID)); return T ? *T : 0; } BlockCounter::Factory::Factory(llvm::BumpPtrAllocator& Alloc) { F = new CountMap::Factory(Alloc); } BlockCounter::Factory::~Factory() { delete static_cast<CountMap::Factory*>(F); } BlockCounter BlockCounter::Factory::IncrementCount(BlockCounter BC, const StackFrameContext *CallSite, unsigned BlockID) { return BlockCounter(GetFactory(F).add(GetMap(BC.Data), CountKey(CallSite, BlockID), BC.getNumVisited(CallSite, BlockID)+1).getRoot()); } BlockCounter BlockCounter::Factory::GetEmptyCounter() { return BlockCounter(GetFactory(F).getEmptyMap().getRoot()); }
Upload File
Create Folder