clang 22.0.0git
|
SubRegion - A region that subsets another larger region. More...
#include "clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h"
Public Member Functions | |
LLVM_ATTRIBUTE_RETURNS_NONNULL const MemRegion * | getSuperRegion () const |
MemRegionManager & | getMemRegionManager () const override |
bool | isSubRegionOf (const MemRegion *R) const override |
Check if the region is a subregion of the given region. | |
Public Member Functions inherited from clang::ento::MemRegion | |
ASTContext & | getContext () const |
virtual void | Profile (llvm::FoldingSetNodeID &ID) const =0 |
LLVM_ATTRIBUTE_RETURNS_NONNULL const MemSpaceRegion * | getRawMemorySpace () const |
Deprecated. | |
template<class MemSpace> | |
const MemSpace * | getRawMemorySpaceAs () const |
Deprecated. Use getMemorySpace(ProgramStateRef) instead. | |
LLVM_ATTRIBUTE_RETURNS_NONNULL const MemSpaceRegion * | getMemorySpace (ProgramStateRef State) const |
Returns the most specific memory space for this memory region in the given ProgramStateRef. | |
template<class MemSpace> | |
const MemSpace * | getMemorySpaceAs (ProgramStateRef State) const |
template<typename... MemorySpaces> | |
bool | hasMemorySpace (ProgramStateRef State) const |
ProgramStateRef | setMemorySpace (ProgramStateRef State, const MemSpaceRegion *Space) const |
Set the dynamically deduced memory space of a MemRegion that currently has UnknownSpaceRegion. | |
LLVM_ATTRIBUTE_RETURNS_NONNULL const MemRegion * | getBaseRegion () const |
LLVM_ATTRIBUTE_RETURNS_NONNULL const MemRegion * | getMostDerivedObjectRegion () const |
Recursively retrieve the region of the most derived class instance of regions of C++ base class instances. | |
LLVM_ATTRIBUTE_RETURNS_NONNULL const MemRegion * | StripCasts (bool StripBaseAndDerivedCasts=true) const |
const SymbolicRegion * | getSymbolicBase () const |
If this is a symbolic region, returns the region. | |
RegionOffset | getAsOffset () const |
Compute the offset within the top level memory object. | |
std::string | getString () const |
Get a string representation of a region for debug use. | |
virtual void | dumpToStream (raw_ostream &os) const |
void | dump () const |
virtual bool | canPrintPretty () const |
Returns true if this region can be printed in a user-friendly way. | |
virtual void | printPretty (raw_ostream &os) const |
Print the region for use in diagnostics. | |
virtual bool | canPrintPrettyAsExpr () const |
Returns true if this region's textual representation can be used as part of a larger expression. | |
virtual void | printPrettyAsExpr (raw_ostream &os) const |
Print the region as expression. | |
Kind | getKind () const |
StringRef | getKindStr () const |
template<typename RegionTy> | |
const RegionTy * | getAs () const |
template<typename RegionTy> | |
LLVM_ATTRIBUTE_RETURNS_NONNULL const RegionTy * | castAs () const |
virtual bool | isBoundable () const |
std::string | getDescriptiveName (bool UseQuotes=true) const |
Get descriptive name for memory region. | |
SourceRange | sourceRange () const |
Retrieve source range from memory region. |
Static Public Member Functions | |
static bool | classof (const MemRegion *R) |
Protected Member Functions | |
SubRegion (const MemRegion *sReg, Kind k) | |
Protected Member Functions inherited from clang::ento::MemRegion | |
MemRegion (Kind k) | |
virtual | ~MemRegion () |
Protected Attributes | |
const MemRegion * | superRegion |
Additional Inherited Members | |
Public Types inherited from clang::ento::MemRegion | |
enum | Kind |
SubRegion - A region that subsets another larger region.
Most regions are subclasses of SubRegion.
Definition at line 474 of file MemRegion.h.
Definition at line 480 of file MemRegion.h.
References classof(), clang::ento::MemRegion::MemRegion(), and superRegion.
Referenced by getMemRegionManager(), clang::ento::AllocaRegion::MemRegionManager, clang::ento::SymbolicRegion::MemRegionManager, and clang::ento::TypedRegion::TypedRegion().
Definition at line 495 of file MemRegion.h.
References clang::ento::MemRegion::getKind(), and clang::ento::MemRegion::MemRegion().
Referenced by SubRegion().
|
overridevirtual |
Implements clang::ento::MemRegion.
Definition at line 154 of file MemRegion.cpp.
References getSuperRegion(), clang::ento::MemRegion::MemRegion(), SubRegion(), and superRegion.
Referenced by collectSubRegionBindings(), and escapeByStartIndexAndCount().
|
inline |
Definition at line 487 of file MemRegion.h.
References clang::ento::MemRegion::MemRegion(), and superRegion.
Referenced by clang::ento::mpi::MPIChecker::checkDoubleNonblocking(), clang::ento::retaincountchecker::RetainCountChecker::checkPostStmt(), clang::ento::mpi::MPIChecker::checkUnmatchedWaits(), computeOffset(), dereference(), clang::ento::SymbolicRegion::dumpToStream(), evalBinOpFieldRegionFieldRegion(), clang::ento::ElementRegion::getAsArrayOffset(), clang::ento::MemRegion::getDescriptiveName(), getElementRegionOffsetsWithBase(), getMemRegionManager(), isArrayIndexOutOfBounds(), clang::ento::BlockDataRegion::Profile(), clang::ento::CXXLifetimeExtendedObjectRegion::Profile(), clang::ento::CXXTempObjectRegion::Profile(), clang::ento::SymbolicRegion::Profile(), clang::ento::SValExplainer::VisitCXXBaseObjectRegion(), clang::ento::SValExplainer::VisitElementRegion(), clang::ento::SValExplainer::VisitFieldRegion(), and clang::ento::SValExplainer::VisitObjCIvarRegion().
Check if the region is a subregion of the given region.
Each region is a subregion of itself.
Reimplemented from clang::ento::MemRegion.
Definition at line 141 of file MemRegion.cpp.
References clang::ento::MemRegion::MemRegion().
Referenced by collectSubRegionBindings(), clang::ento::taint::getTaintedSymbolsImpl(), wasRegionOfInterestModifiedAt(), and willObjectBeAnalyzedLater().
|
protected |
Definition at line 478 of file MemRegion.h.
Referenced by clang::ento::CXXBaseObjectRegion::canPrintPrettyAsExpr(), clang::ento::CXXDerivedObjectRegion::canPrintPrettyAsExpr(), clang::ento::FieldRegion::canPrintPrettyAsExpr(), clang::ento::CXXBaseObjectRegion::dumpToStream(), clang::ento::CXXDerivedObjectRegion::dumpToStream(), clang::ento::ElementRegion::dumpToStream(), clang::ento::FieldRegion::dumpToStream(), clang::ento::ObjCIvarRegion::dumpToStream(), getMemRegionManager(), getSuperRegion(), clang::ento::AllocaRegion::MemRegionManager, clang::ento::ObjCIvarRegion::MemRegionManager, clang::ento::CXXBaseObjectRegion::printPrettyAsExpr(), clang::ento::CXXDerivedObjectRegion::printPrettyAsExpr(), clang::ento::FieldRegion::printPrettyAsExpr(), clang::ento::AllocaRegion::Profile(), clang::ento::BlockCodeRegion::Profile(), clang::ento::CompoundLiteralRegion::Profile(), clang::ento::CXXBaseObjectRegion::Profile(), clang::ento::CXXDerivedObjectRegion::Profile(), clang::ento::CXXThisRegion::Profile(), clang::ento::ElementRegion::Profile(), clang::ento::FieldRegion::Profile(), clang::ento::FunctionCodeRegion::Profile(), clang::ento::NonParamVarRegion::Profile(), clang::ento::ObjCIvarRegion::Profile(), clang::ento::ObjCStringRegion::Profile(), clang::ento::ParamVarRegion::Profile(), clang::ento::StringRegion::Profile(), and SubRegion().