clang  3.9.0
Public Member Functions | List of all members
clang::ento::mpi::MPIChecker Class Reference

#include <MPIChecker.h>

Inheritance diagram for clang::ento::mpi::MPIChecker:
[legend]
Collaboration diagram for clang::ento::mpi::MPIChecker:
[legend]

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 a request is used by a wait multiple times in sequence without intermediate nonblocking call or 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...
 

Detailed Description

Definition at line 31 of file MPIChecker.h.

Constructor & Destructor Documentation

clang::ento::mpi::MPIChecker::MPIChecker ( )
inline

Definition at line 33 of file MPIChecker.h.

Member Function Documentation

void clang::ento::mpi::MPIChecker::checkDeadSymbols ( SymbolReaper SymReaper,
CheckerContext Ctx 
) const
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
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 99 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().

void clang::ento::mpi::MPIChecker::checkPreCall ( const CallEvent CE,
CheckerContext Ctx 
) const
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 a request is used by a wait multiple times in sequence without intermediate nonblocking call or 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.

Parameters
PreCallEventMPI call to verify

Definition at line 56 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().

void clang::ento::mpi::MPIChecker::dynamicInit ( CheckerContext Ctx) const
inline

Definition at line 47 of file MPIChecker.h.

References clang::ento::CheckerContext::getASTContext().

Referenced by checkDeadSymbols(), and checkPreCall().


The documentation for this class was generated from the following files: