Skip to content
  1. Feb 01, 2010
  2. Jan 31, 2010
    • Eli Friedman's avatar
      Switch expressions like T() and T(1,2) over to new-style initialization. I'm · a682427e
      Eli Friedman authored
      not quite sure what we want to do about the AST representation; comments
      welcome.
      
      llvm-svn: 94967
      a682427e
    • Eli Friedman's avatar
      Simplify EmitMemberInitializer; no intended functionality change. · 60417977
      Eli Friedman authored
      llvm-svn: 94965
      60417977
    • Anders Carlsson's avatar
    • Douglas Gregor's avatar
      Rework base and member initialization in constructors, with several · 7ae2d775
      Douglas Gregor authored
      (necessarily simultaneous) changes:
      
        - CXXBaseOrMemberInitializer now contains only a single initializer
          rather than a set of initialiation arguments + a constructor. The
          single initializer covers all aspects of initialization, including
          constructor calls as necessary but also cleanup of temporaries
          created by the initializer (which we never handled
          before!).
      
        - Rework + simplify code generation for CXXBaseOrMemberInitializers,
          since we can now just emit the initializer as an initializer.
      
        - Switched base and member initialization over to the new
          initialization code (InitializationSequence), so that it
      
        - Improved diagnostics for the new initialization code when
          initializing bases and members, to match the diagnostics produced
          by the previous (special-purpose) code.
      
        - Simplify the representation of type-checked constructor initializers in
          templates; instead of keeping the fully-type-checked AST, which is
          rather hard to undo at template instantiation time, throw away the
          type-checked AST and store the raw expressions in the AST. This
          simplifies instantiation, but loses a little but of information in
          the AST.
      
        - When type-checking implicit base or member initializers within a
          dependent context, don't add the generated initializers into the
          AST, because they'll look like they were explicit.
      
        - Record in CXXConstructExpr when the constructor call is to
        initialize a base class, so that CodeGen does not have to infer it
        from context. This ensures that we call the right kind of
        constructor.
      
      There are also a few "opportunity" fixes here that were needed to not
      regress, for example:
      
        - Diagnose default-initialization of a const-qualified class that
          does not have a user-declared default constructor. We had this
          diagnostic specifically for bases and members, but missed it for
          variables. That's fixed now.
      
        - When defining the implicit constructors, destructor, and
          copy-assignment operator, set the CurContext to that constructor
          when we're defining the body.
      
      llvm-svn: 94952
      7ae2d775
    • Anders Carlsson's avatar
      When performing a derived-to-base cast that we know will not change the... · 6276b250
      Anders Carlsson authored
      When performing a derived-to-base cast that we know will not change the offset, we don't need to null check the input pointer. Fixes PR5965.
      
      llvm-svn: 94942
      6276b250
    • Anders Carlsson's avatar
      When doing a base-to-derived cast we don't need to null check the derived... · 600f737b
      Anders Carlsson authored
      When doing a base-to-derived cast we don't need to null check the derived value if the class offset is 0.
      
      llvm-svn: 94939
      600f737b
    • Anders Carlsson's avatar
      Some class related cleanup. · 84673e20
      Anders Carlsson authored
      llvm-svn: 94938
      84673e20
  3. Jan 30, 2010
  4. Jan 29, 2010
  5. Jan 28, 2010
  6. Jan 27, 2010
  7. Jan 26, 2010
Loading