Skip to content
  1. Jan 20, 2009
  2. Jan 17, 2009
  3. Jan 16, 2009
  4. Jan 15, 2009
  5. Jan 13, 2009
  6. Jan 12, 2009
    • Ted Kremenek's avatar
      retain/release checker: · 7e90422e
      Ted Kremenek authored
      - Refactor a bunch of logic in the retain/release checker, making it more
        condense and easier to read.
      - Add support for "Create" methods in the DiskArbitration framework
      
      retain/release tests:
      - Rename CFDate.m to retain-release.m, and move test from CFString.c to
        retain-release.m
      - Add DiskArbitration framework tests cases.
      - Add/refine and few more retain/release GC test cases.
      
      llvm-svn: 62106
      7e90422e
  7. Jan 09, 2009
  8. Jan 08, 2009
  9. Jan 07, 2009
  10. Jan 06, 2009
    • Ted Kremenek's avatar
      Return UnknownVal in RegionStoreManager::getSizeInElements() for unsupported... · 47ad37db
      Ted Kremenek authored
      Return UnknownVal in RegionStoreManager::getSizeInElements() for unsupported regions.  This silences a warning when compiling Release-Asserts builds.
      
      llvm-svn: 61818
      47ad37db
    • Douglas Gregor's avatar
      Add QualifiedDeclRefExpr, which retains additional source-location · c7acfdfe
      Douglas Gregor authored
      information for declarations that were referenced via a qualified-id,
      e.g., N::C::value. We keep track of the location of the start of the
      nested-name-specifier. Note that the difference between
      QualifiedDeclRefExpr and DeclRefExpr does have an effect on the
      semantics of function calls in two ways:
        1) The use of a qualified-id instead of an unqualified-id suppresses
           argument-dependent lookup
        2) If the name refers to a virtual function, the qualified-id
        version will call the function determined statically while the
        unqualified-id version will call the function determined dynamically
        (by looking up the appropriate function in the vtable).
      
      Neither of these features is implemented yet, but we do print out
      qualified names for QualifiedDeclRefExprs as part of the AST printing.
      
      llvm-svn: 61789
      c7acfdfe
  11. Dec 24, 2008
  12. Dec 22, 2008
  13. Dec 21, 2008
  14. Dec 20, 2008
  15. Dec 19, 2008
  16. Dec 17, 2008
    • Ted Kremenek's avatar
      CF-retain/release checker: · 62d4c12d
      Ted Kremenek authored
      - Fix regression reported in <rdar://problem/6452745>.  After a null check, null references to resources should not have a retain count.  This regression was caused by removing the call to "GRTransferFuncs::EvalAssume" in BasicConstraintManager.
      - Added a test case to test this behavior.
      
      llvm-svn: 61155
      62d4c12d
    • Ted Kremenek's avatar
      Fix <rdar://problem/6451816>: · 300c9cc8
      Ted Kremenek authored
      - Because of the introduction of AnonTypedRegions when reasoning about casts, we
        had a regression in the "symbolication" of variable values passed-by-reference
        to a function. This is now fixed in CFRefCount.cpp (-checker-cfref) by
        blasting through the layer of AnonTypedRegions when symbolicating the value of
        the variable. This logic may get moved elsewhere. Note that this change
        affects only -checker-cfref and not -checker-simple; eventually this logic
        should get pulled out of CFRefCount.cpp into a more common place. All users
        use -checker-cfref by default, and -checker-simple should probably just be
        removed.  
      - Updated test 'Analysis/uninit-vals-ps.c' to only use -checker-cfref and added
        a test case for this regression.
      
      llvm-svn: 61147
      300c9cc8
    • Ted Kremenek's avatar
      Add pretty-printing for AnonTypedRegion. · 29d34ec6
      Ted Kremenek authored
      llvm-svn: 61146
      29d34ec6
  17. Dec 16, 2008
    • Ted Kremenek's avatar
      Add new GRWorkList class that uses two queues: · d9de9f14
      Ted Kremenek authored
      - one queue (FIFO) to queue up nodes at block entrances
      - another queue (LIFO) to queue up other nodes
      - The idea is to explore basic blocks to completion, but to do a BFS exploration of blocks.
      
      llvm-svn: 61106
      d9de9f14
    • Ted Kremenek's avatar
      ProgramPoint: · 9e08ff40
      Ted Kremenek authored
      - Added four new ProgramPoint types that subclass PostStmt for use in
        GRExprEngine::EvalLocation:
        - PostOutOfBoundsCheckFailed
        - PostUndefLocationCheckFailed
        - PostNullCheckFailed
        - PostLocationChecksSucceed
        These were created because of a horribly subtle caching bug in EvalLocation
        where a node representing an "bug condition" in EvalLocation (e.g. a null
        dereference) could be re-used as the "non-bug condition" because the Store did
        not contain any information to differentiate between the two. The extra
        program points just disables any accidental caching between EvalLocation and
        its callers.
      
      GRExprEngine:
      - EvalLocation now returns a NodeTy* instead of GRState*.  This should be used as the "vetted" predecessor for EvalLoad/EvalStore.
      
      llvm-svn: 61105
      9e08ff40
    • Zhongxing Xu's avatar
      Implement RegionStoreManager::Remove(). · c4a4c5f0
      Zhongxing Xu authored
      llvm-svn: 61069
      c4a4c5f0
  18. Dec 15, 2008
  19. Dec 14, 2008
  20. 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
Loading