*** 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 front end 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.
Copyright (C) Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
These pages are maintained by the GCC team. Last modified 2022-10-26.