Lines Matching defs:MemRegion

1 //===- MemRegion.cpp - Abstract memory regions for static analysis --------===//
9 // This file defines MemRegion and its subclasses. MemRegion defines a
15 #include "clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h"
59 #define DEBUG_TYPE "MemRegion"
62 // MemRegion Construction.
122 MemRegion::~MemRegion() = default;
132 bool SubRegion::isSubRegionOf(const MemRegion* R) const {
133 const MemRegion* r = this;
148 const MemRegion *superRegion = r->getSuperRegion();
251 const MemRegion *superRegion) {
259 const MemRegion *superRegion) {
267 const MemRegion *superRegion) {
284 const MemRegion* superRegion) {
292 const MemRegion *sRegion) {
304 const MemRegion* superRegion) {
309 const MemRegion* superRegion, Kind k) {
324 const MemRegion *sreg) {
325 ID.AddInteger(static_cast<unsigned>(MemRegion::SymbolicRegionKind));
336 const MemRegion* superRegion) {
337 ID.AddInteger(MemRegion::ElementRegionKind);
349 const MemRegion*) {
350 ID.AddInteger(MemRegion::FunctionCodeRegionKind);
361 const MemRegion*) {
362 ID.AddInteger(MemRegion::BlockCodeRegionKind);
374 const MemRegion *sReg) {
375 ID.AddInteger(MemRegion::BlockDataRegionKind);
388 const MemRegion *sReg) {
400 const MemRegion *SReg) {
412 const MemRegion *SReg) {
443 LLVM_DUMP_METHOD void MemRegion::dump() const {
447 std::string MemRegion::getString() const {
454 void MemRegion::dumpToStream(raw_ostream &os) const {
584 bool MemRegion::canPrintPretty() const {
588 bool MemRegion::canPrintPrettyAsExpr() const {
592 void MemRegion::printPretty(raw_ostream &os) const {
599 void MemRegion::printPrettyAsExpr(raw_ostream &) const {
659 std::string MemRegion::getDescriptiveName(bool UseQuotes) const {
662 const MemRegion *R = this;
698 SourceRange MemRegion::sourceRange() const {
767 *MemRegionManager::getGlobalsRegion(MemRegion::Kind K,
770 if (K == MemRegion::GlobalSystemSpaceRegionKind)
772 if (K == MemRegion::GlobalImmutableSpaceRegionKind)
774 assert(K == MemRegion::GlobalInternalSpaceRegionKind);
778 assert(K == MemRegion::StaticGlobalSpaceRegionKind);
848 const MemRegion *sReg = nullptr;
857 sReg = getGlobalsRegion(MemRegion::GlobalSystemSpaceRegionKind);
859 sReg = getGlobalsRegion(MemRegion::GlobalImmutableSpaceRegionKind);
868 sReg = getGlobalsRegion(MemRegion::GlobalImmutableSpaceRegionKind);
893 ? static_cast<const MemRegion*>(getStackArgumentsRegion(STC))
894 : static_cast<const MemRegion*>(getStackLocalsRegion(STC));
900 sReg = getGlobalsRegion(MemRegion::StaticGlobalSpaceRegionKind,
919 sReg = getGlobalsRegion(MemRegion::StaticGlobalSpaceRegionKind,
933 const MemRegion *superR) {
946 sReg = getGlobalsRegion(MemRegion::GlobalImmutableSpaceRegionKind);
969 Ex, getGlobalsRegion(MemRegion::GlobalInternalSpaceRegionKind, nullptr));
998 MemRegion* data = Regions.FindNodeOrInsertPos(ID, InsertPos);
1128 const MemSpaceRegion *MemRegion::getMemorySpace() const {
1129 const MemRegion *R = this;
1140 bool MemRegion::hasStackStorage() const {
1144 bool MemRegion::hasStackNonParametersStorage() const {
1148 bool MemRegion::hasStackParametersStorage() const {
1152 bool MemRegion::hasGlobalsOrParametersStorage() const {
1160 const MemRegion *MemRegion::getBaseRegion() const {
1161 const MemRegion *R = this;
1164 case MemRegion::ElementRegionKind:
1165 case MemRegion::FieldRegionKind:
1166 case MemRegion::ObjCIvarRegionKind:
1167 case MemRegion::CXXBaseObjectRegionKind:
1168 case MemRegion::CXXDerivedObjectRegionKind:
1181 const MemRegion *MemRegion::getMostDerivedObjectRegion() const {
1182 const MemRegion *R = this;
1188 bool MemRegion::isSubRegionOf(const MemRegion *) const {
1196 const MemRegion *MemRegion::StripCasts(bool StripBaseAndDerivedCasts) const {
1197 const MemRegion *R = this;
1219 const SymbolicRegion *MemRegion::getSymbolicBase() const {
1233 const MemRegion *superR = nullptr;
1260 LLVM_DEBUG(llvm::dbgs() << "MemRegion::getAsArrayOffset: "
1294 static RegionOffset calculateOffset(const MemRegion *R) {
1295 const MemRegion *SymbolicOffsetBase = nullptr;
1300 case MemRegion::CodeSpaceRegionKind:
1301 case MemRegion::StackLocalsSpaceRegionKind:
1302 case MemRegion::StackArgumentsSpaceRegionKind:
1303 case MemRegion::HeapSpaceRegionKind:
1304 case MemRegion::UnknownSpaceRegionKind:
1305 case MemRegion::StaticGlobalSpaceRegionKind:
1306 case MemRegion::GlobalInternalSpaceRegionKind:
1307 case MemRegion::GlobalSystemSpaceRegionKind:
1308 case MemRegion::GlobalImmutableSpaceRegionKind:
1313 case MemRegion::FunctionCodeRegionKind:
1314 case MemRegion::BlockCodeRegionKind:
1315 case MemRegion::BlockDataRegionKind:
1322 case MemRegion::SymbolicRegionKind:
1323 case MemRegion::AllocaRegionKind:
1324 case MemRegion::CompoundLiteralRegionKind:
1325 case MemRegion::CXXThisRegionKind:
1326 case MemRegion::StringRegionKind:
1327 case MemRegion::ObjCStringRegionKind:
1328 case MemRegion::VarRegionKind:
1329 case MemRegion::CXXTempObjectRegionKind:
1333 case MemRegion::ObjCIvarRegionKind:
1341 case MemRegion::CXXBaseObjectRegionKind: {
1393 case MemRegion::CXXDerivedObjectRegionKind: {
1398 case MemRegion::ElementRegionKind: {
1426 case MemRegion::FieldRegionKind: {
1467 RegionOffset MemRegion::getAsOffset() const {
1518 using VarVec = BumpVector<const MemRegion *>;
1543 auto *Vec = static_cast<BumpVector<const MemRegion *> *>(ReferencedVars);
1549 static_cast<BumpVector<const MemRegion *> *>(OriginalVars);
1559 auto *Vec = static_cast<BumpVector<const MemRegion *> *>(ReferencedVars);
1565 static_cast<BumpVector<const MemRegion *> *>(OriginalVars);
1590 void RegionAndSymbolInvalidationTraits::setTrait(const MemRegion *MR,
1608 bool RegionAndSymbolInvalidationTraits::hasTrait(const MemRegion *MR,