Skip to content
  1. Feb 17, 2011
    • Argyrios Kyrtzidis's avatar
      [analyzer] Use the new registration mechanism on the non-path-sensitive-checkers: · af45aca6
      Argyrios Kyrtzidis authored
        DeadStoresChecker
        ObjCMethSigsChecker
        ObjCUnusedIvarsChecker
        SizeofPointerChecker
        ObjCDeallocChecker
        SecuritySyntaxChecker
      
      llvm-svn: 125779
      af45aca6
    • Argyrios Kyrtzidis's avatar
      [analyzer] · 24ffc08f
      Argyrios Kyrtzidis authored
      -Introduce CheckerV2, a set of templates for convenient declaration & registration of checkers.
       Currently useful just for checkers working on the AST not the path-sensitive ones.
      -Enhance CheckerManager to actually collect the checkers and turn it into the entry point for
       running the checkers.
      -Use the new mechanism for the LLVMConventionsChecker.
      
      llvm-svn: 125778
      24ffc08f
    • 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
Loading