Skip to content
Snippets Groups Projects
  1. Mar 03, 2017
  2. Mar 02, 2017
  3. Feb 28, 2017
  4. Feb 27, 2017
  5. Feb 25, 2014
  6. Sep 05, 2013
  7. Jan 25, 2013
  8. Sep 06, 2012
    • Jordan Rose's avatar
      [analyzer] Always include destructors in the analysis CFG. · 5a1ffe98
      Jordan Rose authored
      While destructors will continue to not be inlined (unless the analyzer
      config option 'c++-inlining' is set to 'destructors'), leaving them out
      of the CFG is an incomplete model of the behavior of an object, and
      can cause false positive warnings (like PR13751, now working).
      
      Destructors for temporaries are still not on by default, since
      (a) we haven't actually checked this code to be sure it's fully correct
          (in particular, we probably need to be very careful with regard to
          lifetime-extension when a temporary is bound to a reference,
          C++11 [class.temporary]p5), and
      (b) ExprEngine doesn't actually do anything when it sees a temporary
          destructor in the CFG -- not even invalidate the object region.
      
      To enable temporary destructors, set the 'cfg-temporary-dtors' analyzer
      config option to '1'. The old -cfg-add-implicit-dtors cc1 option, which
      controlled all implicit destructors, has been removed.
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163264 91177308-0d34-0410-b5e6-96231b3b80d8
      5a1ffe98
  9. Jul 14, 2012
    • Ted Kremenek's avatar
      Refine CFG so that '&&' and '||' don't lead to extra confluence points when used in a branch, but · 3f635c08
      Ted Kremenek authored
      instead push the terminator for the branch down into the basic blocks of the subexpressions of '&&' and '||'
      respectively.  This eliminates some artifical control-flow from the CFG and results in a more
      compact CFG.
      
      Note that this patch only alters the branches 'while', 'if' and 'for'.  This was complex enough for
      one patch.  The remaining branches (e.g., do...while) can be handled in a separate patch, but they
      weren't immediately tackled because they were less important.
      
      It is possible that this patch introduces some subtle bugs, particularly w.r.t. to destructor placement.
      I've tried to audit these changes, but it is also known that the destructor logic needs some refinement
      in the area of '||' and '&&' regardless (i.e., their are known bugs).
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160218 91177308-0d34-0410-b5e6-96231b3b80d8
      3f635c08
  10. Mar 13, 2012
  11. Mar 10, 2012
  12. Dec 23, 2011
  13. Nov 16, 2011
  14. Jul 29, 2011
    • Ted Kremenek's avatar
      [analyzer] Overhaul how the static analyzer expects CFGs by forcing CFGs to be... · 88299892
      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.
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136419 91177308-0d34-0410-b5e6-96231b3b80d8
      88299892
  15. Apr 05, 2011
    • Ted Kremenek's avatar
      Fix PR 9626 (duplicated self-init warnings under -Wuninitialized) with... · d40066b0
      Ted Kremenek authored
      Fix PR 9626 (duplicated self-init warnings under -Wuninitialized) with numerous CFG and UninitializedValues analysis changes:
      
      1) Change the CFG to include the DeclStmt for conditional variables, instead of using the condition itself as a faux DeclStmt.
      2) Update ExprEngine (the static analyzer) to understand (1), so not to regress.
      3) Update UninitializedValues.cpp to initialize all tracked variables to Uninitialized at the start of the function/method.
      4) Only use the SelfReferenceChecker (SemaDecl.cpp) on global variables, leaving the dataflow analysis to handle other cases.
      
      The combination of (1) and (3) allows the dataflow-based -Wuninitialized to find self-init problems when the initializer
      contained control-flow.
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128858 91177308-0d34-0410-b5e6-96231b3b80d8
      d40066b0
  16. Feb 28, 2011
  17. Feb 19, 2011
  18. Feb 17, 2011
  19. Nov 01, 2010
  20. Oct 25, 2010
  21. Oct 01, 2010
Loading