clang API Documentation
MemRegion - The root abstract class for all memory regions. More...
#include <MemRegion.h>


Public Types | |
| enum | Kind { GenericMemSpaceRegionKind, StackLocalsSpaceRegionKind, StackArgumentsSpaceRegionKind, HeapSpaceRegionKind, UnknownSpaceRegionKind, StaticGlobalSpaceRegionKind, GlobalInternalSpaceRegionKind, GlobalSystemSpaceRegionKind, GlobalImmutableSpaceRegionKind, BEG_NON_STATIC_GLOBAL_MEMSPACES = GlobalInternalSpaceRegionKind, END_NON_STATIC_GLOBAL_MEMSPACES = GlobalImmutableSpaceRegionKind, BEG_GLOBAL_MEMSPACES = StaticGlobalSpaceRegionKind, END_GLOBAL_MEMSPACES = GlobalImmutableSpaceRegionKind, BEG_MEMSPACES = GenericMemSpaceRegionKind, END_MEMSPACES = GlobalImmutableSpaceRegionKind, SymbolicRegionKind, AllocaRegionKind, BlockDataRegionKind, BEG_TYPED_REGIONS, FunctionTextRegionKind = BEG_TYPED_REGIONS, BlockTextRegionKind, BEG_TYPED_VALUE_REGIONS, CompoundLiteralRegionKind = BEG_TYPED_VALUE_REGIONS, CXXThisRegionKind, StringRegionKind, ObjCStringRegionKind, ElementRegionKind, BEG_DECL_REGIONS, VarRegionKind = BEG_DECL_REGIONS, FieldRegionKind, ObjCIvarRegionKind, END_DECL_REGIONS = ObjCIvarRegionKind, CXXTempObjectRegionKind, CXXBaseObjectRegionKind, END_TYPED_VALUE_REGIONS = CXXBaseObjectRegionKind, END_TYPED_REGIONS = CXXBaseObjectRegionKind } |
Public Member Functions | |
| ASTContext & | getContext () const |
| virtual void | Profile (llvm::FoldingSetNodeID &ID) const =0 |
| virtual MemRegionManager * | getMemRegionManager () const =0 |
| const MemSpaceRegion * | getMemorySpace () const |
| const MemRegion * | getBaseRegion () const |
| const MemRegion * | StripCasts () const |
| bool | hasGlobalsOrParametersStorage () const |
| bool | hasStackStorage () const |
| bool | hasStackNonParametersStorage () const |
| bool | hasStackParametersStorage () const |
| 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 void | dumpPretty (raw_ostream &os) const |
| Print the region for use in diagnostics. | |
| Kind | getKind () const |
| template<typename RegionTy > | |
| const RegionTy * | getAs () const |
| virtual bool | isBoundable () const |
Static Public Member Functions | |
| static bool | classof (const MemRegion *) |
Protected Member Functions | |
| MemRegion (Kind k) | |
| virtual | ~MemRegion () |
Friends | |
| class | MemRegionManager |
MemRegion - The root abstract class for all memory regions.
Definition at line 66 of file MemRegion.h.
Definition at line 69 of file MemRegion.h.
| clang::ento::MemRegion::MemRegion | ( | Kind | k | ) | [inline, protected] |
Definition at line 116 of file MemRegion.h.
| MemRegion::~MemRegion | ( | ) | [protected, virtual] |
Definition at line 137 of file MemRegion.cpp.
| static bool clang::ento::MemRegion::classof | ( | const MemRegion * | ) | [inline, static] |
Reimplemented in clang::ento::CXXBaseObjectRegion, clang::ento::CXXTempObjectRegion, clang::ento::ElementRegion, clang::ento::ObjCIvarRegion, clang::ento::FieldRegion, clang::ento::CXXThisRegion, clang::ento::VarRegion, clang::ento::DeclRegion, clang::ento::CompoundLiteralRegion, clang::ento::ObjCStringRegion, clang::ento::StringRegion, clang::ento::SymbolicRegion, clang::ento::BlockDataRegion, clang::ento::BlockTextRegion, clang::ento::FunctionTextRegion, clang::ento::CodeTextRegion, clang::ento::TypedValueRegion, clang::ento::TypedRegion, clang::ento::AllocaRegion, clang::ento::SubRegion, clang::ento::StackArgumentsSpaceRegion, clang::ento::StackLocalsSpaceRegion, clang::ento::StackSpaceRegion, clang::ento::UnknownSpaceRegion, clang::ento::HeapSpaceRegion, clang::ento::GlobalInternalSpaceRegion, clang::ento::GlobalImmutableSpaceRegion, clang::ento::GlobalSystemSpaceRegion, clang::ento::NonStaticGlobalSpaceRegion, clang::ento::StaticGlobalSpaceRegion, clang::ento::GlobalsSpaceRegion, and clang::ento::MemSpaceRegion.
Definition at line 159 of file MemRegion.h.
| void clang::ento::MemRegion::dump | ( | ) | const |
| virtual void clang::ento::MemRegion::dumpPretty | ( | raw_ostream & | os | ) | const [virtual] |
Print the region for use in diagnostics.
Reimplemented in clang::ento::FieldRegion, and clang::ento::VarRegion.
| virtual void clang::ento::MemRegion::dumpToStream | ( | raw_ostream & | os | ) | const [virtual] |
Reimplemented in clang::ento::CXXBaseObjectRegion, clang::ento::CXXTempObjectRegion, clang::ento::ElementRegion, clang::ento::ObjCIvarRegion, clang::ento::FieldRegion, clang::ento::CXXThisRegion, clang::ento::VarRegion, clang::ento::CompoundLiteralRegion, clang::ento::ObjCStringRegion, clang::ento::StringRegion, clang::ento::SymbolicRegion, clang::ento::BlockDataRegion, clang::ento::BlockTextRegion, clang::ento::FunctionTextRegion, clang::ento::AllocaRegion, clang::ento::GlobalInternalSpaceRegion, clang::ento::GlobalImmutableSpaceRegion, clang::ento::GlobalSystemSpaceRegion, clang::ento::NonStaticGlobalSpaceRegion, and clang::ento::StaticGlobalSpaceRegion.
Referenced by llvm::operator<<().
| const RegionTy * clang::ento::MemRegion::getAs | ( | ) | const |
Definition at line 1039 of file MemRegion.h.
References NULL.
Referenced by clang::ento::SVal::getAsFunctionDecl().
| RegionOffset MemRegion::getAsOffset | ( | ) | const |
Compute the offset within the top level memory object.
Definition at line 974 of file MemRegion.cpp.
References CXXTempObjectRegionKind, ElementRegionKind, FieldRegionKind, clang::ASTContext::getASTRecordLayout(), getContext(), clang::ento::FieldRegion::getDecl(), clang::ASTRecordLayout::getFieldOffset(), clang::ento::ElementRegion::getIndex(), getKind(), clang::FieldDecl::getParent(), clang::CharUnits::getQuantity(), clang::ento::SubRegion::getSuperRegion(), clang::ASTContext::getTypeSizeInChars(), clang::ento::ElementRegion::getValueType(), Index, IsCompleteType(), SymbolicRegionKind, and VarRegionKind.
| const MemRegion * MemRegion::getBaseRegion | ( | ) | const |
Definition at line 879 of file MemRegion.cpp.
References CXXBaseObjectRegionKind, ElementRegionKind, FieldRegionKind, getKind(), and ObjCIvarRegionKind.
Referenced by clang::ento::BugReport::markInteresting().
| ASTContext & clang::ento::MemRegion::getContext | ( | ) | const [inline] |
Definition at line 1224 of file MemRegion.h.
References clang::ento::MemRegionManager::getContext(), and getMemRegionManager().
Referenced by clang::ento::ElementRegion::getAsArrayOffset(), getAsOffset(), clang::ento::MemRegionManager::getElementRegionWithSuper(), clang::ento::TypedValueRegion::getLocationType(), and clang::ento::FunctionTextRegion::getLocationType().
| Kind clang::ento::MemRegion::getKind | ( | ) | const [inline] |
Definition at line 153 of file MemRegion.h.
Referenced by clang::ento::StoreManager::castRegion(), clang::ento::MemSpaceRegion::classof(), clang::ento::GlobalsSpaceRegion::classof(), clang::ento::StaticGlobalSpaceRegion::classof(), clang::ento::NonStaticGlobalSpaceRegion::classof(), clang::ento::GlobalSystemSpaceRegion::classof(), clang::ento::GlobalImmutableSpaceRegion::classof(), clang::ento::GlobalInternalSpaceRegion::classof(), clang::ento::HeapSpaceRegion::classof(), clang::ento::UnknownSpaceRegion::classof(), clang::ento::StackSpaceRegion::classof(), clang::ento::StackLocalsSpaceRegion::classof(), clang::ento::StackArgumentsSpaceRegion::classof(), clang::ento::SubRegion::classof(), clang::ento::AllocaRegion::classof(), clang::ento::TypedRegion::classof(), clang::ento::TypedValueRegion::classof(), clang::ento::CodeTextRegion::classof(), clang::ento::FunctionTextRegion::classof(), clang::ento::BlockTextRegion::classof(), clang::ento::BlockDataRegion::classof(), clang::ento::SymbolicRegion::classof(), clang::ento::StringRegion::classof(), clang::ento::ObjCStringRegion::classof(), clang::ento::CompoundLiteralRegion::classof(), clang::ento::DeclRegion::classof(), clang::ento::VarRegion::classof(), clang::ento::CXXThisRegion::classof(), clang::ento::FieldRegion::classof(), clang::ento::ObjCIvarRegion::classof(), clang::ento::ElementRegion::classof(), clang::ento::CXXTempObjectRegion::classof(), clang::ento::CXXBaseObjectRegion::classof(), getAsOffset(), and getBaseRegion().
| const MemSpaceRegion * MemRegion::getMemorySpace | ( | ) | const |
Definition at line 847 of file MemRegion.cpp.
References clang::ento::SubRegion::getSuperRegion().
Referenced by clang::ento::VarRegion::getStackFrame(), hasGlobalsOrParametersStorage(), hasStackNonParametersStorage(), hasStackParametersStorage(), and hasStackStorage().
| virtual MemRegionManager* clang::ento::MemRegion::getMemRegionManager | ( | ) | const [pure virtual] |
Implemented in clang::ento::SubRegion, and clang::ento::MemSpaceRegion.
Referenced by getContext(), and clang::ento::SubRegion::getMemRegionManager().
| std::string clang::ento::MemRegion::getString | ( | ) | const |
Get a string representation of a region for debug use.
| bool MemRegion::hasGlobalsOrParametersStorage | ( | ) | const |
Definition at line 871 of file MemRegion.cpp.
References getMemorySpace().
| bool MemRegion::hasStackNonParametersStorage | ( | ) | const |
Definition at line 863 of file MemRegion.cpp.
References getMemorySpace().
| bool MemRegion::hasStackParametersStorage | ( | ) | const |
Definition at line 867 of file MemRegion.cpp.
References getMemorySpace().
| bool MemRegion::hasStackStorage | ( | ) | const |
Definition at line 859 of file MemRegion.cpp.
References getMemorySpace().
| virtual bool clang::ento::MemRegion::isBoundable | ( | ) | const [inline, virtual] |
Reimplemented in clang::ento::CompoundLiteralRegion, clang::ento::ObjCStringRegion, clang::ento::StringRegion, clang::ento::SymbolicRegion, clang::ento::CodeTextRegion, clang::ento::TypedRegion, clang::ento::AllocaRegion, and clang::ento::MemSpaceRegion.
Definition at line 157 of file MemRegion.h.
Referenced by clang::ento::StoreManager::castRegion(), and clang::ento::ConditionBRVisitor::VisitNode().
| virtual void clang::ento::MemRegion::Profile | ( | llvm::FoldingSetNodeID & | ID | ) | const [pure virtual] |
Implemented in clang::ento::CXXBaseObjectRegion, clang::ento::CXXTempObjectRegion, clang::ento::ElementRegion, clang::ento::DeclRegion, clang::ento::CompoundLiteralRegion, clang::ento::ObjCStringRegion, clang::ento::StringRegion, clang::ento::SymbolicRegion, clang::ento::BlockDataRegion, clang::ento::BlockTextRegion, clang::ento::FunctionTextRegion, clang::ento::AllocaRegion, clang::ento::StackSpaceRegion, clang::ento::StaticGlobalSpaceRegion, and clang::ento::MemSpaceRegion.
| const MemRegion * MemRegion::StripCasts | ( | ) | const |
Definition at line 901 of file MemRegion.cpp.
Referenced by clang::ento::StoreManager::castRegion(), clang::ento::StoreManager::getLValueElement(), and clang::ento::loc::MemRegionVal::stripCasts().
friend class MemRegionManager [friend] |
Reimplemented in clang::ento::CXXBaseObjectRegion, clang::ento::CXXTempObjectRegion, clang::ento::ElementRegion, clang::ento::ObjCIvarRegion, clang::ento::FieldRegion, clang::ento::CXXThisRegion, clang::ento::VarRegion, clang::ento::CompoundLiteralRegion, clang::ento::ObjCStringRegion, clang::ento::StringRegion, clang::ento::BlockDataRegion, clang::ento::BlockTextRegion, clang::ento::AllocaRegion, clang::ento::StackArgumentsSpaceRegion, clang::ento::StackLocalsSpaceRegion, clang::ento::UnknownSpaceRegion, clang::ento::HeapSpaceRegion, clang::ento::GlobalInternalSpaceRegion, clang::ento::GlobalImmutableSpaceRegion, clang::ento::GlobalSystemSpaceRegion, clang::ento::NonStaticGlobalSpaceRegion, clang::ento::StaticGlobalSpaceRegion, and clang::ento::MemSpaceRegion.
Definition at line 67 of file MemRegion.h.