class MPIChecker
Declaration
class MPIChecker : public Checker { /* full declaration omitted */ };
Declared at: clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.h:30
Inherits from: Checker
Member Variables
- private const std::unique_ptr<MPIFunctionClassifier> FuncClassifier
- private clang::ento::mpi::MPIBugReporter BReporter
Method Overview
- public MPIChecker()
- private void allRegionsUsedByWait(llvm::SmallVector<const clang::ento::MemRegion *, 2> & ReqRegions, const clang::ento::MemRegion *const MR, const clang::ento::CallEvent & CE, clang::ento::CheckerContext & Ctx) const
- public void checkDeadSymbols(clang::ento::SymbolReaper & SymReaper, clang::ento::CheckerContext & Ctx) const
- public void checkDoubleNonblocking(const clang::ento::CallEvent & PreCallEvent, clang::ento::CheckerContext & Ctx) const
- public void checkMissingWaits(clang::ento::SymbolReaper & SymReaper, clang::ento::CheckerContext & Ctx) const
- public void checkPreCall(const clang::ento::CallEvent & CE, clang::ento::CheckerContext & Ctx) const
- public void checkUnmatchedWaits(const clang::ento::CallEvent & PreCallEvent, clang::ento::CheckerContext & Ctx) const
- public void dynamicInit(clang::ento::CheckerContext & Ctx) const
- private const clang::ento::MemRegion * topRegionUsedByWait(const clang::ento::CallEvent & CE) const
Methods
¶MPIChecker()
MPIChecker()
Declared at: clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.h:32
¶void allRegionsUsedByWait(
llvm::SmallVector<
const clang::ento::MemRegion*,
2>& ReqRegions,
const clang::ento::MemRegion* const MR,
const clang::ento::CallEvent& CE,
clang::ento::CheckerContext& Ctx) const
void allRegionsUsedByWait(
llvm::SmallVector<
const clang::ento::MemRegion*,
2>& ReqRegions,
const clang::ento::MemRegion* const MR,
const clang::ento::CallEvent& CE,
clang::ento::CheckerContext& Ctx) const
Description
Collects all memory regions of a request(array) used by a wait function. If the wait function uses a single request, this is a single region. For wait functions using multiple requests, multiple regions representing elements in the array are collected.
Declared at: clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.h:84
Parameters
- llvm::SmallVector<const clang::ento::MemRegion*, 2>& ReqRegions
- vector the regions get pushed into
- const clang::ento::MemRegion* const MR
- top most region to iterate
- const clang::ento::CallEvent& CE
- MPI wait call using the request(s)
- clang::ento::CheckerContext& Ctx
¶void checkDeadSymbols(
clang::ento::SymbolReaper& SymReaper,
clang::ento::CheckerContext& Ctx) const
void checkDeadSymbols(
clang::ento::SymbolReaper& SymReaper,
clang::ento::CheckerContext& Ctx) const
Declared at: clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.h:41
Parameters
- clang::ento::SymbolReaper& SymReaper
- clang::ento::CheckerContext& Ctx
¶void checkDoubleNonblocking(
const clang::ento::CallEvent& PreCallEvent,
clang::ento::CheckerContext& Ctx) const
void checkDoubleNonblocking(
const clang::ento::CallEvent& PreCallEvent,
clang::ento::CheckerContext& Ctx) const
Description
Checks if a request is used by nonblocking calls multiple times in sequence without intermediate wait. The check contains a guard, in order to only inspect nonblocking functions.
Declared at: clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.h:58
Parameters
- const clang::ento::CallEvent& PreCallEvent
- MPI call to verify
- clang::ento::CheckerContext& Ctx
¶void checkMissingWaits(
clang::ento::SymbolReaper& SymReaper,
clang::ento::CheckerContext& Ctx) const
void checkMissingWaits(
clang::ento::SymbolReaper& SymReaper,
clang::ento::CheckerContext& Ctx) const
Description
Check if a nonblocking call is not matched by a wait. If a memory region is not alive and the last function using the request was a nonblocking call, this is rated as a missing wait.
Declared at: clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.h:72
Parameters
- clang::ento::SymbolReaper& SymReaper
- clang::ento::CheckerContext& Ctx
¶void checkPreCall(
const clang::ento::CallEvent& CE,
clang::ento::CheckerContext& Ctx) const
void checkPreCall(
const clang::ento::CallEvent& CE,
clang::ento::CheckerContext& Ctx) const
Declared at: clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.h:35
Parameters
- const clang::ento::CallEvent& CE
- clang::ento::CheckerContext& Ctx
¶void checkUnmatchedWaits(
const clang::ento::CallEvent& PreCallEvent,
clang::ento::CheckerContext& Ctx) const
void checkUnmatchedWaits(
const clang::ento::CallEvent& PreCallEvent,
clang::ento::CheckerContext& Ctx) const
Description
Checks if the request used by the wait function was not used at all before. The check contains a guard, in order to only inspect wait functions.
Declared at: clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.h:66
Parameters
- const clang::ento::CallEvent& PreCallEvent
- MPI call to verify
- clang::ento::CheckerContext& Ctx
¶void dynamicInit(
clang::ento::CheckerContext& Ctx) const
void dynamicInit(
clang::ento::CheckerContext& Ctx) const
Declared at: clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.h:46
Parameters
¶const clang::ento::MemRegion* topRegionUsedByWait(
const clang::ento::CallEvent& CE) const
const clang::ento::MemRegion* topRegionUsedByWait(
const clang::ento::CallEvent& CE) const
Description
Returns the memory region used by a wait function. Distinguishes between MPI_Wait and MPI_Waitall.
Declared at: clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.h:94
Parameters
- const clang::ento::CallEvent& CE
- MPI wait call