Skip to content
  1. Feb 05, 2012
  2. Feb 04, 2012
  3. Jan 17, 2012
  4. Dec 07, 2011
  5. Oct 24, 2011
  6. Oct 14, 2011
  7. Oct 08, 2011
  8. Sep 20, 2011
    • Anna Zaks's avatar
      [analyzer] Refactor PathDiagnosticLocation: Make... · c29bed39
      Anna Zaks authored
      [analyzer] Refactor PathDiagnosticLocation: Make PathDiagnosticLocation(SourceLocation...) private. Most of the effort here goes to making BugReport refer to a PathDiagnosticLocation instead of FullSourceLocation. 
      
      (Another step closer to the goal of having Diagnostics which can recover from invalid SourceLocations.)
      
      llvm-svn: 140182
      c29bed39
  9. Aug 21, 2011
  10. Aug 13, 2011
  11. Jul 29, 2011
    • Ted Kremenek's avatar
      [analyzer] Overhaul how the static analyzer expects CFGs by forcing CFGs to be... · e9fda1e4
      Ted Kremenek authored
      [analyzer] Overhaul how the static analyzer expects CFGs by forcing CFGs to be linearized only when used by the static analyzer.  This required a rewrite of LiveVariables, and exposed a ton of subtle bugs.
      
      The motivation of this large change is to drastically simplify the logic in ExprEngine going forward.
      
      Some fallout is that the output of some BugReporterVisitors is not as accurate as before; those will
      need to be fixed over time.  There is also some possible performance regression as RemoveDeadBindings
      will be called frequently; this can also be improved over time.
      
      llvm-svn: 136419
      e9fda1e4
  12. Jul 23, 2011
  13. Jun 16, 2011
    • John McCall's avatar
      Automatic Reference Counting. · 31168b07
      John McCall authored
      Language-design credit goes to a lot of people, but I particularly want
      to single out Blaine Garst and Patrick Beard for their contributions.
      
      Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself,
      in no particular order.
      
      llvm-svn: 133103
      31168b07
  14. Mar 01, 2011
  15. Feb 28, 2011
  16. Feb 17, 2011
  17. Feb 12, 2011
  18. Feb 10, 2011
  19. Jan 13, 2011
  20. Dec 23, 2010
  21. Dec 22, 2010
  22. Dec 06, 2010
  23. Aug 25, 2010
  24. Aug 02, 2010
  25. Mar 18, 2010
  26. Feb 23, 2010
  27. Jan 26, 2010
  28. Jan 25, 2010
    • Ted Kremenek's avatar
    • Ted Kremenek's avatar
      Split libAnalysis into two libraries: libAnalysis and libChecker. · d6b87086
      Ted Kremenek authored
      (1) libAnalysis is a generic analysis library that can be used by
          Sema.  It defines the CFG, basic dataflow analysis primitives, and
          inexpensive flow-sensitive analyses (e.g. LiveVariables).
      
      (2) libChecker contains the guts of the static analyzer, incuding the
          path-sensitive analysis engine and domain-specific checks.
      
      Now any clients that want to use the frontend to build their own tools
      don't need to link in the entire static analyzer.
      
      This change exposes various obvious cleanups that can be made to the
      layout of files and headers in libChecker.  More changes pending.  :)
      
      This change also exposed a layering violation between AnalysisContext
      and MemRegion.  BlockInvocationContext shouldn't explicitly know about
      BlockDataRegions.  For now I've removed the BlockDataRegion* from
      BlockInvocationContext (removing context-sensitivity; although this
      wasn't used yet).  We need to have a better way to extend
      BlockInvocationContext (and any LocationContext) to add
      context-sensitivty.
      
      llvm-svn: 94406
      d6b87086
  29. Dec 23, 2009
  30. Dec 16, 2009
    • Ted Kremenek's avatar
      Add (initial?) static analyzer support for handling C++ references. · 4cad5fc0
      Ted Kremenek authored
      This change was a lot bigger than I originally anticipated; among
      other things it requires us storing more information in the CFG to
      record what block-level expressions need to be evaluated as lvalues.
      
      The big change is that CFGBlocks no longer contain Stmt*'s by
      CFGElements.  Currently CFGElements just wrap Stmt*, but they also
      store a bit indicating whether the block-level expression should be
      evalauted as an lvalue.  DeclStmts involving the initialization of a
      reference require us treating the initialization expression as an
      lvalue, even though that information isn't recorded in the AST.
      Conceptually this change isn't that complicated, but it required
      bubbling up the data through the CFGBuilder, to GRCoreEngine, and
      eventually to GRExprEngine.
      
      The addition of CFGElement is also useful for when we want to handle
      more control-flow constructs or other data we want to keep in the CFG
      that isn't represented well with just a block of statements.
      
      In GRExprEngine, this patch introduces logic for evaluating the
      lvalues of references, which currently retrieves the internal "pointer
      value" that the reference represents.  EvalLoad does a two stage load
      to catch null dereferences involving an invalid reference (although
      this could possibly be caught earlier during the initialization of a
      reference).
      
      Symbols are currently symbolicated using the reference type, instead
      of a pointer type, and special handling is required creating
      ElementRegions that layer on SymbolicRegions (see the changes to
      RegionStoreManager).
      
      Along the way, the DeadStoresChecker also silences warnings involving
      dead stores to references.  This was the original change I introduced
      (which I wrote test cases for) that I realized caused GRExprEngine to
      crash.
      
      llvm-svn: 91501
      4cad5fc0
Loading