*** Changes in GCC 2.95:
* Messages about non-conformant code that we can still handle ("pedwarns")
are now errors by default, rather than warnings. This can be reverted
with -fpermissive, and is overridden by -pedantic or -pedantic-errors.
* String constants are now of type `const char[n]', rather than `char[n]'.
This can be reverted with -fno-const-strings.
* References to functions are now supported.
* Lookup of class members during class definition now works in all cases.
* In overload resolution, type conversion operators are now properly
treated as always coming from the most derived class.
* C99-style restricted pointers are supported, using the `__restrict'
keyword.
* You can now use -fno-implicit-inline-templates to suppress writing out
implicit instantiations of inline templates. Normally we do write them
out, even with -fno-implicit-templates, so that optimization doesn't
affect which instantiations are needed.
* -fstrict-prototype now also suppresses implicit declarations.
* Many obsolete options have been removed: -fall-virtual, -fmemoize-lookups,
-fsave-memoized, +e?, -fenum-int-equivalence, -fno-nonnull-objects.
* Unused virtual functions can be discarded on some targets by specifying
-ffunction-sections -fvtable-gc to the compiler and --gc-sections to the
linker. Unfortunately, this only works on Linux if you're linking
statically.
* Lots of bugs stomped.
*** Changes in EGCS 1.1:
* Namespaces are fully supported. The library has not yet been converted
to use namespace std, however, and the old std-faking code is still on by
default. To turn it off, you can use -fhonor-std.
* Massive template improvements:
+ member template classes are supported.
+ template friends are supported.
+ template template parameters are supported.
+ local classes in templates are supported.
+ lots of bugs fixed.
* operator new now throws bad_alloc where appropriate.
* Exception handling is now thread safe, and supports nested exceptions and
placement delete. Exception handling overhead on x86 is much lower with
GNU as 2.9.
* protected virtual inheritance is now supported.
* Loops are optimized better; we now move the test to the end in most
cases, like the C frontend does.
* For class D derived from B which has a member 'int i', &D::i is now of
type 'int B::*' instead of 'int D::*'.
* An _experimental_ new ABI for g++ can be turned on with -fnew-abi. The
current features of this are more efficient allocation of base classes
(including the empty base optimization), and more compact mangling of C++
symbol names (which can be turned on separately with -fsquangle). This
ABI is subject to change without notice, so don't use it for anything
that you don't want to rebuild with every release of the compiler.
As with all ABI-changing flags, this flag is for experts only, as all
code (including the library code in libgcc and libstdc++) must be
compiled with the same ABI.
Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to contact the FSF.
These pages are maintained by the GCC team.
For questions related to the use of GCC, please consult these web pages and the GCC manuals. If that fails, the gcc-help@gcc.gnu.org mailing list might help.Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA.
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
| Last modified 2006-06-21 |
|