[cfe-commits] r71359 - /cfe/trunk/lib/Analysis/RegionStore.cpp

Zhongxing Xu xuzhongxing at gmail.com
Sat May 9 08:23:42 PDT 2009


Author: zhongxingxu
Date: Sat May  9 10:23:42 2009
New Revision: 71359

URL: http://llvm.org/viewvc/llvm-project?rev=71359&view=rev
Log:
Remove the rest TypedViewRegion processing code. There should be no
TypedViewRegion usage in region store.

Modified:
    cfe/trunk/lib/Analysis/RegionStore.cpp

Modified: cfe/trunk/lib/Analysis/RegionStore.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/RegionStore.cpp?rev=71359&r1=71358&r2=71359&view=diff

==============================================================================
--- cfe/trunk/lib/Analysis/RegionStore.cpp (original)
+++ cfe/trunk/lib/Analysis/RegionStore.cpp Sat May  9 10:23:42 2009
@@ -516,49 +516,6 @@
     return NonLoc::MakeIntVal(getBasicVals(), Str->getByteLength()+1, false);
   }
 
-  if (const TypedViewRegion* ATR = dyn_cast<TypedViewRegion>(R)) {
-#if 0
-    // FIXME: This logic doesn't really work, as we can have all sorts of
-    // weird cases.  For example, this crashes on test case 'rdar-6442306-1.m'.
-    // The weird cases come in when arbitrary casting comes into play, violating
-    // any type-safe programming.
-    
-    GRStateRef state(St, StateMgr);
-
-    // Get the size of the super region in bytes.
-    const SVal* Extent = state.get<RegionExtents>(ATR->getSuperRegion());
-    assert(Extent && "region extent not exist");
-
-    // Assume it's ConcreteInt for now.
-    llvm::APSInt SSize = cast<nonloc::ConcreteInt>(*Extent).getValue();
-
-    // Get the size of the element in bits.
-    QualType LvT = ATR->getLocationType(getContext());
-    QualType ElemTy = cast<PointerType>(LvT.getTypePtr())->getPointeeType();
-
-    uint64_t X = getContext().getTypeSize(ElemTy);
-
-    const llvm::APSInt& ESize = getBasicVals().getValue(X, SSize.getBitWidth(),
-                                                        false);
-
-    // Calculate the number of elements. 
-
-    // FIXME: What do we do with signed-ness problem? Shall we make all APSInts
-    // signed?
-    if (SSize.isUnsigned())
-      SSize.setIsSigned(true);
-
-    // FIXME: move this operation into BasicVals.
-    const llvm::APSInt S = 
-      (SSize * getBasicVals().getValue(8, SSize.getBitWidth(), false)) / ESize;
-
-    return NonLoc::MakeVal(getBasicVals(), S);
-#else
-    ATR = ATR;
-    return UnknownVal();
-#endif
-  }
-
   if (const FieldRegion* FR = dyn_cast<FieldRegion>(R)) {
     // FIXME: Unsupported yet.
     FR = 0;
@@ -635,12 +592,7 @@
 
   // Process region cast according to the kind of the region being cast.
   
-
   // FIXME: Need to handle arbitrary downcasts.
-  // FIXME: Handle the case where a TypedViewRegion (layering a SymbolicRegion
-  //         or an AllocaRegion is cast to another view, thus causing the memory
-  //         to be re-used for a different purpose.
-
   if (isa<SymbolicRegion>(R) || isa<AllocaRegion>(R)) {
     state = setCastType(state, R, ToTy);
     return CastResult(state, R);
@@ -675,11 +627,6 @@
       return CastResult(state, R);
   }
 
-  if (isa<TypedViewRegion>(R)) {
-    const MemRegion* ViewR = MRMgr.getTypedViewRegion(CastToTy, R);  
-    return CastResult(state, ViewR);
-  }
-
   if (isa<ObjCObjectRegion>(R)) {
     return CastResult(state, R);
   }





More information about the cfe-commits mailing list