Skip to content
  1. Feb 23, 2010
  2. Jan 26, 2010
  3. 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
  4. Dec 23, 2009
  5. 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
  6. Dec 15, 2009
  7. Dec 03, 2009
  8. Nov 29, 2009
  9. Nov 28, 2009
  10. Nov 22, 2009
  11. Sep 10, 2009
  12. Sep 09, 2009
  13. Jun 30, 2009
    • Argyrios Kyrtzidis's avatar
      Remove the ASTContext parameter from the attribute-related methods of Decl. · b4b64ca7
      Argyrios Kyrtzidis authored
      The implementations of these methods can Use Decl::getASTContext() to get the ASTContext.
      
      This commit touches a lot of files since call sites for these methods are everywhere.
      I used pre-tokenized "carbon.h" and "cocoa.h" headers to do some timings, and there was no real time difference between before the commit and after it.
      
      llvm-svn: 74501
      b4b64ca7
  14. Jun 18, 2009
  15. Apr 07, 2009
    • Ted Kremenek's avatar
      Remove hack from LiveVariables analysis where variables whose address are taken · 4d947fac
      Ted Kremenek authored
      are considered 'live'. This hack isn't needed anymore because we have a
      separation in the path-sensitive analyzer between variable names and bindings;
      the analyzer can continue to reason about the storage of a variable after its
      name is no longer directly referenced.  Now the live variables analysis literally means "is this name live".
      
      Along this line, update the dead stores checker to explicitly look for variables
      whose values have escaped.
      
      llvm-svn: 68504
      4d947fac
  16. Apr 03, 2009
  17. Apr 01, 2009
  18. Feb 09, 2009
  19. Jan 25, 2009
  20. Jan 20, 2009
  21. Jan 09, 2009
  22. Nov 24, 2008
    • Chris Lattner's avatar
      Rename NamedDecl::getName() to getNameAsString(). Replace a bunch of · f3d3faec
      Chris Lattner authored
      uses of getName() with uses of getDeclName().  This upgrades a bunch of
      diags to take DeclNames instead of std::strings.
      
      This also tweaks a couple of diagnostics to be cleaner and changes
      CheckInitializerTypes/PerformInitializationByConstructor to pass
      around DeclarationNames instead of std::strings.
      
      llvm-svn: 59947
      f3d3faec
  23. Oct 15, 2008
  24. Sep 20, 2008
  25. Aug 09, 2008
  26. Aug 08, 2008
  27. Aug 05, 2008
  28. Aug 02, 2008
  29. Jul 25, 2008
  30. Jul 24, 2008
  31. Jul 23, 2008
  32. Jul 22, 2008
  33. Jul 15, 2008
  34. Jul 14, 2008
  35. Jul 03, 2008
Loading