|
clang
5.0.0
|
Public Member Functions | |
| MPIChecker () | |
| void | checkPreCall (const CallEvent &CE, CheckerContext &Ctx) const |
| void | checkDeadSymbols (SymbolReaper &SymReaper, CheckerContext &Ctx) const |
| void | dynamicInit (CheckerContext &Ctx) const |
| void | checkDoubleNonblocking (const clang::ento::CallEvent &PreCallEvent, clang::ento::CheckerContext &Ctx) const |
| Checks if a request is used by nonblocking calls multiple times in sequence without intermediate wait. More... | |
| void | checkUnmatchedWaits (const clang::ento::CallEvent &PreCallEvent, clang::ento::CheckerContext &Ctx) const |
| Checks if the request used by the wait function was not used at all before. More... | |
| void | checkMissingWaits (clang::ento::SymbolReaper &SymReaper, clang::ento::CheckerContext &Ctx) const |
| Check if a nonblocking call is not matched by a wait. More... | |
Public Member Functions inherited from clang::ento::CheckerBase | |
| StringRef | getTagDescription () const override |
| CheckName | getCheckName () const |
| virtual void | printState (raw_ostream &Out, ProgramStateRef State, const char *NL, const char *Sep) const |
| See CheckerManager::runCheckersForPrintState. More... | |
Public Member Functions inherited from clang::ProgramPointTag | |
| ProgramPointTag (void *tagKind=nullptr) | |
| virtual | ~ProgramPointTag () |
Additional Inherited Members | |
Static Public Member Functions inherited from clang::ento::Checker< check::PreCall, check::DeadSymbols > | |
| static void | _register (CHECKER *checker, CheckerManager &mgr) |
Static Public Member Functions inherited from clang::ento::check::PreCall | |
| template<typename CHECKER > | |
| static void | _register (CHECKER *checker, CheckerManager &mgr) |
Protected Member Functions inherited from clang::ProgramPointTag | |
| const void * | getTagKind () |
| Used to implement 'isKind' in subclasses. More... | |
Definition at line 31 of file MPIChecker.h.
|
inline |
Definition at line 33 of file MPIChecker.h.
|
inline |
Definition at line 42 of file MPIChecker.h.
References checkMissingWaits(), and dynamicInit().
| void clang::ento::mpi::MPIChecker::checkDoubleNonblocking | ( | const clang::ento::CallEvent & | PreCallEvent, |
| clang::ento::CheckerContext & | Ctx | ||
| ) | const |
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.
| PreCallEvent | MPI call to verify |
Definition at line 25 of file MPIChecker.cpp.
References clang::ento::CheckerContext::addTransition(), clang::ento::mpi::Request::CurrentState, clang::ento::CheckerContext::generateNonFatalErrorNode(), clang::ento::CallEvent::getArgSVal(), clang::ento::CheckerContext::getBugReporter(), clang::ento::CallEvent::getCalleeIdentifier(), clang::ento::CallEvent::getNumArgs(), clang::ento::CheckerContext::getState(), clang::ento::ExplodedNode::getState(), clang::ento::SubRegion::getSuperRegion(), clang::ento::mpi::MPIBugReporter::reportDoubleNonblocking(), and State.
Referenced by checkPreCall().
| void clang::ento::mpi::MPIChecker::checkMissingWaits | ( | clang::ento::SymbolReaper & | SymReaper, |
| clang::ento::CheckerContext & | Ctx | ||
| ) | const |
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.
Definition at line 101 of file MPIChecker.cpp.
References clang::ento::CheckerContext::addTransition(), clang::ento::CheckerContext::generateNonFatalErrorNode(), clang::ento::CheckerContext::getBugReporter(), clang::ento::CheckerContext::getState(), clang::ento::SymbolReaper::hasDeadSymbols(), clang::ento::SymbolReaper::isLiveRegion(), clang::ento::mpi::MPIBugReporter::reportMissingWait(), and State.
Referenced by checkDeadSymbols().
|
inline |
Definition at line 36 of file MPIChecker.h.
References checkDoubleNonblocking(), checkUnmatchedWaits(), and dynamicInit().
| void clang::ento::mpi::MPIChecker::checkUnmatchedWaits | ( | const clang::ento::CallEvent & | PreCallEvent, |
| clang::ento::CheckerContext & | Ctx | ||
| ) | const |
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.
| PreCallEvent | MPI call to verify |
Definition at line 57 of file MPIChecker.cpp.
References clang::ento::CheckerContext::addTransition(), clang::ento::CheckerContext::generateNonFatalErrorNode(), clang::ento::CheckerContext::getBugReporter(), clang::ento::CallEvent::getCalleeIdentifier(), clang::ento::CheckerContext::getState(), clang::ento::SubRegion::getSuperRegion(), clang::ento::mpi::MPIBugReporter::reportUnmatchedWait(), and State.
Referenced by checkPreCall().
|
inline |
Definition at line 47 of file MPIChecker.h.
References clang::ento::CheckerContext::getASTContext().
Referenced by checkDeadSymbols(), and checkPreCall().
1.8.6