]> granicus.if.org Git - clang/commitdiff
Return CodeTextRegions for BlockPointerTypes in addition to FunctionPointerTypes.
authorTed Kremenek <kremenek@apple.com>
Sat, 18 Jul 2009 06:27:01 +0000 (06:27 +0000)
committerTed Kremenek <kremenek@apple.com>
Sat, 18 Jul 2009 06:27:01 +0000 (06:27 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76287 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/ValueManager.cpp

index 62d8b0093b264ff61276345a71fb968d3b5128e1..658dfa1186cff47d0a16ced0faa1eccbb0780093 100644 (file)
@@ -73,9 +73,9 @@ SVal ValueManager::getRegionValueSymbolVal(const MemRegion* R, QualType T) {
     if (T.isNull())
       T = TR->getValueType(SymMgr.getContext());
 
-    // If T is of function pointer type, create a CodeTextRegion wrapping a
-    // symbol.
-    if (T->isFunctionPointerType()) {
+    // If T is of function pointer type or a block pointer type, create a
+    // CodeTextRegion wrapping that symbol.
+    if (T->isFunctionPointerType() || T->isBlockPointerType()) {
       return loc::MemRegionVal(MemMgr.getCodeTextRegion(sym, T));
     }
     
@@ -94,9 +94,9 @@ SVal ValueManager::getConjuredSymbolVal(const Expr* E, unsigned Count) {
   QualType T = E->getType();
   SymbolRef sym = SymMgr.getConjuredSymbol(E, Count);
 
-  // If T is of function pointer type, create a CodeTextRegion wrapping a
-  // symbol.
-  if (T->isFunctionPointerType()) {
+  // If T is of function pointer type or a block pointer type, create a
+  // CodeTextRegion wrapping a symbol.
+  if (T->isFunctionPointerType() || T->isBlockPointerType()) {
     return loc::MemRegionVal(MemMgr.getCodeTextRegion(sym, T));
   }
 
@@ -114,9 +114,9 @@ SVal ValueManager::getConjuredSymbolVal(const Expr* E, QualType T,
 
   SymbolRef sym = SymMgr.getConjuredSymbol(E, T, Count);
 
-  // If T is of function pointer type, create a CodeTextRegion wrapping a
-  // symbol.
-  if (T->isFunctionPointerType()) {
+  // If T is of function pointer type or a block pointer type, create a
+  // CodeTextRegion wrapping a symbol.
+  if (T->isFunctionPointerType() || T->isBlockPointerType()) {
     return loc::MemRegionVal(MemMgr.getCodeTextRegion(sym, T));
   }