Tools: GCC 3.2.1

Submitted by nimrod
on November 30, 2002 - 2:55am

GCC 3.2.1 (the last in the 3.2.x series, it seems) has been released. Lots of bugfixes in here. Notably, some MMX, SSE, and x86-64 bugs have been fixed.

Additionally, the method of constructing the list of directories to be searched for header files has been revised. If you specify a standard include dir with -I (for example: -I/usr/include), the compiler will ignore it; this is so you don't change the search order for standard include dirs.

For more information, visit the GCC 3.2 changes page, or look at the Release Notes. This bugfix release follows GCC 3.2.0 which was released in mid-August [story].


From: Joe Buck
To: gcc
Date: Tue, 12 Nov 2002 22:43:54 -0800 (PST)
Subject: gcc 3.2.1 release notes (final)

[ changes from Nov 11 draft: add 8314, fix description of 4890, refer
to preprocessor/8524 instead of Debian BT system, fix typos ]

Release notes for GCC 3.2.1

[ note that as I write this 3.2.1 has not yet been released, but Mark
Mitchell has created the pre-release tarball and the window for bug
fixes is closed ].

This version is current as of Nov 12, 2002.

This document lists the problem reports (PRs) from GCC's bug tracking
system (GNATS) that are known to be fixed in the 3.2.1 release. This
list might not be complete (that is, it is possible that some PRs
that have been fixed are not listed here). As you can see, the number
of bug fixes is quite large, so it is strongly recommended that users of
earlier gcc 3.x releases upgrade to GCC 3.2.1.

3.2.1 adds a new warning, -Wabi. This option warns when GNU C++ generates
code that is known not to be binary-compatible with the vendor-neutral
ia32/ia64 ABI. Please consult the GCC manual, included in the
distribution, for details.

This release also removes an old GCC extension, "naming types", and the
documentation now directs users to use a different GCC extension,
"__typeof__", instead. The feature had evidently been broken for a while.

Otherwise, 3.2.1 is a bug fix release only; other than bug fixes and the
new warning there are no new features that were not present in GCC 3.2.

In addition, the previous fix for PR 7445 (poor performance of
std::locale::classic() in multi-threaded applications) was reverted
("unfixed"), because the "fix" was not thread-safe.

Thanks to Daniel Jacobowitz for doing an early draft of this list.

To learn more about a particular PR, visit the link

http://GCC.gnu.org/cgi-bin/gnatsweb.pl

and enter the PR number in the "View Problem Report" dialog box. Then
click the "View" button. It's not necessary to log in to view reports.

My sorting is slightly different from the GNATS categories, and I changed
some of the titles to make them more clear.

First, internal compiler errors (ICEs). These are multi-platform; some
processor-specific ICEs are listed in separate sections below.

2521 (c++) ICE in build_ptrmemfunc, in cp/typeck.c
5661 (c++) ICE instantiating template on array of unknown size (bad code)
6419 (c++) ICE in make_decl_rtl for "longest" attribute on 64-bit platforms
6994 (c++) ICE in find_function_data
7150 preprocessor: GCC -dM -E gives an ICE
7160 ICE when optimizing branches without a return value
7228 (c++) ICE when using member template and template function
7266 (c++) ICE with -pedantic on missing typename
7353 ICE from use of "Naming Types" extension, see above
7411 ICE in instantiate_virtual_regs_1, in function.c
7478 (c++) ICE on static_cast inside template
7526 preprocessor core dump when _Pragma implies #pragma dependency
7721 (c++) ICE on simple (but incorrect) template (7803 is a duplicate)
7754 (c++) ICE on union with template parameter
7788 (c++) redeclaring a definition as an incomplete class causes ICE
8031 (c++) ICE in comptypes, in cp/typeck.c
8055 preprocessor dies with SIG11 when building FreeBSD kernel
8067 (c++) ICE due to mishandling of __FUNCTION__ and related variables
8134 (c++) ICE in force_store_init_value on legal code
8149 (c++) ICE on incomplete type
8160 (c++) ICE in build_modify_expr, in cp/typeck.c: array initialization

C++ (compiler and library) bugs

5607 No pointer adjustment in covariant return types
6579 Infinite loop with statement expressions in member initialization
6803 Default copy constructor bug in GCC 3.1
7176 g++ confused by friend and static member with same name
7188 Segfault with template class and recursive (incorrect) initializer list
7306 Regression: GCC 3.x fails to compile code with virtual inheritance if a
method has a variable number of arguments
7461 ctype::classic_table() returns offset array on Cygwin
7524 f(const float arg[3]) fails
7584 Erroneous ambiguous base error on using declaration
7676 Member template overloading problem
7679 infinite loop when a right parenthesis is missing
7811 default locale not taken from environment
7961 compare( char *) implemented incorrectly in basic_string
8071 basic_ostream::operator

Roadmap says maybe 3.2.2 (?)

coriordan
on
November 30, 2002 - 4:11pm

> GCC 3.2.1 (the last in the 3.2.x series, it seems)

You think? When they blessed the 3.2 series as being "for building
operating systems", I thought that meant they would continue
to support it for a year or two until the next big 3.x release.

I know they're on a 6-month release cycle but not every release (3.1)
would be worth everyone porting their code to. Also having the
developers bless a release every year or two keeps vendors from
having to make the decisions themselves.

The roadmap[1] mentions the possibility for a 3.2.2 release

Anyway, widely used or not, I'm looking forward to the 3.3 release,
the optimisations look interesting[2]. Especially the ones that
make use of profile-driven-feedback[3].

Ciaran O'Riordan (who's having a good weekend and enjoyed the pub)

[1] http://gcc.gnu.org/develop.html#future
[2] http://gcc.gnu.org/gcc-3.3/changes.html
[3] http://gcc.gnu.org/news/profiledriven.html

Re: Roadmap says maybe 3.2.2 (?)

nimrod
on
November 30, 2002 - 6:25pm

Hmm, thanks. I really thought 3.2.1 would be the last 3.2 release (and it might be, who knows?)

I don't read the gcc nor gcc-announce, so I'm not in tune with GCC development. I think I thought it would be the last 3.2 release because they seem to be concentrating most of their efforts on getting 3.3 out the door.

Last in the 3.2 series

Anonymous
on
December 1, 2002 - 8:42pm

I think they were talking about ABI compatibility, and that
is supposed to remain unchanged from now on. The 3.1 -> 3.2
ABI break was unplanned for, and should be the last, I seem
to recall they mentionned it would now remain stable even if
a change brought better standard-compliance.

So I guess you can build OSes with 3.2, bug-fixes and support
will be assured in the next 3.x series.

Be seeing you.