const MemRegion *getBaseRegion() const;
/// Check if the region is a subregion of the given region.
- bool isSubRegionOf(const MemRegion *PR) const;
+ virtual bool isSubRegionOf(const MemRegion *R) const;
const MemRegion *StripCasts(bool StripBaseCasts = true) const;
MemRegionManager* getMemRegionManager() const;
- bool isSubRegionOf(const MemRegion* R) const;
+ virtual bool isSubRegionOf(const MemRegion* R) const;
static bool classof(const MemRegion* R) {
return R->getKind() > END_MEMSPACES;
return R;
}
-bool MemRegion::isSubRegionOf(const MemRegion *PR) const {
- const MemRegion *R = this;
- while (true) {
- switch (R->getKind()) {
- case MemRegion::ElementRegionKind:
- case MemRegion::FieldRegionKind:
- case MemRegion::ObjCIvarRegionKind:
- case MemRegion::CXXBaseObjectRegionKind:
- R = cast<SubRegion>(R)->getSuperRegion();
- if (R == PR)
- return true;
- continue;
- default:
- break;
- }
- break;
- }
+bool MemRegion::isSubRegionOf(const MemRegion *R) const {
return false;
}