Skip to content
Snippets Groups Projects
  1. Dec 23, 2010
  2. Dec 22, 2010
  3. Dec 20, 2010
  4. Dec 02, 2010
  5. Dec 01, 2010
  6. Sep 02, 2010
  7. Aug 14, 2010
  8. Aug 13, 2010
  9. Aug 04, 2010
  10. Aug 03, 2010
  11. Jul 20, 2010
  12. Jul 01, 2010
  13. Jun 25, 2010
    • Ted Kremenek's avatar
      Add "checker caching" to GRExprEngine::CheckerVisit to progressively build · 9e9595b1
      Ted Kremenek authored
      a winowed list of checkers that actually do something for a given StmtClass.
      As the number of checkers grows, this may potentially significantly reduce
      the number of checkers called at any one time.  My own measurements show that
      for the ~20 registered Checker objects, only ~5 of them respond at any one time
      to a give statement.  While this isn't a net performance win right now (there
      is a minor slowdown on sqlite.3) this improvement does greatly improve debugging
      when stepping through the checkers used to evaluate a given statement.
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106884 91177308-0d34-0410-b5e6-96231b3b80d8
      9e9595b1
  14. Jun 24, 2010
  15. Jun 16, 2010
  16. Mar 27, 2010
  17. Feb 25, 2010
  18. Feb 24, 2010
  19. Jan 25, 2010
    • Ted Kremenek's avatar
      Split libAnalysis into two libraries: libAnalysis and libChecker. · 1309f9a3
      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.
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94406 91177308-0d34-0410-b5e6-96231b3b80d8
      1309f9a3
  20. Dec 31, 2009
  21. Dec 23, 2009
  22. Dec 12, 2009
  23. Dec 09, 2009
  24. Dec 07, 2009
  25. Dec 04, 2009
  26. Dec 02, 2009
  27. Nov 24, 2009
    • Ted Kremenek's avatar
      Cleanups and fixes to the nil-receiver checker, some of it fallout the · fee96e04
      Ted Kremenek authored
      initial transition of the nil-receiver checker to the Checker
      interface as done in r89745.  Some important changes include:
      
      1) We consolidate the BugType object used for nil receiver bug
      reports, and don't include the type of the returned value in the
      BugType (which would be wrong if a nil receiver bug was reported more
      than once)
      
      2) Added a new (temporary) flag to CheckerContext: DoneEvauating.
      This is used by GRExprEngine when evaluating message expressions to
      not continue evaluating the message expression if this flag is set.
      This flag is currently set by the nil receiver checker.  This is an
      intermediate solution to allow the nil-receiver checker to properly
      work as a plug-in outside of GRExprEngine.  Basically, this flag
      indicates that the entire message expression has been evaluated, not
      just a precondition (which is what the nil-receiver checker does).
      This flag *should not* be repurposed for general use, but just to pull
      more things out of GRExprEngine that already in there as we devise a
      better interface in the Checker class.
      
      3) Cleaned up the logic in the nil-receiver checker, making the
      control-flow a lot easier to read.
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89804 91177308-0d34-0410-b5e6-96231b3b80d8
      fee96e04
    • Zhongxing Xu's avatar
      Refactor NilReceiverStructRet and NilReceiverLargerThanVoidPtrRet into · 2055effe
      Zhongxing Xu authored
      CallAndMessageChecker.
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89745 91177308-0d34-0410-b5e6-96231b3b80d8
      2055effe
  28. Nov 23, 2009
    • Ted Kremenek's avatar
      Clean up the Checker API a little more, resolving some hidden bugs · 19d67b52
      Ted Kremenek authored
      along the way.  Important changes:
      
      1) To generate a sink node, use GenerateSink(); GenerateNode() is for
      generating regular transitions.  This makes the API clearer and also
      allows us to use the 'bool' option to GenerateNode() for a different
      purpose.
      
      2) GenerateNode() now automatically adds the generated node to the
      destination ExplodedNodeSet (autotransition) unless the client
      specifies otherwise with a bool flag.  Several checkers did not call
      'addTransition()' after calling 'GenerateNode()', causing the
      simulation path to be prematurely culled when a non-fail stop bug was
      encountered.
      
      3) Add variants of GenerateNode()/GenerateSink() that take neither a
      Stmt* or a GRState*; most callers of GenerateNode() just pass in the
      same Stmt* as provided when the CheckerContext object is created; we
      can just use that the majority of the time.  This cleanup also allows
      us to potentially coelesce the APIs for evaluating branches and
      end-of-paths (which currently directly use builders).
      
      4) addTransition() no longer needs to be called except for a few
      cases.  We now have a variant of addTransition() that takes a
      GRState*; this allows one to propagate the updated state without
      caring about generating a new node explicitly.  This nicely cleaned up
      a bunch of cases that called autoTransition() with a bunch of
      conditional logic surround the call (that common logic has now been
      swallowed up by addTransition() itself).
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89707 91177308-0d34-0410-b5e6-96231b3b80d8
      19d67b52
Loading