Skip to content
  1. Jul 17, 2009
  2. Jul 16, 2009
    • Ted Kremenek's avatar
      Add member template 'Type::getAs<T>', which converts a Type* to a respective T*. · e3fb4b65
      Ted Kremenek authored
      This method is intended to eventually replace the individual
      Type::getAsXXXType<> methods.
      
      The motivation behind this change is twofold:
      
      1) Reduce redundant implementations of Type::getAsXXXType() methods. Most of
      them are basically copy-and-paste.
      
      2) By centralizing the implementation of the getAs<Type> logic we can more
      smoothly move over to Doug Gregor's proposed canonical type smart pointer
      scheme.
      
      Along with this patch:
      
      a) Removed 'Type::getAsPointerType()'; now clients use getAs<PointerType>.
      b) Removed 'Type::getAsBlockPointerTypE()'; now clients use getAs<BlockPointerType>.
      
      llvm-svn: 76098
      e3fb4b65
    • Ted Kremenek's avatar
      Move the source-level CFG from libAST to libAnalysis. · 6796fbd2
      Ted Kremenek authored
      llvm-svn: 76092
      6796fbd2
  3. Jul 15, 2009
  4. Jul 14, 2009
  5. Jul 11, 2009
    • Steve Naroff's avatar
      This patch includes a conceptually simple, but very intrusive/pervasive change. · 7cae42b0
      Steve Naroff authored
      The idea is to segregate Objective-C "object" pointers from general C pointers (utilizing the recently added ObjCObjectPointerType). The fun starts in Sema::GetTypeForDeclarator(), where "SomeInterface *" is now represented by a single AST node (rather than a PointerType whose Pointee is an ObjCInterfaceType). Since a significant amount of code assumed ObjC object pointers where based on C pointers/structs, this patch is very tedious. It should also explain why it is hard to accomplish this in smaller, self-contained patches.
      
      This patch does most of the "heavy lifting" related to moving from PointerType->ObjCObjectPointerType. It doesn't include all potential "cleanups". The good news is additional cleanups can be done later (some are noted in the code). This patch is so large that I didn't want to include any changes that are purely aesthetic.
      
      By making the ObjC types truly built-in, they are much easier to work with (and require fewer "hacks"). For example, there is no need for ASTContext::isObjCIdStructType() or ASTContext::isObjCClassStructType()! We believe this change (and the follow-up cleanups) will pay dividends over time. 
      
      Given the amount of code change, I do expect some fallout from this change (though it does pass all of the clang tests). If you notice any problems, please let us know asap! Thanks.
      
      llvm-svn: 75314
      7cae42b0
  6. Jul 08, 2009
  7. Jul 07, 2009
    • Douglas Gregor's avatar
      Make ASTContext explicitly keep track of the declaration for the C · 27821cee
      Douglas Gregor authored
      FILE type, rather than using name lookup to find FILE within the
      translation unit. Within precompiled headers, FILE is treated as yet
      another "special type" (like __builtin_va_list).
      
      This change should provide a performance improvement (not verified),
      since the lookup into the translation unit declaration 
      forces the (otherwise unneeded) construction of a large hash table.
      More importantly, with precompiled headers, the construction
      of that table requires deserializing most of the top-level
      declarations from the precompiled header, which are then unused.
      
      Fixes PR 4509.
      
      llvm-svn: 74911
      27821cee
    • Douglas Gregor's avatar
      Introduce the notion of "Relocatable" precompiled headers, which are built · 0086a5a3
      Douglas Gregor authored
      with a particular system root directory and can be used with a different
      system root directory when the headers it depends on have been installed.
      Relocatable precompiled headers rewrite the file names of the headers used
      when generating the PCH file into the corresponding file names of the 
      headers available when using the PCH file.
      
      Addresses <rdar://problem/7001604>.
      
      llvm-svn: 74885
      0086a5a3
  8. Jul 06, 2009
  9. Jul 02, 2009
    • Douglas Gregor's avatar
      Add support for retrieving the Doxygen comment associated with a given · c6d5edd2
      Douglas Gregor authored
      declaration in the AST. 
      
      The new ASTContext::getCommentForDecl function searches for a comment
      that is attached to the given declaration, and returns that comment, 
      which may be composed of several comment blocks.
      
      Comments are always available in an AST. However, to avoid harming
      performance, we don't actually parse the comments. Rather, we keep the
      source ranges of all of the comments within a large, sorted vector,
      then lazily extract comments via a binary search in that vector only
      when needed (which never occurs in a "normal" compile).
      
      Comments are written to a precompiled header/AST file as a blob of
      source ranges. That blob is only lazily loaded when one requests a
      comment for a declaration (this never occurs in a "normal" compile). 
      
      The indexer testbed now supports comment extraction. When the
      -point-at location points to a declaration with a Doxygen-style
      comment, the indexer testbed prints the associated comment
      block(s). See test/Index/comments.c for an example.
      
      Some notes:
        - We don't actually attempt to parse the comment blocks themselves,
        beyond identifying them as Doxygen comment blocks to associate them
        with a declaration.
        - We won't find comment blocks that aren't adjacent to the
        declaration, because we start our search based on the location of
        the declaration.
        - We don't go through the necessary hops to find, for example,
        whether some redeclaration of a declaration has comments when our
        current declaration does not. Similarly, we don't attempt to
        associate a \param Foo marker in a function body comment with the
        parameter named Foo (although that is certainly possible).
        - Verification of my "no performance impact" claims is still "to be
        done".
      
      llvm-svn: 74704
      c6d5edd2
    • Douglas Gregor's avatar
      Fix PR 4489, a PCH crash during de-serialization. · e4d00dd7
      Douglas Gregor authored
      llvm-svn: 74664
      e4d00dd7
    • Owen Anderson's avatar
      ecaeaa81
  10. Jul 01, 2009
  11. Jun 30, 2009
Loading