Use ASTContext::getCanonicalType() to get TypedRegion's type.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58247 91177308-0d34-0410-b5e6-96231b3b80d8
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());