Skip to content
  1. Mar 11, 2010
  2. Feb 23, 2010
    • John McCall's avatar
      Perform two more constructor/destructor code-size optimizations: · f8ff7b9f
      John McCall authored
      1) emit base destructors as aliases to their unique base class destructors
      under some careful conditions.  This is enabled for the same targets that can
      support complete-to-base aliases, i.e. not darwin.
      
      2) Emit non-variadic complete constructors for classes with no virtual bases
      as calls to the base constructor.  This is enabled on all targets and in
      theory can trigger in situations that the alias optimization can't (mostly
      involving virtual bases, mostly not yet supported).
      
      These are bundled together because I didn't think it worthwhile to split them,
      not because they really need to be.
      
      llvm-svn: 96842
      f8ff7b9f
  3. Feb 19, 2010
    • John McCall's avatar
      More refactoring around constructor/destructor code generation. · b81884d3
      John McCall authored
      Fix some bugs with function-try-blocks and simplify normal try-block
      code generation.
      
      This implementation excludes a deleting destructor's call to
      operator delete() from the function-try-block, which I believe
      is correct but which I can't find straightforward support for at
      a moment's glance.
      
      llvm-svn: 96670
      b81884d3
  4. Feb 18, 2010
  5. Feb 16, 2010
  6. Feb 07, 2010
  7. Feb 06, 2010
  8. Feb 05, 2010
    • John McCall's avatar
      Standardize the parsing of function type attributes in a way that · ab26cfa5
      John McCall authored
      follows (as conservatively as possible) gcc's current behavior:  attributes
      written on return types that don't apply there are applied to the function
      instead, etc.  Only parse CC attributes as type attributes, not as decl attributes;
      don't accepet noreturn as a decl attribute on ValueDecls, either (it still
      needs to apply to other decls, like blocks).  Consistently consume CC/noreturn
      information throughout codegen;  enforce this by removing their default values
      in CodeGenTypes::getFunctionInfo().
      
      llvm-svn: 95436
      ab26cfa5
  9. Feb 03, 2010
  10. Feb 02, 2010
  11. 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
  12. Jan 29, 2010
  13. Jan 15, 2010
  14. Jan 02, 2010
  15. Jan 01, 2010
  16. Dec 24, 2009
  17. Dec 03, 2009
  18. Nov 28, 2009
  19. Nov 24, 2009
  20. Nov 23, 2009
  21. Nov 13, 2009
  22. Nov 10, 2009
  23. Oct 13, 2009
  24. Oct 07, 2009
  25. Oct 03, 2009
  26. Sep 29, 2009
Loading