Skip to content
  1. Mar 11, 2012
  2. Mar 10, 2012
  3. Mar 09, 2012
    • Anna Zaks's avatar
      [analyzer] Add support for NoRedundancy inlining mode. · 394d07ea
      Anna Zaks authored
      We do not reanalyze a function, which has already been analyzed as an
      inlined callee. As per PRELIMINARY testing, this gives over
      50% run time reduction on some benchmarks without decreasing of the
      number of bugs found.
      
      Turning the mode on by default.
      
      llvm-svn: 152440
      394d07ea
    • 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
    • Anna Zaks's avatar
      [analyzer] Use call graph to determine order in which functions are · eee91107
      Anna Zaks authored
      analyzed.
      
      The CallGraph is used when inlining is on, which is the current default.
      
      This alone does not bring any performance improvement. It's a
      stepping stone for the upcoming optimization in which we do not
      re-analyze a function that has already been analyzed while inlined in
      other functions. Using the call graph makes it easier to play with
      the order of functions to minimize redundant analyzes.
      
      llvm-svn: 152352
      eee91107
    • Anna Zaks's avatar
      [analyzer] Rework inlining related command line options. · 0af3e06f
      Anna Zaks authored
       - Remove -analyzer-inline-call.
       - Add -analyzer-ipa=[none|inlining]
       - Add -analyzer-inlining-mode to allow experimentation for
      different performance tuning methods.
      
      llvm-svn: 152351
      0af3e06f
  4. 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
  5. Mar 07, 2012
    • Richard Smith's avatar
      AST representation for user-defined literals, plus just enough of semantic · c67fdd4e
      Richard Smith authored
      analysis to make the AST representation testable. They are represented by a
      new UserDefinedLiteral AST node, which is a sugared CallExpr. All semantic
      properties, including full CodeGen support, are achieved for free by this
      representation.
      
      UserDefinedLiterals can never be dependent, so no custom instantiation
      behavior is required. They are mangled as if they were direct calls to the
      underlying literal operator. This matches g++'s apparent behavior (but not its
      actual mangling, which is broken for literal-operator-ids).
      
      User-defined *string* literals are now fully-operational, but the semantic
      analysis is quite hacky and needs more work. No other forms of user-defined
      literal are created yet, but the AST support for them is present.
      
      This patch committed after midnight because we had already hit the quota for
      new kinds of literal yesterday.
      
      llvm-svn: 152211
      c67fdd4e
  6. Mar 06, 2012
  7. Mar 05, 2012
  8. Mar 04, 2012
  9. Mar 03, 2012
  10. Mar 02, 2012
  11. Mar 01, 2012
  12. Feb 29, 2012
  13. Feb 28, 2012
Loading