clang 22.0.0git
clang::ento::MemRegionManager Class Reference

#include "clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h"

Public Member Functions

 MemRegionManager (ASTContext &c, llvm::BumpPtrAllocator &a)
 ~MemRegionManager ()
ASTContextgetContext ()
const ASTContextgetContext () const
llvm::BumpPtrAllocator & getAllocator ()
DefinedOrUnknownSVal getStaticSize (const MemRegion *MR, SValBuilder &SVB) const
const StackLocalsSpaceRegiongetStackLocalsRegion (const StackFrameContext *STC)
 getStackLocalsRegion - Retrieve the memory region associated with the specified stack frame.
const StackArgumentsSpaceRegiongetStackArgumentsRegion (const StackFrameContext *STC)
 getStackArgumentsRegion - Retrieve the memory region associated with function/method arguments of the specified stack frame.
const GlobalsSpaceRegiongetGlobalsRegion (MemRegion::Kind K=MemRegion::GlobalInternalSpaceRegionKind, const CodeTextRegion *R=nullptr)
 getGlobalsRegion - Retrieve the memory region associated with global variables.
const HeapSpaceRegiongetHeapRegion ()
 getHeapRegion - Retrieve the memory region associated with the generic "heap".
const UnknownSpaceRegiongetUnknownRegion ()
 getUnknownRegion - Retrieve the memory region associated with unknown memory space.
const CodeSpaceRegiongetCodeRegion ()
const AllocaRegiongetAllocaRegion (const Expr *Ex, unsigned Cnt, const LocationContext *LC)
 getAllocaRegion - Retrieve a region associated with a call to alloca().
const CompoundLiteralRegiongetCompoundLiteralRegion (const CompoundLiteralExpr *CL, const LocationContext *LC)
 getCompoundLiteralRegion - Retrieve the region associated with a given CompoundLiteral.
const CXXThisRegiongetCXXThisRegion (QualType thisPointerTy, const LocationContext *LC)
 getCXXThisRegion - Retrieve the [artificial] region associated with the parameter 'this'.
const SymbolicRegiongetSymbolicRegion (SymbolRef Sym, const MemSpaceRegion *MemSpace=nullptr)
 Retrieve or create a "symbolic" memory region.
const SymbolicRegiongetSymbolicHeapRegion (SymbolRef sym)
 Return a unique symbolic region belonging to heap memory space.
const StringRegiongetStringRegion (const StringLiteral *Str)
const ObjCStringRegiongetObjCStringRegion (const ObjCStringLiteral *Str)
const VarRegiongetVarRegion (const VarDecl *VD, const LocationContext *LC)
 getVarRegion - Retrieve or create the memory region associated with a specified VarDecl and LocationContext.
const NonParamVarRegiongetNonParamVarRegion (const VarDecl *VD, const MemRegion *superR)
 getVarRegion - Retrieve or create the memory region associated with a specified VarDecl and LocationContext.
const ParamVarRegiongetParamVarRegion (const Expr *OriginExpr, unsigned Index, const LocationContext *LC)
 getParamVarRegion - Retrieve or create the memory region associated with a specified CallExpr, Index and LocationContext.
const ElementRegiongetElementRegion (QualType elementType, NonLoc Idx, const SubRegion *superRegion, const ASTContext &Ctx)
 getElementRegion - Retrieve the memory region associated with the associated element type, index, and super region.
const ElementRegiongetElementRegionWithSuper (const ElementRegion *ER, const SubRegion *superRegion)
const FieldRegiongetFieldRegion (const FieldDecl *FD, const SubRegion *SuperRegion)
 getFieldRegion - Retrieve or create the memory region associated with a specified FieldDecl.
const FieldRegiongetFieldRegionWithSuper (const FieldRegion *FR, const SubRegion *superRegion)
const ObjCIvarRegiongetObjCIvarRegion (const ObjCIvarDecl *ivd, const SubRegion *superRegion)
 getObjCIvarRegion - Retrieve or create the memory region associated with a specified Objective-c instance variable.
const CXXTempObjectRegiongetCXXTempObjectRegion (Expr const *Ex, LocationContext const *LC)
const CXXLifetimeExtendedObjectRegiongetCXXLifetimeExtendedObjectRegion (Expr const *Ex, ValueDecl const *VD, LocationContext const *LC)
 Create a CXXLifetimeExtendedObjectRegion for temporaries which are lifetime-extended by local references.
const CXXLifetimeExtendedObjectRegiongetCXXStaticLifetimeExtendedObjectRegion (const Expr *Ex, ValueDecl const *VD)
 Create a CXXLifetimeExtendedObjectRegion for temporaries which are lifetime-extended by static references.
const CXXBaseObjectRegiongetCXXBaseObjectRegion (const CXXRecordDecl *BaseClass, const SubRegion *Super, bool IsVirtual)
 Create a CXXBaseObjectRegion with the given base class for region Super.
const CXXBaseObjectRegiongetCXXBaseObjectRegionWithSuper (const CXXBaseObjectRegion *baseReg, const SubRegion *superRegion)
 Create a CXXBaseObjectRegion with the same CXXRecordDecl but a different super region.
const CXXDerivedObjectRegiongetCXXDerivedObjectRegion (const CXXRecordDecl *BaseClass, const SubRegion *Super)
 Create a CXXDerivedObjectRegion with the given derived class for region Super.
const FunctionCodeRegiongetFunctionCodeRegion (const NamedDecl *FD)
const BlockCodeRegiongetBlockCodeRegion (const BlockDecl *BD, CanQualType locTy, AnalysisDeclContext *AC)
const BlockDataRegiongetBlockDataRegion (const BlockCodeRegion *bc, const LocationContext *lc, unsigned blockCount)
 getBlockDataRegion - Get the memory region associated with an instance of a block.

Detailed Description

Definition at line 1432 of file MemRegion.h.

Constructor & Destructor Documentation

◆ MemRegionManager()

clang::ento::MemRegionManager::MemRegionManager ( ASTContext & c,
llvm::BumpPtrAllocator & a )
inline

Definition at line 1454 of file MemRegion.h.

References c.

◆ ~MemRegionManager()

MemRegionManager::~MemRegionManager ( )
default

Member Function Documentation

◆ getAllocaRegion()

const AllocaRegion * MemRegionManager::getAllocaRegion ( const Expr * Ex,
unsigned Cnt,
const LocationContext * LC )

getAllocaRegion - Retrieve a region associated with a call to alloca().

Definition at line 1378 of file MemRegion.cpp.

References clang::LocationContext::getStackFrame(), and getStackLocalsRegion().

Referenced by clang::ento::SValBuilder::getAllocaRegionVal().

◆ getAllocator()

llvm::BumpPtrAllocator & clang::ento::MemRegionManager::getAllocator ( )
inline

Definition at line 1460 of file MemRegion.h.

◆ getBlockCodeRegion()

const BlockCodeRegion * MemRegionManager::getBlockCodeRegion ( const BlockDecl * BD,
CanQualType locTy,
AnalysisDeclContext * AC )

Definition at line 1254 of file MemRegion.cpp.

References getCodeRegion().

Referenced by getVarRegion().

◆ getBlockDataRegion()

const BlockDataRegion * MemRegionManager::getBlockDataRegion ( const BlockCodeRegion * bc,
const LocationContext * lc,
unsigned blockCount )

getBlockDataRegion - Get the memory region associated with an instance of a block.

Unlike many other MemRegions, the LocationContext* argument is allowed to be NULL for cases where we have no known context.

Definition at line 1169 of file MemRegion.cpp.

References clang::ento::BlockCodeRegion::getDecl(), getGlobalsRegion(), clang::LocationContext::getStackFrame(), getStackLocalsRegion(), getUnknownRegion(), and clang::BlockDecl::hasCaptures().

◆ getCodeRegion()

const CodeSpaceRegion * MemRegionManager::getCodeRegion ( )

Definition at line 977 of file MemRegion.cpp.

Referenced by getBlockCodeRegion(), and getFunctionCodeRegion().

◆ getCompoundLiteralRegion()

const CompoundLiteralRegion * MemRegionManager::getCompoundLiteralRegion ( const CompoundLiteralExpr * CL,
const LocationContext * LC )

getCompoundLiteralRegion - Retrieve the region associated with a given CompoundLiteral.

Definition at line 1201 of file MemRegion.cpp.

References getGlobalsRegion(), clang::LocationContext::getStackFrame(), and getStackLocalsRegion().

◆ getContext() [1/2]

ASTContext & clang::ento::MemRegionManager::getContext ( )
inline

Definition at line 1457 of file MemRegion.h.

Referenced by clang::ento::MemRegion::getContext(), and getVarRegion().

◆ getContext() [2/2]

const ASTContext & clang::ento::MemRegionManager::getContext ( ) const
inline

Definition at line 1458 of file MemRegion.h.

◆ getCXXBaseObjectRegion()

const CXXBaseObjectRegion * MemRegionManager::getCXXBaseObjectRegion ( const CXXRecordDecl * BaseClass,
const SubRegion * Super,
bool IsVirtual )

Create a CXXBaseObjectRegion with the given base class for region Super.

The type of Super is assumed be a class deriving from BaseClass.

Definition at line 1331 of file MemRegion.cpp.

References clang::cast(), clang::isa(), and isValidBaseClass().

Referenced by getCXXBaseObjectRegionWithSuper().

◆ getCXXBaseObjectRegionWithSuper()

const CXXBaseObjectRegion * clang::ento::MemRegionManager::getCXXBaseObjectRegionWithSuper ( const CXXBaseObjectRegion * baseReg,
const SubRegion * superRegion )
inline

Create a CXXBaseObjectRegion with the same CXXRecordDecl but a different super region.

Definition at line 1593 of file MemRegion.h.

References getCXXBaseObjectRegion(), clang::ento::CXXBaseObjectRegion::getDecl(), and clang::ento::CXXBaseObjectRegion::isVirtual().

◆ getCXXDerivedObjectRegion()

const CXXDerivedObjectRegion * MemRegionManager::getCXXDerivedObjectRegion ( const CXXRecordDecl * BaseClass,
const SubRegion * Super )

Create a CXXDerivedObjectRegion with the given derived class for region Super.

This should not be used for casting an existing CXXBaseObjectRegion back to the derived type; instead, CXXBaseObjectRegion should be removed.

Definition at line 1351 of file MemRegion.cpp.

◆ getCXXLifetimeExtendedObjectRegion()

const CXXLifetimeExtendedObjectRegion * MemRegionManager::getCXXLifetimeExtendedObjectRegion ( Expr const * Ex,
ValueDecl const * VD,
LocationContext const * LC )

Create a CXXLifetimeExtendedObjectRegion for temporaries which are lifetime-extended by local references.

Definition at line 1292 of file MemRegion.cpp.

References clang::LocationContext::getStackFrame(), and getStackLocalsRegion().

◆ getCXXStaticLifetimeExtendedObjectRegion()

const CXXLifetimeExtendedObjectRegion * MemRegionManager::getCXXStaticLifetimeExtendedObjectRegion ( const Expr * Ex,
ValueDecl const * VD )

Create a CXXLifetimeExtendedObjectRegion for temporaries which are lifetime-extended by static references.

This differs from getCXXLifetimeExtendedObjectRegion(Expr const *, ValueDecl const *, LocationContext const *) in the super-region used.

Definition at line 1301 of file MemRegion.cpp.

References getGlobalsRegion().

◆ getCXXTempObjectRegion()

const CXXTempObjectRegion * MemRegionManager::getCXXTempObjectRegion ( Expr const * Ex,
LocationContext const * LC )

◆ getCXXThisRegion()

const CXXThisRegion * MemRegionManager::getCXXThisRegion ( QualType thisPointerTy,
const LocationContext * LC )

getCXXThisRegion - Retrieve the [artificial] region associated with the parameter 'this'.

Definition at line 1357 of file MemRegion.cpp.

References clang::Type::getAs(), clang::LocationContext::getDecl(), clang::LocationContext::getParent(), getStackArgumentsRegion(), clang::LocationContext::getStackFrame(), and clang::LocationContext::inTopFrame().

Referenced by clang::ento::getWidenedLoopState().

◆ getElementRegion()

const ElementRegion * MemRegionManager::getElementRegion ( QualType elementType,
NonLoc Idx,
const SubRegion * superRegion,
const ASTContext & Ctx )

getElementRegion - Retrieve the memory region associated with the associated element type, index, and super region.

Definition at line 1217 of file MemRegion.cpp.

References clang::Default, clang::QualType::getAddressSpace(), clang::Qualifiers::setAddressSpace(), and clang::T.

Referenced by bindRequiredArrayElementToEnvironment(), and getElementRegionWithSuper().

◆ getElementRegionWithSuper()

const ElementRegion * clang::ento::MemRegionManager::getElementRegionWithSuper ( const ElementRegion * ER,
const SubRegion * superRegion )
inline

◆ getFieldRegion()

const FieldRegion * MemRegionManager::getFieldRegion ( const FieldDecl * FD,
const SubRegion * SuperRegion )

getFieldRegion - Retrieve or create the memory region associated with a specified FieldDecl.

'superRegion' corresponds to the containing memory region (which typically represents the memory representing a structure or class).

Definition at line 1272 of file MemRegion.cpp.

References clang::FieldDecl::getCanonicalDecl().

Referenced by getFieldRegionWithSuper().

◆ getFieldRegionWithSuper()

const FieldRegion * clang::ento::MemRegionManager::getFieldRegionWithSuper ( const FieldRegion * FR,
const SubRegion * superRegion )
inline

Definition at line 1554 of file MemRegion.h.

References clang::ento::FieldRegion::getDecl(), and getFieldRegion().

◆ getFunctionCodeRegion()

const FunctionCodeRegion * MemRegionManager::getFunctionCodeRegion ( const NamedDecl * FD)

Definition at line 1248 of file MemRegion.cpp.

References getCodeRegion().

Referenced by getVarRegion().

◆ getGlobalsRegion()

const GlobalsSpaceRegion * MemRegionManager::getGlobalsRegion ( MemRegion::Kind K = MemRegion::GlobalInternalSpaceRegionKind,
const CodeTextRegion * R = nullptr )

getGlobalsRegion - Retrieve the memory region associated with global variables.

Definition at line 949 of file MemRegion.cpp.

Referenced by getBlockDataRegion(), getCompoundLiteralRegion(), getCXXStaticLifetimeExtendedObjectRegion(), getObjCStringRegion(), getStringRegion(), getVarRegion(), and clang::ento::getWidenedLoopState().

◆ getHeapRegion()

const HeapSpaceRegion * MemRegionManager::getHeapRegion ( )

getHeapRegion - Retrieve the memory region associated with the generic "heap".

Definition at line 969 of file MemRegion.cpp.

Referenced by getSymbolicHeapRegion().

◆ getNonParamVarRegion()

const NonParamVarRegion * MemRegionManager::getNonParamVarRegion ( const VarDecl * VD,
const MemRegion * superR )

getVarRegion - Retrieve or create the memory region associated with a specified VarDecl and LocationContext.

Definition at line 1150 of file MemRegion.cpp.

References clang::VarDecl::getCanonicalDecl(), and clang::VarDecl::getDefinition().

Referenced by getVarRegion().

◆ getObjCIvarRegion()

const ObjCIvarRegion * MemRegionManager::getObjCIvarRegion ( const ObjCIvarDecl * ivd,
const SubRegion * superRegion )

getObjCIvarRegion - Retrieve or create the memory region associated with a specified Objective-c instance variable.

'superRegion' corresponds to the containing region (which typically represents the Objective-C object).

Definition at line 1278 of file MemRegion.cpp.

◆ getObjCStringRegion()

const ObjCStringRegion * MemRegionManager::getObjCStringRegion ( const ObjCStringLiteral * Str)

Definition at line 991 of file MemRegion.cpp.

References clang::cast(), and getGlobalsRegion().

◆ getParamVarRegion()

const ParamVarRegion * MemRegionManager::getParamVarRegion ( const Expr * OriginExpr,
unsigned Index,
const LocationContext * LC )

getParamVarRegion - Retrieve or create the memory region associated with a specified CallExpr, Index and LocationContext.

Definition at line 1160 of file MemRegion.cpp.

References getStackArgumentsRegion(), and clang::LocationContext::getStackFrame().

Referenced by addParameterValuesToBindings().

◆ getStackArgumentsRegion()

const StackArgumentsSpaceRegion * MemRegionManager::getStackArgumentsRegion ( const StackFrameContext * STC)

getStackArgumentsRegion - Retrieve the memory region associated with function/method arguments of the specified stack frame.

Definition at line 937 of file MemRegion.cpp.

Referenced by getCXXThisRegion(), getParamVarRegion(), getVarRegion(), and clang::ento::getWidenedLoopState().

◆ getStackLocalsRegion()

const StackLocalsSpaceRegion * MemRegionManager::getStackLocalsRegion ( const StackFrameContext * STC)

getStackLocalsRegion - Retrieve the memory region associated with the specified stack frame.

Definition at line 925 of file MemRegion.cpp.

Referenced by getAllocaRegion(), getBlockDataRegion(), getCompoundLiteralRegion(), getCXXLifetimeExtendedObjectRegion(), getCXXTempObjectRegion(), getVarRegion(), and clang::ento::getWidenedLoopState().

◆ getStaticSize()

◆ getStringRegion()

const StringRegion * MemRegionManager::getStringRegion ( const StringLiteral * Str)

Definition at line 985 of file MemRegion.cpp.

References clang::cast(), and getGlobalsRegion().

◆ getSymbolicHeapRegion()

const SymbolicRegion * MemRegionManager::getSymbolicHeapRegion ( SymbolRef sym)

Return a unique symbolic region belonging to heap memory space.

Definition at line 1267 of file MemRegion.cpp.

References getHeapRegion().

◆ getSymbolicRegion()

const SymbolicRegion * MemRegionManager::getSymbolicRegion ( SymbolRef Sym,
const MemSpaceRegion * MemSpace = nullptr )

Retrieve or create a "symbolic" memory region.

If no memory space is specified, UnknownSpaceRegion will be used.

Definition at line 1260 of file MemRegion.cpp.

References getUnknownRegion().

◆ getUnknownRegion()

const UnknownSpaceRegion * MemRegionManager::getUnknownRegion ( )

getUnknownRegion - Retrieve the memory region associated with unknown memory space.

Definition at line 973 of file MemRegion.cpp.

Referenced by getBlockDataRegion(), getSymbolicRegion(), and getVarRegion().

◆ getVarRegion()


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