Skip to content
  1. Apr 04, 2012
  2. Apr 03, 2012
  3. Apr 02, 2012
  4. Apr 01, 2012
  5. Mar 30, 2012
    • Anna Zaks's avatar
      [analyzer]Malloc,RetainRelease: Allow pointer to escape via NSMapInsert. · 90ab9bfa
      Anna Zaks authored
      Fixes a false positive (radar://11152419). The current solution of
      adding the info into 3 places is quite ugly. Pending a generic pointer
      escapes callback.
      
      llvm-svn: 153731
      90ab9bfa
    • Anna Zaks's avatar
      [analyzer] Do not inline functions which previously reached max block · 54fd4a07
      Anna Zaks authored
      count.
      
      This is an optimization for "retry without inlining" option. Here, if we
      failed to inline a function due to reaching the basic block max count,
      we are going to store this information and not try to inline it
      again in the translation unit. This can be viewed as a function summary.
      
      On sqlite, with this optimization, we are 30% faster then before and
      cover 10% more basic blocks (partially because the number of times we
      reach timeout is decreased by 20%).
      
      llvm-svn: 153730
      54fd4a07
  6. Mar 28, 2012
  7. Mar 27, 2012
    • Anna Zaks's avatar
      [analyzer] Add an option to re-analyze a dead-end path without inlining. · 5b3939fa
      Anna Zaks authored
      The analyzer gives up path exploration under certain conditions. For
      example, when the same basic block has been visited more than 4 times.
      With inlining turned on, this could lead to decrease in code coverage.
      Specifically, if we give up inside the inlined function, the rest of
      parent's basic blocks will not get analyzed.
      
      This commit introduces an option to enable re-run along the failed path,
      in which we do not inline the last inlined call site. This is done by
      enqueueing the node before the processing of the inlined call site
      with a special policy encoded in the state. The policy tells us not to
      inline the call site along the path.
      
      This lead to ~10% increase in the number of paths analyzed. Even though
      we expected a much greater coverage improvement. 
      
      The option is turned off by default for now.
      
      llvm-svn: 153534
      5b3939fa
    • Anna Zaks's avatar
      [analyzer] Stats checker: minor interprocedural tweaks. · dc36e616
      Anna Zaks authored
      Report root function name with exhausted block diagnostic.
      
      Also, use stack frames, not just any location context when checking if
      the basic block is in the same context.
      
      llvm-svn: 153532
      dc36e616
    • Anna Zaks's avatar
      [analyzer] Stats: Only count the number of times we run path sensitive · 23df6bb1
      Anna Zaks authored
      analyzes.
      
      (This method can be called twice on the same function.)
      
      llvm-svn: 153531
      23df6bb1
    • Ted Kremenek's avatar
      Change RetainCountChecker to eagerly "escape" retained objects when they are · e9a5bcf1
      Ted Kremenek authored
      assigned to a struct.  This is fallout from inlining results, which expose
      far more patterns where people stuff CF objects into structs and pass them
      around (and we can reason about it).  The problem is that we don't have
      a general way to detect when values have escaped, so as an intermediate step
      we need to eagerly prune out such tracking.
      
      Fixes <rdar://problem/11104566>.
      
      llvm-svn: 153489
      e9a5bcf1
  8. Mar 26, 2012
  9. Mar 24, 2012
  10. Mar 23, 2012
  11. Mar 22, 2012
  12. Mar 21, 2012
  13. Mar 18, 2012
    • Jordy Rose's avatar
      [analyzer] Mark a failed-realloc's result as an interesting symbol between the... · bf38f20e
      Jordy Rose authored
      [analyzer] Mark a failed-realloc's result as an interesting symbol between the realloc call and the null check, so we get nicer path notes. Fixes a regression introduced by the diagnostic pruning added in r152361.
      
      This is accomplished by calling markInteresting /during/ path diagnostic generation, and as such relies on deterministic ordering of BugReporterVisitors -- namely, that BugReporterVisitors are run in /reverse/ order from how they are added. (Right now that's a consequence of storing visitors in an ImmutableList, where new items are added to the front.) It's a little hacky, but it works for now.
      
      I think this is the best we can do without storing the relation between the old and new symbols, and that would be a hit whether or not there ends up being an error.
      
      llvm-svn: 153010
      bf38f20e
    • Jordy Rose's avatar
      [analyzer] Use a FoldingSet to cache simple RetainSummary instances, rather... · 61c974b4
      Jordy Rose authored
      [analyzer] Use a FoldingSet to cache simple RetainSummary instances, rather than explicitly keeping DoNothing and StopTracking summaries and nothing else.
      
      I tried to test the effects of this change on memory usage and run time, but what I saw on retain-release.m was indistinguishable from noise (debug and release builds). Even so, some caveman profiling showed 101 cache hits that we would have generated new summaries for before (i.e. not default or stop summaries), and the more code we analyze, the more memory we should save.
      
      Maybe we should have a standard project for benchmarking the retain count checker's memory and time?
      
      llvm-svn: 153007
      61c974b4
  14. Mar 17, 2012
Loading