Our policy on mangling bugs has been that we don't change the mangling unless users explicitly specify -fabi-version. Over time, this means that quite a few bugs have been found but continue to accumulate. Most of these are C++11-specific, which means that as users use C++11 more frequently, the bugs are more likely to affect code in the wild.

For templates, it also seems to me that mangling changes have very little negative impact; in most cases the worst that will happen is that a program ends up with two compatible versions of the same function. And none of the changes affect libstdc++.so. For non-template code, any failures will be at link time, making them straightforward to deal with.

The only non-mangling ABI change since version 2 is to argument promotion of C++11 scoped enums, and since we've been telling people that they need to rebuild all their C++11 code with every major release anyway, I don't think that's an obstacle.

So, for GCC 4.9 I would like to propose that we switch the default ABI version to 0 so that by default we use the most correct mangling. If people really need backward compatible mangling for some reason they can specify the flag appropriately.

Jason

Reply via email to