Skip to content
  1. Apr 13, 2009
  2. Apr 12, 2009
  3. Apr 11, 2009
  4. Apr 10, 2009
    • Douglas Gregor's avatar
      Various minor fixes to PCH reading and writing, with general · 1e9bf3ba
      Douglas Gregor authored
      cleanup. Aside from a minor tweak to the PCH file format, no
      functionality change. 
      
      llvm-svn: 68793
      1e9bf3ba
    • Douglas Gregor's avatar
      Implementation of pre-compiled headers (PCH) based on lazy · ef84c4b4
      Douglas Gregor authored
      de-serialization of abstract syntax trees.
      
      PCH support serializes the contents of the abstract syntax tree (AST)
      to a bitstream. When the PCH file is read, declarations are serialized
      as-needed. For example, a declaration of a variable "x" will be
      deserialized only when its VarDecl can be found by a client, e.g.,
      based on name lookup for "x" or traversing the entire contents of the
      owner of "x".
      
      This commit provides the framework for serialization and (lazy)
      deserialization, along with support for variable and typedef
      declarations (along with several kinds of types). More
      declarations/types, along with important auxiliary structures (source
      manager, preprocessor, etc.), will follow.
      
      llvm-svn: 68732
      ef84c4b4
  5. Apr 09, 2009
  6. Apr 08, 2009
  7. Apr 07, 2009
  8. Apr 02, 2009
  9. Apr 01, 2009
    • Douglas Gregor's avatar
      Make parsing a semantic analysis a little more robust following Sema · fe3d7d08
      Douglas Gregor authored
      failures that involve malformed types, e.g., "typename X::foo" where
      "foo" isn't a type, or "std::vector<void>" that doens't instantiate
      properly.
      
      Similarly, be a bit smarter in our handling of ambiguities that occur
      in Sema::getTypeName, to eliminate duplicate error messages about
      ambiguous name lookup.
      
      This eliminates two XFAILs in test/SemaCXX, one of which was crying
      out to us, trying to tell us that we were producing repeated error
      messages.
      
      llvm-svn: 68251
      fe3d7d08
  10. Mar 31, 2009
  11. Mar 29, 2009
    • Chris Lattner's avatar
      Push DeclGroup much farther throughout the compiler. Now the various · 5bbb3c8a
      Chris Lattner authored
      productions (except the already broken ObjC cases like @class X,Y;) in 
      the parser that can produce more than one Decl return a DeclGroup instead
      of a Decl, etc.
      
      This allows elimination of the Decl::NextDeclarator field, and exposes
      various clients that should look at all decls in a group, but which were
      only looking at one (such as the dumper, printer, etc).  These have been
      fixed.
      
      Still TODO:
      
      1) there are some FIXME's in the code about potentially using
      DeclGroup for better location info.
      2) ParseObjCAtDirectives should return a DeclGroup due to @class etc.
      3) I'm not sure what is going on with StmtIterator.cpp, or if it can
         be radically simplified now.
      4) I put a truly horrible hack in ParseTemplate.cpp.
      
      I plan to bring up #3/4 on the mailing list, but don't plan to tackle
      #1/2 in the short term.
      
      llvm-svn: 68002
      5bbb3c8a
  12. Mar 28, 2009
    • Chris Lattner's avatar
      Introduce a new OpaquePtr<N> struct type, which is a simple POD wrapper for a · 83f095cc
      Chris Lattner authored
      pointer.  Its purpose in life is to be a glorified void*, but which does not
      implicitly convert to void* or other OpaquePtr's with a different UID.
      
      Introduce Action::DeclPtrTy which is a typedef for OpaquePtr<0>.  Change the 
      entire parser/sema interface to use DeclPtrTy instead of DeclTy*.  This
      makes the C++ compiler enforce that these aren't convertible to other opaque
      types.
      
      We should also convert ExprTy, StmtTy, TypeTy, AttrTy, BaseTy, etc,
      but I don't plan to do that in the short term.
      
      The one outstanding known problem with this patch is that we lose the 
      bitmangling optimization where ActionResult<DeclPtrTy> doesn't know how to
      bitmangle the success bit into the low bit of DeclPtrTy.  I will rectify
      this with a subsequent patch.
      
      llvm-svn: 67952
      83f095cc
  13. Mar 27, 2009
  14. Mar 26, 2009
  15. Mar 25, 2009
  16. Mar 24, 2009
    • Douglas Gregor's avatar
      Make sure to use RequireCompleteType rather than testing for · ac1fb65d
      Douglas Gregor authored
      incomplete types. RequireCompleteType is needed when the type may be
      completed by instantiating a template.
      
      llvm-svn: 67643
      ac1fb65d
    • Anders Carlsson's avatar
      More work on diagnosing abstract classes. We can now handle cases like · b5a27b46
      Anders Carlsson authored
      class C {
        void g(C c);
      
        virtual void f() = 0;
      };
      
      In this case, C is not known to be abstract when doing semantic analysis on g. This is done by recursively traversing the abstract class and checking the types of member functions. 
      
      llvm-svn: 67594
      b5a27b46
    • Douglas Gregor's avatar
      Template instantiation for the declarations of member functions within · f4f296de
      Douglas Gregor authored
      a class template. At present, we can only instantiation normal
      methods, but not constructors, destructors, or conversion operators.
      
      As ever, this contains a bit of refactoring in Sema's type-checking. In
      particular:
      
        - Split ActOnFunctionDeclarator into ActOnFunctionDeclarator
          (handling the declarator itself) and CheckFunctionDeclaration
          (checking for the the function declaration), the latter of which
          is also used by template instantiation.
        - We were performing the adjustment of function parameter types in
          three places; collect those into a single new routine.
        - When the type of a parameter is adjusted, allocate an
          OriginalParmVarDecl to keep track of the type as it was written.
        - Eliminate a redundant check for out-of-line declarations of member
          functions; hide more C++-specific checks on function declarations
          behind if(getLangOptions().CPlusPlus).
      
      llvm-svn: 67575
      f4f296de
  17. Mar 23, 2009
  18. Mar 22, 2009
Loading