Skip to content
  1. Feb 06, 2010
  2. Feb 05, 2010
  3. Feb 04, 2010
  4. Feb 03, 2010
    • Chandler Carruth's avatar
      54a0f48e
    • Zhongxing Xu's avatar
      Add skeleton of flat store manager. · 5df3f536
      Zhongxing Xu authored
      llvm-svn: 95214
      5df3f536
    • Ted Kremenek's avatar
      Fix regression in RegionStore due to recent changes in · d960564b
      Ted Kremenek authored
      RegionStoreManager::InvalidateRegions() by adjusting the worklist to
      iterate over BindingKeys instead of MemRegions.  We also only need to
      do the actual invalidation work on base regions, and for non-base
      regions just blow away their bindings.
      
      llvm-svn: 95200
      d960564b
    • Ted Kremenek's avatar
      Rework RegionStoreManager's implementation of InvalidateRegions() to · 64efd0d2
      Ted Kremenek authored
      not build a subregion map and instead do a single scan of the store.
      This is done by building "region clusters" that represent the
      collection of regions that have the same base region.  Invalidating
      any region in a cluster means that they all should get invalidated.
      
      This change brought out a point that Zhongxing mentioned to me
      offline: the flattened memory binding has issues distinguishing
      between direct and default bindings.  For example, setting the default
      value for an entire struct is the same as binding to the first
      element.  To address this problem, I moved the binding "tag" (Direct
      or Default) from BindingVal to BdingKey (and removed BindingVal
      entirely).  This requires us to do double lookups in some cases; and
      there is still much more cleanup that can be done.
      
      This change produced a noticeable speedup when analyzing sqlite3 (a
      reduction of 4% in running time).
      
      llvm-svn: 95193
      64efd0d2
  5. Feb 02, 2010
  6. Jan 27, 2010
  7. Jan 26, 2010
  8. Jan 25, 2010
    • Ted Kremenek's avatar
    • Ted Kremenek's avatar
      Add missing file. · 0a4546b6
      Ted Kremenek authored
      llvm-svn: 94407
      0a4546b6
    • 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
Loading