diff options
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Analysis/MemRegion.cpp | 15 | 
1 files changed, 6 insertions, 9 deletions
| diff --git a/clang/lib/Analysis/MemRegion.cpp b/clang/lib/Analysis/MemRegion.cpp index 2724ed0ada2..55c6935b8e8 100644 --- a/clang/lib/Analysis/MemRegion.cpp +++ b/clang/lib/Analysis/MemRegion.cpp @@ -108,17 +108,14 @@ void ElementRegion::Profile(llvm::FoldingSetNodeID& ID) const {  }  QualType ElementRegion::getRValueType(ASTContext& C) const { -  QualType T = getArrayRegion()->getRValueType(C); +  // Strip off typedefs from the ArrayRegion's RvalueType. +  QualType T = getArrayRegion()->getRValueType(C)->getDesugaredType(); -  if (isa<ArrayType>(T.getTypePtr())) { -    ArrayType* AT = cast<ArrayType>(T.getTypePtr()); +  if (ArrayType* AT = dyn_cast<ArrayType>(T.getTypePtr()))      return AT->getElementType(); -  } -  else { -    PointerType* PtrT = cast<PointerType>(T.getTypePtr()); -    QualType PTy = PtrT->getPointeeType(); -    return C.getCanonicalType(PTy); -  } + +  PointerType* PtrT = cast<PointerType>(T.getTypePtr()); +  return C.getCanonicalType(PtrT->getPointeeType());  }  //===----------------------------------------------------------------------===// | 

