summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/cp/NEWS
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gcc/cp/NEWS')
-rw-r--r--contrib/gcc/cp/NEWS21
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:
OpenPOWER on IntegriCloud