Skip to content
  1. Jan 31, 2010
    • Eli Friedman's avatar
      Simplify EmitMemberInitializer; no intended functionality change. · 60417977
      Eli Friedman authored
      llvm-svn: 94965
      60417977
    • 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
  2. Jan 29, 2010
  3. Jan 15, 2010
  4. Jan 02, 2010
  5. Jan 01, 2010
  6. Dec 24, 2009
  7. Dec 03, 2009
  8. Nov 28, 2009
  9. Nov 24, 2009
  10. Nov 23, 2009
  11. Nov 13, 2009
  12. Nov 10, 2009
  13. Oct 13, 2009
  14. Oct 07, 2009
  15. Oct 03, 2009
  16. Sep 29, 2009
  17. Sep 22, 2009
  18. Sep 12, 2009
Loading