Skip to content
  1. Feb 09, 2011
    • Peter Collingbourne's avatar
    • John McCall's avatar
      Remove vtables from the Stmt hierarchy; this was pretty easy as · bd066789
      John McCall authored
      there were only three virtual methods of any significance.
      
      The primary way to grab child iterators now is with
        Stmt::child_range children();
        Stmt::const_child_range children() const;
      where a child_range is just a std::pair of iterators suitable for
      being llvm::tie'd to some locals.  I've left the old child_begin()
      and child_end() accessors in place, but it's probably a substantial
      penalty to grab the iterators individually now, since the
      switch-based dispatch is kindof inherently slower than vtable
      dispatch.  Grabbing them together is probably a slight win over the
      status quo, although of course we could've achieved that with vtables, too.
      
      I also reclassified SwitchCase (correctly) as an abstract Stmt
      class, which (as the first such class that wasn't an Expr subclass)
      required some fiddling in a few places.
      
      There are somewhat gross metaprogramming hooks in place to ensure
      that new statements/expressions continue to implement
      getSourceRange() and children().  I had to work around a recent clang
      bug;  dgregor actually fixed it already, but I didn't want to
      introduce a selfhosting dependency on ToT.
      
      llvm-svn: 125183
      bd066789
    • Ted Kremenek's avatar
      static analyzer: Further reduce the analyzer's memory usage when analyzing... · a40f8ebc
      Ted Kremenek authored
      static analyzer: Further reduce the analyzer's memory usage when analyzing sqlite3 by 7-10% by recylcing "uninteresting" ExplodedNodes.
      
      The optimization involves eagerly pruning ExplodedNodes from the ExplodedGraph that contain
      practically no difference between the predecessor and successor nodes.  For example, if
      the state is different between a predecessor and a node, the node is left in.  Only for
      the 'environment' component of the state do we not care if the ExplodedNodes are different.
      This paves the way for future optimizations where we can reclaim the environment objects.
      
      llvm-svn: 125154
      a40f8ebc
  2. Feb 08, 2011
  3. Feb 05, 2011
    • Argyrios Kyrtzidis's avatar
      [analyzer] Fix a false positive of the 'self' initialization checker. · dd03d8dd
      Argyrios Kyrtzidis authored
      A common pattern in classes with multiple initializers is to put the
      subclass's common initialization bits into a static function that receives
      the value of 'self', e.g:
      
         if (!(self = [super init]))
           return nil;
         if (!(self = _commonInit(self)))
           return nil;
      
      It was reported that 'self' was not set to the result of [super init].
      Until we can use inter-procedural analysis, in such a call, transfer the
      ObjCSelfInitChecker flags associated with 'self' to the result of the call.
      
      Fixes rdar://8937441 & http://llvm.org/PR9094
      
      llvm-svn: 124940
      dd03d8dd
  4. Feb 03, 2011
  5. Feb 02, 2011
  6. Feb 01, 2011
  7. Jan 27, 2011
  8. Jan 26, 2011
  9. Jan 25, 2011
  10. Jan 24, 2011
  11. Jan 20, 2011
  12. Jan 19, 2011
  13. Jan 18, 2011
  14. Jan 17, 2011
  15. Jan 15, 2011
  16. Jan 14, 2011
  17. Jan 13, 2011
Loading