Add a new kind of region: CXXObjectRegion. Currently it has only one 
attribute: the object type. 
Add initial support for visiting CXXThisExpr.
Fix a bunch of 80-col violations.

llvm-svn: 91535
diff --git a/clang/lib/Analysis/MemRegion.cpp b/clang/lib/Analysis/MemRegion.cpp
index bc3a5b7..04d730c 100644
--- a/clang/lib/Analysis/MemRegion.cpp
+++ b/clang/lib/Analysis/MemRegion.cpp
@@ -291,6 +291,17 @@
   BlockDataRegion::ProfileRegion(ID, BC, LC, getSuperRegion());
 }
 
+void CXXObjectRegion::ProfileRegion(llvm::FoldingSetNodeID &ID,
+                                    QualType T, 
+                                    const MemRegion *sReg) {
+  ID.AddPointer(T.getTypePtr());
+  ID.AddPointer(sReg);
+}
+
+void CXXObjectRegion::Profile(llvm::FoldingSetNodeID &ID) const {
+  ProfileRegion(ID, T, getSuperRegion());
+}
+
 //===----------------------------------------------------------------------===//
 // Region pretty-printing.
 //===----------------------------------------------------------------------===//
@@ -558,6 +569,11 @@
   return getSubRegion<ObjCObjectRegion>(d, superRegion);
 }
 
+const CXXObjectRegion *
+MemRegionManager::getCXXObjectRegion(QualType T) {
+  return getSubRegion<CXXObjectRegion>(T, getUnknownRegion());
+}
+
 const AllocaRegion*
 MemRegionManager::getAllocaRegion(const Expr* E, unsigned cnt,
                                   const LocationContext *LC) {