Skip to content
  1. Dec 22, 2010
  2. Dec 10, 2010
    • John McCall's avatar
      It's kindof silly that ExtQuals has an ASTContext&, and we can use that · 717d9b0e
      John McCall authored
      space better.  Remove this reference.  To make that work, change some APIs
      (most importantly, getDesugaredType()) to take an ASTContext& if they
      need to return a QualType.  Simultaneously, diminish the need to return a
      QualType by introducing some useful APIs on SplitQualType, which is
      just a std::pair<const Type *, Qualifiers>.
      
      llvm-svn: 121478
      717d9b0e
  3. Dec 02, 2010
  4. Nov 26, 2010
  5. Nov 25, 2010
  6. Sep 15, 2010
    • Ted Kremenek's avatar
      Disallow the use of UnknownVal as the index for ElementRegions. UnknownVals can be used as · c4deb923
      Ted Kremenek authored
      the index when the value evaluation isn't powerful enough.  By creating ElementRegions with
      UnknownVals as the index, this gives the false impression that they are the same element, when
      they really aren't.  This becomes really problematic when deriving symbols from these regions
      (e.g., those representing the initial value of the index), since two different indices will
      get the same symbol for their binding.
      
      This fixes an issue with the idempotent operations checker that would cause two indices that
      are clearly not the same to make it appear as if they always had the same value.
      
      Fixes <rdar://problem/8431728>.
      
      llvm-svn: 113920
      c4deb923
  7. Aug 11, 2010
  8. Aug 03, 2010
  9. Aug 02, 2010
  10. Jul 07, 2010
  11. Jul 05, 2010
  12. Jul 04, 2010
    • Jordy Rose's avatar
      Add a new symbol type, SymbolExtent, to represent the extents of memory... · 674bd55f
      Jordy Rose authored
      Add a new symbol type, SymbolExtent, to represent the extents of memory regions that may not be known at compile-time (such as those created by malloc). This replaces the old setExtent/getExtent API on Store, which used the GRState's GDM to store SVals.
      
      Also adds a getKnownValue() method to SValuator, which gets the integer value of an SVal if it is known to only have one possible value. There are more places in the code that could be using this, but in general we want to be dealing entirely in SVals, so its usefulness is limited.
      
      The only visible functionality change is that extents are now honored for any DeclRegion, such as fields and Objective-C ivars, rather than just variables. This shows up in bounds-checking and cast-size-checking.
      
      llvm-svn: 107577
      674bd55f
  13. Jul 01, 2010
    • Ted Kremenek's avatar
      Fix PR 7475 by enhancing the static analyzer to also invalidate bindings for... · bd862711
      Ted Kremenek authored
      Fix PR 7475 by enhancing the static analyzer to also invalidate bindings for non-static global variables
      when calling a function/method whose impact on global variables we cannot accurately estimate.
      This change introduces two new MemSpaceRegions that divide up the memory space of globals, and causes
      RegionStore and BasicStore to consult a binding to the NonStaticGlobalsMemSpaceRegion when lazily
      determining the value of a global.
      
      llvm-svn: 107423
      bd862711
  14. May 27, 2010
  15. Apr 17, 2010
  16. Apr 07, 2010
  17. Mar 27, 2010
  18. Feb 17, 2010
  19. Feb 11, 2010
  20. Feb 06, 2010
  21. Jan 25, 2010
    • 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
  22. Jan 11, 2010
  23. Jan 09, 2010
  24. Jan 05, 2010
  25. Dec 17, 2009
  26. Dec 16, 2009
  27. Dec 14, 2009
  28. Dec 11, 2009
  29. 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
  30. Dec 04, 2009
  31. Dec 03, 2009
  32. Dec 01, 2009
  33. Nov 26, 2009
    • Ted Kremenek's avatar
      Add iterators to BlockDataRegion that allow clients to iterate over the... · 3378b610
      Ted Kremenek authored
      Add iterators to BlockDataRegion that allow clients to iterate over the VarRegions for "captured" variables for a block.
      
      llvm-svn: 89927
      3378b610
    • Ted Kremenek's avatar
      Refine MemRegions for blocks. Add a new region called · b63ad7a6
      Ted Kremenek authored
      'BlockDataRegion' to distinguish between the code associated with a
      block (which is represented by 'BlockTextRegion') and an instance of a
      block, which includes both code and data.  'BlockDataRegion' has an
      associated LocationContext, which can be used to eventually model the
      lifetime of a block object once LocationContexts can represent scopes
      (and iterations around a loop, etc.).
      
      llvm-svn: 89900
      b63ad7a6
  34. Nov 25, 2009
Loading