Skip to content
  1. Aug 23, 2009
  2. Aug 06, 2009
    • Ted Kremenek's avatar
      Implement lazy "copying" of structures and arrays in RegionStore. While · fa41714d
      Ted Kremenek authored
      RegionStore already lazily abstracted the contents of arrays and structs, when
      doing an assignment from one array/struct to another we did an explicit
      element-wise copy, which resulted in a loss of laziness and huge performance
      problem when analyzing many code bases.
      
      Now RegionStoreManager handles such assignments using a new SVal could
      'LazyCompoundSVal', which basically means the value of a given struct or array
      (a MemRegion*) in a specific state (GRState). When we do a load from a field
      whose encompassing struct binds to a LazyCompoundSVal, we essentially do a field
      lookup in the original structure. This means we have essentially zero copying of
      data for structs/arrays and everything stays lazy.
      
      llvm-svn: 78268
      fa41714d
  3. Jul 29, 2009
  4. Jul 14, 2009
  5. Jun 30, 2009
  6. Jun 26, 2009
    • Ted Kremenek's avatar
      Introduce a new concept to the static analyzer: SValuator. · 1642bdaa
      Ted Kremenek authored
      GRTransferFuncs had the conflated role of both constructing SVals (symbolic
      expressions) as well as handling checker-specific logic. Now SValuator has the
      role of constructing SVals from expressions and GRTransferFuncs just handles
      checker-specific logic. The motivation is by separating these two concepts we
      will be able to much more easily create richer constraint-generating logic
      without coupling it to the main checker transfer function logic.
      
      We now have one implementation of SValuator: SimpleSValuator.
      
      SimpleSValuator is essentially the SVal-related logic that was in GRSimpleVals
      (which is removed in this patch). This includes the logic for EvalBinOp,
      EvalCast, etc. Because SValuator has a narrower role than the old
      GRTransferFuncs, the interfaces are much simpler, and so is the implementation
      of SimpleSValuator compared to GRSimpleVals. I also did a line-by-line review of
      SVal-related logic in GRSimpleVals and cleaned it up while moving it over to
      SimpleSValuator.
      
      As a consequence of removing GRSimpleVals, there is no longer a
      '-checker-simple' option. The '-checker-cfref' did everything that option did
      but also ran the retain/release checker. Of course a user may not always wish to
      run the retain/release checker, nor do we wish core analysis logic buried in the
      checker-specific logic. The next step is to refactor the logic in CFRefCount.cpp
      to separate out these pieces into the core analysis engine.
      
      llvm-svn: 74229
      1642bdaa
  7. Jun 25, 2009
  8. Jun 23, 2009
  9. Jun 19, 2009
  10. Jun 18, 2009
  11. May 12, 2009
  12. May 09, 2009
  13. May 04, 2009
  14. Apr 21, 2009
  15. Apr 20, 2009
  16. Apr 11, 2009
  17. Apr 10, 2009
  18. Apr 09, 2009
  19. Apr 08, 2009
  20. Apr 03, 2009
  21. Mar 30, 2009
  22. Mar 26, 2009
    • Ted Kremenek's avatar
      analyzer infrastructure: make a bunch of changes to symbolic expressions that · 3e31c26f
      Ted Kremenek authored
      Zhongxing and I discussed by email.
      
      Main changes:
      - Removed SymIntConstraintVal and SymIntConstraint
      - Added SymExpr as a parent class to SymbolData, SymSymExpr, SymIntExpr
      - Added nonloc::SymExprVal to wrap SymExpr
      - SymbolRef is now just a typedef of 'const SymbolData*'
      - Bunch of minor code cleanups in how some methods were invoked (no functionality change)
      
      This changes are part of a long-term plan to have full symbolic expression
      trees. This will be useful for lazily evaluating complicated expressions.
      
      llvm-svn: 67731
      3e31c26f
  23. Mar 25, 2009
Loading