diff options
Diffstat (limited to 'contrib/gcc/cp/NEWS')
-rw-r--r-- | contrib/gcc/cp/NEWS | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/contrib/gcc/cp/NEWS b/contrib/gcc/cp/NEWS index a55b484..caee3fb 100644 --- a/contrib/gcc/cp/NEWS +++ b/contrib/gcc/cp/NEWS @@ -4,6 +4,10 @@ a workaround to allow std compliant code to work with the non-std compliant libstdc++-v2. libstdc++-v3 is std compliant. +* The C++ ABI has been fixed so that `void (A::*)() const' is mangled as + "M1AKFvvE", rather than "MK1AFvvE" as before. This change only affects + pointer to cv-qualified member function types. + * The C++ ABI has been changed to correctly handle this code: struct A { @@ -42,7 +46,22 @@ * The C++ ABI has been changed so that when a parameter is passed by value, any cleanup for that parameter is performed in the caller, as specified - by the ia64 C++ ABI, rather than the called function as before. + by the ia64 C++ ABI, rather than the called function as before. As a + result, classes with a non-trivial destructor but a trivial copy + constructor will be passed and returned by invisible reference, rather + than by bitwise copy as before. + +* G++ now supports the "named return value optimization": for code like + + A f () { + A a; + ... + return a; + } + + G++ will allocate 'a' in the return value slot, so that the return + becomes a no-op. For this to work, all return statements in the function + must return the same variable. *** Changes in GCC 3.0: |