#
7ae2d775 |
| 31-Jan-2010 |
Douglas Gregor <dgregor@apple.com> |
Rework base and member initialization in constructors, with several (necessarily simultaneous) changes:
- CXXBaseOrMemberInitializer now contains only a single initializer rather than a set of
Rework base and member initialization in constructors, with several (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
show more ...
|
#
47000997 |
| 14-Jan-2010 |
John McCall <rjmccall@apple.com> |
Improve overload diagnostics some more by calling out qualifier mismatches for special diagnostics. Unfortunately, the non-overload diagnostics are not this good.
llvm-svn: 93420
|
#
a1709fd8 |
| 14-Jan-2010 |
John McCall <rjmccall@apple.com> |
Improve the diagnostic for bad conversions in overload resolution to talk about 'object argument' vs. 'nth argument'.
llvm-svn: 93395
|
#
6a61b520 |
| 13-Jan-2010 |
John McCall <rjmccall@apple.com> |
Record some basic information about bad conversion sequences. Use that information to feed diagnostics instead of regenerating it. Much room for improvement here, but fixes some unfortunate problem
Record some basic information about bad conversion sequences. Use that information to feed diagnostics instead of regenerating it. Much room for improvement here, but fixes some unfortunate problems reporting on method calls.
llvm-svn: 93316
show more ...
|
#
8fbe78f6 |
| 15-Dec-2009 |
Daniel Dunbar <daniel@zuster.org> |
Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. - This is designed to make it obvious that %clang_cc1 is a "test variable" which is substituted. It is '%clang_cc1' instead o
Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. - This is designed to make it obvious that %clang_cc1 is a "test variable" which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it can be useful to redefine what gets run as 'clang -cc1' (for example, to set a default target).
llvm-svn: 91446
show more ...
|
#
01df9466 |
| 05-Nov-2009 |
Douglas Gregor <dgregor@apple.com> |
Make sure to grab CVR qualifiers from the canonical type. ARGH!
llvm-svn: 86079
|
Revision tags: llvmorg-2.6.0 |
|
#
a45cf5b6 |
| 24-Mar-2009 |
Daniel Dunbar <daniel@zuster.org> |
Rename clang to clang-cc.
Tests and drivers updated, still need to shuffle dirs.
llvm-svn: 67602
|
Revision tags: llvmorg-2.5.0 |
|
#
2175b6a7 |
| 07-Feb-2009 |
Sebastian Redl <sebastian.redl@getdesigned.at> |
Make one expected-diag directive match exactly one actual diagnostic. This uncovers some bugs, so several test cases now fail.
llvm-svn: 64025
|
#
ae5e2857 |
| 12-Jan-2009 |
Douglas Gregor <dgregor@apple.com> |
Update C++ status and add a few more tests of overloading for member function calls
llvm-svn: 62121
|
#
97fd6e24 |
| 22-Dec-2008 |
Douglas Gregor <dgregor@apple.com> |
Add support for calls to overloaded member functions. Things to note: - Overloading has to cope with having both static and non-static member functions in the overload set. - The call may or
Add support for calls to overloaded member functions. Things to note: - Overloading has to cope with having both static and non-static member functions in the overload set. - The call may or may not have an implicit object argument, depending on the syntax (x.f() vs. f()) and the context (static vs. non-static member function). - We now generate MemberExprs for implicit member access expression. - We now cope with mutable whenever we're building MemberExprs.
llvm-svn: 61329
show more ...
|