-fstrict-aliasing is now part of -O2
and higher optimization levels. This allows the compiler to assume
the strictest aliasing rules applicable to the language being
compiled. For C and C++, this activates optimizations based on the
type of expressions. This optimization may thus break old,
non-compliant code.
Enumerations are now properly promoted to int in
function parameters and function returns. Normally this change is
not visible, but when using -fshort-enums this is an
ABI change.
The undocumented extension that allowed C programs to have a
label at the end of a compound statement has been deprecated and may
be removed in a future version. Programs that now generate a
warning about this may be fixed by adding a null statement (a single
semicolon) after the label.
The poorly documented extension that allowed string constants in
C, C++ and Objective C to contain unescaped newlines has been
deprecated and may be removed in a future version. Programs using
this extension may be fixed in several ways: the bare newline may be
replaced by \n, or preceded by \n\, or
string concatenation may be used with the bare newline preceded by
\n" and " placed at the start of the next
line.
The Chill compiler is not included in GCC 3.0, because of the
lack of a volunteer to convert it to use garbage collection.
Certain non-standard iostream methods from earlier versions of
libstdc++ are not included in libstdc++ v3, i.e. filebuf::attach,
ostream::form, and istream::gets.
The new C++ ABI is not yet fully supported by current (as of
2001-07-01) releases and development versions of GDB, or any earlier
versions. There is a problem setting breakpoints by line number, and
other related issues that have been fixed in GCC 3.0 but not yet handled
in GDB:
https://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html