]> granicus.if.org Git - clang/commitdiff
clean up code with new API.
authorZhongxing Xu <xuzhongxing@gmail.com>
Thu, 9 Apr 2009 06:32:20 +0000 (06:32 +0000)
committerZhongxing Xu <xuzhongxing@gmail.com>
Thu, 9 Apr 2009 06:32:20 +0000 (06:32 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68693 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/CFRefCount.cpp

index 5d1834f9297e29004cd11255101af171f74d976b..1f7f5fb4d0fb08cc85c8a6cfc2aa24edcfe73ab0 100644 (file)
@@ -1789,28 +1789,12 @@ void CFRefCount::EvalSummary(ExplodedNodeSet<GRState>& Dst,
                 if (Loc::IsLocType(FT) || 
                     (FT->isIntegerType() && FT->isScalarType())) {
                   
-                  // Tag the symbol with the field decl so that we generate
-                  // a unique symbol.
-                  SymbolRef NewSym =
-                    Eng.getSymbolManager().getConjuredSymbol(*I, FT, Count, FD);
-                  
-                  // Create a region.
-                  // FIXME: How do we handle 'typedefs' in TypeViewRegions?
-                  //  e.g.:
-                  //     typedef struct *s foo;
-                  //  
-                  //     ((foo) x)->f vs. x->f
-                  //
-                  //  The cast will add a ViewTypeRegion.  Probably RegionStore
-                  //  needs to reason about typedefs explicitly when binding
-                  //  fields and elements.
-                  //
                   const FieldRegion* FR = MRMgr.getFieldRegion(FD, R);
-                  
-                  state = state.BindLoc(Loc::MakeVal(FR),
-                                        Loc::IsLocType(FT)
-                                        ? cast<SVal>(loc::SymbolVal(NewSym))
-                                        : cast<SVal>(nonloc::SymbolVal(NewSym)));
+
+                  SVal V = SVal::GetConjuredSymbolVal(Eng.getSymbolManager(),
+                       Eng.getStoreManager().getRegionManager(), *I, FT, Count);
+
+                  state = state.BindLoc(Loc::MakeVal(FR), V);
                 }                
               }
             }