clang API Documentation

Public Member Functions
clang::ento::MemRegionManager Class Reference

#include <MemRegion.h>

List of all members.

Public Member Functions

 MemRegionManager (ASTContext &c, llvm::BumpPtrAllocator &a)
 ~MemRegionManager ()
ASTContextgetContext ()
llvm::BumpPtrAllocator & getAllocator ()
const StackLocalsSpaceRegiongetStackLocalsRegion (const StackFrameContext *STC)
const StackArgumentsSpaceRegiongetStackArgumentsRegion (const StackFrameContext *STC)
const GlobalsSpaceRegiongetGlobalsRegion (MemRegion::Kind K=MemRegion::GlobalInternalSpaceRegionKind, const CodeTextRegion *R=nullptr)
const HeapSpaceRegiongetHeapRegion ()
const MemSpaceRegiongetUnknownRegion ()
const MemSpaceRegiongetCodeRegion ()
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)
const CXXThisRegiongetCXXThisRegion (QualType thisPointerTy, const LocationContext *LC)
const SymbolicRegiongetSymbolicRegion (SymbolRef Sym)
 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 *D, const LocationContext *LC)
const VarRegiongetVarRegion (const VarDecl *D, const MemRegion *superR)
const ElementRegiongetElementRegion (QualType elementType, NonLoc Idx, const MemRegion *superRegion, ASTContext &Ctx)
const ElementRegiongetElementRegionWithSuper (const ElementRegion *ER, const MemRegion *superRegion)
const FieldRegiongetFieldRegion (const FieldDecl *fd, const MemRegion *superRegion)
const FieldRegiongetFieldRegionWithSuper (const FieldRegion *FR, const MemRegion *superRegion)
const ObjCIvarRegiongetObjCIvarRegion (const ObjCIvarDecl *ivd, const MemRegion *superRegion)
const CXXTempObjectRegiongetCXXTempObjectRegion (Expr const *Ex, LocationContext const *LC)
const CXXBaseObjectRegiongetCXXBaseObjectRegion (const CXXRecordDecl *BaseClass, const MemRegion *Super, bool IsVirtual)
const CXXBaseObjectRegiongetCXXBaseObjectRegionWithSuper (const CXXBaseObjectRegion *baseReg, const MemRegion *superRegion)
const FunctionTextRegiongetFunctionTextRegion (const NamedDecl *FD)
const BlockTextRegiongetBlockTextRegion (const BlockDecl *BD, CanQualType locTy, AnalysisDeclContext *AC)
const BlockDataRegiongetBlockDataRegion (const BlockTextRegion *bc, const LocationContext *lc, unsigned blockCount)
const CXXTempObjectRegiongetCXXStaticTempObjectRegion (const Expr *Ex)

Detailed Description

Definition at line 1121 of file MemRegion.h.


Constructor & Destructor Documentation

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

Definition at line 1143 of file MemRegion.h.

Definition at line 140 of file MemRegion.cpp.


Member Function Documentation

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 1021 of file MemRegion.cpp.

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

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

Definition at line 1152 of file MemRegion.h.

const BlockDataRegion * MemRegionManager::getBlockDataRegion ( const BlockTextRegion 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 852 of file MemRegion.cpp.

References clang::LocationContext::getCurrentStackFrame(), clang::ento::BlockTextRegion::getDecl(), getGlobalsRegion(), getStackLocalsRegion(), getUnknownRegion(), clang::ento::MemRegion::GlobalImmutableSpaceRegionKind, and clang::BlockDecl::hasCaptures().

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

Definition at line 931 of file MemRegion.cpp.

References getCodeRegion().

Referenced by clang::ento::SValBuilder::getBlockPointer(), and getVarRegion().

Definition at line 718 of file MemRegion.cpp.

Referenced by getBlockTextRegion(), and getFunctionTextRegion().

getCompoundLiteralRegion - Retrieve the region associated with a given CompoundLiteral.

Definition at line 886 of file MemRegion.cpp.

References clang::LocationContext::getCurrentStackFrame(), getGlobalsRegion(), getStackLocalsRegion(), and clang::CompoundLiteralExpr::isFileScope().

Referenced by clang::ento::StoreManager::getLValueCompoundLiteral().

Definition at line 1150 of file MemRegion.h.

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

const CXXBaseObjectRegion * MemRegionManager::getCXXBaseObjectRegion ( const CXXRecordDecl BaseClass,
const MemRegion 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 989 of file MemRegion.cpp.

References isValidBaseClass().

Referenced by clang::ento::StoreManager::evalDerivedToBase(), and getCXXBaseObjectRegionWithSuper().

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

Definition at line 1258 of file MemRegion.h.

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

Create a CXXTempObjectRegion for temporaries which are lifetime-extended by static references. This differs from getCXXTempObjectRegion in the super-region used.

Definition at line 880 of file MemRegion.cpp.

References getGlobalsRegion(), and clang::ento::MemRegion::GlobalInternalSpaceRegionKind.

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

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

Definition at line 1011 of file MemRegion.cpp.

References clang::Type::getAs(), clang::LocationContext::getCurrentStackFrame(), and getStackArgumentsRegion().

Referenced by clang::ento::ExprEngine::VisitCXXThisExpr().

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

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

Definition at line 903 of file MemRegion.cpp.

References data(), clang::ASTContext::getCanonicalType(), and clang::CanQual< T >::getUnqualifiedType().

Referenced by getElementRegionWithSuper(), clang::ento::StoreManager::GetElementZeroRegion(), clang::ento::StoreManager::getLValueElement(), and clang::ento::StoreManager::MakeElementRegion().

const ElementRegion* clang::ento::MemRegionManager::getElementRegionWithSuper ( const ElementRegion ER,
const MemRegion superRegion 
) [inline]
const FieldRegion * MemRegionManager::getFieldRegion ( const FieldDecl fd,
const MemRegion 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 947 of file MemRegion.cpp.

Referenced by getFieldRegionWithSuper().

const FieldRegion* clang::ento::MemRegionManager::getFieldRegionWithSuper ( const FieldRegion FR,
const MemRegion superRegion 
) [inline]

Definition at line 1232 of file MemRegion.h.

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

Definition at line 926 of file MemRegion.cpp.

References getCodeRegion().

Referenced by clang::ento::SValBuilder::getFunctionPointer(), and getVarRegion().

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

Definition at line 710 of file MemRegion.cpp.

Referenced by getSymbolicHeapRegion().

const ObjCIvarRegion * MemRegionManager::getObjCIvarRegion ( const ObjCIvarDecl ivd,
const MemRegion 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 953 of file MemRegion.cpp.

Definition at line 730 of file MemRegion.cpp.

References getGlobalsRegion().

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

Definition at line 676 of file MemRegion.cpp.

Referenced by getCXXThisRegion(), and getVarRegion().

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

Definition at line 663 of file MemRegion.cpp.

Referenced by getAllocaRegion(), getBlockDataRegion(), getCompoundLiteralRegion(), getCXXTempObjectRegion(), and getVarRegion().

Definition at line 725 of file MemRegion.cpp.

References getGlobalsRegion().

Return a unique symbolic region belonging to heap memory space.

Definition at line 942 of file MemRegion.cpp.

References getHeapRegion().

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

Retrieve or create a "symbolic" memory region.

getSymbolicRegion - Retrieve or create a "symbolic" memory region.

Definition at line 938 of file MemRegion.cpp.

References getUnknownRegion().

Referenced by clang::ento::SValBuilder::conjureSymbolVal(), clang::ento::SValBuilder::getDerivedRegionValueSymbolVal(), clang::ento::SValBuilder::getMetadataSymbolVal(), clang::ento::SValBuilder::getRegionValueSymbolVal(), and clang::ento::SValBuilder::makeLoc().

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

Definition at line 714 of file MemRegion.cpp.

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

const VarRegion * MemRegionManager::getVarRegion ( const VarDecl D,
const LocationContext LC 
)
const VarRegion * MemRegionManager::getVarRegion ( const VarDecl D,
const MemRegion superR 
)

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

Definition at line 846 of file MemRegion.cpp.


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