Skip to content
  1. Apr 10, 2009
    • Zhongxing Xu's avatar
      Add prototype for CodeTextRegion. · 1aced0c9
      Zhongxing Xu authored
      A CodeTextRegion wraps two kinds of data: FunctionDecl* or SymbolRef. 
      The latter comes from the symbolic function pointer that are generated from
      function calls or input data.
      
      llvm-svn: 68777
      1aced0c9
  2. Mar 31, 2009
  3. Mar 30, 2009
  4. Mar 26, 2009
    • Ted Kremenek's avatar
      analyzer infrastructure: make a bunch of changes to symbolic expressions that · 3e31c26f
      Ted Kremenek authored
      Zhongxing and I discussed by email.
      
      Main changes:
      - Removed SymIntConstraintVal and SymIntConstraint
      - Added SymExpr as a parent class to SymbolData, SymSymExpr, SymIntExpr
      - Added nonloc::SymExprVal to wrap SymExpr
      - SymbolRef is now just a typedef of 'const SymbolData*'
      - Bunch of minor code cleanups in how some methods were invoked (no functionality change)
      
      This changes are part of a long-term plan to have full symbolic expression
      trees. This will be useful for lazily evaluating complicated expressions.
      
      llvm-svn: 67731
      3e31c26f
  5. Mar 11, 2009
  6. Mar 04, 2009
    • Ted Kremenek's avatar
      MemRegion: · 9a92b950
      Ted Kremenek authored
      - Have 'TypedRegion::getRValueType()' return a null QualType for 'id<...>'
        instead of aborting.
      - Change 'TypedRegion::isBoundable()' to return true for all objects with a
        non-null RValueType (this may not be the final behavior).
      
      llvm-svn: 66093
      9a92b950
    • Ted Kremenek's avatar
      Added the notion of a "boundable region", which is a region that can have a... · d275bf3c
      Ted Kremenek authored
      Added the notion of a "boundable region", which is a region that can have a direct binding in the StoreManager.
      
      llvm-svn: 66005
      d275bf3c
  7. Mar 03, 2009
  8. Mar 01, 2009
  9. Feb 06, 2009
  10. Feb 05, 2009
    • Zhongxing Xu's avatar
      Make SymbolicRegion subclass TypedRegion, for symbols usually have types, so · 9103df16
      Zhongxing Xu authored
      do the symblic regions associated with them and we need them to be typed.
      
      Current SymbolicRegion::getRValueType() method is very restricting. It may be
      modified when we are more clear about what could be the types of symblic
      regions.
      
      BasicConstraintManager::Assume() is changed due to that now SymblicRegion is a
      subclass of SubRegion.
       
      
      llvm-svn: 63844
      9103df16
  11. Jan 30, 2009
    • Ted Kremenek's avatar
      Fix a couple bugs: · 7594e2a5
      Ted Kremenek authored
      - NonLoc::MakeVal() would use sizeof(unsigned) (literally) instead of consulting
        ASTContext for the size (in bits) of 'int'. While it worked, it was a
        conflation of concepts and using ASTContext.IntTy is 100% correct.
      - RegionStore::getSizeInElements() no longer assumes that a VarRegion has the
        type "ConstantArray", and handles the case when uses use ordinary variables
        as if they were arrays.
      - Fixed ElementRegion::getRValueType() to just return the rvalue type of its
        "array region" in the case the array didn't have ArrayType.
      - All of this fixes <rdar://problem/6541136>
      
      llvm-svn: 63347
      7594e2a5
  12. Jan 24, 2009
  13. Jan 23, 2009
  14. Jan 16, 2009
  15. Jan 08, 2009
  16. Dec 20, 2008
    • Zhongxing Xu's avatar
      Lazy bingding for region-store manager. · af7415ff
      Zhongxing Xu authored
      * Now Bind() methods take and return GRState* because binding could
        also alter GDM.
      * No variables are initialized except those declared with initial
        values.
      * failed C test cases are due to bugs in RemoveDeadBindings(),
      which removes constraints that is still alive. This will be fixed in later
      patch.
      * default value of array and struct regions will be implemented in later patch.
      
      llvm-svn: 61274
      af7415ff
  17. Dec 17, 2008
  18. Dec 13, 2008
    • Ted Kremenek's avatar
      MemRegion: · b5670fd5
      Ted Kremenek authored
      - Overhauled the notion of "types" for TypedRegions.  We now distinguish between the "lvalue" of a region (via getLValueRegion()) and the "rvalue" of a region (va getRValueRegion()).  Since a region represents a chunk of memory it has both, but we were conflating these concepts in some cases, leading to some insidious bugs.
      - Removed AnonPointeeType, partially because it is unused and because it doesn't have a clear notion of lvalue vs rvalue type.  We can add it back once there is a need for it and we can resolve its role with these concepts.
      
      StoreManager:
      - Overhauled StoreManager::CastRegion.  It expects an *lvalue* type for a region.  This is actually what motivated the overhaul to the MemRegion type mechanism.  It also no longer returns an SVal; we can just return a MemRegion*.
      - BasicStoreManager::CastRegion now overlays an "AnonTypedRegion" for pointer-pointer casts.  This matches with the MemRegion changes.
      - Similar changes to RegionStore, except I've added a bunch of FIXMEs where it wasn't 100% clear where we should use TypedRegion::getRValueRegion() or TypedRegion::getLValueRegion().
      
      AuditCFNumberCreate check:
      - Now blasts through AnonTypedRegions that may layer the original memory region, thus checking if the actually memory block is of the appropriate type.  This change was needed to work with the changes to StoreManager::CastRegion.
      
      GRExprEngine::VisitCast:
      - Conform to the new interface of StoreManager::CastRegion.
      
      Tests:
      - None of the analysis tests fail now for using the "basic store".
      - Disabled the tests 'array-struct.c' and 'rdar-6442306-1.m' pending further testing and bug fixing.
      
      llvm-svn: 60995
      b5670fd5
    • Ted Kremenek's avatar
      A series of cleanups/fixes motivated by <rdar://problem/6442306>: · f065b15f
      Ted Kremenek authored
      GRExprEngine (VisitCast):
      - When using StoreManager::CastRegion, always use the state and value it returns to generate the next node.  Failure to do so means that region values returned that don't require the state to be modified will get ignored.
      
      MemRegion:
      - Tighten the interface for ElementRegion.  Now ElementRegion can only be created with a super region that is a 'TypedRegion' instead of any MemRegion.  Code in BasicStoreManager/RegionStoreManager already assumed this, but it would result in a dynamic assertion check (and crash) rather than just having the compiler forbid the construction of such regions.
      - Added ElementRegion::getArrayRegion() to return the 'typed version' of an ElementRegion's super region.
      - Removed bogus assertion in ElementRegion::getType() that assumed that the super region was an AnonTypedRegion.  All that matters is that it is a TypedRegion, which is now true all the time by design.
      
      BasicStore:
      - Modified getLValueElement() to check if the 'array' region is a TypedRegion before creating an ElementRegion.  This conforms to the updated interface for ElementRegion.
      
      RegionStore:
      - In ArrayToPointer() gracefully handle things we don't reason about, and only create an ElementRegion if the array region is indeed a TypedRegion.
      
      llvm-svn: 60990
      f065b15f
  19. Dec 11, 2008
  20. Dec 05, 2008
  21. Nov 24, 2008
    • Chris Lattner's avatar
      Rename NamedDecl::getName() to getNameAsString(). Replace a bunch of · f3d3faec
      Chris Lattner authored
      uses of getName() with uses of getDeclName().  This upgrades a bunch of
      diags to take DeclNames instead of std::strings.
      
      This also tweaks a couple of diagnostics to be cleaner and changes
      CheckInitializerTypes/PerformInitializationByConstructor to pass
      around DeclarationNames instead of std::strings.
      
      llvm-svn: 59947
      f3d3faec
  22. Nov 17, 2008
  23. Nov 16, 2008
    • Zhongxing Xu's avatar
      Enhances SCA to process untyped region to typed region conversion. · ceca8061
      Zhongxing Xu authored
       - RegionView and RegionViewMap is introduced to assist back-mapping from
         super region to subregions.
       - GDM is used to carry RegionView information.
       - AnonTypedRegion is added to represent a typed region introduced by pointer
         casting. Later AnonTypedRegion can be used in other similar cases, e.g.,
         malloc()'ed region.
       - The specific conversion is delegated to store manager.
      
      llvm-svn: 59382
      ceca8061
  24. Nov 13, 2008
  25. Nov 11, 2008
  26. Nov 10, 2008
  27. Nov 03, 2008
  28. Nov 02, 2008
  29. Oct 27, 2008
  30. Oct 25, 2008
  31. Oct 24, 2008
Loading