From 5715393da238b95ec86c587074e84c352b0c5653 Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Mon, 30 Mar 2009 21:56:17 +0000 Subject: Revert 68028. llvm-svn: 68068 --- clang/lib/Analysis/MemRegion.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'clang/lib/Analysis/MemRegion.cpp') diff --git a/clang/lib/Analysis/MemRegion.cpp b/clang/lib/Analysis/MemRegion.cpp index 7c13f0701e7..738e8c67d69 100644 --- a/clang/lib/Analysis/MemRegion.cpp +++ b/clang/lib/Analysis/MemRegion.cpp @@ -111,6 +111,28 @@ void ElementRegion::Profile(llvm::FoldingSetNodeID& ID) const { // getLValueType() and getRValueType() //===----------------------------------------------------------------------===// +QualType SymbolicRegion::getRValueType(ASTContext& C) const { + // Get the type of the symbol. + QualType T = sym->getType(C); + + if (const PointerType* PTy = T->getAsPointerType()) + return PTy->getPointeeType(); + + if (const BlockPointerType* PTy = T->getAsBlockPointerType()) + return PTy->getPointeeType(); + + // There is no rvalue type of id<...>. + if (T->getAsObjCQualifiedIdType()) + return QualType(); + + assert(Loc::IsLocType(T) && "Non-location type."); + return QualType(); +} + +QualType SymbolicRegion::getLValueType(ASTContext& C) const { + return sym->getType(C); +} + QualType ElementRegion::getRValueType(ASTContext& C) const { // Strip off typedefs from the ArrayRegion's RvalueType. QualType T = getArrayRegion()->getRValueType(C)->getDesugaredType(); -- cgit v1.2.3