clang  6.0.0svn
Classes | Public Member Functions | List of all members
clang::ento::mpi::MPIBugReporter Class Reference

#include "/opt/doxygen-docs/src/llvm/tools/clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIBugReporter.h"

Public Member Functions

 MPIBugReporter (const CheckerBase &CB)
 
void reportDoubleNonblocking (const CallEvent &MPICallEvent, const Request &Req, const MemRegion *const RequestRegion, const ExplodedNode *const ExplNode, BugReporter &BReporter) const
 Report duplicate request use by nonblocking calls without intermediate wait. More...
 
void reportMissingWait (const Request &Req, const MemRegion *const RequestRegion, const ExplodedNode *const ExplNode, BugReporter &BReporter) const
 Report a missing wait for a nonblocking call. More...
 
void reportUnmatchedWait (const CallEvent &CE, const MemRegion *const RequestRegion, const ExplodedNode *const ExplNode, BugReporter &BReporter) const
 Report a wait on a request that has not been used at all before. More...
 

Detailed Description

Definition at line 26 of file MPIBugReporter.h.

Constructor & Destructor Documentation

◆ MPIBugReporter()

clang::ento::mpi::MPIBugReporter::MPIBugReporter ( const CheckerBase CB)
inline

Member Function Documentation

◆ reportDoubleNonblocking()

void clang::ento::mpi::MPIBugReporter::reportDoubleNonblocking ( const CallEvent MPICallEvent,
const Request Req,
const MemRegion *const  RequestRegion,
const ExplodedNode *const  ExplNode,
BugReporter BReporter 
) const

Report duplicate request use by nonblocking calls without intermediate wait.

Parameters
MPICallEventMPI call that caused the double nonblocking
Reqrequest that was used by two nonblocking calls in sequence
RequestRegionmemory region of the request
ExplNodenode in the graph the bug appeared at
BReporterbug reporter for current context

Definition at line 24 of file MPIBugReporter.cpp.

References clang::ento::BugReporter::emitReport(), clang::ento::MemRegion::getDescriptiveName(), clang::ento::CallEvent::getSourceRange(), clang::SourceRange::isValid(), and clang::ento::MemRegion::sourceRange().

Referenced by clang::ento::mpi::MPIChecker::checkDoubleNonblocking(), and MPIBugReporter().

◆ reportMissingWait()

void clang::ento::mpi::MPIBugReporter::reportMissingWait ( const Request Req,
const MemRegion *const  RequestRegion,
const ExplodedNode *const  ExplNode,
BugReporter BReporter 
) const

Report a missing wait for a nonblocking call.

Parameters
Reqrequest that is not matched by a wait
RequestRegionmemory region of the request
ExplNodenode in the graph the bug appeared at
BReporterbug reporter for current context

Definition at line 50 of file MPIBugReporter.cpp.

References clang::ento::BugReporter::emitReport(), clang::ento::MemRegion::getDescriptiveName(), and clang::ento::MemRegion::sourceRange().

Referenced by clang::ento::mpi::MPIChecker::checkMissingWaits(), and MPIBugReporter().

◆ reportUnmatchedWait()

void clang::ento::mpi::MPIBugReporter::reportUnmatchedWait ( const CallEvent CE,
const MemRegion *const  RequestRegion,
const ExplodedNode *const  ExplNode,
BugReporter BReporter 
) const

Report a wait on a request that has not been used at all before.

Parameters
CEwait call that uses the request
RequestRegionmemory region of the request
ExplNodenode in the graph the bug appeared at
BReporterbug reporter for current context

Definition at line 70 of file MPIBugReporter.cpp.

References clang::ento::PathDiagnosticLocation::create(), clang::ento::mpi::Request::CurrentState, clang::ento::BugReporter::emitReport(), clang::ento::MemRegion::getDescriptiveName(), clang::ento::ExplodedNode::getLocation(), clang::ento::BugReporterContext::getSourceManager(), clang::ento::CallEvent::getSourceRange(), clang::ento::ExplodedNode::getState(), clang::SourceRange::isValid(), P, and clang::ento::MemRegion::sourceRange().

Referenced by clang::ento::mpi::MPIChecker::checkUnmatchedWaits(), and MPIBugReporter().


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