diff --git a/include/clang/Analysis/PathSensitive/MemRegion.h b/include/clang/Analysis/PathSensitive/MemRegion.h
index 5142427..4465796 100644
--- a/include/clang/Analysis/PathSensitive/MemRegion.h
+++ b/include/clang/Analysis/PathSensitive/MemRegion.h
@@ -154,8 +154,8 @@
                             const MemRegion* superRegion);
 
 public:
-  QualType getType(ASTContext&) const {
-    return Str->getType();
+  QualType getType(ASTContext& C) const {
+    return C.getCanonicalType(Str->getType());
   }
 
   void Profile(llvm::FoldingSetNodeID& ID) const {
@@ -182,7 +182,7 @@
                             const MemRegion* superRegion);
 
 public:
-  QualType getType(ASTContext&) const { return T; }
+  QualType getType(ASTContext& C) const { return C.getCanonicalType(T); }
   
 
   void Profile(llvm::FoldingSetNodeID& ID) const;
@@ -247,7 +247,9 @@
   
 public:  
   const VarDecl* getDecl() const { return cast<VarDecl>(D); }
-  QualType getType(ASTContext&) const { return getDecl()->getType(); }
+  QualType getType(ASTContext& C) const { 
+    return C.getCanonicalType(getDecl()->getType());
+  }
   
   void print(llvm::raw_ostream& os) const;
   
@@ -267,7 +269,9 @@
   void print(llvm::raw_ostream& os) const;
   
   const FieldDecl* getDecl() const { return cast<FieldDecl>(D); }
-  QualType getType(ASTContext&) const { return getDecl()->getType(); }
+  QualType getType(ASTContext& C) const {
+    return C.getCanonicalType(getDecl()->getType());
+  }
 
   static void ProfileRegion(llvm::FoldingSetNodeID& ID, FieldDecl* FD,
                       const MemRegion* superRegion) {
diff --git a/lib/Analysis/RegionStore.cpp b/lib/Analysis/RegionStore.cpp
index ae0383d..6a65919 100644
--- a/lib/Analysis/RegionStore.cpp
+++ b/lib/Analysis/RegionStore.cpp
@@ -379,7 +379,7 @@
 
 Store RegionStoreManager::InitializeStructToUndefined(Store store, QualType T,
                                                       MemRegion* BaseR) {
-  QualType CT = T->getCanonicalTypeInternal();
+  QualType CT = StateMgr.getContext().getCanonicalType(T);
   const RecordType* RT = cast<RecordType>(CT.getTypePtr());
   RecordDecl* RD = RT->getDecl();
   assert(RD->isDefinition());
