Skip to content
  1. Jan 20, 2009
  2. Jan 17, 2009
  3. Jan 16, 2009
  4. Jan 13, 2009
  5. 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
  6. Jan 09, 2009
  7. Jan 07, 2009
    • Ted Kremenek's avatar
      This commit reflects changes to the retain/release checker motivated by my · 1d92d2c8
      Ted Kremenek authored
      recent discussions with Thomas Clement and Ken Ferry concerning the "fundamental
      rule" for Cocoa memory management
      (http://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/Tasks/MemoryManagementRules.html).
      
      Here is the revised behavior of the checker concerning tracking retain/release
      counts for objects returned from message expressions involving instance methods:
      
      1) Track the returned object if the return type of the message expression is
      id<..>, id, or a pointer to *any* object that subclasses NSObject. Such objects
      are assumed to have a retain count. Previously the checker only tracked objects
      when the receiver of the message expression was part of the standard Cocoa API
      (i.e., had class names prefixed with 'NS'). This should significantly expand the
      amount of checking performed.
      
      2) Consider the object owned if the selector of the message expression contains
      "alloc", "new", or "copy". Previously we also considered "create", but this
      doesn't follow from the fundamental rule (discussions with the Cocoa folks
      confirms this).
      
      llvm-svn: 61837
      1d92d2c8
  8. Dec 22, 2008
  9. 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
  10. Dec 19, 2008
  11. 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
  12. Dec 15, 2008
  13. 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
      Temporarily XFAIL these tests. · 1c89be02
      Ted Kremenek authored
      llvm-svn: 60991
      1c89be02
    • 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
  14. Dec 09, 2008
  15. Dec 08, 2008
  16. Dec 06, 2008
  17. Dec 05, 2008
  18. Dec 04, 2008
  19. Dec 03, 2008
    • Ted Kremenek's avatar
      BasicConstraintManager: · fff9f4aa
      Ted Kremenek authored
      - Fix nonsensical logic in AssumeSymGE. When comparing 'sym >= constant' and the
        constant is the maximum integer value, add the constraint that 'sym ==
        constant' when the path is deemed feasible.  All other cases are feasible.
      - Improve AssumeSymGT. When comparing 'sym > constant' and constant is the
        maximum integer value we know the path is infeasible.
      - Add test case for this enhancement to AssumeSymGT.
      
      llvm-svn: 60490
      fff9f4aa
    • Ted Kremenek's avatar
      BasicConstraintManager: · f935cfe2
      Ted Kremenek authored
      - Fix nonsensical logic in AssumeSymLE. When comparing 'sym <= constant' and the
        constant is the minimum integer value, add the constraint that 'sym ==
        constant' when the path is deemed feasible.  All other cases are feasible.
      - Improve AssumeSymLT to address <rdar://problem/6407949>.  When comparing
        'sym < constant' and constant is the minimum integer value we know the
        path is infeasible.
      - Add test case for <rdar://problem/6407949>.
      
      llvm-svn: 60489
      f935cfe2
  20. Nov 30, 2008
  21. Nov 26, 2008
  22. Nov 25, 2008
  23. Nov 24, 2008
Loading