Skip to content
  1. 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
  2. Dec 05, 2008
  3. Dec 02, 2008
  4. Nov 24, 2008
    • Chris Lattner's avatar
      Rename Selector::getName() to Selector::getAsString(), and add · e4b95698
      Chris Lattner authored
      a new NamedDecl::getAsString() method.
      
      Change uses of Selector::getName() to just pass in a Selector 
      where possible (e.g. to diagnostics) instead of going through
      an std::string.
      
      This also adds new formatters for objcinstance and objcclass
      as described in the dox.
      
      llvm-svn: 59933
      e4b95698
  5. Nov 13, 2008
  6. Nov 12, 2008
  7. Nov 05, 2008
  8. Nov 04, 2008
  9. Oct 31, 2008
  10. Oct 29, 2008
  11. Oct 24, 2008
  12. Oct 23, 2008
  13. Oct 22, 2008
  14. Oct 21, 2008
  15. Oct 18, 2008
  16. Oct 17, 2008
  17. Oct 04, 2008
    • Ted Kremenek's avatar
      This is a big patch, but the functionality change is small and the rest of the... · 5ca90a24
      Ted Kremenek authored
      This is a big patch, but the functionality change is small and the rest of the patch consists of deltas due to API changes.
      
      This patch overhauls the "memory region" abstraction that was prototyped (but never really used) as part of the Store.h.  This patch adds MemRegion.h and MemRegion.cpp, which defines the class MemRegion and its subclasses.  This classes serve to define an abstract representation of memory, with regions being layered on other regions to to capture the relationships between fields and variables, variables and the address space they are allocated in, and so on.  
      
      The main motivation of this patch is that key parts of the analyzer assumed that all value bindings were to VarDecls.  In the future this won't be the case, and this patch removes lval::DeclVal and replaces it with lval::MemRegionVal.  Now all pieces of the analyzer must reason about abstract memory blocks instead of just variables.
      
      There should be no functionality change from this patch, but it opens the door for significant improvements to the analyzer such as field-sensitivity and object-sensitivity, both which were on hold until the memory abstraction got generalized.
      
      The memory region abstraction also allows type-information to literally be affixed to a memory region.  This will allow the some now redundant logic to be removed from the retain/release checker.
      
      llvm-svn: 57042
      5ca90a24
  18. Oct 01, 2008
  19. Sep 28, 2008
  20. Sep 27, 2008
  21. Sep 21, 2008
  22. Sep 20, 2008
  23. Sep 03, 2008
    • Ted Kremenek's avatar
      Store: (static analyzer) · 1b9e1039
      Ted Kremenek authored
      - Change definition of store::Region and store::Binding (once again) to make
        them real classes that just wrap pointers. This makes them more strictly
        typed, and allows specific implementations of Regions/Bindings to just
        subclass them.
      - minor renamings to RegionExtent and its subclasses
      - added a bunch of doxygen comments
      
      StoreManager: (static analyzer)
      - added 'iterBindings', an iteration method for iterating over the bindings of a
        store. It that takes a callback object (acting like a poor man's closure).
      - added 'getRVal' version for store::Binding. Will potentially phase the other
        versions of GetRVal in StoreManager out.
      - reimplemented 'getBindings' to be non-virtual and to use 'iterBindings'
      
      BasicStoreManager: (static analyzer)
      - implemented 'iterBindings' for BasicStoreManager
      
      llvm-svn: 55688
      1b9e1039
  24. Aug 29, 2008
  25. Aug 17, 2008
  26. Aug 16, 2008
    • Ted Kremenek's avatar
      GRState: · ceba6ead
      Ted Kremenek authored
      - Remove ConstNotEq from GRState/GRStateManager (!= tracking uses GDM instead).
      - GRStateManager now can book-keep "contexts" (e.g., factory objects) for uses
        with data elements stored into the GDM.
      - Refactor pretty-printing of states to use GRState::Printer objects
        exclusively. This removed a huge amount of pretty-printing logic from
        GRExprEngine.
      
      CFRefCount
      - Simplified some API calls based on refinements to the GDM api.
      
      llvm-svn: 54835
      ceba6ead
  27. Aug 14, 2008
  28. Aug 13, 2008
  29. Aug 12, 2008
Loading