Skip to content
  1. Dec 16, 2009
    • Ted Kremenek's avatar
      Teach RetainSummaryManager::getSummary(FunctionDecl* FD) that... · 9bcc2644
      Ted Kremenek authored
      Teach RetainSummaryManager::getSummary(FunctionDecl* FD) that 'FD->getIdentifier()' will not always return a non-null IdentifierInfo*.
      
      llvm-svn: 91512
      9bcc2644
    • Ted Kremenek's avatar
    • Ted Kremenek's avatar
      Teach NoReturnFunctionChecker that FunctionDecl::getIdentifier() is not... · 85763180
      Ted Kremenek authored
      Teach NoReturnFunctionChecker that FunctionDecl::getIdentifier() is not guaranteed to return a non-null IdentifierInfo*.
      
      llvm-svn: 91510
      85763180
    • 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
    • Ted Kremenek's avatar
      Remove ValueManager::getRegionValueSymbolValOrUnknown(). It was just extra... · 9158fb74
      Ted Kremenek authored
      Remove ValueManager::getRegionValueSymbolValOrUnknown().  It was just extra veneer on top of getRegionValueSymbolVal().
      
      llvm-svn: 91471
      9158fb74
  2. Dec 15, 2009
  3. Dec 14, 2009
  4. Dec 12, 2009
  5. Dec 11, 2009
  6. Dec 10, 2009
  7. Dec 09, 2009
  8. Dec 08, 2009
  9. Dec 07, 2009
    • Ted Kremenek's avatar
      Add analysis support for blocks. This includes a few key changes: · 04af9f20
      Ted Kremenek authored
      - Refactor the MemRegion hierarchy to distinguish between different StackSpaceRegions for locals and parameters.
      - VarRegions for "captured" variables now have the BlockDataRegion as their super region (except those passed by reference)
      - Add transfer function support to GRExprEngine for BlockDeclRefExprs.
      
      This change also supports analyzing blocks as an analysis entry point
      (top-of-the-stack), which required pushing more context-sensitivity
      around in the MemRegion hierarchy via the use of LocationContext
      objects.  Functionally almost everything is the same, except we track
      LocationContexts in a few more areas and StackSpaceRegions now refer
      to a StackFrameContext object.  In the future we will need to modify
      MemRegionManager to allow multiple StackSpaceRegions in flight at once
      (for the analysis of multiple stack frames).
      
      llvm-svn: 90809
      04af9f20
    • Zhongxing Xu's avatar
      Add EvalCallExpr interface to checker, and migrate the no-return function · 175447f7
      Zhongxing Xu authored
      handler to this interface.
      GRExprEngine::CheckerEvalCall() will return true if one of the checkers has
      processed the node. In the future this might return void when we have some 
      default checker.
      
      llvm-svn: 90755
      175447f7
  10. Dec 04, 2009
  11. Dec 03, 2009
Loading