Skip to content
  1. Mar 10, 2012
  2. Mar 09, 2012
    • Ted Kremenek's avatar
      [analyzer] Implement basic path diagnostic pruning based on "interesting" symbols and regions. · 1e809b4c
      Ted Kremenek authored
      Essentially, a bug centers around a story for various symbols and regions.  We should only include
      the path diagnostic events that relate to those symbols and regions.
      
      The pruning is done by associating a set of interesting symbols and regions with a BugReporter, which
      can be modified at BugReport creation or by BugReporterVisitors.
      
      This patch reduces the diagnostics emitted in several of our test cases.  I've vetted these as
      having desired behavior.  The only regression is a missing null check diagnostic for the return
      value of realloc() in test/Analysis/malloc-plist.c.  This will require some investigation to fix,
      and I have added a FIXME to the test case.
      
      llvm-svn: 152361
      1e809b4c
  3. Mar 08, 2012
    • Anna Zaks's avatar
      Add a basic CallGraph to Analysis. · c000e7ed
      Anna Zaks authored
      The final graph contains a single root node, which is a parent of all externally available functions(and 'main'). As well as a list of Parentless/Unreachable functions, which are either truly unreachable or are unreachable due to our analyses imprecision.
      
      The analyzer checkers debug.DumpCallGraph or debug.ViewGraph can be used to look at the produced graph.
      
      Currently, the graph is not very precise, for example, it entirely skips edges resulted from ObjC method calls.
      
      llvm-svn: 152272
      c000e7ed
  4. Mar 06, 2012
  5. Mar 05, 2012
  6. Mar 03, 2012
  7. Mar 01, 2012
  8. Feb 29, 2012
  9. Feb 28, 2012
  10. Feb 27, 2012
  11. Feb 25, 2012
    • Ted Kremenek's avatar
      RetainCountChecker: don't adjust the retain count when analyzing a ReturnStmt... · ef31f376
      Ted Kremenek authored
      RetainCountChecker: don't adjust the retain count when analyzing a ReturnStmt unless we are in the top-level call frame.  We can do more later, but this makes the checker self-consistent (and fixes a crash).
      
      llvm-svn: 151426
      ef31f376
    • Anna Zaks's avatar
      [analyzer] Malloc: reason about the ObjC messages and C++. · 7ac344a4
      Anna Zaks authored
      Assume none of the ObjC messages defined in system headers free memory,
      except for the ones containing 'freeWhenDone' selector. Currently, just
      assume that the region escapes to the messages with 'freeWhenDone'
      (ideally, we want to treat it as 'free()').
      
      For now, always assume that regions escape when passed to C++ methods.
      
      llvm-svn: 151410
      7ac344a4
  12. Feb 23, 2012
    • Anna Zaks's avatar
      [analyzer] KeyChainAPI: unique the leaks by allocation site. · 4b062cb9
      Anna Zaks authored
      (Very similar to the previous change in malloc.)
      
      llvm-svn: 151297
      4b062cb9
    • Anna Zaks's avatar
      [analyzer] Malloc: unique leak reports by allocation site. · df901a44
      Anna Zaks authored
      When we find two leak reports with the same allocation site, report only
      one of them.
      
      Provide a helper method to BugReporter to facilitate this.
      
      llvm-svn: 151287
      df901a44
    • Anna Zaks's avatar
      [analyzer] Invalidate the region passed to pthread_setspecific() call. · 07de9c12
      Anna Zaks authored
      Make this call an exception in ExprEngine::invalidateArguments:
      'int pthread_setspecific(ptheread_key k, const void *)' stores
      a value into thread local storage. The value can later be retrieved
      with 'void *ptheread_getspecific(pthread_key)'. So even thought the
      parameter is 'const void *', the region escapes through the
      call.
      
      (Here we just blacklist the call in the ExprEngine's default
      logic. Another option would be to add a checker which evaluates
      the call and triggers the call to invalidate regions.)
      
      Teach the Malloc Checker, which treats all system calls as safe about
      the API.
      
      llvm-svn: 151220
      07de9c12
  13. Feb 22, 2012
  14. Feb 21, 2012
  15. Feb 20, 2012
  16. Feb 18, 2012
  17. Feb 17, 2012
  18. Feb 16, 2012
Loading