Skip to content
  1. Feb 17, 2011
    • Argyrios Kyrtzidis's avatar
      [analyzer] Pass CheckerManager to the registration functions. · 507ff53e
      Argyrios Kyrtzidis authored
      llvm-svn: 125777
      507ff53e
    • Argyrios Kyrtzidis's avatar
      When building StaticAnalyzer/Frontend add -I "<Checkers build dir>" to allow Checkers.inc to be · 9d5235d5
      Argyrios Kyrtzidis authored
      included without '..', thus being compatible with build systems of *BSDs.
      
      Patch by Joerg Sonnenberger!
      
      llvm-svn: 125758
      9d5235d5
    • John McCall's avatar
      Change the representation of GNU ?: expressions to use a different expression · c07a0c7e
      John McCall authored
      class and to bind the shared value using OpaqueValueExpr.  This fixes an
      unnoticed problem with deserialization of these expressions where the
      deserialized form would lose the vital pointer-equality trait;  or rather,
      it fixes it because this patch also does the right thing for deserializing
      OVEs.
      
      Change OVEs to not be a "temporary object" in the sense that copy elision is
      permitted.
      
      This new representation is not totally unawkward to work with, but I think
      that's really part and parcel with the semantics we're modelling here.  In
      particular, it's much easier to fix things like the copy elision bug and to
      make the CFG look right.
      
      I've tried to update the analyzer to deal with this in at least some          
      obvious cases, and I think we get a much better CFG out, but the printing
      of OpaqueValueExprs probably needs some work.
      
      llvm-svn: 125744
      c07a0c7e
    • Chris Lattner's avatar
      Step #1/N of implementing support for __label__: split labels into · c8e630e4
      Chris Lattner authored
      LabelDecl and LabelStmt.  There is a 1-1 correspondence between the
      two, but this simplifies a bunch of code by itself.  This is because
      labels are the only place where we previously had references to random
      other statements, causing grief for AST serialization and other stuff.
      
      This does cause one regression (attr(unused) doesn't silence unused
      label warnings) which I'll address next.
      
      This does fix some minor bugs:
      1. "The only valid attribute " diagnostic was capitalized.
      2. Various diagnostics printed as ''labelname'' instead of 'labelname'
      3. This reduces duplication of label checking between functions and blocks.
      
      Review appreciated, particularly for the cindex and template bits.
      
      llvm-svn: 125733
      c8e630e4
    • Chris Lattner's avatar
      simplify a bit. · 5a9b1ec9
      Chris Lattner authored
      llvm-svn: 125724
      5a9b1ec9
  2. Feb 16, 2011
  3. Feb 15, 2011
  4. Feb 14, 2011
  5. Feb 12, 2011
  6. Feb 11, 2011
  7. Feb 10, 2011
  8. 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
  9. Feb 08, 2011
  10. 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
  11. Feb 03, 2011
Loading