1 This file contains information about GCC releases which has been generated
2 automatically from the online release notes. It covers releases of GCC
3 (and the former EGCS project) since EGCS 1.0, on the line of development
4 that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2,
7 ======================================================================
8 http://gcc.gnu.org/gcc-4.8/index.html
13 The [1]GNU project and the GCC developers are pleased to announce the
16 This release is a bug-fix release, containing fixes for regressions in
17 GCC 4.8.0 relative to previous releases of GCC.
22 May 31, 2013 ([2]changes, [3]documentation)
25 March 22, 2013 ([4]changes, [5]documentation)
27 References and Acknowledgements
29 GCC used to stand for the GNU C Compiler, but since the compiler
30 supports several other languages aside from C, it now stands for the
31 GNU Compiler Collection.
33 A list of [6]successful builds is updated as new information becomes
36 The GCC developers would like to thank the numerous people that have
37 contributed new features, improvements, bug fixes, and other changes as
38 well as test results to GCC. This [7]amazing group of volunteers is
39 what makes GCC successful.
41 For additional information about GCC please refer to the [8]GCC project
42 web site or contact the [9]GCC development mailing list.
44 To obtain GCC please use [10]our mirror sites or [11]our SVN server.
47 For questions related to the use of GCC, please consult these web
48 pages and the [12]GCC manuals. If that fails, the
49 [13]gcc-help@gcc.gnu.org mailing list might help. Comments on these
50 web pages and the development of GCC are welcome on our developer
51 list at [14]gcc@gcc.gnu.org. All of [15]our lists have public
54 Copyright (C) [16]Free Software Foundation, Inc. Verbatim copying and
55 distribution of this entire article is permitted in any medium,
56 provided this notice is preserved.
58 These pages are [17]maintained by the GCC team. Last modified
63 1. http://www.gnu.org/
64 2. http://gcc.gnu.org/gcc-4.8/changes.html
65 3. http://gcc.gnu.org/onlinedocs/4.8.1/
66 4. http://gcc.gnu.org/gcc-4.8/changes.html
67 5. http://gcc.gnu.org/onlinedocs/4.8.0/
68 6. http://gcc.gnu.org/gcc-4.8/buildstat.html
69 7. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
70 8. http://gcc.gnu.org/index.html
71 9. mailto:gcc@gcc.gnu.org
72 10. http://gcc.gnu.org/mirrors.html
73 11. http://gcc.gnu.org/svn.html
74 12. http://gcc.gnu.org/onlinedocs/
75 13. mailto:gcc-help@gcc.gnu.org
76 14. mailto:gcc@gcc.gnu.org
77 15. http://gcc.gnu.org/lists.html
78 16. http://www.fsf.org/
79 17. http://gcc.gnu.org/about.html
80 18. http://validator.w3.org/check/referer
81 ======================================================================
82 http://gcc.gnu.org/gcc-4.8/changes.html
83 GCC 4.8 Release Series
84 Changes, New Features, and Fixes
88 GCC now uses C++ as its implementation language. This means that to
89 build GCC from sources, you will need a C++ compiler that understands
90 C++ 2003. For more details on the rationale and specific changes,
91 please refer to the [1]C++ conversion page.
93 To enable the Graphite framework for loop optimizations you now need
94 CLooG version 0.18.0 and ISL version 0.11.1. Both can be obtained from
95 the [2]GCC infrastructure directory. The installation manual contains
96 more information about requirements to build GCC.
98 GCC now uses a more aggressive analysis to derive an upper bound for
99 the number of iterations of loops using constraints imposed by language
100 standards. This may cause non-conforming programs to no longer work as
101 expected, such as SPEC CPU 2006 464.h264ref and 416.gamess. A new
102 option, -fno-aggressive-loop-optimizations, was added to disable this
103 aggressive analysis. In some loops that have known constant number of
104 iterations, but undefined behavior is known to occur in the loop before
105 reaching or during the last iteration, GCC will warn about the
106 undefined behavior in the loop instead of deriving lower upper bound of
107 the number of iterations for the loop. The warning can be disabled with
108 -Wno-aggressive-loop-optimizations.
110 On ARM, a bug has been fixed in GCC's implementation of the AAPCS rules
111 for the layout of vectors that could lead to wrong code being
112 generated. Vectors larger than 8 bytes in size are now by default
113 aligned to an 8-byte boundary. This is an ABI change: code that makes
114 explicit use of vector types may be incompatible with binary objects
115 built with older versions of GCC. Auto-vectorized code is not affected
118 On AVR, support has been removed for the command-line option
119 -mshort-calls deprecated in GCC 4.7.
121 On AVR, the configure option --with-avrlibc supported since GCC 4.7.2
122 is turned on per default for all non-RTEMS configurations. This option
123 arranges for a better integration of [3]AVR Libc with avr-gcc. For
124 technical details, see [4]PR54461. To turn off the option in non-RTEMS
125 configurations, use --with-avrlibc=no. If the compiler is configured
126 for RTEMS, the option is always turned off.
128 More information on porting to GCC 4.8 from previous versions of GCC
129 can be found in the [5]porting guide for this release.
131 General Optimizer Improvements (and Changes)
133 * DWARF4 is now the default when generating DWARF debug information.
134 When -g is used on a platform that uses DWARF debugging
135 information, GCC will now default to -gdwarf-4
136 -fno-debug-types-section.
137 GDB 7.5, Valgrind 3.8.0 and elfutils 0.154 debug information
138 consumers support DWARF4 by default. Before GCC 4.8 the default
139 version used was DWARF2. To make GCC 4.8 generate an older DWARF
140 version use -g together with -gdwarf-2 or -gdwarf-3. The default
141 for Darwin and VxWorks is still -gdwarf-2 -gstrict-dwarf.
142 * A new general optimization level, -Og, has been introduced. It
143 addresses the need for fast compilation and a superior debugging
144 experience while providing a reasonable level of runtime
145 performance. Overall experience for development should be better
146 than the default optimization level -O0.
147 * A new option -ftree-partial-pre was added to control the partial
148 redundancy elimination (PRE) optimization. This option is enabled
149 by default at the -O3 optimization level, and it makes PRE more
151 * The option -fconserve-space has been removed; it was no longer
152 useful on most targets since GCC supports putting variables into
153 BSS without making them common.
154 * The struct reorg and matrix reorg optimizations (command-line
155 options -fipa-struct-reorg and -fipa-matrix-reorg) have been
156 removed. They did not always work correctly, nor did they work with
157 link-time optimization (LTO), hence were only applicable to
158 programs consisting of a single translation unit.
159 * Several scalability bottle-necks have been removed from GCC's
160 optimization passes. Compilation of extremely large functions, e.g.
161 due to the use of the flatten attribute in the "Eigen" C++ linear
162 algebra templates library, is significantly faster than previous
164 * Link-time optimization (LTO) improvements:
165 + LTO partitioning has been rewritten for better reliability and
166 maintanibility. Several important bugs leading to link
167 failures have been fixed.
168 * Interprocedural optimization improvements:
169 + A new symbol table has been implemented. It builds on existing
170 callgraph and varpool modules and provide a new API. Unusual
171 symbol visibilities and aliases are handled more consistently
172 leading to, for example, more aggressive unreachable code
174 + The inline heuristic can now bypass limits on the size of of
175 inlined functions when the inlining is particularly
176 profitable. This happens, for example, when loop bounds or
177 array strides get propagated.
178 + Values passed through aggregates (either by value or
179 reference) are now propagated at the inter-procedural level
180 leading to better inlining decisions (for example in the case
181 of Fortran array descriptors) and devirtualization.
182 * [6]AddressSanitizer , a fast memory error detector, has been added
183 and can be enabled via -fsanitize=address. Memory access
184 instructions will be instrumented to detect heap-, stack-, and
185 global-buffer overflow as well as use-after-free bugs. To get nicer
186 stacktraces, use -fno-omit-frame-pointer. The AddressSanitizer is
187 available on IA-32/x86-64/x32/PowerPC/PowerPC64 GNU/Linux and on
189 * [7]ThreadSanitizer has been added and can be enabled via
190 -fsanitize=thread. Instructions will be instrumented to detect data
191 races. The ThreadSanitizer is available on x86-64 GNU/Linux.
192 * A new local register allocator has been implemented, which replaces
193 the 26 year old reload pass and improves generated code quality.
194 For now it is active on the ia32 and x86-64 targets.
195 * Support for transactional memory has been implemented on the
196 following architectures: IA-32/x86-64, ARM, PowerPC, SH, Sparc, and
199 New Languages and Language specific improvements
203 * Each diagnostic emitted now includes the original source line and a
204 caret '^' indicating the column. The option
205 -fno-diagnostics-show-caret suppresses this information.
206 * The option -ftrack-macro-expansion=2 is now enabled by default.
207 This allows the compiler to display the macro expansion stack in
208 diagnostics. Combined with the caret information, an example
209 diagnostic showing these two features is:
211 t.c:1:94: error: invalid operands to binary < (have `struct mystruct' and `float
213 #define MYMAX(A,B) __extension__ ({ __typeof__(A) __a = (A); __typeof__(B) _
214 _b = (B); __a < __b ? __b : __a; })
217 t.c:7:7: note: in expansion of macro 'MYMAX'
221 * A new -Wsizeof-pointer-memaccess warning has been added (also
222 enabled by -Wall) to warn about suspicious length parameters to
223 certain string and memory built-in functions if the argument uses
224 sizeof. This warning warns e.g. about memset (ptr, 0, sizeof
225 (ptr)); if ptr is not an array, but a pointer, and suggests a
226 possible fix, or about memcpy (&foo, ptr, sizeof (&foo));.
227 * The new option -Wpedantic is an alias for -pedantic, which is now
228 deprecated. The forms -Wno-pedantic, -Werror=pedantic, and
229 -Wno-error=pedantic work in the same way as for any other -W
230 option. One caveat is that -Werror=pedantic is not equivalent to
231 -pedantic-errors, since the latter makes into errors some warnings
232 that are not controlled by -Wpedantic, and the former only affects
233 diagnostics that are disabled when using -Wno-pedantic.
234 * The option -Wshadow no longer warns if a declaration shadows a
235 function declaration, unless the former declares a function or
236 pointer to function, because this is [8]a common and valid case in
241 * G++ now implements the [9]C++11 thread_local keyword; this differs
242 from the GNU __thread keyword primarily in that it allows dynamic
243 initialization and destruction semantics. Unfortunately, this
244 support requires a run-time penalty for references to
245 non-function-local thread_local variables defined in a different
246 translation unit even if they don't need dynamic initialization, so
247 users may want to continue to use __thread for TLS variables with
248 static initialization semantics.
249 If the programmer can be sure that no use of the variable in a
250 non-defining TU needs to trigger dynamic initialization (either
251 because the variable is statically initialized, or a use of the
252 variable in the defining TU will be executed before any uses in
253 another TU), they can avoid this overhead with the
254 -fno-extern-tls-init option.
255 OpenMP threadprivate variables now also support dynamic
256 initialization and destruction by the same mechanism.
257 * G++ now implements the [10]C++11 attribute syntax, e.g.
259 [[noreturn]] void f();
261 and also the alignment specifier, e.g.
263 alignas(double) int i;
265 * G++ now implements [11]C++11 inheriting constructors, e.g.
267 struct A { A(int); };
268 struct B: A { using A::A; }; // defines B::B(int)
271 * As of GCC 4.8.1, G++ implements the change to decltype semantics
275 decltype(f()) g(); // OK, return type of f() is not required to be complete.
277 * As of GCC 4.8.1, G++ implements [13]C++11 ref-qualifiers, e.g.
279 struct A { int f() &; };
280 int i = A().f(); // error, f() requires an lvalue object
282 * G++ now supports a -std=c++1y option for experimentation with
283 features proposed for the next revision of the standard, expected
284 around 2014. Currently the only difference from -std=c++11 is
285 support for return type deduction in normal functions, as proposed
286 in [14]N3386. Status of C++1y features in GCC 4.8 can be found
288 * The G++ namespace association extension, __attribute ((strong)),
289 has been deprecated. Inline namespaces should be used instead.
290 * G++ now supports a -fext-numeric-literal option to control whether
291 GNU numeric literal suffixes are accepted as extensions or
292 processed as C++11 user-defined numeric literal suffixes. The flag
293 is on (use suffixes for GNU literals) by default for -std=gnu++*,
294 and -std=c++98. The flag is off (use suffixes for user-defined
295 literals) by default for -std=c++11 and later.
297 Runtime Library (libstdc++)
299 * [16]Improved experimental support for the new ISO C++ standard,
301 + forward_list meets the allocator-aware container requirements;
302 + this_thread::sleep_for(), this_thread::sleep_until() and
303 this_thread::yield() are defined without requiring the
304 configure option --enable-libstdcxx-time;
305 * Improvements to <random>:
306 + SSE optimized normal_distribution.
307 + Use of hardware RNG instruction for random_device on new x86
308 processors (requires the assembler to support the
311 + New random number engine simd_fast_mersenne_twister_engine
312 with an optimized SSE implementation.
313 + New random number distributions beta_distribution,
314 normal_mv_distribution, rice_distribution,
315 nakagami_distribution, pareto_distribution, k_distribution,
316 arcsine_distribution, hoyt_distribution.
317 * Added --disable-libstdcxx-verbose configure option to disable
318 diagnostic messages issued when a process terminates abnormally.
319 This may be useful for embedded systems to reduce the size of
320 executables that link statically to the library.
324 * Compatibility notice:
325 + Module files: The version of module files (.mod) has been
326 incremented. Fortran MODULEs compiled by earlier GCC versions
327 have to be recompiled, when they are USEd by files compiled
328 with GCC 4.8. GCC 4.8 is not able to read .mod files created
329 by earlier versions; attempting to do so gives an error
331 Note: The ABI of the produced assembler data itself has not
332 changed; object files and libraries are fully compatible with
333 older versions except as noted below.
334 + ABI: Some internal names (used in the assembler/object file)
335 have changed for symbols declared in the specification part of
336 a module. If an affected module - or a file using it via use
337 association - is recompiled, the module and all files which
338 directly use such symbols have to be recompiled as well. This
339 change only affects the following kind of module symbols:
340 o Procedure pointers. Note: C-interoperable function
341 pointers (type(c_funptr)) are not affected nor are
342 procedure-pointer components.
343 o Deferred-length character strings.
344 * The [17]BACKTRACE intrinsic subroutine has been added. It shows a
345 backtrace at an arbitrary place in user code; program execution
346 continues normally afterwards.
347 * The [18]-Wc-binding-type warning option has been added (disabled by
348 default). It warns if the a variable might not be C interoperable;
349 in particular, if the variable has been declared using an intrinsic
350 type with default kind instead of using a kind parameter defined
351 for C interoperability in the intrinsic ISO_C_Binding module.
352 Before, this warning was always printed. The -Wc-binding-type
353 option is enabled by -Wall.
354 * The [19]-Wrealloc-lhs and -Wrealloc-lhs-all warning command-line
355 options have been added, which diagnose when code to is inserted
356 for automatic (re)allocation of a variable during assignment. This
357 option can be used to decide whether it is safe to use
358 [20]-fno-realloc-lhs. Additionally, it can be used to find
359 automatic (re)allocation in hot loops. (For arrays, replacing
360 "var=" by "var(:)=" disables the automatic reallocation.)
361 * The [21]-Wcompare-reals command-line option has been added. When
362 this is set, warnings are issued when comparing REAL or COMPLEX
363 types for equality and inequality; consider replacing a == b by
364 abs(a-b) < eps with a suitable eps. -Wcompare-reals is enabled by
366 * The [22]-Wtarget-lifetime command-line option has been added
367 (enabled with -Wall), which warns if the pointer in a pointer
368 assignment might outlive its target.
369 * Reading floating point numbers which use "q" for the exponential
370 (such as 4.0q0) is now supported as vendor extension for better
371 compatibility with old data files. It is strongly recommended to
372 use for I/O the equivalent but standard conforming "e" (such as
374 (For Fortran source code, consider replacing the "q" in
375 floating-point literals by a kind parameter (e.g. 4.0e0_qp with a
376 suitable qp). Note that - in Fortran source code - replacing "q" by
377 a simple "e" is not equivalent.)
378 * The GFORTRAN_TMPDIR environment variable for specifying a
379 non-default directory for files opened with STATUS="SCRATCH", is
380 not used anymore. Instead gfortran checks the POSIX/GNU standard
381 TMPDIR environment variable. If TMPDIR is not defined, gfortran
382 falls back to other methods to determine the directory for
383 temporary files as documented in the [23]user manual.
385 + Support for unlimited polymorphic variables (CLASS(*)) has
386 been added. Nonconstant character lengths are not yet
389 + Assumed types (TYPE(*)) are now supported.
390 + Experimental support for assumed-rank arrays (dimension(..))
391 has been added. Note that currently gfortran's own array
392 descriptor is used, which is different from the one defined in
393 TS29113, see [26]gfortran's header file or use the [27]Chasm
394 Language Interoperability Tools.
398 * GCC 4.8.0 and 4.8.1 implement a preliminary version of the Go 1.1
399 release. The library support is not quite complete.
400 * Go has been tested on GNU/Linux and Solaris platforms for various
401 processors including x86, x86_64, PowerPC, SPARC, and Alpha. It may
402 work on other platforms as well.
404 New Targets and Target Specific Improvements
408 * A new port has been added to support AArch64, the new 64-bit
409 architecture from ARM. Note that this is a separate port from the
410 existing 32-bit ARM port.
411 * The port provides initial support for the Cortex-A53 and the
412 Cortex-A57 processors with the command line options
413 -mcpu=cortex-a53 and -mcpu=cortex-a57.
417 * Initial support has been added for the AArch32 extensions defined
418 in the ARMv8 architecture.
419 * Code generation improvements for the Cortex-A7 and Cortex-A15 CPUs.
420 * A new option, -mcpu=marvell-pj4, has been added to generate code
421 for the Marvell PJ4 processor.
422 * The compiler can now automatically generate the VFMA, VFMS, REVSH
423 and REV16 instructions.
424 * A new vectorizer cost model for Advanced SIMD configurations to
425 improve the auto-vectorization strategies used.
426 * The scheduler now takes into account the number of live registers
427 to reduce the amount of spilling that can occur. This should
428 improve code performance in large functions. The limit can be
429 removed by using the option -fno-sched-pressure.
430 * Improvements have been made to the Marvell iWMMX code generation
431 and support for the iWMMX2 SIMD unit has been added. The option
432 -mcpu=iwmmxt2 can be used to enable code generation for the latter.
433 * A number of code generation improvements for Thumb2 to reduce code
434 size when compiling for the M-profile processors.
435 * The RTEMS (arm-rtems) port has been updated to use the EABI.
436 * Code generation support for the old FPA and Maverick floating-point
437 architectures has been removed. Ports that previously relied on
438 these features have also been removed. This includes the targets:
439 + arm*-*-linux-gnu (use arm*-*-linux-gnueabi)
440 + arm*-*-elf (use arm*-*-eabi)
441 + arm*-*-uclinux* (use arm*-*-uclinux*eabi)
442 + arm*-*-ecos-elf (no alternative)
443 + arm*-*-freebsd (no alternative)
444 + arm*-wince-pe* (no alternative).
448 * Support for the "Embedded C" fixed-point has been added. For
449 details, see the [28]GCC wiki and the [29]user manual. The support
451 * A new print modifier %r for register operands in inline assembler
452 is supported. It will print the raw register number without the
454 /* Return the most significant byte of 'val', a 64-bit value. */
456 unsigned char msb (long long val)
459 __asm__ ("mov %0, %r1+7" : "=r" (c) : "r" (val));
462 The inline assembler in this example will generate code like
464 provided c is allocated to R24 and val is allocated to R8...R15.
465 This works because the GNU assembler accepts plain register numbers
466 without register prefix.
467 * Static initializers with 3-byte symbols are supported now:
468 extern const __memx char foo;
469 const __memx void *pfoo = &foo;
470 This requires at least Binutils 2.23.
474 * Allow -mpreferred-stack-boundary=3 for the x86-64 architecture with
475 SSE extensions disabled. Since the x86-64 ABI requires 16 byte
476 stack alignment, this is ABI incompatible and intended to be used
477 in controlled environments where stack space is an important
478 limitation. This option will lead to wrong code when functions
479 compiled with 16 byte stack alignment (such as functions from a
480 standard library) are called with misaligned stack. In this case,
481 SSE instructions may lead to misaligned memory access traps. In
482 addition, variable arguments will be handled incorrectly for 16
483 byte aligned objects (including x87 long double and __int128),
484 leading to wrong results. You must build all modules with
485 -mpreferred-stack-boundary=3, including any libraries. This
486 includes the system libraries and startup modules.
487 * Support for the new Intel processor codename Broadwell with RDSEED,
488 ADCX, ADOX, PREFETCHW is available through -madx, -mprfchw,
489 -mrdseed command-line options.
490 * Support for the Intel RTM and HLE intrinsics, built-in functions
491 and code generation is available via -mrtm and -mhle.
492 * Support for the Intel FXSR, XSAVE and XSAVEOPT instruction sets.
493 Intrinsics and built-in functions are available via -mfxsr, -mxsave
494 and -mxsaveopt respectively.
495 * New -maddress-mode=[short|long] options for x32.
496 -maddress-mode=short overrides default 64-bit addresses to 32-bit
497 by emitting the 0x67 address-size override prefix. This is the
498 default address mode for x32.
499 * New built-in functions to detect run-time CPU type and ISA:
500 + A built-in function __builtin_cpu_is has been added to detect
501 if the run-time CPU is of a particular type. It returns a
502 positive integer on a match and zero otherwise. It accepts one
503 string literal argument, the CPU name. For example,
504 __builtin_cpu_is("westmere") returns a positive integer if the
505 run-time CPU is an Intel Core i7 Westmere processor. Please
506 refer to the [30]user manual for the list of valid CPU names
508 + A built-in function __builtin_cpu_supports has been added to
509 detect if the run-time CPU supports a particular ISA feature.
510 It returns a positive integer on a match and zero otherwise.
511 It accepts one string literal argument, the ISA feature. For
512 example, __builtin_cpu_supports("ssse3") returns a positive
513 integer if the run-time CPU supports SSSE3 instructions.
514 Please refer to the [31]user manual for the list of valid ISA
516 Caveat: If these built-in functions are called before any static
517 constructors are invoked, like during IFUNC initialization, then
518 the CPU detection initialization must be explicitly run using this
519 newly provided built-in function, __builtin_cpu_init. The
520 initialization needs to be done only once. For example, this is how
521 the invocation would look like inside an IFUNC initializer:
522 static void (*some_ifunc_resolver(void))(void)
524 __builtin_cpu_init();
525 if (__builtin_cpu_is("amdfam10h") ...
526 if (__builtin_cpu_supports("popcnt") ...
529 * Function Multiversioning Support with G++:
530 It is now possible to create multiple function versions each
531 targeting a specific processor and/or ISA. Function versions have
532 the same signature but different target attributes. For example,
533 here is a program with function versions:
534 __attribute__ ((target ("default")))
540 __attribute__ ((target ("sse4.2")))
549 assert ((*p)() == foo());
553 Please refer to this [32]wiki for more information.
554 * The x86 backend has been improved to allow option -fschedule-insns
555 to work reliably. This option can be used to schedule instructions
556 better and leads to improved performace in certain cases.
557 * Windows MinGW-w64 targets (*-w64-mingw*) require at least r5437
558 from the Mingw-w64 trunk.
559 * Support for new AMD family 15h processors (Steamroller core) is now
560 available through the -march=bdver3 and -mtune=bdver3 options.
561 * Support for new AMD family 16h processors (Jaguar core) is now
562 available through the -march=btver2 and -mtune=btver2 options.
566 * This target now supports the -fstack-usage command-line option.
570 * GCC can now generate code specifically for the R4700, Broadcom XLP
571 and MIPS 34kn processors. The associated -march options are
572 -march=r4700, -march=xlp and -march=34kn respectively.
573 * GCC now generates better DSP code for MIPS 74k cores thanks to
574 further scheduling optimizations.
575 * The MIPS port now supports the -fstack-check option.
576 * GCC now passes the -mmcu and -mno-mcu options to the assembler.
577 * Previous versions of GCC would silently accept -fpic and -fPIC for
578 -mno-abicalls targets like mips*-elf. This combination was not
579 intended or supported, and did not generate position-independent
580 code. GCC 4.8 now reports an error when this combination is used.
582 PowerPC / PowerPC64 / RS6000
584 * SVR4 configurations (GNU/Linux, FreeBSD, NetBSD) no longer save,
585 restore or update the VRSAVE register by default. The respective
586 operating systems manage the VRSAVE register directly.
587 * Large TOC support has been added for AIX through the command line
588 option -mcmodel=large.
589 * Native Thread-Local Storage support has been added for AIX.
590 * VMX (Altivec) and VSX instruction sets now are enabled implicitly
591 when targetting processors that support those hardware features on
596 * This target will now issue a warning message whenever multiple fast
597 interrupt handlers are found in the same compilation unit. This
598 feature can be turned off by the new
599 -mno-warn-multiple-fast-interrupts command-line option.
603 * Support for the IBM zEnterprise zEC12 processor has been added.
604 When using the -march=zEC12 option, the compiler will generate code
605 making use of the following new instructions:
606 + load and trap instructions
607 + 2 new compare and trap instructions
608 + rotate and insert selected bits - without CC clobber
609 The -mtune=zEC12 option enables zEC12 specific instruction
610 scheduling without making use of new instructions.
611 * Register pressure sensitive instruction scheduling is enabled by
613 * The ifunc function attribute is enabled by default.
614 * memcpy and memcmp invokations on big memory chunks or with run time
615 lengths are not generated inline anymore when tuning for z10 or
616 higher. The purpose is to make use of the IFUNC optimized versions
621 * The default alignment settings have been reduced to be less
622 aggressive. This results in more compact code for optimization
623 levels other than -Os.
624 * Improved support for the __atomic built-in functions:
625 + A new option -matomic-model=model selects the model for the
626 generated atomic sequences. The following models are
630 Software gUSA sequences (SH3* and SH4* only). On
631 SH4A targets this will now also partially utilize
632 the movco.l and movli.l instructions. This is the
633 default when the target is sh3*-*-linux* or
637 Hardware movco.l / movli.l sequences (SH4A only).
640 Software thread control block sequences.
643 Software interrupt flipping sequences (privileged
644 mode only). This is the default when the target is
645 sh1*-*-linux* or sh2*-*-linux*.
648 Generates function calls to the respective __atomic
649 built-in functions. This is the default for SH64
650 targets or when the target is not sh*-*-linux*.
652 + The option -msoft-atomic has been deprecated. It is now an
653 alias for -matomic-model=soft-gusa.
654 + A new option -mtas makes the compiler generate the tas.b
655 instruction for the __atomic_test_and_set built-in function
656 regardless of the selected atomic model.
657 + The __sync functions in libgcc now reflect the selected atomic
658 model when building the toolchain.
659 * Added support for the mov.b and mov.w instructions with
660 displacement addressing.
661 * Added support for the SH2A instructions movu.b and movu.w.
662 * Various improvements to code generated for integer arithmetic.
663 * Improvements to conditional branches and code that involves the T
664 bit. A new option -mzdcbranch tells the compiler to favor
665 zero-displacement branches. This is enabled by default for SH4*
667 * The pref instruction will now be emitted by the __builtin_prefetch
668 built-in function for SH3* targets.
669 * The fmac instruction will now be emitted by the fmaf standard
670 function and the __builtin_fmaf built-in function.
671 * The -mfused-madd option has been deprecated in favor of the
672 machine-independent -ffp-contract option. Notice that the fmac
673 instruction will now be generated by default for expressions like a
674 * b + c. This is due to the compiler default setting
676 * Added new options -mfsrra and -mfsca to allow the compiler using
677 the fsrra and fsca instructions on targets other than SH4A (where
678 they are already enabled by default).
679 * Added support for the __builtin_bswap32 built-in function. It is
680 now expanded as a sequence of swap.b and swap.w instructions
681 instead of a library function call.
682 * The behavior of the -mieee option has been fixed and the negative
683 form -mno-ieee has been added to control the IEEE conformance of
684 floating point comparisons. By default -mieee is now enabled and
685 the option -ffinite-math-only implicitly sets -mno-ieee.
686 * Added support for the built-in functions __builtin_thread_pointer
687 and __builtin_set_thread_pointer. This assumes that GBR is used to
688 hold the thread pointer of the current thread. Memory loads and
689 stores relative to the address returned by __builtin_thread_pointer
690 will now also utilize GBR based displacement address modes.
691 * The -mdiv= option for targets other than SHmedia has been fixed and
696 * Added optimized instruction scheduling for Niagara4.
700 * Added support for the -mcmodel=MODEL command-line option. The
701 models supported are small and large.
705 * This target now supports the E3V5 architecture via the use of the
706 new -mv850e3v5 command-line option. It also has experimental
707 support for the e3v5 LOOP instruction which can be enabled via the
708 new -mloop command-line option.
712 * This target now supports the -fstack-usage command-line option.
718 * Executables are now linked against shared libgcc by default. The
719 previous default was to link statically, which can still be done by
720 explicitly specifying -static or -static-libgcc on the command
721 line. However it is strongly advised against, as it will cause
722 problems for any application that makes use of DLLs compiled by
723 GCC. It should be alright for a monolithic stand-alone application
724 that only links against the Windows OS DLLs, but offers little or
729 This is the [33]list of problem reports (PRs) from GCC's bug tracking
730 system that are known to be fixed in the 4.8.1 release. This list might
731 not be complete (that is, it is possible that some PRs that have been
732 fixed are not listed here).
734 The C++11 <chrono> std::chrono::system_clock and
735 std::chrono::steady_clock classes have changed ABI in GCC 4.8.1, they
736 both are now separate (never typedefs of each other), both use
737 std::chrono::nanoseconds resolution, on most GNU/Linux configurations
738 std::chrono::steady_clock is now finally monotonic, and both classes
739 are mangled differently than in the previous GCC releases.
740 std::chrono::system_clock::now() with std::chrono::microseconds resp.
741 std::chrono::seconds resolution is still exported for backwards
742 compatibility with default configured libstdc++. Note that libstdc++
743 configured with --enable-libstdcxx-time= used to be ABI incompatible
744 with default configured libstdc++ for those two classes and no ABI
745 compatibility can be offered for those configurations, so any C++11
746 code that uses those classes and has been compiled and linked against
747 libstdc++ configured with the non-default --enable-libstdcxx-time=
748 configuration option needs to be recompiled.
751 For questions related to the use of GCC, please consult these web
752 pages and the [34]GCC manuals. If that fails, the
753 [35]gcc-help@gcc.gnu.org mailing list might help. Comments on these
754 web pages and the development of GCC are welcome on our developer
755 list at [36]gcc@gcc.gnu.org. All of [37]our lists have public
758 Copyright (C) [38]Free Software Foundation, Inc. Verbatim copying and
759 distribution of this entire article is permitted in any medium,
760 provided this notice is preserved.
762 These pages are [39]maintained by the GCC team. Last modified
767 1. http://gcc.gnu.org/wiki/cxx-conversion
768 2. ftp://gcc.gnu.org/pub/gcc/infrastructure/
769 3. http://www.nongnu.org/avr-libc/
770 4. http://gcc.gnu.org/PR54461
771 5. http://gcc.gnu.org/gcc-4.8/porting_to.html
772 6. https://code.google.com/p/address-sanitizer/
773 7. https://code.google.com/p/data-race-test/wiki/ThreadSanitizer
774 8. https://lkml.org/lkml/2006/11/28/239
775 9. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
776 10. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
777 11. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
778 12. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf
779 13. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
780 14. http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3386.html
781 15. http://gcc.gnu.org/projects/cxx1y.html
782 16. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2011
783 17. http://gcc.gnu.org/onlinedocs/gfortran/BACKTRACE.html
784 18. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
785 19. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
786 20. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
787 21. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
788 22. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
789 23. http://gcc.gnu.org/onlinedocs/gfortran/TMPDIR.html
790 24. http://gcc.gnu.org/wiki/Fortran2003Status
791 25. http://gcc.gnu.org/wiki/TS29113Status
792 26. http://gcc.gnu.org/viewcvs/trunk/libgfortran/libgfortran.h?content-type=text%2Fplain&view=co
793 27. http://chasm-interop.sourceforge.net/
794 28. http://gcc.gnu.org/wiki/avr-gcc#Fixed-Point_Support
795 29. http://gcc.gnu.org/onlinedocs/gcc/Fixed-Point.html
796 30. http://gcc.gnu.org/onlinedocs/gcc/X86-Built-in-Functions.html#X86-Built-in-Functions
797 31. http://gcc.gnu.org/onlinedocs/gcc/X86-Built-in-Functions.html#X86-Built-in-Functions
798 32. http://gcc.gnu.org/wiki/FunctionMultiVersioning
799 33. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.1
800 34. http://gcc.gnu.org/onlinedocs/
801 35. mailto:gcc-help@gcc.gnu.org
802 36. mailto:gcc@gcc.gnu.org
803 37. http://gcc.gnu.org/lists.html
804 38. http://www.fsf.org/
805 39. http://gcc.gnu.org/about.html
806 40. http://validator.w3.org/check/referer
807 ======================================================================
808 http://gcc.gnu.org/gcc-4.7/index.html
809 GCC 4.7 Release Series
813 The [1]GNU project and the GCC developers are pleased to announce the
814 release of GCC 4.7.3.
816 This release is a bug-fix release, containing fixes for regressions in
817 GCC 4.7.2 relative to previous releases of GCC.
822 April 11, 2013 ([2]changes, [3]documentation)
825 September 20, 2012 ([4]changes, [5]documentation)
828 June 14, 2012 ([6]changes, [7]documentation)
831 March 22, 2012 ([8]changes, [9]documentation)
833 References and Acknowledgements
835 GCC used to stand for the GNU C Compiler, but since the compiler
836 supports several other languages aside from C, it now stands for the
837 GNU Compiler Collection.
839 A list of [10]successful builds is updated as new information becomes
842 The GCC developers would like to thank the numerous people that have
843 contributed new features, improvements, bug fixes, and other changes as
844 well as test results to GCC. This [11]amazing group of volunteers is
845 what makes GCC successful.
847 For additional information about GCC please refer to the [12]GCC
848 project web site or contact the [13]GCC development mailing list.
850 To obtain GCC please use [14]our mirror sites or [15]our SVN server.
853 For questions related to the use of GCC, please consult these web
854 pages and the [16]GCC manuals. If that fails, the
855 [17]gcc-help@gcc.gnu.org mailing list might help. Comments on these
856 web pages and the development of GCC are welcome on our developer
857 list at [18]gcc@gcc.gnu.org. All of [19]our lists have public
860 Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
861 distribution of this entire article is permitted in any medium,
862 provided this notice is preserved.
864 These pages are [21]maintained by the GCC team. Last modified
869 1. http://www.gnu.org/
870 2. http://gcc.gnu.org/gcc-4.7/changes.html
871 3. http://gcc.gnu.org/onlinedocs/4.7.3/
872 4. http://gcc.gnu.org/gcc-4.7/changes.html
873 5. http://gcc.gnu.org/onlinedocs/4.7.2/
874 6. http://gcc.gnu.org/gcc-4.7/changes.html
875 7. http://gcc.gnu.org/onlinedocs/4.7.1/
876 8. http://gcc.gnu.org/gcc-4.7/changes.html
877 9. http://gcc.gnu.org/onlinedocs/4.7.0/
878 10. http://gcc.gnu.org/gcc-4.7/buildstat.html
879 11. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
880 12. http://gcc.gnu.org/index.html
881 13. mailto:gcc@gcc.gnu.org
882 14. http://gcc.gnu.org/mirrors.html
883 15. http://gcc.gnu.org/svn.html
884 16. http://gcc.gnu.org/onlinedocs/
885 17. mailto:gcc-help@gcc.gnu.org
886 18. mailto:gcc@gcc.gnu.org
887 19. http://gcc.gnu.org/lists.html
888 20. http://www.fsf.org/
889 21. http://gcc.gnu.org/about.html
890 22. http://validator.w3.org/check/referer
891 ======================================================================
892 http://gcc.gnu.org/gcc-4.7/changes.html
893 GCC 4.7 Release Series
894 Changes, New Features, and Fixes
898 * The -fconserve-space flag has been deprecated. The flag had no
899 effect for most targets: only targets without a global .bss section
900 and without support for switchable sections. Furthermore, the flag
901 only had an effect for G++, where it could result in wrong
902 semantics (please refer to the GCC manual for further details). The
903 flag will be removed in GCC 4.8
904 * Support for a number of older systems and recently unmaintained or
905 untested target ports of GCC has been declared obsolete in GCC 4.7.
906 Unless there is activity to revive them, the next release of GCC
907 will have their sources permanently removed.
908 All GCC ports for the following processor architectures have been
910 + picoChip (picochip-*)
911 The following ports for individual systems on particular
912 architectures have been obsoleted:
913 + IRIX 6.5 (mips-sgi-irix6.5)
914 + MIPS OpenBSD (mips*-*-openbsd*)
915 + Solaris 8 (*-*-solaris2.8). Details can be found in the
917 + Tru64 UNIX V5.1 (alpha*-dec-osf5.1*)
918 * On ARM, when compiling for ARMv6 (but not ARMv6-M), ARMv7-A,
919 ARMv7-R, or ARMv7-M, the new option -munaligned-access is active by
920 default, which for some sources generates code that accesses memory
921 on unaligned addresses. This requires the kernel of those systems
922 to enable such accesses (controlled by CP15 register c1, refer to
923 ARM documentation). Alternatively, or for compatibility with
924 kernels where unaligned accesses are not supported, all code has to
925 be compiled with -mno-unaligned-access. Upstream Linux kernel
926 releases have automatically and unconditionally supported unaligned
927 accesses as emitted by GCC due to this option being active since
929 * Support on ARM for the legacy floating-point accelerator (FPA) and
930 the mixed-endian floating-point format that it used has been
931 obsoleted. The ports that still use this format have been obsoleted
932 as well. Many legacy ARM ports already provide an alternative that
933 uses the VFP floating-point format. The obsolete ports will be
934 deleted in the next release.
935 The obsolete ports with alternatives are:
936 + arm*-*-rtems (use arm*-*-rtemseabi)
937 + arm*-*-linux-gnu (use arm*-*-linux-gnueabi)
938 + arm*-*-elf (use arm*-*-eabi)
939 + arm*-*-uclinux* (use arm*-*-uclinux*eabi)
940 Note, however, that these alternatives are not binary compatible
941 with their legacy counterparts (although some can support running
942 legacy applications).
943 The obsolete ports that currently lack a modern alternative are:
947 New ports that support more recent versions of the architecture are
949 * Support for the Maverick co-processor on ARM has been obsoleted.
950 Code to support it will be deleted in the next release.
951 * Support has been removed for Unix International threads on Solaris
952 2, so the --enable-threads=solaris configure option and the
953 -threads compiler option don't work any longer.
954 * Support has been removed for the Solaris BSD Compatibility Package,
955 which lives in /usr/ucbinclude and /usr/ucblib. It has been removed
956 from Solaris 11, and was only intended as a migration aid from
957 SunOS 4 to SunOS 5. The -compat-bsd compiler option is not
958 recognized any longer.
959 * The AVR port's libgcc has been improved and its multilib structure
960 has been enhanced. As a result, all objects contributing to an
961 application must either be compiled with GCC versions up to 4.6.x
962 or with GCC versions 4.7.1 or later. If the compiler is used with
963 AVR Libc, you need a version that supports the new layout, i.e.
964 implements [2]#35407.
965 * The AVR port's -mshort-calls command-line option has been
966 deprecated. It will be removed in the GCC 4.8 release. See -mrelax
968 * The AVR port only references startup code that clears .bss and the
969 common section resp. initializes the .data and .rodata section
970 provided respective sections (or subsections thereof) are not
971 empty, see [3]PR18145. Applications that put all static storage
972 objects into non-standard sections and / or define all static
973 storage objects in assembler modules, must reference __do_clear_bss
974 resp. __do_copy_data by hand or undefine the symbol(s) by means of
975 -Wl,-u,__do_clear_bss resp. -Wl,-u,__do_copy_data.
976 * The ARM port's -mwords-little-endian option has been deprecated. It
977 will be removed in a future release.
978 * Support has been removed for the NetWare x86 configuration
979 obsoleted in GCC 4.6.
980 * It is no longer possible to use the "l" constraint in MIPS16 asm
982 * GCC versions 4.7.0 and 4.7.1 had changes to the C++ standard
983 library which affected the ABI in C++11 mode: a data member was
984 added to std::list changing its size and altering the definitions
985 of some member functions, and std::pair's move constructor was
986 non-trivial which altered the calling convention for functions with
987 std::pair arguments or return types. The ABI incompatibilities have
988 been fixed for GCC version 4.7.2 but as a result C++11 code
989 compiled with GCC 4.7.0 or 4.7.1 may be incompatible with C++11
990 code compiled with different GCC versions and with C++98/C++03 code
991 compiled with any version.
992 * On ARM, a bug has been fixed in GCC's implementation of the AAPCS
993 rules for the layout of vectors that could lead to wrong code being
994 generated. Vectors larger than 8 bytes in size are now by default
995 aligned to an 8-byte boundary. This is an ABI change: code that
996 makes explicit use of vector types may be incompatible with binary
997 objects built with older versions of GCC. Auto-vectorized code is
998 not affected by this change. (This change affects GCC versions
1000 * More information on porting to GCC 4.7 from previous versions of
1001 GCC can be found in the [4]porting guide for this release.
1003 General Optimizer Improvements
1005 * Support for a new parameter --param case-values-threshold=n was
1006 added to allow users to control the cutoff between doing switch
1007 statements as a series of if statements and using a jump table.
1008 * Link-time optimization (LTO) improvements:
1009 + Improved scalability and reduced memory usage. Link time
1010 optimization of Firefox now requires 3GB of RAM on a 64-bit
1011 system, while over 8GB was needed previously. Linking time has
1012 been improved, too. The serial stage of linking Firefox has
1013 been sped up by about a factor of 10.
1014 + Reduced size of object files and temporary storage used during
1016 + Streaming performance (both outbound and inbound) has been
1018 + ld -r is now supported with LTO.
1019 + Several bug fixes, especially in symbol table handling and
1021 * Interprocedural optimization improvements:
1022 + Heuristics now take into account that after inlining code will
1023 be optimized out because of known values (or properties) of
1024 function parameters. For example:
1035 The call of foo will be inlined into bar even when optimizing
1036 for code size. Constructs based on __builtin_constant_p are
1037 now understood by the inliner and code size estimates are
1038 evaluated a lot more realistically.
1039 + The representation of C++ virtual thunks and aliases (both
1040 implicit and defined via the alias attribute) has been
1041 re-engineered. Aliases no longer pose optimization barriers
1042 and calls to an alias can be inlined and otherwise optimized.
1043 + The inter-procedural constant propagation pass has been
1044 rewritten. It now performs generic function specialization.
1045 For example when compiling the following:
1049 ... do something ...
1051 ... do something else ...
1063 GCC will now produce two copies of foo. One with flag being
1064 true, while other with flag being false. This leads to
1065 performance improvements previously possible only by inlining
1066 all calls. Cloning causes a lot less code size growth.
1067 * A string length optimization pass has been added. It attempts to
1068 track string lengths and optimize various standard C string
1069 functions like strlen, strchr, strcpy, strcat, stpcpy and their
1070 _FORTIFY_SOURCE counterparts into faster alternatives. This pass is
1071 enabled by default at -O2 or above, unless optimizing for size, and
1072 can be disabled by the -fno-optimize-strlen option. The pass can
1074 char *bar (const char *a)
1076 size_t l = strlen (a) + 2;
1077 char *p = malloc (l); if (p == NULL) return p;
1078 strcpy (p, a); strcat (p, "/"); return p;
1082 char *bar (const char *a)
1084 size_t tmp = strlen (a);
1085 char *p = malloc (tmp + 2); if (p == NULL) return p;
1086 memcpy (p, a, tmp); memcpy (p + tmp, "/", 2); return p;
1089 or for hosted compilations where stpcpy is available in the runtime
1090 and headers provide its prototype, e.g.
1091 void foo (char *a, const char *b, const char *c, const char *d)
1093 strcpy (a, b); strcat (a, c); strcat (a, d);
1096 can be optimized into:
1097 void foo (char *a, const char *b, const char *c, const char *d)
1099 strcpy (stpcpy (stpcpy (a, b), c), d);
1102 New Languages and Language specific improvements
1104 * Version 3.1 of the [5]OpenMP specification is now supported for the
1105 C, C++, and Fortran compilers.
1109 * The command-line option -feliminate-unused-debug-types has been
1110 re-enabled by default, as it is for the other languages, leading to
1111 a reduction in debug info size of 12.5% and more for relevant
1112 cases, as well as to a small compilation speedup.
1116 * A new built-in, __builtin_assume_aligned, has been added, through
1117 which the compiler can be hinted about pointer alignment and can
1118 use it to improve generated code.
1119 * A new warning option -Wunused-local-typedefs was added for C, C++,
1120 Objective-C and Objective-C++. This warning diagnoses typedefs
1121 locally defined in a function, and otherwise not used.
1122 * A new experimental command-line option -ftrack-macro-expansion was
1123 added for C, C++, Objective-C, Objective-C++ and Fortran. It allows
1124 the compiler to emit diagnostic about the current macro expansion
1125 stack when a compilation error occurs in a macro expansion.
1126 * Experimental support for transactional memory has been added. It
1127 includes support in the compiler, as well as a supporting runtime
1128 library called libitm. To compile code with transactional memory
1129 constructs, use the -fgnu-tm option.
1130 Support is currently available for Alpha, ARM, PowerPC, SH, SPARC,
1131 and 32-bit/64-bit x86 platforms.
1132 For more details on transactional memory see [6]the GCC WiKi.
1133 * Support for atomic operations specifying the C++11/C11 memory model
1134 has been added. These new __atomic routines replace the existing
1135 __sync built-in routines.
1136 Atomic support is also available for memory blocks. Lock-free
1137 instructions will be used if a memory block is the same size and
1138 alignment as a supported integer type. Atomic operations which do
1139 not have lock-free support are left as function calls. A set of
1140 library functions is available on the GCC atomic wiki in the
1141 "External Atomics Library" section.
1142 For more details on the memory models and features, see the
1144 * When a binary operation is performed on vector types and one of the
1145 operands is a uniform vector, it is possible to replace the vector
1146 with the generating element. For example:
1147 typedef int v4si __attribute__ ((vector_size (16)));
1148 v4si res, a = {1,2,3,4};
1151 res = 2 + a; /* means {2,2,2,2} + a */
1152 res = a - x; /* means a - {x,x,x,x} */
1156 * There is support for some more features from the C11 revision of
1157 the ISO C standard. GCC now accepts the options -std=c11 and
1158 -std=gnu11, in addition to the previous -std=c1x and -std=gnu1x.
1159 + Unicode strings (previously supported only with options such
1160 as -std=gnu11, now supported with -std=c11), and the
1161 predefined macros __STDC_UTF_16__ and __STDC_UTF_32__.
1162 + Nonreturning functions (_Noreturn and <stdnoreturn.h>).
1163 + Alignment support (_Alignas, _Alignof, max_align_t,
1165 + A built-in function __builtin_complex is provided to support C
1166 library implementation of the CMPLX family of macros.
1170 * G++ now accepts the -std=c++11, -std=gnu++11, and -Wc++11-compat
1171 options, which are equivalent to -std=c++0x, -std=gnu++0x, and
1172 -Wc++0x-compat, respectively.
1173 * G++ now implements [8]C++11 extended friend syntax:
1178 static const int I = 2;
1188 * Thanks to Ville Voutilainen, G++ now implements [9]C++11 explicit
1192 virtual void f() const final;
1193 virtual void f(int);
1197 void f() const; // error: D::f attempts to override final B::f
1198 void f(long) override; // error: doesn't override anything
1199 void f(int) override; // ok
1203 struct F: E { }; // error: deriving from final class
1205 * G++ now implements [10]C++11 non-static data member initializers.
1209 } a; // initializes a.i to 42
1211 * Thanks to Ed Smith-Rowland, G++ now implements [11]C++11
1212 user-defined literals.
1214 // Not actually a good approximation. :)
1215 constexpr long double operator"" _degrees (long double d) { return d * 0.0175; }
1216 long double pi = 180.0_degrees;
1218 * G++ now implements [12]C++11 alias-declarations.
1220 template <class T> using Ptr = T*;
1221 Ptr<int> ip; // decltype(ip) is int*
1223 * Thanks to Ville Voutilainen and Pedro Lamarao, G++ now implements
1224 [13]C++11 delegating constructors.
1228 A(): A(42) { } // delegate to the A(int) constructor
1231 * G++ now fully implements C++11 atomic classes rather than just
1232 integer derived classes.
1238 std::atomic<POD> my_atomic_POD;
1240 * G++ now sets the predefined macro __cplusplus to the correct value,
1241 199711L for C++98/03, and 201103L for C++11.
1242 * G++ now correctly implements the two-phase lookup rules such that
1243 an unqualified name used in a template must have an appropriate
1244 declaration found either in scope at the point of definition of the
1245 template or by argument-dependent lookup at the point of
1246 instantiation. As a result, code that relies on a second
1247 unqualified lookup at the point of instantiation to find functions
1248 declared after the template or in dependent bases will be rejected.
1249 The compiler will suggest ways to fix affected code, and using the
1250 -fpermissive compiler flag will allow the code to compile with a
1254 void f() { g(T()); } // error, g(int) not found by argument-dependent lookup
1255 void g(int) { } // fix by moving this declaration before the declaration of f
1259 // error, B::g(B) not found by argument-dependent lookup
1260 void f() { g(T()); } // fix by using this->g or A::g
1263 struct B { void g(B); };
1271 * G++ now properly re-uses stack space allocated for temporary
1272 objects when their lifetime ends, which can significantly lower
1273 stack consumption for some C++ functions. As a result of this, some
1274 code with undefined behavior will now break:
1276 const int &f(const int &i) { return i; }
1278 const int &x = f(1);
1279 const int &y = f(2);
1281 Here, x refers to the temporary allocated to hold the 1 argument,
1282 which only lives until the end of the initialization; it
1283 immediately becomes a dangling reference. So the next statement
1284 re-uses the stack slot to hold the 2 argument, and users of x get
1286 Note that this should not cause any change of behavior for
1287 temporaries of types with non-trivial destructors, as they are
1288 already destroyed at end of full-expression; the change is that now
1289 the storage is released as well.
1290 * A new command-line option -Wdelete-non-virtual-dtor has been added
1291 to warn when delete is used to destroy an instance of a class which
1292 has virtual functions and non-virtual destructor. It is unsafe to
1293 delete an instance of a derived class through a pointer to a base
1294 class if the base class does not have a virtual destructor. This
1295 warning is enabled by -Wall.
1296 * A new command-line option -Wzero-as-null-pointer-constant has been
1297 added to warn when a literal '0' is used as null pointer constant.
1298 It can be useful to facilitate the conversion to nullptr in C++11.
1299 * As per C++98, access-declarations are now deprecated by G++.
1300 Using-declarations are to be used instead. Furthermore, some
1301 efforts have been made to improve the support of class scope
1302 using-declarations. In particular, using-declarations referring to
1303 a dependent type now work as expected ([14]bug c++/14258).
1304 * The ELF symbol visibility of a template instantiation is now
1305 properly constrained by the visibility of its template arguments
1306 ([15]bug c++/35688).
1308 Runtime Library (libstdc++)
1310 * [16]Improved experimental support for the new ISO C++ standard,
1312 + using noexcept in most of the library;
1313 + implementations of pointer_traits, allocator_traits and
1314 scoped_allocator_adaptor;
1315 + uses-allocator construction for tuple;
1316 + vector meets the allocator-aware container requirements;
1317 + replacing monotonic_clock with steady_clock;
1318 + enabling the thread support library on most POSIX targets;
1319 + many small improvements to conform to the FDIS.
1320 * Added --enable-clocale=newlib configure option.
1321 * Debug Mode iterators for unordered associative containers.
1322 * Avoid polluting the global namespace and do not include <unistd.h>.
1326 * The compile flag [17]-fstack-arrays has been added, which causes
1327 all local arrays to be put on stack memory. For some programs this
1328 will improve the performance significantly. If your program uses
1329 very large local arrays, it is possible that you will have to
1330 extend your runtime limits for stack memory.
1331 * The [18]-Ofast flag now also implies [19]-fno-protect-parens and
1333 * Front-end optimizations can now be selected by the
1334 [21]-ffrontend-optimize option and deselected by the
1335 -fno-frontend-optimize option.
1336 * When front-end optimization removes a function call,
1337 [22]-Wfunction-elimination warns about that.
1338 * When performing front-end-optimization, the
1339 [23]-faggressive-function-elimination option allows the removal of
1340 duplicate function calls even for impure functions.
1341 * The flag [24]-Wreal-q-constant has been added, which warns if
1342 floating-point literals have been specified using q (such as
1343 1.0q0); the q marker is now supported as a vendor extension to
1344 denote quad precision (REAL(16) or, if not available, REAL(10)).
1345 Consider using a kind parameter (such as in 1.0_qp) instead, which
1346 can be obtained via [25]SELECTED_REAL_KIND.
1347 * The GFORTRAN_USE_STDERR environment variable has been removed. GNU
1348 Fortran now always prints error messages to standard error. If you
1349 wish to redirect standard error, please consult the manual for your
1350 OS, shell, batch environment etc. as appropriate.
1351 * The -fdump-core option and GFORTRAN_ERROR_DUMPCORE environment
1352 variable have been removed. When encountering a serious error,
1353 gfortran will now always abort the program. Whether a core dump is
1354 generated depends on the user environment settings; see the ulimit
1355 -c setting for POSIX shells, limit coredumpsize for C shells, and
1356 the [26]WER user-mode dumps settings on Windows.
1357 * The [27]-fbacktrace option is now enabled by default. When
1358 encountering a fatal error, gfortran will attempt to print a
1359 backtrace to standard error before aborting. It can be disabled
1360 with -fno-backtrace. Note: On POSIX targets with the addr2line
1361 utility from GNU binutils, GNU Fortran can print a backtrace with
1362 function name, file name, line number information in addition to
1363 the addresses; otherwise only the addresses are printed.
1365 + Generic interface names which have the same name as derived
1366 types are now supported, which allows to write constructor
1367 functions. Note that Fortran does not support static
1368 constructor functions; only default initialization or an
1369 explicit structure-constructor initialization are available.
1370 + [29]Polymorphic (class) arrays are now supported.
1372 + Support for the DO CONCURRENT construct has been added, which
1373 allows the user to specify that individual loop iterations
1374 have no interdependencies.
1375 + [31]Coarrays: Full single-image support except for polymorphic
1376 coarrays. Additionally, preliminary support for multiple
1377 images via an MPI-based [32]coarray communication library has
1378 been added. Note: The library version is not yet usable as
1379 remote coarray access is not yet possible.
1381 + New flag [34]-std=f2008ts permits programs that are expected
1382 to conform to the Fortran 2008 standard and the draft
1383 Technical Specification (TS) 29113 on Further Interoperability
1385 + The OPTIONAL attribute is now allowed for dummy arguments of
1387 + The RANK intrinsic has been added.
1388 + The implementation of the ASYNCHRONOUS attribute in GCC is
1389 compatible with the candidate draft of TS 29113 (since GCC
1394 * GCC 4.7 implements the [35]Go 1 language standard. The library
1395 support in 4.7.0 is not quite complete, due to release timing.
1396 Release 4.7.1 includes complete support for Go 1. The Go library is
1397 from the Go 1.0.1 release.
1398 * Go has been tested on GNU/Linux and Solaris platforms. It may work
1399 on other platforms as well.
1401 New Targets and Target Specific Improvements
1405 * GCC now supports the Cortex-A7 processor implementing the v7-a
1406 version of the architecture using the option -mcpu=cortex-a7.
1407 * The default vector size in auto-vectorization for NEON is now 128
1408 bits. If vectorization fails thusly, the vectorizer tries again
1409 with 64-bit vectors.
1410 * A new option -mvectorize-with-neon-double was added to allow users
1411 to change the vector size to 64 bits.
1415 * GCC now supports the XMEGA architecture. This requires GNU binutils
1417 * Support for the [36]named address spaces __flash, __flash1, ...,
1418 __flash5 and __memx has been added. These address spaces locate
1419 read-only data in flash memory and allow reading from flash memory
1420 by means of ordinary C code, i.e. without the need of (inline)
1423 const __flash int values[] = { 42, 31 };
1425 int add_values (const __flash int *p, int i)
1427 return values[i] + *p;
1430 * Support has been added for the AVR-specific configure option
1431 --with-avrlibc=yes in order to arrange for better integration of
1432 [37]AVR-Libc. This configure option is supported in avr-gcc 4.7.2
1433 and newer and will only take effect in non-RTEMS configurations. If
1434 avr-gcc is configured for RTEMS, the option will be ignored which
1435 is the same as specifying --with-avrlibc=no. See [38]PR54461 for
1436 more technical details.
1437 * Support for AVR-specific [39]built-in functions has been added.
1438 * Support has been added for the signed and unsigned 24-bit scalar
1439 integer types __int24 and __uint24.
1440 * New command-line options -maccumulate-args, -mbranch-cost=cost and
1441 -mstrict-X were added to allow better fine-tuning of code
1443 * The command option -fdata-sections now also takes affect on the
1444 section names of variables with the progmem attribute.
1445 * A new inline assembler print modifier %i to print a RAM address as
1446 I/O address has been added:
1448 #include <avr/io.h> /* Port Definitions from AVR-LibC */
1450 void set_portb (uint8_t value)
1452 asm volatile ("out %i0, %1" :: "n" (&PORTB), "r" (value) : "memory");
1455 The offset between an I/O address and the RAM address for that I/O
1456 location is device-specific. This offset is taken into account when
1457 printing a RAM address with the %i modifier so that the address is
1458 suitable to be used as operand in an I/O command. The address must
1459 be a constant integer known at compile time.
1460 * The inline assembler constraint "R" to represent integers in the
1461 range -6 ... 5 has been removed without replacement.
1462 * Many optimizations to:
1463 + 64-bit integer arithmetic
1464 + Widening multiplication
1465 + Integer division by a constant
1466 + Avoid constant reloading in multi-byte instructions.
1467 + Micro-optimizations for special instruction sequences.
1468 + Generic built-in functions like __builtin_ffs*,
1469 __builtin_clz*, etc.
1470 + If-else decision trees generated by switch instructions
1471 + Merging of data located in flash memory
1472 + New libgcc variants for devices with 8-bit wide stack pointer
1474 * Better documentation:
1475 + Handling of EIND and indirect jumps on devices with more than
1476 128 KiB of program memory.
1477 + Handling of the RAMPD, RAMPX, RAMPY and RAMPZ special function
1479 + Function attributes OS_main and OS_task.
1480 + AVR-specific built-in macros.
1484 * Support has been added for the Texas Instruments C6X family of
1489 * Support has been added for National Semiconductor's CR16
1494 * Support has been added for Adapteva's Epiphany architecture.
1498 * Support for Intel AVX2 intrinsics, built-in functions and code
1499 generation is available via -mavx2.
1500 * Support for Intel BMI2 intrinsics, built-in functions and code
1501 generation is available via -mbmi2.
1502 * Implementation and automatic generation of __builtin_clz* using the
1503 lzcnt instruction is available via -mlzcnt.
1504 * Support for Intel FMA3 intrinsics and code generation is available
1506 * A new -mfsgsbase command-line option is available that makes GCC
1507 generate new segment register read/write instructions through
1508 dedicated built-ins.
1509 * Support for the new Intel rdrnd instruction is available via
1511 * Two additional AVX vector conversion instructions are available via
1513 * Support for new Intel processor codename IvyBridge with RDRND,
1514 FSGSBASE and F16C is available through -march=core-avx-i.
1515 * Support for the new Intel processor codename Haswell with AVX2,
1516 FMA, BMI, BMI2, LZCNT is available through -march=core-avx2.
1517 * Support for new AMD family 15h processors (Piledriver core) is now
1518 available through -march=bdver2 and -mtune=bdver2 options.
1519 * Support for [40]the x32 psABI is now available through the -mx32
1521 * Windows mingw targets are using the -mms-bitfields option by
1523 * Windows x86 targets are using the __thiscall calling convention for
1524 C++ class-member functions.
1525 * Support for the configure option --with-threads=posix for Windows
1530 * GCC now supports thread-local storage (TLS) for MIPS16. This
1531 requires GNU binutils 2.22 or later.
1532 * GCC can now generate code specifically for the Cavium Octeon+ and
1533 Octeon2 processors. The associated command-line options are
1534 -march=octeon+ and -march=octeon2 respectively. Both options
1535 require GNU binutils 2.22 or later.
1536 * GCC can now work around certain 24k errata, under the control of
1537 the command-line option -mfix-24k. These workarounds require GNU
1538 binutils 2.20 or later.
1539 * 32-bit MIPS GNU/Linux targets such as mips-linux-gnu can now build
1540 n32 and n64 multilibs. The result is effectively a 64-bit GNU/Linux
1541 toolchain that generates 32-bit code by default. Use the
1542 configure-time option --enable-targets=all to select these extra
1544 * Passing -fno-delayed-branch now also stops the assembler from
1545 automatically filling delay slots.
1549 * Vectors of type vector long long or vector long are passed and
1550 returned using the same method as other vectors with the VSX
1551 instruction set. Previously GCC did not adhere to the ABI for
1552 128-bit vectors with 64-bit integer base types (PR 48857). This
1553 will also be fixed in the GCC 4.6.1 and 4.5.4 releases.
1554 * A new option -mno-pointers-to-nested-functions was added to allow
1555 AIX 32-bit/64-bit and GNU/Linux 64-bit PowerPC users to specify
1556 that the compiler should not load up the chain register (r11)
1557 before calling a function through a pointer. If you use this
1558 option, you cannot call nested functions through a pointer, or call
1559 other languages that might use the static chain.
1560 * A new option msave-toc-indirect was added to allow AIX
1561 32-bit/64-bit and GNU/Linux 64-bit PowerPC users control whether we
1562 save the TOC in the prologue for indirect calls or generate the
1563 save inline. This can speed up some programs that call through a
1564 function pointer a lot, but it can slow down other functions that
1565 only call through a function pointer in exceptional cases.
1566 * The PowerPC port will now enable machine-specific built-in
1567 functions when the user switches the target machine using the
1568 #pragma GCC target or __attribute__ ((__target__ ("target"))) code
1569 sequences. In addition, the target macros are updated. However, due
1570 to the way the -save-temps switch is implemented, you won't see the
1571 effect of these additional macros being defined in preprocessor
1576 * A new option -msoft-atomic has been added. When it is specified,
1577 GCC will generate GNU/Linux-compatible gUSA atomic sequences for
1578 the new __atomic routines.
1579 * Since it is neither supported by GAS nor officially documented,
1580 code generation for little endian SH2A has been disabled.
1581 Specifying -ml with -m2a* will now result in a compiler error.
1582 * The defunct -mbranch-cost option has been fixed.
1583 * Some improvements to the generated code of:
1584 + Utilization of the tst #imm,R0 instruction.
1585 + Dynamic shift instructions on SH2A.
1586 + Integer absolute value calculations.
1587 * The -mdiv= option for targets other than SHmedia has been fixed and
1592 * The option -mflat has been reinstated. When it is specified, the
1593 compiler will generate code for a single register window model.
1594 This is essentially a new implementation and the corresponding
1595 debugger support has been added to GDB 7.4.
1596 * Support for the options -mtune=native and -mcpu=native has been
1597 added on selected native platforms (GNU/Linux and Solaris).
1598 * Support for the SPARC T3 (Niagara 3) processor has been added.
1600 + An intrinsics header visintrin.h has been added.
1601 + Builtin intrinsics for the VIS 1.0 edge handling and pixel
1602 compare instructions have been added.
1603 + The little-endian version of alignaddr is now supported.
1604 + When possible, VIS builtins are marked const, which should
1605 increase the compiler's ability to optimize VIS operations.
1606 + The compiler now properly tracks the %gsr register and how it
1607 behaves as an input for various VIS instructions.
1608 + Akin to fzero, the compiler can now generate fone instructions
1609 in order to set all of the bits of a floating-point register
1611 + The documentation for the VIS intrinsics in the GCC manual has
1612 been brought up to date and many inaccuracies were fixed.
1613 + Intrinsics for the VIS 2.0 bmask, bshuffle, and
1614 non-condition-code setting edge instructions have been added.
1615 Their availability is controlled by the new -mvis2 and
1616 -mno-vis2 options. They are enabled by default on
1617 UltraSPARC-III and later CPUs.
1618 * Support for UltraSPARC Fused Multiply-Add floating-point extensions
1619 has been added. These instructions are enabled by default on SPARC
1620 T3 (Niagara 3) and later CPUs.
1624 * Support has been added for the Tilera TILE-Gx and TILEPro families
1627 Other significant improvements
1629 * A new option (-grecord-gcc-switches) was added that appends
1630 compiler command-line options that might affect code generation to
1631 the DW_AT_producer attribute string in the DWARF debugging
1633 * GCC now supports various new GNU extensions to the DWARF debugging
1634 information format, like [41]entry value and [42]call site
1635 information, [43]typed DWARF stack or [44]a more compact macro
1636 representation. Support for these extensions has been added to GDB
1637 7.4. They can be disabled through the -gstrict-dwarf command-line
1642 This is the [45]list of problem reports (PRs) from GCC's bug tracking
1643 system that are known to be fixed in the 4.7.1 release. This list might
1644 not be complete (that is, it is possible that some PRs that have been
1645 fixed are not listed here).
1647 The Go frontend in the 4.7.1 release fully supports the [46]Go 1
1652 This is the [47]list of problem reports (PRs) from GCC's bug tracking
1653 system that are known to be fixed in the 4.7.2 release. This list might
1654 not be complete (that is, it is possible that some PRs that have been
1655 fixed are not listed here).
1659 This is the [48]list of problem reports (PRs) from GCC's bug tracking
1660 system that are known to be fixed in the 4.7.3 release. This list might
1661 not be complete (that is, it is possible that some PRs that have been
1662 fixed are not listed here).
1665 For questions related to the use of GCC, please consult these web
1666 pages and the [49]GCC manuals. If that fails, the
1667 [50]gcc-help@gcc.gnu.org mailing list might help. Comments on these
1668 web pages and the development of GCC are welcome on our developer
1669 list at [51]gcc@gcc.gnu.org. All of [52]our lists have public
1672 Copyright (C) [53]Free Software Foundation, Inc. Verbatim copying and
1673 distribution of this entire article is permitted in any medium,
1674 provided this notice is preserved.
1676 These pages are [54]maintained by the GCC team. Last modified
1681 1. http://gcc.gnu.org/ml/gcc-patches/2011-03/msg01263.html
1682 2. http://savannah.nongnu.org/bugs/?35407
1683 3. http://gcc.gnu.org/PR18145
1684 4. http://gcc.gnu.org/gcc-4.7/porting_to.html
1685 5. http://openmp.org/wp/openmp-specifications/
1686 6. http://gcc.gnu.org/wiki/TransactionalMemory
1687 7. http://gcc.gnu.org/wiki/Atomic/GCCMM
1688 8. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
1689 9. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
1690 10. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
1691 11. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
1692 12. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
1693 13. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
1694 14. http://gcc.gnu.org/PR14258
1695 15. http://gcc.gnu.org/PR35688
1696 16. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/libstdc++/manual/manual/status.html#status.iso.2011
1697 17. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254
1698 18. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Optimize-Options.html#index-Ofast-689
1699 19. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfno-protect-parens_007d-270
1700 20. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254
1701 21. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfrontend-optimize_007d-275
1702 22. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWfunction-elimination_007d-170
1703 23. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270
1704 24. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149
1705 25. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html
1706 26. http://msdn.microsoft.com/en-us/library/bb787181%28v=vs.85%29.aspx
1707 27. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183
1708 28. http://gcc.gnu.org/wiki/Fortran2003Status
1709 29. http://gcc.gnu.org/wiki/OOP
1710 30. http://gcc.gnu.org/wiki/Fortran2008Status
1711 31. http://gcc.gnu.org/wiki/Coarray
1712 32. http://gcc.gnu.org/wiki/CoarrayLib
1713 33. http://gcc.gnu.org/wiki/TS29113Status
1714 34. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bstd_003d_007d_0040var_007bstd_007d-option-53
1715 35. http://weekly.golang.org/doc/go1.html
1716 36. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html
1717 37. http://nongnu.org/avr-libc/
1718 38. http://gcc.gnu.org/PR54461
1719 39. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built%5f002din-Functions.html
1720 40. https://sites.google.com/site/x32abi/
1721 41. http://www.dwarfstd.org/ShowIssue.php?issue=100909.1
1722 42. http://www.dwarfstd.org/ShowIssue.php?issue=100909.2
1723 43. http://www.dwarfstd.org/doc/040408.1.html
1724 44. http://www.dwarfstd.org/ShowIssue.php?issue=110722.1
1725 45. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.1
1726 46. http://weekly.golang.org/doc/go1.html
1727 47. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.2
1728 48. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.3
1729 49. http://gcc.gnu.org/onlinedocs/
1730 50. mailto:gcc-help@gcc.gnu.org
1731 51. mailto:gcc@gcc.gnu.org
1732 52. http://gcc.gnu.org/lists.html
1733 53. http://www.fsf.org/
1734 54. http://gcc.gnu.org/about.html
1735 55. http://validator.w3.org/check/referer
1736 ======================================================================
1737 http://gcc.gnu.org/gcc-4.6/index.html
1738 GCC 4.6 Release Series
1742 The [1]GNU project and the GCC developers are pleased to announce the
1743 release of GCC 4.6.4.
1745 This release is a bug-fix release, containing fixes for regressions in
1746 GCC 4.6.3 relative to previous releases of GCC.
1751 April 12, 2013 ([2]changes, [3]documentation)
1754 March 1, 2012 ([4]changes, [5]documentation)
1757 October 26, 2011 ([6]changes, [7]documentation)
1760 June 27, 2011 ([8]changes, [9]documentation)
1763 March 25, 2011 ([10]changes, [11]documentation)
1765 References and Acknowledgements
1767 GCC used to stand for the GNU C Compiler, but since the compiler
1768 supports several other languages aside from C, it now stands for the
1769 GNU Compiler Collection.
1771 A list of [12]successful builds is updated as new information becomes
1774 The GCC developers would like to thank the numerous people that have
1775 contributed new features, improvements, bug fixes, and other changes as
1776 well as test results to GCC. This [13]amazing group of volunteers is
1777 what makes GCC successful.
1779 For additional information about GCC please refer to the [14]GCC
1780 project web site or contact the [15]GCC development mailing list.
1782 To obtain GCC please use [16]our mirror sites or [17]our SVN server.
1785 For questions related to the use of GCC, please consult these web
1786 pages and the [18]GCC manuals. If that fails, the
1787 [19]gcc-help@gcc.gnu.org mailing list might help. Comments on these
1788 web pages and the development of GCC are welcome on our developer
1789 list at [20]gcc@gcc.gnu.org. All of [21]our lists have public
1792 Copyright (C) [22]Free Software Foundation, Inc. Verbatim copying and
1793 distribution of this entire article is permitted in any medium,
1794 provided this notice is preserved.
1796 These pages are [23]maintained by the GCC team. Last modified
1801 1. http://www.gnu.org/
1802 2. http://gcc.gnu.org/gcc-4.6/changes.html
1803 3. http://gcc.gnu.org/onlinedocs/4.6.4/
1804 4. http://gcc.gnu.org/gcc-4.6/changes.html
1805 5. http://gcc.gnu.org/onlinedocs/4.6.3/
1806 6. http://gcc.gnu.org/gcc-4.6/changes.html
1807 7. http://gcc.gnu.org/onlinedocs/4.6.2/
1808 8. http://gcc.gnu.org/gcc-4.6/changes.html
1809 9. http://gcc.gnu.org/onlinedocs/4.6.1/
1810 10. http://gcc.gnu.org/gcc-4.6/changes.html
1811 11. http://gcc.gnu.org/onlinedocs/4.6.0/
1812 12. http://gcc.gnu.org/gcc-4.6/buildstat.html
1813 13. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
1814 14. http://gcc.gnu.org/index.html
1815 15. mailto:gcc@gcc.gnu.org
1816 16. http://gcc.gnu.org/mirrors.html
1817 17. http://gcc.gnu.org/svn.html
1818 18. http://gcc.gnu.org/onlinedocs/
1819 19. mailto:gcc-help@gcc.gnu.org
1820 20. mailto:gcc@gcc.gnu.org
1821 21. http://gcc.gnu.org/lists.html
1822 22. http://www.fsf.org/
1823 23. http://gcc.gnu.org/about.html
1824 24. http://validator.w3.org/check/referer
1825 ======================================================================
1826 http://gcc.gnu.org/gcc-4.6/changes.html
1827 GCC 4.6 Release Series
1828 Changes, New Features, and Fixes
1832 * The options -b <machine> and -V <version> have been removed because
1833 they were unreliable. Instead, users should directly run
1834 <machine>-gcc when cross-compiling, or <machine>-gcc-<version> to
1835 run a different version of gcc.
1836 * GCC now has stricter checks for invalid command-line options. In
1837 particular, when gcc was called to link object files rather than
1838 compile source code, it would previously accept and ignore all
1839 options starting with --, including linker options such as
1840 --as-needed and --export-dynamic, although such options would
1841 result in errors if any source code was compiled. Such options, if
1842 unknown to the compiler, are now rejected in all cases; if the
1843 intent was to pass them to the linker, options such as
1844 -Wl,--as-needed should be used.
1845 * Versions of the GNU C library up to and including 2.11.1 included
1846 an [1]incorrect implementation of the cproj function. GCC optimizes
1847 its builtin cproj according to the behavior specified and allowed
1848 by the ISO C99 standard. If you want to avoid discrepancies between
1849 the C library and GCC's builtin transformations when using cproj in
1850 your code, use GLIBC 2.12 or later. If you are using an older GLIBC
1851 and actually rely on the incorrect behavior of cproj, then you can
1852 disable GCC's transformations using -fno-builtin-cproj.
1853 * The C-only intermodule optimization framework (IMA, enabled by
1854 -combine) has been removed in favor of the new generic link-time
1855 optimization framework (LTO) introduced in [2]GCC 4.5.0.
1856 * GCC now ships with the LGPL-licensed libquadmath library, which
1857 provides quad-precision mathematical functions for targets with a
1858 __float128 datatype. __float128 is available for targets on 32-bit
1859 x86, x86-64 and Itanium architectures. The libquadmath library is
1860 automatically built on such targets when building the Fortran
1862 * New -Wunused-but-set-variable and -Wunused-but-set-parameter
1863 warnings were added for C, C++, Objective-C and Objective-C++.
1864 These warnings diagnose variables respective parameters which are
1865 only set in the code and never otherwise used. Usually such
1866 variables are useless and often even the value assigned to them is
1867 computed needlessly, sometimes expensively. The
1868 -Wunused-but-set-variable warning is enabled by default by -Wall
1869 flag and -Wunused-but-set-parameter by -Wall -Wextra flags.
1870 * On ARM, a bug has been fixed in GCC's implementation of the AAPCS
1871 rules for the layout of vectors that could lead to wrong code being
1872 generated. Vectors larger than 8 bytes in size are now by default
1873 aligned to an 8-byte boundary. This is an ABI change: code that
1874 makes explicit use of vector types may be incompatible with binary
1875 objects built with older versions of GCC. Auto-vectorized code is
1876 not affected by this change. (This change affects GCC versions
1877 4.6.4 and later, with the exception of versions 4.7.0 and 4.7.1.)
1878 * On AVR, variables with the progmem attribute to locate data in
1879 flash memory must be qualified as const.
1880 * Support for a number of older systems and recently unmaintained or
1881 untested target ports of GCC has been declared obsolete in GCC 4.6.
1882 Unless there is activity to revive them, the next release of GCC
1883 will have their sources permanently removed.
1884 All GCC ports for the following processor architectures have been
1886 + Argonaut ARC (arc-*)
1887 + National Semiconductor CRX (crx-*)
1888 + Motorola 68HC11 and 68HC12 (m68hc11-*-*, m6811-*-*,
1889 m68hc12-*-*, m6812-*-*)
1890 + Sunplus S+core (score-*)
1891 The following ports for individual systems on particular
1892 architectures have been obsoleted:
1893 + Interix (i[34567]86-*-interix3*)
1894 + NetWare x86 (i[3456x]86-*-netware*)
1895 + Generic ARM PE (arm-*-pe* other than arm*-wince-pe*)
1896 + MCore PE (mcore-*-pe*)
1897 + SH SymbianOS (sh*-*-symbianelf*)
1898 + GNU Hurd on Alpha and PowerPC (alpha*-*-gnu*, powerpc*-*-gnu*)
1899 + M68K uClinux old ABI (m68k-*-uclinuxoldabi*)
1900 + a.out NetBSD (arm*-*-netbsd*, i[34567]86-*-netbsd*,
1901 vax-*-netbsd*, but not *-*-netbsdelf*)
1902 The i[34567]86-*-pe alias for Cygwin targets has also been
1903 obsoleted; users should configure for i[34567]86-*-cygwin* instead.
1904 Certain configure options to control the set of libraries built
1905 with GCC on some targets have been obsoleted. On ARM targets, the
1906 options --disable-fpu, --disable-26bit, --disable-underscore,
1907 --disable-interwork, --disable-biendian and --disable-nofmult have
1908 been obsoleted. On MIPS targets, the options
1909 --disable-single-float, --disable-biendian and --disable-softfloat
1910 have been obsoleted.
1911 * Support has been removed for all the [3]configurations obsoleted in
1913 * More information on porting to GCC 4.6 from previous versions of
1914 GCC can be found in the [4]porting guide for this release.
1916 General Optimizer Improvements
1918 * A new general optimization level, -Ofast, has been introduced. It
1919 combines the existing optimization level -O3 with options that can
1920 affect standards compliance but result in better optimized code.
1921 For example, -Ofast enables -ffast-math.
1922 * Link-time optimization improvements:
1923 + The [5]Scalable Whole Program Optimizer (WHOPR) project has
1924 stabilized to the point of being usable. It has become the
1925 default mode when using the LTO optimization model. Link time
1926 optimization can now split itself into multiple parallel
1927 compilations. Parallelism is controlled with -flto=n (where n
1928 specifies the number of compilations to execute in parallel).
1929 GCC can also cooperate with a GNU make job server by
1930 specifying the -flto=jobserver option and adding + to the
1931 beginning of the Makefile rule executing the linker.
1932 Classical LTO mode can be enforced by -flto-partition=none.
1933 This may result in small code quality improvements.
1934 + A large number of bugs were fixed. GCC itself, Mozilla Firefox
1935 and other large applications can be built with LTO enabled.
1936 + The linker plugin support improvements
1937 o Linker plugin is now enabled by default when the linker
1938 is detected to have plugin support. This is the case for
1939 GNU ld 2.21.51 or newer (on ELF and Cygwin targets) and
1940 the Gold linker on ELF targets. Plugin support of the
1941 Apple linker on Darwin is not compatible with GCC. The
1942 linker plugin can also be controlled by the
1943 -fuse-linker-plugin command line option.
1944 o Resolution information from the linker plugin is used to
1945 drive whole program assumptions. Use of the linker plugin
1946 results in more aggressive optimization on binaries and
1947 on shared libraries that use the hidden visibility
1948 attribute. Consequently the use of -fwhole-program is not
1949 necessary in addition to LTO.
1950 + Hidden symbols used from non-LTO objects now have to be
1951 explicitly annotated with externally_visible when the linker
1953 + C++ inline functions and virtual tables are now privatized
1954 more aggressively, leading to better inter-procedural
1955 optimization and faster dynamic linking.
1956 + Memory usage and intermediate language streaming performance
1958 + Static constructors and destructors from individual units are
1959 inlined into a single function. This can significantly improve
1960 startup times of large C++ applications where static
1961 constructors are very common. For example, static constructors
1962 are used when including the iostream header.
1963 + Support for the Ada language has been added.
1964 * Interprocedural optimization improvements
1965 + The interprocedural framework was re-tuned for link time
1966 optimization. Several scalability issues were resolved.
1967 + Improved auto-detection of const and pure functions. Newly,
1968 noreturn functions are auto-detected.
1969 The [6]-Wsuggest-attribute=[const|pure|noreturn] flag is
1970 available that informs users when adding attributes to headers
1971 might improve code generation.
1972 + A number of inlining heuristic improvements. In particular:
1973 o Partial inlining is now supported and enabled by default
1974 at -O2 and greater. The feature can be controlled via
1976 Partial inlining splits functions with short hot path to
1977 return. This allows more aggressive inlining of the hot
1978 path leading to better performance and often to code size
1979 reductions (because cold parts of functions are not
1981 o Scalability for large compilation units was improved
1983 o Inlining of callbacks is now more aggressive.
1984 o Virtual methods are considered for inlining when the
1985 caller is inlined and devirtualization is then possible.
1986 o Inlining when optimizing for size (either in cold regions
1987 of a program or when compiling with -Os) was improved to
1988 better handle C++ programs with larger abstraction
1989 penalty, leading to smaller and faster code.
1990 + The IPA reference optimization pass detecting global variables
1991 used or modified by functions was strengthened and sped up.
1992 + Functions whose address was taken are now optimized out when
1993 all references to them are dead.
1994 + A new inter-procedural static profile estimation pass detects
1995 functions that are executed once or unlikely to be executed.
1996 Unlikely executed functions are optimized for size. Functions
1997 executed once are optimized for size except for the inner
1999 + On most targets with named section support, functions used
2000 only at startup (static constructors and main), functions used
2001 only at exit and functions detected to be cold are placed into
2002 separate text segment subsections. This extends the
2003 -freorder-functions feature and is controlled by the same
2004 switch. The goal is to improve the startup time of large C++
2006 Proper function placement requires linker support. GNU ld
2007 2.21.51 on ELF targets was updated to place those functions
2008 together within the text section leading to better code
2009 locality and faster startup times of large C++ programs. The
2010 feature is also supported in the Apple linker. Support in the
2011 gold linker is planned.
2012 * A new switch -fstack-usage has been added. It makes the compiler
2013 output stack usage information for the program, on a per-function
2014 basis, in an auxiliary file.
2015 * A new switch -fcombine-stack-adjustments has been added. It can be
2016 used to enable or disable the compiler's stack-slot combining pass
2017 which before was enabled automatically at -O1 and above, but could
2018 not be controlled on its own.
2019 * A new switch -fstrict-volatile-bitfields has been added. Using it
2020 indicates that accesses to volatile bitfields should use a single
2021 access of the width of the field's type. This option can be useful
2022 for precisely defining and accessing memory-mapped peripheral
2023 registers from C or C++.
2025 Compile time and memory usage improvements
2027 * Datastructures used by the dataflow framework in GCC were
2028 reorganized for better memory usage and more cache locality.
2029 Compile time is improved especially on units with large functions
2030 (possibly resulting from a lot of inlining) not fitting into the
2031 processor cache. The compile time of the GCC C compiler binary with
2032 link-time optimization went down by over 10% (benchmarked on x86-64
2035 New Languages and Language specific improvements
2039 * Stack checking has been improved on selected architectures (Alpha,
2040 IA-32/x86-64, RS/6000 and SPARC): it now will detect stack
2041 overflows in all cases on these architectures.
2042 * Initial support for Ada 2012 has been added.
2046 * A new warning, enabled by -Wdouble-promotion, has been added that
2047 warns about cases where a value of type float is implicitly
2048 promoted to double. This is especially helpful for CPUs that handle
2049 the former in hardware, but emulate the latter in software.
2050 * A new function attribute leaf was introduced. This attribute allows
2051 better inter-procedural optimization across calls to functions that
2052 return to the current unit only via returning or exception
2053 handling. This is the case for most library functions that have no
2055 * Support for a new data type __int128 for targets having wide enough
2056 machine-mode support.
2057 * The new function attribute callee_pop_aggregate allows to specify
2058 if the caller or callee is responsible for popping the aggregate
2059 return pointer value from the stack.
2060 * Support for selectively enabling and disabling warnings via #pragma
2061 GCC diagnostic has been added. For instance:
2062 #pragma GCC diagnostic error "-Wuninitialized"
2063 foo(a); /* error is given for this one */
2064 #pragma GCC diagnostic push
2065 #pragma GCC diagnostic ignored "-Wuninitialized"
2066 foo(b); /* no diagnostic for this one */
2067 #pragma GCC diagnostic pop
2068 foo(c); /* error is given for this one */
2069 #pragma GCC diagnostic pop
2070 foo(d); /* depends on command line options */
2072 * The -fmax-errors=N option is now supported. Using this option
2073 causes the compiler to exit after N errors have been issued.
2077 * There is now experimental support for some features from the
2078 upcoming C1X revision of the ISO C standard. This support may be
2079 selected with -std=c1x, or -std=gnu1x for C1X with GNU extensions.
2080 Note that this support is experimental and may change incompatibly
2081 in future releases for consistency with changes to the C1X standard
2082 draft. The following features are newly supported as described in
2083 the N1539 draft of C1X (with changes agreed at the March 2011 WG14
2084 meeting); some other features were already supported with no
2085 compiler changes being needed, or have some support but not in full
2086 accord with N1539 (as amended).
2087 + Static assertions (_Static_assert keyword)
2088 + Typedef redefinition
2089 + New macros in <float.h>
2090 + Anonymous structures and unions
2091 * The new -fplan9-extensions option directs the compiler to support
2092 some extensions for anonymous struct fields which are implemented
2093 by the Plan 9 compiler. A pointer to a struct may be automatically
2094 converted to a pointer to an anonymous field when calling a
2095 function, in order to make the types match. An anonymous struct
2096 field whose type is a typedef name may be referred to using the
2101 * Improved [7]experimental support for the upcoming C++0x ISO C++
2102 standard, including support for constexpr (thanks to Gabriel Dos
2103 Reis and Jason Merrill), nullptr (thanks to Magnus Fromreide),
2104 noexcept, unrestricted unions, range-based for loops (thanks to
2105 Rodrigo Rivas Costa), opaque enum declarations (thanks also to
2106 Rodrigo), implicitly deleted functions and implicit move
2108 * When an extern declaration within a function does not match a
2109 declaration in the enclosing context, G++ now properly declares the
2110 name within the namespace of the function rather than the namespace
2111 which was open just before the function definition ([8]c++/43145).
2112 * GCC now warns by default when casting integers to larger pointer
2113 types. These warnings can be disabled with the option
2114 -Wno-int-to-pointer-cast, which is now also available in C++.
2115 * G++ no longer optimizes using the assumption that a value of
2116 enumeration type will fall within the range specified by the
2117 standard, since that assumption is easily violated with a
2118 conversion from integer type ([9]c++/43680). The old behavior can
2119 be restored with -fstrict-enums.
2120 * The new -fnothrow-opt flag changes the semantics of a throw()
2121 exception specification to match the proposed semantics of the
2122 noexcept specification: just call terminate if an exception tries
2123 to propagate out of a function with such an exception
2124 specification. This dramatically reduces or eliminates the code
2125 size overhead from adding the exception specification.
2126 * The new -Wnoexcept flag will suggest adding a noexcept qualifier to
2127 a function that the compiler can tell doesn't throw if it would
2128 change the value of a noexcept expression.
2129 * The -Wshadow option now warns if a local variable or type
2130 declaration shadows another type in C++. Note that the compiler
2131 will not warn if a local variable shadows a struct/class/enum, but
2132 will warn if it shadows an explicit typedef.
2133 * When an identifier is not found in the current scope, G++ now
2134 offers suggestions about which identifier might have been intended.
2135 * G++ now issues clearer diagnostics for missing semicolons after
2136 class, struct, and union definitions.
2137 * G++ now issues clearer diagnostics for missing semicolons after
2138 class member declarations.
2139 * G++ now issues clearer diagnostics when a colon is used in a place
2140 where a double-colon was intended.
2141 * G++ no longer accepts mutable on reference members ([10]c++/33558).
2142 Use -fpermissive to allow the old, non-conforming behaviour.
2143 * A few mangling fixes have been made, to attribute const/volatile on
2144 function pointer types, decltype of a plain decl, and use of a
2145 function parameter in the declaration of another parameter. By
2146 default the compiler still uses the old mangling, but emits aliases
2147 with the new mangling on targets that support strong aliases. Users
2148 can switch over entirely to the new mangling with -fabi-version=5
2149 or -fabi-version=0. -Wabi will now warn about code that uses the
2151 * In 4.6.0 and 4.6.1 G++ no longer allows objects of const-qualified
2152 type to be default initialized unless the type has a user-declared
2153 default constructor. In 4.6.2 G++ implements the proposed
2154 resolution of [11]DR 253, so default initialization is allowed if
2155 it initializes all subobjects. Code that fails to compile can be
2156 fixed by providing an initializer e.g.
2158 struct B : A { int i; };
2160 Use -fpermissive to allow the old, non-conforming behaviour.
2162 Runtime Library (libstdc++)
2164 * [12]Improved experimental support for the upcoming ISO C++
2165 standard, C++0x, including using constexpr and nullptr.
2166 * Performance improvements to the [13]Debug Mode, thanks to Franc,ois
2168 * Atomic operations used for reference-counting are annotated so that
2169 they can be understood by race detectors such as Helgrind, see
2170 [14]Data Race Hunting.
2171 * Most libstdc++ standard headers have been changed to no longer
2172 include the cstddef header as an implementation detail. Code that
2173 relied on that header being included as side-effect of including
2174 other standard headers will need to include cstddef explicitly.
2178 * On systems supporting the libquadmath library, GNU Fortran now also
2179 supports a quad-precision, kind=16 floating-point data type
2180 (REAL(16), COMPLEX(16)). As the data type is not fully supported in
2181 hardware, calculations might be one to two orders of magnitude
2182 slower than with the 4, 8 or 10 bytes floating-point data types.
2183 This change does not affect systems which support REAL(16) in
2184 hardware nor those which do not support libquadmath.
2185 * Much improved compile time for large array constructors.
2186 * In order to reduce execution time and memory consumption, use of
2187 temporary arrays in assignment expressions is avoided for many
2188 cases. The compiler now reverses loops in order to avoid generating
2189 a temporary array where possible.
2190 * Improved diagnostics, especially with -fwhole-file.
2191 * The -fwhole-file flag is now enabled by default. This improves code
2192 generation and diagnostics. It can be disabled using the deprecated
2193 -fno-whole-file flag.
2194 * Support the generation of Makefile dependencies via the [15]-M...
2195 flags of GCC; you may need to specify the -cpp option in addition.
2196 The dependencies take modules, Fortran's include, and CPP's
2197 #include into account. Note: Using -M for the module path is no
2198 longer supported, use -J instead.
2199 * The flag -Wconversion has been modified to only issue warnings
2200 where a conversion leads to information loss. This drastically
2201 reduces the number of warnings; -Wconversion is thus now enabled
2202 with -Wall. The flag -Wconversion-extra has been added and also
2203 warns about other conversions; -Wconversion-extra typically issues
2204 a huge number of warnings, most of which can be ignored.
2205 * A new command-line option -Wunused-dummy-argument warns about
2206 unused dummy arguments and is included in -Wall. Before,
2207 -Wunused-variable also warned about unused dummy arguments.
2208 * Fortran 2003 support has been extended:
2209 + Improved support for polymorphism between libraries and
2210 programs and for complicated inheritance patterns (cf.
2211 [16]object-oriented programming).
2212 + Experimental support of the ASSOCIATE construct.
2213 + In pointer assignments it is now possible to specify the lower
2214 bounds of the pointer and, for a rank-1 or a simply contiguous
2215 data-target, to remap the bounds.
2216 + Automatic (re)allocation: In intrinsic assignments to
2217 allocatable variables the left-hand side will be automatically
2218 allocated (if unallocated) or reallocated (if the shape or
2219 type parameter is different). To avoid the small performance
2220 penalty, you can use a(:) = ... instead of a = ... for arrays
2221 and character strings - or disable the feature using -std=f95
2222 or -fno-realloc-lhs.
2223 + Deferred type parameter: For scalar allocatable and pointer
2224 variables the character length can be deferred.
2225 + Namelist variables with allocatable and pointer attribute and
2226 nonconstant length type parameter are supported.
2227 * Fortran 2008 support has been extended:
2228 + Experimental [17]coarray support (for one image only, i.e.
2229 num_images() == 1); use the [18]-fcoarray=single flag to
2231 + The STOP and the new ERROR STOP statements now support all
2232 constant expressions.
2233 + Support for the CONTIGUOUS attribute.
2234 + Support for ALLOCATE with MOLD.
2235 + Support for the STORAGE_SIZE intrinsic inquiry function.
2236 + Support of the NORM2 and PARITY intrinsic functions.
2237 + The following bit intrinsics were added: POPCNT and POPPAR for
2238 counting the number of 1 bits and returning the parity; BGE,
2239 BGT, BLE, and BLT for bitwise comparisons; DSHIFTL and DSHIFTR
2240 for combined left and right shifts, MASKL and MASKR for simple
2241 left and right justified masks, MERGE_BITS for a bitwise merge
2242 using a mask, SHIFTA, SHIFTL and SHIFTR for shift operations,
2243 and the transformational bit intrinsics IALL, IANY and
2245 + Support of the EXECUTE_COMMAND_LINE intrinsic subroutine.
2246 + Support for the IMPURE attribute for procedures, which allows
2247 for ELEMENTAL procedures without the restrictions of PURE.
2248 + Null pointers (including NULL()) and not allocated variables
2249 can be used as actual argument to optional non-pointer,
2250 non-allocatable dummy arguments, denoting an absent argument.
2251 + Non-pointer variables with TARGET attribute can be used as
2252 actual argument to POINTER dummies with INTENT(IN)
2253 + Pointers including procedure pointers and those in a derived
2254 type (pointer components) can now be initialized by a target
2255 instead of only by NULL.
2256 + The EXIT statement (with construct-name) can now be used to
2257 leave not only the DO but also the ASSOCIATE, BLOCK, IF,
2258 SELECT CASE and SELECT TYPE constructs.
2259 + Internal procedures can now be used as actual argument.
2260 + The named constants INTEGER_KINDS, LOGICAL_KINDS, REAL_KINDS
2261 and CHARACTER_KINDS of the intrinsic module ISO_FORTRAN_ENV
2262 have been added; these arrays contain the supported kind
2263 values for the respective types.
2264 + The module procedures C_SIZEOF of the intrinsic module
2265 ISO_C_BINDINGS and COMPILER_VERSION and COMPILER_OPTIONS of
2266 ISO_FORTRAN_ENV have been implemented.
2267 + Minor changes: obsolescence diagnostics for ENTRY was added
2268 for -std=f2008; a line may start with a semicolon; for
2269 internal and module procedures END can be used instead of END
2270 SUBROUTINE and END FUNCTION; SELECTED_REAL_KIND now also takes
2271 a RADIX argument; intrinsic types are supported for
2272 TYPE(intrinsic-type-spec); multiple type-bound procedures can
2273 be declared in a single PROCEDURE statement; implied-shape
2274 arrays are supported for named constants (PARAMETER). The
2275 transformational, three argument versions of BESSEL_JN and
2276 BESSEL_YN were added - the elemental, two-argument version had
2277 been added in GCC 4.4; note that the transformational
2278 functions use a recurrence algorithm.
2282 Support for the [19]Go programming language has been added to GCC. It
2283 is not enabled by default when you build GCC; use the
2284 --enable-languages configure option to build it. The driver program for
2285 compiling Go code is gccgo.
2287 Go is currently known to work on GNU/Linux and RTEMS. Solaris support
2288 is in progress. It may or may not work on other platforms.
2290 Objective-C and Objective-C++
2292 * The -fobjc-exceptions flag is now required to enable Objective-C
2293 exception and synchronization syntax (introduced by the keywords
2294 @try, @catch, @finally and @synchronized).
2295 * A number of Objective-C 2.0 features and extensions are now
2296 supported by GCC. These features are enabled by default; you can
2297 disable them by using the new -fobjc-std=objc1 command-line option.
2298 * The Objective-C 2.0 dot-syntax is now supported. It is an
2299 alternative syntax for using getters and setters; object.count is
2300 automatically converted into [object count] or [object setCount:
2301 ...] depending on context; for example if (object.count > 0) is
2302 automatically compiled into the equivalent of if ([object count] >
2303 0) while object.count = 0; is automatically compiled into the
2304 equivalent ot [object setCount: 0];. The dot-syntax can be used
2305 with instance and class objects and with any setters or getters, no
2306 matter if they are part of a declared property or not.
2307 * Objective-C 2.0 declared properties are now supported. They are
2308 declared using the new @property keyword, and are most commonly
2309 used in conjunction with the new Objective-C 2.0 dot-syntax. The
2310 nonatomic, readonly, readwrite, assign, retain, copy, setter and
2311 getter attributes are all supported. Marking declared properties
2312 with __attribute__ ((deprecated)) is supported too.
2313 * The Objective-C 2.0 @synthesize and @dynamic keywords are
2314 supported. @synthesize causes the compiler to automatically
2315 synthesize a declared property, while @dynamic is used to disable
2316 all warnings for a declared property for which no implementation is
2317 provided at compile time. Synthesizing declared properties requires
2318 runtime support in most useful cases; to be able to use it with the
2319 GNU runtime, appropriate helper functions have been added to the
2320 GNU Objective-C runtime ABI, and are implemented by the GNU
2321 Objective-C runtime library shipped with GCC.
2322 * The Objective-C 2.0 fast enumeration syntax is supported in
2323 Objective-C. This is currently not yet available in Objective-C++.
2324 Fast enumeration requires support in the runtime, and such support
2325 has been added to the GNU Objective-C runtime library (shipped with
2327 * The Objective-C 2.0 @optional keyword is supported. It allows you
2328 to mark methods or properties in a protocol as optional as opposed
2330 * The Objective-C 2.0 @package keyword is supported. It has currently
2331 the same effect as the @public keyword.
2332 * Objective-C 2.0 method attributes are supported. Currently the
2333 supported attributes are deprecated, sentinel, noreturn and format.
2334 * Objective-C 2.0 method argument attributes are supported. The most
2335 widely used attribute is unused, to mark an argument as unused in
2337 * Objective-C 2.0 class and protocol attributes are supported.
2338 Currently the only supported attribute is deprecated.
2339 * Objective-C 2.0 class extensions are supported. A class extension
2340 has the same syntax as a category declaration with no category
2341 name, and the methods and properties declared in it are added
2342 directly to the main class. It is mostly used as an alternative to
2343 a category to add methods to a class without advertising them in
2344 the public headers, with the advantage that for class extensions
2345 the compiler checks that all the privately declared methods are
2346 actually implemented.
2347 * As a result of these enhancements, GCC can now be used to build
2348 Objective-C and Objective-C++ software that uses Foundation and
2349 other important system frameworks with the NeXT runtime on Darwin 9
2350 and Darwin 10 (OSX 10.5 and 10.6).
2351 * Many bugs in the compiler have been fixed in this release; in
2352 particular, LTO can now be used when compiling Objective-C and
2353 Objective-C++ and the parser is much more robust in dealing with
2356 Runtime Library (libobjc)
2358 * The GNU Objective-C runtime library now defines the macro
2359 __GNU_LIBOBJC__ (with a value that is increased at every release
2360 where there is any change to the API) in objc/objc.h, making it
2361 easy to determine if the GNU Objective-C runtime library is being
2362 used, and if so, which version. Previous versions of the GNU
2363 Objective-C runtime library (and other Objective-C runtime
2364 libraries such as the Apple one) do not define this macro.
2365 * A new Objective-C 2.0 API, almost identical to the one implemented
2366 by the Apple Objective-C runtime, has been implemented in the GNU
2367 Objective-C runtime library. The new API hides the internals of
2368 most runtime structures but provides a more extensive set of
2369 functions to operate on them. It is much easier, for example, to
2370 create or modify classes at runtime. The new API also makes it
2371 easier to port software from Apple to GNU as almost no changes
2372 should be required. The old API is still supported for backwards
2373 compatibility; including the old objc/objc-api.h header file
2374 automatically selects the old API, while including the new
2375 objc/runtime.h header file automatically selects the new API.
2376 Support for the old API is being phased out and upgrading the
2377 software to use the new API is strongly recommended. To check for
2378 the availability of the new API, the __GNU_LIBOBJC__ macro can be
2379 used as older versions of the GNU Objective-C runtime library,
2380 which do not support the new API, do not define such a macro.
2381 * Runtime support for @synchronized has been added.
2382 * Runtime support for Objective-C 2.0 synthesized property accessors
2384 * Runtime support for Objective-C 2.0 fast enumeration has been
2387 New Targets and Target Specific Improvements
2391 * GCC now supports the Cortex-M4 processor implementing the v7-em
2392 version of the architecture using the option -mcpu=cortex-m4.
2393 * Scheduling descriptions for the Cortex-M4, the Neon and the
2394 floating point units of the Cortex-A9 and a pipeline description
2395 for the Cortex-A5 have been added.
2396 * Synchronization primitives such as __sync_fetch_and_add and friends
2397 are now inlined for supported architectures rather than calling
2398 into a kernel helper function.
2399 * SSA loop prefetching is enabled by default for the Cortex-A9 at
2401 * Several improvements were committed to improve code generation for
2402 the ARM architecture including a rewritten implementation for load
2403 and store multiples.
2404 * Several enhancements were committed to improve SIMD code generation
2405 for NEON by adding support for widening instructions, misaligned
2406 loads and stores, vector conditionals and support for 64 bit
2408 * Support was added for the Faraday cores fa526, fa606te, fa626te,
2409 fmp626te, fmp626 and fa726te and can be used with the respective
2410 names as parameters to the -mcpu= option.
2411 * Basic support was added for Cortex-A15 and is available through
2413 * GCC for AAPCS configurations now more closely adheres to the AAPCS
2414 specification by enabling -fstrict-volatile-bitfields by default.
2418 * The new -fsplit-stack option permits programs to use a
2419 discontiguous stack. This is useful for threaded programs, in that
2420 it is no longer necessary to specify the maximum stack size when
2421 creating a thread. This feature is currently only implemented for
2422 32-bit and 64-bit x86 GNU/Linux targets.
2423 * Support for emitting profiler counter calls before function
2424 prologues. This is enabled via a new command-line option -mfentry.
2425 * Optimization for the Intel Core 2 processors is now available
2426 through the -march=core2 and -mtune=core2 options.
2427 * Support for Intel Core i3/i5/i7 processors is now available through
2428 the -march=corei7 and -mtune=corei7 options.
2429 * Support for Intel Core i3/i5/i7 processors with AVX is now
2430 available through the -march=corei7-avx and -mtune=corei7-avx
2432 * Support for AMD Bobcat (family 14) processors is now available
2433 through the -march=btver1 and -mtune=btver1 options.
2434 * Support for AMD Bulldozer (family 15) processors is now available
2435 through the -march=bdver1 and -mtune=bdver1 options.
2436 * The default setting (when not optimizing for size) for 32-bit
2437 GNU/Linux and Darwin x86 targets has been changed to
2438 -fomit-frame-pointer. The default can be reverted to
2439 -fno-omit-frame-pointer by configuring GCC with the
2440 --enable-frame-pointer configure option.
2441 * Darwin, FreeBSD, Solaris 2, MinGW and Cygwin now all support
2442 __float128 on 32-bit and 64-bit x86 targets.
2443 * AVX floating-point arithmetic can now be enabled by default at
2444 configure time with the new --with-fpmath=avx option.
2445 * The SSA loop prefetching pass is enabled when using -O3 when
2446 optimizing for CPUs where prefetching is beneficial (AMD CPUs newer
2448 * Support for TBM (Trailing Bit Manipulation) built-in functions and
2449 code generation is available via -mtbm.
2450 * Support for AMD's BMI (Bit Manipulation) built-in functions and
2451 code generation is available via -mbmi.
2455 * Support has been added for the Xilinx MicroBlaze softcore processor
2456 (microblaze-elf) embedded target. This configurable processor is
2457 supported on several Xilinx Spartan and Virtex FPGAs.
2461 * GCC now supports the Loongson 3A processor. Its canonical -march=
2462 and -mtune= name is loongson3a.
2466 * The inline assembly register constraint "A" has been renamed "c".
2467 This constraint is used to select a floating-point register that
2468 can be used as the destination of a multiply-accumulate
2470 * New inline assembly register constraints "A" and "D" have been
2471 added. These constraint letters resolve to all general registers
2472 when compiling for AM33, and resolve to address registers only or
2473 data registers only when compiling for MN10300.
2474 * The MDR register is represented in the compiler. One can access the
2475 register via the "z" constraint in inline assembly. It can be
2476 marked as clobbered or used as a local register variable via the
2477 "mdr" name. The compiler uses the RETF instruction if the function
2478 does not modify the MDR register, so it is important that inline
2479 assembly properly annotate any usage of the register.
2483 * GCC now supports the Applied Micro Titan processor with
2485 * The -mrecip option has been added, which indicates whether the
2486 reciprocal and reciprocal square root instructions should be used.
2487 * The -mveclibabi=mass option can be used to enable the compiler to
2488 autovectorize mathematical functions using the Mathematical
2489 Acceleration Subsystem library.
2490 * The -msingle-pic-base option has been added, which instructs the
2491 compiler to avoid loading the PIC base register in function
2492 prologues. The PIC base register must be initialized by the runtime
2494 * The -mblock-move-inline-limit option has been added, which enables
2495 the user to control the maximum size of inlined memcpy calls and
2497 * PowerPC64 GNU/Linux support for applications requiring a large TOC
2498 section has been improved. A new command-line option,
2499 -mcmodel=MODEL, controls this feature; valid values for MODEL are
2500 small, medium, or large.
2501 * The Altivec builtin functions vec_ld and vec_st have been modified
2502 to generate the Altivec memory instructions LVX and STVX, even if
2503 the -mvsx option is used. In the initial GCC 4.5 release, these
2504 builtin functions were changed to generate VSX memory reference
2505 instructions instead of Altivec memory instructions, but there are
2506 differences between the two instructions. If the VSX instruction
2507 set is available, you can now use the new builtin functions
2508 vec_vsx_ld and vec_vsx_st which always generates the VSX memory
2510 * The GCC compiler on AIX now defaults to a process layout with a
2511 larger data space allowing larger programs to be compiled.
2512 * The GCC long double type on AIX 6.1 and above has reverted to 64
2513 bit double precision, matching the AIX XL compiler default, because
2514 of missing C99 symbols required by the GCC runtime.
2515 * The default processor scheduling model and tuning for PowerPC64
2516 GNU/Linux and for AIX 6.1 and above now is POWER7.
2517 * Starting with GCC 4.6.1, vectors of type vector long long or vector
2518 long are passed and returned in the same method as other vectors
2519 with the VSX instruction set. Previously the GCC compiler did not
2520 adhere to the ABI for 128-bit vectors with 64-bit integer base
2521 types (PR 48857). This is also fixed in the GCC 4.5.4 release.
2523 S/390, zSeries and System z9/z10, IBM zEnterprise z196
2525 * Support for the zEnterprise z196 processor has been added. When
2526 using the -march=z196 option, the compiler will generate code
2527 making use of the following instruction facilities:
2528 + Conditional load/store
2530 + Floating-point-extension
2531 + Interlocked-access
2533 The -mtune=z196 option avoids the compare and branch instructions
2534 as well as the load address instruction with an index register as
2535 much as possible and performs instruction scheduling appropriate
2536 for the new out-of-order pipeline architecture.
2537 * When using the -m31 -mzarch options the generated code still
2538 conforms to the 32-bit ABI but uses the general purpose registers
2539 as 64-bit registers internally. This requires a Linux kernel saving
2540 the whole 64-bit registers when doing a context switch. Kernels
2541 providing that feature indicate that by the 'highgprs' string in
2543 * The SSA loop prefetching pass is enabled when using -O3.
2547 * GCC now supports the LEON series of SPARC V8 processors. The code
2548 generated by the compiler can either be tuned to it by means of the
2549 --with-tune=leon configure option and -mtune=leon compilation
2550 option, or the compiler can be built for the sparc-leon-{elf,linux}
2551 and sparc-leon3-{elf,linux} targets directly.
2552 * GCC has stopped sign/zero-extending parameter registers in the
2553 callee for functions taking parameters with sub-word size in 32-bit
2554 mode, since this is redundant with the specification of the ABI.
2555 GCC has never done so in 64-bit mode since this is also redundant.
2556 * The command line option -mfix-at697f has been added to enable the
2557 documented workaround for the single erratum of the Atmel AT697F
2564 * GCC now supports the Bionic C library and provides a convenient way
2565 of building native libraries and applications for the Android
2566 platform. Refer to the documentation of the -mandroid and -mbionic
2567 options for details on building native code. At the moment, Android
2568 support is enabled only for ARM.
2573 + Initial support for CFString types has been added.
2574 This allows GCC to build projects including the system Core
2575 Foundation frameworks. The GCC Objective-C family supports
2576 CFString "toll-free bridged" as per the Mac OS X system tools.
2577 CFString is also recognized in the context of format
2578 attributes and arguments (see the documentation for format
2579 attributes for limitations). At present, 8-bit character types
2581 + Object file size reduction.
2582 The Darwin zeroed memory allocators have been re-written to
2583 make more use of .zerofill sections. For non-debug code, this
2584 can reduce object file size significantly.
2585 + Objective-C family 64-bit support (NeXT ABI 2).
2586 Initial support has been added to support 64-bit Objective-C
2587 code using the Darwin/OS X native (NeXT) runtime. ABI version
2588 2 will be selected automatically when 64-bit code is built.
2589 + Objective-C family 32-bit ABI 1.
2590 For 32-bit code ABI 1 is also now also allowed. At present it
2591 must be selected manually using -fobjc-abi-version=1 where
2592 applicable - i.e. on Darwin 9/10 (OS X 10.5/10.6).
2594 + The -mdynamic-no-pic option has been enabled.
2595 Code supporting -mdynamic-no-pic optimization has been added
2596 and is applicable to -m32 builds. The compiler bootstrap uses
2597 the option where appropriate.
2598 + The default value for -mtune= has been changed.
2599 Since Darwin systems are primarily Xeon, Core-2 or similar the
2600 default tuning has been changed to -mtune=core2.
2601 + Enable 128-bit long double (__float128) support on Darwin.
2604 Several significant bugs have been fixed, such that GCC now
2605 produces code compatible with the Darwin64 PowerPC ABI.
2606 + libffi and boehm-gc.
2607 The Darwin ports of the libffi and boehm-gc libraries have
2608 been upgraded to include a Darwin64 implementation. This means
2609 that powerpc*-*-darwin9 platforms may now, for example, build
2610 Java applications with -m64 enabled.
2611 + Plug-in support has been enabled.
2612 + The -fsection-anchors option is now available although,
2613 presently, not heavily tested.
2619 * Support symbol versioning with the Sun linker.
2620 * Allow libstdc++ to leverage full ISO C99 support on Solaris 10+.
2621 * Support thread-local storage (TLS) with the Sun assembler on
2623 * Support TLS on Solaris 8/9 if prerequisites are met.
2624 * Support COMDAT group with the GNU assembler and recent Sun linker.
2625 * Support the Sun assembler visibility syntax.
2626 * Default Solaris 2/x86 to -march=pentium4 (Solaris 10+) resp.
2627 -march=pentiumpro (Solaris 8/9).
2628 * Don't use SSE on Solaris 8/9 x86 by default.
2629 * Enable 128-bit long double (__float128) support on Solaris 2/x86.
2633 * Change the ABI for returning 8-byte vectors like __m64 in MMX
2634 registers on Solaris 10+/x86 to match the Sun Studio 12.1+
2635 compilers. This is an incompatible change. If you use such types,
2636 you must either recompile all your code with the new compiler or
2637 use the new -mvect8-ret-in-mem option to remain compatible with
2638 previous versions of GCC and Sun Studio.
2642 * Initial support for decimal floating point.
2643 * Support for the __thiscall calling-convention.
2644 * Support for hot-patchable function prologues via the
2645 ms_hook_prologue attribute for x86_64 in addition to 32-bit x86.
2646 * Improvements of stack-probing and stack-allocation mechanisms.
2647 * Support of push/pop-macro pragma as preprocessor command.
2648 With #pragma push_macro("macro-name") the current definition of
2649 macro-name is saved and can be restored with #pragma
2650 pop_macro("macro-name") to its saved definition.
2651 * Enable 128-bit long double (__float128) support on MinGW and
2654 Other significant improvements
2656 Installation changes
2658 * An install-strip make target is provided that installs stripped
2659 executables, and may install libraries with unneeded or debugging
2661 * On Power7 systems, there is a potential problem if you build the
2662 GCC compiler with a host compiler using options that enable the VSX
2663 instruction set generation. If the host compiler has been patched
2664 so that the vec_ld and vec_st builtin functions generate Altivec
2665 memory instructions instead of VSX memory instructions, then you
2666 should be able to build the compiler with VSX instruction
2669 Changes for GCC Developers
2671 Note: these changes concern developers that develop GCC itself or
2672 software that integrates with GCC, such as plugins, and not the general
2674 * The gengtype utility, which previously was internal to the GCC
2675 build process, has been enchanced to provide GC root information
2676 for plugins as necessary.
2677 * The old GC allocation interface of ggc_alloc and friends was
2678 replaced with a type-safe alternative.
2682 This is the [20]list of problem reports (PRs) from GCC's bug tracking
2683 system that are known to be fixed in the 4.6.1 release. This list might
2684 not be complete (that is, it is possible that some PRs that have been
2685 fixed are not listed here).
2689 This is the [21]list of problem reports (PRs) from GCC's bug tracking
2690 system that are known to be fixed in the 4.6.2 release. This list might
2691 not be complete (that is, it is possible that some PRs that have been
2692 fixed are not listed here).
2696 This is the [22]list of problem reports (PRs) from GCC's bug tracking
2697 system that are known to be fixed in the 4.6.3 release. This list might
2698 not be complete (that is, it is possible that some PRs that have been
2699 fixed are not listed here).
2703 This is the [23]list of problem reports (PRs) from GCC's bug tracking
2704 system that are known to be fixed in the 4.6.4 release. This list might
2705 not be complete (that is, it is possible that some PRs that have been
2706 fixed are not listed here).
2709 For questions related to the use of GCC, please consult these web
2710 pages and the [24]GCC manuals. If that fails, the
2711 [25]gcc-help@gcc.gnu.org mailing list might help. Comments on these
2712 web pages and the development of GCC are welcome on our developer
2713 list at [26]gcc@gcc.gnu.org. All of [27]our lists have public
2716 Copyright (C) [28]Free Software Foundation, Inc. Verbatim copying and
2717 distribution of this entire article is permitted in any medium,
2718 provided this notice is preserved.
2720 These pages are [29]maintained by the GCC team. Last modified
2725 1. http://sourceware.org/bugzilla/show_bug.cgi?id=10401
2726 2. http://gcc.gnu.org/gcc-4.5/changes.html
2727 3. http://gcc.gnu.org/gcc-4.5/changes.html#obsoleted
2728 4. http://gcc.gnu.org/gcc-4.6/porting_to.html
2729 5. http://gcc.gnu.org/projects/lto/whopr.pdf
2730 6. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
2731 7. http://gcc.gnu.org/gcc-4.6/cxx0x_status.html
2732 8. http://gcc.gnu.org/PR43145
2733 9. http://gcc.gnu.org/PR43680
2734 10. http://gcc.gnu.org/PR33558
2735 11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#253
2736 12. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x
2737 13. http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html
2738 14. http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug.html#debug.races
2739 15. http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html
2740 16. http://gcc.gnu.org/wiki/OOP
2741 17. http://gcc.gnu.org/wiki/Coarray
2742 18. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcoarray_007d-233
2743 19. http://golang.org/
2744 20. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.1
2745 21. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.2
2746 22. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.3
2747 23. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.4
2748 24. http://gcc.gnu.org/onlinedocs/
2749 25. mailto:gcc-help@gcc.gnu.org
2750 26. mailto:gcc@gcc.gnu.org
2751 27. http://gcc.gnu.org/lists.html
2752 28. http://www.fsf.org/
2753 29. http://gcc.gnu.org/about.html
2754 30. http://validator.w3.org/check/referer
2755 ======================================================================
2756 http://gcc.gnu.org/gcc-4.5/index.html
2757 GCC 4.5 Release Series
2761 The [1]GNU project and the GCC developers are pleased to announce the
2762 release of GCC 4.5.4.
2764 This release is a bug-fix release, containing fixes for regressions in
2765 GCC 4.5.3 relative to previous releases of GCC.
2770 Jul 2, 2012 ([2]changes)
2773 Apr 28, 2011 ([3]changes)
2776 Dec 16, 2010 ([4]changes)
2779 Jul 31, 2010 ([5]changes)
2782 April 14, 2010 ([6]changes)
2784 References and Acknowledgements
2786 GCC used to stand for the GNU C Compiler, but since the compiler
2787 supports several other languages aside from C, it now stands for the
2788 GNU Compiler Collection.
2790 A list of [7]successful builds is updated as new information becomes
2793 The GCC developers would like to thank the numerous people that have
2794 contributed new features, improvements, bug fixes, and other changes as
2795 well as test results to GCC. This [8]amazing group of volunteers is
2796 what makes GCC successful.
2798 For additional information about GCC please refer to the [9]GCC project
2799 web site or contact the [10]GCC development mailing list.
2801 To obtain GCC please use [11]our mirror sites or [12]our SVN server.
2804 For questions related to the use of GCC, please consult these web
2805 pages and the [13]GCC manuals. If that fails, the
2806 [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these
2807 web pages and the development of GCC are welcome on our developer
2808 list at [15]gcc@gcc.gnu.org. All of [16]our lists have public
2811 Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
2812 distribution of this entire article is permitted in any medium,
2813 provided this notice is preserved.
2815 These pages are [18]maintained by the GCC team. Last modified
2820 1. http://www.gnu.org/
2821 2. http://gcc.gnu.org/gcc-4.5/changes.html
2822 3. http://gcc.gnu.org/gcc-4.5/changes.html
2823 4. http://gcc.gnu.org/gcc-4.5/changes.html
2824 5. http://gcc.gnu.org/gcc-4.5/changes.html
2825 6. http://gcc.gnu.org/gcc-4.5/changes.html
2826 7. http://gcc.gnu.org/gcc-4.5/buildstat.html
2827 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
2828 9. http://gcc.gnu.org/index.html
2829 10. mailto:gcc@gcc.gnu.org
2830 11. http://gcc.gnu.org/mirrors.html
2831 12. http://gcc.gnu.org/svn.html
2832 13. http://gcc.gnu.org/onlinedocs/
2833 14. mailto:gcc-help@gcc.gnu.org
2834 15. mailto:gcc@gcc.gnu.org
2835 16. http://gcc.gnu.org/lists.html
2836 17. http://www.fsf.org/
2837 18. http://gcc.gnu.org/about.html
2838 19. http://validator.w3.org/check/referer
2839 ======================================================================
2840 http://gcc.gnu.org/gcc-4.5/changes.html
2841 GCC 4.5 Release Series
2842 Changes, New Features, and Fixes
2846 * GCC now requires the [1]MPC library in order to build. See the
2847 [2]prerequisites page for version requirements.
2848 * Support for a number of older systems and recently unmaintained or
2849 untested target ports of GCC has been declared obsolete in GCC 4.5.
2850 Unless there is activity to revive them, the next release of GCC
2851 will have their sources permanently removed.
2852 The following ports for individual systems on particular
2853 architectures have been obsoleted:
2854 + IRIX releases before 6.5 (mips-sgi-irix5*,
2855 mips-sgi-irix6.[0-4])
2856 + Solaris 7 (*-*-solaris2.7)
2857 + Tru64 UNIX releases before V5.1 (alpha*-dec-osf4*,
2859 + Details for the IRIX, Solaris 7, and Tru64 UNIX obsoletions
2860 can be found in the [3]announcement.
2861 Support for the classic POWER architecture implemented in the
2862 original RIOS and RIOS2 processors of the old IBM RS/6000 product
2863 line has been obsoleted in the rs6000 port. This does not affect
2864 the new generation Power and PowerPC architectures.
2865 * Support has been removed for all the [4]configurations obsoleted in
2867 * Support has been removed for the protoize and unprotoize utilities,
2868 obsoleted in GCC 4.4.
2869 * Support has been removed for tuning for Itanium1 (Merced) variants.
2870 Note that code tuned for Itanium2 should also run correctly on
2872 * GCC now generates unwind info also for epilogues. DWARF debuginfo
2873 generated by GCC now uses more features of DWARF3 than before, and
2874 also some DWARF4 features. GDB older than 7.0 is not able to handle
2875 either of these, so to debug GCC 4.5 generated binaries or
2876 libraries GDB 7.0 or later is needed. You can disable use of DWARF4
2877 features with the -gdwarf-3 -gstrict-dwarf options, or use
2878 -gdwarf-2 -gstrict-dwarf to restrict GCC to just DWARF2, but
2879 epilogue unwind info is emitted unconditionally whenever unwind
2881 * On x86 targets, code containing floating-point calculations may run
2882 significantly slower when compiled with GCC 4.5 in strict C99
2883 conformance mode than they did with earlier GCC versions. This is
2884 due to stricter standard conformance of the compiler and can be
2885 avoided by using the option -fexcess-precision=fast; also see
2887 * The function attribute noinline no longer prevents GCC from cloning
2888 the function. A new attribute noclone has been introduced for this
2889 purpose. Cloning a function means that it is duplicated and the new
2890 copy is specialized for certain contexts (for example when a
2891 parameter is a known constant).
2893 General Optimizer Improvements
2895 * The -save-temps now takes an optional argument. The -save-temps and
2896 -save-temps=cwd switches write the temporary files in the current
2897 working directory based on the original source file. The
2898 -save-temps=obj switch will write files into the directory
2899 specified with the -o option, and the intermediate filenames are
2900 based on the output file. This will allow the user to get the
2901 compiler intermediate files when doing parallel builds without two
2902 builds of the same filename located in different directories from
2903 interfering with each other.
2904 * Debugging dumps are now created in the same directory as the object
2905 file rather than in the current working directory. This allows the
2906 user to get debugging dumps when doing parallel builds without two
2907 builds of the same filename interfering with each other.
2908 * GCC has been integrated with the [6]MPC library. This allows GCC to
2909 evaluate complex arithmetic at compile time [7]more accurately. It
2910 also allows GCC to evaluate calls to complex built-in math
2911 functions having constant arguments and replace them at compile
2912 time with their mathematically equivalent results. In doing so, GCC
2913 can generate correct results regardless of the math library
2914 implementation or floating point precision of the host platform.
2915 This also allows GCC to generate identical results regardless of
2916 whether one compiles in native or cross-compile configurations to a
2917 particular target. The following built-in functions take advantage
2918 of this new capability: cacos, cacosh, casin, casinh, catan,
2919 catanh, ccos, ccosh, cexp, clog, cpow, csin, csinh, csqrt, ctan,
2920 and ctanh. The float and long double variants of these functions
2921 (e.g. csinf and csinl) are also handled.
2922 * A new link-time optimizer has been added ([8]-flto). When this
2923 option is used, GCC generates a bytecode representation of each
2924 input file and writes it to specially-named sections in each object
2925 file. When the object files are linked together, all the function
2926 bodies are read from these named sections and instantiated as if
2927 they had been part of the same translation unit. This enables
2928 interprocedural optimizations to work across different files (and
2929 even different languages), potentially improving the performance of
2930 the generated code. To use the link-timer optimizer, -flto needs to
2931 be specified at compile time and during the final link. If the
2932 program does not require any symbols to be exported, it is possible
2933 to combine -flto and the experimental [9]-fwhopr with
2934 [10]-fwhole-program to allow the interprocedural optimizers to use
2935 more aggressive assumptions.
2936 * The automatic parallelization pass was enhanced to support
2937 parallelization of outer loops.
2938 * Automatic parallelization can be enabled as part of Graphite. In
2939 addition to -ftree-parallelize-loops=, specify
2940 -floop-parallelize-all to enable the Graphite-based optimization.
2941 * The infrastructure for optimizing based on [11]restrict qualified
2942 pointers has been rewritten and should result in code generation
2943 improvements. Optimizations based on restrict qualified pointers
2944 are now also available when using -fno-strict-aliasing.
2945 * There is a new optimization pass that attempts to change prototype
2946 of functions to avoid unused parameters, pass only relevant parts
2947 of structures and turn arguments passed by reference to arguments
2948 passed by value when possible. It is enabled by -O2 and above as
2949 well as -Os and can be manually invoked using the new command-line
2951 * GCC now optimize exception handling code. In particular cleanup
2952 regions that are proved to not have any effect are optimized out.
2954 New Languages and Language specific improvements
2958 * The -fshow-column option is now on by default. This means error
2959 messages now have a column associated with them.
2963 * Compilation of programs heavily using discriminated record types
2964 with variant parts has been sped up and generates more compact
2966 * Stack checking now works reasonably well on most plaforms. In some
2967 specific cases, stack overflows may still fail to be detected, but
2968 a compile-time warning will be issued for these cases.
2972 * If a header named in a #include directive is not found, the
2973 compiler exits immediately. This avoids a cascade of errors arising
2974 from declarations expected to be found in that header being
2976 * A new built-in function __builtin_unreachable() has been added that
2977 tells the compiler that control will never reach that point. It may
2978 be used after asm statements that terminate by transferring control
2979 elsewhere, and in other places that are known to be unreachable.
2980 * The -Wlogical-op option now warns for logical expressions such as
2981 (c == 1 && c == 2) and (c != 1 || c != 2), which are likely to be
2982 mistakes. This option is disabled by default.
2983 * An asm goto feature has been added to allow asm statements that
2985 * C++0x raw strings are supported for C++ and for C with -std=gnu99.
2986 * The deprecated attribute now takes an optional string argument, for
2987 example, __attribute__((deprecated("text string"))), that will be
2988 printed together with the deprecation warning.
2992 * The -Wenum-compare option, which warns when comparing values of
2993 different enum types, now works for C. It formerly only worked for
2994 C++. This warning is enabled by -Wall. It may be avoided by using a
2996 * The -Wcast-qual option now warns about casts which are unsafe in
2997 that they permit const-correctness to be violated without further
2998 warnings. Specifically, it warns about cases where a qualifier is
2999 added when all the lower types are not const. For example, it warns
3000 about a cast from char ** to const char **.
3001 * The -Wc++-compat option is significantly improved. It issues new
3003 + Using C++ reserved operator names as identifiers.
3004 + Conversions to enum types without explicit casts.
3005 + Using va_arg with an enum type.
3006 + Using different enum types in the two branches of ?:.
3007 + Using ++ or -- on a variable of enum type.
3008 + Using the same name as both a struct, union or enum tag and a
3009 typedef, unless the typedef refers to the tagged type itself.
3010 + Using a struct, union, or enum which is defined within another
3012 + A struct field defined using a typedef if there is a field in
3013 the struct, or an enclosing struct, whose name is the typedef
3015 + Duplicate definitions at file scope.
3016 + Uninitialized const variables.
3017 + A global variable with an anonymous struct, union, or enum
3019 + Using a string constant to initialize a char array whose size
3020 is the length of the string.
3021 * The new -Wjump-misses-init option warns about cases where a goto or
3022 switch skips the initialization of a variable. This sort of branch
3023 is an error in C++ but not in C. This warning is enabled by
3025 * GCC now ensures that a C99-conforming <stdint.h> is present on most
3026 targets, and uses information about the types in this header to
3027 implement the Fortran bindings to those types. GCC does not ensure
3028 the presence of such a header, and does not implement the Fortran
3029 bindings, on the following targets: NetBSD, VxWorks, VMS,
3030 SymbianOS, WinCE, LynxOS, Netware, QNX, Interix, TPF.
3031 * GCC now implements C90- and C99-conforming rules for constant
3032 expressions. This may cause warnings or errors for some code using
3033 expressions that can be folded to a constant but are not constant
3034 expressions as defined by ISO C.
3035 * All known target-independent C90 and C90 Amendment 1 conformance
3036 bugs, and all known target-independent C99 conformance bugs not
3037 related to floating point or extended identifiers, have been fixed.
3038 * The C decimal floating point support now includes support for the
3039 FLOAT_CONST_DECIMAL64 pragma.
3040 * The named address space feature from ISO/IEC TR 18037 is now
3041 supported. This is currently only implemented for the SPU
3046 * Improved [12]experimental support for the upcoming C++0x ISO C++
3047 standard, including support for raw strings, lambda expressions and
3048 explicit type conversion operators.
3049 * When printing the name of a class template specialization, G++ will
3050 now omit any template arguments which come from default template
3051 arguments. This behavior (and the pretty-printing of function
3052 template specializations as template signature and arguments) can
3053 be disabled with the -fno-pretty-templates option.
3054 * Access control is now applied to typedef names used in a template,
3055 which may cause G++ to reject some ill-formed code that was
3056 accepted by earlier releases. The -fno-access-control option can be
3057 used as a temporary workaround until the code is corrected.
3058 * Compilation time for code that uses templates should now scale
3059 linearly with the number of instantiations rather than
3060 quadratically, as template instantiations are now looked up using
3062 * Declarations of functions that look like builtin declarations of
3063 library functions are only considered to be redeclarations if they
3064 are declared with extern "C". This may cause problems with code
3065 that omits extern "C" on hand-written declarations of C library
3066 functions such as abort or memcpy. Such code is ill-formed, but was
3067 accepted by earlier releases.
3068 * Diagnostics that used to complain about passing non-POD types to
3069 ... or jumping past the declaration of a non-POD variable now check
3070 for triviality rather than PODness, as per C++0x.
3071 * In C++0x mode local and anonymous classes are now allowed as
3072 template arguments, and in declarations of variables and functions
3073 with linkage, so long as any such declaration that is used is also
3074 defined ([13]DR 757).
3075 * Labels may now have attributes, as has been permitted for a while
3076 in C. This is only permitted when the label definition and the
3077 attribute specifier is followed by a semicolon--i.e., the label
3078 applies to an empty statement. The only useful attribute for a
3080 * G++ now implements [14]DR 176. Previously G++ did not support using
3081 the injected-class-name of a template base class as a type name,
3082 and lookup of the name found the declaration of the template in the
3083 enclosing scope. Now lookup of the name finds the
3084 injected-class-name, which can be used either as a type or as a
3085 template, depending on whether or not the name is followed by a
3086 template argument list. As a result of this change, some code that
3087 was previously accepted may be ill-formed because
3088 1. The injected-class-name is not accessible because it's from a
3090 2. The injected-class-name cannot be used as an argument for a
3091 template template parameter.
3092 In either of these cases, the code can be fixed by adding a
3093 nested-name-specifier to explicitly name the template. The first
3094 can be worked around with -fno-access-control; the second is only
3095 rejected with -pedantic.
3096 * A new standard mangling for SIMD vector types has been added, to
3097 avoid name clashes on systems with vectors of varying length. By
3098 default the compiler still uses the old mangling, but emits aliases
3099 with the new mangling on targets that support strong aliases. Users
3100 can switch over entirely to the new mangling with -fabi-version=4
3101 or -fabi-version=0. -Wabi will now warn about code that uses the
3103 * The command-line option -ftemplate-depth-N is now written as
3104 -ftemplate-depth=N and the old form is deprecated.
3105 * Conversions between NULL and non-pointer types are now warned by
3106 default. The new option -Wno-conversion-null disables these
3107 warnings. Previously these warnings were only available when using
3108 -Wconversion explicitly.
3110 Runtime Library (libstdc++)
3112 * [15]Improved experimental support for the upcoming ISO C++
3113 standard, C++0x, including:
3114 + Support for <future>, <functional>, and <random>.
3115 + Existing facilities now exploit explicit operators and the
3116 newly implemented core C++0x features.
3117 * An experimental [16]profile mode has been added. This is an
3118 implementation of many C++ standard library constructs with an
3119 additional analysis layer that gives performance improvement advice
3120 based on recognition of suboptimal usage patterns. For example,
3125 for (int k = 0; k < 1024; ++k)
3126 v.insert(v.begin(), k);
3129 When instrumented via the profile mode, can return suggestions
3130 about the initial size and choice of the container used as follows:
3131 vector-to-list: improvement = 5: call stack = 0x804842c ...
3132 : advice = change std::vector to std::list
3133 vector-size: improvement = 3: call stack = 0x804842c ...
3134 : advice = change initial container size from 0 to 1024
3136 These constructs can be substituted for the normal libstdc++
3137 constructs on a piecemeal basis, or all existing components can be
3138 transformed via the -D_GLIBCXX_PROFILE macro.
3139 * [17]Support for decimal floating-point arithmetic (aka ISO C++ TR
3140 24733) has been added. This support is in header file
3141 <decimal/decimal>, uses namespace std::decimal, and includes
3142 classes decimal32, decimal64, and decimal128.
3143 * Sources have been audited for application of function attributes
3144 nothrow, const, pure, and noreturn.
3145 * Python pretty-printers have been added for many standard library
3146 components that simplify the internal representation and present a
3147 more intuitive view of components when used with
3148 appropriately-advanced versions of GDB. For more information,
3149 please consult the more [18]detailed description.
3150 * The default behavior for comparing typeinfo names has changed, so
3151 in <typeinfo>, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.
3152 * The new -static-libstdc++ option directs g++ to link the C++
3153 library statically, even if the default would normally be to link
3158 * The COMMON default padding has been changed - instead of adding the
3159 padding before a variable it is now added afterwards, which
3160 increases the compatibility with other vendors and helps to obtain
3161 the correct output in some cases. Cf. also the -falign-commons
3162 option ([19]added in 4.4).
3163 * The -finit-real= option now also supports the value snan for
3164 signalling not-a-number; to be effective, one additionally needs to
3165 enable trapping (e.g. via -ffpe-trap=). Note: Compile-time
3166 optimizations can turn a signalling NaN into a quiet one.
3167 * The new option -fcheck= has been added with the options bounds,
3168 array-temps, do, pointer, and recursive. The bounds and array-temps
3169 options are equivalent to -fbounds-check and
3170 -fcheck-array-temporaries. The do option checks for invalid
3171 modification of loop iteration variables, and the recursive option
3172 tests for recursive calls to subroutines/functions which are not
3173 marked as recursive. With pointer pointer association checks in
3174 calls are performed; however, neither undefined pointers nor
3175 pointers in expressions are handled. Using -fcheck=all enables all
3176 these run-time checks.
3177 * The run-time checking -fcheck=bounds now warns about invalid string
3178 lengths of character dummy arguments. Additionally, more
3179 compile-time checks have been added.
3180 * The new option [20]-fno-protect-parens has been added; if set, the
3181 compiler may reorder REAL and COMPLEX expressions without regard to
3183 * GNU Fortran no longer links against libgfortranbegin. As before,
3184 MAIN__ (assembler symbol name) is the actual Fortran main program,
3185 which is invoked by the main function. However, main is now
3186 generated and put in the same object file as MAIN__. For the time
3187 being, libgfortranbegin still exists for backward compatibility.
3188 For details see the new [21]Mixed-Language Programming chapter in
3190 * The I/O library was restructured for performance and cleaner code.
3191 * Array assignments and WHERE are now run in parallel when OpenMP's
3193 * The experimental option -fwhole-file was added. The option allows
3194 whole-file checking of procedure arguments and allows for better
3195 optimizations. It can also be used with -fwhole-program, which is
3196 now also supported in gfortran.
3197 * More Fortran 2003 and Fortran 2008 mathematical functions can now
3198 be used as initialization expressions.
3199 * Some extended attributes such as STDCALL are now supported via the
3200 [22]GCC$ compiler directive.
3201 * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN
3202 intrinsic behaves now as if zero were always positive.
3203 * For legacy compatibiliy: On Cygwin and MinGW, the special files
3204 CONOUT$ and CONIN$ (and CONERR$ which maps to CONOUT$) are now
3206 * Fortran 2003 support has been extended:
3207 + Procedure-pointer function results and procedure-pointer
3208 components (including PASS),
3209 + allocatable scalars (experimental),
3210 + DEFERRED type-bound procedures,
3211 + the ERRMSG= argument of the ALLOCATE and DEALLOCATE statements
3212 have been implemented.
3213 + The ALLOCATE statement supports type-specs and the SOURCE=
3215 + OPERATOR(*) and ASSIGNMENT(=) are now allowed as GENERIC
3216 type-bound procedure (i.e. as type-bound operators).
3217 + Rounding (ROUND=, RZ, ...) for output is now supported.
3218 + The INT_FAST{8,16,32,64,128}_T kind type parameters of the
3219 intrinsic module ISO_C_BINDING are now supported, except for
3220 the targets listed above as ones where GCC does not have
3221 <stdint.h> type information.
3222 + Extensible derived types with type-bound procedure or
3223 procedure pointer with PASS attribute now have to use CLASS in
3224 line with the Fortran 2003 standard; the workaround to use
3225 TYPE is no longer supported.
3226 + [23]Experimental, incomplete support for polymorphism,
3227 including CLASS, SELECT TYPE and dynamic dispatch of
3228 type-bound procedure calls. Some features do not work yet such
3229 as unlimited polymorphism (CLASS(*)).
3230 * Fortran 2008 support has been extended:
3231 + The OPEN statement now supports the NEWUNIT= option, which
3232 returns a unique file unit, thus preventing inadvertent use of
3233 the same unit in different parts of the program.
3234 + Support for unlimited format items has been added.
3235 + The INT{8,16,32} and REAL{32,64,128} kind type parameters of
3236 the intrinsic module ISO_FORTRAN_ENV are now supported.
3237 + Using complex arguments with TAN, SINH, COSH, TANH, ASIN,
3238 ACOS, and ATAN is now possible; the functions ASINH, ACOSH,
3239 and ATANH have been added (for real and complex arguments) and
3240 ATAN(Y,X) is now an alias for ATAN2(Y,X).
3241 + The BLOCK construct has been implemented.
3243 New Targets and Target Specific Improvements
3247 * Full cross-toolchain support now available with GNU Binutils
3251 * GCC now supports the Cortex-M0 and Cortex-A5 processors.
3252 * GCC now supports the ARM v7E-M architecture.
3253 * GCC now supports VFPv4-based FPUs and FPUs with
3254 single-precision-only VFP.
3255 * GCC has many improvements to optimization for other ARM processors,
3256 including scheduling support for the integer pipeline on Cortex-A9.
3257 * GCC now supports the IEEE 754-2008 half-precision floating-point
3258 type, and a variant ARM-specific half-precision type. This type is
3259 specified using __fp16, with the layout determined by
3260 -mfp16-format. With appropriate -mfpu options, the Cortex-A9 and
3261 VFPv4 half-precision instructions will be used.
3262 * GCC now supports the variant of AAPCS that uses VFP registers for
3263 parameter passing and return values.
3267 * The -mno-tablejump option has been removed because it has the same
3268 effect as the -fno-jump-tables option.
3269 * Added support for these new AVR devices:
3276 * GCC now will set the default for -march= based on the configure
3278 * GCC now supports handling floating-point excess precision arising
3279 from use of the x87 floating-point unit in a way that conforms to
3280 ISO C99. This is enabled with -fexcess-precision=standard and with
3281 standards conformance options such as -std=c99, and may be disabled
3282 using -fexcess-precision=fast.
3283 * Support for the Intel Atom processor is now available through the
3284 -march=atom and -mtune=atom options.
3285 * A new -mcrc32 option is now available to enable crc32 intrinsics.
3286 * A new -mmovbe option is now available to enable GCC to use the
3287 movbe instruction to implement __builtin_bswap32 and
3289 * SSE math now can be enabled by default at configure time with the
3290 new --with-fpmath=sse option.
3291 * There is a new intrinsic header file, <x86intrin.h>. It should be
3292 included before using any IA-32/x86-64 intrinsics.
3293 * Support for the XOP, FMA4, and LWP instruction sets for the AMD
3294 Orochi processors are now available with the -mxop, -mfma4, and
3296 * The -mabm option enables GCC to use the popcnt and lzcnt
3297 instructions on AMD processors.
3298 * The -mpopcnt option enables GCC to use the popcnt instructions on
3299 both AMD and Intel processors.
3303 * GCC now supports ColdFire 51xx, 5221x, 5225x, 52274, 52277, 5301x
3305 * GCC now supports thread-local storage (TLS) on M68K and ColdFire
3310 Support has been added for the Toshiba Media embedded Processor (MeP,
3311 or mep-elf) embedded target.
3315 * GCC now supports MIPS 1004K processors.
3316 * GCC can now be configured with options --with-arch-32,
3317 --with-arch-64, --with-tune-32 and --with-tune-64 to control the
3318 default optimization separately for 32-bit and 64-bit modes.
3319 * MIPS targets now support an alternative _mcount interface, in which
3320 register $12 points to the function's save slot for register $31.
3321 This interface is selected by the -mcount-ra-address option; see
3322 the documentation for more details.
3323 * GNU/Linux targets can now generate read-only .eh_frame sections.
3324 This optimization requires GNU binutils 2.20 or above, and is only
3325 available if GCC is configured with a suitable version of binutils.
3326 * GNU/Linux targets can now attach special relocations to indirect
3327 calls, so that the linker can turn them into direct jumps or
3328 branches. This optimization requires GNU binutils 2.20 or later,
3329 and is automatically selected if GCC is configured with an
3330 appropriate version of binutils. It can be explicitly enabled or
3331 disabled using the -mrelax-pic-calls command-line option.
3332 * GCC now generates more heavily-optimized atomic operations on
3334 * MIPS targets now support the -fstack-protector option.
3335 * GCC now supports an -msynci option, which specifies that synci is
3336 enough to flush the instruction cache, without help from the
3337 operating system. GCC uses this information to optimize
3338 automatically-generated cache flush operations, such as those used
3339 for nested functions in C. There is also a --with-synci
3340 configure-time option, which makes -msynci the default.
3341 * GCC supports four new function attributes for interrupt handlers:
3342 interrupt, use_shadow_register_set, keep_interrupts_masked and
3343 use_debug_exception_return. See the documentation for more details
3344 about these attributes.
3346 RS/6000 (POWER/PowerPC)
3348 * GCC now supports the Power ISA 2.06, which includes the VSX
3349 instructions that add vector 64-bit floating point support, new
3350 population count instructions, and conversions between floating
3351 point and unsigned types.
3352 * Support for the power7 processor is now available through the
3353 -mcpu=power7 and -mtune=power7.
3354 * GCC will now vectorize loops that contain simple math functions
3355 like copysign when generating code for altivec or VSX targets.
3356 * Support for the A2 processor is now available through the -mcpu=a2
3357 and -mtune=a2 options.
3358 * Support for the 476 processor is now available through the
3359 -mcpu={476,476fp} and -mtune={476,476fp} options.
3360 * Support for the e500mc64 processor is now available through the
3361 -mcpu=e500mc64 and -mtune=e500mc64 options.
3362 * GCC can now be configured with options --with-cpu-32,
3363 --with-cpu-64, --with-tune-32 and --with-tune-64 to control the
3364 default optimization separately for 32-bit and 64-bit modes.
3365 * Starting with GCC 4.5.4, vectors of type vector long long or vector
3366 long are passed and returned in the same method as other vectors
3367 with the VSX instruction set. Previously the GCC compiler did not
3368 adhere to the ABI for 128-bit vectors with 64-bit integer base
3369 types (PR 48857). This is also fixed in the GCC 4.6.1 release.
3373 Support has been added for the Renesas RX Processor (rx-elf) target.
3377 Windows (Cygwin and MinGW)
3379 * GCC now installs all the major language runtime libraries as DLLs
3380 when configured with the --enable-shared option.
3381 * GCC now makes use of the new support for aligned common variables
3382 in versions of binutils >= 2.20 to fix bugs in the support for SSE
3384 * Improvements to the libffi support library increase the reliability
3385 of code generated by GCJ on all Windows platforms. Libgcj is
3386 enabled by default for the first time.
3387 * Libtool improvements simplify installation by placing the generated
3388 DLLs in the correct binaries directory.
3389 * Numerous other minor bugfixes and improvements, and substantial
3390 enhancements to the Fortran language support library.
3394 Other significant improvements
3398 * It is now possible to extend the compiler without having to modify
3399 its source code. A new option -fplugin=file.so tells GCC to load
3400 the shared object file.so and execute it as part of the compiler.
3401 The internal documentation describes the details on how plugins can
3402 interact with the compiler.
3404 Installation changes
3406 * The move to newer autotools changed default installation
3407 directories and switches to control them: The --with-datarootdir,
3408 --with-docdir, --with-pdfdir, and --with-htmldir switches are not
3409 used any more. Instead, you can now use --datarootdir, --docdir,
3410 --htmldir, and --pdfdir. The default installation directories have
3411 changed as follows according to the GNU Coding Standards:
3413 datarootdir read-only architecture-independent data root [PREFIX/share]
3414 localedir locale-specific message catalogs [DATAROOTDIR/locale]
3415 docdir documentation root [DATAROOTDIR/doc/PACKAGE]
3416 htmldir html documentation [DOCDIR]
3417 dvidir dvi documentation [DOCDIR]
3418 pdfdir pdf documentation [DOCDIR]
3419 psdir ps documentation [DOCDIR]
3420 The following variables have new default values:
3422 datadir read-only architecture-independent data [DATAROOTDIR]
3423 infodir info documentation [DATAROOTDIR/info]
3424 mandir man documentation [DATAROOTDIR/man]
3428 This is the [24]list of problem reports (PRs) from GCC's bug tracking
3429 system that are known to be fixed in the 4.5.1 release. This list might
3430 not be complete (that is, it is possible that some PRs that have been
3431 fixed are not listed here).
3435 * GCC's new link-time optimizer ([25]-flto) now also works on a few
3437 + Cygwin (*-cygwin*)
3439 + Darwin on x86-64 (x86_64-apple-darwin*)
3440 LTO is not enabled by default for these targets. To enable LTO, you
3441 should configure with the --enable-lto option.
3445 This is the [26]list of problem reports (PRs) from GCC's bug tracking
3446 system that are known to be fixed in the 4.5.2 release. This list might
3447 not be complete (that is, it is possible that some PRs that have been
3448 fixed are not listed here).
3452 This is the [27]list of problem reports (PRs) from GCC's bug tracking
3453 system that are known to be fixed in the 4.5.3 release. This list might
3454 not be complete (that is, it is possible that some PRs that have been
3455 fixed are not listed here).
3457 On the PowerPC compiler, the Altivec builtin functions vec_ld and
3458 vec_st have been modified to generate the Altivec memory instructions
3459 LVX and STVX, even if the -mvsx option is used. In the initial GCC 4.5
3460 release, these builtin functions were changed to generate VSX memory
3461 reference instructions instead of Altivec memory instructions, but
3462 there are differences between the two instructions. If the VSX
3463 instruction set is available, you can now use the new builtin functions
3464 vec_vsx_ld and vec_vsx_st which always generates the VSX memory
3469 This is the [28]list of problem reports (PRs) from GCC's bug tracking
3470 system that are known to be fixed in the 4.5.4 release. This list might
3471 not be complete (that is, it is possible that some PRs that have been
3472 fixed are not listed here).
3475 For questions related to the use of GCC, please consult these web
3476 pages and the [29]GCC manuals. If that fails, the
3477 [30]gcc-help@gcc.gnu.org mailing list might help. Comments on these
3478 web pages and the development of GCC are welcome on our developer
3479 list at [31]gcc@gcc.gnu.org. All of [32]our lists have public
3482 Copyright (C) [33]Free Software Foundation, Inc. Verbatim copying and
3483 distribution of this entire article is permitted in any medium,
3484 provided this notice is preserved.
3486 These pages are [34]maintained by the GCC team. Last modified
3491 1. http://www.multiprecision.org/
3492 2. http://gcc.gnu.org/install/prerequisites.html
3493 3. http://gcc.gnu.org/ml/gcc/2010-01/msg00510.html
3494 4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted
3495 5. http://gcc.gnu.org/gcc-4.5/changes.html#x86
3496 6. http://www.multiprecision.org/
3497 7. http://gcc.gnu.org/PR30789
3498 8. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
3499 9. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhopr-802
3500 10. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800
3501 11. http://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html
3502 12. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
3503 13. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
3504 14. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
3505 15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x
3506 16. http://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html
3507 17. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
3508 18. http://sourceware.org/gdb/wiki/STLSupport
3509 19. http://gcc.gnu.org/gcc-4.4/changes.html
3510 20. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
3511 21. http://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html
3512 22. http://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
3513 23. http://gcc.gnu.org/wiki/OOP
3514 24. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
3515 25. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
3516 26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2
3517 27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3
3518 28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4
3519 29. http://gcc.gnu.org/onlinedocs/
3520 30. mailto:gcc-help@gcc.gnu.org
3521 31. mailto:gcc@gcc.gnu.org
3522 32. http://gcc.gnu.org/lists.html
3523 33. http://www.fsf.org/
3524 34. http://gcc.gnu.org/about.html
3525 35. http://validator.w3.org/check/referer
3526 ======================================================================
3527 http://gcc.gnu.org/gcc-4.4/index.html
3528 GCC 4.4 Release Series
3532 The [1]GNU project and the GCC developers are pleased to announce the
3533 release of GCC 4.4.7.
3535 This release is a bug-fix release, containing fixes for regressions in
3536 GCC 4.4.6 relative to previous releases of GCC.
3541 March 13, 2012 ([2]changes)
3544 April 16, 2011 ([3]changes)
3547 October 1, 2010 ([4]changes)
3550 April 29, 2010 ([5]changes)
3553 January 21, 2010 ([6]changes)
3556 October 15, 2009 ([7]changes)
3559 July 22, 2009 ([8]changes)
3562 April 21, 2009 ([9]changes)
3564 References and Acknowledgements
3566 GCC used to stand for the GNU C Compiler, but since the compiler
3567 supports several other languages aside from C, it now stands for the
3568 GNU Compiler Collection.
3570 A list of [10]successful builds is updated as new information becomes
3573 The GCC developers would like to thank the numerous people that have
3574 contributed new features, improvements, bug fixes, and other changes as
3575 well as test results to GCC. This [11]amazing group of volunteers is
3576 what makes GCC successful.
3578 For additional information about GCC please refer to the [12]GCC
3579 project web site or contact the [13]GCC development mailing list.
3581 To obtain GCC please use [14]our mirror sites or [15]our SVN server.
3584 For questions related to the use of GCC, please consult these web
3585 pages and the [16]GCC manuals. If that fails, the
3586 [17]gcc-help@gcc.gnu.org mailing list might help. Comments on these
3587 web pages and the development of GCC are welcome on our developer
3588 list at [18]gcc@gcc.gnu.org. All of [19]our lists have public
3591 Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
3592 distribution of this entire article is permitted in any medium,
3593 provided this notice is preserved.
3595 These pages are [21]maintained by the GCC team. Last modified
3600 1. http://www.gnu.org/
3601 2. http://gcc.gnu.org/gcc-4.4/changes.html
3602 3. http://gcc.gnu.org/gcc-4.4/changes.html
3603 4. http://gcc.gnu.org/gcc-4.4/changes.html
3604 5. http://gcc.gnu.org/gcc-4.4/changes.html
3605 6. http://gcc.gnu.org/gcc-4.4/changes.html
3606 7. http://gcc.gnu.org/gcc-4.4/changes.html
3607 8. http://gcc.gnu.org/gcc-4.4/changes.html
3608 9. http://gcc.gnu.org/gcc-4.4/changes.html
3609 10. http://gcc.gnu.org/gcc-4.4/buildstat.html
3610 11. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
3611 12. http://gcc.gnu.org/index.html
3612 13. mailto:gcc@gcc.gnu.org
3613 14. http://gcc.gnu.org/mirrors.html
3614 15. http://gcc.gnu.org/svn.html
3615 16. http://gcc.gnu.org/onlinedocs/
3616 17. mailto:gcc-help@gcc.gnu.org
3617 18. mailto:gcc@gcc.gnu.org
3618 19. http://gcc.gnu.org/lists.html
3619 20. http://www.fsf.org/
3620 21. http://gcc.gnu.org/about.html
3621 22. http://validator.w3.org/check/referer
3622 ======================================================================
3623 http://gcc.gnu.org/gcc-4.4/changes.html
3624 GCC 4.4 Release Series
3625 Changes, New Features, and Fixes
3627 The latest release in the 4.4 release series is [1]GCC 4.4.7.
3631 * __builtin_stdarg_start has been completely removed from GCC.
3632 Support for <varargs.h> had been deprecated since GCC 4.0. Use
3633 __builtin_va_start as a replacement.
3634 * Some of the errors issued by the C++ front end that could be
3635 downgraded to warnings in previous releases by using -fpermissive
3636 are now warnings by default. They can be converted into errors by
3637 using -pedantic-errors.
3638 * Use of the cpp assertion extension will now emit a warning when
3639 -Wdeprecated or -pedantic is used. This extension has been
3640 deprecated for many years, but never warned about.
3641 * Packed bit-fields of type char were not properly bit-packed on many
3642 targets prior to GCC 4.4. On these targets, the fix in GCC 4.4
3643 causes an ABI change. For example there is no longer a 4-bit
3644 padding between field a and b in this structure:
3649 } __attribute__ ((packed));
3650 There is a new warning to help identify fields that are affected:
3651 foo.c:5: note: Offset of packed bit-field 'b' has changed in GCC 4.4
3652 The warning can be disabled with -Wno-packed-bitfield-compat.
3653 * On ARM EABI targets, the C++ mangling of the va_list type has been
3654 changed to conform to the current revision of the EABI. This does
3655 not affect the libstdc++ library included with GCC.
3656 * The SCOUNT and POS bits of the MIPS DSP control register are now
3657 treated as global. Previous versions of GCC treated these fields as
3658 call-clobbered instead.
3659 * The MIPS port no longer recognizes the h asm constraint. It was
3660 necessary to remove this constraint in order to avoid generating
3661 unpredictable code sequences.
3662 One of the main uses of the h constraint was to extract the high
3663 part of a multiplication on 64-bit targets. For example:
3664 asm ("dmultu\t%1,%2" : "=h" (result) : "r" (x), "r" (y));
3665 You can now achieve the same effect using 128-bit types:
3666 typedef unsigned int uint128_t __attribute__((mode(TI)));
3667 result = ((uint128_t) x * y) >> 64;
3668 The second sequence is better in many ways. For example, if x and y
3669 are constants, the compiler can perform the multiplication at
3670 compile time. If x and y are not constants, the compiler can
3671 schedule the runtime multiplication better than it can schedule an
3673 * Support for a number of older systems and recently unmaintained or
3674 untested target ports of GCC has been declared obsolete in GCC 4.4.
3675 Unless there is activity to revive them, the next release of GCC
3676 will have their sources permanently removed.
3677 The following ports for individual systems on particular
3678 architectures have been obsoleted:
3679 + Generic a.out on IA32 and m68k (i[34567]86-*-aout*,
3681 + Generic COFF on ARM, H8300, IA32, m68k and SH (arm-*-coff*,
3682 armel-*-coff*, h8300-*-*, i[34567]86-*-coff*, m68k-*-coff*,
3683 sh-*-*). This does not affect other more specific targets
3684 using the COFF object format on those architectures, or the
3685 more specific H8300 and SH targets (h8300-*-rtems*,
3686 h8300-*-elf*, sh-*-elf*, sh-*-symbianelf*, sh-*-linux*,
3687 sh-*-netbsdelf*, sh-*-rtems*, sh-wrs-vxworks).
3688 + 2BSD on PDP-11 (pdp11-*-bsd)
3689 + AIX 4.1 and 4.2 on PowerPC (rs6000-ibm-aix4.[12]*,
3690 powerpc-ibm-aix4.[12]*)
3691 + Tuning support for Itanium1 (Merced) variants. Note that code
3692 tuned for Itanium2 should also run correctly on Itanium1.
3693 * The protoize and unprotoize utilities have been obsoleted and will
3694 be removed in GCC 4.5. These utilities have not been installed by
3695 default since GCC 3.0.
3696 * Support has been removed for all the [2]configurations obsoleted in
3698 * Unknown -Wno-* options are now silently ignored by GCC if no other
3699 diagnostics are issued. If other diagnostics are issued, then GCC
3700 warns about the unknown options.
3701 * More information on porting to GCC 4.4 from previous versions of
3702 GCC can be found in the [3]porting guide for this release.
3704 General Optimizer Improvements
3706 * A new command-line switch -findirect-inlining has been added. When
3707 turned on it allows the inliner to also inline indirect calls that
3708 are discovered to have known targets at compile time thanks to
3710 * A new command-line switch -ftree-switch-conversion has been added.
3711 This new pass turns simple initializations of scalar variables in
3712 switch statements into initializations from a static array, given
3713 that all the values are known at compile time and the ratio between
3714 the new array size and the original switch branches does not exceed
3715 the parameter --param switch-conversion-max-branch-ratio (default
3717 * A new command-line switch -ftree-builtin-call-dce has been added.
3718 This optimization eliminates unnecessary calls to certain builtin
3719 functions when the return value is not used, in cases where the
3720 calls can not be eliminated entirely because the function may set
3721 errno. This optimization is on by default at -O2 and above.
3722 * A new command-line switch -fconserve-stack directs the compiler to
3723 minimize stack usage even if it makes the generated code slower.
3724 This affects inlining decisions.
3725 * When the assembler supports it, the compiler will now emit unwind
3726 information using assembler .cfi directives. This makes it possible
3727 to use such directives in inline assembler code. The new option
3728 -fno-dwarf2-cfi-asm directs the compiler to not use .cfi
3730 * The [4]Graphite branch has been merged. This merge has brought in a
3731 new framework for loop optimizations based on a polyhedral
3732 intermediate representation. These optimizations apply to all the
3733 languages supported by GCC. The following new code transformations
3734 are available in GCC 4.4:
3735 + -floop-interchange performs loop interchange transformations
3736 on loops. Interchanging two nested loops switches the inner
3737 and outer loops. For example, given a loop like:
3740 A(J, I) = A(J, I) * C
3744 loop interchange will transform the loop as if the user had
3748 A(J, I) = A(J, I) * C
3752 which can be beneficial when N is larger than the caches,
3753 because in Fortran, the elements of an array are stored in
3754 memory contiguously by column, and the original loop iterates
3755 over rows, potentially creating at each access a cache miss.
3756 + -floop-strip-mine performs loop strip mining transformations
3757 on loops. Strip mining splits a loop into two nested loops.
3758 The outer loop has strides equal to the strip size and the
3759 inner loop has strides of the original loop within a strip.
3760 For example, given a loop like:
3765 loop strip mining will transform the loop as if the user had
3768 DO I = II, min (II + 3, N)
3773 + -floop-block performs loop blocking transformations on loops.
3774 Blocking strip mines each loop in the loop nest such that the
3775 memory accesses of the element loops fit inside caches. For
3776 example, given a loop like:
3779 A(J, I) = B(I) + C(J)
3783 loop blocking will transform the loop as if the user had
3787 DO I = II, min (II + 63, N)
3788 DO J = JJ, min (JJ + 63, M)
3789 A(J, I) = B(I) + C(J)
3795 which can be beneficial when M is larger than the caches,
3796 because the innermost loop will iterate over a smaller amount
3797 of data that can be kept in the caches.
3798 * A new register allocator has replaced the old one. It is called
3799 integrated register allocator (IRA) because coalescing, register
3800 live range splitting, and hard register preferencing are done
3801 on-the-fly during coloring. It also has better integration with the
3802 reload pass. IRA is a regional register allocator which uses modern
3803 Chaitin-Briggs coloring instead of Chow's priority coloring used in
3804 the old register allocator. More info about IRA internals and
3805 options can be found in the GCC manuals.
3806 * A new instruction scheduler and software pipeliner, based on the
3807 selective scheduling approach, has been added. The new pass
3808 performs instruction unification, register renaming, substitution
3809 through register copies, and speculation during scheduling. The
3810 software pipeliner is able to pipeline non-countable loops. The new
3811 pass is targeted at scheduling-eager in-order platforms. In GCC 4.4
3812 it is available for the Intel Itanium platform working by default
3813 as the second scheduling pass (after register allocation) at the
3814 -O3 optimization level.
3815 * When using -fprofile-generate with a multi-threaded program, the
3816 profile counts may be slightly wrong due to race conditions. The
3817 new -fprofile-correction option directs the compiler to apply
3818 heuristics to smooth out the inconsistencies. By default the
3819 compiler will give an error message when it finds an inconsistent
3821 * The new -fprofile-dir=PATH option permits setting the directory
3822 where profile data files are stored when using -fprofile-generate
3823 and friends, and the directory used when reading profile data files
3824 using -fprofile-use and friends.
3828 * The new -Wframe-larger-than=NUMBER option directs GCC to emit a
3829 warning if any stack frame is larger than NUMBER bytes. This may be
3830 used to help ensure that code fits within a limited amount of stack
3832 * The command-line option -Wlarger-than-N is now written as
3833 -Wlarger-than=N and the old form is deprecated.
3834 * The new -Wno-mudflap option disables warnings about constructs
3835 which can not be instrumented when using -fmudflap.
3837 New Languages and Language specific improvements
3839 * Version 3.0 of the [5]OpenMP specification is now supported for the
3840 C, C++, and Fortran compilers.
3841 * New character data types, per [6]TR 19769: New character types in
3842 C, are now supported for the C compiler in -std=gnu99 mode, as
3843 __CHAR16_TYPE__ and __CHAR32_TYPE__, and for the C++ compiler in
3844 -std=c++0x and -std=gnu++0x modes, as char16_t and char32_t too.
3848 * A new optimize attribute was added to allow programmers to change
3849 the optimization level and particular optimization options for an
3850 individual function. You can also change the optimization options
3851 via the GCC optimize pragma for functions defined after the pragma.
3852 The GCC push_options pragma and the GCC pop_options pragma allow
3853 you temporarily save and restore the options used. The GCC
3854 reset_options pragma restores the options to what was specified on
3856 * Uninitialized warnings do not require enabling optimization
3857 anymore, that is, -Wuninitialized can be used together with -O0.
3858 Nonetheless, the warnings given by -Wuninitialized will probably be
3859 more accurate if optimization is enabled.
3860 * -Wparentheses now warns about expressions such as (!x | y) and (!x
3861 & y). Using explicit parentheses, such as in ((!x) | y), silences
3863 * -Wsequence-point now warns within if, while,do while and for
3864 conditions, and within for begin/end expressions.
3865 * A new option -dU is available to dump definitions of preprocessor
3866 macros that are tested or expanded.
3870 * [7]Improved experimental support for the upcoming ISO C++ standard,
3871 C++0x. Including support for auto, inline namespaces, generalized
3872 initializer lists, defaulted and deleted functions, new character
3873 types, and scoped enums.
3874 * Those errors that may be downgraded to warnings to build legacy
3875 code now mention -fpermissive when -fdiagnostics-show-option is
3877 * -Wconversion now warns if the result of a static_cast to enumeral
3878 type is unspecified because the value is outside the range of the
3880 * -Wuninitialized now warns if a non-static reference or non-static
3881 const member appears in a class without constructors.
3882 * G++ now properly implements value-initialization, so objects with
3883 an initializer of () and an implicitly defined default constructor
3884 will be zero-initialized before the default constructor is called.
3886 Runtime Library (libstdc++)
3888 * [8]Improved experimental support for the upcoming ISO C++ standard,
3890 + Support for <chrono>, <condition_variable>, <cstdatomic>,
3891 <forward_list>, <initializer_list>, <mutex>, <ratio>,
3892 <system_error>, and <thread>.
3893 + unique_ptr, <algorithm> additions, exception propagation, and
3894 support for the new character types in <string> and <limits>.
3895 + Existing facilities now exploit initializer lists, defaulted
3896 and deleted functions, and the newly implemented core C++0x
3898 + Some standard containers are more efficient together with
3899 stateful allocators, i.e., no allocator is constructed on the
3900 fly at element construction time.
3901 * Experimental support for non-standard pointer types in containers.
3902 * The long standing libstdc++/30928 has been fixed for targets
3903 running glibc 2.10 or later.
3904 * As usual, many small and larger bug fixes, in particular quite a
3905 few corner cases in <locale>.
3909 * GNU Fortran now employs libcpp directly instead of using cc1 as an
3910 external preprocessor. The [9]-cpp option was added to allow manual
3911 invocation of the preprocessor without relying on filename
3913 * The [10]-Warray-temporaries option warns about array temporaries
3914 generated by the compiler, as an aid to optimization.
3915 * The [11]-fcheck-array-temporaries option has been added, printing a
3916 notification at run time, when an array temporary had to be created
3917 for an function argument. Contrary to -Warray-temporaries the
3918 warning is only printed if the array is noncontiguous.
3919 * Improved generation of DWARF debugging symbols
3920 * If using an intrinsic not part of the selected standard (via -std=
3921 and -fall-intrinsics) gfortran will now treat it as if this
3922 procedure were declared EXTERNAL and try to link to a user-supplied
3923 procedure. -Wintrinsics-std will warn whenever this happens. The
3924 now-useless option -Wnonstd-intrinsic was removed.
3925 * The flag -falign-commons has been added to control the alignment of
3926 variables in COMMON blocks, which is enabled by default in line
3927 with previous GCC version. Using -fno-align-commons one can force
3928 commons to be contiguous in memory as required by the Fortran
3929 standard, however, this slows down the memory access. The option
3930 -Walign-commons, which is enabled by default, warns when padding
3931 bytes were added for alignment. The proper solution is to sort the
3932 common objects by decreasing storage size, which avoids the
3934 * Fortran 2003 support has been extended:
3935 + Wide characters (ISO 10646, UCS-4, kind=4) and UTF-8 I/O is
3936 now supported (except internal reads from/writes to wide
3937 strings). [12]-fbackslash now supports also \unnnn and
3938 \Unnnnnnnn to enter Unicode characters.
3939 + Asynchronous I/O (implemented as synchronous I/O) and the
3940 decimal=, size=, sign=, pad=, blank=, and delim= specifiers
3941 are now supported in I/O statements.
3942 + Support for Fortran 2003 structure constructors and for array
3943 constructor with typespec has been added.
3944 + Procedure Pointers (but not yet as component in derived types
3945 and as function results) are now supported.
3946 + Abstract types, type extension, and type-bound procedures
3947 (both PROCEDURE and GENERIC but not as operators). Note: As
3948 CLASS/polymorphyic types are not implemented, type-bound
3949 procedures with PASS accept as non-standard extension TYPE
3951 * Fortran 2008 support has been added:
3952 + The -std=f2008 option and support for the file extensions
3953 .f2008 and .F2008 has been added.
3954 + The g0 format descriptor is now supported.
3955 + The Fortran 2008 mathematical intrinsics ASINH, ACOSH, ATANH,
3956 ERF, ERFC, GAMMA, LOG_GAMMA, BESSEL_*, HYPOT, and ERFC_SCALED
3957 are now available (some of them existed as GNU extension
3958 before). Note: The hyperbolic functions are not yet supporting
3959 complex arguments and the three- argument version of BESSEL_*N
3961 + The bit intrinsics LEADZ and TRAILZ have been added.
3967 * The Ada runtime now supports multilibs on many platforms including
3968 x86_64, SPARC and PowerPC. Their build is enabled by default.
3970 New Targets and Target Specific Improvements
3974 * GCC now supports optimizing for the Cortex-A9, Cortex-R4 and
3975 Cortex-R4F processors and has many other improvements to
3976 optimization for ARM processors.
3977 * GCC now supports the VFPv3 variant with 16 double-precision
3978 registers with -mfpu=vfpv3-d16. The option -mfpu=vfp3 has been
3979 renamed to -mfpu=vfpv3.
3980 * GCC now supports the -mfix-cortex-m3-ldrd option to work around an
3981 erratum on Cortex-M3 processors.
3982 * GCC now supports the __sync_* atomic operations for ARM EABI
3984 * The section anchors optimization is now enabled by default when
3986 * GCC now uses a new EABI-compatible profiling interface for EABI
3987 targets. This requires a function __gnu_mcount_nc, which is
3988 provided by GNU libc versions 2.8 and later.
3992 * The -mno-tablejump option has been deprecated because it has the
3993 same effect as the -fno-jump-tables option.
3994 * Added support for these new AVR devices:
4023 * Support for Intel AES built-in functions and code generation is
4024 available via -maes.
4025 * Support for Intel PCLMUL built-in function and code generation is
4026 available via -mpclmul.
4027 * Support for Intel AVX built-in functions and code generation is
4028 available via -mavx.
4029 * Automatically align the stack for local variables with alignment
4031 * GCC can now utilize the SVML library for vectorizing calls to a set
4032 of C99 functions if -mveclibabi=svml is specified and you link to
4033 an SVML ABI compatible library.
4034 * On x86-64, the ABI has been changed in the following cases to
4035 conform to the x86-64 ABI:
4036 + Passing/returning structures with flexible array member:
4042 + Passing/returning structures with complex float member:
4046 __complex__ float f;
4048 + Passing/returning unions with long double member:
4054 Code built with previous versions of GCC that uses any of these is
4055 not compatible with code built with GCC 4.4.0 or later.
4056 * A new target attribute was added to allow programmers to change the
4057 target options like -msse2 or -march=k8 for an individual function.
4058 You can also change the target options via the GCC target pragma
4059 for functions defined after the pragma.
4060 * GCC can now be configured with options --with-arch-32,
4061 --with-arch-64, --with-cpu-32, --with-cpu-64, --with-tune-32 and
4062 --with-tune-64 to control the default optimization separately for
4063 32-bit and 64-bit modes.
4067 * Support for __float128 (TFmode) IEEE quad type and corresponding
4068 TCmode IEEE complex quad type is available via the soft-fp library
4069 on IA-32/IA64 targets. This includes basic arithmetic operations
4070 (addition, subtraction, negation, multiplication and division) on
4071 __float128 real and TCmode complex values, the full set of IEEE
4072 comparisons between __float128 values, conversions to and from
4073 float, double and long double floating point types, as well as
4074 conversions to and from signed or unsigned integer, signed or
4075 unsigned long integer and signed or unsigned quad (TImode, IA64
4076 only) integer types. Additionally, all operations generate the full
4077 set of IEEE exceptions and support the full set of IEEE rounding
4082 * GCC now supports instruction scheduling for ColdFire V1, V3 and V4
4083 processors. (Scheduling support for ColdFire V2 processors was
4085 * GCC now supports the -mxgot option to support programs requiring
4086 many GOT entries on ColdFire.
4087 * The m68k-*-linux-gnu target now builds multilibs by default.
4091 * MIPS Technologies have extended the original MIPS SVR4 ABI to
4092 include support for procedure linkage tables (PLTs) and copy
4093 relocations. These extensions allow GNU/Linux executables to use a
4094 significantly more efficient code model than the one defined by the
4096 GCC support for this code model is available via a new command-line
4097 option, -mplt. There is also a new configure-time option,
4098 --with-mips-plt, to make -mplt the default.
4099 The new code model requires support from the assembler, the linker,
4100 and the runtime C library. This support is available in binutils
4102 * GCC can now generate MIPS16 code for 32-bit GNU/Linux executables
4103 and 32-bit GNU/Linux shared libraries. This feature requires GNU
4104 binutils 2.19 or above.
4105 * Support for RMI's XLR processor is now available through the
4106 -march=xlr and -mtune=xlr options.
4107 * 64-bit targets can now perform 128-bit multiplications inline,
4108 instead of relying on a libgcc function.
4109 * Native GNU/Linux toolchains now support -march=native and
4110 -mtune=native, which select the host processor.
4111 * GCC now supports the R10K, R12K, R14K and R16K processors. The
4112 canonical -march= and -mtune= names for these processors are
4113 r10000, r12000, r14000 and r16000 respectively.
4114 * GCC can now work around the side effects of speculative execution
4115 on R10K processors. Please see the documentation of the
4116 -mr10k-cache-barrier option for details.
4117 * Support for the MIPS64 Release 2 instruction set has been added.
4118 The option -march=mips64r2 enables generation of these
4120 * GCC now supports Cavium Networks' Octeon processor. This support is
4121 available through the -march=octeon and -mtune=octeon options.
4122 * GCC now supports STMicroelectronics' Loongson 2E/2F processors. The
4123 canonical -march= and -mtune= names for these processors are
4124 loongson2e and loongson2f.
4128 Picochip is a 16-bit processor. A typical picoChip contains over 250
4129 small cores, each with small amounts of memory. There are three
4130 processor variants (STAN, MEM and CTRL) with different instruction sets
4131 and memory configurations and they can be chosen using the -mae option.
4133 This port is intended to be a "C" only port.
4135 Power Architecture and PowerPC
4137 * GCC now supports the e300c2, e300c3 and e500mc processors.
4138 * GCC now supports Xilinx processors with a single-precision FPU.
4139 * Decimal floating point is now supported for e500 processors.
4141 S/390, zSeries and System z9/z10
4143 * Support for the IBM System z10 EC/BC processor has been added. When
4144 using the -march=z10 option, the compiler will generate code making
4145 use of instructions provided by the General-Instruction-Extension
4146 Facility and the Execute-Extension Facility.
4150 * GCC now supports the thread-local storage mechanism used on
4155 * GCC now supports thread-local storage (TLS) for Xtensa processor
4156 configurations that include the Thread Pointer option. TLS also
4157 requires support from the assembler and linker; this support is
4158 provided in the GNU binutils beginning with version 2.19.
4160 Documentation improvements
4162 Other significant improvements
4166 This is the [13]list of problem reports (PRs) from GCC's bug tracking
4167 system that are known to be fixed in the 4.4.1 release. This list might
4168 not be complete (that is, it is possible that some PRs that have been
4169 fixed are not listed here).
4173 This is the [14]list of problem reports (PRs) from GCC's bug tracking
4174 system that are known to be fixed in the 4.4.2 release. This list might
4175 not be complete (that is, it is possible that some PRs that have been
4176 fixed are not listed here).
4180 This is the [15]list of problem reports (PRs) from GCC's bug tracking
4181 system that are known to be fixed in the 4.4.3 release. This list might
4182 not be complete (that is, it is possible that some PRs that have been
4183 fixed are not listed here).
4187 This is the [16]list of problem reports (PRs) from GCC's bug tracking
4188 system that are known to be fixed in the 4.4.4 release. This list might
4189 not be complete (that is, it is possible that some PRs that have been
4190 fixed are not listed here).
4194 This is the [17]list of problem reports (PRs) from GCC's bug tracking
4195 system that are known to be fixed in the 4.4.5 release. This list might
4196 not be complete (that is, it is possible that some PRs that have been
4197 fixed are not listed here).
4201 This is the [18]list of problem reports (PRs) from GCC's bug tracking
4202 system that are known to be fixed in the 4.4.6 release. This list might
4203 not be complete (that is, it is possible that some PRs that have been
4204 fixed are not listed here).
4208 This is the [19]list of problem reports (PRs) from GCC's bug tracking
4209 system that are known to be fixed in the 4.4.7 release. This list might
4210 not be complete (that is, it is possible that some PRs that have been
4211 fixed are not listed here).
4214 For questions related to the use of GCC, please consult these web
4215 pages and the [20]GCC manuals. If that fails, the
4216 [21]gcc-help@gcc.gnu.org mailing list might help. Comments on these
4217 web pages and the development of GCC are welcome on our developer
4218 list at [22]gcc@gcc.gnu.org. All of [23]our lists have public
4221 Copyright (C) [24]Free Software Foundation, Inc. Verbatim copying and
4222 distribution of this entire article is permitted in any medium,
4223 provided this notice is preserved.
4225 These pages are [25]maintained by the GCC team. Last modified
4230 1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.7
4231 2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted
4232 3. http://gcc.gnu.org/gcc-4.4/porting_to.html
4233 4. http://gcc.gnu.org/wiki/Graphite
4234 5. http://openmp.org/wp/openmp-specifications/
4235 6. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf
4236 7. http://gcc.gnu.org/gcc-4.4/cxx0x_status.html
4237 8. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#id476343
4238 9. http://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html
4239 10. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWarray-temporaries_007d-125
4240 11. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcheck-array-temporaries_007d-221
4241 12. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bbackslash_007d-34
4242 13. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.1
4243 14. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.2
4244 15. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.3
4245 16. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.4
4246 17. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.5
4247 18. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.6
4248 19. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.7
4249 20. http://gcc.gnu.org/onlinedocs/
4250 21. mailto:gcc-help@gcc.gnu.org
4251 22. mailto:gcc@gcc.gnu.org
4252 23. http://gcc.gnu.org/lists.html
4253 24. http://www.fsf.org/
4254 25. http://gcc.gnu.org/about.html
4255 26. http://validator.w3.org/check/referer
4256 ======================================================================
4257 http://gcc.gnu.org/gcc-4.3/index.html
4258 GCC 4.3 Release Series
4262 The [1]GNU project and the GCC developers are pleased to announce the
4263 release of GCC 4.3.6.
4265 This release is a bug-fix release, containing fixes for regressions in
4266 GCC 4.3.5 relative to previous releases of GCC.
4271 Jun 27, 2011 ([2]changes)
4274 May 22, 2010 ([3]changes)
4277 August 4, 2009 ([4]changes)
4280 January 24, 2009 ([5]changes)
4283 August 27, 2008 ([6]changes)
4286 June 6, 2008 ([7]changes)
4289 March 5, 2008 ([8]changes)
4291 References and Acknowledgements
4293 GCC used to stand for the GNU C Compiler, but since the compiler
4294 supports several other languages aside from C, it now stands for the
4295 GNU Compiler Collection.
4297 A list of [9]successful builds is updated as new information becomes
4300 The GCC developers would like to thank the numerous people that have
4301 contributed new features, improvements, bug fixes, and other changes as
4302 well as test results to GCC. This [10]amazing group of volunteers is
4303 what makes GCC successful.
4305 For additional information about GCC please refer to the [11]GCC
4306 project web site or contact the [12]GCC development mailing list.
4308 To obtain GCC please use [13]our mirror sites or [14]our SVN server.
4311 For questions related to the use of GCC, please consult these web
4312 pages and the [15]GCC manuals. If that fails, the
4313 [16]gcc-help@gcc.gnu.org mailing list might help. Comments on these
4314 web pages and the development of GCC are welcome on our developer
4315 list at [17]gcc@gcc.gnu.org. All of [18]our lists have public
4318 Copyright (C) [19]Free Software Foundation, Inc. Verbatim copying and
4319 distribution of this entire article is permitted in any medium,
4320 provided this notice is preserved.
4322 These pages are [20]maintained by the GCC team. Last modified
4327 1. http://www.gnu.org/
4328 2. http://gcc.gnu.org/gcc-4.3/changes.html
4329 3. http://gcc.gnu.org/gcc-4.3/changes.html
4330 4. http://gcc.gnu.org/gcc-4.3/changes.html
4331 5. http://gcc.gnu.org/gcc-4.3/changes.html
4332 6. http://gcc.gnu.org/gcc-4.3/changes.html
4333 7. http://gcc.gnu.org/gcc-4.3/changes.html
4334 8. http://gcc.gnu.org/gcc-4.3/changes.html
4335 9. http://gcc.gnu.org/gcc-4.3/buildstat.html
4336 10. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
4337 11. http://gcc.gnu.org/index.html
4338 12. mailto:gcc@gcc.gnu.org
4339 13. http://gcc.gnu.org/mirrors.html
4340 14. http://gcc.gnu.org/svn.html
4341 15. http://gcc.gnu.org/onlinedocs/
4342 16. mailto:gcc-help@gcc.gnu.org
4343 17. mailto:gcc@gcc.gnu.org
4344 18. http://gcc.gnu.org/lists.html
4345 19. http://www.fsf.org/
4346 20. http://gcc.gnu.org/about.html
4347 21. http://validator.w3.org/check/referer
4348 ======================================================================
4349 http://gcc.gnu.org/gcc-4.3/changes.html
4350 GCC 4.3 Release Series
4351 Changes, New Features, and Fixes
4353 The latest release in the 4.3 release series is [1]GCC 4.3.5.
4357 * GCC requires the [2]GMP and [3]MPFR libraries for building all the
4358 various front-end languages it supports. See the [4]prerequisites
4359 page for version requirements.
4360 * ColdFire targets now treat long double as having the same format as
4361 double. In earlier versions of GCC, they used the 68881 long double
4363 * The m68k-uclinux target now uses the same calling conventions as
4364 m68k-linux-gnu. You can select the original calling conventions by
4365 configuring for m68k-uclinuxoldabi instead. Note that
4366 m68k-uclinuxoldabi also retains the original 80-bit long double on
4368 * The -fforce-mem option has been removed because it has had no
4369 effect in the last few GCC releases.
4370 * The i386 -msvr3-shlib option has been removed since it is no longer
4372 * Fastcall for i386 has been changed not to pass aggregate arguments
4373 in registers, following Microsoft compilers.
4374 * Support for the AOF assembler has been removed from the ARM back
4375 end; this affects only the targets arm-semi-aof and armel-semi-aof,
4376 which are no longer recognized. We removed these targets without a
4377 deprecation period because we discovered that they have been
4378 unusable since GCC 4.0.0.
4379 * Support for the TMS320C3x/C4x processor (targets c4x-* and tic4x-*)
4380 has been removed. This support had been deprecated since GCC 4.0.0.
4381 * Support for a number of older systems and recently unmaintained or
4382 untested target ports of GCC has been declared obsolete in GCC 4.3.
4383 Unless there is activity to revive them, the next release of GCC
4384 will have their sources permanently removed.
4385 All GCC ports for the following processor architectures have been
4388 The following aliases for processor architectures have been
4389 declared obsolete. Users should use the indicated generic target
4390 names instead, with compile-time options such as -mcpu or
4391 configure-time options such as --with-cpu to control the
4392 configuration more precisely.
4393 + strongarm*-*-*, ep9312*-*-*, xscale*-*-* (use arm*-*-*
4395 + parisc*-*-* (use hppa*-*-* instead).
4396 + m680[012]0-*-* (use m68k-*-* instead).
4397 All GCC ports for the following operating systems have been
4401 + GNU/Linux using the a.out object format (*-*-linux*aout*)
4402 + GNU/Linux using version 1 of the GNU C Library
4404 + Solaris versions before Solaris 7 (*-*-solaris2.[0-6],
4405 *-*-solaris2.[0-6].*)
4406 + Miscellaneous System V (*-*-sysv*)
4407 + WindISS (*-*-windiss*)
4408 Also, those for some individual systems on particular architectures
4409 have been obsoleted:
4410 + UNICOS/mk on DEC Alpha (alpha*-*-unicosmk*)
4411 + CRIS with a.out object format (cris-*-aout)
4412 + BSD 4.3 on PA-RISC (hppa1.1-*-bsd*)
4413 + OSF/1 on PA-RISC (hppa1.1-*-osf*)
4414 + PRO on PA-RISC (hppa1.1-*-pro*)
4415 + Sequent PTX on IA32 (i[34567]86-sequent-ptx4*,
4416 i[34567]86-sequent-sysv4*)
4417 + SCO Open Server 5 on IA32 (i[34567]86-*-sco3.2v5*)
4418 + UWIN on IA32 (i[34567]86-*-uwin*) (support for UWIN as a host
4419 was previously [5]removed in 2001, leaving only the support
4420 for UWIN as a target now being deprecated)
4421 + ChorusOS on PowerPC (powerpc-*-chorusos*)
4422 + All VAX configurations apart from NetBSD and OpenBSD
4423 (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*)
4424 * The [6]-Wconversion option has been modified. Its purpose now is to
4425 warn for implicit conversions that may alter a value. This new
4426 behavior is available for both C and C++. Warnings about
4427 conversions between signed and unsigned integers can be disabled by
4428 using -Wno-sign-conversion. In C++, they are disabled by default
4429 unless -Wsign-conversion is explicitly requested. The old behavior
4430 of -Wconversion, that is, warn for prototypes causing a type
4431 conversion that is different from what would happen to the same
4432 argument in the absence of a prototype, has been moved to a new
4433 option -Wtraditional-conversion, which is only available for C.
4434 * The -m386, -m486, -mpentium and -mpentiumpro tuning options have
4435 been removed because they were deprecated for more than 3 GCC major
4436 releases. Use -mtune=i386, -mtune=i486, -mtune=pentium or
4437 -mtune=pentiumpro as a replacement.
4438 * The -funsafe-math-optimizations option now automatically turns on
4439 -fno-trapping-math in addition to -fno-signed-zeros, as it enables
4440 reassociation and thus may introduce or remove traps.
4441 * The -ftree-vectorize option is now on by default under -O3. In
4442 order to generate code for a SIMD extension, it has to be enabled
4443 as well: use -maltivec for PowerPC platforms and -msse/-msse2 for
4445 * More information on porting to GCC 4.3 from previous versions of
4446 GCC can be found in the [7]porting guide for this release.
4448 General Optimizer Improvements
4450 * The GCC middle-end has been integrated with the [8]MPFR library.
4451 This allows GCC to evaluate and replace at compile-time calls to
4452 built-in math functions having constant arguments with their
4453 mathematically equivalent results. In making use of [9]MPFR, GCC
4454 can generate correct results regardless of the math library
4455 implementation or floating point precision of the host platform.
4456 This also allows GCC to generate identical results regardless of
4457 whether one compiles in native or cross-compile configurations to a
4458 particular target. The following built-in functions take advantage
4459 of this new capability: acos, acosh, asin, asinh, atan2, atan,
4460 atanh, cbrt, cos, cosh, drem, erf, erfc, exp10, exp2, exp, expm1,
4461 fdim, fma, fmax, fmin, gamma_r, hypot, j0, j1, jn, lgamma_r, log10,
4462 log1p, log2, log, pow10, pow, remainder, remquo, sin, sincos, sinh,
4463 tan, tanh, tgamma, y0, y1 and yn. The float and long double
4464 variants of these functions (e.g. sinf and sinl) are also handled.
4465 The sqrt and cabs functions with constant arguments were already
4466 optimized in prior GCC releases. Now they also use [10]MPFR.
4467 * A new forward propagation pass on RTL was added. The new pass
4468 replaces several slower transformations, resulting in compile-time
4469 improvements as well as better code generation in some cases.
4470 * A new command-line switch -frecord-gcc-switches has been added to
4471 GCC, although it is only enabled for some targets. The switch
4472 causes the command line that was used to invoke the compiler to be
4473 recorded into the object file that is being created. The exact
4474 format of this recording is target and binary file format
4475 dependent, but it usually takes the form of a note section
4476 containing ASCII text. The switch is related to the -fverbose-asm
4477 switch, but that one only records the information in the assembler
4478 output file as comments, so the information never reaches the
4480 * The inliner heuristic is now aware of stack frame consumption. New
4481 command-line parameters --param large-stack-frame and --param
4482 large-stack-frame-growth can be used to limit stack frame size
4483 growth caused by inlining.
4484 * During feedback directed optimizations, the expected block size the
4485 memcpy, memset and bzero functions operate on is discovered and for
4486 cases of commonly used small sizes, specialized inline code is
4488 * __builtin_expect no longer requires its argument to be a compile
4490 * Interprocedural optimization was reorganized to work on functions
4491 in SSA form. This enables more precise and cheaper dataflow
4492 analysis and makes writing interprocedural optimizations easier.
4493 The following improvements have been implemented on top of this
4495 + Pre-inline optimization: Selected local optimization passes
4496 are run before the inliner (and other interprocedural passes)
4497 are executed. This significantly improves the accuracy of code
4498 growth estimates used by the inliner and reduces the overall
4499 memory footprint for large compilation units.
4500 + Early inlining (a simple bottom-up inliner pass inlining only
4501 functions whose body is smaller than the expected call
4502 overhead) is now executed with the early optimization passes,
4503 thus inlining already optimized function bodies into an
4504 unoptimized function that is subsequently optimized by early
4505 optimizers. This enables the compiler to quickly eliminate
4506 abstraction penalty in C++ programs.
4507 + Interprocedural constant propagation now operate on SSA form
4508 increasing accuracy of the analysis.
4509 * A new internal representation for GIMPLE statements has been
4510 contributed, resulting in compile-time memory savings.
4511 * The vectorizer was enhanced to support vectorization of outer
4512 loops, intra-iteration parallelism (loop-aware SLP), vectorization
4513 of strided accesses and loops with multiple data-types. Run-time
4514 dependency testing using loop versioning was added. The cost model,
4515 turned on by -fvect-cost-model, was developed.
4517 New Languages and Language specific improvements
4519 * We have added new command-line options
4520 -finstrument-functions-exclude-function-list and
4521 -finstrument-functions-exclude-file-list. They provide more control
4522 over which functions are annotated by the -finstrument-functions
4527 * Implicit conversions between generic vector types are now only
4528 permitted when the two vectors in question have the same number of
4529 elements and compatible element types. (Note that the restriction
4530 involves compatible element types, not implicitly-convertible
4531 element types: thus, a vector type with element type int may not be
4532 implicitly converted to a vector type with element type unsigned
4533 int.) This restriction, which is in line with specifications for
4534 SIMD architectures such as AltiVec, may be relaxed using the flag
4535 -flax-vector-conversions. This flag is intended only as a
4536 compatibility measure and should not be used for new code.
4537 * -Warray-bounds has been added and is now enabled by default for
4538 -Wall . It produces warnings for array subscripts that can be
4539 determined at compile time to be always out of bounds.
4540 -Wno-array-bounds will disable the warning.
4541 * The constructor and destructor function attributes now accept
4542 optional priority arguments which control the order in which the
4543 constructor and destructor functions are run.
4544 * New [11]command-line options -Wtype-limits,
4545 -Wold-style-declaration, -Wmissing-parameter-type, -Wempty-body,
4546 -Wclobbered and -Wignored-qualifiers have been added for finer
4547 control of the diverse warnings enabled by -Wextra.
4548 * A new function attribute alloc_size has been added to mark up
4549 malloc style functions. For constant sized allocations this can be
4550 used to find out the size of the returned pointer using the
4551 __builtin_object_size() function for buffer overflow checking and
4552 similar. This supplements the already built-in malloc and calloc
4553 constant size handling.
4554 * Integer constants written in binary are now supported as a GCC
4555 extension. They consist of a prefix 0b or 0B, followed by a
4556 sequence of 0 and 1 digits.
4557 * A new predefined macro __COUNTER__ has been added. It expands to
4558 sequential integral values starting from 0. In conjunction with the
4559 ## operator, this provides a convenient means to generate unique
4561 * A new command-line option -fdirectives-only has been added. It
4562 enables a special preprocessing mode which improves the performance
4563 of applications like distcc and ccache.
4564 * Fixed-point data types and operators have been added. They are
4565 based on Chapter 4 of the Embedded-C specification (n1169.pdf).
4566 Currently, only MIPS targets are supported.
4567 * Decimal floating-point arithmetic based on draft ISO/IEC TR 24732,
4568 N1241, is now supported as a GCC extension to C for targets
4569 i[34567]86-*-linux-gnu, powerpc*-*-linux-gnu, s390*-ibm-linux-gnu,
4570 and x86_64-*-linux-gnu. The feature introduces new data types
4571 _Decimal32, _Decimal64, and _Decimal128 with constant suffixes DF,
4576 * [12]Experimental support for the upcoming ISO C++ standard, C++0x.
4577 * -Wc++0x-compat has been added and is now enabled by default for
4578 -Wall. It produces warnings for constructs whose meaning differs
4579 between ISO C++ 1998 and C++0x.
4580 * The -Wparentheses option now works for C++ as it does for C. It
4581 warns if parentheses are omitted when operators with confusing
4582 precedence are nested. It also warns about ambiguous else
4583 statements. Since -Wparentheses is enabled by -Wall, this may cause
4584 additional warnings with existing C++ code which uses -Wall. These
4585 new warnings may be disabled by using -Wall -Wno-parentheses.
4586 * The -Wmissing-declarations now works for C++ as it does for C.
4587 * The -fvisibility-ms-compat flag was added, to make it easier to
4588 port larger projects using shared libraries from Microsoft's Visual
4589 Studio to ELF and Mach-O systems.
4590 * C++ attribute handling has been overhauled for template arguments
4591 (ie dependent types). In particular, __attribute__((aligned(T)));
4592 works for C++ types.
4594 Runtime Library (libstdc++)
4596 * [13]Experimental support for the upcoming ISO C++ standard, C++0x.
4597 * Support for TR1 mathematical special functions and regular
4598 expressions. ([14]Implementation status of TR1)
4599 * Default what implementations give more elaborate exception strings
4600 for bad_cast, bad_typeid, bad_exception, and bad_alloc.
4601 * Header dependencies have been streamlined, reducing unnecessary
4602 includes and pre-processed bloat.
4603 * Variadic template implementations of items in <tuple> and
4605 * An experimental [15]parallel mode has been added. This is a
4606 parallel implementation of many C++ Standard library algorithms,
4607 like std::accumulate, std::for_each, std::transform, or std::sort,
4608 to give but four examples. These algorithms can be substituted for
4609 the normal (sequential) libstdc++ algorithms on a piecemeal basis,
4610 or all existing algorithms can be transformed via the
4611 -D_GLIBCXX_PARALLEL macro.
4612 * Debug mode versions of classes in <unordered_set> and
4614 * Formal deprecation of <ext/hash_set> and <ext/hash_map>, which are
4615 now <backward/hash_set> and <backward/hash_map>. This code:
4616 #include <ext/hash_set>
4617 __gnu_cxx::hash_set<int> s;
4619 Can be transformed (in order of preference) to:
4620 #include <tr1/unordered_set>
4621 std::tr1::unordered_set<int> s;
4624 #include <backward/hash_set>
4625 __gnu_cxx::hash_set<int> s;
4627 Similar transformations apply to __gnu_cxx::hash_map,
4628 __gnu_cxx::hash_multimap, __gnu_cxx::hash_set,
4629 __gnu_cxx::hash_multiset.
4633 * Due to the fact that the [16]GMP and [17]MPFR libraries are
4634 required for all languages, Fortran is no longer special in this
4635 regard and is available by default.
4636 * The [18]-fexternal-blas option has been added, which generates
4637 calls to BLAS routines for intrinsic matrix operations such as
4638 matmul rather than using the built-in algorithms.
4639 * Support to give a backtrace (compiler flag -fbacktrace or
4640 environment variable GFORTRAN_ERROR_BACKTRACE; on glibc systems
4641 only) or a core dump (-fdump-core, GFORTRAN_ERROR_DUMPCORE) when a
4642 run-time error occured.
4643 * GNU Fortran now defines __GFORTRAN__ when it runs the C
4645 * The [19]-finit-local-zero, -finit-real, -finit-integer,
4646 -finit-character, and -finit-logical options have been added, which
4647 can be used to initialize local variables.
4648 * The intrinsic procedures [20]GAMMA and [21]LGAMMA have been added,
4649 which calculate the Gamma function and its logarithm. Use EXTERNAL
4650 gamma if you want to use your own gamma function.
4651 * GNU Fortran now regards the backslash character as literal (as
4652 required by the Fortran 2003 standard); using [22]-fbackslash GNU
4653 Fortran interprets backslashes as C-style escape characters.
4654 * The [23]interpretation of binary, octal and hexadecimal (BOZ)
4655 literal constants has been changed. Before they were always
4656 interpreted as integer; now they are bit-wise transferred as
4657 argument of INT, REAL, DBLE and CMPLX as required by the Fortran
4658 2003 standard, and for real and complex variables in DATA
4659 statements or when directly assigned to real and complex variables.
4660 Everywhere else and especially in expressions they are still
4661 regarded as integer constants.
4662 * Fortran 2003 support has been extended:
4663 + Intrinsic statements IMPORT, PROTECTED, VALUE and VOLATILE
4665 + Intrinsic module ISO_ENV_FORTRAN
4666 + Interoperability with C (ISO C Bindings)
4667 + ABSTRACT INTERFACES and PROCEDURE statements (without POINTER
4673 * GCJ now uses the Eclipse Java compiler for its Java parsing needs.
4674 This enables the use of all 1.5 language features, and fixes most
4675 existing front end bugs.
4676 * libgcj now supports all 1.5 language features which require runtime
4677 support: foreach, enum, annotations, generics, and auto-boxing.
4678 * We've made many changes to the tools shipped with gcj.
4679 + The old jv-scan tool has been removed. This tool never really
4680 worked properly. There is no replacement.
4681 + gcjh has been rewritten. Some of its more obscure options no
4682 longer work, but are still recognized in an attempt at
4683 compatibility. gjavah is a new program with similar
4684 functionality but different command-line options.
4685 + grmic and grmiregistry have been rewritten. grmid has been
4687 + gjar replaces the old fastjar.
4688 + gjarsigner (used for signing jars), gkeytool (used for key
4689 management), gorbd (for CORBA), gserialver (computes
4690 serialization UIDs), and gtnameserv (also for CORBA) are now
4692 * The ability to dump the contents of the java run time heap to a
4693 file for off-line analysis has been added. The heap dumps may be
4694 analyzed with the new gc-analyze tool. They may be generated on
4695 out-of-memory conditions or on demand and are controlled by the new
4696 run time class gnu.gcj.util.GCInfo.
4697 * java.util.TimeZone can now read files from /usr/share/zoneinfo to
4698 provide correct, updated, timezone information. This means that
4699 packagers no longer have to update libgcj when a time zone change
4702 New Targets and Target Specific Improvements
4706 * Tuning for Intel Core 2 processors is available via -mtune=core2
4708 * Tuning for AMD Geode processors is available via -mtune=geode and
4710 * Code generation of block move (memcpy) and block set (memset) was
4711 rewritten. GCC can now pick the best algorithm (loop, unrolled
4712 loop, instruction with rep prefix or a library call) based on the
4713 size of the block being copied and the CPU being optimized for. A
4714 new option -minline-stringops-dynamically has been added. With this
4715 option string operations of unknown size are expanded such that
4716 small blocks are copied by in-line code, while for large blocks a
4717 library call is used. This results in faster code than
4718 -minline-all-stringops when the library implementation is capable
4719 of using cache hierarchy hints. The heuristic choosing the
4720 particular algorithm can be overwritten via -mstringop-strategy.
4721 Newly also memset of values different from 0 is inlined.
4722 * GCC no longer places the cld instruction before string operations.
4723 Both i386 and x86-64 ABI documents mandate the direction flag to be
4724 clear at the entry of a function. It is now invalid to set the flag
4725 in asm statement without reseting it afterward.
4726 * Support for SSSE3 built-in functions and code generation are
4727 available via -mssse3.
4728 * Support for SSE4.1 built-in functions and code generation are
4729 available via -msse4.1.
4730 * Support for SSE4.2 built-in functions and code generation are
4731 available via -msse4.2.
4732 * Both SSE4.1 and SSE4.2 support can be enabled via -msse4.
4733 * A new set of options -mpc32, -mpc64 and -mpc80 have been added to
4734 allow explicit control of x87 floating point precision.
4735 * Support for __float128 (TFmode) IEEE quad type and corresponding
4736 TCmode IEEE complex quad type is available via the soft-fp library
4737 on x86_64 targets. This includes basic arithmetic operations
4738 (addition, subtraction, negation, multiplication and division) on
4739 __float128 real and TCmode complex values, the full set of IEEE
4740 comparisons between __float128 values, conversions to and from
4741 float, double and long double floating point types, as well as
4742 conversions to and from signed or unsigned integer, signed or
4743 unsigned long integer and signed or unsigned quad (TImode) integer
4744 types. Additionally, all operations generate the full set of IEEE
4745 exceptions and support the full set of IEEE rounding modes.
4746 * GCC can now utilize the ACML library for vectorizing calls to a set
4747 of C99 functions on x86_64 if -mveclibabi=acml is specified and you
4748 link to an ACML ABI compatible library.
4752 * Compiler and Library support for Thumb-2 and the ARMv7 architecture
4759 * Compiler and Library support for the CRIS v32 architecture, as
4760 found in Axis Communications ETRAX FS and ARTPEC-3 chips, has been
4763 Configuration changes
4765 * The cris-*-elf target now includes support for CRIS v32, including
4766 libraries, through the -march=v32 option.
4767 * A new crisv32-*-elf target defaults to generate code for CRIS v32.
4768 * A new crisv32-*-linux* target defaults to generate code for CRIS
4770 * The cris-*-aout target has been obsoleted.
4772 Improved support for built-in functions
4774 * GCC can now use the lz and swapwbr instructions to implement the
4775 __builtin_clz, __builtin_ctz and __builtin_ffs family of functions.
4776 * __builtin_bswap32 is now implemented using the swapwb instruction,
4783 * Support for several new ColdFire processors has been added. You can
4784 generate code for them using the new -mcpu option.
4785 * All targets now support ColdFire processors.
4786 * m68k-uclinux targets have improved support for C++ constructors and
4787 destructors, and for shared libraries.
4788 * It is now possible to set breakpoints on the first or last line of
4789 a function, even if there are no statements on that line.
4793 * Support for sibling calls has been added.
4794 * More use is now made of the ColdFire mov3q instruction.
4795 * __builtin_clz is now implemented using the ff1 ColdFire
4796 instruction, when available.
4797 * GCC now honors the -m68010 option. 68010 code now uses clr rather
4798 than move to zero volatile memory.
4799 * 68020 targets and above can now use symbol(index.size*scale)
4800 addresses for indexed array accesses. Earlier compilers would
4801 always load the symbol into a base register first.
4803 Configuration changes
4805 * All m68k and ColdFire targets now allow the default processor to be
4806 set at configure time using --with-cpu.
4807 * A --with-arch configuration option has been added. This option
4808 allows you to restrict a target to ColdFire or non-ColdFire
4813 * An __mcfv*__ macro is now defined for all ColdFire targets.
4814 (Earlier versions of GCC only defined __mcfv4e__.)
4815 * __mcf_cpu_*, __mcf_family_* and __mcffpu__ macros have been added.
4816 * All targets now define __mc68010 and __mc68010__ when generating
4819 Command-line changes
4821 * New command-line options -march, -mcpu, -mtune and -mhard-float
4822 have been added. These options apply to both m68k and ColdFire
4824 * -mno-short, -mno-bitfield and -mno-rtd are now accepted as negative
4825 versions of -mshort, etc.
4826 * -fforce-addr has been removed. It is now ignored by the compiler.
4830 * ColdFire targets now try to maintain a 4-byte-aligned stack where
4832 * m68k-uclinux targets now try to avoid situations that lead to the
4833 load-time error: BINFMT_FLAT: reloc outside program.
4837 Changes to existing configurations
4839 * libffi and libjava now support all three GNU/Linux ABIs: o32, n32
4840 and n64. Every GNU/Linux configuration now builds these libraries
4842 * GNU/Linux configurations now generate -mno-shared code unless
4843 overridden by -fpic, -fPIC, -fpie or -fPIE.
4844 * mipsisa32*-linux-gnu configurations now generate hard-float code by
4845 default, just like other mipsisa32* and mips*-linux-gnu
4846 configurations. You can build a soft-float version of any
4847 mips*-linux-gnu configuration by passing --with-float=soft to
4849 * mips-wrs-vxworks now supports run-time processes (RTPs).
4851 Changes to existing command-line options
4853 * The -march and -mtune options no longer accept 24k as a processor
4854 name. Please use 24kc, 24kf2_1 or 24kf1_1 instead.
4855 * The -march and -mtune options now accept 24kf2_1, 24kef2_1 and
4856 34kf2_1 as synonyms for 24kf, 24kef and 34kf respectively. The
4857 options also accept 24kf1_1, 24kef1_1 and 34kf1_1 as synonyms for
4858 24kx, 24kex and 34kx.
4862 GCC now supports the following configurations:
4863 * mipsisa32r2*-linux-gnu*, which generates MIPS32 revision 2 code by
4864 default. Earlier releases also recognized this configuration, but
4865 they treated it in the same way as mipsisa32*-linux-gnu*. Note that
4866 you can customize any mips*-linux-gnu* configuration to a
4867 particular ISA or processor by passing an appropriate --with-arch
4868 option to configure.
4869 * mipsisa*-sde-elf*, which provides compatibility with MIPS
4870 Technologies' SDE toolchains. The configuration uses the SDE
4871 libraries by default, but you can use it like other newlib-based
4872 ELF configurations by passing --with-newlib to configure. It is the
4873 only configuration besides mips64vr*-elf* to build MIPS16 as well
4874 as non-MIPS16 libraries.
4875 * mipsisa*-elfoabi*, which is similar to the general mipsisa*-elf*
4876 configuration, but uses the o32 and o64 ABIs instead of the 32-bit
4877 and 64-bit forms of the EABI.
4879 New processors and application-specific extensions
4881 * Support for the SmartMIPS ASE is available through the new
4883 * Support for revision 2 of the DSP ASE is available through the new
4884 -mdspr2 option. A new preprocessor macro called __mips_dsp_rev
4885 indicates the revision of the ASE in use.
4886 * Support for the 4KS and 74K families of processors is available
4887 through the -march and -mtune options.
4889 Improved support for built-in functions
4891 * GCC can now use load-linked, store-conditional and sync
4892 instructions to implement atomic built-in functions such as
4893 __sync_fetch_and_add. The memory reference must be 4 bytes wide for
4894 32-bit targets and either 4 or 8 bytes wide for 64-bit targets.
4895 * GCC can now use the clz and dclz instructions to implement the
4896 __builtin_ctz and __builtin_ffs families of functions.
4897 * There is a new __builtin___clear_cache function for flushing the
4898 instruction cache. GCC expands this function inline on MIPS32
4899 revision 2 targets, otherwise it calls the function specified by
4904 * GCC can now compile objects that contain a mixture of MIPS16 and
4905 non-MIPS16 code. There are two new attributes, mips16 and nomips16,
4906 for specifying which mode a function should use.
4907 * A new option called -minterlink-mips16 makes non-MIPS16 code
4908 link-compatible with MIPS16 code.
4909 * After many bug fixes, the long-standing MIPS16 -mhard-float support
4910 should now work fairly reliably.
4911 * GCC can now use the MIPS16e save and restore instructions.
4912 * -fsection-anchors now works in MIPS16 mode. MIPS16 code compiled
4913 with -G0 -fsection-anchors is often smaller than code compiled with
4914 -G8. However, please note that you must usually compile all objects
4915 in your application with the same -G option; see the documentation
4917 * A new option called-mcode-readable specifies which instructions are
4918 allowed to load from the code segment. -mcode-readable=yes is the
4919 default and says that any instruction may load from the code
4920 segment. The other alternatives are -mcode-readable=pcrel, which
4921 says that only PC-relative MIPS16 instructions may load from the
4922 code segment, and -mcode-readable=no, which says that no
4923 instruction may do so. Please see the documentation for more
4924 details, including example uses.
4926 Small-data improvements
4928 There are three new options for controlling small data:
4929 * -mno-extern-sdata, which disables small-data accesses for
4930 externally-defined variables. Code compiled with -Gn
4931 -mno-extern-sdata will be link-compatible with any -G setting
4932 between -G0 and -Gn inclusive.
4933 * -mno-local-sdata, which disables the use of small-data sections for
4934 data that is not externally visible. This option can be a useful
4935 way of reducing small-data usage in less performance-critical parts
4937 * -mno-gpopt, which disables the use of the $gp register while still
4938 honoring the -G limit when placing externally-visible data. This
4939 option implies -mno-extern-sdata and -mno-local-sdata and it can be
4940 useful in situations where $gp does not necessarily hold the
4943 Miscellaneous improvements
4945 * There is a new option called -mbranch-cost for tweaking the
4946 perceived cost of branches.
4947 * If GCC is configured to use a version of GAS that supports the
4948 .gnu_attribute directive, it will use that directive to record
4949 certain properties of the output code. .gnu_attribute is new to GAS
4951 * There are two new function attributes, near and far, for overriding
4952 the command-line setting of -mlong-calls on a function-by-function
4954 * -mfp64, which previously required a 64-bit target, now works with
4955 MIPS32 revision 2 targets as well. The mipsisa*-elfoabi* and
4956 mipsisa*-sde-elf* configurations provide suitable library support.
4957 * GCC now recognizes the -mdmx and -mmt options and passes them down
4958 to the assembler. It does nothing else with the options at present.
4960 SPU (Synergistic Processor Unit) of the Cell Broadband Engine Architecture
4963 * Support has been added for this new architecture.
4965 RS6000 (POWER/PowerPC)
4967 * Support for the PowerPC 750CL paired-single instructions has been
4968 added with a new powerpc-*-linux*paired* target configuration. It
4969 is enabled by an associated -mpaired option and can be accessed
4970 using new built-in functions.
4971 * Support for auto-detecting architecture and system configuration to
4972 auto-select processor optimization tuning.
4973 * Support for VMX on AIX 5.3 has been added.
4974 * Support for AIX Version 6.1 has been added.
4976 S/390, zSeries and System z9
4978 * Support for the IBM System z9 EC/BC processor (z9 GA3) has been
4979 added. When using the -march=z9-ec option, the compiler will
4980 generate code making use of instructions provided by the decimal
4981 floating point facility and the floating point conversion facility
4982 (pfpo). Besides the instructions used to implement decimal floating
4983 point operations these facilities also contain instructions to move
4984 between general purpose and floating point registers and to modify
4985 and copy the sign-bit of floating point values.
4986 * When the -march=z9-ec option is used the new
4987 -mhard-dfp/-mno-hard-dfp options can be used to specify whether the
4988 decimal floating point hardware instructions will be used or not.
4989 If none of them is given the hardware support is enabled by
4991 * The -mstack-guard option can now be omitted when using stack
4992 checking via -mstack-size in order to let GCC choose a sensible
4993 stack guard value according to the frame size of each function.
4994 * Various changes to improve performance of generated code have been
4995 implemented, including:
4996 + The condition code set by an add logical with carry
4997 instruction is now available for overflow checks like: a + b +
4999 + The test data class instruction is now used to implement
5000 sign-bit and infinity checks of binary and decimal floating
5005 * Support for the Sun UltraSPARC T2 (Niagara 2) processor has been
5010 * Stack unwinding for exception handling now uses by default a
5011 specialized version of DWARF unwinding. This is not
5012 binary-compatible with the setjmp/longjmp (sjlj) unwinding used for
5013 Xtensa with previous versions of GCC.
5014 * For Xtensa processors that include the Conditional Store option,
5015 the built-in functions for atomic memory access are now implemented
5016 using S32C1I instructions.
5017 * If the Xtensa NSA option is available, GCC will use it to implement
5018 the __builtin_ctz and __builtin_clz functions.
5020 Documentation improvements
5022 * Existing libstdc++ documentation has been edited and restructured
5023 into a single DocBook XML manual. The results can be viewed online
5026 Other significant improvements
5028 * The compiler's --help command-line option has been extended so that
5029 it now takes an optional set of arguments. These arguments restrict
5030 the information displayed to specific classes of command-line
5031 options, and possibly only a subset of those options. It is also
5032 now possible to replace the descriptive text associated with each
5033 displayed option with an indication of its current value, or for
5034 binary options, whether it has been enabled or disabled.
5035 Here are some examples. The following will display all the options
5036 controlling warning messages:
5039 Whereas this will display all the undocumented, target specific
5041 --help=target,undocumented
5043 This sequence of commands will display the binary optimizations
5044 that are enabled by -O3:
5045 gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
5046 gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
5047 diff /tmp/O2-opts /tmp/O3-opts | grep enabled
5049 * The configure options --with-pkgversion and --with-bugurl have been
5050 added. These allow distributors of GCC to include a
5051 distributor-specific string in manuals and --version output and to
5052 specify the URL for reporting bugs in their versions of GCC.
5056 This is the [25]list of problem reports (PRs) from GCC's bug tracking
5057 system that are known to be fixed in the 4.3.1 release. This list might
5058 not be complete (that is, it is possible that some PRs that have been
5059 fixed are not listed here).
5061 Target Specific Changes
5067 * Starting with GCC 4.3.1, decimal floating point variables are
5068 aligned to their natural boundaries when they are passed on the
5071 Command-line changes
5073 * Starting with GCC 4.3.1, the -mcld option has been added to
5074 automatically generate a cld instruction in the prologue of
5075 functions that use string instructions. This option is used for
5076 backward compatibility on some operating systems and can be enabled
5077 by default for 32-bit x86 targets by configuring GCC with the
5078 --enable-cld configure option.
5082 This is the [26]list of problem reports (PRs) from GCC's bug tracking
5083 system that are known to be fixed in the 4.3.2 release. This list might
5084 not be complete (that is, it is possible that some PRs that have been
5085 fixed are not listed here).
5089 This is the [27]list of problem reports (PRs) from GCC's bug tracking
5090 system that are known to be fixed in the 4.3.3 release. This list might
5091 not be complete (that is, it is possible that some PRs that have been
5092 fixed are not listed here).
5096 This is the [28]list of problem reports (PRs) from GCC's bug tracking
5097 system that are known to be fixed in the 4.3.4 release. This list might
5098 not be complete (that is, it is possible that some PRs that have been
5099 fixed are not listed here).
5103 This is the [29]list of problem reports (PRs) from GCC's bug tracking
5104 system that are known to be fixed in the 4.3.5 release. This list might
5105 not be complete (that is, it is possible that some PRs that have been
5106 fixed are not listed here).
5110 This is the [30]list of problem reports (PRs) from GCC's bug tracking
5111 system that are known to be fixed in the 4.3.6 release. This list might
5112 not be complete (that is, it is possible that some PRs that have been
5113 fixed are not listed here).
5116 For questions related to the use of GCC, please consult these web
5117 pages and the [31]GCC manuals. If that fails, the
5118 [32]gcc-help@gcc.gnu.org mailing list might help. Comments on these
5119 web pages and the development of GCC are welcome on our developer
5120 list at [33]gcc@gcc.gnu.org. All of [34]our lists have public
5123 Copyright (C) [35]Free Software Foundation, Inc. Verbatim copying and
5124 distribution of this entire article is permitted in any medium,
5125 provided this notice is preserved.
5127 These pages are [36]maintained by the GCC team. Last modified
5132 1. http://gcc.gnu.org/gcc-4.3/changes.html#4.3.5
5133 2. http://gmplib.org/
5134 3. http://www.mpfr.org/
5135 4. http://gcc.gnu.org/install/prerequisites.html
5136 5. http://gcc.gnu.org/ml/gcc-announce/2001/msg00000.html
5137 6. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
5138 7. http://gcc.gnu.org/gcc-4.3/porting_to.html
5139 8. http://www.mpfr.org/
5140 9. http://www.mpfr.org/
5141 10. http://www.mpfr.org/
5142 11. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
5143 12. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
5144 13. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
5145 14. http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#m anual.intro.status.standard.tr1
5146 15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html
5147 16. http://gmplib.org/
5148 17. http://www.mpfr.org/
5149 18. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#Code-Gen-Options
5150 19. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167
5151 20. http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/GAMMA.html
5152 21. http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/LGAMMA.html
5153 22. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html
5154 23. http://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html
5155 24. http://gcc.gnu.org/onlinedocs/libstdc++/
5156 25. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.1
5157 26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.2
5158 27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.3
5159 28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4
5160 29. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5
5161 30. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.6
5162 31. http://gcc.gnu.org/onlinedocs/
5163 32. mailto:gcc-help@gcc.gnu.org
5164 33. mailto:gcc@gcc.gnu.org
5165 34. http://gcc.gnu.org/lists.html
5166 35. http://www.fsf.org/
5167 36. http://gcc.gnu.org/about.html
5168 37. http://validator.w3.org/check/referer
5169 ======================================================================
5170 http://gcc.gnu.org/gcc-4.2/index.html
5171 GCC 4.2 Release Series
5175 The [1]GNU project and the GCC developers are pleased to announce the
5176 release of GCC 4.2.4.
5178 This release is a bug-fix release, containing fixes for regressions in
5179 GCC 4.2.3 relative to previous releases of GCC.
5184 May 19, 2008 ([2]changes)
5187 February 1, 2008 ([3]changes)
5190 October 7, 2007 ([4]changes)
5193 July 18, 2007 ([5]changes)
5196 May 13, 2007 ([6]changes)
5198 References and Acknowledgements
5200 GCC used to stand for the GNU C Compiler, but since the compiler
5201 supports several other languages aside from C, it now stands for the
5202 GNU Compiler Collection.
5204 A list of [7]successful builds is updated as new information becomes
5207 The GCC developers would like to thank the numerous people that have
5208 contributed new features, improvements, bug fixes, and other changes as
5209 well as test results to GCC. This [8]amazing group of volunteers is
5210 what makes GCC successful.
5212 For additional information about GCC please refer to the [9]GCC project
5213 web site or contact the [10]GCC development mailing list.
5215 To obtain GCC please use [11]our mirror sites or [12]our SVN server.
5218 For questions related to the use of GCC, please consult these web
5219 pages and the [13]GCC manuals. If that fails, the
5220 [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these
5221 web pages and the development of GCC are welcome on our developer
5222 list at [15]gcc@gcc.gnu.org. All of [16]our lists have public
5225 Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
5226 distribution of this entire article is permitted in any medium,
5227 provided this notice is preserved.
5229 These pages are [18]maintained by the GCC team. Last modified
5234 1. http://www.gnu.org/
5235 2. http://gcc.gnu.org/gcc-4.2/changes.html
5236 3. http://gcc.gnu.org/gcc-4.2/changes.html
5237 4. http://gcc.gnu.org/gcc-4.2/changes.html
5238 5. http://gcc.gnu.org/gcc-4.2/changes.html
5239 6. http://gcc.gnu.org/gcc-4.2/changes.html
5240 7. http://gcc.gnu.org/gcc-4.2/buildstat.html
5241 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
5242 9. http://gcc.gnu.org/index.html
5243 10. mailto:gcc@gcc.gnu.org
5244 11. http://gcc.gnu.org/mirrors.html
5245 12. http://gcc.gnu.org/svn.html
5246 13. http://gcc.gnu.org/onlinedocs/
5247 14. mailto:gcc-help@gcc.gnu.org
5248 15. mailto:gcc@gcc.gnu.org
5249 16. http://gcc.gnu.org/lists.html
5250 17. http://www.fsf.org/
5251 18. http://gcc.gnu.org/about.html
5252 19. http://validator.w3.org/check/referer
5253 ======================================================================
5254 http://gcc.gnu.org/gcc-4.2/changes.html
5255 GCC 4.2 Release Series
5256 Changes, New Features, and Fixes
5260 * GCC no longer accepts the -fshared-data option. This option has had
5261 no effect in any GCC 4 release; the targets to which the option
5262 used to apply had been removed before GCC 4.0.
5264 General Optimizer Improvements
5266 * New command-line options specify the possible relationships among
5267 parameters and between parameters and global data. For example,
5268 -fargument-noalias-anything specifies that arguments do not alias
5270 Each language will automatically use whatever option is required by
5271 the language standard. You should not need to use these options
5274 New Languages and Language specific improvements
5276 * [1]OpenMP is now supported for the C, C++ and Fortran compilers.
5277 * New command-line options -fstrict-overflow and -Wstrict-overflow
5278 have been added. -fstrict-overflow tells the compiler that it may
5279 assume that the program follows the strict signed overflow
5280 semantics permitted for the language: for C and C++ this means that
5281 the compiler may assume that signed overflow does not occur. For
5282 example, a loop like
5283 for (i = 1; i > 0; i *= 2)
5285 is presumably intended to continue looping until i overflows. With
5286 -fstrict-overflow, the compiler may assume that signed overflow
5287 will not occur, and transform this into an infinite loop.
5288 -fstrict-overflow is turned on by default at -O2, and may be
5289 disabled via -fno-strict-overflow. The -Wstrict-overflow option may
5290 be used to warn about cases where the compiler assumes that signed
5291 overflow will not occur. It takes five different levels:
5292 -Wstrict-overflow=1 to 5. See the [2]documentation for details.
5293 -Wstrict-overflow=1 is enabled by -Wall.
5294 * The new command-line option -fno-toplevel-reorder directs GCC to
5295 emit top-level functions, variables, and asm statements in the same
5296 order that they appear in the input file. This is intended to
5297 support existing code which relies on a particular ordering (for
5298 example, code which uses top-level asm statements to switch
5299 sections). For new code, it is generally better to use function and
5300 variable attributes. The -fno-toplevel-reorder option may be used
5301 for most cases which currently use -fno-unit-at-a-time. The
5302 -fno-unit-at-a-time option will be removed in some future version
5303 of GCC. If you know of a case which requires -fno-unit-at-a-time
5304 which is not fixed by -fno-toplevel-reorder, please open a bug
5309 * The pragma redefine_extname will now macro expand its tokens for
5310 compatibility with SunPRO.
5311 * In the next release of GCC, 4.3, -std=c99 or -std=gnu99 will direct
5312 GCC to handle inline functions as specified in the C99 standard. In
5313 preparation for this, GCC 4.2 will warn about any use of non-static
5314 inline functions in gnu99 or c99 mode. This new warning may be
5315 disabled with the new gnu_inline function attribute or the new
5316 -fgnu89-inline command-line option. Also, GCC 4.2 and later will
5317 define one of the preprocessor macros __GNUC_GNU_INLINE__ or
5318 __GNUC_STDC_INLINE__ to indicate the semantics of inline functions
5319 in the current compilation.
5320 * A new command-line option -Waddress has been added to warn about
5321 suspicious uses of memory addresses as, for example, using the
5322 address of a function in a conditional expression, and comparisons
5323 against the memory address of a string literal. This warning is
5328 * C++ visibility handling has been overhauled.
5329 Restricted visiblity is propagated from classes to members, from
5330 functions to local statics, and from templates and template
5331 arguments to instantiations, unless the latter has explicitly
5332 declared visibility.
5333 The visibility attribute for a class must come between the
5334 class-key and the name, not after the closing brace.
5335 Attributes are now allowed for enums and elaborated-type-specifiers
5336 that only declare a type.
5337 Members of the anonymous namespace are now local to a particular
5338 translation unit, along with any other declarations which use them,
5339 though they are still treated as having external linkage for
5341 * The (undocumented) extension which permitted templates with default
5342 arguments to be bound to template template parameters with fewer
5343 parameters has been removed. For example:
5344 template <template <typename> class C>
5345 void f(C<double>) {}
5347 template <typename T, typename U = int>
5350 template void f(S<double>);
5352 is no longer accepted by G++. The reason this code is not accepted
5353 is that S is a template with two parameters; therefore, it cannot
5354 be bound to C which has only one parameter.
5355 * The <?, >?, <?=, and >?= operators, deprecated in previous GCC
5356 releases, have been removed.
5357 * The command-line option -fconst-strings, deprecated in previous GCC
5358 releases, has been removed.
5359 * The configure variable enable-__cxa_atexit is now enabled by
5360 default for more targets. Enabling this variable is necessary in
5361 order for static destructors to be executed in the correct order,
5362 but it depends upon the presence of a non-standard C library in the
5363 target library in order to work. The variable is now enabled for
5364 more targets which are known to have suitable C libraries.
5365 * -Wextra will produce warnings for if statements with a semicolon as
5366 the only body, to catch code like:
5371 To suppress the warning in valid cases, use { } instead.
5372 * The C++ frontend now also produces strict aliasing warnings when
5373 -fstrict-aliasing -Wstrict-aliasing is in effect.
5375 Runtime Library (libstdc++)
5377 * Added support for TR1 <random>, <complex>, and C compatibility
5378 headers. In addition, a lock-free version of shared_ptr was
5379 contributed as part of Phillip Jordan's Google Summer of Code
5380 project on lock-free containers. ([3]Implementation status of TR1)
5381 * In association with the Summer of Code work on lock-free
5382 containers, the interface for atomic builtins was adjusted,
5383 creating simpler alternatives for non-threaded code paths. Also,
5384 usage was consolidated and all elements were moved from namespace
5385 std to namespace__gnu_cxx. Affected interfaces are the functions
5386 __exchange_and_add, __atomic_add, and the objects __mutex,
5387 __recursive_mutex, and __scoped_lock.
5388 * Support for versioning weak symbol names via namespace association
5389 was added. However, as this changes the names of exported symbols,
5390 this is turned off by default in the current ABI. Intrepid users
5391 can enable this feature by using
5392 --enable-symvers=gnu-versioned-namespace during configuration.
5393 * Revised, simplified, and expanded policy-based associative
5394 containers, including data types for tree and trie forms
5395 (basic_tree, tree, trie), lists (list_update), and both
5396 collision-chaining and probing hash-based containers
5397 (basic_hash_table, cc_hash_table, gp_hash_table). More details per
5398 the [4]documentation.
5399 * The implementation of the debug mode was modified, whereby the
5400 debug namespaces were nested inside of namespace std and namespace
5401 __gnu_cxx in order to resolve some long standing corner cases
5402 involving name lookup. Debug functionality from the policy-based
5403 data structures was consolidated and enabled with the single macro,
5404 _GLIBCXX_DEBUG. See PR 26142 for more information.
5405 * Added extensions for type traits: __conditional_type,
5406 __numeric_traits, __add_unsigned, __removed_unsigned, __enable_if.
5407 * Added a typelist implementation for compile-time meta-programming.
5408 Elements for typelist construction and operation can be found
5409 within namespace __gnu_cxx::typelist.
5410 * Added a new allocator, __gnu_cxx::throw_allocator, for testing
5412 * Enabled library-wide visibility control, allowing -fvisibility to
5414 * Consolidated all nested namespaces and the conversion of
5415 __gnu_internal implementation-private details to anonymous
5416 namespaces whenever possible.
5417 * Implemented LWG resolutions DR 431 and DR 538.
5421 * Support for allocatable components has been added (TR 15581 and
5423 * Support for the Fortran 2003 streaming IO extension has been added.
5424 * The GNU Fortran compiler now uses 4-byte record markers by default
5425 for unformatted files to be compatible with g77 and most other
5426 compilers. The implementation allows for records greater than 2 GB
5427 and is compatible with several other compilers. Older versions of
5428 gfortran used 8-byte record markers by default (on most systems).
5429 In order to change the length of the record markers, e.g. to read
5430 unformatted files created by older gfortran versions, the
5431 [5]-frecord-marker=8 option can be used.
5435 * A new command-line option -static-libgcj has been added for targets
5436 that use a linker compatible with GNU Binutils. As its name
5437 implies, this causes libgcj to be linked statically. In some cases
5438 this causes the resulting executable to start faster and use less
5439 memory than if the shared version of libgcj were used. However
5440 caution should be used as it can also cause essential parts of the
5441 library to be omitted. Some of these issues are discussed in:
5442 [6]http://gcc.gnu.org/wiki/Statically_linking_libgcj
5443 * fastjar is no longer bundled with GCC. To build libgcj, you will
5444 need either InfoZIP (both zip and unzip) or an external jar
5445 program. In the former case, the GCC build will install a jar shell
5446 script that is based on InfoZIP and provides the same functionality
5449 New Targets and Target Specific Improvements
5453 * -mtune=generic can now be used to generate code running well on
5454 common x86 chips. This includes AMD Athlon, AMD Opteron, Intel
5455 Pentium-M, Intel Pentium 4 and Intel Core 2.
5456 * -mtune=native and -march=native will produce code optimized for the
5457 host architecture as detected using the cpuid instruction.
5458 * Added a new command-line option -fstackrealign and and
5459 __attribute__ ((force_align_arg_pointer)) to realign the stack at
5460 runtime. This allows functions compiled with a vector-aligned stack
5461 to be invoked from legacy objects that keep only word-alignment.
5465 * The default CPU setting has been changed from V7 to V9 in 32-bit
5466 mode on Solaris 7 and above. This is already the case in 64-bit
5467 mode. It can be overridden by specifying --with-cpu at configure
5469 * Back-end support of built-in functions for atomic memory access has
5471 * Support for the Sun UltraSPARC T1 (Niagara) processor has been
5476 * Various bug fixes have made some functions (notably, functions
5477 returning structures) incompatible with previous releases.
5478 Recompiling all libraries is recommended. Note that code quality
5479 has considerably improved since 4.1, making a recompile even more
5484 * Added support for the Broadcom SB-1A core.
5488 * Added support for IA-64 data and control speculation. By default
5489 speculation is enabled only during second scheduler pass. A number
5490 of machine flags was introduced to control the usage of speculation
5491 for both scheduler passes.
5495 * Added Java language support (libffi and libjava) for 32-bit HP-UX
5500 Documentation improvements
5504 * A make pdf target has been added to the top-level makefile,
5505 enabling automated production of PDF documentation files.
5506 (Front-ends external to GCC should modify their Make-lang.in file
5507 to add a lang.pdf: target.)
5509 Other significant improvements
5511 Build system improvements
5513 * All the components of the compiler are now bootstrapped by default.
5514 This improves the resilience to bugs in the system compiler or
5515 binary compatibility problems, as well as providing better testing
5516 of GCC 4.2 itself. In addition, if you build the compiler from a
5517 combined tree, the assembler, linker, etc. will also be
5518 bootstrapped (i.e. built with themselves).
5519 You can disable this behavior, and go back to the pre-GCC 4.2 set
5520 up, by configuring GCC with --disable-bootstrap.
5521 * The rules that configure follows to find target tools resemble more
5522 closely the locations that the built compiler will search. In
5523 addition, you can use the new configure option --with-target-tools
5524 to specify where to find the target tools used during the build,
5525 without affecting what the built compiler will use.
5526 This can be especially useful when building packages of GCC. For
5527 example, you may want to build GCC with GNU as or ld, even if the
5528 resulting compiler to work with the native assembler and linker. To
5529 do so, you can use --with-target-tools to point to the native
5532 Incompatible changes to the build system
5534 * Front-ends external to GCC should modify their Make-lang.in file to
5535 replace double-colon rules (e.g. dvi::) with normal rules (like
5536 lang.dvi:). Front-end makefile hooks do not use double-colon rules
5538 * Up to GCC 4.1, a popular way to specify the target tools used
5539 during the build was to create directories named gas, binutils,
5540 etc. in the build tree, and create links to the tools from there.
5541 This does not work any more when the compiler is bootstrapped. The
5542 new configure option --with-target-tools provides a better way to
5543 achieve the same effect, and works for all native and cross
5547 For questions related to the use of GCC, please consult these web
5548 pages and the [7]GCC manuals. If that fails, the
5549 [8]gcc-help@gcc.gnu.org mailing list might help. Comments on these
5550 web pages and the development of GCC are welcome on our developer
5551 list at [9]gcc@gcc.gnu.org. All of [10]our lists have public
5554 Copyright (C) [11]Free Software Foundation, Inc. Verbatim copying and
5555 distribution of this entire article is permitted in any medium,
5556 provided this notice is preserved.
5558 These pages are [12]maintained by the GCC team. Last modified
5563 1. http://gcc.gnu.org/projects/gomp/
5564 2. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
5565 3. http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#manual.intro.status.standard.tr1
5566 4. http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html
5567 5. http://gcc.gnu.org/onlinedocs/gfortran/Runtime-Options.html
5568 6. http://gcc.gnu.org/wiki/Statically_linking_libgcj
5569 7. http://gcc.gnu.org/onlinedocs/
5570 8. mailto:gcc-help@gcc.gnu.org
5571 9. mailto:gcc@gcc.gnu.org
5572 10. http://gcc.gnu.org/lists.html
5573 11. http://www.fsf.org/
5574 12. http://gcc.gnu.org/about.html
5575 13. http://validator.w3.org/check/referer
5576 ======================================================================
5577 http://gcc.gnu.org/gcc-4.1/index.html
5578 GCC 4.1 Release Series
5582 The [1]GNU project and the GCC developers are pleased to announce the
5583 release of GCC 4.1.2.
5585 This release is a bug-fix release, containing fixes for regressions in
5586 GCC 4.1.1 relative to previous releases of GCC.
5591 February 13, 2007 ([2]changes)
5594 May 24, 2006 ([3]changes)
5597 February 28, 2006 ([4]changes)
5599 References and Acknowledgements
5601 GCC used to stand for the GNU C Compiler, but since the compiler
5602 supports several other languages aside from C, it now stands for the
5603 GNU Compiler Collection.
5605 A list of [5]successful builds is updated as new information becomes
5608 The GCC developers would like to thank the numerous people that have
5609 contributed new features, improvements, bug fixes, and other changes as
5610 well as test results to GCC. This [6]amazing group of volunteers is
5611 what makes GCC successful.
5613 For additional information about GCC please refer to the [7]GCC project
5614 web site or contact the [8]GCC development mailing list.
5616 To obtain GCC please use [9]our mirror sites or [10]our SVN server.
5619 For questions related to the use of GCC, please consult these web
5620 pages and the [11]GCC manuals. If that fails, the
5621 [12]gcc-help@gcc.gnu.org mailing list might help. Comments on these
5622 web pages and the development of GCC are welcome on our developer
5623 list at [13]gcc@gcc.gnu.org. All of [14]our lists have public
5626 Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and
5627 distribution of this entire article is permitted in any medium,
5628 provided this notice is preserved.
5630 These pages are [16]maintained by the GCC team. Last modified
5635 1. http://www.gnu.org/
5636 2. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2
5637 3. http://gcc.gnu.org/gcc-4.1/changes.html
5638 4. http://gcc.gnu.org/gcc-4.1/changes.html
5639 5. http://gcc.gnu.org/gcc-4.1/buildstat.html
5640 6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
5641 7. http://gcc.gnu.org/index.html
5642 8. mailto:gcc@gcc.gnu.org
5643 9. http://gcc.gnu.org/mirrors.html
5644 10. http://gcc.gnu.org/svn.html
5645 11. http://gcc.gnu.org/onlinedocs/
5646 12. mailto:gcc-help@gcc.gnu.org
5647 13. mailto:gcc@gcc.gnu.org
5648 14. http://gcc.gnu.org/lists.html
5649 15. http://www.fsf.org/
5650 16. http://gcc.gnu.org/about.html
5651 17. http://validator.w3.org/check/referer
5652 ======================================================================
5653 http://gcc.gnu.org/gcc-4.1/changes.html
5654 GCC 4.1 Release Series
5655 Changes, New Features, and Fixes
5657 The latest release in the 4.1 release series is [1]GCC 4.1.2.
5661 General Optimizer Improvements
5663 * GCC now has infrastructure for inter-procedural optimizations and
5664 the following inter-procedural optimizations are implemented:
5665 + Profile guided inlining. When doing profile feedback guided
5666 optimization, GCC can now use the profile to make better
5667 informed decisions on whether inlining of a function is
5668 profitable or not. This means that GCC will no longer inline
5669 functions at call sites that are not executed very often, and
5670 that functions at hot call sites are more likely to be
5672 A new parameter min-inline-recursive-probability is also now
5673 available to throttle recursive inlining of functions with
5674 small average recursive depths.
5675 + Discovery of pure and const functions, a form of side-effects
5676 analysis. While older GCC releases could also discover such
5677 special functions, the new IPA-based pass runs earlier so that
5678 the results are available to more optimizers. The pass is also
5679 simply more powerful than the old one.
5680 + Analysis of references to static variables and type escape
5681 analysis, also forms of side-effects analysis. The results of
5682 these passes allow the compiler to be less conservative about
5683 call-clobbered variables and references. This results in more
5684 redundant loads being eliminated and in making static
5685 variables candidates for register promotion.
5686 + Improvement of RTL-based alias analysis. The results of type
5687 escape analysis are fed to the RTL type-based alias analyzer,
5688 allowing it to disambiguate more memory references.
5689 + Interprocedural constant propagation and function versioning.
5690 This pass looks for functions that are always called with the
5691 same constant value for one or more of the function arguments,
5692 and propagates those constants into those functions.
5693 + GCC will now eliminate static variables whose usage was
5695 + -fwhole-program --combine can now be used to make all
5696 functions in program static allowing whole program
5697 optimization. As an exception, the main function and all
5698 functions marked with the new externally_visible attribute are
5699 kept global so that programs can link with runtime libraries.
5700 * GCC can now do a form of partial dead code elimination (PDCE) that
5701 allows code motion of expressions to the paths where the result of
5702 the expression is actually needed. This is not always a win, so the
5703 pass has been limited to only consider profitable cases. Here is an
5705 int foo (int *, int *);
5721 The a = b + c can be sunk to right before the printf. Normal code
5722 sinking will not do this, it will sink the first one above into the
5723 else-branch of the conditional jump, which still gives you two
5725 * GCC now has a value range propagation pass. This allows the
5726 compiler to eliminate bounds checks and branches. The results of
5727 the pass can also be used to accurately compute branch
5729 * The pass to convert PHI nodes to straight-line code (a form of
5730 if-conversion for GIMPLE) has been improved significantly. The two
5731 most significant improvements are an improved algorithm to
5732 determine the order in which the PHI nodes are considered, and an
5733 improvement that allow the pass to consider if-conversions of basic
5734 blocks with more than two predecessors.
5735 * Alias analysis improvements. GCC can now differentiate between
5736 different fields of structures in Tree-SSA's virtual operands form.
5737 This lets stores/loads from non-overlapping structure fields not
5738 conflict. A new algorithm to compute points-to sets was contributed
5739 that can allows GCC to see now that p->a and p->b, where p is a
5740 pointer to a structure, can never point to the same field.
5741 * Various enhancements to auto-vectorization:
5742 + Incrementally preserve SSA form when vectorizing.
5743 + Incrementally preserve loop-closed form when vectorizing.
5744 + Improvements to peeling for alignment: generate better code
5745 when the misalignment of an access is known at compile time,
5746 or when different accesses are known to have the same
5747 misalignment, even if the misalignment amount itself is
5749 + Consider dependence distance in the vectorizer.
5750 + Externalize generic parts of data reference analysis to make
5751 this analysis available to other passes.
5752 + Vectorization of conditional code.
5753 + Reduction support.
5754 * GCC can now partition functions in sections of hot and cold code.
5755 This can significantly improve performance due to better
5756 instruction cache locality. This feature works best together with
5757 profile feedback driven optimization.
5758 * A new pass to avoid saving of unneeded arguments to the stack in
5759 vararg functions if the compiler can prove that they will not be
5761 * Transition of basic block profiling to tree level implementation
5762 has been completed. The new implementation should be considerably
5763 more reliable (hopefully avoiding profile mismatch errors when
5764 using -fprofile-use or -fbranch-probabilities) and can be used to
5765 drive higher level optimizations, such as inlining.
5766 The -ftree-based-profiling command-line option was removed and
5767 -fprofile-use now implies disabling old RTL level loop optimizer
5768 (-fno-loop-optimize). Speculative prefetching optimization
5769 (originally enabled by -fspeculative-prefetching) was removed.
5771 New Languages and Language specific improvements
5775 * The old Bison-based C and Objective-C parser has been replaced by a
5776 new, faster hand-written recursive-descent parser.
5780 * The build infrastructure for the Ada runtime library and tools has
5781 been changed to be better integrated with the rest of the build
5782 infrastructure of GCC. This should make doing cross builds of Ada a
5787 * ARM-style name-injection of friend declarations is no longer the
5788 default. For example:
5794 will not be accepted; instead a declaration of f will need to be
5795 present outside of the scope of S. The new -ffriend-injection
5796 option will enable the old behavior.
5797 * The (undocumented) extension which permitted templates with default
5798 arguments to be bound to template template parameters with fewer
5799 parameters has been deprecated, and will be removed in the next
5800 major release of G++. For example:
5801 template <template <typename> class C>
5802 void f(C<double>) {}
5804 template <typename T, typename U = int>
5807 template void f(S<double>);
5809 makes use of the deprecated extension. The reason this code is not
5810 valid ISO C++ is that S is a template with two parameters;
5811 therefore, it cannot be bound to C which has only one parameter.
5813 Runtime Library (libstdc++)
5815 * Optimization work:
5816 + A new implementation of std::search_n is provided, better
5817 performing in case of random access iterators.
5818 + Added further efficient specializations of istream functions,
5819 i.e., character array and string extractors.
5820 + Other smaller improvements throughout.
5821 * Policy-based associative containers, designed for high-performance,
5822 flexibility and semantic safety are delivered in ext/pb_assoc.
5823 * A versatile string class, __gnu_cxx::__versa_string, providing
5824 facilities conforming to the standard requirements for
5825 basic_string, is delivered in <ext/vstring.h>. In particular:
5826 + Two base classes are provided: the default one avoids
5827 reference counting and is optimized for short strings; the
5828 alternate one, still uses it while improving in a few low
5829 level areas (e.g., alignment). See vstring_fwd.h for some
5831 + Various algorithms have been rewritten (e.g., replace), the
5832 code streamlined and simple optimizations added.
5833 + Option 3 of DR 431 is implemented for both available bases,
5834 thus improving the support for stateful allocators.
5835 * As usual, many bugs have been fixed (e.g., libstdc++/13583,
5836 libstdc++/23953) and LWG resolutions put into effect for the first
5837 time (e.g., DR 280, DR 464, N1780 recommendations for DR 233, TR1
5838 Issue 6.19). The implementation status of TR1 is now tracked in the
5843 * A new language front end for Objective-C++ has been added. This
5844 language allows users to mix the object oriented features of
5845 Objective-C with those of C++.
5849 * Core library (libgcj) updates based on GNU Classpath 0.15 - 0.19
5850 features (plus some 0.20 bug-fixes)
5852 o The java.net.HttpURLConnection implementation no longer
5853 buffers the entire response body in memory. This means
5854 that response bodies larger than available memory can now
5857 o NIO FileChannel.map implementation, fast bulk put
5858 implementation for DirectByteBuffer (speeds up this
5860 o FileChannel.lock() and FileChannel.force() implemented.
5862 o gnu.xml fix for nodes created outside a namespace
5864 o Add support for output indenting and
5865 cdata-section-elements output instruction in
5867 o xml.xpath corrections for cases where elements/attributes
5868 might have been created in non-namespace-aware mode.
5869 Corrections to handling of XSL variables and minor
5870 conformance updates.
5872 o GNU JAWT implementation, the AWT Native Interface, which
5873 allows direct access to native screen resources from
5874 within a Canvas's paint method. GNU Classpath Examples
5875 comes with a Demo, see libjava/classpath/examples/README.
5876 o awt.datatransfer updated to 1.5 with support for
5877 FlavorEvents. The gtk+ awt peers now allow copy/paste of
5878 text, images, URIs/files and serialized objects with
5879 other applications and tracking clipboard change events
5880 with gtk+ 2.6 (for gtk+ 2.4 only text and serialized
5881 objects are supported). A GNU Classpath Examples
5882 datatransfer Demo was added to show the new
5884 o Split gtk+ awt peers event handling in two threads and
5885 improve gdk lock handling (solves several awt lock ups).
5886 o Speed up awt Image loading.
5887 o Better gtk+ scrollbar peer implementation when using gtk+
5889 o Handle image loading errors correctly for gdkpixbuf and
5891 o Better handle GDK lock. Properly prefix gtkpeer native
5893 o GdkGraphics2D has been updated to use Cairo 0.5.x or
5895 o BufferedImage and GtkImage rewrites. All image drawing
5896 operations should now work correctly (flipping requires
5898 o Future Graphics2D, image and text work is documented at:
5899 [2]http://developer.classpath.org/mediation/ClasspathGrap
5901 o When gtk+ 2.6 or higher is installed the default log
5902 handler will produce stack traces whenever a WARNING,
5903 CRITICAL or ERROR message is produced.
5905 o The RepaintManager has been reworked for more efficient
5906 painting, especially for large GUIs.
5907 o The layout manager OverlayLayout has been implemented,
5908 the BoxLayout has been rewritten to make use of the
5909 SizeRequirements utility class and caching for more
5911 o Improved accessibility support.
5912 o Significant progress has been made in the implementation
5913 of the javax.swing.plaf.metal package, with most UI
5914 delegates in a working state now. Please test this with
5915 your own applications and provide feedback that will help
5916 us to improve this package.
5917 o The GUI demo (gnu.classpath.examples.swing.Demo) has been
5918 extended to highlight various features in our Free Swing
5919 implementation. And it includes a look and feel switcher
5920 for Metal (default), Ocean and GNU themes.
5921 o The javax.swing.plaf.multi package is now implemented.
5922 o Editing and several key actions for JTree and JTable were
5924 o Lots of icons and look and feel improvements for Free
5925 Swing basic and metal themes were added. Try running the
5926 GNU Classpath Swing Demo in examples
5927 (gnu.classpath.examples.swing.Demo) with:
5928 -Dswing.defaultlaf=javax.swing.plaf.basic.BasicLookAndFee
5930 -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFee
5932 o Start of styled text capabilites for java.swing.text.
5933 o DefaultMutableTreeNode pre-order, post-order, depth-first
5934 and breadth-first traversal enumerations implemented.
5935 o JInternalFrame colors and titlebar draw properly.
5936 o JTree is working up to par (icons, selection and keyboard
5938 o JMenus were made more compatible in visual and
5939 programmatic behavior.
5940 o JTable changeSelection and multiple selections
5942 o JButton and JToggleButton change states work properly
5944 o JFileChooser fixes.
5945 o revalidate() and repaint() fixes which make Free Swing
5946 much more responsive.
5947 o MetalIconFactory implemented.
5948 o Free Swing Top-Level Compatibility. JFrame, JDialog,
5949 JApplet, JInternalFrame, and JWindow are now 1.5
5950 compatible in the sense that you can call add() and
5951 setLayout() directly on them, which will have the same
5952 effect as calling getContentPane().add() and
5953 getContentPane().setLayout().
5954 o The JTree interface has been completed. JTrees now
5955 recognizes mouse clicks and selections work.
5956 o BoxLayout works properly now.
5957 o Fixed GrayFilter to actually work.
5958 o Metal SplitPane implemented.
5959 o Lots of Free Swing text and editor stuff work now.
5960 + Free RMI and Corba
5961 o Andrew Watson, Vice President and Technical Director of
5962 the Object Management Group, has officially assigned us
5963 20 bit Vendor Minor Code Id: 0x47430 ("GC") that will
5964 mark remote classpath-specific system exceptions.
5965 Obtaining the VMCID means that GNU Classpath now is a
5966 recogniseable type of node in a highly interoperable
5968 o GNU Classpath now includes the first working draft to
5969 support the RMI over IIOP protocol. The current
5970 implementation is capable of remote invocations,
5971 transferring various Serializables and Externalizables
5972 via RMI-IIOP protocol. It can flatten graphs and, at
5973 least for the simple cases, is interoperable with 1.5
5975 o org.omg.PortableInterceptor and related functionality in
5976 other packages is now implemented:
5977 # The sever and client interceptors work as required
5979 # The IOR interceptor works as needed for 1.5.
5980 o The org.omg.DynamicAny package is completed and passes
5982 o The Portable Object Adapter should now support the output
5983 of the recent IDL to java compilers. These compilers now
5984 generate servants and not CORBA objects as before, making
5985 the output depend on the existing POA implementation.
5986 Completing POA means that such code can already be tried
5987 to run on Classpath. Our POA is tested for the following
5989 # POA converts servant to the CORBA object.
5990 # Servant provides to the CORBA object.
5991 # POA activates new CORBA object with the given Object
5992 Id (byte array) that is later accessible for the
5994 # During the first call, the ServantActivator provides
5995 servant for this and all subsequent calls on the
5997 # During each call, the ServantLocator provides
5998 servant for this call only.
5999 # ServantLocator or ServantActivator forwards call to
6001 # POA has a single servant, responsible for all
6003 # POA has a default servant, but some objects are
6004 explicitly connected to they specific servants.
6005 The POA is verified using tests from the former
6007 o The CORBA implementation is now a working prototype that
6008 should support features up to 1.3 inclusive. We invite
6009 groups writing CORBA dependent applications to try
6010 Classpath implementation, reporting any possible bugs.
6011 The CORBA prototype is interoperable with Sun's
6012 implementation v 1.4, transferring object references,
6013 primitive types, narrow and wide strings, arrays,
6014 structures, trees, abstract interfaces and value types
6015 (feature of CORBA 2.3) between these two platforms.
6016 Remote exceptions are transferred and handled correctly.
6017 The stringified object references (IORs) from various
6018 sources are parsed as required. The transient (for
6019 current session) and permanent (till jre restart)
6020 redirections work. Both Little and Big Endian encoded
6021 messages are accepted. The implementation is verified
6022 using tests from the former cost.omg.org. The current
6023 release includes working examples (see the examples
6024 directory), demonstrating the client-server
6025 communication, using either CORBA Request or IDL-based
6026 stub (usually generated by a IDL to java compiler). These
6027 examples also show how to use the Classpath CORBA naming
6028 service. The IDL to java compiler is not yet written, but
6029 as our library must be compatible, it naturally accepts
6030 the output of other idlj implementations.
6032 o Updated TimeZone data against Olson tzdata2005l.
6033 o Make zip and jar packages UTF-8 clean.
6034 o "native" code builds and compiles (warning free) on
6036 o java.util.logging.FileHandler now rotates files.
6037 o Start of a generic JDWP framework in gnu/classpath/jdwp.
6038 This is unfinished, but feedback (at classpath@gnu.org)
6039 from runtime hackers is greatly appreciated. Although
6040 most of the work is currently being done around gcj/gij
6041 we want this framework to be as VM neutral as possible.
6042 Early design is described in:
6043 [3]http://gcc.gnu.org/ml/java/2005-05/msg00260.html
6044 o QT4 AWT peers, enable by giving configure
6045 --enable-qt-peer. Included, but not ready for production
6046 yet. They are explicitly disabled and not supported. But
6047 if you want to help with the development of these new
6048 features we are interested in feedback. You will have to
6049 explicitly enable them to try them out (and they will
6050 most likely contain bugs).
6051 o Documentation fixes all over the place. See
6052 [4]http://developer.classpath.org/doc/
6054 New Targets and Target Specific Improvements
6058 * The x86-64 medium model (that allows building applications whose
6059 data segment exceeds 4GB) was redesigned to match latest ABI draft.
6060 New implementation split large datastructures into separate segment
6061 improving performance of accesses to small datastructures and also
6062 allows linking of small model libraries into medium model programs
6063 as long as the libraries are not accessing the large datastructures
6064 directly. Medium model is also supported in position independent
6066 The ABI change results in partial incompatibility among medium
6067 model objects. Linking medium model libraries (or objects) compiled
6068 with new compiler into medium model program compiled with older
6069 will likely result in exceeding ranges of relocations.
6070 Binutils 2.16.91 or newer are required for compiling medium model
6073 RS6000 (POWER/PowerPC)
6075 * The AltiVec vector primitives in <altivec.h> are now implemented in
6076 a way that puts a smaller burden on the preprocessor, instead
6077 processing the "overloading" in the front ends. This should benefit
6078 compilation speed on AltiVec vector code.
6079 * AltiVec initializers now are generated more efficiently.
6080 * The popcountb instruction available on POWER5 now is generated.
6081 * The floating point round to integer instructions available on
6082 POWER5+ now is generated.
6083 * Floating point divides can be synthesized using the floating point
6084 reciprocal estimate instructions.
6085 * Double precision floating point constants are initialized as single
6086 precision values if they can be represented exactly.
6088 S/390, zSeries and System z9
6090 * Support for the IBM System z9 109 processor has been added. When
6091 using the -march=z9-109 option, the compiler will generate code
6092 making use of instructions provided by the extended immediate
6094 * Support for 128-bit IEEE floating point has been added. When using
6095 the -mlong-double-128 option, the compiler will map the long double
6096 data type to 128-bit IEEE floating point. Using this option
6097 constitutes an ABI change, and requires glibc support.
6098 * Various changes to improve performance of generated code have been
6099 implemented, including:
6100 + In functions that do not require a literal pool, register %r13
6101 (which is traditionally reserved as literal pool pointer), can
6102 now be freely used for other purposes by the compiler.
6103 + More precise tracking of register use allows the compiler to
6104 generate more efficient function prolog and epilog code in
6106 + The SEARCH STRING, COMPARE LOGICAL STRING, and MOVE STRING
6107 instructions are now used to implement C string functions.
6108 + The MOVE CHARACTER instruction with single byte overlap is now
6109 used to implement the memset function with non-zero fill byte.
6110 + The LOAD ZERO instructions are now used where appropriate.
6111 + The INSERT CHARACTERS UNDER MASK, STORE CHARACTERS UNDER MASK,
6112 and INSERT IMMEDIATE instructions are now used more frequently
6113 to optimize bitfield operations.
6114 + The BRANCH ON COUNT instruction is now used more frequently.
6115 In particular, the fact that a loop contains a subroutine call
6116 no longer prevents the compiler from using this instruction.
6117 + The compiler is now aware that all shift and rotate
6118 instructions implicitly truncate the shift count to six bits.
6119 * Back-end support for the following generic features has been
6121 + The full set of [5]built-in functions for atomic memory
6123 + The -fstack-protector feature.
6124 + The optimization pass avoiding unnecessary stores of incoming
6125 argument registers in functions with variable argument list.
6129 * The default code model in 64-bit mode has been changed from
6130 Medium/Anywhere to Medium/Middle on Solaris.
6131 * TLS support is disabled by default on Solaris prior to release 10.
6132 It can be enabled on TLS-capable Solaris 9 versions (4/04 release
6133 and later) by specifying --enable-tls at configure time.
6137 * Support has been added for this new architecture.
6141 Documentation improvements
6143 Other significant improvements
6145 * GCC can now emit code for protecting applications from
6146 stack-smashing attacks. The protection is realized by buffer
6147 overflow detection and reordering of stack variables to avoid
6149 * Some built-in functions have been fortified to protect them against
6150 various buffer overflow (and format string) vulnerabilities.
6151 Compared to the mudflap bounds checking feature, the safe builtins
6152 have far smaller overhead. This means that programs built using
6153 safe builtins should not experience any measurable slowdown.
6157 This is the [6]list of problem reports (PRs) from GCC's bug tracking
6158 system that are known to be fixed in the 4.1.2 release. This list might
6159 not be complete (that is, it is possible that some PRs that have been
6160 fixed are not listed here).
6162 When generating code for a shared library, GCC now recognizes that
6163 global functions may be replaced when the program runs. Therefore, it
6164 is now more conservative in deducing information from the bodies of
6165 functions. For example, in this example:
6170 cout << "Exception";
6174 G++ would previously have optimized away the catch clause, since it
6175 would have concluded that f cannot throw exceptions. Because users may
6176 replace f with another function in the main body of the program, this
6177 optimization is unsafe, and is no longer performed. If you wish G++ to
6178 continue to optimize as before, you must add a throw() clause to the
6179 declaration of f to make clear that it does not throw exceptions.
6182 For questions related to the use of GCC, please consult these web
6183 pages and the [7]GCC manuals. If that fails, the
6184 [8]gcc-help@gcc.gnu.org mailing list might help. Comments on these
6185 web pages and the development of GCC are welcome on our developer
6186 list at [9]gcc@gcc.gnu.org. All of [10]our lists have public
6189 Copyright (C) [11]Free Software Foundation, Inc. Verbatim copying and
6190 distribution of this entire article is permitted in any medium,
6191 provided this notice is preserved.
6193 These pages are [12]maintained by the GCC team. Last modified
6198 1. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2
6199 2. http://developer.classpath.org/mediation/ClasspathGraphicsImagesText
6200 3. http://gcc.gnu.org/ml/java/2005-05/msg00260.html
6201 4. http://developer.classpath.org/doc/
6202 5. http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
6203 6. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.1.2
6204 7. http://gcc.gnu.org/onlinedocs/
6205 8. mailto:gcc-help@gcc.gnu.org
6206 9. mailto:gcc@gcc.gnu.org
6207 10. http://gcc.gnu.org/lists.html
6208 11. http://www.fsf.org/
6209 12. http://gcc.gnu.org/about.html
6210 13. http://validator.w3.org/check/referer
6211 ======================================================================
6212 http://gcc.gnu.org/gcc-4.0/index.html
6213 GCC 4.0 Release Series
6217 The [1]GNU project and the GCC developers are pleased to announce the
6218 release of GCC 4.0.4.
6220 This release is a bug-fix release, containing fixes for regressions in
6221 GCC 4.0.3 relative to previous releases of GCC.
6226 January 31, 2007 ([2]changes)
6229 March 10, 2006 ([3]changes)
6232 September 28, 2005 ([4]changes)
6235 July 7, 2005 ([5]changes)
6238 April 20, 2005 ([6]changes)
6240 References and Acknowledgements
6242 GCC used to stand for the GNU C Compiler, but since the compiler
6243 supports several other languages aside from C, it now stands for the
6244 GNU Compiler Collection.
6246 A list of [7]successful builds is updated as new information becomes
6249 The GCC developers would like to thank the numerous people that have
6250 contributed new features, improvements, bug fixes, and other changes as
6251 well as test results to GCC. This [8]amazing group of volunteers is
6252 what makes GCC successful.
6254 For additional information about GCC please refer to the [9]GCC project
6255 web site or contact the [10]GCC development mailing list.
6257 To obtain GCC please use [11]our mirror sites, or [12]our SVN server.
6260 For questions related to the use of GCC, please consult these web
6261 pages and the [13]GCC manuals. If that fails, the
6262 [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these
6263 web pages and the development of GCC are welcome on our developer
6264 list at [15]gcc@gcc.gnu.org. All of [16]our lists have public
6267 Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
6268 distribution of this entire article is permitted in any medium,
6269 provided this notice is preserved.
6271 These pages are [18]maintained by the GCC team. Last modified
6276 1. http://www.gnu.org/
6277 2. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4
6278 3. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.3
6279 4. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.2
6280 5. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.1
6281 6. http://gcc.gnu.org/gcc-4.0/changes.html
6282 7. http://gcc.gnu.org/gcc-4.0/buildstat.html
6283 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
6284 9. http://gcc.gnu.org/index.html
6285 10. mailto:gcc@gcc.gnu.org
6286 11. http://gcc.gnu.org/mirrors.html
6287 12. http://gcc.gnu.org/svn.html
6288 13. http://gcc.gnu.org/onlinedocs/
6289 14. mailto:gcc-help@gcc.gnu.org
6290 15. mailto:gcc@gcc.gnu.org
6291 16. http://gcc.gnu.org/lists.html
6292 17. http://www.fsf.org/
6293 18. http://gcc.gnu.org/about.html
6294 19. http://validator.w3.org/check/referer
6295 ======================================================================
6296 http://gcc.gnu.org/gcc-4.0/changes.html
6297 GCC 4.0 Release Series
6298 Changes, New Features, and Fixes
6300 The latest release in the 4.0 release series is [1]GCC 4.0.4.
6304 * GCC now generates location lists by default when compiling with
6305 debug info and optimization.
6306 + GDB 6.0 and older crashes when it sees location lists. GDB 6.1
6307 or later is needed to debug binaries containing location
6309 + When you are trying to view a value of a variable in a part of
6310 a function where it has no location (for example when the
6311 variable is no longer used and thus its location was used for
6312 something else) GDB will say that it is not available.
6313 You can disable generating location lists by -fno-var-tracking.
6314 * GCC no longer accepts the -fwritable-strings option. Use named
6315 character arrays when you need a writable string.
6316 * The options -freduce-all-givs and -fmove-all-movables have been
6317 discontinued. They were used to circumvent a shortcoming in the
6318 heuristics of the old loop optimization code with respect to common
6319 Fortran constructs. The new (tree) loop optimizer works differently
6320 and doesn't need those work-arounds.
6321 * The graph-coloring register allocator, formerly enabled by the
6322 option -fnew-ra, has been discontinued.
6323 * -I- has been deprecated. -iquote is meant to replace the need for
6325 * The MIPS -membedded-pic and -mrnames options have been removed.
6326 * All MIPS targets now require the GNU assembler. In particular, IRIX
6327 configurations can no longer use the MIPSpro assemblers, although
6328 they do still support the MIPSpro linkers.
6329 * The SPARC option -mflat has been removed.
6330 * English-language diagnostic messages will now use Unicode quotation
6331 marks in UTF-8 locales. (Non-English messages already used the
6332 quotes appropriate for the language in previous releases.) If your
6333 terminal does not support UTF-8 but you are using a UTF-8 locale
6334 (such locales are the default on many GNU/Linux systems) then you
6335 should set LC_CTYPE=C in the environment to disable that locale.
6336 Programs that parse diagnostics and expect plain ASCII
6337 English-language messages should set LC_ALL=C. See [2]Markus Kuhn's
6338 explanation of Unicode quotation marks for more information.
6339 * The specs file is no longer installed on most platforms. Most users
6340 will be totally unaffected. However, if you are accustomed to
6341 editing the specs file yourself, you will now have to use the
6342 -dumpspecs option to generate the specs file, and then edit the
6345 General Optimizer Improvements
6347 * The [3]tree ssa branch has been merged. This merge has brought in a
6348 completely new optimization framework based on a higher level
6349 intermediate representation than the existing RTL representation.
6350 Numerous new code transformations based on the new framework are
6351 available in GCC 4.0, including:
6352 + Scalar replacement of aggregates
6353 + Constant propagation
6354 + Value range propagation
6355 + Partial redundancy elimination
6356 + Load and store motion
6357 + Strength reduction
6358 + Dead store elimination
6359 + Dead and unreachable code elimination
6360 + [4]Autovectorization
6362 + Tail recursion by accumulation
6363 Many of these passes outperform their counterparts from previous
6365 * [5]Swing Modulo Scheduling (SMS). An RTL level instruction
6366 scheduling optimization intended for loops that perform heavy
6369 New Languages and Language specific improvements
6373 * The sentinel attribute has been added to GCC. This function
6374 attribute allows GCC to warn when variadic functions such as execl
6375 are not NULL terminated. See the GCC manual for a complete
6376 description of its behavior.
6377 * Given __attribute__((alias("target"))) it is now an error if target
6378 is not a symbol, defined in the same translation unit. This also
6379 applies to aliases created by #pragma weak alias=target. This is
6380 because it's meaningless to define an alias to an undefined symbol.
6381 On Solaris, the native assembler would have caught this error, but
6386 * The -Wstrict-aliasing=2 option has been added. This warning catches
6387 all unsafe cases, but it may also give a warning for some cases
6389 * The cast-as-lvalue, conditional-expression-as-lvalue and
6390 compound-expression-as-lvalue extensions, which were deprecated in
6391 3.3.4 and 3.4, have been removed.
6392 * The -fwritable-strings option, which was deprecated in 3.4, has
6394 * #pragma pack() semantics have been brought closer to those used by
6395 other compilers. This also applies to C++.
6396 * Taking the address of a variable with register storage is invalid
6397 in C. GCC now issues an error instead of a warning.
6398 * Arrays of incomplete element type are invalid in C. GCC now issues
6399 an error for such arrays. Declarations such as extern struct s x[];
6400 (where struct s has not been defined) can be moved after the
6401 definition of struct s. Function parameters declared as arrays of
6402 incomplete type can instead be declared as pointers.
6406 * When compiling without optimizations (-O0), the C++ frontend is
6407 much faster than in any previous versions of GCC. Independent
6408 testers have measured speed-ups up to 25% in real-world production
6409 code, compared to the 3.4 family (which was already the fastest
6410 version to date). Upgrading from older versions might show even
6411 bigger improvements.
6412 * ELF visibility attributes can now be applied to a class type, so
6413 that it affects every member function of a class at once, without
6414 having to specify each individually:
6415 class __attribute__ ((visibility("hidden"))) Foo
6420 The syntax is deliberately similar to the __declspec() system used
6421 by Microsoft Windows based compilers, allowing cross-platform
6422 projects to easily reuse their existing macro system for denoting
6423 exports and imports. By explicitly marking internal classes never
6424 used outside a binary as hidden, one can completely avoid PLT
6425 indirection overheads during their usage by the compiler. You can
6426 find out more about the advantages of this at
6427 [6]http://www.akkadia.org/drepper/dsohowto.pdf
6428 * The -fvisibility-inlines-hidden option has been added which marks
6429 all inlineable functions as having hidden ELF visibility, thus
6430 removing their symbol and typeinfo from the exported symbol table
6431 of the output ELF binary. Using this option can reduce the exported
6432 symbol count of template-heavy code by up to 40% with no code
6433 change at all, thus notably improving link and load times for the
6434 binary as well as a reduction in size of up to 10%. Also, check the
6435 new [7]-fvisibility option.
6436 * The compiler now uses the library interface specified by the [8]C++
6437 ABI for thread-safe initialization of function-scope static
6438 variables. Most users should leave this alone, but embedded
6439 programmers may want to disable this by specifying
6440 -fno-threadsafe-statics for a small savings in code size.
6441 * Taking the address of an explicit register variable is no longer
6442 supported. Note that C++ allows taking the address of variables
6443 with register storage so this will continue to compile with a
6444 warning. For example, assuming that r0 is a machine register:
6445 register int foo asm ("r0");
6447 &foo; // error, no longer accepted
6448 &bar; // OK, with a warning
6449 * G++ has an undocumented extension to virtual function covariancy
6450 rules that allowed the overrider to return a type that was
6451 implicitly convertable to the overridden function's return type.
6452 For instance a function returning void * could be overridden by a
6453 function returning T *. This is now deprecated and will be removed
6454 in a future release.
6455 * The G++ minimum and maximum operators (<? and >?) and their
6456 compound forms (<?=) and >?=) have been deprecated and will be
6457 removed in a future version. Code using these operators should be
6458 modified to use std::min and std::max instead.
6459 * Declaration of nested classes of class templates as friends are
6461 template <typename T> struct A {
6465 template <typename T> friend class A<T>::B;
6467 This complements the feature member functions of class templates as
6468 friends introduced in GCC 3.4.0.
6469 * When declaring a friend class using an unqualified name, classes
6470 outside the innermost non-class scope are not searched:
6474 friend class A; // Refer to N::A which has not been declared yet
6475 // because name outside namespace N are not searched
6476 friend class ::A; // Refer to ::A
6479 Hiding the friend name until declaration is still not implemented.
6480 * Friends of classes defined outside their namespace are correctly
6486 friend class B; // Refer to N::B in GCC 4.0.0
6487 // but ::B in earlier versions of GCC
6490 Runtime Library (libstdc++)
6492 * Optimization work:
6493 + Added efficient specializations of istream functions for char
6495 + Further performance tuning of strings, in particular wrt
6496 single-char append and getline.
6497 + iter_swap - and therefore most of the mutating algorithms -
6498 now makes an unqualified call to swap when the value_type of
6499 the two iterators is the same.
6500 * A large subset of the features in Technical Report 1 (TR1 for
6501 short) is experimentally delivered (i.e., no guarantees about the
6502 implementation are provided. In particular it is not promised that
6503 the library will remain link-compatible when code using TR1 is
6505 + General utilities such as reference_wrapper and shared_ptr.
6506 + Function objects, i.e., result_of, mem_fn, bind, function.
6507 + Support for metaprogramming.
6508 + New containers such as tuple, array, unordered_set,
6509 unordered_map, unordered_multiset, unordered_multimap.
6510 * As usual, many bugs have been fixed and LWG resolutions implemented
6511 for the first time (e.g., DR 409).
6515 * In order to prevent naming conflicts with other implementations of
6516 these tools, some GCJ binaries have been renamed:
6517 + rmic is now grmic,
6518 + rmiregistry is now grmiregistry, and
6519 + jar is now fastjar.
6520 In particular, these names were problematic for the jpackage.org
6521 packaging conventions which install symlinks in /usr/bin that point
6522 to the preferred versions of these tools.
6523 * The -findirect-dispatch argument to the compiler now works and
6524 generates code following a new "binary compatibility" ABI. Code
6525 compiled this way follows the binary compatibility rules of the
6526 Java Language Specification.
6527 * libgcj now has support for using GCJ as a JIT, using the
6528 gnu.gcj.jit family of system properties.
6529 * libgcj can now find a shared library corresponding to the bytecode
6530 representation of a class. See the documentation for the new
6531 gcj-dbtool program, and the new gnu.gcj.precompiled.db.path system
6533 * There have been many improvements to the class library. Here are
6535 + Much more of AWT and Swing exist.
6536 + Many new packages and classes were added, including
6537 java.util.regex, java.net.URI, javax.crypto,
6538 javax.crypto.interfaces, javax.crypto.spec, javax.net,
6539 javax.net.ssl, javax.security.auth,
6540 javax.security.auth.callback, javax.security.auth.login,
6541 javax.security.auth.x500, javax.security.sasl, org.ietf.jgss,
6542 javax.imageio, javax.imageio.event, javax.imageio.spi,
6543 javax.print, javax.print.attribute,
6544 javax.print.attribute.standard, javax.print.event, and
6546 + Updated SAX and DOM, and imported GNU JAXP
6550 * A new [9]Fortran front end has replaced the aging GNU Fortran 77
6551 front end. The new front end supports Fortran 90 and Fortran 95. It
6552 may not yet be as stable as the old Fortran front end.
6556 * Ada (with tasking and Zero Cost Exceptions) is now available on
6557 many more targets, including but not limited to: alpha-linux,
6558 hppa-hpux, hppa-linux, powerpc-darwin, powerpc-linux, s390-linux,
6559 s390x-linux, sparc-linux.
6560 * Some of the new Ada 2005 features are now implemented like
6561 Wide_Wide_Character and Ada.Containers.
6562 * Many bugs have been fixed, tools and documentation improved.
6563 * To compile Ada from the sources, install an older working Ada
6564 compiler and then use --enable-languages=ada at configuration time,
6565 since the Ada frontend is not currently activated by default. See
6566 the [10]Installing GCC for details.
6568 New Targets and Target Specific Improvements
6572 * The frame layout has changed. In the new layout, the prologue of a
6573 function first saves registers and then allocate space for locals,
6574 resulting in an 1% improvement on code size.
6576 IA-32/x86-64 (AMD64)
6578 * The acos, asin, drem, exp10, exp2, expm1, fmod, ilogb, log10,
6579 log1p, log2, logb and tan mathematical builtins (and their float
6580 and long double variants) are now implemented as inline x87
6581 intrinsics when using -ffast-math.
6582 * The ceil, floor, nearbyint, rint and trunc mathematical builtins
6583 (and their float and long double variants) are now implemented as
6584 inline x87 intrinsics when using -ffast-math.
6585 * The x87's fsincos instruction is now used automatically with
6586 -ffast-math when calculating both the sin and cos of the same
6588 * Instruction selection for multiplication and division by constants
6593 * Floating point division, integer division and sqrt are now inlined,
6594 resulting in significant performance improvements on some codes.
6598 * Division by zero checks now use conditional traps if the target
6599 processor supports them. This decreases code size by one word per
6600 division operation. The old behavior (branch and break) can be
6601 obtained either at configure time by passing --with-divide=breaks
6602 to configure or at runtime by passing -mdivide-breaks to GCC.
6603 * Support for MIPS64 paired-single instructions has been added. It is
6604 enabled by -mpaired-single and can be accessed using both the
6605 target-independent vector extensions and new MIPS-specific built-in
6607 * Support for the MIPS-3D ASE has been added. It is enabled by
6608 -mips3d and provides new MIPS-3D-specific built-in functions.
6609 * The -mexplicit-relocs option now supports static n64 code (as is
6610 used, for example, in 64-bit linux kernels). -mexplicit-relocs
6611 should now be feature-complete and is enabled by default when GCC
6612 is configured to use a compatible assembler.
6613 * Support for the NEC VR4130 series has been added. This support
6614 includes the use of VR-specific instructions and a new VR4130
6615 scheduler. Full VR4130 support can be selected with -march=vr4130
6616 while code for any ISA can be tuned for the VR4130 using
6617 -mtune=vr4130. There is also a new -mvr4130-align option that
6618 produces better schedules at the cost of increased code size.
6619 * Support for the Broadcom SB-1 has been extended. There is now an
6620 SB-1 scheduler as well as support for the SB-1-specific
6621 paired-single instructions. Full SB-1 support can be selected with
6622 -march=sb1 while code for any ISA can be optimized for the SB-1
6624 * The compiler can now work around errata in R4000, R4400, VR4120 and
6625 VR4130 processors. These workarounds are enabled by -mfix-r4000,
6626 -mfix-r4400, -mfix-vr4120 and -mfix-vr4130 respectively. The VR4120
6627 and VR4130 workarounds need binutils 2.16 or above.
6628 * IRIX shared libraries are now installed into the standard library
6629 directories: o32 libraries go into lib/, n32 libraries go into
6630 lib32/ and n64 libraries go into lib64/.
6631 * The compiler supports a new -msym32 option. It can be used to
6632 optimize n64 code in which all symbols are known to have 32-bit
6637 * New command-line options help to generate code intended to run in
6638 an environment where stack space is restricted, e.g. Linux kernel
6640 + -mwarn-framesize and -mwarn-dynamicstack trigger compile-time
6641 warnings for single functions that require large or dynamic
6643 + -mstack-size and -mstack-guard generate code that checks for
6644 stack overflow at run time.
6645 + -mpacked-stack generates code that reduces the stack frame
6646 size of many functions by reusing unneeded parts of the stack
6648 * The -msoft-float option now ensures that generated code never
6649 accesses floating point registers.
6650 * The s390x-ibm-tpf target now fully supports C++, including
6651 exceptions and threads.
6652 * Various changes to improve performance of the generated code have
6653 been implemented, including:
6654 + GCC now uses sibling calls where possible.
6655 + Condition code handling has been optimized, allowing GCC to
6656 omit redundant comparisons in certain cases.
6657 + The cost function guiding many optimizations has been refined
6658 to more accurately represent the z900 and z990 processors.
6659 + The ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL WITH BORROW
6660 instructions are now used to avoid conditional branches in
6662 + The back end now uses the LEGITIMIZE_RELOAD_ADDRESS feature to
6663 optimize address arithmetic required to access large stack
6665 + GCC now makes more efficient use of memory-to-memory type
6666 instructions (MVC, CLC, ...).
6667 + More precise tracking of special register use allows better
6668 instruction scheduling, in particular of the function prologue
6669 and epilogue sequences.
6670 + The Java front end now generates inline code to implement
6671 integer division, instead of calling library routines.
6675 * The options -mv8, -msparclite, -mcypress, -msupersparc, -mf930 and
6676 -mf934 have been removed. They have been replaced with -mcpu=xxx.
6677 * The internal model used to estimate the relative cost of each
6678 instruction has been updated. It is expected to give better results
6679 on recent UltraSPARC processors.
6680 * Code generation for function prologues and epilogues has been
6681 improved, resulting in better scheduling and allowing multiple exit
6682 points in functions.
6683 * Support for Sun's Visual Instruction Set (VIS) has been enhanced.
6684 It is enabled by -mvis and provides new built-in functions for VIS
6685 instructions on UltraSPARC processors.
6686 * The option -mapp-regs has been turned on by default on Solaris too.
6690 * Novell NetWare (on ix86, no other hardware platform was ever really
6691 supported by this OS) has been re-enabled and the ABI supported by
6692 GCC has been brought into sync with that of MetroWerks CodeWarrior
6693 (the ABI previously supported was that of some Unix systems, which
6694 NetWare never tried to support).
6698 Support for a number of older systems has been declared obsolete in GCC
6699 4.0. Unless there is activity to revive them, the next release of GCC
6700 will have their sources permanently removed.
6702 All GCC ports for the following processor architectures have been
6706 * National Semiconductor NS32K
6707 * Texas Instruments TMS320C[34]x
6709 Also, those for some individual systems have been obsoleted:
6711 + SPARClite-based systems (sparclite-*-coff, sparclite-*-elf,
6713 + OpenBSD 32-bit (sparc-*-openbsd*)
6715 Documentation improvements
6717 Other significant improvements
6719 * Location lists are now generated by default when compiling with
6720 debug info and optimization. Location lists provide more accurate
6721 debug info about locations of variables and they allow debugging
6722 code compiled with -fomit-frame-pointer.
6723 * The -fvisibility option has been added which allows the default ELF
6724 visibility of all symbols to be set per compilation and the new
6725 #pragma GCC visibility preprocessor command allows the setting of
6726 default ELF visibility for a region of code. Using
6727 -fvisibility=hidden especially in combination with the new
6728 -fvisibility-inlines-hidden can yield substantial improvements in
6729 output binary quality including avoiding PLT indirection overheads,
6730 reduction of the exported symbol count by up to 60% (with resultant
6731 improvements to link and load times), better scope for the
6732 optimizer to improve code and up to a 20% reduction in binary size.
6733 Using these options correctly yields a binary with a similar symbol
6734 count to a Windows DLL.
6735 Perhaps more importantly, this new feature finally allows (with
6736 careful planning) complete avoidance of symbol clashes when
6737 manually loading shared objects with RTLD_GLOBAL, thus finally
6738 solving problems many projects such as python were forced to use
6739 RTLD_LOCAL for (with its resulting issues for C++ correctness). You
6740 can find more information about using these options at
6741 [11]http://gcc.gnu.org/wiki/Visibility.
6742 __________________________________________________________________
6746 This is the [12]list of problem reports (PRs) from GCC's bug tracking
6747 system that are known to be fixed in the 4.0.1 release. This list might
6748 not be complete (that is, it is possible that some PRs that have been
6749 fixed are not listed here).
6753 This is the [13]list of problem reports (PRs) from GCC's bug tracking
6754 system that are known to be fixed in the 4.0.2 release. This list might
6755 not be complete (that is, it is possible that some PRs that have been
6756 fixed are not listed here).
6758 Unfortunately, due to a release engineering failure, this release has a
6759 regression on Solaris that will affect some C++ programs. We suggest
6760 that Solaris users apply a [14]patch that corrects the problem. Users
6761 who do not wish to apply the patch should explicitly link C++ programs
6762 with the -pthreads option, even if they do not use threads. This
6763 problem has been corrected in the current 4.0 branch sources and will
6764 not be present in GCC 4.0.3.
6768 Starting with this release, the function getcontext is recognized by
6769 the compiler as having the same semantics as the setjmp function. In
6770 particular, the compiler will ensure that all registers are dead before
6771 calling such a function and will emit a warning about the variables
6772 that may be clobbered after the second return from the function.
6776 This is the [15]list of problem reports (PRs) from GCC's bug tracking
6777 system that are known to be fixed in the 4.0.4 release. This list might
6778 not be complete (that is, it is possible that some PRs that have been
6779 fixed are not listed here).
6781 The 4.0.4 release is provided for those that require a high degree of
6782 binary compatibility with previous 4.0.x releases. For most users, the
6783 GCC team recommends that version 4.1.1 or later be used instead."
6786 For questions related to the use of GCC, please consult these web
6787 pages and the [16]GCC manuals. If that fails, the
6788 [17]gcc-help@gcc.gnu.org mailing list might help. Comments on these
6789 web pages and the development of GCC are welcome on our developer
6790 list at [18]gcc@gcc.gnu.org. All of [19]our lists have public
6793 Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
6794 distribution of this entire article is permitted in any medium,
6795 provided this notice is preserved.
6797 These pages are [21]maintained by the GCC team. Last modified
6802 1. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4
6803 2. http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
6804 3. http://gcc.gnu.org/projects/tree-ssa/
6805 4. http://gcc.gnu.org/projects/tree-ssa/vectorization.html
6806 5. http://gcc.gnu.org/news/sms.html
6807 6. http://www.akkadia.org/drepper/dsohowto.pdf
6808 7. http://gcc.gnu.org/gcc-4.0/changes.html#visibility
6809 8. http://mentorembedded.github.com/cxx-abi/
6810 9. http://gcc.gnu.org/fortran/
6811 10. http://gcc.gnu.org/install/
6812 11. http://gcc.gnu.org/wiki/Visibility
6813 12. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.1
6814 13. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.2
6815 14. http://gcc.gnu.org/ml/gcc-cvs/2005-09/msg00984.html
6816 15. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.4
6817 16. http://gcc.gnu.org/onlinedocs/
6818 17. mailto:gcc-help@gcc.gnu.org
6819 18. mailto:gcc@gcc.gnu.org
6820 19. http://gcc.gnu.org/lists.html
6821 20. http://www.fsf.org/
6822 21. http://gcc.gnu.org/about.html
6823 22. http://validator.w3.org/check/referer
6824 ======================================================================
6825 http://gcc.gnu.org/gcc-3.4/index.html
6826 GCC 3.4 Release Series
6830 The [1]GNU project and the GCC developers are pleased to announce the
6831 release of GCC 3.4.6.
6833 This release is a bug-fix release, containing fixes for regressions in
6834 GCC 3.4.4 relative to previous releases of GCC. This is the last of the
6837 The GCC 3.4 release series includes numerous [2]new features,
6838 improvements, bug fixes, and other changes, thanks to an [3]amazing
6839 group of volunteers.
6844 March 6, 2006 ([4]changes)
6847 November 30, 2005 ([5]changes)
6850 May 18, 2005 ([6]changes)
6853 November 4, 2004 ([7]changes)
6856 September 6, 2004 ([8]changes)
6859 July 1, 2004 ([9]changes)
6862 April 18, 2004 ([10]changes)
6864 References and Acknowledgements
6866 GCC used to stand for the GNU C Compiler, but since the compiler
6867 supports several other languages aside from C, it now stands for the
6868 GNU Compiler Collection.
6870 A list of [11]successful builds is updated as new information becomes
6873 The GCC developers would like to thank the numerous people that have
6874 contributed new features, improvements, bug fixes, and other changes as
6875 well as test results to GCC. This [12]amazing group of volunteers is
6876 what makes GCC successful.
6878 For additional information about GCC please refer to the [13]GCC
6879 project web site or contact the [14]GCC development mailing list.
6881 To obtain GCC please use [15]our mirror sites, or [16]our SVN server.
6884 For questions related to the use of GCC, please consult these web
6885 pages and the [17]GCC manuals. If that fails, the
6886 [18]gcc-help@gcc.gnu.org mailing list might help. Comments on these
6887 web pages and the development of GCC are welcome on our developer
6888 list at [19]gcc@gcc.gnu.org. All of [20]our lists have public
6891 Copyright (C) [21]Free Software Foundation, Inc. Verbatim copying and
6892 distribution of this entire article is permitted in any medium,
6893 provided this notice is preserved.
6895 These pages are [22]maintained by the GCC team. Last modified
6900 1. http://www.gnu.org/
6901 2. http://gcc.gnu.org/gcc-3.4/changes.html
6902 3. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
6903 4. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6
6904 5. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.5
6905 6. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.4
6906 7. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.3
6907 8. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.2
6908 9. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.1
6909 10. http://gcc.gnu.org/gcc-3.4/changes.html
6910 11. http://gcc.gnu.org/gcc-3.4/buildstat.html
6911 12. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
6912 13. http://gcc.gnu.org/index.html
6913 14. mailto:gcc@gcc.gnu.org
6914 15. http://gcc.gnu.org/mirrors.html
6915 16. http://gcc.gnu.org/svn.html
6916 17. http://gcc.gnu.org/onlinedocs/
6917 18. mailto:gcc-help@gcc.gnu.org
6918 19. mailto:gcc@gcc.gnu.org
6919 20. http://gcc.gnu.org/lists.html
6920 21. http://www.fsf.org/
6921 22. http://gcc.gnu.org/about.html
6922 23. http://validator.w3.org/check/referer
6923 ======================================================================
6924 http://gcc.gnu.org/gcc-3.4/changes.html
6925 GCC 3.4 Release Series
6926 Changes, New Features, and Fixes
6928 The final release in the 3.4 release series is [1]GCC 3.4.6. The series
6931 GCC 3.4 has [2]many improvements in the C++ frontend. Before reporting
6932 a bug, please make sure it's really GCC, and not your code, that is
6937 * GNU Make is now required to build GCC.
6938 * With -nostdinc the preprocessor used to ignore both standard
6939 include paths and include paths contained in environment variables.
6940 It was neither documented nor intended that environment variable
6941 paths be ignored, so this has been corrected.
6942 * GCC no longer accepts the options -fvolatile, -fvolatile-global and
6943 -fvolatile-static. It is unlikely that they worked correctly in any
6945 * GCC no longer ships <varargs.h>. Use <stdarg.h> instead.
6946 * Support for all the systems [3]obsoleted in GCC 3.3 has been
6947 removed from GCC 3.4. See below for a [4]list of systems which are
6948 obsoleted in this release.
6949 * GCC now requires an ISO C90 (ANSI C89) C compiler to build. K&R C
6950 compilers will not work.
6951 * The implementation of the [5]MIPS ABIs has changed. As a result,
6952 the code generated for certain MIPS targets will not be binary
6953 compatible with earlier releases.
6954 * In previous releases, the MIPS port had a fake "hilo" register with
6955 the user-visible name accum. This register has been removed.
6956 * The implementation of the [6]SPARC ABIs has changed. As a result,
6957 the code generated will not be binary compatible with earlier
6958 releases in certain cases.
6959 * The configure option --enable-threads=pthreads has been removed;
6960 use --enable-threads=posix instead, which should have the same
6962 * Code size estimates used by inlining heuristics for C, Objective-C,
6963 C++ and Java have been redesigned significantly. As a result the
6964 parameters of -finline-insns, --param max-inline-insns-single and
6965 --param max-inline-insns-auto need to be reconsidered.
6966 * --param max-inline-slope and --param min-inline-insns have been
6967 removed; they are not needed for the new bottom-up inlining
6969 * The new unit-at-a-time compilation scheme has several compatibility
6971 + The order in which functions, variables, and top-level asm
6972 statements are emitted may have changed. Code relying on some
6973 particular ordering needs to be updated. The majority of such
6974 top-level asm statements can be replaced by section
6976 + Unreferenced static variables and functions are removed. This
6977 may result in undefined references when an asm statement
6978 refers to the variable/function directly. In that case either
6979 the variable/function shall be listed in asm statement operand
6980 or in the case of top-level asm statements the attribute used
6981 shall be used to force function/variable to be always output
6982 and considered as a possibly used by unknown code.
6983 For variables the attribute is accepted only by GCC 3.4 and
6984 newer, while for earlier versions it is sufficient to use
6985 unused to silence warnings about the variables not being
6986 referenced. To keep code portable across different GCC
6987 versions, you can use appropriate preprocessor conditionals.
6988 + Static functions now can use non-standard passing conventions
6989 that may break asm statements calling functions directly.
6990 Again the attribute used shall be used to prevent this
6992 As a temporary workaround, -fno-unit-at-a-time can be used, but
6993 this scheme may not be supported by future releases of GCC.
6994 * GCC 3.4 automatically places zero-initialized variables in the .bss
6995 section on some operating systems. Versions of GNU Emacs up to (and
6996 including) 21.3 will not work correctly when using this
6997 optimization; you can use -fno-zero-initialized-in-bss to disable
6999 * If GCC 3.4 is configured with --enable-threads=posix (the default
7000 on most targets that support pthreads) then _REENTRANT will be
7001 defined unconditionally by some libstdc++ headers. C++ code which
7002 relies on that macro to detect whether multi-threaded code is being
7003 compiled might change in meaning, possibly resulting in linker
7004 errors for single-threaded programs. Affected users of [7]Boost
7005 should compile single-threaded code with -DBOOST_DISABLE_THREADS.
7006 See Bugzilla for [8]more information.
7008 General Optimizer Improvements
7010 * Usability of the profile feedback and coverage testing has been
7012 + Performance of profiled programs has been improved by faster
7013 profile merging code.
7014 + Better use of the profile feedback for optimization (loop
7015 unrolling and loop peeling).
7016 + File locking support allowing fork() calls and parallel runs
7017 of profiled programs.
7018 + Coverage file format has been redesigned.
7019 + gcov coverage tool has been improved.
7020 + make profiledbootstrap available to build a faster compiler.
7021 Experiments made on i386 hardware showed an 11% speedup on -O0
7022 and a 7.5% speedup on -O2 compilation of a [9]large C++
7024 + New value profiling pass enabled via -fprofile-values
7025 + New value profile transformations pass enabled via -fvpt aims
7026 to optimize some code sequences by exploiting knowledge about
7027 value ranges or other properties of the operands. At the
7028 moment a conversion of expensive divisions into cheaper
7029 operations has been implemented.
7030 + New -fprofile-generate and -fprofile-use command-line options
7031 to simplify the use of profile feedback.
7032 * A new unit-at-a-time compilation scheme for C, Objective-C, C++ and
7033 Java which is enabled via -funit-at-a-time (and implied by -O2). In
7034 this scheme a whole file is parsed first and optimized later. The
7035 following basic inter-procedural optimizations are implemented:
7036 + Removal of unreachable functions and variables
7037 + Discovery of local functions (functions with static linkage
7038 whose address is never taken)
7039 + On i386, these local functions use register parameter passing
7041 + Reordering of functions in topological order of the call graph
7042 to enable better propagation of optimizing hints (such as the
7043 stack alignments needed by functions) in the back end.
7044 + Call graph based out-of-order inlining heuristics which allows
7045 to limit overall compilation unit growth (--param
7046 inline-unit-growth).
7047 Overall, the unit-at-a-time scheme produces a 1.3% improvement for
7048 the SPECint2000 benchmark on the i386 architecture (AMD Athlon
7050 * More realistic code size estimates used by inlining for C,
7051 Objective-C, C++ and Java. The growth of large functions can now be
7052 limited via --param large-function-insns and --param
7053 large-function-growth.
7054 * A new cfg-level loop optimizer pass replaces the old loop unrolling
7055 pass and adds two other loop transformations -- loop peeling and
7056 loop unswitching -- and also uses the profile feedback to limit
7057 code growth. (The three optimizations are enabled by
7058 -funroll-loops, -fpeel-loops and -funswitch-loops flags,
7060 The old loop unroller still can be enabled by -fold-unroll-loops
7061 and may produce better code in some cases, especially when the
7062 webizer optimization pass is not run.
7063 * A new web construction pass enabled via -fweb (and implied by -O3)
7064 improves the quality of register allocation, CSE, first scheduling
7065 pass and some other optimization passes by avoiding re-use of
7066 pseudo registers with non-overlapping live ranges. The pass almost
7067 always improves code quality but does make debugging difficult and
7068 thus is not enabled by default by -O2
7069 The pass is especially effective as cleanup after code duplication
7070 passes, such as the loop unroller or the tracer.
7071 * Experimental implementations of superblock or trace scheduling in
7072 the second scheduling pass can be enabled via
7073 -fsched2-use-superblocks and -fsched2-use-traces, respectively.
7075 New Languages and Language specific improvements
7079 * The Ada front end has been updated to include numerous bug fixes
7080 and enhancements. These include:
7081 + Improved project file support
7082 + Additional set of warnings about potential wrong code
7083 + Improved error messages
7084 + Improved code generation
7085 + Improved cross reference information
7087 + Better run-time check elimination
7088 + Better error recovery
7089 + More efficient implementation of unbounded strings
7090 + Added features in GNAT.Sockets, GNAT.OS_Lib, GNAT.Debug_Pools,
7092 + New GNAT.xxxx packages (e.g. GNAT.Strings,
7093 GNAT.Exception_Action)
7095 + New -gnatS switch replacing gnatpsta
7096 + Implementation of new Ada features (in particular limited
7097 with, limited aggregates)
7101 * Precompiled headers are now supported. Precompiled headers can
7102 dramatically speed up compilation of some projects. There are some
7103 known defects in the current precompiled header implementation that
7104 will result in compiler crashes in relatively rare situations.
7105 Therefore, precompiled headers should be considered a "technology
7106 preview" in this release. Read the manual for details about how to
7107 use precompiled headers.
7108 * File handling in the preprocessor has been rewritten. GCC no longer
7109 gets confused by symlinks and hardlinks, and now has a correct
7110 implementation of #import and #pragma once. These two directives
7111 have therefore been un-deprecated.
7112 * The undocumented extension that allowed C programs to have a label
7113 at the end of a compound statement, which has been deprecated since
7114 GCC 3.0, has been removed.
7115 * The cast-as-lvalue extension has been removed for C++ and
7116 deprecated for C and Objective-C. In particular, code like this:
7124 is no longer accepted for C++ and will not be accepted for C and
7125 Objective-C in a future version.
7126 * The conditional-expression-as-lvalue extension has been deprecated
7127 for C and Objective-C. In particular, code like this:
7131 will not be accepted for C and Objective-C in a future version.
7132 * The compound-expression-as-lvalue extension has been deprecated for
7133 C and Objective-C. In particular, code like this:
7137 will not be accepted for C and Objective-C in a future version. A
7138 possible non-intrusive workaround is the following:
7141 * Several [10]built-in functions such as __builtin_popcount for
7142 counting bits, finding the highest and lowest bit in a word, and
7143 parity have been added.
7144 * The -fwritable-strings option has been deprecated and will be
7146 * Many C math library functions are now recognized as built-ins and
7148 * The C, C++, and Objective-C compilers can now handle source files
7149 written in any character encoding supported by the host C library.
7150 The default input character set is taken from the current locale,
7151 and may be overridden with the -finput-charset command line option.
7152 In the future we will add support for inline encoding markers.
7156 * G++ is now much closer to full conformance to the ISO/ANSI C++
7157 standard. This means, among other things, that a lot of invalid
7158 constructs which used to be accepted in previous versions will now
7159 be rejected. It is very likely that existing C++ code will need to
7160 be fixed. This document lists some of the most common issues.
7161 * A hand-written recursive-descent C++ parser has replaced the
7162 YACC-derived C++ parser from previous GCC releases. The new parser
7163 contains much improved infrastructure needed for better parsing of
7164 C++ source codes, handling of extensions, and clean separation
7165 (where possible) between proper semantics analysis and parsing. The
7166 new parser fixes many bugs that were found in the old parser.
7167 * You must now use the typename and template keywords to disambiguate
7168 dependent names, as required by the C++ standard.
7170 typedef int mytype_t;
7173 template <class T1> struct A {
7174 template <class T2> struct B {
7178 template <int N> void bar(void)
7180 // Use 'typename' to tell the parser that T1::mytype_t names
7181 // a type. This is needed because the name is dependent (in
7182 // this case, on template parameter T1).
7183 typename T1::mytype_t x;
7188 template <class T> void template_func(void)
7190 // Use 'template' to prefix member templates within
7191 // dependent types (a has type A<T>, which depends on
7192 // the template parameter T).
7194 a.template bar<0>();
7196 // Use 'template' to tell the parser that B is a nested
7197 // template class (dependent on template parameter T), and
7198 // 'typename' because the whole A<T>::B<int> is
7199 // the name of a type (again, dependent).
7200 typename A<T>::template B<int> b;
7204 void non_template_func(void)
7206 // Outside of any template class or function, no names can be
7207 // dependent, so the use of the keyword 'typename' and 'template'
7208 // is not needed (and actually forbidden).
7214 * In a template definition, unqualified names will no longer find
7215 members of a dependent base (as specified by [temp.dep]/3 in the
7216 C++ standard). For example,
7217 template <typename T> struct B {
7225 template <typename T> struct C : B<T> {
7230 n = 0; // ::n is modified
7231 g (); // ::g is called
7234 You must make the names dependent, e.g. by prefixing them with
7235 this->. Here is the corrected definition of C<T>::h,
7236 template <typename T> void C<T>::h ()
7243 As an alternative solution (unfortunately not backwards compatible
7244 with GCC 3.3), you may use using declarations instead of this->:
7245 template <typename T> struct C : B<T> {
7258 * In templates, all non-dependent names are now looked up and bound
7259 at definition time (while parsing the code), instead of later when
7260 the template is instantiated. For instance:
7263 template <int> struct A {
7264 static void bar(void){
7273 A<0>::bar(); // Calls foo(int), used to call foo(char).
7276 * In an explicit instantiation of a class template, you must use
7277 class or struct before the template-id:
7281 template A<0>; // error, not accepted anymore
7282 template class A<0>; // OK
7283 * The "named return value" and "implicit typename" extensions have
7285 * Default arguments in function types have been deprecated and will
7287 * ARM-style name-injection of friend declarations has been deprecated
7288 and will be removed. For example: struct S { friend void f(); };
7289 void g() { f(); } will not be accepted by future versions of G++;
7290 instead a declaration of "f" will need to be present outside of the
7292 * Covariant returns are implemented for all but varadic functions
7293 that require an adjustment.
7294 * When -pedantic is used, G++ now issues errors about spurious
7295 semicolons. For example,
7296 namespace N {}; // Invalid semicolon.
7297 void f() {}; // Invalid semicolon.
7298 * G++ no longer accepts attributes for a declarator after the
7299 initializer associated with that declarator. For example,
7300 X x(1) __attribute__((...));
7301 is no longer accepted. Instead, use:
7302 X x __attribute__((...)) (1);
7303 * Inside the scope of a template class, the name of the class itself
7304 can be treated as either a class or a template. So GCC used to
7305 accept the class name as argument of type template, and template
7306 template parameter. However this is not C++ standard compliant. Now
7307 the name is not treated as a valid template template argument
7308 unless you qualify the name by its scope. For example, the code
7309 below no longer compiles.
7310 template <template <class> class TT> class X {};
7311 template <class T> class Y {
7312 X<Y> x; // Invalid, Y is always a type template parameter.
7314 The valid code for the above example is
7315 X< ::Y> x; // Valid.
7316 (Notice the space between < and : to prevent GCC to interpret this
7317 as a digraph for [.)
7318 * Friend declarations that refer to template specializations are
7319 rejected if the template has not already been declared. For
7321 template <typename T>
7323 friend void f<> (C&);
7325 is rejected. You must first declare f as a template,
7326 template <typename T>
7328 * In case of friend declarations, every name used in the friend
7329 declaration must be accessible at the point of that declaration.
7330 Previous versions of G++ used to be less strict about this and
7331 allowed friend declarations for private class members, for example.
7332 See the ISO C++ Standard Committee's [11]defect report #209 for
7334 * Declaration of member functions of class templates as friends are
7335 supported. For example,
7336 template <typename T> struct A {
7340 template <typename T> friend void A<T>::f();
7342 * You must use template <> to introduce template specializations, as
7343 required by the standard. For example,
7344 template <typename T>
7348 is rejected. You must write,
7349 template <> struct S<int> {};
7350 * G++ used to accept code like this,
7353 void f(int i = g());
7356 This behavior is not mandated by the standard. Now G++ issues an
7357 error about this code. To avoid the error, you must move the
7358 declaration of g before the declaration of f. The default arguments
7359 for g must be visible at the point where it is called.
7360 * The C++ ABI Section 3.3.3 specifications for the array construction
7361 routines __cxa_vec_new2 and __cxa_vec_new3 were changed to return
7362 NULL when the allocator argument returns NULL. These changes are
7363 incorporated into the libstdc++ runtime library.
7364 * Using a name introduced by a typedef in a friend declaration or in
7365 an explicit instantiation is now rejected, as specified by the ISO
7370 friend class B; // error, no typedef name here
7371 friend B; // error, friend always needs class/struct/enum
7372 friend class A; // OK
7375 template <int> class Q {};
7377 template class R; // error, no typedef name here
7378 template class Q<0>; // OK
7379 * When allocating an array with a new expression, GCC used to allow
7380 parentheses around the type name. This is actually ill-formed and
7382 int* a = new (int)[10]; // error, not accepted anymore
7383 int* a = new int[10]; // OK
7384 * When binding an rvalue of class type to a reference, the copy
7385 constructor of the class must be accessible. For instance, consider
7393 A(const A&); // private copy ctor
7401 foo(A()); // error, copy ctor is not accessible
7402 foo(makeA()); // error, copy ctor is not accessible
7405 foo(a1); // OK, a1 is a lvalue
7407 This might be surprising at first sight, especially since most
7408 popular compilers do not correctly implement this rule ([12]further
7410 * When forming a pointer to member or a pointer to member function,
7411 access checks for class visibility (public, protected, private) are
7412 now performed using the qualifying scope of the name itself. This
7413 is better explained with an example:
7429 &A::pub_func; // OK, pub_func is accessible through A
7430 &A::prot_func; // error, cannot access prot_func through A
7431 &A::priv_func; // error, cannot access priv_func through A
7433 &B::pub_func; // OK, pub_func is accessible through B
7434 &B::prot_func; // OK, can access prot_func through B (within B)
7435 &B::priv_func; // error, cannot access priv_func through B
7439 Runtime Library (libstdc++)
7441 * Optimization work:
7442 + Streamlined streambuf, filebuf, separate synched with C
7443 Standard I/O streambuf.
7444 + All formatted I/O now uses cached locale information.
7445 + STL optimizations (memory/speed for list, red-black trees as
7446 used by sets and maps).
7447 + More use of GCC builtins.
7448 + String optimizations (avoid contention on
7449 increment/decrement-and-test of the reference count in the
7450 empty-string object, constructor from input_iterators
7452 * Static linkage size reductions.
7453 * Large File Support (files larger than 2 GB on 32-bit systems).
7454 * Wide character and variable encoding filebuf work (UTF-8, Unicode).
7455 * Generic character traits.
7456 * Also support wchar_t specializations on Mac OS 10.3.x, FreeBSD 5.x,
7457 Solaris 2.7 and above, AIX 5.x, Irix 6.5.
7458 * The allocator class is now standard-conformant, and two additional
7459 extension allocators have been added, mt_alloc and
7461 * PCH support: -include bits/stdc++.h (2x compile speedup).
7462 * Rewrote __cxa_demangle with support for C++ style allocators.
7463 * New debug modes for STL containers and iterators.
7464 * Testsuite rewrite: five times as many tests, plus increasingly
7465 sophisticated tests, including I/O, MT, multi-locale, wide and
7467 * Use current versions of GNU "autotools" for build/configuration.
7471 * The Objective-C front end has been updated to include the numerous
7472 bug fixes and enhancements previously available only in Apple's
7473 version of GCC. These include:
7474 + Structured exception (@try... @catch... @finally, @throw) and
7475 synchronization (@synchronized) support. These are accessible
7476 via the -fobjc-exceptions switch; as of this writing, they may
7477 only be used in conjunction with -fnext-runtime on Mac OS X
7478 10.3 and later. See [13]Options Controlling Objective-C
7479 Dialect for more information.
7480 + An overhaul of @encode logic. The C99 _Bool and C++ bool type
7481 may now be encoded as 'B'. In addition, the back-end/codegen
7482 dependencies have been removed.
7483 + An overhaul of message dispatch construction, ensuring that
7484 the various receiver types (and casts thereof) are handled
7485 properly, and that correct diagnostics are issued.
7486 + Support for "Zero-Link" (-fzero-link) and "Fix-and-Continue"
7487 (-freplace-objc-classes) debugging modes, currently available
7488 on Mac OS X 10.3 and later. See [14]Options Controlling
7489 Objective-C Dialect for more information.
7490 + Access to optimized runtime entry points (-fno-nil-receivers )
7491 on the assumption that message receivers are never nil. This
7492 is currently available on Mac OS X 10.3 and later. See
7493 [15]Options Controlling Objective-C Dialect for more
7498 * Compiling a .jar file will now cause non-.class entries to be
7499 automatically compiled as resources.
7500 * libgcj has been ported to Darwin.
7501 * Jeff Sturm has adapted Jan Hubicka's call graph optimization code
7503 * libgcj has a new gcjlib URL type; this lets URLClassLoader load
7504 code from shared libraries.
7505 * libgcj has been much more completely merged with [16]GNU Classpath.
7506 * Class loading is now much more correct; in particular the caller's
7507 class loader is now used when that is required.
7508 * [17]Eclipse 2.x will run out of the box using gij.
7509 * Parts of java.nio have been implemented. Direct and indirect
7510 buffers work, as do fundamental file and socket operations.
7511 * java.awt has been improved, though it is still not ready for
7513 * The HTTP protocol handler now uses HTTP/1.1 and can handle the POST
7515 * The MinGW port has matured. Enhancements include socket timeout
7516 support, thread interruption, improved Runtime.exec() handling and
7517 support for accented characters in filenames.
7521 * Fortran improvements are listed in the [18]Fortran documentation.
7523 New Targets and Target Specific Improvements
7527 * Several [19]built-in functions have been added such as
7528 __builtin_alpha_zap to allow utilizing the more obscure
7529 instructions of the CPU.
7530 * Parameter passing of complex arguments has changed to match the
7531 [20]ABI. This change is incompatible with previous GCC versions,
7532 but does fix compatibility with the Tru64 compiler and several
7533 corner cases where GCC was incompatible with itself.
7537 * Nicolas Pitre has contributed his hand-coded floating-point support
7538 code for ARM. It is both significantly smaller and faster than the
7539 existing C-based implementation, even when building applications
7540 for Thumb. The arm-elf configuration has been converted to use the
7542 * Support for the Intel's iWMMXt architecture, a second generation
7543 XScale processor, has been added. Enabled at run time with the
7544 -mcpu=iwmmxt command line switch.
7545 * A new ARM target has been added: arm-wince-pe. This is similar to
7546 the arm-pe target, but it defaults to using the APCS32 ABI.
7547 * The existing ARM pipeline description has been converted to the use
7548 the [21]DFA processor pipeline model. There is not much change in
7549 code performance, but the description is now [22]easier to
7551 * Support for the Cirrus EP9312 Maverick floating point co-processor
7552 added. Enabled at run time with the -mcpu=ep9312 command line
7553 switch. Note however that the multilibs to support this chip are
7554 currently disabled in gcc/config/arm/t-arm-elf, so if you want to
7555 enable their production you will have to uncomment the entries in
7560 * Support for long long has been added.
7561 * Support for saveall attribute has been added.
7562 * Pavel Pisa contributed hand-written 32-bit-by-32-bit division code
7563 for H8/300H and H8S, which is much faster than the previous
7565 * A lot of small performance improvements.
7567 IA-32/AMD64 (x86-64)
7569 * Tuning for K8 (AMD Opteron/Athlon64) core is available via
7570 -march=k8 and -mcpu=k8.
7571 * Scalar SSE code generation carefully avoids reformatting penalties,
7572 hidden dependencies and minimizes the number of uops generated on
7573 both Intel and AMD CPUs.
7574 * Vector MMX and SSE operands are now passed in registers to improve
7575 performance and match the argument passing convention used by the
7576 Intel C++ Compiler. As a result it is not possible to call
7577 functions accepting vector arguments compiled by older GCC version.
7578 * Conditional jump elimination is now more aggressive on modern CPUs.
7579 * The Athlon ports has been converted to use the DFA processor
7580 pipeline description.
7581 * Optimization of indirect tail calls is now possible in a similar
7582 fashion as direct sibcall optimization.
7583 * Further small performance improvements.
7584 * -m128bit-long-double is now less buggy.
7585 * __float128 support in 64-bit compilation.
7586 * Support for data structures exceeding 2GB in 64-bit mode.
7587 * -mcpu has been renamed to -mtune.
7591 * Tuning code for the Itanium 2 processor has been added. The
7592 generation of code tuned for Itanium 2 (option -mtune=itanium2) is
7593 enabled by default now. To generate code tuned for Itanium 1 the
7594 option -mtune=itanium1 should be used.
7595 * [23]DFA processor pipeline descriptions for the IA-64 processors
7596 have been added. This resulted in about 3% improvement on the
7597 SPECInt2000 benchmark for Itanium 2.
7598 * Instruction bundling for the IA-64 processors has been rewritten
7599 using the DFA pipeline hazard recognizer. It resulted in about 60%
7600 compiler speedup on the SPECInt2000 C programs.
7604 * Support for the M32R/2 processor has been added by Renesas.
7605 * Support for an M32R GNU/Linux target and PIC code generation has
7606 been added by Renesas.
7610 * Bernardo Innocenti (Develer S.r.l.) has contributed the
7611 m68k-uclinux target, based on former work done by Paul Dale
7612 (SnapGear Inc.). Code generation for the ColdFire processors family
7613 has been enhanced and extended to support the MCF 53xx and MCF 54xx
7614 cores, integrating former work done by Peter Barada (Motorola).
7618 Processor-specific changes
7620 * Support for the RM7000 and RM9000 processors has been added. It can
7621 be selected using the -march compiler option and should work with
7622 any MIPS I (mips-*) or MIPS III (mips64-*) configuration.
7623 * Support for revision 2 of the MIPS32 ISA has been added. It can be
7624 selected with the command-line option -march=mips32r2.
7625 * There is a new option, -mfix-sb1, to work around certain SB-1
7630 * It is possible to customize GCC using the following configure-time
7632 + --with-arch, which specifies the default value of the -march
7634 + --with-tune, which specifies the default value of the -mtune
7636 + --with-abi, which specifies the default ABI.
7637 + --with-float=soft, which tells GCC to use software floating
7639 + --with-float=hard, which tells GCC to use hardware floating
7641 * A 64-bit GNU/Linux port has been added. The associated
7642 configurations are mips64-linux-gnu and mips64el-linux-gnu.
7643 * The 32-bit GNU/Linux port now supports Java.
7644 * The IRIX 6 configuration now supports the o32 ABI and will build
7645 o32 multilibs by default. This support is compatible with both
7646 binutils and the SGI tools, but note that several features,
7647 including debugging information and DWARF2 exception handling, are
7648 only available when using the GNU assembler. Use of the GNU
7649 assembler and linker (version 2.15 or above) is strongly
7651 * The IRIX 6 configuration now supports 128-bit long doubles.
7652 * There are two new RTEMS-specific configurations, mips-rtems and
7654 * There are two new *-elf configurations, mipsisa32r2-elf and
7659 * Several [24]ABI bugs have been fixed. Unfortunately, these changes
7660 will break binary compatibility with earlier releases.
7661 * GCC can now use explicit relocation operators when generating
7662 -mabicalls code. This behavior is controlled by -mexplicit-relocs
7663 and can have several performance benefits. For example:
7664 + It allows for more optimization of GOT accesses, including
7665 better scheduling and redundancy elimination.
7666 + It allows sibling calls to be implemented as jumps.
7667 + n32 and n64 leaf functions can use a call-clobbered global
7668 pointer instead of $28.
7669 + The code to set up $gp can be removed from functions that
7671 * A new option, -mxgot, allows the GOT to be bigger than 64k. This
7672 option is equivalent to the assembler's -xgot option and should be
7673 used instead of -Wa,-xgot.
7674 * Frame pointer elimination is now supported when generating 64-bit
7676 * Inline block moves have been optimized to take more account of
7677 alignment information.
7678 * Many internal changes have been made to the MIPS port, mostly aimed
7679 at reducing the reliance on assembler macros.
7683 * GCC 3.4 releases have a number of fixes for PowerPC and PowerPC64
7684 [25]ABI incompatibilities regarding the way parameters are passed
7685 during functions calls. These changes may result in incompatibility
7686 between code compiled with GCC 3.3 and GCC 3.4.
7690 * Support for shared/dylib gcc libraries has been added. It is
7691 enabled by default on powerpc-apple-darwin7.0.0 and up.
7692 * Libgcj is enabled by default. On systems older than
7693 powerpc-apple-darwin7.0.0 you need to install dlcompat.
7694 * 128-bit IBM extended precision format support added for long
7699 * By default, PowerPC64 GNU/Linux now uses natural alignment of
7700 structure elements. The old four byte alignment for double, with
7701 special rules for a struct starting with a double, can be chosen
7702 with -malign-power. This change may result in incompatibility
7703 between code compiled with GCC 3.3 and GCC 3.4.
7704 * -mabi=altivec is now the default rather than -mabi=no-altivec.
7705 * 128-bit IBM extended precision format support added for long
7710 * New command-line options allow to specify the intended execution
7711 environment for generated code:
7712 + -mesa/-mzarch allows to specify whether to generate code
7713 running in ESA/390 mode or in z/Architecture mode (this is
7714 applicable to 31-bit code only).
7715 + -march allows to specify a minimum processor architecture
7716 level (g5, g6, z900, or z990).
7717 + -mtune allows to specify which processor to tune for.
7718 * It is possible to customize GCC using the following configure-time
7720 + --with-mode, which specifies whether to default to assuming
7721 ESA/390 or z/Architecture mode.
7722 + --with-arch, which specifies the default value of the -march
7724 + --with-tune, which specifies the default value of the -mtune
7726 * Support for the z990 processor has been added, and can be selected
7727 using -march=z990 or -mtune=z990. This includes instruction
7728 scheduling tuned for the superscalar instruction pipeline of the
7729 z990 processor as well as support for all new instructions provided
7730 by the long-displacement facility.
7731 * Support to generate 31-bit code optimized for zSeries processors
7732 (running in ESA/390 or in z/Architecture mode) has been added. This
7733 can be selected using -march=z900 and -mzarch respectively.
7734 * Instruction scheduling for the z900 and z990 processors now uses
7735 the DFA pipeline hazard recognizer.
7736 * GCC no longer generates code to maintain a stack backchain,
7737 previously used to generate stack backtraces for debugging
7738 purposes. As replacement that does not incur runtime overhead,
7739 DWARF-2 call frame information is provided by GCC; this is
7740 supported by GDB 6.1. The old behavior can be restored using the
7742 * The stack frame size of functions may now exceed 2 GB in 64-bit
7744 * A port for the 64-bit IBM TPF operating system has been added; the
7745 configuration is s390x-ibm-tpf. This configuration is supported as
7746 cross-compilation target only.
7747 * Various changes to improve the generated code have been
7748 implemented, including:
7749 + GCC now uses the MULTIPLY AND ADD and MULTIPLY AND SUBTRACT
7750 instructions to significantly speed up many floating-point
7752 + GCC now uses the ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL
7753 WITH BORROW instructions to speed up long long arithmetic.
7754 + GCC now uses the SEARCH STRING instruction to implement
7756 + In many cases, function call overhead for 31-bit code has been
7757 reduced by placing the literal pool after the function code
7758 instead of after the function prolog.
7759 + Register 14 is no longer reserved in 64-bit code.
7760 + Handling of global register variables has been improved.
7764 * The option -mflat is deprecated.
7765 * Support for large (> 2GB) frames has been added to the 64-bit port.
7766 * Several [26]ABI bugs have been fixed. Unfortunately, these changes
7767 will break binary compatibility with earlier releases.
7768 * The default debugging format has been switched from STABS to
7769 DWARF-2 for 32-bit code on Solaris 7 and later. DWARF-2 is already
7770 the default debugging format for 64-bit code on Solaris.
7774 * Support for the SH2E processor has been added. Enabled at run time
7775 with the -m2e command line switch, or at configure time by
7776 specifying sh2e as the machine part of the target triple.
7780 * Support for the Mitsubishi V850E1 processor has been added. This is
7781 a variant of the V850E processor with some additional debugging
7786 * Several ABI bugs have been fixed. Unfortunately, these changes
7787 break binary compatibility with earlier releases.
7788 + For big-endian processors, the padding of aggregate return
7789 values larger than a word has changed. If the size of an
7790 aggregate return value is not a multiple of 32 bits, previous
7791 versions of GCC inserted padding in the most-significant bytes
7792 of the first return value register. Aggregates larger than a
7793 word are now padded in the least-significant bytes of the last
7794 return value register used. Aggregates smaller than a word are
7795 still padded in the most-significant bytes. The return value
7796 padding has not changed for little-endian processors.
7797 + Function arguments with 16-byte alignment are now properly
7799 + The implementation of the va_list type has changed. A va_list
7800 value created by va_start from a previous release cannot be
7801 used with va_arg from this release, or vice versa.
7802 * More processor configuration options for Xtensa processors are
7804 + the ABS instruction is now optional;
7805 + the ADDX* and SUBX* instructions are now optional;
7806 + an experimental CONST16 instruction can be used to synthesize
7807 constants instead of loading them from constant pools.
7808 These and other Xtensa processor configuration options can no
7809 longer be enabled or disabled by command-line options; the
7810 processor configuration must be specified by the xtensa-config.h
7811 header file when building GCC. Additionally, the
7812 -mno-serialize-volatile option is no longer supported.
7816 Support for a number of older systems has been declared obsolete in GCC
7817 3.4. Unless there is activity to revive them, the next release of GCC
7818 will have their sources permanently removed.
7820 All configurations of the following processor architectures have been
7822 * Mitsubishi D30V, d30v-*
7823 * AT&T DSP1600 and DSP1610, dsp16xx-*
7826 Also, some individual systems have been obsoleted:
7828 + Support for generating code for operation in APCS/26 mode
7831 + "Bigfoot" port, i370-*. (The other port, s390-*, is actively
7832 maintained and supported.)
7834 + MOSS, i?86-moss-msdos and i?86-*-moss*
7835 + NCR 3000 running System V r.4, i?86-ncr-sysv4*
7836 + FreeBSD with a.out object format, i?86-*-freebsd*aout* and
7838 + GNU/Linux with a.out object format, i?86-linux*aout*
7839 + GNU/Linux with libc5, a.k.a. glibc1, i?86-linux*libc1*
7840 + Interix versions before Interix 3, i?86-*-interix
7841 + Mach microkernel, i?86-mach*
7842 + SCO UnixWare with UDK, i?86-*-udk*
7843 + Generic System V releases 1, 2, and 3, i?86-*-sysv[123]*
7844 + VSTa microkernel, i386-*-vsta
7845 * Motorola M68000 family
7846 + HPUX, m68k-hp-hpux* and m68000-hp-hpux*
7847 + NetBSD with a.out object format (before NetBSD 1.4),
7848 m68k-*-*-netbsd* except m68k-*-*-netbsdelf*
7849 + Generic System V r.4, m68k-*-sysv4*
7851 + Generic VAX, vax-*-* (This is generic VAX only; we have not
7852 obsoleted any VAX triples for specific operating systems.)
7854 Documentation improvements
7856 Other significant improvements
7858 * The build system has undergone several significant cleanups.
7859 Subdirectories will only be configured if they are being built, and
7860 all subdirectory configures are run from the make command. The top
7861 level has been autoconfiscated.
7862 * Building GCC no longer writes to its source directory. This should
7863 help those wishing to share a read-only source directory over NFS
7864 or build from a CD. The exceptions to this feature are if you
7865 configure with either --enable-maintainer-mode or
7866 --enable-generated-files-in-srcdir.
7867 * The -W warning option has been renamed to -Wextra, which is more
7868 easily understood. The older spelling will be retained for
7869 backwards compatibility.
7870 * Substantial improvements in compile time have been made,
7871 particularly for non-optimizing compilations.
7872 __________________________________________________________________
7878 A vast number of bugs have been fixed in 3.4.0, too many to publish a
7879 complete list here. [27]Follow this link to query the Bugzilla database
7880 for the list of over 900 bugs fixed in 3.4.0. This is the list of all
7881 bugs marked as resolved and fixed in 3.4.0 that are not flagged as 3.4
7883 __________________________________________________________________
7889 This section lists the problem reports (PRs) from GCC's bug tracking
7890 system that are known to be fixed in the 3.4.1 release. This list might
7891 not be complete (that is, it is possible that some PRs that have been
7892 fixed are not listed here).
7896 * [28]10129 Ada bootstrap fails on PPC-Darwin - invalid assembler
7897 emitted - PIC related
7898 * [29]14576 [ARM] ICE in libiberty when building gcc-3.4 for arm-elf
7899 * [30]14760 A bug in configure.in prevents using both
7900 --program-suffix and --program-prefix
7901 * [31]14671 [hppa64] bootstrap fails: ICE in
7902 save_call_clobbered_regs, in caller_save.c
7903 * [32]15093 [alpha][Java] make bootstrap fails to configure libffi on
7905 * [33]15178 Solaris 9/x86 fails linking after stage 3
7907 Multi-platform internal compiler errors (ICEs)
7909 * [34]12753 (preprocessor) Memory corruption in preprocessor on bad
7911 * [35]13985 ICE in gcc.c-torture/compile/930621-1.c
7912 * [36]14810 (c++) tree check failures with invalid code involving
7914 * [37]14883 (c++) ICE on invalid code, in cp_parser_lookup_name, in
7916 * [38]15044 (c++) ICE on syntax error, template header
7917 * [39]15057 (c++) Compiling of conditional value throw constructs
7918 cause a segmentation violation
7919 * [40]15064 (c++) typeid of template parameter gives ICE
7920 * [41]15142 (c++) ICE when passing a string where a char* is expected
7921 in a throw statement
7922 * [42]15159 ICE in rtl_verify_flow_info_1
7923 * [43]15165 (c++) ICE in instantiate_template
7924 * [44]15193 Unary minus using pointer to V4SF vector causes
7925 -fforce-mem to exhaust all memory
7926 * [45]15209 (c++) Runs out of memory with packed structs
7927 * [46]15227 (c++) Trouble with invalid function definition
7928 * [47]15285 (c++) instantiate_type ICE when forming pointer to
7930 * [48]15299 (c++) ICE in resolve_overloaded_unification
7931 * [49]15329 (c++) ICE on constructor of member template
7932 * [50]15550 ICE in extract_insn, in recog.c
7933 * [51]15554 (c++) ICE in tsubst_copy, in cp/pt.c
7934 * [52]15640 (c++) ICE on invalid code in arg_assoc, in
7936 * [53]15666 [unit-at-a-time] Gcc abort on valid code
7937 * [54]15696 (c++) ICE with bad pointer-to-member code
7938 * [55]15701 (c++) ICE with friends and template template parameter
7939 * [56]15761 ICE in do_SUBST, in combine.c
7940 * [57]15829 (c++) ICE on Botan-1.3.13 due to -funroll-loops
7944 * [58]14538 All RTEMS targets broken for gnat
7948 * [59]12391 missing warning about assigning to an incomplete type
7949 * [60]14649 atan(1.0) should not be a constant expression
7950 * [61]15004 [unit-at-a-time] no warning for unused paramater in
7952 * [62]15749 --pedantic-errors behaves differently from --pedantic
7953 with C-compiler on GNU/Linux
7955 C++ compiler and library
7957 * [63]10646 non-const reference is incorrectly matched in a "const T"
7958 partial specialization
7959 * [64]12077 wcin.rdbuf()->in_avail() return value too high
7960 * [65]13598 enc_filebuf doesn't work
7961 * [66]14211 const_cast returns lvalue but should be rvalue
7962 * [67]14220 num_put::do_put() undesired float/double behavior
7963 * [68]14245 problem with user-defined allocators in std::basic_string
7964 * [69]14340 libstdc++ Debug mode: failure to convert iterator to
7966 * [70]14600 __gnu_cxx::stdio_sync_filebuf should expose internal
7968 * [71]14668 no warning anymore for reevaluation of declaration
7969 * [72]14775 LFS (large file support) tests missing
7970 * [73]14821 Duplicate namespace alias declaration should not conflict
7971 * [74]14930 Friend declaration ignored
7972 * [75]14932 cannot use offsetof to get offsets of array elements in
7974 * [76]14950 [non unit-at-a-time] always_inline does not mix with
7976 * [77]14962 g++ ignores #pragma redefine_extname
7977 * [78]14975 Segfault on low-level write error during imbue
7978 * [79]15002 Linewise stream input is unusably slow (std::string slow)
7979 * [80]15025 compiler accepts redeclaration of template as
7981 * [81]15046 [arm] Math functions misdetected by cross configuration
7982 * [82]15069 a bit test on a variable of enum type is miscompiled
7983 * [83]15074 g++ -lsupc++ still links against libstdc++
7984 * [84]15083 spurious "statement has no effect" warning
7985 * [85]15096 parse error with templates and pointer to const member
7986 * [86]15287 combination of operator[] and operator .* fails in
7988 * [87]15317 __attribute__ unused in first parameter of constructor
7990 * [88]15337 sizeof on incomplete type diagnostic
7991 * [89]15361 bitset<>::_Find_next fails
7992 * [90]15412 _GLIBCXX_ symbols symbols defined and used in different
7994 * [91]15427 valid code results in incomplete type error
7995 * [92]15471 Incorrect member pointer offsets in anonymous
7997 * [93]15503 nested template problem
7998 * [94]15507 compiler hangs while laying out union
7999 * [95]15542 operator & and template definitions
8000 * [96]15565 SLES9: leading + sign for unsigned int with showpos
8001 * [97]15625 friend defined inside a template fails to find static
8003 * [98]15629 Function templates, overloads, and friend name injection
8004 * [99]15742 'noreturn' attribute ignored in method of template
8006 * [100]15775 Allocator::pointer consistently ignored
8007 * [101]15821 Duplicate namespace alias within namespace rejected
8008 * [102]15862 'enum yn' fails (confict with undeclared builtin)
8009 * [103]15875 rejects pointer to member in template
8010 * [104]15877 valid code using templates and anonymous enums is
8012 * [105]15947 Puzzling error message for wrong destructor declaration
8014 * [106]16020 cannot copy __gnu_debug::bitset
8015 * [107]16154 input iterator concept too restrictive
8016 * [108]16174 deducing top-level consts
8020 * [109]14315 Java compiler is not parallel make safe
8024 * [110]15151 [g77] incorrect logical i/o in 64-bit mode
8028 * [111]7993 private variables cannot be shadowed in subclasses
8032 * [112]15228 useless copies of floating point operands
8033 * [113]15345 [non-unit-at-a-time] unreferenced nested inline
8034 functions not optimized away
8035 * [114]15945 Incorrect floating point optimization
8036 * [115]15526 ftrapv aborts on 0 * (-1)
8037 * [116]14690 Miscompiled POOMA tests
8038 * [117]15112 GCC generates code to write to unchanging memory
8042 * [118]15067 Minor glitch in the source of cpp
8044 Main driver program bugs
8046 * [119]1963 collect2 interprets -oldstyle_liblookup as -o
8049 x86-specific (Intel/AMD)
8051 * [120]15717 Error: can't resolve `L0' {*ABS* section} - `xx' {*UND*
8056 * [121]14782 GCC produces an unaligned data access at -O2
8057 * [122]14828 FAIL: gcc.c-torture/execute/20030408-1.c execution, -O2
8058 * [123]15202 ICE in reload_cse_simplify_operands, in postreload.c
8062 * [124]14610 __float80 constants incorrectly emitted
8063 * [125]14813 init_array sections are initialized in the wrong order
8064 * [126]14857 GCC segfault on duplicated asm statement
8065 * [127]15598 Gcc 3.4 ICE on valid code
8066 * [128]15653 Gcc 3.4 ICE on valid code
8070 * [129]15189 wrong filling of delay slot with -march=mips1 -G0
8071 -mno-split-addresses -mno-explicit-relocs
8072 * [130]15331 Assembler error building gnatlib on IRIX 6.5 with GNU as
8074 * [131]16144 Bogus reference to __divdf3 when -O1
8075 * [132]16176 Miscompilation of unaligned data in MIPS backend
8079 * [133]11591 ICE in gcc.dg/altivec-5.c
8080 * [134]12028 powerpc-eabispe produces bad sCOND operation
8081 * [135]14478 rs6000 geu/ltu patterns generate incorrect code
8082 * [136]14567 long double and va_arg complex args
8083 * [137]14715 Altivec stack layout may overlap gpr save with stack
8085 * [138]14902 (libstdc++) Stream checking functions fail when -pthread
8087 * [139]14924 Compiler ICE on valid code
8088 * [140]14960 -maltivec affects vector return with -mabi=no-altivec
8089 * [141]15106 vector varargs failure passing from altivec to
8090 non-altivec code for -m32
8091 * [142]16026 ICE in function.c:4804, assign_parms, when -mpowerpc64 &
8093 * [143]15191 -maltivec -mabi=no-altivec results in mis-aligned lvx
8095 * [144]15662 Segmentation fault when an exception is thrown - even if
8096 try and catch are specified
8100 * [145]15054 Bad code due to overlapping stack temporaries
8104 * [146]15783 ICE with union assignment in 64-bit mode
8105 * [147]15626 GCC 3.4 emits "ld: warning: relocation error:
8110 * [148]14326 boehm-gc hardcodes to 3DNow! prefetch for x86_64
8111 * [149]14723 Backported -march=nocona from mainline
8112 * [150]15290 __float128 failed to pass to function properly
8114 Cygwin/Mingw32-specific
8116 * [151]15250 Option -mms-bitfields support on GCC 3.4 is not
8117 conformant to MS layout
8118 * [152]15551 -mtune=pentium4 -O2 with sjlj EH breaks stack probe
8119 worker on windows32 targets
8121 Bugs specific to embedded processors
8123 * [153]8309 [m68k] -m5200 produces erroneous SImode set of short
8125 * [154]13250 [SH] Gcc code for rotation clobbers the register, but
8126 gcc continues to use the register as if it was not clobbered
8127 * [155]13803 [coldfire] movqi operand constraints too restrictivefor
8129 * [156]14093 [SH] ICE for code when using -mhitachi option in SH
8130 * [157]14457 [m6811hc] ICE with simple c++ source
8131 * [158]14542 [m6811hc] ICE on simple source
8132 * [159]15100 [SH] cc1plus got hang-up on
8133 libstdc++-v3/testsuite/abi_check.cc
8134 * [160]15296 [CRIS] Delayed branch scheduling causing invalid code on
8136 * [161]15396 [SH] ICE with -O2 -fPIC
8137 * [162]15782 [coldfire] m68k_output_mi_thunk emits wrong code for
8140 Testsuite problems (compiler not affected)
8142 * [163]11610 libstdc++ testcases 27_io/* don't work properly remotely
8143 * [164]15488 (libstdc++) possibly insufficient file permissions for
8144 executing test suite
8145 * [165]15489 (libstdc++) testsuite_files determined incorrectly
8149 * [166]13928 (libstdc++) no whatis info in some man pages generated
8151 * [167]14150 Ada documentation out of date
8152 * [168]14949 (c++) Need to document method visibility changes
8153 * [169]15123 libstdc++-doc: Allocators.3 manpage is empty
8154 __________________________________________________________________
8160 This section lists the problem reports (PRs) from GCC's bug tracking
8161 system that are known to be fixed in the 3.4.2 release. This list might
8162 not be complete (that is, it is possible that some PRs that have been
8163 fixed are not listed here).
8165 Bootstrap failures and issues
8167 * [170]16469 [mips-sgi-irix5.3] bootstrap fails in
8168 libstdc++-v3/testsuite
8169 * [171]16344 [hppa-linux-gnu] libstdc++'s PCH built by
8170 profiledbootstrap does not work with the built compiler
8171 * [172]16842 [Solaris/x86] mkheaders can not find mkheaders.conf
8173 Multi-platform internal compiler errors (ICEs)
8175 * [173]12608 (c++) ICE: expected class 't', have 'x' (error_mark) in
8176 cp_parser_class_specifier, in cp/parser.c
8177 * [174]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
8178 * [175]15461 (c++) ICE due to NRV and inlining
8179 * [176]15890 (c++) ICE in c_expand_expr, in c-common.c
8180 * [177]16180 ICE: segmentation fault in RTL optimization
8181 * [178]16224 (c++) ICE in write_unscoped_name (template/namespace)
8182 * [179]16408 ICE: in delete_insn, in cfgrtl.c
8183 * [180]16529 (c++) ICE for: namespace-alias shall not be declared as
8184 the name of any other entity
8185 * [181]16698 (c++) ICE with exceptions and declaration of __cxa_throw
8186 * [182]16706 (c++) ICE in finish_member_declaration, in
8188 * [183]16810 (c++) Legal C++ program with cast gives ICE in
8190 * [184]16851 (c++) ICE when throwing a comma expression
8191 * [185]16870 (c++) Boost.Spirit causes ICE in tsubst, in cp/pt.c
8192 * [186]16904 (c++) ICE in finish_class_member_access_expr, in
8194 * [187]16905 (c++) ICE (segfault) with exceptions
8195 * [188]16964 (c++) ICE in cp_parser_class_specifier due to
8197 * [189]17068 (c++) ICE: tree check: expected class 'd', have 'x'
8198 (identifier_node) in dependent_template_p, in cp/pt.c
8202 * [190]16366 Preprocessor option -remap causes memory corruption
8206 * [191]15345 unreferenced nested inline functions not optimized away
8207 * [192]16590 Incorrect execution when compiling with -O2
8208 * [193]16693 Bitwise AND is lost when used within a cast to an enum
8209 of the same precision
8210 * [194]17078 Jump into if(0) substatement fails
8212 Problems in generated debug information
8214 * [195]13956 incorrect stabs for nested local variables
8218 * [196]16684 GCC should not warn about redundant redeclarations of
8221 C++ compiler and library
8223 * [197]12658 Thread safety problems in locale::global() and
8225 * [198]13092 g++ accepts invalid pointer-to-member conversion
8226 * [199]15320 Excessive memory consumption
8227 * [200]16246 Incorrect template argument deduction
8228 * [201]16273 Memory exhausted when using nested classes and virtual
8230 * [202]16401 ostringstream in gcc 3.4.x very slow for big data
8231 * [203]16411 undefined reference to
8232 __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char>
8234 * [204]16489 G++ incorrectly rejects use of a null constant integral
8235 expression as a null constant pointer
8236 * [205]16618 offsetof fails with constant member
8237 * [206]16637 syntax error reported for valid input code
8238 * [207]16717 __attribute__((constructor)) broken in C++
8239 * [208]16813 compiler error in DEBUG version of range insertion
8241 * [209]16853 pointer-to-member initialization from incompatible one
8243 * [210]16889 ambiguity is not detected
8244 * [211]16959 Segmentation fault in ios_base::sync_with_stdio
8246 Java compiler and library
8248 * [212]7587 direct threaded interpreter not thread-safe
8249 * [213]16473 ServerSocket accept() leaks file descriptors
8250 * [214]16478 Hash synchronization deadlock with finalizers
8254 * [215]10695 ICE in dwarf2out_frame_debug_expr, in dwarf2out.c
8255 * [216]16974 could not split insn (ice in final_scan_insn, in
8260 * [217]16298 ICE in output_operand
8261 * [218]17113 ICE with SSE2 intrinsics
8265 * [219]14697 libstdc++ couldn't find 32bit libgcc_s
8269 * [220]15869 [mips64] No NOP after LW (with -mips1 -O0)
8270 * [221]16325 [mips64] value profiling clobbers gp on mips
8271 * [222]16357 [mipsisa64-elf] ICE copying 7 bytes between extern
8273 * [223]16380 [mips64] Use of uninitialised register after dbra
8275 * [224]16407 [mips64] Unaligned access to local variables
8276 * [225]16643 [mips64] verify_local_live_at_start ICE after
8277 crossjumping & cfgcleanup
8281 * [226]15927 THUMB -O2: strength-reduced iteration variable ends up
8283 * [227]15948 THUMB: ICE with non-commutative cbranch
8284 * [228]17019 THUMB: bad switch statement in md code for
8285 addsi3_cbranch_scratch
8289 * [229]16130 ICE on valid code: in bundling, in config/ia64/ia64.c
8291 * [230]16142 ICE on valid code: in bundling, in config/ia64/ia64.c
8293 * [231]16278 Gcc failed to build Linux kernel with -mtune=merced
8294 * [232]16414 ICE on valid code: typo in comparison of asm_noperands
8296 * [233]16445 ICE on valid code: don't count ignored insns
8297 * [234]16490 ICE (segfault) while compiling with -fprofile-use
8298 * [235]16683 ia64 does not honor SUBTARGET_EXTRA_SPECS
8302 * [236]16195 (ppc64): Miscompilation of GCC 3.3.x by 3.4.x
8303 * [237]16239 ICE on ppc64 (mozilla 1.7 compile, -O1 -fno-exceptions
8308 * [238]16199 ICE while compiling apache 2.0.49
8309 * [239]16416 -m64 doesn't imply -mcpu=v9 anymore
8310 * [240]16430 ICE when returning non-C aggregates larger than 16 bytes
8312 Bugs specific to embedded processors
8314 * [241]16379 [m32r] can't output large model function call of memcpy
8315 * [242]17093 [m32r] ICE with -msdata=use -O0
8316 * [243]17119 [m32r] ICE at switch case 0x8000
8320 * [244]15928 libstdc++ in 3.4.x doesn't cross-compile for djgpp
8322 Alpha Tru64-specific
8324 * [245]16210 libstdc++ gratuitously omits "long long" I/O
8326 Testsuite, documentation issues (compiler is not affected):
8328 * [246]15488 (libstdc++) possibly insufficient file permissions for
8329 executing test suite
8330 * [247]16250 ada/doctools runs makeinfo even in release tarball
8331 __________________________________________________________________
8335 This is the [248]list of problem reports (PRs) from GCC's bug tracking
8336 system that are known to be fixed in the 3.4.3 release. This list might
8337 not be complete (that is, it is possible that some PRs that have been
8338 fixed are not listed here).
8342 * [249]17369 [ia64] Bootstrap failure with binutils-2.15.90.0.1.1
8343 * [250]17850 [arm-elf] bootstrap failure - libstdc++ uses strtold
8346 Internal compiler errors (ICEs) affecting multiple platforms
8348 * [251]13948 (java) GCJ segmentation fault while compiling GL4Java
8350 * [252]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
8351 * [253]16301 (c++) ICE when "strong" attribute is attached to a using
8353 * [254]16566 ICE with flexible arrays
8354 * [255]17023 ICE with nested functions in parameter declaration
8355 * [256]17027 ICE with noreturn function in loop at -O2
8356 * [257]17524 ICE in grokdeclarator, in cp/decl.c
8357 * [258]17826 (c++) ICE in cp_tree_equal
8359 C and optimization bugs
8361 * [259]15526 -ftrapv aborts on 0 * (-1)
8362 * [260]16999 #ident stopped working
8363 * [261]17503 quadratic behaviour in invalid_mode_change_p
8364 * [262]17581 Long long arithmetic fails inside a switch/case
8365 statement when compiled with -O2
8366 * [263]18129 -fwritable-strings doesn't work
8368 C++ compiler and library bugs
8370 * [264]10975 incorrect initial ostringstream::tellp()
8371 * [265]11722 Unbuffered filebuf::sgetn is slow
8372 * [266]14534 Unrecognizing static function as a template parameter
8373 when its return value is also templated
8374 * [267]15172 Copy constructor optimization in aggregate
8376 * [268]15786 Bad error message for frequently occuring error.
8377 * [269]16162 Rejects valid member-template-definition
8378 * [270]16612 empty basic_strings can't live in shared memory
8379 * [271]16715 std::basic_iostream is instantiated when used, even
8380 though instantiations are already contained in libstdc++
8381 * [272]16848 code in /ext/demangle.h appears broken
8382 * [273]17132 GCC fails to eliminate function template specialization
8383 when argument deduction fails
8384 * [274]17259 One more _S_leaf incorrectly qualified with _RopeRep::
8386 * [275]17327 use of `enumeral_type' in template type unification
8387 * [276]17393 "unused variable '._0'" warning with -Wall
8388 * [277]17501 Confusion with member templates
8389 * [278]17537 g++ not passing -lstdc++ to linker when all command line
8390 arguments are libraries
8391 * [279]17585 usage of unqualified name of static member from within
8393 * [280]17821 Poor diagnostic for using "." instead of "->"
8394 * [281]17829 wrong error: call of overloaded function is ambiguous
8395 * [282]17851 Misleading diagnostic for invalid function declarations
8396 with undeclared types
8397 * [283]17976 Destructor is called twice
8398 * [284]18020 rejects valid definition of enum value in template
8399 * [285]18093 bogus conflict in namespace aliasing
8400 * [286]18140 C++ parser bug when using >> in templates
8404 * [287]17541 data statements with double precision constants fail
8408 * [288]17853 -O2 ICE for MMX testcase
8412 * [289]17245 ICE compiling gsl-1.5 statistics/lag1.c
8416 * [290]17167 FATAL:Symbol L_foo$stub already defined.
8420 * [291]17277 could not catch an exception when specified -maix64
8424 * [292]17505 <cmath> calls acosf(), ceilf(), and other functions
8425 missing from system libraries
8429 * [293]17684 /usr/ccs/bin/ld: Can't create libgcc_s.sl
8433 * [294]17384 ICE with mode attribute on structures
8437 * [295]17770 No NOP after LWL with -mips1
8439 Other embedded target specific
8441 * [296]11476 [arc-elf] gcc ICE on newlib's vfprintf.c
8442 * [297]14064 [avr-elf] -fdata-sections triggers ICE
8443 * [298]14678 [m68hc11-elf] gcc ICE
8444 * [299]15583 [powerpc-rtems] powerpc-rtems lacks __USE_INIT_FINI__
8445 * [300]15790 [i686-coff] Alignment error building gcc with i686-coff
8447 * [301]15886 [SH] Miscompilation with -O2 -fPIC
8448 * [302]16884 [avr-elf] [fweb related] bug while initializing
8451 Bugs relating to debugger support
8453 * [303]13841 missing debug info for _Complex function arguments
8454 * [304]15860 [big-endian targets] No DW_AT_location debug info is
8455 emitted for formal arguments to a function that uses "register"
8458 Testsuite issues (compiler not affected)
8460 * [305]17465 Testsuite in libffi overrides LD_LIBRARY_PATH
8461 * [306]17469 Testsuite in libstdc++ overrides LD_LIBRARY_PATH
8462 * [307]18138 [mips-sgi-irix6.5] libgcc_s.so.1 not found by 64-bit
8467 * [308]15498 typo in gcc manual: non-existing locale example en_UK,
8469 * [309]15747 [mips-sgi-irix5.3] /bin/sh hangs during bootstrap:
8470 document broken shell
8471 * [310]16406 USE_LD_AS_NEEDED undocumented
8472 __________________________________________________________________
8476 This is the [311]list of problem reports (PRs) from GCC's bug tracking
8477 system that are known to be fixed in the 3.4.4 release. This list might
8478 not be complete (that is, it is possible that some PRs that have been
8479 fixed are not listed here).
8480 __________________________________________________________________
8484 This is the [312]list of problem reports (PRs) from GCC's bug tracking
8485 system that are known to be fixed in the 3.4.5 release. This list might
8486 not be complete (that is, it is possible that some PRs that have been
8487 fixed are not listed here).
8491 * [313]24688 sco_math fixincl breaks math.h
8495 * [314]17188 struct Foo { } redefinition
8496 * [315]20187 wrong code for ((unsigned char)(unsigned long
8497 long)((a?a:1)&(a*b)))?0:1)
8498 * [316]21873 infinite warning loop on bad array initializer
8499 * [317]21899 enum definition accepts values to be overriden
8500 * [318]22061 ICE in find_function_data, in function.c
8501 * [319]22308 Failure to diagnose violation of constraint 6.516p2
8502 * [320]22458 ICE on missing brace
8503 * [321]22589 ICE casting to long long
8504 * [322]24101 Segfault with preprocessed source
8506 C++ compiler and library bugs
8508 * [323]10611 operations on vector mode not recognized in C++
8509 * [324]13377 unexpected behavior of namespace usage directive
8510 * [325]16002 Strange error message with new parser
8511 * [326]17413 local classes as template argument
8512 * [327]17609 spurious error message after using keyword
8513 * [328]17618 ICE in cp_convert_to_pointer, in cp/cvt.c
8514 * [329]18124 ICE with invalid template template parameter
8515 * [330]18155 typedef in template declaration not rejected
8516 * [331]18177 ICE with const_cast for undeclared variable
8517 * [332]18368 C++ error message regression
8518 * [333]16378 ICE when returning a copy of a packed member
8519 * [334]18466 int ::i; accepted
8520 * [335]18512 ICE on invalid usage of template base class
8521 * [336]18454 ICE when returning undefined type
8522 * [337]18738 typename not allowed with non-dependent qualified name
8523 * [338]18803 rejects access to operator() in template
8524 * [339]19004 ICE in uses_template_parms, in cp/pt.c
8525 * [340]19208 Spurious error about variably modified type
8526 * [341]18253 bad error message / ICE for invalid template parameter
8527 * [342]19608 ICE after friend function definition in local class
8528 * [343]19884 ICE on explicit instantiation of a non-template
8530 * [344]20153 ICE when C++ template function contains anonymous union
8531 * [345]20563 Infinite loop in diagnostic (and ice after error
8533 * [346]20789 ICE with incomplete type in template
8534 * [347]21336 Internal compiler error when using custom new operators
8535 * [348]21768 ICE in error message due to violation of coding
8537 * [349]21853 constness of pointer to data member ignored
8538 * [350]21903 Default argument of template function causes a
8540 * [351]21983 multiple diagnostics
8541 * [352]21987 New testsuite failure
8542 g++.dg/warn/conversion-function-1.C
8543 * [353]22153 ICE on invalid template specialization
8544 * [354]22172 Internal compiler error, seg fault.
8545 * [355]21286 filebuf::xsgetn vs pipes
8546 * [356]22233 ICE with wrong number of template parameters
8547 * [357]22508 ICE after invalid operator new
8548 * [358]22545 ICE with pointer to class member & user defined
8550 * [359]23528 Wrong default allocator in ext/hash_map
8551 * [360]23550 char_traits requirements/1.cc test bad math
8552 * [361]23586 Bad diagnostic for invalid namespace-name
8553 * [362]23624 ICE in invert_truthvalue, in fold-const.c
8554 * [363]23639 Bad error message: not a member of '<declaration error>'
8555 * [364]23797 ICE on typename outside template
8556 * [365]23965 Bogus error message: no matching function for call to
8558 * [366]24052 &#`label_decl' not supported by dump_expr#<expression
8560 * [367]24580 virtual base class cause exception not to be caught
8562 Problems in generated debug information
8564 * [368]24267 Bad DWARF for altivec vectors
8566 Optimizations issues
8568 * [369]17810 ICE in verify_local_live_at_start
8569 * [370]17860 Wrong generated code for loop with varying bound
8570 * [371]21709 ICE on compile-time complex NaN
8571 * [372]21964 broken tail call at -O2 or more
8572 * [373]22167 Strange optimization bug when using -Os
8573 * [374]22619 Compilation failure for real_const_1.f and
8575 * [375]23241 Invalid code generated for comparison of uchar to 255
8576 * [376]23478 Miscompilation due to reloading of a var that is also
8578 * [377]24470 segmentation fault in cc1plus when compiling with -O
8579 * [378]24950 ICE in operand_subword_force
8581 Precompiled headers problems
8583 * [379]14400 Cannot compile qt-x11-free-3.3.0
8584 * [380]14940 PCH largefile test fails on various platforms
8588 * [381]20239 ICE on empty preprocessed input
8589 * [382]15220 "gcc -E -MM -MG" reports missing system headers in
8594 * [383]19275 gcc.dg/20020919-1.c fails with -fpic/-fPIC on
8599 * [384]21888 bootstrap failure with linker relaxation enabled
8603 * [385]15342 [arm-linux]: ICE in verify_local_live_at_start
8604 * [386]23985 Memory aliasing information incorrect in inlined memcpy
8608 * [387]16719 Illegal move of byte into address register causes
8613 * [388]21723 ICE while building libgfortran
8614 * [389]21841 -mhp-ld/-mgnu-ld documentation
8618 * [390]23644 IA-64 hardware models and configuration options
8620 * [391]24718 Shared libgcc not used for linking by default
8624 * [392]18421 ICE in reload_cse_simplify_operands, in postreload.c
8628 * [393]20621 ICE in change_address_1, in emit-rtl.c
8630 PowerPC and PowerPC64 specific
8632 * [394]18583 error on valid code: const
8633 __attribute__((altivec(vector__))) doesn't work in arrays
8634 * [395]20191 ICE in reload_cse_simplify_operands
8635 * [396]22083 AIX: TARGET_C99_FUNCTIONS is wrongly defined
8636 * [397]23070 CALL_V4_CLEAR_FP_ARGS flag not properly set
8637 * [398]23404 gij trashes args of functions with more than 8 fp args
8638 * [399]23539 C & C++ compiler generating misaligned references
8639 regardless of compiler flags
8640 * [400]24102 floatdisf2_internal2 broken
8641 * [401]24465 -mminimal-toc miscompilation of __thread vars
8645 * [402]19933 Problem with define of HUGE_VAL in math_c99
8646 * [403]21889 Native Solaris assembler cannot grok DTP-relative debug
8651 * [404]19300 PCH failures on sparc-linux
8652 * [405]20301 Assembler labels have a leading "-"
8653 * [406]20673 C PCH testsuite assembly comparison failure
8655 x86 and x86_64 specific
8657 * [407]18582 ICE with arrays of type V2DF
8658 * [408]19340 Compilation SEGFAULTs with -O1 -fschedule-insns2
8660 * [409]21716 ICE in reg-stack.c's swap_rtx_condition
8661 * [410]24315 amd64 fails -fpeephole2
8662 __________________________________________________________________
8666 This is the [411]list of problem reports (PRs) from GCC's bug tracking
8667 system that are known to be fixed in the 3.4.6 release. This list might
8668 not be complete (that is, it is possible that some PRs that have been
8669 fixed are not listed here).
8672 For questions related to the use of GCC, please consult these web
8673 pages and the [412]GCC manuals. If that fails, the
8674 [413]gcc-help@gcc.gnu.org mailing list might help. Comments on these
8675 web pages and the development of GCC are welcome on our developer
8676 list at [414]gcc@gcc.gnu.org. All of [415]our lists have public
8679 Copyright (C) [416]Free Software Foundation, Inc. Verbatim copying and
8680 distribution of this entire article is permitted in any medium,
8681 provided this notice is preserved.
8683 These pages are [417]maintained by the GCC team. Last modified
8688 1. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6
8689 2. http://gcc.gnu.org/gcc-3.4/changes.html#cplusplus
8690 3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems
8691 4. http://gcc.gnu.org/gcc-3.4/changes.html#obsolete_systems
8692 5. http://gcc.gnu.org/gcc-3.4/mips-abi.html
8693 6. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
8694 7. http://www.boost.org/
8695 8. http://gcc.gnu.org/PR11953
8696 9. http://gcc.gnu.org/PR8361
8697 10. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other%20Builtins
8698 11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#209
8699 12. http://gcc.gnu.org/bugs/#cxx_rvalbind
8700 13. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
8701 14. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
8702 15. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
8703 16. http://www.gnu.org/software/classpath/
8704 17. http://www.eclipse.org/
8705 18. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/g77/News.html
8706 19. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Alpha-Built-in-Functions.html
8707 20. http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51A_HTML/ARH9MBTE/DTMNPLTN.HTM#normal-argument-list-structure
8708 21. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
8709 22. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Comparison-of-the-two-descriptions.html
8710 23. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
8711 24. http://gcc.gnu.org/gcc-3.4/mips-abi.html
8712 25. http://gcc.gnu.org/gcc-3.4/powerpc-abi.html
8713 26. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
8714 27. http://gcc.gnu.org/bugzilla/buglist.cgi?short_desc_type=notregexp&short_desc=%5C%5B3%5C.4.*%5BRr%5Degression&target_milestone=3.4.0&bug_status=RESOLVED&resolution=FIXED
8715 28. http://gcc.gnu.org/PR10129
8716 29. http://gcc.gnu.org/PR14576
8717 30. http://gcc.gnu.org/PR14760
8718 31. http://gcc.gnu.org/PR14671
8719 32. http://gcc.gnu.org/PR15093
8720 33. http://gcc.gnu.org/PR15178
8721 34. http://gcc.gnu.org/PR12753
8722 35. http://gcc.gnu.org/PR13985
8723 36. http://gcc.gnu.org/PR14810
8724 37. http://gcc.gnu.org/PR14883
8725 38. http://gcc.gnu.org/PR15044
8726 39. http://gcc.gnu.org/PR15057
8727 40. http://gcc.gnu.org/PR15064
8728 41. http://gcc.gnu.org/PR15142
8729 42. http://gcc.gnu.org/PR15159
8730 43. http://gcc.gnu.org/PR15165
8731 44. http://gcc.gnu.org/PR15193
8732 45. http://gcc.gnu.org/PR15209
8733 46. http://gcc.gnu.org/PR15227
8734 47. http://gcc.gnu.org/PR15285
8735 48. http://gcc.gnu.org/PR15299
8736 49. http://gcc.gnu.org/PR15329
8737 50. http://gcc.gnu.org/PR15550
8738 51. http://gcc.gnu.org/PR15554
8739 52. http://gcc.gnu.org/PR15640
8740 53. http://gcc.gnu.org/PR15666
8741 54. http://gcc.gnu.org/PR15696
8742 55. http://gcc.gnu.org/PR15701
8743 56. http://gcc.gnu.org/PR15761
8744 57. http://gcc.gnu.org/PR15829
8745 58. http://gcc.gnu.org/PR14538
8746 59. http://gcc.gnu.org/PR12391
8747 60. http://gcc.gnu.org/PR14649
8748 61. http://gcc.gnu.org/PR15004
8749 62. http://gcc.gnu.org/PR15749
8750 63. http://gcc.gnu.org/PR10646
8751 64. http://gcc.gnu.org/PR12077
8752 65. http://gcc.gnu.org/PR13598
8753 66. http://gcc.gnu.org/PR14211
8754 67. http://gcc.gnu.org/PR14220
8755 68. http://gcc.gnu.org/PR14245
8756 69. http://gcc.gnu.org/PR14340
8757 70. http://gcc.gnu.org/PR14600
8758 71. http://gcc.gnu.org/PR14668
8759 72. http://gcc.gnu.org/PR14775
8760 73. http://gcc.gnu.org/PR14821
8761 74. http://gcc.gnu.org/PR14930
8762 75. http://gcc.gnu.org/PR14932
8763 76. http://gcc.gnu.org/PR14950
8764 77. http://gcc.gnu.org/PR14962
8765 78. http://gcc.gnu.org/PR14975
8766 79. http://gcc.gnu.org/PR15002
8767 80. http://gcc.gnu.org/PR15025
8768 81. http://gcc.gnu.org/PR15046
8769 82. http://gcc.gnu.org/PR15069
8770 83. http://gcc.gnu.org/PR15074
8771 84. http://gcc.gnu.org/PR15083
8772 85. http://gcc.gnu.org/PR15096
8773 86. http://gcc.gnu.org/PR15287
8774 87. http://gcc.gnu.org/PR15317
8775 88. http://gcc.gnu.org/PR15337
8776 89. http://gcc.gnu.org/PR15361
8777 90. http://gcc.gnu.org/PR15412
8778 91. http://gcc.gnu.org/PR15427
8779 92. http://gcc.gnu.org/PR15471
8780 93. http://gcc.gnu.org/PR15503
8781 94. http://gcc.gnu.org/PR15507
8782 95. http://gcc.gnu.org/PR15542
8783 96. http://gcc.gnu.org/PR15565
8784 97. http://gcc.gnu.org/PR15625
8785 98. http://gcc.gnu.org/PR15629
8786 99. http://gcc.gnu.org/PR15742
8787 100. http://gcc.gnu.org/PR15775
8788 101. http://gcc.gnu.org/PR15821
8789 102. http://gcc.gnu.org/PR15862
8790 103. http://gcc.gnu.org/PR15875
8791 104. http://gcc.gnu.org/PR15877
8792 105. http://gcc.gnu.org/PR15947
8793 106. http://gcc.gnu.org/PR16020
8794 107. http://gcc.gnu.org/PR16154
8795 108. http://gcc.gnu.org/PR16174
8796 109. http://gcc.gnu.org/PR14315
8797 110. http://gcc.gnu.org/PR15151
8798 111. http://gcc.gnu.org/PR7993
8799 112. http://gcc.gnu.org/PR15228
8800 113. http://gcc.gnu.org/PR15345
8801 114. http://gcc.gnu.org/PR15945
8802 115. http://gcc.gnu.org/PR15526
8803 116. http://gcc.gnu.org/PR14690
8804 117. http://gcc.gnu.org/PR15112
8805 118. http://gcc.gnu.org/PR15067
8806 119. http://gcc.gnu.org/PR1963
8807 120. http://gcc.gnu.org/PR15717
8808 121. http://gcc.gnu.org/PR14782
8809 122. http://gcc.gnu.org/PR14828
8810 123. http://gcc.gnu.org/PR15202
8811 124. http://gcc.gnu.org/PR14610
8812 125. http://gcc.gnu.org/PR14813
8813 126. http://gcc.gnu.org/PR14857
8814 127. http://gcc.gnu.org/PR15598
8815 128. http://gcc.gnu.org/PR15653
8816 129. http://gcc.gnu.org/PR15189
8817 130. http://gcc.gnu.org/PR15331
8818 131. http://gcc.gnu.org/PR16144
8819 132. http://gcc.gnu.org/PR16176
8820 133. http://gcc.gnu.org/PR11591
8821 134. http://gcc.gnu.org/PR12028
8822 135. http://gcc.gnu.org/PR14478
8823 136. http://gcc.gnu.org/PR14567
8824 137. http://gcc.gnu.org/PR14715
8825 138. http://gcc.gnu.org/PR14902
8826 139. http://gcc.gnu.org/PR14924
8827 140. http://gcc.gnu.org/PR14960
8828 141. http://gcc.gnu.org/PR15106
8829 142. http://gcc.gnu.org/PR16026
8830 143. http://gcc.gnu.org/PR15191
8831 144. http://gcc.gnu.org/PR15662
8832 145. http://gcc.gnu.org/PR15054
8833 146. http://gcc.gnu.org/PR15783
8834 147. http://gcc.gnu.org/PR15626
8835 148. http://gcc.gnu.org/PR14326
8836 149. http://gcc.gnu.org/PR14723
8837 150. http://gcc.gnu.org/PR15290
8838 151. http://gcc.gnu.org/PR15250
8839 152. http://gcc.gnu.org/PR15551
8840 153. http://gcc.gnu.org/PR8309
8841 154. http://gcc.gnu.org/PR13250
8842 155. http://gcc.gnu.org/PR13803
8843 156. http://gcc.gnu.org/PR14093
8844 157. http://gcc.gnu.org/PR14457
8845 158. http://gcc.gnu.org/PR14542
8846 159. http://gcc.gnu.org/PR15100
8847 160. http://gcc.gnu.org/PR15296
8848 161. http://gcc.gnu.org/PR15396
8849 162. http://gcc.gnu.org/PR15782
8850 163. http://gcc.gnu.org/PR11610
8851 164. http://gcc.gnu.org/PR15488
8852 165. http://gcc.gnu.org/PR15489
8853 166. http://gcc.gnu.org/PR13928
8854 167. http://gcc.gnu.org/PR14150
8855 168. http://gcc.gnu.org/PR14949
8856 169. http://gcc.gnu.org/PR15123
8857 170. http://gcc.gnu.org/PR16469
8858 171. http://gcc.gnu.org/PR16344
8859 172. http://gcc.gnu.org/PR16842
8860 173. http://gcc.gnu.org/PR12608
8861 174. http://gcc.gnu.org/PR14492
8862 175. http://gcc.gnu.org/PR15461
8863 176. http://gcc.gnu.org/PR15890
8864 177. http://gcc.gnu.org/PR16180
8865 178. http://gcc.gnu.org/PR16224
8866 179. http://gcc.gnu.org/PR16408
8867 180. http://gcc.gnu.org/PR16529
8868 181. http://gcc.gnu.org/PR16698
8869 182. http://gcc.gnu.org/PR16706
8870 183. http://gcc.gnu.org/PR16810
8871 184. http://gcc.gnu.org/PR16851
8872 185. http://gcc.gnu.org/PR16870
8873 186. http://gcc.gnu.org/PR16904
8874 187. http://gcc.gnu.org/PR16905
8875 188. http://gcc.gnu.org/PR16964
8876 189. http://gcc.gnu.org/PR17068
8877 190. http://gcc.gnu.org/PR16366
8878 191. http://gcc.gnu.org/PR15345
8879 192. http://gcc.gnu.org/PR16590
8880 193. http://gcc.gnu.org/PR16693
8881 194. http://gcc.gnu.org/PR17078
8882 195. http://gcc.gnu.org/PR13956
8883 196. http://gcc.gnu.org/PR16684
8884 197. http://gcc.gnu.org/PR12658
8885 198. http://gcc.gnu.org/PR13092
8886 199. http://gcc.gnu.org/PR15320
8887 200. http://gcc.gnu.org/PR16246
8888 201. http://gcc.gnu.org/PR16273
8889 202. http://gcc.gnu.org/PR16401
8890 203. http://gcc.gnu.org/PR16411
8891 204. http://gcc.gnu.org/PR16489
8892 205. http://gcc.gnu.org/PR16618
8893 206. http://gcc.gnu.org/PR16637
8894 207. http://gcc.gnu.org/PR16717
8895 208. http://gcc.gnu.org/PR16813
8896 209. http://gcc.gnu.org/PR16853
8897 210. http://gcc.gnu.org/PR16889
8898 211. http://gcc.gnu.org/PR16959
8899 212. http://gcc.gnu.org/PR7587
8900 213. http://gcc.gnu.org/PR16473
8901 214. http://gcc.gnu.org/PR16478
8902 215. http://gcc.gnu.org/PR10695
8903 216. http://gcc.gnu.org/PR16974
8904 217. http://gcc.gnu.org/PR16298
8905 218. http://gcc.gnu.org/PR17113
8906 219. http://gcc.gnu.org/PR14697
8907 220. http://gcc.gnu.org/PR15869
8908 221. http://gcc.gnu.org/PR16325
8909 222. http://gcc.gnu.org/PR16357
8910 223. http://gcc.gnu.org/PR16380
8911 224. http://gcc.gnu.org/PR16407
8912 225. http://gcc.gnu.org/PR16643
8913 226. http://gcc.gnu.org/PR15927
8914 227. http://gcc.gnu.org/PR15948
8915 228. http://gcc.gnu.org/PR17019
8916 229. http://gcc.gnu.org/PR16130
8917 230. http://gcc.gnu.org/PR16142
8918 231. http://gcc.gnu.org/PR16278
8919 232. http://gcc.gnu.org/PR16414
8920 233. http://gcc.gnu.org/PR16445
8921 234. http://gcc.gnu.org/PR16490
8922 235. http://gcc.gnu.org/PR16683
8923 236. http://gcc.gnu.org/PR16195
8924 237. http://gcc.gnu.org/PR16239
8925 238. http://gcc.gnu.org/PR16199
8926 239. http://gcc.gnu.org/PR16416
8927 240. http://gcc.gnu.org/PR16430
8928 241. http://gcc.gnu.org/PR16379
8929 242. http://gcc.gnu.org/PR17093
8930 243. http://gcc.gnu.org/PR17119
8931 244. http://gcc.gnu.org/PR15928
8932 245. http://gcc.gnu.org/PR16210
8933 246. http://gcc.gnu.org/PR15488
8934 247. http://gcc.gnu.org/PR16250
8935 248. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.3
8936 249. http://gcc.gnu.org/PR17369
8937 250. http://gcc.gnu.org/PR17850
8938 251. http://gcc.gnu.org/PR13948
8939 252. http://gcc.gnu.org/PR14492
8940 253. http://gcc.gnu.org/PR16301
8941 254. http://gcc.gnu.org/PR16566
8942 255. http://gcc.gnu.org/PR17023
8943 256. http://gcc.gnu.org/PR17027
8944 257. http://gcc.gnu.org/PR17524
8945 258. http://gcc.gnu.org/PR17826
8946 259. http://gcc.gnu.org/PR15526
8947 260. http://gcc.gnu.org/PR16999
8948 261. http://gcc.gnu.org/PR17503
8949 262. http://gcc.gnu.org/PR17581
8950 263. http://gcc.gnu.org/PR18129
8951 264. http://gcc.gnu.org/PR10975
8952 265. http://gcc.gnu.org/PR11722
8953 266. http://gcc.gnu.org/PR14534
8954 267. http://gcc.gnu.org/PR15172
8955 268. http://gcc.gnu.org/PR15786
8956 269. http://gcc.gnu.org/PR16162
8957 270. http://gcc.gnu.org/PR16612
8958 271. http://gcc.gnu.org/PR16715
8959 272. http://gcc.gnu.org/PR16848
8960 273. http://gcc.gnu.org/PR17132
8961 274. http://gcc.gnu.org/PR17259
8962 275. http://gcc.gnu.org/PR17327
8963 276. http://gcc.gnu.org/PR17393
8964 277. http://gcc.gnu.org/PR17501
8965 278. http://gcc.gnu.org/PR17537
8966 279. http://gcc.gnu.org/PR17585
8967 280. http://gcc.gnu.org/PR17821
8968 281. http://gcc.gnu.org/PR17829
8969 282. http://gcc.gnu.org/PR17851
8970 283. http://gcc.gnu.org/PR17976
8971 284. http://gcc.gnu.org/PR18020
8972 285. http://gcc.gnu.org/PR18093
8973 286. http://gcc.gnu.org/PR18140
8974 287. http://gcc.gnu.org/PR17541
8975 288. http://gcc.gnu.org/PR17853
8976 289. http://gcc.gnu.org/PR17245
8977 290. http://gcc.gnu.org/PR17167
8978 291. http://gcc.gnu.org/PR17277
8979 292. http://gcc.gnu.org/PR17505
8980 293. http://gcc.gnu.org/PR17684
8981 294. http://gcc.gnu.org/PR17384
8982 295. http://gcc.gnu.org/PR17770
8983 296. http://gcc.gnu.org/PR11476
8984 297. http://gcc.gnu.org/PR14064
8985 298. http://gcc.gnu.org/PR14678
8986 299. http://gcc.gnu.org/PR15583
8987 300. http://gcc.gnu.org/PR15790
8988 301. http://gcc.gnu.org/PR15886
8989 302. http://gcc.gnu.org/PR16884
8990 303. http://gcc.gnu.org/PR13841
8991 304. http://gcc.gnu.org/PR15860
8992 305. http://gcc.gnu.org/PR17465
8993 306. http://gcc.gnu.org/PR17469
8994 307. http://gcc.gnu.org/PR18138
8995 308. http://gcc.gnu.org/PR15498
8996 309. http://gcc.gnu.org/PR15747
8997 310. http://gcc.gnu.org/PR16406
8998 311. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.4
8999 312. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.5
9000 313. http://gcc.gnu.org/PR24688
9001 314. http://gcc.gnu.org/PR17188
9002 315. http://gcc.gnu.org/PR20187
9003 316. http://gcc.gnu.org/PR21873
9004 317. http://gcc.gnu.org/PR21899
9005 318. http://gcc.gnu.org/PR22061
9006 319. http://gcc.gnu.org/PR22208
9007 320. http://gcc.gnu.org/PR22458
9008 321. http://gcc.gnu.org/PR22589
9009 322. http://gcc.gnu.org/PR24101
9010 323. http://gcc.gnu.org/PR10611
9011 324. http://gcc.gnu.org/PR13377
9012 325. http://gcc.gnu.org/PR16002
9013 326. http://gcc.gnu.org/PR17413
9014 327. http://gcc.gnu.org/PR17609
9015 328. http://gcc.gnu.org/PR17618
9016 329. http://gcc.gnu.org/PR18124
9017 330. http://gcc.gnu.org/PR18155
9018 331. http://gcc.gnu.org/PR18177
9019 332. http://gcc.gnu.org/PR18368
9020 333. http://gcc.gnu.org/PR18378
9021 334. http://gcc.gnu.org/PR18466
9022 335. http://gcc.gnu.org/PR18512
9023 336. http://gcc.gnu.org/PR18545
9024 337. http://gcc.gnu.org/PR18738
9025 338. http://gcc.gnu.org/PR18803
9026 339. http://gcc.gnu.org/PR19004
9027 340. http://gcc.gnu.org/PR19208
9028 341. http://gcc.gnu.org/PR19253
9029 342. http://gcc.gnu.org/PR19608
9030 343. http://gcc.gnu.org/PR19884
9031 344. http://gcc.gnu.org/PR20153
9032 345. http://gcc.gnu.org/PR20563
9033 346. http://gcc.gnu.org/PR20789
9034 347. http://gcc.gnu.org/PR21336
9035 348. http://gcc.gnu.org/PR21768
9036 349. http://gcc.gnu.org/PR21853
9037 350. http://gcc.gnu.org/PR21903
9038 351. http://gcc.gnu.org/PR21983
9039 352. http://gcc.gnu.org/PR21987
9040 353. http://gcc.gnu.org/PR22153
9041 354. http://gcc.gnu.org/PR22172
9042 355. http://gcc.gnu.org/PR21286
9043 356. http://gcc.gnu.org/PR22233
9044 357. http://gcc.gnu.org/PR22508
9045 358. http://gcc.gnu.org/PR22545
9046 359. http://gcc.gnu.org/PR23528
9047 360. http://gcc.gnu.org/PR23550
9048 361. http://gcc.gnu.org/PR23586
9049 362. http://gcc.gnu.org/PR23624
9050 363. http://gcc.gnu.org/PR23639
9051 364. http://gcc.gnu.org/PR23797
9052 365. http://gcc.gnu.org/PR23965
9053 366. http://gcc.gnu.org/PR24052
9054 367. http://gcc.gnu.org/PR24580
9055 368. http://gcc.gnu.org/PR24267
9056 369. http://gcc.gnu.org/PR17810
9057 370. http://gcc.gnu.org/PR17860
9058 371. http://gcc/gnu.org/PR21709
9059 372. http://gcc.gnu.org/PR21964
9060 373. http://gcc.gnu.org/PR22167
9061 374. http://gcc.gnu.org/PR22619
9062 375. http://gcc.gnu.org/PR23241
9063 376. http://gcc.gnu.org/PR23478
9064 377. http://gcc.gnu.org/PR24470
9065 378. http://gcc.gnu.org/PR24950
9066 379. http://gcc.gnu.org/PR14400
9067 380. http://gcc.gnu.org/PR14940
9068 381. http://gcc.gnu.org/PR20239
9069 382. http://gcc.gnu.org/PR15220
9070 383. http://gcc.gnu.org/PR19275
9071 384. http://gcc.gnu.org/PR21888
9072 385. http://gcc.gnu.org/PR15342
9073 386. http://gcc.gnu.org/PR23985
9074 387. http://gcc.gnu.org/PR16719
9075 388. http://gcc.gnu.org/PR21723
9076 389. http://gcc.gnu.org/PR21841
9077 390. http://gcc.gnu.org/PR23644
9078 391. http://gcc.gnu.org/PR24718
9079 392. http://gcc.gnu.org/PR18421
9080 393. http://gcc.gnu.org/PR20621
9081 394. http://gcc.gnu.org/PR18583
9082 395. http://gcc.gnu.org/PR20191
9083 396. http://gcc.gnu.org/PR22083
9084 397. http://gcc.gnu.org/PR23070
9085 398. http://gcc.gnu.org/PR23404
9086 399. http://gcc.gnu.org/PR23539
9087 400. http://gcc.gnu.org/PR24102
9088 401. http://gcc.gnu.org/PR24465
9089 402. http://gcc.gnu.org/PR19933
9090 403. http://gcc.gnu.org/PR21889
9091 404. http://gcc.gnu.org/PR19300
9092 405. http://gcc.gnu.org/PR20301
9093 406. http://gcc.gnu.org/PR20673
9094 407. http://gcc.gnu.org/PR18582
9095 408. http://gcc.gnu.org/PR19340
9096 409. http://gcc.gnu.org/PR21716
9097 410. http://gcc.gnu.org/PR24315
9098 411. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.6
9099 412. http://gcc.gnu.org/onlinedocs/
9100 413. mailto:gcc-help@gcc.gnu.org
9101 414. mailto:gcc@gcc.gnu.org
9102 415. http://gcc.gnu.org/lists.html
9103 416. http://www.fsf.org/
9104 417. http://gcc.gnu.org/about.html
9105 418. http://validator.w3.org/check/referer
9106 ======================================================================
9107 http://gcc.gnu.org/gcc-3.3/index.html
9108 GCC 3.3 Release Series
9112 The [1]GNU project and the GCC developers are pleased to announce the
9113 release of GCC 3.3.6.
9115 This release is a bug-fix release, containing fixes for regressions in
9116 GCC 3.3.5 relative to previous releases of GCC.
9118 This release is the last of the series 3.3.x.
9120 The GCC 3.3 release series includes numerous [2]new features,
9121 improvements, bug fixes, and other changes, thanks to an [3]amazing
9122 group of volunteers.
9127 May 3, 2005 ([4]changes)
9130 September 30, 2004 ([5]changes)
9133 May 31, 2004 ([6]changes)
9136 February 14, 2004 ([7]changes)
9139 October 16, 2003 ([8]changes)
9142 August 8, 2003 ([9]changes)
9145 May 14, 2003 ([10]changes)
9147 References and Acknowledgements
9149 GCC used to stand for the GNU C Compiler, but since the compiler
9150 supports several other languages aside from C, it now stands for the
9151 GNU Compiler Collection.
9153 A list of [11]successful builds is updated as new information becomes
9156 The GCC developers would like to thank the numerous people that have
9157 contributed new features, improvements, bug fixes, and other changes as
9158 well as test results to GCC. This [12]amazing group of volunteers is
9159 what makes GCC successful.
9161 For additional information about GCC please refer to the [13]GCC
9162 project web site or contact the [14]GCC development mailing list.
9164 To obtain GCC please use [15]our mirror sites, or our CVS server.
9167 For questions related to the use of GCC, please consult these web
9168 pages and the [16]GCC manuals. If that fails, the
9169 [17]gcc-help@gcc.gnu.org mailing list might help. Comments on these
9170 web pages and the development of GCC are welcome on our developer
9171 list at [18]gcc@gcc.gnu.org. All of [19]our lists have public
9174 Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
9175 distribution of this entire article is permitted in any medium,
9176 provided this notice is preserved.
9178 These pages are [21]maintained by the GCC team. Last modified
9183 1. http://www.gnu.org/
9184 2. http://gcc.gnu.org/gcc-3.3/changes.html
9185 3. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
9186 4. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.6
9187 5. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.5
9188 6. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.4
9189 7. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.3
9190 8. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.2
9191 9. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.1
9192 10. http://gcc.gnu.org/gcc-3.3/changes.html
9193 11. http://gcc.gnu.org/gcc-3.3/buildstat.html
9194 12. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
9195 13. http://gcc.gnu.org/index.html
9196 14. mailto:gcc@gcc.gnu.org
9197 15. http://gcc.gnu.org/mirrors.html
9198 16. http://gcc.gnu.org/onlinedocs/
9199 17. mailto:gcc-help@gcc.gnu.org
9200 18. mailto:gcc@gcc.gnu.org
9201 19. http://gcc.gnu.org/lists.html
9202 20. http://www.fsf.org/
9203 21. http://gcc.gnu.org/about.html
9204 22. http://validator.w3.org/check/referer
9205 ======================================================================
9206 http://gcc.gnu.org/gcc-3.3/changes.html
9207 GCC 3.3 Release Series
9208 Changes, New Features, and Fixes
9210 The latest release in the 3.3 release series is [1]GCC 3.3.6.
9214 * The preprocessor no longer accepts multi-line string literals. They
9215 were deprecated in 3.0, 3.1, and 3.2.
9216 * The preprocessor no longer supports the -A- switch when appearing
9217 alone. -A- followed by an assertion is still supported.
9218 * Support for all the systems [2]obsoleted in GCC 3.1 has been
9219 removed from GCC 3.3. See below for a [3]list of systems which are
9220 obsoleted in this release.
9221 * Checking for null format arguments has been decoupled from the rest
9222 of the format checking mechanism. Programs which use the format
9223 attribute may regain this functionality by using the new [4]nonnull
9224 function attribute. Note that all functions for which GCC has a
9225 built-in format attribute, an appropriate built-in nonnull
9226 attribute is also applied.
9227 * The DWARF (version 1) debugging format has been deprecated and will
9228 be removed in a future version of GCC. Version 2 of the DWARF
9229 debugging format will continue to be supported for the foreseeable
9231 * The C and Objective-C compilers no longer accept the "Naming Types"
9232 extension (typedef foo = bar); it was already unavailable in C++.
9233 Code which uses it will need to be changed to use the "typeof"
9234 extension instead: typedef typeof(bar) foo. (We have removed this
9235 extension without a period of deprecation because it has caused the
9236 compiler to crash since version 3.0 and no one noticed until very
9237 recently. Thus we conclude it is not in widespread use.)
9238 * The -traditional C compiler option has been removed. It was
9239 deprecated in 3.1 and 3.2. (Traditional preprocessing remains
9240 available.) The <varargs.h> header, used for writing variadic
9241 functions in traditional C, still exists but will produce an error
9243 * GCC 3.3.1 automatically places zero-initialized variables in the
9244 .bss section on some operating systems. Versions of GNU Emacs up to
9245 (and including) 21.3 will not work correctly when using this
9246 optimization; you can use -fno-zero-initialized-in-bss to disable
9249 General Optimizer Improvements
9251 * A new scheme for accurately describing processor pipelines, the
9252 [5]DFA scheduler, has been added.
9253 * Pavel Nejedly, Charles University Prague, has contributed new file
9254 format used by the edge coverage profiler (-fprofile-arcs).
9255 The new format is robust and diagnoses common mistakes where
9256 profiles from different versions (or compilations) of the program
9257 are combined resulting in nonsensical profiles and slow code to
9258 produced with profile feedback. Additionally this format allows
9259 extra data to be gathered. Currently, overall statistics are
9260 produced helping optimizers to identify hot spots of a program
9261 globally replacing the old intra-procedural scheme and resulting in
9262 better code. Note that the gcov tool from older GCC versions will
9263 not be able to parse the profiles generated by GCC 3.3 and vice
9265 * Jan Hubicka, SuSE Labs, has contributed a new superblock formation
9266 pass enabled using -ftracer. This pass simplifies the control flow
9267 of functions allowing other optimizations to do better job.
9268 He also contributed the function reordering pass
9269 (-freorder-functions) to optimize function placement using profile
9272 New Languages and Language specific improvements
9276 * The preprocessor now accepts directives within macro arguments. It
9277 processes them just as if they had not been within macro arguments.
9278 * The separate ISO and traditional preprocessors have been completely
9279 removed. The front end handles either type of preprocessed output
9281 * In C99 mode preprocessor arithmetic is done in the precision of the
9282 target's intmax_t, as required by that standard.
9283 * The preprocessor can now copy comments inside macros to the output
9284 file when the macro is expanded. This feature, enabled using the
9285 -CC option, is intended for use by applications which place
9286 metadata or directives inside comments, such as lint.
9287 * The method of constructing the list of directories to be searched
9288 for header files has been revised. If a directory named by a -I
9289 option is a standard system include directory, the option is
9290 ignored to ensure that the default search order for system
9291 directories and the special treatment of system header files are
9293 * A few more [6]ISO C99 features now work correctly.
9294 * A new function attribute, nonnull, has been added which allows
9295 pointer arguments to functions to be specified as requiring a
9296 non-null value. The compiler currently uses this information to
9297 issue a warning when it detects a null value passed in such an
9299 * A new type attribute, may_alias, has been added. Accesses to
9300 objects with types with this attribute are not subjected to
9301 type-based alias analysis, but are instead assumed to be able to
9302 alias any other type of objects, just like the char type.
9306 * Type based alias analysis has been implemented for C++ aggregate
9311 * Generate an error if Objective-C objects are passed by value in
9312 function and method calls.
9313 * When -Wselector is used, check the whole list of selectors at the
9314 end of compilation, and emit a warning if a @selector() is not
9316 * Define __NEXT_RUNTIME__ when compiling for the NeXT runtime.
9317 * No longer need to include objc/objc-class.h to compile self calls
9318 in class methods (NeXT runtime only).
9319 * New -Wundeclared-selector option.
9320 * Removed selector bloating which was causing object files to be 10%
9321 bigger on average (GNU runtime only).
9322 * Using at run time @protocol() objects has been fixed in certain
9323 situations (GNU runtime only).
9324 * Type checking has been fixed and improved in many situations
9325 involving protocols.
9329 * The java.sql and javax.sql packages now implement the JDBC 3.0 (JDK
9331 * The JDK 1.4 assert facility has been implemented.
9332 * The bytecode interpreter is now direct threaded and thus faster.
9336 * Fortran improvements are listed in [7]the Fortran documentation.
9340 * Ada tasking now works with glibc 2.3.x threading libraries.
9342 New Targets and Target Specific Improvements
9344 * The following changes have been made to the HP-PA port:
9345 + The port now defaults to scheduling for the PA8000 series of
9347 + Scheduling support for the PA7300 processor has been added.
9348 + The 32-bit port now supports weak symbols under HP-UX 11.
9349 + The handling of initializers and finalizers has been improved
9350 under HP-UX 11. The 64-bit port no longer uses collect2.
9351 + Dwarf2 EH support has been added to the 32-bit GNU/Linux port.
9352 + ABI fixes to correct the passing of small structures by value.
9353 * The SPARC, HP-PA, SH4, and x86/pentium ports have been converted to
9354 use the DFA processor pipeline description.
9355 * The following NetBSD configurations for the SuperH processor family
9357 + SH3, big-endian, sh-*-netbsdelf*
9358 + SH3, little-endian, shle-*-netbsdelf*
9359 + SH5, SHmedia, big-endian, 32-bit default, sh5-*-netbsd*
9360 + SH5, SHmedia, little-endian, 32-bit default, sh5le-*-netbsd*
9361 + SH5, SHmedia, big-endian, 64-bit default, sh64-*-netbsd*
9362 + SH5, SHmedia, little-endian, 64-bit default, sh64le-*-netbsd*
9363 * The following changes have been made to the IA-32/x86-64 port:
9364 + SSE2 and 3dNOW! intrinsics are now supported.
9365 + Support for thread local storage has been added to the IA-32
9367 + The x86-64 port has been significantly improved.
9368 * The following changes have been made to the MIPS port:
9369 + All configurations now accept the -mabi switch. Note that you
9370 will need appropriate multilibs for this option to work
9372 + ELF configurations will always pass an ABI flag to the
9373 assembler, except when the MIPS EABI is selected.
9374 + -mabi=64 no longer selects MIPS IV code.
9375 + The -mcpu option, which was deprecated in 3.1 and 3.2, has
9376 been removed from this release.
9377 + -march now changes the core ISA level. In previous releases,
9378 it would change the use of processor-specific extensions, but
9379 would leave the core ISA unchanged. For example, mips64-elf
9380 -march=r8000 will now generate MIPS IV code.
9381 + Under most configurations, -mipsN now acts as a synonym for
9383 + There are some new preprocessor macros to describe the -march
9384 and -mtune settings. See the documentation of those options
9386 + Support for the NEC VR-Series processors has been added. This
9387 includes the 54xx, 5500, and 41xx series.
9388 + Support for the Sandcraft sr71k processor has been added.
9389 * The following changes have been made to the S/390 port:
9390 + Support to build the Java runtime libraries has been added.
9391 Java is now enabled by default on s390-*-linux* and
9392 s390x-*-linux* targets.
9393 + Multilib support for the s390x-*-linux* target has been added;
9394 this allows to build 31-bit binaries using the -m31 option.
9395 + Support for thread local storage has been added.
9396 + Inline assembler code may now use the 'Q' constraint to
9397 specify memory operands without index register.
9398 + Various platform-specific performance improvements have been
9399 implemented; in particular, the compiler now uses the BRANCH
9400 ON COUNT family of instructions and makes more frequent use of
9401 the TEST UNDER MASK family of instructions.
9402 * The following changes have been made to the PowerPC port:
9403 + Support for IBM Power4 processor added.
9404 + Support for Motorola e500 SPE added.
9405 + Support for AIX 5.2 added.
9406 + Function and Data sections now supported on AIX.
9407 + Sibcall optimizations added.
9408 * The support for H8 Tiny is added to the H8/300 port with -mn.
9412 Support for a number of older systems has been declared obsolete in GCC
9413 3.3. Unless there is activity to revive them, the next release of GCC
9414 will have their sources permanently removed.
9416 All configurations of the following processor architectures have been
9418 * Matsushita MN10200, mn10200-*-*
9419 * Motorola 88000, m88k-*-*
9420 * IBM ROMP, romp-*-*
9422 Also, some individual systems have been obsoleted:
9424 + Interix, alpha*-*-interix*
9425 + Linux libc1, alpha*-*-linux*libc1*
9426 + Linux ECOFF, alpha*-*-linux*ecoff*
9428 + Generic a.out, arm*-*-aout*
9429 + Conix, arm*-*-conix*
9430 + "Old ABI," arm*-*-oabi
9431 + StrongARM/COFF, strongarm-*-coff*
9433 + Generic OSF, hppa1.0-*-osf*
9434 + Generic BSD, hppa1.0-*-bsd*
9435 + HP/UX versions 7, 8, and 9, hppa1.[01]-*-hpux[789]*
9436 + HiUX, hppa*-*-hiux*
9437 + Mach Lites, hppa*-*-lites*
9439 + Windows NT 3.x, i?86-*-win32
9441 + HP systems, m68000-hp-bsd* and m68k-hp-bsd*
9442 + Sun systems, m68000-sun-sunos*, m68k-sun-sunos*, and
9444 + AT&T systems, m68000-att-sysv*
9445 + Atari systems, m68k-atari-sysv*
9446 + Motorola systems, m68k-motorola-sysv*
9447 + NCR systems, m68k-ncr-sysv*
9448 + Plexus systems, m68k-plexus-sysv*
9449 + Commodore systems, m68k-cbm-sysv*
9450 + Citicorp TTI, m68k-tti-*
9451 + Unos, m68k-crds-unos*
9452 + Concurrent RTU, m68k-ccur-rtu*
9453 + Linux a.out, m68k-*-linux*aout*
9454 + Linux libc1, m68k-*-linux*libc1*
9455 + pSOS, m68k-*-psos*
9457 + Generic ECOFF, mips*-*-ecoff*
9458 + SINIX, mips-sni-sysv4
9459 + Orion RTEMS, mips64orion-*-rtems*
9460 * National Semiconductor 32000
9461 + OpenBSD, ns32k-*-openbsd*
9462 * POWER (aka RS/6000) and PowerPC
9463 + AIX versions 1, 2, and 3, rs6000-ibm-aix[123]*
9464 + Bull BOSX, rs6000-bull-bosx
9465 + Generic Mach, rs6000-*-mach*
9466 + Generic SysV, powerpc*-*-sysv*
9467 + Linux libc1, powerpc*-*-linux*libc1*
9469 + Generic a.out, sparc-*-aout*, sparclet-*-aout*,
9470 sparclite-*-aout*, and sparc86x-*-aout*
9471 + NetBSD a.out, sparc-*-netbsd*aout*
9472 + Generic BSD, sparc-*-bsd*
9473 + ChorusOS, sparc-*-chorusos*
9474 + Linux a.out, sparc-*-linux*aout*
9475 + Linux libc1, sparc-*-linux*libc1*
9476 + LynxOS, sparc-*-lynxos*
9477 + Solaris on HAL hardware, sparc-hal-solaris2*
9478 + SunOS versions 3 and 4, sparc-*-sunos[34]*
9480 + RTEMS, v850-*-rtems*
9484 Documentation improvements
9486 Other significant improvements
9488 * Almost all front-end dependencies in the compiler have been
9489 separated out into a set of language hooks. This should make adding
9490 a new front end clearer and easier.
9491 * One effect of removing the separate preprocessor is a small
9492 increase in the robustness of the compiler in general, and the
9493 maintainability of target descriptions. Previously target-specific
9494 built-in macros and others, such as __FAST_MATH__, had to be
9495 handled with so-called specs that were hard to maintain. Often they
9496 would fail to behave properly when conflicting options were
9497 supplied on the command line, and define macros in the user's
9498 namespace even when strict ISO compliance was requested.
9499 Integrating the preprocessor has cleanly solved these issues.
9500 * The Makefile suite now supports redirection of make install by
9501 means of the variable DESTDIR.
9502 __________________________________________________________________
9506 Detailed release notes for the GCC 3.3 release follow.
9512 * [8]10140 cross compiler build failures: missing __mempcpy (DUP:
9515 Internal compiler errors (multi-platform)
9517 * [11]3581 large string causes segmentation fault in cc1
9518 * [12]4382 __builtin_{set,long}jmp with -O3 can crash the compiler
9519 * [13]5533 (c++) ICE when processing std::accumulate(begin, end,
9521 * [14]6387 -fpic -gdwarf-2 -g1 combination gives ICE in dwarf2out
9522 * [15]6412 (c++) ICE in retrieve_specialization
9523 * [16]6620 (c++) partial template specialization causes an ICE
9524 (segmentation fault)
9525 * [17]6663 (c++) ICE with attribute aligned
9526 * [18]7068 ICE with incomplete types
9527 * [19]7083 (c++) ICE using -gstabs with dodgy class derivation
9528 * [20]7647 (c++) ICE when data member has the name of the enclosing
9530 * [21]7675 ICE in fixup_var_refs_1
9531 * [22]7718 'complex' template instantiation causes ICE
9532 * [23]8116 (c++) ICE in member template function
9533 * [24]8358 (ada) Ada compiler accesses freed memory, crashes
9534 * [25]8511 (c++) ICE: (hopefully) reproducible cc1plus segmentation
9536 * [26]8564 (c++) ICE in find_function_data, in function.c
9537 * [27]8660 (c++) template overloading ICE in tsubst_expr, in cp/pt.c
9538 * [28]8766 (c++) ICE after failed initialization of static template
9540 * [29]8803 ICE in instantiate_virtual_regs_1, in function.c
9541 * [30]8846 (c++) ICE after diagnostic if fr_FR@euro locale is set
9542 * [31]8906 (c++) ICE (Segmentation fault) when parsing nested-class
9544 * [32]9216 (c++) ICE on missing template parameter
9545 * [33]9261 (c++) ICE in arg_assoc, in cp/decl2.c
9546 * [34]9263 (fortran) ICE caused by invalid PARAMETER in implied DO
9548 * [35]9429 (c++) ICE in template instantiation with a pointered new
9550 * [36]9516 Internal error when using a big array
9551 * [37]9600 (c++) ICE with typedefs in template class
9552 * [38]9629 (c++) virtual inheritance segfault
9553 * [39]9672 (c++) ICE: Error reporting routines re-entered
9554 * [40]9749 (c++) ICE in write_expression on invalid function
9556 * [41]9794 (fortran) ICE: floating point exception during constant
9558 * [42]9829 (c++) Missing colon in nested namespace usage causes ICE
9559 * [43]9916 (c++) ICE with noreturn function in ?: statement
9560 * [44]9936 ICE with local function and variable-length 2d array
9561 * [45]10262 (c++) cc1plus crashes with large generated code
9562 * [46]10278 (c++) ICE in parser for invalid code
9563 * [47]10446 (c++) ICE on definition of nonexistent member function of
9564 nested class in a class template
9565 * [48]10451 (c++) ICE in grokdeclarator on spurious mutable
9567 * [49]10506 (c++) ICE in build_new at cp/init.c with
9568 -fkeep-inline-functions and multiple inheritance
9569 * [50]10549 (c++) ICE in store_bit_field on bitfields that exceed the
9570 precision of the declared type
9574 * [51]2001 Inordinately long compile times in reload CSE regs
9575 * [52]2391 Exponential compilation time explosion in combine
9576 * [53]2960 Duplicate loop conditions even with -Os
9577 * [54]4046 redundant conditional branch
9578 * [55]6405 Loop-unrolling related performance regressions
9579 * [56]6798 very long compile time with large case-statement
9580 * [57]6871 const objects shouldn't be moved to .bss
9581 * [58]6909 problem w/ -Os on modified loop-2c.c test case
9582 * [59]7189 gcc -O2 -Wall does not print ``control reaches end of
9583 non-void function'' warning
9584 * [60]7642 optimization problem with signbit()
9585 * [61]8634 incorrect code for inlining of memcpy under -O2
9586 * [62]8750 Cygwin prolog generation erroneously emitting __alloca as
9587 regular function call
9591 * [63]2161 long if-else cascade overflows parser stack
9592 * [64]4319 short accepted on typedef'd char
9593 * [65]8602 incorrect line numbers in warning messages when using
9595 * [66]9177 -fdump-translation-unit: C front end deletes function_decl
9596 AST nodes and breaks debugging dumps
9597 * [67]9853 miscompilation of non-constant structure initializer
9599 c++ compiler and library
9601 * [68]45 legal template specialization code is rejected (DUP:
9603 * [70]764 lookup failure: friend operator and dereferencing a pointer
9604 and templates (DUP: [71]5116)
9605 * [72]2862 gcc accepts invalid explicit instantiation syntax (DUP:
9607 * [73]3663 G++ doesn't check access control during template
9609 * [74]3797 gcc fails to emit explicit specialization of a template
9611 * [75]3948 Two destructors are called when no copy destructor is
9612 defined (ABI change)
9613 * [76]4137 Conversion operator within template is not accepted
9614 * [77]4361 bogus ambiguity taking the address of a member template
9615 * [78]4802 g++ accepts illegal template code (access to private
9616 member; DUP: [79]5837)
9617 * [80]4803 inline function is used but never defined, and g++ does
9619 * [81]5094 Partial specialization cannot be friend?
9620 * [82]5730 complex<double>::norm() -- huge slowdown from egcs-2.91.66
9621 * [83]6713 Regression wrt 3.0.4: g++ -O2 leads to seg fault at run
9623 * [84]7015 certain __asm__ constructs rejected
9624 * [85]7086 compile time regression (quadratic behavior in
9626 * [86]7099 G++ doesn't set the noreturn attribute on std::exit and
9628 * [87]7247 copy constructor missing when inlining enabled (invalid
9630 * [88]7441 string array initialization compilation time regression
9631 from seconds to minutes
9632 * [89]7768 __PRETTY_FUNCTION__ for template destructor is wrong
9633 * [90]7804 bad printing of floating point constant in warning message
9634 * [91]8099 Friend classes and template specializations
9635 * [92]8117 member function pointers and multiple inheritance
9636 * [93]8205 using declaration and multiple inheritance
9637 * [94]8645 unnecessary non-zero checks in stl_tree.h
9638 * [95]8724 explicit destructor call for incomplete class allowed
9639 * [96]8805 compile time regression with many member variables
9640 * [97]8691 -O3 and -fno-implicit-templates are incompatible
9641 * [98]8700 unhelpful error message for binding temp to reference
9642 * [99]8724 explicit destructor call for incomplete class allowed
9643 * [100]8949 numeric_limits<>::denorm_min() and is_iec559 problems
9644 * [101]9016 Failure to consistently constant fold "constant" C++
9646 * [102]9053 g++ confused about ambiguity of overloaded function
9648 * [103]9152 undefined virtual thunks
9649 * [104]9182 basic_filebuf<> does not report errors in codecvt<>::out
9650 * [105]9297 data corruption due to codegen bug (when copying.)
9651 * [106]9318 i/ostream::operator>>/<<(streambuf*) broken
9652 * [107]9320 Incorrect usage of traits_type::int_type in stdio_filebuf
9653 * [108]9400 bogus -Wshadow warning: shadowed declaration of this in
9655 * [109]9424 i/ostream::operator>>/<<(streambuf*) drops characters
9656 * [110]9425 filebuf::pbackfail broken (DUP: [111]9439)
9657 * [112]9474 GCC freezes in compiling a weird code mixing <iostream>
9659 * [113]9548 Incorrect results from setf(ios::fixed) and precision(-1)
9661 * [115]9555 ostream inserters fail to set badbit on exception
9662 * [116]9561 ostream inserters rethrow exception of wrong type
9663 * [117]9563 ostream::sentry returns true after a failed preparation
9664 * [118]9582 one-definition rule violation in std::allocator
9665 * [119]9622 __PRETTY_FUNCTION__ incorrect in template destructors
9666 * [120]9683 bug in initialization chains for static const variables
9667 from template classes
9668 * [121]9791 -Woverloaded-virtual reports hiding of destructor
9669 * [122]9817 collate::compare doesn't handle nul characters
9670 * [123]9825 filebuf::sputbackc breaks sbumpc
9671 * [124]9826 operator>>(basic_istream, basic_string) fails to compile
9673 * [125]9924 Multiple using statements for builtin functions not
9675 * [126]9946 destructor is not called for temporary object
9676 * [127]9964 filebuf::close() sometimes fails to close file
9677 * [128]9988 filebuf::overflow writes EOF to file
9678 * [129]10033 optimization breaks polymorphic references w/ typeid
9680 * [130]10097 filebuf::underflow drops characters
9681 * [131]10132 filebuf destructor can throw exceptions
9682 * [132]10180 gcc fails to warn about non-inlined function
9683 * [133]10199 method parametrized by template does not work everywhere
9684 * [134]10300 use of array-new (nothrow) in segfaults on NULL return
9685 * [135]10427 Stack corruption with variable-length automatic arrays
9686 and virtual destructors
9687 * [136]10503 Compilation never stops in fixed_type_or_null
9691 * [137]5956 selectors aren't matched properly when added to the
9694 Fortran compiler and library
9696 * [138]1832 list directed i/o overflow hangs, -fbounds-check doesn't
9698 * [139]3924 g77 generates code that is rejected by GAS if COFF debug
9700 * [140]5634 doc: explain that configure --prefix=~/... does not work
9701 * [141]6367 multiple repeat counts confuse namelist read into array
9702 * [142]6491 Logical operations error on logicals when using
9704 * [143]6742 Generation of C++ Prototype for FORTRAN and extern "C"
9705 * [144]7113 Failure of g77.f-torture/execute/f90-intrinsic-bit.f -Os
9707 * [145]7236 OPEN(...,RECL=nnn,...) without ACCESS='DIRECT' should
9708 assume a direct access file
9709 * [146]7278 g77 "bug"; the executable misbehaves (with -O2
9711 * [147]7384 DATE_AND_TIME milliseconds field inactive on Windows
9712 * [148]7388 Incorrect output with 0-based array of characters
9713 * [149]8587 Double complex zero ** double precision number -> NaN
9715 * [150]9038 -ffixed-line-length-none -x f77-cpp-input gives: Warning:
9716 unknown register name line-length-none
9717 * [151]10197 Direct access files not unformatted by default
9719 Java compiler and library
9721 * [152]6005 gcj fails to build rhug on alpha
9722 * [153]6389 System.getProperty("") should always throw an
9723 IllegalArgumentException
9724 * [154]6576 java.util.ResourceBundle.getResource ignores locale
9725 * [155]6652 new java.io.File("").getCanonicalFile() throws exception
9726 * [156]7060 getMethod() doesn't search super interface
9727 * [157]7073 bytecode interpreter gives wrong answer for interface
9729 * [158]7180 possible bug in
9730 javax.naming.spi.NamingManager.getPlusPath()
9731 * [159]7416 java.security startup refs "GNU libgcj.security"
9732 * [160]7570 Runtime.exec with null envp: child doesn't inherit parent
9733 env (DUP: [161]7578)
9734 * [162]7611 Internal error while compiling libjava with -O
9735 * [163]7709 NullPointerException in _Jv_ResolvePoolEntry
9736 * [164]7766 ZipInputStream.available returns 0 immediately after
9738 * [165]7785 Calendar.getTimeInMillis/setTimeInMillis should be public
9739 * [166]7786 TimeZone.getDSTSavings() from JDK1.4 not implemented
9740 * [167]8142 '$' in class names vs. dlopen 'dynamic string tokens'
9741 * [168]8234 ZipInputStream chokes when InputStream.read() returns
9743 * [169]8415 reflection bug: exception info for Method
9744 * [170]8481 java.Random.nextInt(int) may return negative
9745 * [171]8593 Error reading GZIPped files with BufferedReader
9746 * [172]8759 java.beans.Introspector has no flushCaches() or
9747 flushFromCaches() methods
9748 * [173]8997 spin() calls Thread.sleep
9749 * [174]9253 on win32, java.io.File.listFiles("C:\\") returns pwd
9750 instead of the root content of C:
9751 * [175]9254 java::lang::Object::wait(), threads-win32.cc returns
9753 * [176]9271 Severe bias in java.security.SecureRandom
9755 Ada compiler and library
9757 * [177]6767 make gnatlib-shared fails on -laddr2line
9758 * [178]9911 gnatmake fails to link when GCC configured with
9759 --with-sjlj-exceptions=yes
9760 * [179]10020 Can't bootstrap gcc on AIX with Ada enabled
9761 * [180]10546 Ada tasking not working on Red Hat 9
9765 * [181]7029 preprocessor should ignore #warning with -M
9769 * [182]2903 [arm] Optimization bug with long long arithmetic
9770 * [183]7873 arm-linux-gcc fails when assigning address to a bit field
9774 * [184]7680 float functions undefined in math.h/cmath with #define
9777 HP-UX or HP-PA-specific
9779 * [185]8705 [HP-PA] ICE in emit_move_insn_1, in expr.c
9780 * [186]9986 [HP-UX] Incorrect transformation of fputs_unlocked to
9782 * [187]10056 [HP-PA] ICE at -O2 when building c++ code from doxygen
9786 * [188]6744 Bad assembler code generated: reference to pseudo
9788 * [189]7361 Internal compiler error in reload_cse_simplify_operands,
9793 * [190]9496 [mips-linux] bug in optimizer?
9797 * [191]7067 -Os with -mcpu=powerpc optimizes for speed (?) instead of
9799 * [192]8480 reload ICEs for LAPACK code on powerpc64-linux
9800 * [193]8784 [AIX] Internal compiler error in simplify_gen_subreg
9801 * [194]10315 [powerpc] ICE: in extract_insn, in recog.c
9805 * [195]10267 (documentation) Wrong build instructions for
9808 x86-specific (Intel/AMD)
9810 * [196]7916 ICE in instantiate_virtual_register_1
9811 * [197]7926 (c++) i486 instructions in header files make c++ programs
9813 * [198]8555 ICE in gen_split_1231
9814 * [199]8994 ICE with -O -march=pentium4
9815 * [200]9426 ICE with -fssa -funroll-loops -fprofile-arcs
9816 * [201]9806 ICE in inline assembly with -fPIC flag
9817 * [202]10077 gcc -msse2 generates movd to move dwords between xmm
9819 * [203]10233 64-bit comparison only comparing bottom 32-bits
9820 * [204]10286 type-punning doesn't work with __m64 and -O
9821 * [205]10308 [x86] ICE with -O -fgcse or -O2
9822 __________________________________________________________________
9828 This section lists the problem reports (PRs) from GCC's bug tracking
9829 system that are known to be fixed in the 3.3.1 release. This list might
9830 not be complete (that is, it is possible that some PRs that have been
9831 fixed are not listed here).
9835 * [206]11272 [Solaris] make bootstrap fails while building libstdc++
9837 Internal compiler errors (multi-platform)
9839 * [207]5754 ICE on invalid nested template class
9840 * [208]6597 ICE in set_mem_alias_set compiling Qt with -O2 on ia64
9841 and --enable-checking
9842 * [209]6949 (c++) ICE in tsubst_decl, in cp/pt.c
9843 * [210]7053 (c++) ICE when declaring a function already defined as a
9844 friend method of a template class
9845 * [211]8164 (c++) ICE when using different const expressions as
9847 * [212]8384 (c++) ICE in is_base_type, in dwarf2out.c
9848 * [213]9559 (c++) ICE with invalid initialization of a static const
9849 * [214]9649 (c++) ICE in finish_member_declaration, in cp/semantics.c
9850 when redeclaring a static member variable
9851 * [215]9864 (fortran) ICE in add_abstract_origin_attribute, in
9852 dwarfout.c with -g -O -finline-functions
9853 * [216]10432 (c++) ICE in poplevel, in cp/decl.c
9854 * [217]10475 ICE in subreg_highpart_offset for code with long long
9855 * [218]10635 (c++) ICE when dereferencing an incomplete type casted
9857 * [219]10661 (c++) ICE in instantiate_decl, in cp/pt.c while
9858 instantiating static member variables
9859 * [220]10700 ICE in copy_to_mode_reg on 64-bit targets
9860 * [221]10712 (c++) ICE in constructor_name_full, in cp/decl2.c
9861 * [222]10796 (c++) ICE when defining an enum with two values: -1 and
9863 * [223]10890 ICE in merge_assigned_reloads building Linux 2.4.2x
9865 * [224]10939 (c++) ICE with template code
9866 * [225]10956 (c++) ICE when specializing a template member function
9867 of a template class, in tsubst, in cp/pt.c
9868 * [226]11041 (c++) ICE: const myclass &x = *x; (when operator*()
9870 * [227]11059 (c++) ICE with empty union
9871 * [228]11083 (c++) ICE in commit_one_edge_insertion, in cfgrtl.c with
9872 -O2 -fnon-call-exceptions
9873 * [229]11105 (c++) ICE in mangle_conv_op_name_for_type
9874 * [230]11149 (c++) ICE on error when instantiation with call function
9876 * [231]11228 (c++) ICE on new-expression using array operator new and
9877 default-initialization
9878 * [232]11282 (c++) Infinite memory usage after syntax error
9879 * [233]11301 (fortran) ICE with -fno-globals
9880 * [234]11308 (c++) ICE when using an enum type name as if it were a
9882 * [235]11473 (c++) ICE with -gstabs when empty struct inherits from
9884 * [236]11503 (c++) ICE when instantiating template with ADDR_EXPR
9885 * [237]11513 (c++) ICE in push_template_decl_real, in cp/pt.c:
9886 template member functions
9890 * [238]11198 -O2 -frename-registers generates wrong code (aliasing
9892 * [239]11304 Wrong code production with -fomit-frame-pointer
9893 * [240]11381 volatile memory access optimized away
9894 * [241]11536 [strength-reduce] -O2 optimization produces wrong code
9895 * [242]11557 constant folding bug generates wrong code
9899 * [243]5897 No warning for statement after return
9900 * [244]11279 DWARF-2 output mishandles large enums
9904 * [245]11022 no warning for non-compatible macro redefinition
9906 C++ compiler and library
9908 * [246]2330 static_cast<>() to a private base is allowed
9909 * [247]5388 Incorrect message "operands to ?: have different types"
9910 * [248]5390 Libiberty fails to demangle multi-digit template
9912 * [249]7877 Incorrect parameter passing to specializations of member
9914 * [250]9393 Anonymous namespaces and compiling the same file twice
9915 * [251]10032 -pedantic converts some errors to warnings
9916 * [252]10468 const typeof(x) is non-const, but only in templates
9917 * [253]10527 confused error message with "new int()" parameter
9919 * [254]10679 parameter MIN_INLINE_INSNS is not honored
9920 * [255]10682 gcc chokes on a typedef for an enum inside a class
9922 * [256]10689 pow(std::complex(0),1/3) returns (nan, nan) instead of
9924 * [257]10845 template member function (with nested template as
9925 parameter) cannot be called anymore if another unrelated template
9926 member function is defined
9927 * [258]10849 Cannot define an out-of-class specialization of a
9928 private nested template class
9929 * [259]10888 Suppress -Winline warnings for system headers
9930 * [260]10929 -Winline warns about functions for which no definition
9932 * [261]10931 valid conversion static_cast<const unsigned
9933 int&>(lvalue-of-type-int) is rejected
9934 * [262]10940 Bad code with explicit specialization
9935 * [263]10968 If member function implicitly instantiated, explicit
9936 instantiation of class fails to instantiate it
9937 * [264]10990 Cannot convert with dynamic_cast<> to a private base
9938 class from within a member function
9939 * [265]11039 Bad interaction between implicit typename deprecation
9941 * [266]11062 (libstdc++) avoid __attribute__ ((unused)); say
9942 "__unused__" instead
9943 * [267]11095 C++ iostream manipulator causes segfault when called
9944 with negative argument
9945 * [268]11098 g++ doesn't emit complete debugging information for
9946 local variables in destructors
9947 * [269]11137 GNU/Linux shared library constructors not called unless
9948 there's one global object
9949 * [270]11154 spurious ambiguity report for template class
9951 * [271]11329 Compiler cannot find user defined implicit typecast
9952 * [272]11332 Spurious error with casts in ?: expression
9953 * [273]11431 static_cast behavior with subclasses when default
9954 constructor available
9955 * [274]11528 money_get facet does not accept "$.00" as valid
9956 * [275]11546 Type lookup problems in out-of-line definition of a
9957 class doubly nested from a template class
9958 * [276]11567 C++ code containing templated member function with same
9959 name as pure virtual member function results in linking failure
9960 * [277]11645 Failure to deal with using and private inheritance
9962 Java compiler and library
9964 * [278]5179 Qualified static field access doesn't initialize its
9966 * [279]8204 gcj -O2 to native reorders certain instructions
9968 * [280]10838 java.io.ObjectInputStream syntax error
9969 * [281]10886 The RMI registry that comes with GCJ does not work
9971 * [282]11349 JNDI URL context factories not located correctly
9973 x86-specific (Intel/AMD)
9975 * [283]4823 ICE on inline assembly code
9976 * [284]8878 miscompilation with -O and SSE
9977 * [285]9815 (c++ library) atomicity.h - fails to compile with -O3
9979 * [286]10402 (inline assembly) [x86] ICE in merge_assigned_reloads,
9981 * [287]10504 ICE with SSE2 code and -O3 -mcpu=pentium4 -msse2
9982 * [288]10673 ICE for x86-64 on freebsd libc vfprintf.c source
9983 * [289]11044 [x86] out of range loop instructions for FP code on K6
9984 * [290]11089 ICE: instantiate_virtual_regs_lossage while using SSE
9986 * [291]11420 [x86_64] gcc generates invalid asm code when "-O -fPIC"
9989 SPARC- or Solaris- specific
9991 * [292]9362 solaris 'as' dies when fed .s and "-gstabs"
9992 * [293]10142 [SPARC64] gcc produces wrong code when passing
9994 * [294]10663 New configure check aborts with Sun tools.
9995 * [295]10835 combinatorial explosion in scheduler on HyperSPARC
9996 * [296]10876 ICE in calculate_giv_inc when building KDE
9997 * [297]10955 wrong code at -O3 for structure argument in context of
9999 * [298]11018 -mcpu=ultrasparc busts tar-1.13.25
10000 * [299]11556 [sparc64] ICE in gen_reg_rtx() while compiling 2.6.x
10005 * [300]10907 gcc violates the ia64 ABI (GP must be preserved)
10006 * [301]11320 scheduler bug (in machine depended reorganization pass)
10007 * [302]11599 bug with conditional and __builtin_prefetch
10011 * [303]9745 [powerpc] gcc mis-compiles libmcrypt (alias problem
10013 * [304]10871 error in rs6000_stack_info save_size computation
10014 * [305]11440 gcc mis-compiles c++ code (libkhtml) with -O2, -fno-gcse
10019 * [306]7594 [m68k] ICE on legal code associated with simplify-rtx
10020 * [307]10557 [m68k] ICE in subreg_offset_representable_p
10021 * [308]11054 [m68k] ICE in reg_overlap_mentioned_p
10025 * [309]10834 [arm] GCC 3.3 still generates incorrect instructions for
10026 functions with __attribute__ ((interrupt ("IRQ")))
10027 * [310]10842 [arm] Clobbered link register is copied to pc under
10028 certain circumstances
10029 * [311]11052 [arm] noce_process_if_block() can lose REG_INC notes
10030 * [312]11183 [arm] ICE in change_address_1 (3.3) / subreg_hard_regno
10035 * [313]11084 ICE in propagate_one_insn, in flow.c
10039 * [314]10331 can't compile c++ part of gcc cross compiler for sh-elf
10040 * [315]10413 [SH] ICE in reload_cse_simplify_operands, in reload1.c
10041 * [316]11096 i686-linux to sh-linux cross compiler fails to compile
10044 GNU/Linux (or Hurd?) specific
10046 * [317]2873 Bogus fixinclude of stdio.h from glibc 2.2.3
10050 * [318]3163 configure bug: gcc/aclocal.m4 mmap test fails on UnixWare
10053 Cygwin (or mingw) specific
10055 * [319]5287 ICE with dllimport attribute
10056 * [320]10148 [MingW/CygWin] Compiler dumps core
10060 * [321]8787 GCC fails to emit .intel_syntax when invoked with
10061 -masm=intel on DJGPP
10063 Darwin (and MacOS X) specific
10065 * [322]10900 trampolines crash
10069 * [323]1607 (c++) Format attributes on methods undocumented
10070 * [324]4252 Invalid option `-fdump-translation-unit'
10071 * [325]4490 Clarify restrictions on -m96bit-long-double,
10072 -m128bit-long-double
10073 * [326]10355 document an issue with regparm attribute on some systems
10075 * [327]10726 (fortran) Documentation for function "IDate Intrinsic
10077 * [328]10805 document bug in old version of Sun assembler
10078 * [329]10815 warn against GNU binutils on AIX
10079 * [330]10877 document need for newer binutils on i?86-*-linux-gnu
10080 * [331]11280 Manual incorrect with respect to -freorder-blocks
10081 * [332]11466 Document -mlittle-endian and its restrictions for the
10084 Testsuite bugs (compiler itself is not affected)
10086 * [333]10737 newer bison causes g++.dg/parse/crash2.C to incorrectly
10088 * [334]10810 gcc-3.3 fails make check: buffer overrun in
10090 __________________________________________________________________
10096 This section lists the problem reports (PRs) from [335]GCC's bug
10097 tracking system that are known to be fixed in the 3.3.2 release. This
10098 list might not be complete (that is, it is possible that some PRs that
10099 have been fixed are not listed here).
10101 Bootstrap failures and problems
10103 * [336]8336 [SCO5] bootstrap config still tries to use COFF options
10104 * [337]9330 [alpha-osf] Bootstrap failure on Compaq Tru64 with
10105 --enable-threads=posix
10106 * [338]9631 [hppa64-linux] gcc-3.3 fails to bootstrap
10107 * [339]9877 fixincludes makes a bad sys/byteorder.h on svr5 (UnixWare
10109 * [340]11687 xstormy16-elf build fails in libf2c
10110 * [341]12263 [SGI IRIX] bootstrap fails during compile of
10111 libf2c/libI77/backspace.c
10112 * [342]12490 buffer overflow in scan-decls.c (during Solaris 9
10113 fix-header processing)
10115 Internal compiler errors (multi-platform)
10117 * [343]7277 Casting integers to vector types causes ICE
10118 * [344]7939 (c++) ICE on invalid function template specialization
10119 * [345]11063 (c++) ICE on parsing initialization list of const array
10121 * [346]11207 ICE with negative index in array element designator
10122 * [347]11522 (fortran) g77 dwarf-2 ICE in
10123 add_abstract_origin_attribute
10124 * [348]11595 (c++) ICE on duplicate label definition
10125 * [349]11646 (c++) ICE in commit_one_edge_insertion with
10126 -fnon-call-exceptions -fgcse -O
10127 * [350]11665 ICE in struct initializer when taking address
10128 * [351]11852 (c++) ICE with bad struct initializer.
10129 * [352]11878 (c++) ICE in cp_expr_size
10130 * [353]11883 ICE with any -O on mercury-generated C code
10131 * [354]11991 (c++) ICE in cxx_incomplete_type_diagnostic, in
10132 cp/typeck2.c when applying typeid operator to template template
10134 * [355]12146 ICE in lookup_template_function, in cp/pt.c
10135 * [356]12215 ICE in make_label_edge with -fnon-call-exceptions
10137 * [357]12369 (c++) ICE with templates and friends
10138 * [358]12446 ICE in emit_move_insn on complicated array reference
10139 * [359]12510 ICE in final_scan_insn
10140 * [360]12544 ICE with large parameters used in nested functions
10142 C and optimization bugs
10144 * [361]9862 spurious warnings with -W -finline-functions
10145 * [362]10962 lookup_field is a linear search on a linked list (can be
10146 slow if large struct)
10147 * [363]11370 -Wunreachable-code gives false complaints
10148 * [364]11637 invalid assembly with -fnon-call-exceptions
10149 * [365]11885 Problem with bitfields in packed structs
10150 * [366]12082 Inappropriate unreachable code warnings
10151 * [367]12180 Inline optimization fails for variadic function
10152 * [368]12340 loop unroller + gcse produces wrong code
10154 C++ compiler and library
10156 * [369]3907 nested template parameter collides with member name
10157 * [370]5293 confusing message when binding a temporary to a reference
10158 * [371]5296 [DR115] Pointers to functions and to template functions
10159 behave differently in deduction
10160 * [372]7939 ICE on function template specialization
10161 * [373]8656 Unable to assign function with __attribute__ and pointer
10162 return type to an appropriate variable
10163 * [374]10147 Confusing error message for invalid template function
10165 * [375]11400 std::search_n() makes assumptions about Size parameter
10166 * [376]11409 issues with using declarations, overloading, and
10168 * [377]11740 ctype<wchar_t>::do_is(mask, wchar_t) doesn't handle
10169 multiple bits in mask
10170 * [378]11786 operator() call on variable in other namespace not
10172 * [379]11867 static_cast ignores ambiguity
10173 * [380]11928 bug with conversion operators that are typedefs
10174 * [381]12114 Uninitialized memory accessed in dtor
10175 * [382]12163 static_cast + explicit constructor regression
10176 * [383]12181 Wrong code with comma operator and c++
10177 * [384]12236 regparm and fastcall messes up parameters
10178 * [385]12266 incorrect instantiation of unneeded template during
10179 overload resolution
10180 * [386]12296 istream::peek() doesn't set eofbit
10181 * [387]12298 [sjlj exceptions] Stack unwind destroys
10182 not-yet-constructed object
10183 * [388]12369 ICE with templates and friends
10184 * [389]12337 apparently infinite loop in g++
10185 * [390]12344 stdcall attribute ignored if function returns a pointer
10186 * [391]12451 missing(late) class forward declaration in cxxabi.h
10187 * [392]12486 g++ accepts invalid use of a qualified name
10189 x86 specific (Intel/AMD)
10191 * [393]8869 [x86 MMX] ICE with const variable optimization and MMX
10193 * [394]9786 ICE in fixup_abnormal_edges with -fnon-call-exceptions
10195 * [395]11689 g++3.3 emits un-assembleable code for k6 architecture
10196 * [396]12116 [k6] Invalid assembly output values with X-MAME code
10197 * [397]12070 ICE converting between double and long double with
10202 * [398]11184 [ia64 hpux] ICE on __builtin_apply building libobjc
10203 * [399]11535 __builtin_return_address may not work on ia64
10204 * [400]11693 [ia64] ICE in gen_nop_type
10205 * [401]12224 [ia64] Thread-local storage doesn't work
10209 * [402]11087 [powerpc64-linux] GCC miscompiles raid1.c from linux
10211 * [403]11319 loop miscompiled on ppc32
10212 * [404]11949 ICE Compiler segfault with ffmpeg -maltivec code
10216 * [405]11662 wrong code for expr. with cast to long long and
10218 * [406]11965 invalid assembler code for a shift < 32 operation
10219 * [407]12301 (c++) stack corruption when a returned expression throws
10224 * [408]11717 [alpha-linux] unrecognizable insn compiling for.c of
10229 * [409]11313 problem with #pragma weak and static inline functions
10230 * [410]11712 __STDC_EXT__ not defined for C++ by default anymore?
10234 * [411]12166 Profiled programs crash if PROFDIR is set
10236 Solaris-x86 specific
10238 * [412]12101 i386 Solaris no longer works with GNU as?
10240 Miscellaneous embedded target-specific bugs
10242 * [413]10988 [m32r-elf] wrong blockmove code with -O3
10243 * [414]11805 [h8300-unknown-coff] [H8300] ICE for simple code with
10245 * [415]11902 [sh4] spec file improperly inserts rpath even when none
10247 * [416]11903 [sh4] -pthread fails to link due to error in spec file
10249 __________________________________________________________________
10255 In addition to the bug fixes documented below, this release contains
10256 few minor features such as:
10257 * Support for --with-sysroot
10258 * Support for automatic detection of executable stacks
10259 * Support for SSE3 instructions
10260 * Support for thread local storage debugging under GDB on S390
10264 This section lists the problem reports (PRs) from [417]GCC's bug
10265 tracking system that are known to be fixed in the 3.3.3 release. This
10266 list might not be complete (that is, it is possible that some PRs that
10267 have been fixed are not listed here).
10269 Bootstrap failures and issues
10271 * [418]11890 Building cross gcc-3.3.1 for sparc-sun-solaris2.6 fails
10272 * [419]12399 boehm-gc fails (when building a cross compiler): libtool
10273 unable to infer tagged configuration
10274 * [420]13068 mklibgcc.in doesn't handle multi-level multilib
10275 subdirectories properly
10277 Internal compiler errors (multi-platform)
10279 * [421]10060 ICE (stack overflow) on huge file (300k lines) due to
10280 recursive behaviour of copy_rtx_if_shared, in emit_rtl.c
10281 * [422]10555 (c++) ICE on undefined template argument
10282 * [423]10706 (c++) ICE in mangle_class_name_for_template
10283 * [424]11496 (fortran) error in flow_loops_find when -funroll-loops
10285 * [425]11741 ICE in pre_insert_copy_insn, in gcse.c
10286 * [426]12440 GCC crashes during compilation of quicktime4linux 2.0.0
10287 * [427]12632 (fortran) -fbounds-check ICE
10288 * [428]12712 (c++) ICE on short legit C++ code fragment with gcc
10290 * [429]12726 (c++) ICE (segfault) on trivial code
10291 * [430]12890 (c++) ICE on compilation of class with throwing method
10292 * [431]12900 (c++) ICE in rtl_verify_flow_info_1
10293 * [432]13060 (fortran) ICE in fixup_var_refs_1, in function.c on
10294 correct code with -O2 -fno-force-mem
10295 * [433]13289 (c++) ICE in regenerate_decl_from_template on recursive
10297 * [434]13318 ICE: floating point exception in the loop optimizer
10298 * [435]13392 (c++) ICE in convert_from_eh_region_ranges_1, in
10300 * [436]13574 (c++) invalid array default initializer in class lets
10301 gcc consume all memory and die
10302 * [437]13475 ICE on SIMD variables with partial value initialization
10303 * [438]13797 (c++) ICE on invalid template parameter
10304 * [439]13824 (java) gcj SEGV with simple .java program
10306 C and optimization bugs
10308 * [440]8776 loop invariants are not removed (most likely)
10309 * [441]10339 [sparc,ppc,ppc64] Invalid optimization: replacing
10311 * [442]11350 undefined labels with -Os -fPIC
10312 * [443]12826 Optimizer removes reference through volatile pointer
10313 * [444]12500 stabs debug info: void no longer a predefined / builtin
10315 * [445]12941 builtin-bitops-1.c miscompilation (latent bug)
10316 * [446]12953 tree inliner bug (in inline_forbidden_p) and fix
10317 * [447]13041 linux-2.6/sound/core/oss/rate.c miscompiled
10318 * [448]13507 spurious printf format warning
10319 * [449]13382 Type information for const pointer disappears during
10321 * [450]13394 noreturn attribute ignored on recursive invokation
10322 * [451]13400 Compiled code crashes storing to read-only location
10323 * [452]13521 Endless loop in calculate_global_regs_live
10325 C++ compiler and library
10327 Some of the bug fixes in this list were made to implement decisions
10328 that the ISO C++ standards committee has made concerning several defect
10329 reports (DRs). Links in the list below point to detailed discussion of
10330 the relevant defect report.
10331 * [453]2094 unimplemented: use of `ptrmem_cst' in template type
10333 * [454]2294 using declaration confusion
10334 * [455]5050 template instantiation depth exceeds limit: recursion
10336 * [456]9371 Bad exception handling in
10337 i/ostream::operator>>/<<(streambuf*)
10338 * [457]9546 bad exception handling in ostream members
10339 * [458]10081 basic_ios::_M_cache_locale leaves NULL members in the
10340 face of unknown locales
10341 * [459]10093 [460][DR 61] Setting failbit in exceptions doesn't work
10342 * [461]10095 istream::operator>>(int&) sets ios::badbit when
10343 ios::failbit is set.
10344 * [462]11554 Warning about reordering of initializers doesn't mention
10345 location of constructor
10346 * [463]12297 istream::sentry::sentry() handles eof() incorrectly.
10347 * [464]12352 Exception safety problems in src/localename.cc
10348 * [465]12438 Memory leak in locale::combine()
10349 * [466]12540 Memory leak in locale::locale(const char*)
10350 * [467]12594 DRs [468]60 [TC] and [469]63 [TC] not implemented
10351 * [470]12657 Resolution of [471]DR 292 (WP) still unimplemented
10352 * [472]12696 memory eating infinite loop in diagnostics (error
10354 * [473]12815 Code compiled with optimization behaves unexpectedly
10355 * [474]12862 Conflicts between typedefs/enums and namespace member
10357 * [475]12926 Wrong value after assignment in initialize list using
10359 * [476]12967 Resolution of [477]DR 300 [WP] still unimplemented
10360 * [478]12971 Resolution of [479]DR 328 [WP] still unimplemented
10361 * [480]13007 basic_streambuf::pubimbue, imbue wrong
10362 * [481]13009 Implicitly-defined assignment operator writes to wrong
10364 * [482]13057 regparm attribute not applied to destructor
10365 * [483]13070 -Wformat option ignored in g++
10366 * [484]13081 forward template declarations in <complex> let inlining
10368 * [485]13239 Assertion does not seem to work correctly anymore
10369 * [486]13262 "xxx is private within this context" when initializing a
10370 self-contained template class
10371 * [487]13290 simple typo in concept checking for std::generate_n
10372 * [488]13323 Template code does not compile in presence of typedef
10373 * [489]13369 __verify_grouping (and __add_grouping?) not correct
10374 * [490]13371 infinite loop with packed struct and inlining
10375 * [491]13445 Template argument replacement "dereferences" a typedef
10376 * [492]13461 Fails to access protected-ctor from public constant
10377 * [493]13462 Non-standard-conforming type set::pointer
10378 * [494]13478 gcc uses wrong constructor to initialize a const
10380 * [495]13544 "conflicting types" for enums in different scopes
10381 * [496]13650 string::compare should not (always) use
10382 traits_type::length()
10383 * [497]13683 bogus warning about passing non-PODs through ellipsis
10384 * [498]13688 Derived class is denied access to protected base class
10386 * [499]13774 Member variable cleared in virtual multiple inheritance
10388 * [500]13884 Protect sstream.tcc from extern template use
10390 Java compiler and library
10392 * [501]10746 [win32] garbage collection crash in GCJ
10394 Objective-C compiler and library
10396 * [502]11433 Crash due to dereferencing null pointer when querying
10399 Fortran compiler and library
10401 * [503]12633 logical expression gives incorrect result with
10402 -fugly-logint option
10403 * [504]13037 [gcse-lm] g77 generates incorrect code
10404 * [505]13213 Hex constant problem when compiling with -fugly-logint
10407 x86-specific (Intel/AMD)
10409 * [506]4490 ICE with -m128bit-long-double
10410 * [507]12292 [x86_64] ICE: RTL check: expected code `const_int', have
10411 `reg' in make_field_assignment, in combine.c
10412 * [508]12441 ICE: can't find a register to spill
10413 * [509]12943 array static-init failure under -fpic, -fPIC
10414 * [510]13608 Incorrect code with -O3 -ffast-math
10418 * [511]11598 testcase gcc.dg/20020118-1.c fails runtime check of
10419 __attribute__((aligned(16)))
10420 * [512]11793 ICE in extract_insn, in recog.c (const_vector's)
10421 * [513]12467 vmsumubm emitted when vmsummbm appropriate (typo in
10423 * [514]12537 g++ generates writeable text sections
10427 * [515]12496 wrong result for __atomic_add(&value, -1) when using -O0
10429 * [516]12865 mprotect call to make trampoline executable may fail
10430 * [517]13354 ICE in sparc_emit_set_const32
10434 * [518]10467 [arm] ICE in pre_insert_copy_insn,
10438 * [519]11226 ICE passing struct arg with two floats
10439 * [520]11227 ICE for _Complex float, _Complex long double args
10440 * [521]12644 GCC 3.3.2 fails to compile glibc on ia64
10441 * [522]13149 build gcc-3.3.2 1305 error:unrecognizable insn
10442 * Various fixes for libunwind
10446 * [523]12654 Incorrect comparison code generated for Alpha
10447 * [524]12965 SEGV+ICE in cc1plus on alpha-linux with -O2
10448 * [525]13031 ICE (unrecognizable insn) when building gnome-libs-1.4.2
10452 * [526]11634 [hppa] ICE in verify_local_live_at_start, in flow.c
10453 * [527]12158 [hppa] compilation does not terminate at -O1
10457 * [528]11992 Wrong built-in code for memcmp with length 1<<24: only
10458 (1<<24)-1 possible for CLCL-Instruction
10462 * [529]9365 segfault in gen_far_branch (config/sh/sh.c)
10463 * [530]10392 optimizer generates faulty array indexing
10464 * [531]11322 SH profiler outputs multiple definitions of symbol
10465 * [532]13069 gcc/config/sh/rtems.h broken
10466 * [533]13302 Putting a va_list in a struct causes seg fault
10467 * [534]13585 Incorrect optimization of call to sfunc
10468 * Fix inappropriately exported libgcc functions from the shared
10471 Other embedded target specific
10473 * [535]8916 [mcore] unsigned char assign gets hosed.
10474 * [536]11576 [h8300] ICE in change_address_1, in emit-rtl.c
10475 * [537]13122 [h8300] local variable gets corrupted by function call
10476 when -fomit-frame-pointer is given
10477 * [538]13256 [cris] strict_low_part mistreated in delay slots
10478 * [539]13373 [mcore] optimization with -frerun-cse-after-loop
10479 -fexpensive-optimizations produces wrong code on mcore
10483 * [540]12561 gcc/config/t-gnu needs updating to work with
10486 Tru64 Unix specific
10488 * [541]6243 testsuite fails almost all tests due to no libintl in
10489 LD_LIBRARY_PATH during test.
10490 * [542]11397 weak aliases broken on Tru64 UNIX
10494 * [543]12505 build failure due to defines of uchar in cpphash.h and
10496 * [544]13150 WEAK symbols not exported by collect2
10500 * [545]12666 fixincludes problem on IRIX 6.5.19m
10504 * [546]12969 Including sys/byteorder.h breaks configure checks
10506 Testsuite problems (compiler is not affected)
10508 * [547]10819 testsuite creates CR+LF on compiler version lines in
10510 * [548]11612 abi_check not finding correct libgcc_s.so.1
10514 * [549]13211 using -###, incorrect warnings about unused linker file
10516 __________________________________________________________________
10520 This is the [550]list of problem reports (PRs) from GCC's bug tracking
10521 system that are known to be fixed in the 3.3.4 release. This list might
10522 not be complete (that is, it is possible that some PRs that have been
10523 fixed are not listed here).
10524 __________________________________________________________________
10528 This is the [551]list of problem reports (PRs) from GCC's bug tracking
10529 system that are known to be fixed in the 3.3.5 release. This list might
10530 not be complete (that is, it is possible that some PRs that have been
10531 fixed are not listed here).
10532 __________________________________________________________________
10536 This is the [552]list of problem reports (PRs) from GCC's bug tracking
10537 system that are known to be fixed in the 3.3.6 release. This list might
10538 not be complete (that is, it is possible that some PRs that have been
10539 fixed are not listed here).
10542 For questions related to the use of GCC, please consult these web
10543 pages and the [553]GCC manuals. If that fails, the
10544 [554]gcc-help@gcc.gnu.org mailing list might help. Comments on these
10545 web pages and the development of GCC are welcome on our developer
10546 list at [555]gcc@gcc.gnu.org. All of [556]our lists have public
10549 Copyright (C) [557]Free Software Foundation, Inc. Verbatim copying and
10550 distribution of this entire article is permitted in any medium,
10551 provided this notice is preserved.
10553 These pages are [558]maintained by the GCC team. Last modified
10558 1. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.6
10559 2. http://gcc.gnu.org/gcc-3.1/changes.html#obsolete_systems
10560 3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems
10561 4. http://gcc.gnu.org/gcc-3.3/changes.html#nonnull_attribute
10562 5. http://gcc.gnu.org/news/dfa.html
10563 6. http://gcc.gnu.org/gcc-3.3/c99status.html
10564 7. http://gcc.gnu.org/onlinedocs/gcc-3.3.6/g77/News.html
10565 8. http://gcc.gnu.org/PR10140
10566 9. http://gcc.gnu.org/PR10198
10567 10. http://gcc.gnu.org/PR10338
10568 11. http://gcc.gnu.org/PR3581
10569 12. http://gcc.gnu.org/PR4382
10570 13. http://gcc.gnu.org/PR5533
10571 14. http://gcc.gnu.org/PR6387
10572 15. http://gcc.gnu.org/PR6412
10573 16. http://gcc.gnu.org/PR6620
10574 17. http://gcc.gnu.org/PR6663
10575 18. http://gcc.gnu.org/PR7068
10576 19. http://gcc.gnu.org/PR7083
10577 20. http://gcc.gnu.org/PR7647
10578 21. http://gcc.gnu.org/PR7675
10579 22. http://gcc.gnu.org/PR7718
10580 23. http://gcc.gnu.org/PR8116
10581 24. http://gcc.gnu.org/PR8358
10582 25. http://gcc.gnu.org/PR8511
10583 26. http://gcc.gnu.org/PR8564
10584 27. http://gcc.gnu.org/PR8660
10585 28. http://gcc.gnu.org/PR8766
10586 29. http://gcc.gnu.org/PR8803
10587 30. http://gcc.gnu.org/PR8846
10588 31. http://gcc.gnu.org/PR8906
10589 32. http://gcc.gnu.org/PR9216
10590 33. http://gcc.gnu.org/PR9261
10591 34. http://gcc.gnu.org/PR9263
10592 35. http://gcc.gnu.org/PR9429
10593 36. http://gcc.gnu.org/PR9516
10594 37. http://gcc.gnu.org/PR9600
10595 38. http://gcc.gnu.org/PR9629
10596 39. http://gcc.gnu.org/PR9672
10597 40. http://gcc.gnu.org/PR9749
10598 41. http://gcc.gnu.org/PR9794
10599 42. http://gcc.gnu.org/PR9829
10600 43. http://gcc.gnu.org/PR9916
10601 44. http://gcc.gnu.org/PR9936
10602 45. http://gcc.gnu.org/PR10262
10603 46. http://gcc.gnu.org/PR10278
10604 47. http://gcc.gnu.org/PR10446
10605 48. http://gcc.gnu.org/PR10451
10606 49. http://gcc.gnu.org/PR10506
10607 50. http://gcc.gnu.org/PR10549
10608 51. http://gcc.gnu.org/PR2001
10609 52. http://gcc.gnu.org/PR2391
10610 53. http://gcc.gnu.org/PR2960
10611 54. http://gcc.gnu.org/PR4046
10612 55. http://gcc.gnu.org/PR6405
10613 56. http://gcc.gnu.org/PR6798
10614 57. http://gcc.gnu.org/PR6871
10615 58. http://gcc.gnu.org/PR6909
10616 59. http://gcc.gnu.org/PR7189
10617 60. http://gcc.gnu.org/PR7642
10618 61. http://gcc.gnu.org/PR8634
10619 62. http://gcc.gnu.org/PR8750
10620 63. http://gcc.gnu.org/PR2161
10621 64. http://gcc.gnu.org/PR4319
10622 65. http://gcc.gnu.org/PR8602
10623 66. http://gcc.gnu.org/PR9177
10624 67. http://gcc.gnu.org/PR9853
10625 68. http://gcc.gnu.org/PR45
10626 69. http://gcc.gnu.org/PR3784
10627 70. http://gcc.gnu.org/PR764
10628 71. http://gcc.gnu.org/PR5116
10629 72. http://gcc.gnu.org/PR2862
10630 73. http://gcc.gnu.org/PR3663
10631 74. http://gcc.gnu.org/PR3797
10632 75. http://gcc.gnu.org/PR3948
10633 76. http://gcc.gnu.org/PR4137
10634 77. http://gcc.gnu.org/PR4361
10635 78. http://gcc.gnu.org/PR4802
10636 79. http://gcc.gnu.org/PR5837
10637 80. http://gcc.gnu.org/PR4803
10638 81. http://gcc.gnu.org/PR5094
10639 82. http://gcc.gnu.org/PR5730
10640 83. http://gcc.gnu.org/PR6713
10641 84. http://gcc.gnu.org/PR7015
10642 85. http://gcc.gnu.org/PR7086
10643 86. http://gcc.gnu.org/PR7099
10644 87. http://gcc.gnu.org/PR7247
10645 88. http://gcc.gnu.org/PR7441
10646 89. http://gcc.gnu.org/PR7768
10647 90. http://gcc.gnu.org/PR7804
10648 91. http://gcc.gnu.org/PR8099
10649 92. http://gcc.gnu.org/PR8117
10650 93. http://gcc.gnu.org/PR8205
10651 94. http://gcc.gnu.org/PR8645
10652 95. http://gcc.gnu.org/PR8724
10653 96. http://gcc.gnu.org/PR8805
10654 97. http://gcc.gnu.org/PR8691
10655 98. http://gcc.gnu.org/PR8700
10656 99. http://gcc.gnu.org/PR8724
10657 100. http://gcc.gnu.org/PR8949
10658 101. http://gcc.gnu.org/PR9016
10659 102. http://gcc.gnu.org/PR9053
10660 103. http://gcc.gnu.org/PR9152
10661 104. http://gcc.gnu.org/PR9182
10662 105. http://gcc.gnu.org/PR9297
10663 106. http://gcc.gnu.org/PR9318
10664 107. http://gcc.gnu.org/PR9320
10665 108. http://gcc.gnu.org/PR9400
10666 109. http://gcc.gnu.org/PR9424
10667 110. http://gcc.gnu.org/PR9425
10668 111. http://gcc.gnu.org/PR9439
10669 112. http://gcc.gnu.org/PR9474
10670 113. http://gcc.gnu.org/PR9548
10671 114. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#231
10672 115. http://gcc.gnu.org/PR9555
10673 116. http://gcc.gnu.org/PR9561
10674 117. http://gcc.gnu.org/PR9563
10675 118. http://gcc.gnu.org/PR9582
10676 119. http://gcc.gnu.org/PR9622
10677 120. http://gcc.gnu.org/PR9683
10678 121. http://gcc.gnu.org/PR9791
10679 122. http://gcc.gnu.org/PR9817
10680 123. http://gcc.gnu.org/PR9825
10681 124. http://gcc.gnu.org/PR9826
10682 125. http://gcc.gnu.org/PR9924
10683 126. http://gcc.gnu.org/PR9946
10684 127. http://gcc.gnu.org/PR9964
10685 128. http://gcc.gnu.org/PR9988
10686 129. http://gcc.gnu.org/PR10033
10687 130. http://gcc.gnu.org/PR10097
10688 131. http://gcc.gnu.org/PR10132
10689 132. http://gcc.gnu.org/PR10180
10690 133. http://gcc.gnu.org/PR10199
10691 134. http://gcc.gnu.org/PR10300
10692 135. http://gcc.gnu.org/PR10427
10693 136. http://gcc.gnu.org/PR10503
10694 137. http://gcc.gnu.org/PR5956
10695 138. http://gcc.gnu.org/PR1832
10696 139. http://gcc.gnu.org/PR3924
10697 140. http://gcc.gnu.org/PR5634
10698 141. http://gcc.gnu.org/PR6367
10699 142. http://gcc.gnu.org/PR6491
10700 143. http://gcc.gnu.org/PR6742
10701 144. http://gcc.gnu.org/PR7113
10702 145. http://gcc.gnu.org/PR7236
10703 146. http://gcc.gnu.org/PR7278
10704 147. http://gcc.gnu.org/PR7384
10705 148. http://gcc.gnu.org/PR7388
10706 149. http://gcc.gnu.org/PR8587
10707 150. http://gcc.gnu.org/PR9038
10708 151. http://gcc.gnu.org/PR10197
10709 152. http://gcc.gnu.org/PR6005
10710 153. http://gcc.gnu.org/PR6389
10711 154. http://gcc.gnu.org/PR6576
10712 155. http://gcc.gnu.org/PR6652
10713 156. http://gcc.gnu.org/PR7060
10714 157. http://gcc.gnu.org/PR7073
10715 158. http://gcc.gnu.org/PR7180
10716 159. http://gcc.gnu.org/PR7416
10717 160. http://gcc.gnu.org/PR7570
10718 161. http://gcc.gnu.org/PR7578
10719 162. http://gcc.gnu.org/PR7611
10720 163. http://gcc.gnu.org/PR7709
10721 164. http://gcc.gnu.org/PR7766
10722 165. http://gcc.gnu.org/PR7785
10723 166. http://gcc.gnu.org/PR7786
10724 167. http://gcc.gnu.org/PR8142
10725 168. http://gcc.gnu.org/PR8234
10726 169. http://gcc.gnu.org/PR8415
10727 170. http://gcc.gnu.org/PR8481
10728 171. http://gcc.gnu.org/PR8593
10729 172. http://gcc.gnu.org/PR8759
10730 173. http://gcc.gnu.org/PR8997
10731 174. http://gcc.gnu.org/PR9253
10732 175. http://gcc.gnu.org/PR9254
10733 176. http://gcc.gnu.org/PR9271
10734 177. http://gcc.gnu.org/PR6767
10735 178. http://gcc.gnu.org/PR9911
10736 179. http://gcc.gnu.org/PR10020
10737 180. http://gcc.gnu.org/PR10546
10738 181. http://gcc.gnu.org/PR7029
10739 182. http://gcc.gnu.org/PR2903
10740 183. http://gcc.gnu.org/PR7873
10741 184. http://gcc.gnu.org/PR7680
10742 185. http://gcc.gnu.org/PR8705
10743 186. http://gcc.gnu.org/PR9986
10744 187. http://gcc.gnu.org/PR10056
10745 188. http://gcc.gnu.org/PR6744
10746 189. http://gcc.gnu.org/PR7361
10747 190. http://gcc.gnu.org/PR9496
10748 191. http://gcc.gnu.org/PR7067
10749 192. http://gcc.gnu.org/PR8480
10750 193. http://gcc.gnu.org/PR8784
10751 194. http://gcc.gnu.org/PR10315
10752 195. http://gcc.gnu.org/PR10267
10753 196. http://gcc.gnu.org/PR7916
10754 197. http://gcc.gnu.org/PR7926
10755 198. http://gcc.gnu.org/PR8555
10756 199. http://gcc.gnu.org/PR8994
10757 200. http://gcc.gnu.org/PR9426
10758 201. http://gcc.gnu.org/PR9806
10759 202. http://gcc.gnu.org/PR10077
10760 203. http://gcc.gnu.org/PR10233
10761 204. http://gcc.gnu.org/PR10286
10762 205. http://gcc.gnu.org/PR10308
10763 206. http://gcc.gnu.org/PR11272
10764 207. http://gcc.gnu.org/PR5754
10765 208. http://gcc.gnu.org/PR6597
10766 209. http://gcc.gnu.org/PR6949
10767 210. http://gcc.gnu.org/PR7053
10768 211. http://gcc.gnu.org/PR8164
10769 212. http://gcc.gnu.org/PR8384
10770 213. http://gcc.gnu.org/PR9559
10771 214. http://gcc.gnu.org/PR9649
10772 215. http://gcc.gnu.org/PR9864
10773 216. http://gcc.gnu.org/PR10432
10774 217. http://gcc.gnu.org/PR10475
10775 218. http://gcc.gnu.org/PR10635
10776 219. http://gcc.gnu.org/PR10661
10777 220. http://gcc.gnu.org/PR10700
10778 221. http://gcc.gnu.org/PR10712
10779 222. http://gcc.gnu.org/PR10796
10780 223. http://gcc.gnu.org/PR10890
10781 224. http://gcc.gnu.org/PR10939
10782 225. http://gcc.gnu.org/PR10956
10783 226. http://gcc.gnu.org/PR11041
10784 227. http://gcc.gnu.org/PR11059
10785 228. http://gcc.gnu.org/PR11083
10786 229. http://gcc.gnu.org/PR11105
10787 230. http://gcc.gnu.org/PR11149
10788 231. http://gcc.gnu.org/PR11228
10789 232. http://gcc.gnu.org/PR11282
10790 233. http://gcc.gnu.org/PR11301
10791 234. http://gcc.gnu.org/PR11308
10792 235. http://gcc.gnu.org/PR11473
10793 236. http://gcc.gnu.org/PR11503
10794 237. http://gcc.gnu.org/PR11513
10795 238. http://gcc.gnu.org/PR11198
10796 239. http://gcc.gnu.org/PR11304
10797 240. http://gcc.gnu.org/PR11381
10798 241. http://gcc.gnu.org/PR11536
10799 242. http://gcc.gnu.org/PR11557
10800 243. http://gcc.gnu.org/PR5897
10801 244. http://gcc.gnu.org/PR11279
10802 245. http://gcc.gnu.org/PR11022
10803 246. http://gcc.gnu.org/PR2330
10804 247. http://gcc.gnu.org/PR5388
10805 248. http://gcc.gnu.org/PR5390
10806 249. http://gcc.gnu.org/PR7877
10807 250. http://gcc.gnu.org/PR9393
10808 251. http://gcc.gnu.org/PR10032
10809 252. http://gcc.gnu.org/PR10468
10810 253. http://gcc.gnu.org/PR10527
10811 254. http://gcc.gnu.org/PR10679
10812 255. http://gcc.gnu.org/PR10682
10813 256. http://gcc.gnu.org/PR10689
10814 257. http://gcc.gnu.org/PR10845
10815 258. http://gcc.gnu.org/PR10849
10816 259. http://gcc.gnu.org/PR10888
10817 260. http://gcc.gnu.org/PR10929
10818 261. http://gcc.gnu.org/PR10931
10819 262. http://gcc.gnu.org/PR10940
10820 263. http://gcc.gnu.org/PR10968
10821 264. http://gcc.gnu.org/PR10990
10822 265. http://gcc.gnu.org/PR11039
10823 266. http://gcc.gnu.org/PR11062
10824 267. http://gcc.gnu.org/PR11095
10825 268. http://gcc.gnu.org/PR11098
10826 269. http://gcc.gnu.org/PR11137
10827 270. http://gcc.gnu.org/PR11154
10828 271. http://gcc.gnu.org/PR11329
10829 272. http://gcc.gnu.org/PR11332
10830 273. http://gcc.gnu.org/PR11431
10831 274. http://gcc.gnu.org/PR11528
10832 275. http://gcc.gnu.org/PR11546
10833 276. http://gcc.gnu.org/PR11567
10834 277. http://gcc.gnu.org/PR11645
10835 278. http://gcc.gnu.org/PR5179
10836 279. http://gcc.gnu.org/PR8204
10837 280. http://gcc.gnu.org/PR10838
10838 281. http://gcc.gnu.org/PR10886
10839 282. http://gcc.gnu.org/PR11349
10840 283. http://gcc.gnu.org/PR4823
10841 284. http://gcc.gnu.org/PR8878
10842 285. http://gcc.gnu.org/PR9815
10843 286. http://gcc.gnu.org/PR10402
10844 287. http://gcc.gnu.org/PR10504
10845 288. http://gcc.gnu.org/PR10673
10846 289. http://gcc.gnu.org/PR11044
10847 290. http://gcc.gnu.org/PR11089
10848 291. http://gcc.gnu.org/PR11420
10849 292. http://gcc.gnu.org/PR9362
10850 293. http://gcc.gnu.org/PR10142
10851 294. http://gcc.gnu.org/PR10663
10852 295. http://gcc.gnu.org/PR10835
10853 296. http://gcc.gnu.org/PR10876
10854 297. http://gcc.gnu.org/PR10955
10855 298. http://gcc.gnu.org/PR11018
10856 299. http://gcc.gnu.org/PR11556
10857 300. http://gcc.gnu.org/PR10907
10858 301. http://gcc.gnu.org/PR11320
10859 302. http://gcc.gnu.org/PR11599
10860 303. http://gcc.gnu.org/PR9745
10861 304. http://gcc.gnu.org/PR10871
10862 305. http://gcc.gnu.org/PR11440
10863 306. http://gcc.gnu.org/PR7594
10864 307. http://gcc.gnu.org/PR10557
10865 308. http://gcc.gnu.org/PR11054
10866 309. http://gcc.gnu.org/PR10834
10867 310. http://gcc.gnu.org/PR10842
10868 311. http://gcc.gnu.org/PR11052
10869 312. http://gcc.gnu.org/PR11183
10870 313. http://gcc.gnu.org/PR11084
10871 314. http://gcc.gnu.org/PR10331
10872 315. http://gcc.gnu.org/PR10413
10873 316. http://gcc.gnu.org/PR11096
10874 317. http://gcc.gnu.org/PR2873
10875 318. http://gcc.gnu.org/PR3163
10876 319. http://gcc.gnu.org/PR5287
10877 320. http://gcc.gnu.org/PR10148
10878 321. http://gcc.gnu.org/PR8787
10879 322. http://gcc.gnu.org/PR10900
10880 323. http://gcc.gnu.org/PR1607
10881 324. http://gcc.gnu.org/PR4252
10882 325. http://gcc.gnu.org/PR4490
10883 326. http://gcc.gnu.org/PR10355
10884 327. http://gcc.gnu.org/PR10726
10885 328. http://gcc.gnu.org/PR10805
10886 329. http://gcc.gnu.org/PR10815
10887 330. http://gcc.gnu.org/PR10877
10888 331. http://gcc.gnu.org/PR11280
10889 332. http://gcc.gnu.org/PR11466
10890 333. http://gcc.gnu.org/PR10737
10891 334. http://gcc.gnu.org/PR10810
10892 335. http://gcc.gnu.org/bugzilla/
10893 336. http://gcc.gnu.org/PR8336
10894 337. http://gcc.gnu.org/PR9330
10895 338. http://gcc.gnu.org/PR9631
10896 339. http://gcc.gnu.org/PR9877
10897 340. http://gcc.gnu.org/PR11687
10898 341. http://gcc.gnu.org/PR12263
10899 342. http://gcc.gnu.org/PR12490
10900 343. http://gcc.gnu.org/PR7277
10901 344. http://gcc.gnu.org/PR7939
10902 345. http://gcc.gnu.org/PR11063
10903 346. http://gcc.gnu.org/PR11207
10904 347. http://gcc.gnu.org/PR11522
10905 348. http://gcc.gnu.org/PR11595
10906 349. http://gcc.gnu.org/PR11646
10907 350. http://gcc.gnu.org/PR11665
10908 351. http://gcc.gnu.org/PR11852
10909 352. http://gcc.gnu.org/PR11878
10910 353. http://gcc.gnu.org/PR11883
10911 354. http://gcc.gnu.org/PR11991
10912 355. http://gcc.gnu.org/PR12146
10913 356. http://gcc.gnu.org/PR12215
10914 357. http://gcc.gnu.org/PR12369
10915 358. http://gcc.gnu.org/PR12446
10916 359. http://gcc.gnu.org/PR12510
10917 360. http://gcc.gnu.org/PR12544
10918 361. http://gcc.gnu.org/PR9862
10919 362. http://gcc.gnu.org/PR10962
10920 363. http://gcc.gnu.org/PR11370
10921 364. http://gcc.gnu.org/PR11637
10922 365. http://gcc.gnu.org/PR11885
10923 366. http://gcc.gnu.org/PR12082
10924 367. http://gcc.gnu.org/PR12180
10925 368. http://gcc.gnu.org/PR12340
10926 369. http://gcc.gnu.org/PR3907
10927 370. http://gcc.gnu.org/PR5293
10928 371. http://gcc.gnu.org/PR5296
10929 372. http://gcc.gnu.org/PR7939
10930 373. http://gcc.gnu.org/PR8656
10931 374. http://gcc.gnu.org/PR10147
10932 375. http://gcc.gnu.org/PR11400
10933 376. http://gcc.gnu.org/PR11409
10934 377. http://gcc.gnu.org/PR11740
10935 378. http://gcc.gnu.org/PR11786
10936 379. http://gcc.gnu.org/PR11867
10937 380. http://gcc.gnu.org/PR11928
10938 381. http://gcc.gnu.org/PR12114
10939 382. http://gcc.gnu.org/PR12163
10940 383. http://gcc.gnu.org/PR12181
10941 384. http://gcc.gnu.org/PR12236
10942 385. http://gcc.gnu.org/PR12266
10943 386. http://gcc.gnu.org/PR12296
10944 387. http://gcc.gnu.org/PR12298
10945 388. http://gcc.gnu.org/PR12369
10946 389. http://gcc.gnu.org/PR12337
10947 390. http://gcc.gnu.org/PR12344
10948 391. http://gcc.gnu.org/PR12451
10949 392. http://gcc.gnu.org/PR12486
10950 393. http://gcc.gnu.org/PR8869
10951 394. http://gcc.gnu.org/PR9786
10952 395. http://gcc.gnu.org/PR11689
10953 396. http://gcc.gnu.org/PR12116
10954 397. http://gcc.gnu.org/PR12070
10955 398. http://gcc.gnu.org/PR11184
10956 399. http://gcc.gnu.org/PR11535
10957 400. http://gcc.gnu.org/PR11693
10958 401. http://gcc.gnu.org/PR12224
10959 402. http://gcc.gnu.org/PR11087
10960 403. http://gcc.gnu.org/PR11319
10961 404. http://gcc.gnu.org/PR11949
10962 405. http://gcc.gnu.org/PR11662
10963 406. http://gcc.gnu.org/PR11965
10964 407. http://gcc.gnu.org/PR12301
10965 408. http://gcc.gnu.org/PR11717
10966 409. http://gcc.gnu.org/PR11313
10967 410. http://gcc.gnu.org/PR11712
10968 411. http://gcc.gnu.org/PR12166
10969 412. http://gcc.gnu.org/PR12101
10970 413. http://gcc.gnu.org/PR10988
10971 414. http://gcc.gnu.org/PR11805
10972 415. http://gcc.gnu.org/PR11902
10973 416. http://gcc.gnu.org/PR11903
10974 417. http://gcc.gnu.org/bugzilla/
10975 418. http://gcc.gnu.org/PR11890
10976 419. http://gcc.gnu.org/PR12399
10977 420. http://gcc.gnu.org/PR13068
10978 421. http://gcc.gnu.org/PR10060
10979 422. http://gcc.gnu.org/PR10555
10980 423. http://gcc.gnu.org/PR10706
10981 424. http://gcc.gnu.org/PR11496
10982 425. http://gcc.gnu.org/PR11741
10983 426. http://gcc.gnu.org/PR12440
10984 427. http://gcc.gnu.org/PR12632
10985 428. http://gcc.gnu.org/PR12712
10986 429. http://gcc.gnu.org/PR12726
10987 430. http://gcc.gnu.org/PR12890
10988 431. http://gcc.gnu.org/PR12900
10989 432. http://gcc.gnu.org/PR13060
10990 433. http://gcc.gnu.org/PR13289
10991 434. http://gcc.gnu.org/PR13318
10992 435. http://gcc.gnu.org/PR13392
10993 436. http://gcc.gnu.org/PR13574
10994 437. http://gcc.gnu.org/PR13475
10995 438. http://gcc.gnu.org/PR13797
10996 439. http://gcc.gnu.org/PR13824
10997 440. http://gcc.gnu.org/PR8776
10998 441. http://gcc.gnu.org/PR10339
10999 442. http://gcc.gnu.org/PR11350
11000 443. http://gcc.gnu.org/PR12826
11001 444. http://gcc.gnu.org/PR12500
11002 445. http://gcc.gnu.org/PR12941
11003 446. http://gcc.gnu.org/PR12953
11004 447. http://gcc.gnu.org/PR13041
11005 448. http://gcc.gnu.org/PR13507
11006 449. http://gcc.gnu.org/PR13382
11007 450. http://gcc.gnu.org/PR13394
11008 451. http://gcc.gnu.org/PR13400
11009 452. http://gcc.gnu.org/PR13521
11010 453. http://gcc.gnu.org/PR2094
11011 454. http://gcc.gnu.org/PR2294
11012 455. http://gcc.gnu.org/PR5050
11013 456. http://gcc.gnu.org/PR9371
11014 457. http://gcc.gnu.org/PR9546
11015 458. http://gcc.gnu.org/PR10081
11016 459. http://gcc.gnu.org/PR10093
11017 460. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#61
11018 461. http://gcc.gnu.org/PR10095
11019 462. http://gcc.gnu.org/PR11554
11020 463. http://gcc.gnu.org/PR12297
11021 464. http://gcc.gnu.org/PR12352
11022 465. http://gcc.gnu.org/PR12438
11023 466. http://gcc.gnu.org/PR12540
11024 467. http://gcc.gnu.org/PR12594
11025 468. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#60
11026 469. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#63
11027 470. http://gcc.gnu.org/PR12657
11028 471. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#292
11029 472. http://gcc.gnu.org/PR12696
11030 473. http://gcc.gnu.org/PR12815
11031 474. http://gcc.gnu.org/PR12862
11032 475. http://gcc.gnu.org/PR12926
11033 476. http://gcc.gnu.org/PR12967
11034 477. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html
11035 478. http://gcc.gnu.org/PR12971
11036 479. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#328
11037 480. http://gcc.gnu.org/PR13007
11038 481. http://gcc.gnu.org/PR13009
11039 482. http://gcc.gnu.org/PR13057
11040 483. http://gcc.gnu.org/PR13070
11041 484. http://gcc.gnu.org/PR13081
11042 485. http://gcc.gnu.org/PR13239
11043 486. http://gcc.gnu.org/PR13262
11044 487. http://gcc.gnu.org/PR13290
11045 488. http://gcc.gnu.org/PR13323
11046 489. http://gcc.gnu.org/PR13369
11047 490. http://gcc.gnu.org/PR13371
11048 491. http://gcc.gnu.org/PR13445
11049 492. http://gcc.gnu.org/PR13461
11050 493. http://gcc.gnu.org/PR13462
11051 494. http://gcc.gnu.org/PR13478
11052 495. http://gcc.gnu.org/PR13544
11053 496. http://gcc.gnu.org/PR13650
11054 497. http://gcc.gnu.org/PR13683
11055 498. http://gcc.gnu.org/PR13688
11056 499. http://gcc.gnu.org/PR13774
11057 500. http://gcc.gnu.org/PR13884
11058 501. http://gcc.gnu.org/PR10746
11059 502. http://gcc.gnu.org/PR11433
11060 503. http://gcc.gnu.org/PR12633
11061 504. http://gcc.gnu.org/PR13037
11062 505. http://gcc.gnu.org/PR13213
11063 506. http://gcc.gnu.org/PR4490
11064 507. http://gcc.gnu.org/PR12292
11065 508. http://gcc.gnu.org/PR12441
11066 509. http://gcc.gnu.org/PR12943
11067 510. http://gcc.gnu.org/PR13608
11068 511. http://gcc.gnu.org/PR11598
11069 512. http://gcc.gnu.org/PR11793
11070 513. http://gcc.gnu.org/PR12467
11071 514. http://gcc.gnu.org/PR12537
11072 515. http://gcc.gnu.org/PR12496
11073 516. http://gcc.gnu.org/PR12865
11074 517. http://gcc.gnu.org/PR13354
11075 518. http://gcc.gnu.org/PR10467
11076 519. http://gcc.gnu.org/PR11226
11077 520. http://gcc.gnu.org/PR11227
11078 521. http://gcc.gnu.org/PR12644
11079 522. http://gcc.gnu.org/PR13149
11080 523. http://gcc.gnu.org/PR12654
11081 524. http://gcc.gnu.org/PR12965
11082 525. http://gcc.gnu.org/PR13031
11083 526. http://gcc.gnu.org/PR11634
11084 527. http://gcc.gnu.org/PR12158
11085 528. http://gcc.gnu.org/PR11992
11086 529. http://gcc.gnu.org/PR9365
11087 530. http://gcc.gnu.org/PR10392
11088 531. http://gcc.gnu.org/PR11322
11089 532. http://gcc.gnu.org/PR13069
11090 533. http://gcc.gnu.org/PR13302
11091 534. http://gcc.gnu.org/PR13585
11092 535. http://gcc.gnu.org/PR8916
11093 536. http://gcc.gnu.org/PR11576
11094 537. http://gcc.gnu.org/PR13122
11095 538. http://gcc.gnu.org/PR13256
11096 539. http://gcc.gnu.org/PR13373
11097 540. http://gcc.gnu.org/PR12561
11098 541. http://gcc.gnu.org/PR6243
11099 542. http://gcc.gnu.org/PR11397
11100 543. http://gcc.gnu.org/PR12505
11101 544. http://gcc.gnu.org/PR13150
11102 545. http://gcc.gnu.org/PR12666
11103 546. http://gcc.gnu.org/PR12969
11104 547. http://gcc.gnu.org/PR10819
11105 548. http://gcc.gnu.org/PR11612
11106 549. http://gcc.gnu.org/PR13211
11107 550. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.4
11108 551. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.5
11109 552. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.6
11110 553. http://gcc.gnu.org/onlinedocs/
11111 554. mailto:gcc-help@gcc.gnu.org
11112 555. mailto:gcc@gcc.gnu.org
11113 556. http://gcc.gnu.org/lists.html
11114 557. http://www.fsf.org/
11115 558. http://gcc.gnu.org/about.html
11116 559. http://validator.w3.org/check/referer
11117 ======================================================================
11118 http://gcc.gnu.org/gcc-3.2/index.html
11119 GCC 3.2 Release Series
11123 The [1]GNU project and the GCC developers are pleased to announce the
11124 release of GCC 3.2.3.
11126 The purpose of the GCC 3.2 release series is to provide a stable
11127 platform for OS distributors to use building their next releases. A
11128 primary objective was to stabilize the C++ ABI; we believe that the
11129 interface to the compiler and the C++ standard library are now
11132 Be aware that C++ code compiled by GCC 3.2.x will (in general) not
11133 interoperate with code compiled by GCC 3.1.1 or earlier.
11135 Please refer to our [2]detailed list of news, caveats, and bug-fixes
11136 for further information.
11141 April 25, 2003 ([3]changes)
11144 February 5, 2003 ([4]changes)
11147 November 19, 2002 ([5]changes)
11150 August 14, 2002 ([6]changes)
11152 References and Acknowledgements
11154 GCC used to stand for the GNU C Compiler, but since the compiler
11155 supports several other languages aside from C, it now stands for the
11156 GNU Compiler Collection.
11158 A list of [7]successful builds is updated as new information becomes
11161 The GCC developers would like to thank the numerous people that have
11162 contributed new features, improvements, bug fixes, and other changes as
11163 well as test results to GCC. This [8]amazing group of volunteers is
11164 what makes GCC successful.
11166 For additional information about GCC please refer to the [9]GCC project
11167 web site or contact the [10]GCC development mailing list.
11169 To obtain GCC please use [11]our mirror sites, or our CVS server.
11172 For questions related to the use of GCC, please consult these web
11173 pages and the [12]GCC manuals. If that fails, the
11174 [13]gcc-help@gcc.gnu.org mailing list might help. Comments on these
11175 web pages and the development of GCC are welcome on our developer
11176 list at [14]gcc@gcc.gnu.org. All of [15]our lists have public
11179 Copyright (C) [16]Free Software Foundation, Inc. Verbatim copying and
11180 distribution of this entire article is permitted in any medium,
11181 provided this notice is preserved.
11183 These pages are [17]maintained by the GCC team. Last modified
11188 1. http://www.gnu.org/
11189 2. http://gcc.gnu.org/gcc-3.2/changes.html
11190 3. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3
11191 4. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.2
11192 5. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.1
11193 6. http://gcc.gnu.org/gcc-3.2/changes.html#3.2
11194 7. http://gcc.gnu.org/gcc-3.2/buildstat.html
11195 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
11196 9. http://gcc.gnu.org/index.html
11197 10. mailto:gcc@gcc.gnu.org
11198 11. http://gcc.gnu.org/mirrors.html
11199 12. http://gcc.gnu.org/onlinedocs/
11200 13. mailto:gcc-help@gcc.gnu.org
11201 14. mailto:gcc@gcc.gnu.org
11202 15. http://gcc.gnu.org/lists.html
11203 16. http://www.fsf.org/
11204 17. http://gcc.gnu.org/about.html
11205 18. http://validator.w3.org/check/referer
11206 ======================================================================
11207 http://gcc.gnu.org/gcc-3.2/changes.html
11208 GCC 3.2 Release Series
11209 Changes, New Features, and Fixes
11211 The latest release in the 3.2 release series is [1]GCC 3.2.3.
11213 Caveats and New Features
11217 * The C++ compiler does not correctly zero-initialize
11218 pointers-to-data members. You must explicitly initialize them. For
11219 example: int S::*m(0); will work, but depending on
11220 default-initialization to zero will not work. This bug cannot be
11221 fixed in GCC 3.2 without inducing unacceptable risks. It will be
11223 * This GCC release is based on the GCC 3.1 sourcebase, and thus has
11224 all the [2]changes in the GCC 3.1 series. In addition, GCC 3.2 has
11225 a number of C++ ABI fixes which make its C++ compiler generate
11226 binary code which is incompatible with the C++ compilers found in
11227 earlier GCC releases, including GCC 3.1 and GCC 3.1.1.
11229 Frontend Enhancements
11233 * The method of constructing the list of directories to be searched
11234 for header files has been revised. If a directory named by a -I
11235 option is a standard system include directory, the option is
11236 ignored to ensure that the default search order for system
11237 directories and the special treatment of system header files are
11239 * The C and Objective-C compilers no longer accept the "Naming Types"
11240 extension (typedef foo = bar); it was already unavailable in C++.
11241 Code which uses it will need to be changed to use the "typeof"
11242 extension instead: typedef typeof(bar) foo. (We have removed this
11243 extension without a period of deprecation because it has caused the
11244 compiler to crash since version 3.0 and no one noticed until very
11245 recently. Thus we conclude it is not in widespread use.)
11249 * GCC 3.2 fixed serveral differences between the C++ ABI implemented
11250 in GCC and the multi-vendor standard, but more have been found
11251 since the release. 3.2.1 adds a new warning, -Wabi, to warn about
11252 code which is affected by these bugs. We will fix these bugs in
11253 some future release, once we are confident that all have been
11254 found; until then, it is our intention to make changes to the ABI
11255 only if they are necessary for correct compilation of C++, as
11256 opposed to conformance to the ABI documents.
11257 * For details on how to build an ABI compliant compiler for GNU/Linux
11258 systems, check the [3]common C++ ABI page.
11260 New Targets and Target Specific Improvements
11264 * Fixed a number of bugs in SSE and MMX intrinsics.
11265 * Fixed common compiler crashes with SSE instruction set enabled
11266 (implied by -march=pentium3, pentium4, athlon-xp)
11267 * __m128 and __m128i is not 128bit aligned when used in structures.
11271 * A bug whereby the compiler could generate bad code for bzero has
11273 * ABI fixes (implying ABI incompatibilities with previous version in
11275 * Fixed prefetch code generation
11276 __________________________________________________________________
11280 3.2.3 is a bug fix release only; there are no new features that were
11281 not present in GCC 3.2.2.
11285 This section lists the problem reports (PRs) from GCC's bug tracking
11286 system that are known to be fixed in the 3.2.3 release. This list might
11287 not be complete (that is, it is possible that some PRs that have been
11288 fixed are not listed here), and some of the titles have been changed to
11289 make them more clear.
11291 Internal Compiler Errors (multi-platform)
11293 * [4]3782: (c++) -quiet -fstats produces a segmentation fault in
11295 * [5]6440: (c++) template specializations cause ICE
11296 * [6]7050: (c++) ICE on: (i ? get_string() : throw)
11297 * [7]7741: ICE on conflicting types (make_decl_rtl in varasm.c)
11298 * [8]7982: (c++) ICE due to infinite recursion (using STL set)
11299 * [9]8068: exceedingly high (infinite) memory usage
11300 * [10]8178: ICE with __builtin_ffs
11301 * [11]8396: ICE in copy_to_mode_reg, in explow.c
11302 * [12]8674: (c++) ICE in cp_expr_size, in cp/cp-lang.c
11303 * [13]9768: ICE when optimizing inline code at -O2
11304 * [14]9798: (c++) Infinite recursion (segfault) in
11305 cp/decl.c:push_using_directive with recursive using directives
11306 * [15]9799: mismatching structure initializer with nested flexible
11308 * [16]9928: ICE on duplicate enum declaration
11309 * [17]10114: ICE in mem_loc_descriptor, in dwarf2out.c (affects
11311 * [18]10352: ICE in find_reloads_toplev
11312 * [19]10336: ICE with -Wunreachable-code
11316 * [20]8224: Incorrect joining of signed and unsigned division
11317 * [21]8613: -O2 produces wrong code with builtin strlen and
11319 * [22]8828: gcc reports some code is unreachable when it is not
11320 * [23]9226: GCSE breaking argument passing
11321 * [24]9853: miscompilation of non-constant structure initializer
11322 * [25]9797: C99-style struct initializers are miscompiled
11323 * [26]9967: Some standard C function calls should not be replaced
11324 when optimizing for size
11325 * [27]10116: ce2: invalid merge of join_bb in the context of switch
11327 * [28]10171: wrong code for inlined function
11328 * [29]10175: -Wunreachable-code doesn't work for single lines
11330 C++ compiler and library:
11332 * [30]8316: Confusing diagnostic for code that misuses conversion
11334 * [31]9169: filebuf output fails if codecvt<>::out returns noconv
11335 * [32]9420: incomplete type incorrectly reported
11336 * [33]9459: typeof in return type specification of template not
11338 * [34]9507: filebuf::open handles ios_base::ate incorrectly
11339 * [35]9538: Out-of-bounds memory access in streambuf::sputbackc
11340 * [36]9602: Total confusion about template/friend/virtual/abstract
11341 * [37]9993: destructor not called for local object created within and
11342 returned from infinite loop
11343 * [38]10167: ieee_1003.1-2001 locale specialisations on a glibc-2.3.2
11346 Java compiler and library:
11348 * [39]9652: libgcj build fails on irix6.5.1[78]
11349 * [40]10144: gas on solaris complains about bad .stabs lines for
11350 java, native as unaffected
11352 x86-specific (Intel/AMD):
11354 * [41]8746: gcc miscompiles Linux kernel ppa driver on x86
11355 * [42]9888: -mcpu=k6 -Os produces out of range loop instructions
11356 * [43]9638: Cross-build for target i386-elf and i586-pc-linux-gnu
11358 * [44]9954: Cross-build for target i586-pc-linux-gnu (--with-newlib)
11363 * [45]7784: [Sparc] ICE in extract_insn, in recog.c
11364 * [46]7796: sparc extra failure with -m64 on execute/930921-1.c in
11366 * [47]8281: ICE when compiling with -O2 -fPIC for Ultrasparc
11367 * [48]8366: [Sparc] C testsuite failure with -m64 -fpic -O in
11369 * [49]8726: gcc -O2 miscompiles Samba 2.2.7 on 32-bit sparc
11370 * [50]9414: Scheduling bug on Ultrasparc
11371 * [51]10067: GCC-3.2.2 outputs invalid asm on sparc64
11375 * [52]7248: broken "inclusive or" code
11376 * [53]8343: m68k-elf/rtems ICE at instantiate_virtual_regs_1
11380 * [54]9732: Wrong code with -O2 -fPIC
11381 * [55]10073: ICE: powerpc cannot split insn
11385 * [56]7702: optimization problem on a DEC alpha under OSF1
11386 * [57]9671: gcc.3.2.2 does not build on a HP Tru64 Unix v5.1B system
11390 * [58]8694: <string> breaks <ctype.h> on HP-UX 10.20 (DUP: 9275)
11391 * [59]9953: (ada) gcc 3.2.x can't build 3.3-branch ada on HP-UX 10
11393 * [60]10271: Floating point args don't get reloaded across function
11398 * [61]6362: mips-irix6 gcc-3.1 C testsuite failure with -mips4 in
11403 * [62]10377: gcc-3.2.2 creates bad assembler code for cris
11405 Miscellaneous and minor bugs:
11407 * [63]6955: collect2 says "core dumped" when there is no core
11408 __________________________________________________________________
11412 Beginning with 3.2.2, GCC's Makefile suite supports redirection of make
11413 install by means of the DESTDIR variable. Parts of the GCC tree have
11414 featured that support long before, but now it is available even from
11417 Other than that, GCC 3.2.2 is a bug fix release only; there are no new
11418 features that were not present in GCC 3.2.1.
11422 On the following i386-based systems GCC 3.2.1 broke the C ABI wrt.
11423 functions returning structures: Cygwin, FreeBSD (GCC 3.2.1 as shipped
11424 with FreeBSD 5.0 does not have this problem), Interix, a.out-based
11425 GNU/Linux and NetBSD, OpenBSD, and Darwin. GCC 3.2.2 reverts this ABI
11426 change, and thus restores ABI-compatibility with previous releases
11427 (except GCC 3.2.1) on these platforms.
11429 This section lists the problem reports (PRs) from GCC's bug tracking
11430 system that are known to be fixed in the 3.2.2 release. This list might
11431 not be complete (that is, it is possible that some PRs that have been
11432 fixed are not listed here) and some of the titles have been changed to
11433 make them more clear.
11435 Internal Compiler Errors (multi-platform)
11437 * [64]5919: (c++) ICE when passing variable array to template
11439 * [65]7129: (c++) ICE with min/max assignment operators (<?= and >?=)
11440 * [66]7507: ICE with -O2 when address of called function is a
11441 complicated expression
11442 * [67]7622: ICE with nested inline functions if function's address is
11444 * [68]7681: (fortran) ICE in compensate_edge, in reg-stack.c (also PR
11446 * [70]8031: (c++) ICE in code comparing typeids and casting from
11448 * [71]8275: ICE in simplify_subreg
11449 * [72]8332: (c++) builtin strlen/template interaction causes ICE
11450 * [73]8372: (c++) ICE on explicit call of destructor
11451 * [74]8439: (c, not c++) empty struct causes ICE
11452 * [75]8442: (c++) ICE with nested template classes
11453 * [76]8518: ICE when compiling mplayer ("extern inline" issue)
11454 * [77]8615: (c++) ICE with out-of-range character constant template
11456 * [78]8663: (c++) ICE in cp_expr_size, at cp-lang.c:307
11457 * [79]8799: (c++) ICE: error reporting routines re-entered
11458 * [80]9328: (c++) ICE with typeof(X) for overloaded X
11459 * [81]9465: (preprocessor) cpp -traditional ICE on null bytes
11461 C++ (compiler and library) bugs
11463 * [82]47: scoping in nested classes is broken
11464 * [83]6745: problems with iostream rdbuf() member function
11465 * [84]8214: conversion from const char* const to char* sometimes
11467 * [85]8493: builtin strlen and overload resolution (same bug as
11469 * [87]8503: strange behaviour of function types
11470 * [88]8727: compiler confused by inheritance from an anonymous struct
11471 * [89]7445: poor performance of std::locale::classic() in
11472 multi-threaded applications
11473 * [90]8230: mishandling of overflow in vector<T>::resize
11474 * [91]8399: sync_with_stdio(false) breaks unformatted input
11475 * [92]8662: illegal access of private member of unnamed class is
11477 * [93]8707: "make distclean" fails in libstdc++-v3 directory
11478 * [94]8708: __USE_MALLOC doesn't work
11479 * [95]8790: Use of non-thread-safe strtok in src/localename.cc
11480 * [96]8887: Bug in date formats with --enable-clocale=generic
11481 * [97]9076: Call Frame Instructions are not handled correctly during
11483 * [98]9151: std::setprecision limited to 16 digits when outputting a
11485 * [99]9168: codecvt<char, char, mbstate_t> overwrites output buffers
11486 * [100]9269: libstdc++ headers: explicit specialization of function
11487 must precede its first use
11488 * [101]9322: return value of basic_streambuf<>::getloc affected by
11490 * [102]9433: segfault in runtime support for dynamic_cast
11492 C and optimizer bugs
11494 * [103]8032: GCC incorrectly initializes static structs that have
11496 * [104]8639: simple arithmetic expression broken
11497 * [105]8794: optimization improperly eliminates certain expressions
11498 * [106]8832: traditional "asm volatile" code is illegally optimized
11499 * [107]8988: loop optimizer bug: with -O2, code is generated that
11500 segfaults (found on i386, bug present for all platforms)
11501 * [108]9492: structure copy clobbers subsequent stores to structure
11505 * [109]9267: Objective-C parser won't build with newer bison versions
11510 * [110]8344: Ada build problem due to conflict between gcc/final.o,
11515 * [111]8524: _Pragma within macros is improperly expanded
11516 * [112]8880: __WCHAR_TYPE__ macro incorrectly set to "long int" with
11521 * [113]9090: arm ICE with >= -O2; regression from gcc-2.95
11523 x86-specific (Intel/AMD)
11525 * [114]8588: ICE in extract_insn, at recog.c:NNNN (shift instruction)
11526 * [115]8599: loop unroll bug with -march=k6-3
11527 * [116]9506: ABI breakage in structure return (affects BSD and
11528 Cygwin, but not GNU/Linux)
11530 FreeBSD 5.0 specific
11532 * [117]9484: GCC 3.2.1 Bootstrap failure on FreeBSD 5.0
11536 * [118]9292: hppa1.1-rtems configurery problems
11537 * [119]9293: [m68k-elf/rtems] config/m68k/t-crtstuff bug
11538 * [120]9295: [mips-rtems] config/mips/rtems.h init/fini issue
11539 * [121]9296: gthr-rtems regression
11540 * [122]9316: powerpc-rtems: extending multilibs
11544 * [123]9493: ICE with -O2 when building a simple function
11548 * [124]7341: hyperlink to gcov in GCC documentation doesn't work
11549 * [125]8947: Please add a warning about "-malign-double" in docs
11550 * [126]7448, [127]8882: typo cleanups
11551 __________________________________________________________________
11555 3.2.1 adds a new warning, -Wabi. This option warns when GNU C++
11556 generates code that is known not to be binary-compatible with the
11557 vendor-neutral ia32/ia64 ABI. Please consult the GCC manual, included
11558 in the distribution, for details.
11560 This release also removes an old GCC extension, "naming types", and the
11561 documentation now directs users to use a different GCC extension,
11562 __typeof__, instead. The feature had evidently been broken for a while.
11564 Otherwise, 3.2.1 is a bug fix release only; other than bug fixes and
11565 the new warning there are no new features that were not present in GCC
11568 In addition, the previous fix for [128]PR 7445 (poor performance of
11569 std::locale::classic() in multi-threaded applications) was reverted
11570 ("unfixed"), because the "fix" was not thread-safe.
11574 This section lists the problem reports (PRs) from GCC's bug tracking
11575 system that are known to be fixed in the 3.2.1 release. This list might
11576 not be complete (that is, it is possible that some PRs that have been
11577 fixed are not listed here). As you can see, the number of bug fixes is
11578 quite large, so it is strongly recommended that users of earlier GCC
11579 3.x releases upgrade to GCC 3.2.1.
11581 Internal Compiler Errors (multi-platform)
11583 * [129]2521: (c++) ICE in build_ptrmemfunc, in cp/typeck.c
11584 * [130]5661: (c++) ICE instantiating template on array of unknown
11586 * [131]6419: (c++) ICE in make_decl_rtl for "longest" attribute on
11588 * [132]6994: (c++) ICE in find_function_data
11589 * [133]7150: preprocessor: GCC -dM -E gives an ICE
11590 * [134]7160: ICE when optimizing branches without a return value
11591 * [135]7228: (c++) ICE when using member template and template
11593 * [136]7266: (c++) ICE with -pedantic on missing typename
11594 * [137]7353: ICE from use of "Naming Types" extension, see above
11595 * [138]7411: ICE in instantiate_virtual_regs_1, in function.c
11596 * [139]7478: (c++) ICE on static_cast inside template
11597 * [140]7526: preprocessor core dump when _Pragma implies #pragma
11599 * [141]7721: (c++) ICE on simple (but incorrect) template ([142]7803
11601 * [143]7754: (c++) ICE on union with template parameter
11602 * [144]7788: (c++) redeclaring a definition as an incomplete class
11604 * [145]8031: (c++) ICE in comptypes, in cp/typeck.c
11605 * [146]8055: preprocessor dies with SIG11 when building FreeBSD
11607 * [147]8067: (c++) ICE due to mishandling of __FUNCTION__ and related
11609 * [148]8134: (c++) ICE in force_store_init_value on legal code
11610 * [149]8149: (c++) ICE on incomplete type
11611 * [150]8160: (c++) ICE in build_modify_expr, in cp/typeck.c: array
11614 C++ (compiler and library) bugs
11616 * [151]5607: No pointer adjustment in covariant return types
11617 * [152]6579: Infinite loop with statement expressions in member
11619 * [153]6803: Default copy constructor bug in GCC 3.1
11620 * [154]7176: g++ confused by friend and static member with same name
11621 * [155]7188: Segfault with template class and recursive (incorrect)
11623 * [156]7306: Regression: GCC 3.x fails to compile code with virtual
11624 inheritance if a method has a variable number of arguments
11625 * [157]7461: ctype<char>::classic_table() returns offset array on
11627 * [158]7524: f(const float arg[3]) fails
11628 * [159]7584: Erroneous ambiguous base error on using declaration
11629 * [160]7676: Member template overloading problem
11630 * [161]7679: infinite loop when a right parenthesis is missing
11631 * [162]7811: default locale not taken from environment
11632 * [163]7961: compare( char *) implemented incorrectly in
11634 * [164]8071: basic_ostream::operator<<(streambuf*) loops forever if
11635 streambuf::underflow() leaves gptr() NULL (dups: [165]8127,
11637 * [167]8096: deque::at() throws std::range_error instead of
11639 * [168]8127: cout << cin.rdbuf() infinite loop
11640 * [169]8218: Excessively large memory consumed for classes with large
11642 * [170]8287: GCC 3.2: Destructor called for non-constructed local
11644 * [171]8347: empty vector range used in string construction causes
11646 * [172]8348: fail() flag is set in istringstream when eof() flag is
11648 * [173]8391: regression: infinite loop in cp/decl2.c(finish_file)
11650 C and optimizer bugs
11652 * [174]6627: -fno-align-functions doesn't seem to disable function
11654 * [175]6631: life_analysis misoptimizes code to initialize fields of
11656 * [176]7102: unsigned char division results in floating exception
11657 * [177]7120: Run once loop should *always* be unrolled
11659 * [178]7209: Bug involving array referencing and ?: operator
11660 * [179]7515: invalid inlining of global function with -O3
11661 * [180]7814: incorrect scheduling for glibc-2.2.92 strcpy test
11662 * [181]8467: bug in sibling call optimization
11666 * [182]4890: incorrect line markers from the traditional preprocessor
11667 * [183]7357: -M option omits system headers files (making it the same
11669 * [184]7358: Changes to Sun's make Dependencies
11670 * [185]7602: C++ header files found in CPLUS_INCLUDE_PATH treated as
11672 * [186]7862: Interrupting GCC -MD removes .d file but not .o
11673 * [187]8190: Failed compilation deletes -MD dependency file
11674 * [188]8524: _Pragma within macro is improperly expanded
11676 x86 specific (Intel/AMD)
11678 * [189]5351: (i686-only) function pass-by-value structure copy
11679 corrupts stack ([190]7591 is a duplicate)
11680 * [191]6845, [192]7034, [193]7124, [194]7174: ICE's with
11681 -march=pentium3/pentium2/athlon (these are all the same underlying
11682 bug, in MMX register use)
11683 * [195]7134, [196]7375, [197]7390: ICE with -march=athlon (maybe same
11685 * [198]6890: xmmintrin.h, _MM_TRANSPOSE4_PS is broken
11686 * [199]6981: wrong code in 64-bit manipulation on x86
11687 * [200]7242: GCC -mcpu=pentium[23] doesn't define __tune_pentiumpro__
11689 * [201]7396: ix86: cmpgt_ss, cmpge_ss, cmpngt_ss, and cmpnge_ss SSE
11690 intrinsics are broken
11691 * [202]7630: GCC 3.2 breaks on Mozilla 1.0's JS sources with
11693 * [203]7693: Typo in i386 mmintrin.h header
11694 * [204]7723: ICE - Pentium3 sse - GCC 3.2
11695 * [205]7951: ICE on -march=pentium4 -O2 -mfpmath=sse
11696 * [206]8146: (i686 only) gcc 3.2 miscompiles gcc 2.95.3
11700 * [207]5967: GCC bug when profiling nested functions on powerpc
11701 * [208]6984: wrong code generated with -O2, -O3, -Os for do-while
11703 * [209]7114: PowerPC: ICE building strcoll.op from glibc-2.2.5
11704 * [210]7130: miscompiled code for GCC-3.1 on
11705 powerpc-unknown-linux-gnu with -funroll-all-loops
11706 * [211]7133: PowerPC ICE: unrecognizable insn
11707 * [212]7380: ICE in extract_insn, at recog.c:2148
11708 * [213]8252: ICE on Altivec code with optimization turned on
11709 * [214]8451: Altivec ICE in GCC 3.2
11713 * [215]7250: __ashrdi3 returns wrong value on 32 bit hppa
11717 * [216]6668: when using --disable-multilib, libgcc_s.so is installed
11718 in the wrong place on sparc-solaris
11719 * [217]7151: ICE when compiling for UltraSPARC
11720 * [218]7335: SPARC: ICE in verify_wide_reg (flow.c:557) with long
11722 * [219]7842: [REGRESSION] SPARC code gen bug
11726 * [220]7856: [arm] invalid offset in constant pool reference
11727 * [221]7967: optimization produces wrong code (ARM)
11731 * [222]7374: __builtin_fabsl broken on alpha
11735 * [223]7370: ICE in fixup_var_refs_1 on s390x
11736 * [224]7409: loop optimization bug on s390x-linux-gnu
11737 * [225]8232: s390x: ICE when using bcmp with int length argument
11741 * [226]7623: SCO OpenServer build fails with machmode.def: undefined
11742 symbol: BITS_PER_UNIT
11744 m68k/Coldfire specific
11746 * [227]8314: crtbegin, crtend need to be multilib'ed for this
11751 * [228]761: Document some undocumented options
11752 * [229]5610: Fix documentation about invoking SSE instructions
11754 * [230]7484: List -Wmissing-declarations as C-only option
11755 * [231]7531: -mcmodel not documented for x86-64
11756 * [232]8120: Update documentation of bad use of ##
11757 __________________________________________________________________
11761 3.2 is a small bug fix release, but there is a change to the
11762 application binary interface (ABI), hence the change to the second part
11763 of the version number.
11765 The main purpose of the 3.2 release is to correct a couple of problems
11766 in the C++ ABI, with the intention of providing a stable interface
11767 going forward. Accordingly, 3.2 is only a small change to 3.1.1.
11773 * [233]7320: g++ 3.2 relocation problem
11774 * [234]7470: vtable: virtual function pointers not in declaration
11779 * [235]6410: Trouble with non-ASCII monetary symbols and wchar_t
11780 * [236]6503, [237]6642, [238]7186: Problems with comparing or
11781 subtracting various types of const and non-const iterators
11782 * [239]7216: ambiguity with basic_iostream::traits_type
11783 * [240]7220: problem with basic_istream::ignore(0,delimiter)
11784 * [241]7222: locale::operator==() doesn't work on std::locale("")
11785 * [242]7286: placement operator delete issue
11786 * [243]7442: cxxabi.h does not match the C++ ABI
11787 * [244]7445: poor performance of std::locale::classic() in
11788 multi-threaded applications
11792 * [245]7291: off-by-one in generated inline bzero code for x86-64
11795 For questions related to the use of GCC, please consult these web
11796 pages and the [246]GCC manuals. If that fails, the
11797 [247]gcc-help@gcc.gnu.org mailing list might help. Comments on these
11798 web pages and the development of GCC are welcome on our developer
11799 list at [248]gcc@gcc.gnu.org. All of [249]our lists have public
11802 Copyright (C) [250]Free Software Foundation, Inc. Verbatim copying and
11803 distribution of this entire article is permitted in any medium,
11804 provided this notice is preserved.
11806 These pages are [251]maintained by the GCC team. Last modified
11811 1. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3
11812 2. http://gcc.gnu.org/gcc-3.1/changes.html
11813 3. http://gcc.gnu.org/gcc-3.2/c++-abi.html
11814 4. http://gcc.gnu.org/PR3782
11815 5. http://gcc.gnu.org/PR6440
11816 6. http://gcc.gnu.org/PR7050
11817 7. http://gcc.gnu.org/PR7741
11818 8. http://gcc.gnu.org/PR7982
11819 9. http://gcc.gnu.org/PR8068
11820 10. http://gcc.gnu.org/PR8178
11821 11. http://gcc.gnu.org/PR8396
11822 12. http://gcc.gnu.org/PR8674
11823 13. http://gcc.gnu.org/PR9768
11824 14. http://gcc.gnu.org/PR9798
11825 15. http://gcc.gnu.org/PR9799
11826 16. http://gcc.gnu.org/PR9928
11827 17. http://gcc.gnu.org/PR10114
11828 18. http://gcc.gnu.org/PR10352
11829 19. http://gcc.gnu.org/PR10336
11830 20. http://gcc.gnu.org/PR8224
11831 21. http://gcc.gnu.org/PR8613
11832 22. http://gcc.gnu.org/PR8828
11833 23. http://gcc.gnu.org/PR9226
11834 24. http://gcc.gnu.org/PR9853
11835 25. http://gcc.gnu.org/PR9797
11836 26. http://gcc.gnu.org/PR9967
11837 27. http://gcc.gnu.org/PR10116
11838 28. http://gcc.gnu.org/PR10171
11839 29. http://gcc.gnu.org/PR10175
11840 30. http://gcc.gnu.org/PR8316
11841 31. http://gcc.gnu.org/PR9169
11842 32. http://gcc.gnu.org/PR9420
11843 33. http://gcc.gnu.org/PR9459
11844 34. http://gcc.gnu.org/PR9507
11845 35. http://gcc.gnu.org/PR9538
11846 36. http://gcc.gnu.org/PR9602
11847 37. http://gcc.gnu.org/PR9993
11848 38. http://gcc.gnu.org/PR10167
11849 39. http://gcc.gnu.org/PR9652
11850 40. http://gcc.gnu.org/PR10144
11851 41. http://gcc.gnu.org/PR8746
11852 42. http://gcc.gnu.org/PR9888
11853 43. http://gcc.gnu.org/PR9638
11854 44. http://gcc.gnu.org/PR9954
11855 45. http://gcc.gnu.org/PR7784
11856 46. http://gcc.gnu.org/PR7796
11857 47. http://gcc.gnu.org/PR8281
11858 48. http://gcc.gnu.org/PR8366
11859 49. http://gcc.gnu.org/PR8726
11860 50. http://gcc.gnu.org/PR9414
11861 51. http://gcc.gnu.org/PR10067
11862 52. http://gcc.gnu.org/PR7248
11863 53. http://gcc.gnu.org/PR8343
11864 54. http://gcc.gnu.org/PR9732
11865 55. http://gcc.gnu.org/PR10073
11866 56. http://gcc.gnu.org/PR7702
11867 57. http://gcc.gnu.org/PR9671
11868 58. http://gcc.gnu.org/PR8694
11869 59. http://gcc.gnu.org/PR9953
11870 60. http://gcc.gnu.org/PR10271
11871 61. http://gcc.gnu.org/PR6362
11872 62. http://gcc.gnu.org/PR10377
11873 63. http://gcc.gnu.org/PR6955
11874 64. http://gcc.gnu.org/PR5919
11875 65. http://gcc.gnu.org/PR7129
11876 66. http://gcc.gnu.org/PR7507
11877 67. http://gcc.gnu.org/PR7622
11878 68. http://gcc.gnu.org/PR7681
11879 69. http://gcc.gnu.org/PR9528
11880 70. http://gcc.gnu.org/PR8031
11881 71. http://gcc.gnu.org/PR8275
11882 72. http://gcc.gnu.org/PR8332
11883 73. http://gcc.gnu.org/PR8372
11884 74. http://gcc.gnu.org/PR8439
11885 75. http://gcc.gnu.org/PR8442
11886 76. http://gcc.gnu.org/PR8518
11887 77. http://gcc.gnu.org/PR8615
11888 78. http://gcc.gnu.org/PR8663
11889 79. http://gcc.gnu.org/PR8799
11890 80. http://gcc.gnu.org/PR9328
11891 81. http://gcc.gnu.org/PR9465
11892 82. http://gcc.gnu.org/PR47
11893 83. http://gcc.gnu.org/PR6745
11894 84. http://gcc.gnu.org/PR8214
11895 85. http://gcc.gnu.org/PR8493
11896 86. http://gcc.gnu.org/PR8332
11897 87. http://gcc.gnu.org/PR8503
11898 88. http://gcc.gnu.org/PR8727
11899 89. http://gcc.gnu.org/PR7445
11900 90. http://gcc.gnu.org/PR8230
11901 91. http://gcc.gnu.org/PR8399
11902 92. http://gcc.gnu.org/PR8662
11903 93. http://gcc.gnu.org/PR8707
11904 94. http://gcc.gnu.org/PR8708
11905 95. http://gcc.gnu.org/PR8790
11906 96. http://gcc.gnu.org/PR8887
11907 97. http://gcc.gnu.org/PR9076
11908 98. http://gcc.gnu.org/PR9151
11909 99. http://gcc.gnu.org/PR9168
11910 100. http://gcc.gnu.org/PR9269
11911 101. http://gcc.gnu.org/PR9322
11912 102. http://gcc.gnu.org/PR9433
11913 103. http://gcc.gnu.org/PR8032
11914 104. http://gcc.gnu.org/PR8639
11915 105. http://gcc.gnu.org/PR8794
11916 106. http://gcc.gnu.org/PR8832
11917 107. http://gcc.gnu.org/PR8988
11918 108. http://gcc.gnu.org/PR9492
11919 109. http://gcc.gnu.org/PR9267
11920 110. http://gcc.gnu.org/PR8344
11921 111. http://gcc.gnu.org/PR8524
11922 112. http://gcc.gnu.org/PR8880
11923 113. http://gcc.gnu.org/PR9090
11924 114. http://gcc.gnu.org/PR8588
11925 115. http://gcc.gnu.org/PR8599
11926 116. http://gcc.gnu.org/PR9506
11927 117. http://gcc.gnu.org/PR9484
11928 118. http://gcc.gnu.org/PR9292
11929 119. http://gcc.gnu.org/PR9293
11930 120. http://gcc.gnu.org/PR9295
11931 121. http://gcc.gnu.org/PR9296
11932 122. http://gcc.gnu.org/PR9316
11933 123. http://gcc.gnu.org/PR9493
11934 124. http://gcc.gnu.org/PR7341
11935 125. http://gcc.gnu.org/PR8947
11936 126. http://gcc.gnu.org/PR7448
11937 127. http://gcc.gnu.org/PR8882
11938 128. http://gcc.gnu.org/PR7445
11939 129. http://gcc.gnu.org/PR2521
11940 130. http://gcc.gnu.org/PR5661
11941 131. http://gcc.gnu.org/PR6419
11942 132. http://gcc.gnu.org/PR6994
11943 133. http://gcc.gnu.org/PR7150
11944 134. http://gcc.gnu.org/PR7160
11945 135. http://gcc.gnu.org/PR7228
11946 136. http://gcc.gnu.org/PR7266
11947 137. http://gcc.gnu.org/PR7353
11948 138. http://gcc.gnu.org/PR7411
11949 139. http://gcc.gnu.org/PR7478
11950 140. http://gcc.gnu.org/PR7526
11951 141. http://gcc.gnu.org/PR7721
11952 142. http://gcc.gnu.org/PR7803
11953 143. http://gcc.gnu.org/PR7754
11954 144. http://gcc.gnu.org/PR7788
11955 145. http://gcc.gnu.org/PR8031
11956 146. http://gcc.gnu.org/PR8055
11957 147. http://gcc.gnu.org/PR8067
11958 148. http://gcc.gnu.org/PR8134
11959 149. http://gcc.gnu.org/PR8149
11960 150. http://gcc.gnu.org/PR8160
11961 151. http://gcc.gnu.org/PR5607
11962 152. http://gcc.gnu.org/PR6579
11963 153. http://gcc.gnu.org/PR6803
11964 154. http://gcc.gnu.org/PR7176
11965 155. http://gcc.gnu.org/PR7188
11966 156. http://gcc.gnu.org/PR7306
11967 157. http://gcc.gnu.org/PR7461
11968 158. http://gcc.gnu.org/PR7524
11969 159. http://gcc.gnu.org/PR7584
11970 160. http://gcc.gnu.org/PR7676
11971 161. http://gcc.gnu.org/PR7679
11972 162. http://gcc.gnu.org/PR7811
11973 163. http://gcc.gnu.org/PR7961
11974 164. http://gcc.gnu.org/PR8071
11975 165. http://gcc.gnu.org/PR8127
11976 166. http://gcc.gnu.org/PR6745
11977 167. http://gcc.gnu.org/PR8096
11978 168. http://gcc.gnu.org/PR8127
11979 169. http://gcc.gnu.org/PR8218
11980 170. http://gcc.gnu.org/PR8287
11981 171. http://gcc.gnu.org/PR8347
11982 172. http://gcc.gnu.org/PR8348
11983 173. http://gcc.gnu.org/PR8391
11984 174. http://gcc.gnu.org/PR6627
11985 175. http://gcc.gnu.org/PR6631
11986 176. http://gcc.gnu.org/PR7102
11987 177. http://gcc.gnu.org/PR7120
11988 178. http://gcc.gnu.org/PR7209
11989 179. http://gcc.gnu.org/PR7515
11990 180. http://gcc.gnu.org/PR7814
11991 181. http://gcc.gnu.org/PR8467
11992 182. http://gcc.gnu.org/PR4890
11993 183. http://gcc.gnu.org/PR7357
11994 184. http://gcc.gnu.org/PR7358
11995 185. http://gcc.gnu.org/PR7602
11996 186. http://gcc.gnu.org/PR7862
11997 187. http://gcc.gnu.org/PR8190
11998 188. http://gcc.gnu.org/PR8524
11999 189. http://gcc.gnu.org/PR5351
12000 190. http://gcc.gnu.org/PR7591
12001 191. http://gcc.gnu.org/PR6845
12002 192. http://gcc.gnu.org/PR7034
12003 193. http://gcc.gnu.org/PR7124
12004 194. http://gcc.gnu.org/PR7174
12005 195. http://gcc.gnu.org/PR7134
12006 196. http://gcc.gnu.org/PR7375
12007 197. http://gcc.gnu.org/PR7390
12008 198. http://gcc.gnu.org/PR6890
12009 199. http://gcc.gnu.org/PR6981
12010 200. http://gcc.gnu.org/PR7242
12011 201. http://gcc.gnu.org/PR7396
12012 202. http://gcc.gnu.org/PR7630
12013 203. http://gcc.gnu.org/PR7693
12014 204. http://gcc.gnu.org/PR7723
12015 205. http://gcc.gnu.org/PR7951
12016 206. http://gcc.gnu.org/PR8146
12017 207. http://gcc.gnu.org/PR5967
12018 208. http://gcc.gnu.org/PR6984
12019 209. http://gcc.gnu.org/PR7114
12020 210. http://gcc.gnu.org/PR7130
12021 211. http://gcc.gnu.org/PR7133
12022 212. http://gcc.gnu.org/PR7380
12023 213. http://gcc.gnu.org/PR8252
12024 214. http://gcc.gnu.org/PR8451
12025 215. http://gcc.gnu.org/PR7250
12026 216. http://gcc.gnu.org/PR6668
12027 217. http://gcc.gnu.org/PR7151
12028 218. http://gcc.gnu.org/PR7335
12029 219. http://gcc.gnu.org/PR7842
12030 220. http://gcc.gnu.org/PR7856
12031 221. http://gcc.gnu.org/PR7967
12032 222. http://gcc.gnu.org/PR7374
12033 223. http://gcc.gnu.org/PR7370
12034 224. http://gcc.gnu.org/PR7409
12035 225. http://gcc.gnu.org/PR8232
12036 226. http://gcc.gnu.org/PR7623
12037 227. http://gcc.gnu.org/PR8314
12038 228. http://gcc.gnu.org/PR761
12039 229. http://gcc.gnu.org/PR5610
12040 230. http://gcc.gnu.org/PR7484
12041 231. http://gcc.gnu.org/PR7531
12042 232. http://gcc.gnu.org/PR8120
12043 233. http://gcc.gnu.org/PR7320
12044 234. http://gcc.gnu.org/PR7470
12045 235. http://gcc.gnu.org/PR6410
12046 236. http://gcc.gnu.org/PR6503
12047 237. http://gcc.gnu.org/PR6642
12048 238. http://gcc.gnu.org/PR7186
12049 239. http://gcc.gnu.org/PR7216
12050 240. http://gcc.gnu.org/PR7220
12051 241. http://gcc.gnu.org/PR7222
12052 242. http://gcc.gnu.org/PR7286
12053 243. http://gcc.gnu.org/PR7442
12054 244. http://gcc.gnu.org/PR7445
12055 245. http://gcc.gnu.org/PR7291
12056 246. http://gcc.gnu.org/onlinedocs/
12057 247. mailto:gcc-help@gcc.gnu.org
12058 248. mailto:gcc@gcc.gnu.org
12059 249. http://gcc.gnu.org/lists.html
12060 250. http://www.fsf.org/
12061 251. http://gcc.gnu.org/about.html
12062 252. http://validator.w3.org/check/referer
12063 ======================================================================
12064 http://gcc.gnu.org/gcc-3.1/index.html
12069 The [1]GNU project and the GCC developers are pleased to announce the
12070 release of GCC 3.1.1.
12072 The links below still apply to GCC 3.1.1.
12076 The [2]GNU project and the GCC developers are pleased to announce the
12077 release of GCC 3.1.
12079 GCC used to stand for the GNU C Compiler, but since the compiler
12080 supports several other languages aside from C, it now stands for the
12081 GNU Compiler Collection.
12083 A list of [3]successful builds is updated as new information becomes
12086 The GCC developers would like to thank the numerous people that have
12087 contributed [4]new features, improvements, bug fixes, and other changes
12088 as well as test results to GCC. This [5]amazing group of volunteers is
12089 what makes GCC successful.
12091 For additional information about GCC please refer to the [6]GCC project
12092 web site or contact the [7]GCC development mailing list.
12094 To obtain GCC please use [8]our mirror sites, or our CVS server.
12095 __________________________________________________________________
12098 For questions related to the use of GCC, please consult these web
12099 pages and the [9]GCC manuals. If that fails, the
12100 [10]gcc-help@gcc.gnu.org mailing list might help. Comments on these
12101 web pages and the development of GCC are welcome on our developer
12102 list at [11]gcc@gcc.gnu.org. All of [12]our lists have public
12105 Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and
12106 distribution of this entire article is permitted in any medium,
12107 provided this notice is preserved.
12109 These pages are [14]maintained by the GCC team. Last modified
12114 1. http://www.gnu.org/
12115 2. http://www.gnu.org/
12116 3. http://gcc.gnu.org/gcc-3.1/buildstat.html
12117 4. http://gcc.gnu.org/gcc-3.1/changes.html
12118 5. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
12119 6. http://gcc.gnu.org/index.html
12120 7. mailto:gcc@gcc.gnu.org
12121 8. http://gcc.gnu.org/mirrors.html
12122 9. http://gcc.gnu.org/onlinedocs/
12123 10. mailto:gcc-help@gcc.gnu.org
12124 11. mailto:gcc@gcc.gnu.org
12125 12. http://gcc.gnu.org/lists.html
12126 13. http://www.fsf.org/
12127 14. http://gcc.gnu.org/about.html
12128 15. http://validator.w3.org/check/referer
12129 ======================================================================
12130 http://gcc.gnu.org/gcc-3.1/changes.html
12131 GCC 3.1 Release Series
12132 Changes, New Features, and Fixes
12134 Additional changes in GCC 3.1.1
12136 * A bug related to how structures and unions are returned has been
12137 fixed for powerpc-*-netbsd*.
12138 * An important bug in the implementation of -fprefetch-loop-arrays
12139 has been fixed. Previously the optimization prefetched random
12140 blocks of memory for most targets except for i386.
12141 * The Java compiler now compiles Java programs much faster and also
12142 works with parallel make.
12143 * Nested functions have been fixed for mips*-*-netbsd*.
12144 * Some missing floating point support routines have beed added for
12146 * This [1]message gives additional information about the bugs fixed
12151 * The -traditional C compiler option has been deprecated and will be
12152 removed in GCC 3.3. (It remains possible to preprocess non-C code
12153 with the traditional preprocessor.)
12154 * The default debugging format for most ELF platforms (including
12155 GNU/Linux and FreeBSD; notable exception is Solaris) has changed
12156 from stabs to DWARF2. This requires GDB 5.1.1 or later.
12158 General Optimizer Improvements
12160 * Jan Hubicka, SuSE Labs, together with Richard Henderson, Red Hat,
12161 and Andreas Jaeger, SuSE Labs, has contributed [2]infrastructure
12162 for profile driven optimizations.
12163 Options -fprofile-arcs and -fbranch-probabilities can now be used
12164 to improve speed of the generated code by profiling the actual
12165 program behaviour on typical runs. In the absence of profile info
12166 the compiler attempts to guess the profile statically.
12167 * [3]SPEC2000 and SPEC95 benchmark suites are now used daily to
12168 monitor performance of the generated code.
12169 According to the SPECInt2000 results on an AMD Athlon CPU, the code
12170 generated by GCC 3.1 is 6% faster on the average (8.2% faster with
12171 profile feedback) compared to GCC 3.0. The code produced by GCC 3.0
12172 is about 2.1% faster compared to 2.95.3. Tests were done using the
12173 -O2 -march=athlon command-line options.
12174 * Alexandre Oliva, of Red Hat, has generalized the tree inlining
12175 infrastructure developed by CodeSourcery, LLC for the C++ front
12176 end, so that it is now used in the C front end too. Inlining
12177 functions as trees exposes them earlier to the compiler, giving it
12178 more opportunities for optimization.
12179 * Support for data prefetching instructions has been added to the GCC
12180 back end and several targets. A new __builtin_prefetch intrinsic is
12181 available to explicitly insert prefetch instructions and
12182 experimental support for loop array prefetching has been added (see
12183 -fprefetch-loop-array documentation).
12184 * Support for emitting debugging information for macros has been
12185 added for DWARF2. It is activated using -g3.
12187 New Languages and Language specific improvements
12191 * A few more [4]ISO C99 features.
12192 * The preprocessor is 10-50% faster than the preprocessor in GCC 3.0.
12193 * The preprocessor's symbol table has been merged with the symbol
12194 table of the C, C++ and Objective-C front ends.
12195 * The preprocessor consumes less memory than the preprocessor in GCC
12196 3.0, often significantly so. On normal input files, it typically
12197 consumes less memory than pre-3.0 cccp-based GCC, too.
12201 * -fhonor-std and -fno-honor-std have been removed. -fno-honor-std
12202 was a workaround to allow std compliant code to work with the
12203 non-std compliant libstdc++-v2. libstdc++-v3 is std compliant.
12204 * The C++ ABI has been fixed so that void (A::*)() const is mangled
12205 as "M1AKFvvE", rather than "MK1AFvvE" as before. This change only
12206 affects pointer to cv-qualified member function types.
12207 * The C++ ABI has been changed to correctly handle this code:
12209 void operator delete[] (void *, size_t);
12212 struct B : public A {
12217 The amount of storage allocated for the array will be greater than
12218 it was in 3.0, in order to store the number of elements in the
12219 array, so that the correct size can be passed to operator delete[]
12220 when the array is deleted. Previously, the value passed to operator
12221 delete[] was unpredictable.
12222 This change will only affect code that declares a two-argument
12223 operator delete[] with a second parameter of type size_t in a base
12224 class, and does not override that definition in a derived class.
12225 * The C++ ABI has been changed so that:
12227 void operator delete[] (void *, size_t);
12228 void operator delete[] (void *);
12231 does not cause unnecessary storage to be allocated when an array of
12232 A objects is allocated.
12233 This change will only affect code that declares both of these forms
12234 of operator delete[], and declared the two-argument form before the
12236 * The C++ ABI has been changed so that when a parameter is passed by
12237 value, any cleanup for that parameter is performed in the caller,
12238 as specified by the ia64 C++ ABI, rather than the called function
12239 as before. As a result, classes with a non-trivial destructor but a
12240 trivial copy constructor will be passed and returned by invisible
12241 reference, rather than by bitwise copy as before.
12242 * G++ now supports the "named return value optimization": for code
12250 G++ will allocate a in the return value slot, so that the return
12251 becomes a no-op. For this to work, all return statements in the
12252 function must return the same variable.
12253 * Improvements to the C++ library are listed in [5]the libstdc++-v3
12258 * Annoying linker warnings (due to incorrect code being generated)
12260 * If a class method cannot be found, the compiler no longer issues a
12261 warning if a corresponding instance method exists in the root
12263 * Forward @protocol declarations have been fixed.
12264 * Loading of categories has been fixed in certain situations (GNU run
12266 * The class lookup in the run-time library has been rewritten so that
12267 class method dispatch is more than twice as fast as it used to be
12268 (GNU run time only).
12272 * libgcj now includes RMI, java.lang.ref.*, javax.naming, and
12274 * Property files and other system resources can be compiled into
12275 executables which use libgcj using the new gcj --resource feature.
12276 * libgcj has been ported to more platforms. In particular there is
12277 now a mostly-functional mingw32 (Windows) target port.
12278 * JNI and CNI invocation interfaces were implemented, so gcj-compiled
12279 Java code can now be called from a C/C++ application.
12280 * gcj can now use builtin functions for certain known methods, for
12282 * gcj can now automatically remove redundant array-store checks in
12284 * The --no-store-checks optimization option was added. This can be
12285 used to omit runtime store checks for code which is known not to
12286 throw ArrayStoreException
12287 * The following third party interface standards were added to libgcj:
12288 org.w3c.dom and org.xml.sax.
12289 * java.security has been merged with GNU Classpath. The new package
12290 is now JDK 1.2 compliant, and much more complete.
12291 * A bytecode verifier was added to the libgcj interpreter.
12292 * java.lang.Character was rewritten to comply with the Unicode 3.0
12293 standard, and improve performance.
12294 * Partial support for many more locales was added to libgcj.
12295 * Socket timeouts have been implemented.
12296 * libgcj has been merged into a single shared library. There are no
12297 longer separate shared libraries for the garbage collector and
12299 * Several performance improvements were made to gcj and libgcj:
12300 + Hash synchronization (thin locks)
12301 + A special allocation path for finalizer-free objects
12302 + Thread-local allocation
12303 + Parallel GC, and other GC tweaks
12307 Fortran improvements are listed in [6]the Fortran documentation.
12311 [7]Ada Core Technologies, Inc, has contributed its GNAT Ada 95 front
12312 end and associated tools. The GNAT compiler fully implements the Ada
12313 language as defined by the ISO/IEC 8652 standard.
12315 Please note that the integration of the Ada front end is still work in
12318 New Targets and Target Specific Improvements
12320 * Hans-Peter Nilsson has contributed a port to [8]MMIX, the CPU
12321 architecture used in new editions of Donald E. Knuth's The Art of
12322 Computer Programming.
12323 * [9]Axis Communications has contributed its port to the CRIS CPU
12324 architecture, used in the ETRAX system-on-a-chip series. See
12325 [10]Axis' developer site for technical information.
12326 * Alexandre Oliva, of Red Hat, has contributed a port to the
12327 [11]SuperH SH5 64-bit RISC microprocessor architecture, extending
12328 the existing SH port.
12329 * UltraSPARC is fully supported in 64-bit mode. The option -m64
12331 * For compatibility with the Sun compiler #pragma redefine_extname
12332 has been implemented on Solaris.
12333 * The x86 back end has had some noticeable work done to it.
12334 + SuSE Labs developers Jan Hubicka, Bo Thorsen and Andreas
12335 Jaeger have contributed a port to the AMD x86-64 architecture.
12336 For more information on x86-64 see [12]http://www.x86-64.org.
12337 + The compiler now supports MMX, 3DNow!, SSE, and SSE2
12338 instructions. Options -mmmx, -m3dnow, -msse, and -msse2 will
12339 enable the respective instruction sets. Intel C++ compatible
12340 MMX/3DNow!/SSE intrinsics are implemented. SSE2 intrinsics
12341 will be added in next major release.
12342 + Following those improvements, targets for Pentium MMX, K6-2,
12343 K6-3, Pentium III, Pentium 4, and Athlon 4 Mobile/XP/MP were
12344 added. Refer to the documentation on -march= and -mcpu=
12345 options for details.
12346 + For those targets that support it, -mfpmath=sse will cause the
12347 compiler to generate SSE/SSE2 instructions for floating point
12348 math instead of x87 instructions. Usually, this will lead to
12349 quicker code -- especially on the Pentium 4. Note that only
12350 scalar floating point instructions are used and GCC does not
12351 exploit SIMD features yet.
12352 + Prefetch support has been added to the Pentium III, Pentium 4,
12353 K6-2, K6-3, and Athlon series.
12354 + Code generated for floating point to integer conversions has
12355 been improved leading to better performance of many 3D
12357 * The PowerPC back end has added 64-bit PowerPC GNU/Linux support.
12358 * C++ support for AIX has been improved.
12359 * Aldy Hernandez, of Red Hat, Inc, has contributed extensions to the
12360 PowerPC port supporting the AltiVec programming model (SIMD). The
12361 support, though presently useful, is experimental and is expected
12362 to stabilize for 3.2. The support is written to conform to
12363 Motorola's AltiVec specs. See -maltivec.
12367 Support for a number of older systems has been declared obsolete in GCC
12368 3.1. Unless there is activity to revive them, the next release of GCC
12369 will have their sources permanently removed.
12371 All configurations of the following processor architectures have been
12373 * MIL-STD-1750A, 1750a-*-*
12374 * AMD A29k, a29k-*-*
12375 * Convex, c*-convex-*
12376 * Clipper, clipper-*-*
12378 * Intel i860, i860-*-*
12379 * Sun picoJava, pj-*-* and pjl-*-*
12380 * Western Electric 32000, we32k-*-*
12382 Most configurations of the following processor architectures have been
12383 declared obsolete, but we are preserving a few systems which may have
12384 active developers. It is unlikely that the remaining systems will
12385 survive much longer unless we see definite signs of port activity.
12386 * Motorola 88000 except
12387 + Generic a.out, m88k-*-aout*
12388 + Generic SVR4, m88k-*-sysv4
12389 + OpenBSD, m88k-*-openbsd*
12391 + NetBSD, ns32k-*-netbsd*
12392 + OpenBSD, ns32k-*-openbsd*.
12394 + OpenBSD, romp-*-openbsd*.
12396 Finally, only some configurations of these processor architectures are
12399 + OSF/1, alpha*-*-osf[123]*. (Digital Unix and Tru64 Unix, aka
12400 alpha*-*-osf[45], are still supported.)
12402 + RISCiX, arm-*-riscix*.
12404 + 386BSD, i?86-*-bsd*
12405 + Chorus, i?86-*-chorusos*
12406 + DG/UX, i?86-*-dgux*
12407 + FreeBSD 1.x, i?86-*-freebsd1.*
12408 + IBM AIX, i?86-*-aix*
12409 + ISC UNIX, i?86-*-isc*
12410 + GNU/Linux with pre-BFD linker, i?86-*-linux*oldld*
12411 + NEXTstep, i?86-next-*
12412 + OSF UNIX, i?86-*-osf1* and i?86-*-osfrose*
12413 + RTEMS/coff, i?86-*-rtemscoff*
12414 + RTEMS/go32, i?86-go32-rtems*
12415 + Sequent/BSD, i?86-sequent-bsd*
12416 + Sequent/ptx before version 3, i?86-sequent-ptx[12]* and
12417 i?86-sequent-sysv3*
12418 + SunOS, i?86-*-sunos*
12420 + Altos, m68[k0]*-altos-*
12421 + Apollo, m68[k0]*-apollo-*
12422 + Apple A/UX, m68[k0]*-apple-*
12423 + Bull, m68[k0]*-bull-*
12424 + Convergent, m68[k0]*-convergent-*
12425 + Generic SVR3, m68[k0]*-*-sysv3*
12426 + ISI, m68[k0]*-isi-*
12427 + LynxOS, m68[k0]*-*-lynxos*
12428 + NEXT, m68[k0]*-next-*
12429 + RTEMS/coff, m68[k0]*-*-rtemscoff*
12430 + Sony, m68[k0]*-sony-*
12432 + DEC Ultrix, mips-*-ultrix* and mips-dec-*
12433 + Generic BSD, mips-*-bsd*
12434 + Generic System V, mips-*-sysv*
12435 + IRIX before version 5, mips-sgi-irix[1234]*
12436 + RiscOS, mips-*-riscos*
12437 + Sony, mips-sony-*
12438 + Tandem, mips-tandem-*
12440 + RTEMS/a.out, sparc-*-rtemsaout*.
12442 Documentation improvements
12444 * The old manual ("Using and Porting the GNU Compiler Collection")
12445 has been replaced by a users manual ("Using the GNU Compiler
12446 Collection") and a separate internals reference manual ("GNU
12447 Compiler Collection Internals").
12448 * More complete and much improved documentation about GCC's internal
12449 representation used by the C and C++ front ends.
12450 * Many cleanups and improvements in general.
12453 For questions related to the use of GCC, please consult these web
12454 pages and the [13]GCC manuals. If that fails, the
12455 [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these
12456 web pages and the development of GCC are welcome on our developer
12457 list at [15]gcc@gcc.gnu.org. All of [16]our lists have public
12460 Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
12461 distribution of this entire article is permitted in any medium,
12462 provided this notice is preserved.
12464 These pages are [18]maintained by the GCC team. Last modified
12469 1. http://gcc.gnu.org/ml/gcc/2002-07/msg01208.html
12470 2. http://gcc.gnu.org/news/profiledriven.html
12471 3. http://gcc.gnu.org/benchmarks/
12472 4. http://gcc.gnu.org/gcc-3.1/c99status.html
12473 5. http://gcc.gnu.org/onlinedocs/libstdc++/faq.html
12474 6. http://gcc.gnu.org/onlinedocs/gcc-3.1.1/g77/News.html
12475 7. http://www.adacore.com/
12476 8. http://www-cs-faculty.stanford.edu/~knuth/mmix.html
12477 9. http://www.axis.com/
12478 10. http://developer.axis.com/
12479 11. http://www.superh.com/
12480 12. http://www.x86-64.org/
12481 13. http://gcc.gnu.org/onlinedocs/
12482 14. mailto:gcc-help@gcc.gnu.org
12483 15. mailto:gcc@gcc.gnu.org
12484 16. http://gcc.gnu.org/lists.html
12485 17. http://www.fsf.org/
12486 18. http://gcc.gnu.org/about.html
12487 19. http://validator.w3.org/check/referer
12488 ======================================================================
12489 http://gcc.gnu.org/gcc-3.0/gcc-3.0.html
12494 The [1]GNU project and the GCC developers are pleased to announce the
12495 release of GCC 3.0.4, which is a bug-fix release for the GCC 3.0
12498 GCC used to stand for the GNU C Compiler, but since the compiler
12499 supports several other languages aside from C, it now stands for the
12500 GNU Compiler Collection.
12502 GCC 3.0.x has several new optimizations, new targets, new languages and
12503 many other new features, relative to GCC 2.95.x. See the [2]new
12504 features page for a more complete list.
12506 A list of [3]successful builds is updated as new information becomes
12509 The GCC developers would like to thank the numerous people that have
12510 contributed new features, test results, bug fixes, etc to GCC. This
12511 [4]amazing group of volunteers is what makes GCC successful.
12513 And finally, we can't in good conscience fail to mention some
12514 [5]caveats to using GCC 3.0.x.
12516 For additional information about GCC please refer to the [6]GCC project
12517 web site or contact the [7]GCC development mailing list.
12519 To obtain GCC please use [8]our mirror sites, or our CVS server.
12520 __________________________________________________________________
12522 Previous 3.0.x Releases
12524 December 20, 2001: GCC 3.0.3 has been released.
12525 October 25, 2001: GCC 3.0.2 has been released.
12526 August 20, 2001: GCC 3.0.1 has been released.
12527 June 18, 2001: GCC 3.0 has been released.
12530 For questions related to the use of GCC, please consult these web
12531 pages and the [9]GCC manuals. If that fails, the
12532 [10]gcc-help@gcc.gnu.org mailing list might help. Comments on these
12533 web pages and the development of GCC are welcome on our developer
12534 list at [11]gcc@gcc.gnu.org. All of [12]our lists have public
12537 Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and
12538 distribution of this entire article is permitted in any medium,
12539 provided this notice is preserved.
12541 These pages are [14]maintained by the GCC team. Last modified
12546 1. http://www.gnu.org/
12547 2. http://gcc.gnu.org/gcc-3.0/features.html
12548 3. http://gcc.gnu.org/gcc-3.0/buildstat.html
12549 4. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
12550 5. http://gcc.gnu.org/gcc-3.0/caveats.html
12551 6. http://gcc.gnu.org/index.html
12552 7. mailto:gcc@gcc.gnu.org
12553 8. http://gcc.gnu.org/mirrors.html
12554 9. http://gcc.gnu.org/onlinedocs/
12555 10. mailto:gcc-help@gcc.gnu.org
12556 11. mailto:gcc@gcc.gnu.org
12557 12. http://gcc.gnu.org/lists.html
12558 13. http://www.fsf.org/
12559 14. http://gcc.gnu.org/about.html
12560 15. http://validator.w3.org/check/referer
12561 ======================================================================
12562 http://gcc.gnu.org/gcc-3.0/features.html
12563 GCC 3.0 New Features
12565 Additional changes in GCC 3.0.4
12567 * GCC 3.0 now supports newer versions of the [1]NetBSD operating
12568 system, which use the ELF object file format, on x86 processors.
12569 * Correct debugging information is generated from functions that have
12570 lines from multiple files (e.g. yacc output).
12571 * A fix for whitespace handling in the -traditional preprocessor,
12572 which can affect Fortran.
12573 * Fixes to the exception handling runtime.
12574 * More fixes for bad code generation in C++.
12575 * A fix for shared library generation under AIX 4.3.
12576 * Documentation updates.
12577 * Port of GCC to Tensilica's Xtensa processor contributed.
12578 * A fix for compiling the PPC Linux kernel (FAT fs wouldn't link).
12580 Additional changes in GCC 3.0.3
12582 * A fix to correct an accidental change to the PowerPC ABI.
12583 * Fixes for bad code generation on a variety of architectures.
12584 * Improvements to the debugging information generated for C++
12586 * Fixes for bad code generation in C++.
12587 * A fix to avoid crashes in the C++ demangler.
12588 * A fix to the C++ standard library to avoid buffer overflows.
12589 * Miscellaneous improvements for a variety of architectures.
12591 Additional changes in GCC 3.0.2
12593 * Fixes for bad code generation during loop unrolling.
12594 * Fixes for bad code generation by the sibling call optimization.
12595 * Minor improvements to x86 code generation.
12596 * Implementation of function descriptors in C++ vtables for IA64.
12597 * Numerous minor bug-fixes.
12599 Additional changes in GCC 3.0.1
12601 * C++ fixes for incorrect code-generation.
12602 * Improved cross-compiling support for the C++ standard library.
12603 * Fixes for some embedded targets that worked in GCC 2.95.3, but not
12605 * Fixes for various exception-handling bugs.
12606 * A port to the S/390 architecture.
12608 General Optimizer Improvements
12610 * [2]Basic block reordering pass.
12611 * New if-conversion pass with support for conditional (predicated)
12613 * New tail call and sibling call elimination optimizations.
12614 * New register renaming pass.
12615 * New (experimental) [3]static single assignment (SSA) representation
12617 * New dead-code elimination pass implemented using the SSA
12619 * [4]Global null pointer test elimination.
12620 * [5]Global code hoisting/unification.
12621 * More builtins and optimizations for stdio.h, string.h and old BSD
12622 functions, as well as for ISO C99 functions.
12623 * New builtin __builtin_expect for giving hints to the branch
12626 New Languages and Language specific improvements
12628 * The GNU Compiler for the Java(TM) language (GCJ) is now integrated
12629 and supported, including the run-time library containing most
12630 common non-GUI Java classes, a bytecode interpreter, and the Boehm
12631 conservative garbage collector. Many bugs have been fixed. GCJ can
12632 compile Java source or Java bytecodes to either native code or Java
12633 class files, and supports native methods written in either the
12634 standard JNI or the more efficient and convenient CNI.
12635 * Here is a [6]partial list of C++ improvements, both new features
12636 and those no longer supported.
12637 * New C++ ABI. On the IA-64 platform GCC is capable of
12638 inter-operating with other IA-64 compilers.
12639 * The new ABI also significantly reduces the size of symbol and debug
12641 * New [7]C++ support library and many C++ bug fixes, vastly improving
12642 our conformance to the ISO C++ standard.
12643 * New [8]inliner for C++.
12644 * Rewritten C preprocessor, integrated into the C, C++ and Objective
12645 C compilers, with very many improvements including ISO C99 support
12646 and [9]improvements to dependency generation.
12647 * Support for more [10]ISO C99 features.
12648 * Many improvements to support for checking calls to format functions
12649 such as printf and scanf, including support for ISO C99 format
12650 features, extensions from the Single Unix Specification and GNU
12651 libc 2.2, checking of strfmon formats and features to assist in
12652 auditing for format string security bugs.
12653 * New warnings for C code that may have undefined semantics because
12654 of violations of sequence point rules in the C standard (such as a
12655 = a++;, a[n] = b[n++]; and a[i++] = i;), included in -Wall.
12656 * Additional warning option -Wfloat-equal.
12657 * Improvements to -Wtraditional.
12658 * Fortran improvements are listed in [11]the Fortran documentation.
12660 New Targets and Target Specific Improvements
12662 * New x86 back-end, generating much improved code.
12663 * Support for a generic i386-elf target contributed.
12664 * New option to emit x86 assembly code using Intel style syntax
12666 * HPUX 11 support contributed.
12667 * Improved PowerPC code generation, including scheduled prologue and
12669 * Port of GCC to Intel's IA-64 processor contributed.
12670 * Port of GCC to Motorola's MCore 210 and 340 contributed.
12671 * New unified back-end for Arm, Thumb and StrongArm contributed.
12672 * Port of GCC to Intel's XScale processor contributed.
12673 * Port of GCC to Atmel's AVR microcontrollers contributed.
12674 * Port of GCC to Mitsubishi's D30V processor contributed.
12675 * Port of GCC to Matsushita's AM33 processor (a member of the MN10300
12676 processor family) contributed.
12677 * Port of GCC to Fujitsu's FR30 processor contributed.
12678 * Port of GCC to Motorola's 68HC11 and 68HC12 processors contributed.
12679 * Port of GCC to Sun's picoJava processor core contributed.
12681 Documentation improvements
12683 * Substantially rewritten and improved C preprocessor manual.
12684 * Many improvements to other documentation.
12685 * Manpages for gcc, cpp and gcov are now generated automatically from
12686 the master Texinfo manual, eliminating the problem of manpages
12687 being out of date. (The generated manpages are only extracts from
12688 the full manual, which is provided in Texinfo form, from which
12689 info, HTML, other formats and a printed manual can be generated.)
12690 * Generated info files are included in the release tarballs alongside
12691 their Texinfo sources, avoiding problems on some platforms with
12692 building makeinfo as part of the GCC distribution.
12694 Other significant improvements
12696 * Garbage collection used internally by the compiler for most memory
12697 allocation instead of obstacks.
12698 * Lengauer and Tarjan algorithm used for computing dominators in the
12699 CFG. This algorithm can be significantly faster and more space
12700 efficient than our older algorithm.
12701 * gccbug script provided to assist in submitting bug reports to our
12702 bug tracking system. (Bug reports previously submitted directly to
12703 our mailing lists, for which you received no bug tracking number,
12704 should be submitted again using gccbug if you can reproduce the
12705 problem with GCC 3.0.)
12706 * The internal libgcc library is [12]built as a shared library on
12707 systems that support it.
12708 * Extensive testsuite included with GCC, with many new tests. In
12709 addition to tests for GCC bugs that have been fixed, many tests
12710 have been added for language features, compiler warnings and
12712 * Additional language-independent warning options -Wpacked, -Wpadded,
12713 -Wunreachable-code and -Wdisabled-optimization.
12714 * Target-independent options -falign-functions, -falign-loops and
12717 Plus a great many bug fixes and almost all the [13]features found in
12721 For questions related to the use of GCC, please consult these web
12722 pages and the [14]GCC manuals. If that fails, the
12723 [15]gcc-help@gcc.gnu.org mailing list might help. Comments on these
12724 web pages and the development of GCC are welcome on our developer
12725 list at [16]gcc@gcc.gnu.org. All of [17]our lists have public
12728 Copyright (C) [18]Free Software Foundation, Inc. Verbatim copying and
12729 distribution of this entire article is permitted in any medium,
12730 provided this notice is preserved.
12732 These pages are [19]maintained by the GCC team. Last modified
12737 1. http://www.netbsd.org/
12738 2. http://gcc.gnu.org/news/reorder.html
12739 3. http://gcc.gnu.org/news/ssa.html
12740 4. http://gcc.gnu.org/news/null.html
12741 5. http://gcc.gnu.org/news/unify.html
12742 6. http://gcc.gnu.org/gcc-3.0/c++features.html
12743 7. http://gcc.gnu.org/libstdc++/
12744 8. http://gcc.gnu.org/news/inlining.html
12745 9. http://gcc.gnu.org/news/dependencies.html
12746 10. http://gcc.gnu.org/gcc-3.0/c99status.html
12747 11. http://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html
12748 12. http://gcc.gnu.org/gcc-3.0/libgcc.html
12749 13. http://gcc.gnu.org/gcc-2.95/features.html
12750 14. http://gcc.gnu.org/onlinedocs/
12751 15. mailto:gcc-help@gcc.gnu.org
12752 16. mailto:gcc@gcc.gnu.org
12753 17. http://gcc.gnu.org/lists.html
12754 18. http://www.fsf.org/
12755 19. http://gcc.gnu.org/about.html
12756 20. http://validator.w3.org/check/referer
12757 ======================================================================
12758 http://gcc.gnu.org/gcc-3.0/caveats.html
12761 * -fstrict-aliasing is now part of -O2 and higher optimization
12762 levels. This allows the compiler to assume the strictest aliasing
12763 rules applicable to the language being compiled. For C and C++,
12764 this activates optimizations based on the type of expressions. This
12765 optimization may thus break old, non-compliant code.
12766 * Enumerations are now properly promoted to int in function
12767 parameters and function returns. Normally this change is not
12768 visible, but when using -fshort-enums this is an ABI change.
12769 * The undocumented extension that allowed C programs to have a label
12770 at the end of a compound statement has been deprecated and may be
12771 removed in a future version. Programs that now generate a warning
12772 about this may be fixed by adding a null statement (a single
12773 semicolon) after the label.
12774 * The poorly documented extension that allowed string constants in C,
12775 C++ and Objective C to contain unescaped newlines has been
12776 deprecated and may be removed in a future version. Programs using
12777 this extension may be fixed in several ways: the bare newline may
12778 be replaced by \n, or preceded by \n\, or string concatenation may
12779 be used with the bare newline preceded by \n" and " placed at the
12780 start of the next line.
12781 * The Chill compiler is not included in GCC 3.0, because of the lack
12782 of a volunteer to convert it to use garbage collection.
12783 * Certain non-standard iostream methods from earlier versions of
12784 libstdc++ are not included in libstdc++ v3, i.e. filebuf::attach,
12785 ostream::form, and istream::gets.
12786 * The new C++ ABI is not yet fully supported by current (as of
12787 2001-07-01) releases and development versions of GDB, or any
12788 earlier versions. There is a problem setting breakpoints by line
12789 number, and other related issues that have been fixed in GCC 3.0
12790 but not yet handled in GDB:
12791 [1]http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
12794 For questions related to the use of GCC, please consult these web
12795 pages and the [2]GCC manuals. If that fails, the
12796 [3]gcc-help@gcc.gnu.org mailing list might help. Comments on these
12797 web pages and the development of GCC are welcome on our developer
12798 list at [4]gcc@gcc.gnu.org. All of [5]our lists have public archives.
12800 Copyright (C) [6]Free Software Foundation, Inc. Verbatim copying and
12801 distribution of this entire article is permitted in any medium,
12802 provided this notice is preserved.
12804 These pages are [7]maintained by the GCC team. Last modified
12809 1. http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
12810 2. http://gcc.gnu.org/onlinedocs/
12811 3. mailto:gcc-help@gcc.gnu.org
12812 4. mailto:gcc@gcc.gnu.org
12813 5. http://gcc.gnu.org/lists.html
12814 6. http://www.fsf.org/
12815 7. http://gcc.gnu.org/about.html
12816 8. http://validator.w3.org/check/referer
12817 ======================================================================
12818 http://gcc.gnu.org/gcc-2.95/index.html
12821 March 16, 2001: The GNU project and the GCC developers are pleased to
12822 announce the release of GCC version 2.95.3.
12836 July 31, 1999. This is the first release of GCC since the April
12837 1999 GCC/EGCS reunification and includes nearly a year's worth
12838 of new development and bugfixes.
12840 References and Acknowledgements
12842 GCC used to stand for the GNU C Compiler, but since the compiler
12843 supports several other languages aside from C, it now stands for the
12844 GNU Compiler Collection.
12846 The whole suite has been extensively [1]regression tested and
12847 [2]package tested. It should be reliable and suitable for widespread
12850 The compiler has several new optimizations, new targets, new languages
12851 and other new features. See the [3]new features page for a more
12852 complete list of new features found in the GCC 2.95 releases.
12854 The sources include installation instructions in both HTML and
12855 plaintext forms in the install directory in the distribution. However,
12856 the most up to date [4]installation instructions and [5]build/test
12857 status are on the web pages. We will update those pages as new
12858 information becomes available.
12860 The GCC developers would like to thank the numerous people that have
12861 contributed new features, test results, bugfixes, etc to GCC. This
12862 [6]amazing group of volunteers is what makes GCC successful.
12864 And finally, we can't in good conscience fail to mention some
12865 [7]caveats to using GCC 2.95.
12867 Download GCC 2.95 from one of our many [8]mirror sites.
12869 For additional information about GCC please see the [9]GCC project web
12870 server or contact the [10]GCC development mailing list.
12873 For questions related to the use of GCC, please consult these web
12874 pages and the [11]GCC manuals. If that fails, the
12875 [12]gcc-help@gcc.gnu.org mailing list might help. Comments on these
12876 web pages and the development of GCC are welcome on our developer
12877 list at [13]gcc@gcc.gnu.org. All of [14]our lists have public
12880 Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and
12881 distribution of this entire article is permitted in any medium,
12882 provided this notice is preserved.
12884 These pages are [16]maintained by the GCC team. Last modified
12889 1. http://gcc.gnu.org/gcc-2.95/regress.html
12890 2. http://gcc.gnu.org/gcc-2.95/othertest.html
12891 3. http://gcc.gnu.org/gcc-2.95/features.html
12892 4. http://gcc.gnu.org/install/
12893 5. http://gcc.gnu.org/gcc-2.95/buildstat.html
12894 6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
12895 7. http://gcc.gnu.org/gcc-2.95/caveats.html
12896 8. http://gcc.gnu.org/mirrors.html
12897 9. http://gcc.gnu.org/index.html
12898 10. mailto:gcc@gcc.gnu.org
12899 11. http://gcc.gnu.org/onlinedocs/
12900 12. mailto:gcc-help@gcc.gnu.org
12901 13. mailto:gcc@gcc.gnu.org
12902 14. http://gcc.gnu.org/lists.html
12903 15. http://www.fsf.org/
12904 16. http://gcc.gnu.org/about.html
12905 17. http://validator.w3.org/check/referer
12906 ======================================================================
12907 http://gcc.gnu.org/gcc-2.95/features.html
12908 GCC 2.95 New Features
12910 * General Optimizer Improvements:
12911 + [1]Localized register spilling to improve speed and code
12912 density especially on small register class machines.
12913 + [2]Global CSE using lazy code motion algorithms.
12914 + [3]Improved global constant/copy propagation.
12915 + [4]Improved control flow graph analysis and manipulation.
12916 + [5]Local dead store elimination.
12917 + [6]Memory Load hoisting/store sinking in loops.
12918 + [7]Type based alias analysis is enabled by default. Note this
12919 feature will expose bugs in the Linux kernel. Please refer to
12920 the FAQ (as shipped with GCC 2.95) for additional information
12922 + Major revamp of GIV detection, combination and simplification
12923 to improve loop performance.
12924 + Major improvements to register allocation and reloading.
12925 * New Languages and Language specific improvements
12926 + [8]Many C++ improvements.
12927 + [9]Many Fortran improvements.
12928 + [10]Java front-end has been integrated. [11]runtime library is
12929 available separately.
12930 + [12]ISO C99 support
12931 + [13]Chill front-end and runtime has been integrated.
12932 + Boehm garbage collector support in libobjc.
12933 + More support for various pragmas which appear in vendor
12935 * New Targets and Target Specific Improvements
12936 + [14]SPARC backend rewrite.
12937 + -mschedule=8000 will optimize code for PA8000 class
12938 processors; -mpa-risc-2-0 will generate code for PA2.0
12940 + Various micro-optimizations for the ia32 port. K6
12942 + Compiler will attempt to align doubles in the stack on the
12944 + Alpha EV6 support
12946 + RS6000/PowerPC: -mcpu=401 was added as an alias for -mcpu=403.
12947 -mcpu=e603e was added to do -mcpu=603e and -msoft-float.
12952 + Support for new systems (OpenBSD, FreeBSD, UWIN, Interix,
12954 + vxWorks targets include support for vxWorks threads
12955 + StrongARM 110 and ARM9 support added. ARM Scheduling
12956 parameters rewritten.
12957 + Various changes to the MIPS port to avoid assembler macros,
12958 which in turn improves performance
12959 + Various performance improvements to the i960 port.
12960 + Major rewrite of ns32k port
12961 * Other significant improvements
12962 + [15]Ability to dump cfg information and display it using vcg.
12963 + The new faster scheme for fixing vendor header files is
12964 enabled by default.
12965 + Experimental internationalization support.
12966 + multibyte character support
12967 + Some compile-time speedups for pathological problems
12968 + Better support for complex types
12969 * Plus the usual mountain of bugfixes
12970 * Core compiler is based on the gcc2 development tree from Sept 30,
12971 1998, so we have all of the [16]features found in GCC 2.8.
12973 Additional Changes in GCC 2.95.1
12975 * Generic bugfixes and improvements
12976 + Various documentation fixes related to the GCC/EGCS merger.
12977 + Fix memory management bug which could lead to spurious aborts,
12978 core dumps or random parsing errors in the compiler.
12979 + Fix a couple bugs in the dwarf1 and dwarf2 debug record
12981 + Fix infinite loop in the CSE optimizer.
12982 + Avoid undefined behavior in compiler FP emulation code
12983 + Fix install problem when prefix is overridden on the make
12985 + Fix problem with unwanted installation of assert.h on some
12987 + Fix problem with finding the wrong assembler in a single tree
12989 + Avoid increasing the known alignment of a register that is
12990 already known to be a pointer.
12991 * Platform specific bugfixes and improvements
12992 + Codegen bugfix for prologue/epilogue for cpu32 target.
12993 + Fix long long code generation bug for the Coldfire target.
12994 + Fix various aborts in the SH compiler.
12995 + Fix bugs in libgcc support library for the SH.
12996 + Fix alpha ev6 code generation bug.
12997 + Fix problems with EXIT_SUCCESS/EXIT_FAILURE redefinitions on
12999 + Fix -fpic code generation bug for rs6000/ppc svr4 targets.
13000 + Fix varargs/stdarg code generation bug for rs6000/ppc svr4
13002 + Fix weak symbol handling for rs6000/ppc svr4 targets.
13003 + Fix various problems with 64bit code generation for the
13005 + Fix codegen bug which caused tetex to be mis-compiled on the
13007 + Fix compiler abort in new cfg code exposed by x86 port.
13008 + Fix out of range array reference in code convert flat
13009 registers to the x87 stacked FP register file.
13010 + Fix minor vxworks configuration bug.
13011 + Fix return type of bsearch for SunOS 4.x.
13012 * Language & Runtime specific fixes.
13013 + The G++ signature extension has been deprecated. It will be
13014 removed in the next major release of G++. Use of signatures
13015 will result in a warning from the compiler.
13016 + Several bugs relating to templates and namespaces were fixed.
13017 + A bug that caused crashes when combining templates with -g on
13018 DWARF1 platforms was fixed.
13019 + Pointers-to-members, virtual functions, and multiple
13020 inheritance should now work together correctly.
13021 + Some code-generation bugs relating to function try blocks were
13023 + G++ is a little bit more lenient with certain archaic
13024 constructs than in GCC 2.95.
13025 + Fix to prevent shared library version #s from bring truncated
13027 + Fix missing std:: in the libstdc++ library.
13028 + Fix stream locking problems in libio.
13029 + Fix problem in java compiler driver.
13031 Additional Changes in GCC 2.95.2
13033 The -fstrict-aliasing is not enabled by default for GCC 2.95.2. While
13034 the optimizations performed by -fstrict-aliasing are valid according to
13035 the C and C++ standards, the optimization have caused some problems,
13036 particularly with old non-conforming code.
13038 The GCC developers are experimenting with ways to warn users about code
13039 which violates the C/C++ standards, but those warnings are not ready
13040 for widespread use at this time. Rather than wait for those warnings
13041 the GCC developers have chosen to disable -fstrict-aliasing by default
13042 for the GCC 2.95.2 release.
13044 We strongly encourage developers to find and fix code which violates
13045 the C/C++ standards as -fstrict-aliasing may be enabled by default in
13046 future releases. Use the option -fstrict-aliasing to re-enable these
13048 * Generic bugfixes and improvements
13049 + Fix incorrectly optimized memory reference in global common
13050 subexpression elimination (GCSE) optimization pass.
13051 + Fix code generation bug in regmove.c in which it could
13052 incorrectly change a "const" value.
13053 + Fix bug in optimization of conditionals involving volatile
13055 + Avoid over-allocation of stack space for some procedures.
13056 + Fixed bug in the compiler which caused incorrect optimization
13057 of an obscure series of bit manipulations, shifts and
13059 + Fixed register allocator bug which caused teTeX to be
13060 mis-compiled on SPARC targets.
13061 + Avoid incorrect optimization of degenerate case statements for
13062 certain targets such as the ARM.
13063 + Fix out of range memory reference in the jump optimizer.
13064 + Avoid dereferencing null pointer in fix-header.
13065 + Fix test for GCC specific features so that it is possible to
13066 bootstrap with gcc-2.6.2 and older versions of GCC.
13067 + Fix typo in scheduler which could potentially cause out of
13068 range memory accesses.
13069 + Avoid incorrect loop reversal which caused incorrect code for
13070 certain loops on PowerPC targets.
13071 + Avoid incorrect optimization of switch statements on certain
13072 targets (for example the ARM).
13073 * Platform specific bugfixes and improvements
13074 + Work around bug in Sun V5.0 compilers which caused bootstrap
13075 comparison failures on SPARC targets.
13076 + Fix SPARC backend bug which caused aborts in final.c.
13077 + Fix sparc-hal-solaris2* configuration fragments.
13078 + Fix bug in sparc block profiling.
13079 + Fix obscure code generation bug for the PARISC targets.
13080 + Define __STDC_EXT__ for HPUX configurations.
13081 + Various POWERPC64 code generation bugfixes.
13082 + Fix abort for PPC targets using ELF (ex GNU/Linux).
13083 + Fix collect2 problems for AIX targets.
13084 + Correct handling of .file directive for PPC targets.
13085 + Fix bug in fix_trunc x86 patterns.
13086 + Fix x86 port to correctly pop the FP stack for functions that
13087 return structures in memory.
13088 + Fix minor bug in strlen x86 pattern.
13089 + Use stabs debugging instead of dwarf1 for x86-solaris targets.
13090 + Fix template repository code to handle leading underscore in
13092 + Fix weak/weak alias support for OpenBSD.
13093 + GNU/Linux for the ARM has C++ compatible include files.
13094 * Language & Runtime specific fixes.
13095 + Fix handling of constructor attribute in the C front-end which
13096 caused problems building the Chill runtime library on some
13098 + Fix minor problem merging type qualifiers in the C front-end.
13099 + Fix aliasing bug for pointers and references (C/C++).
13100 + Fix incorrect "non-constant initializer bug" when -traditional
13101 or -fwritable-strings is enabled.
13102 + Fix build error for Chill front-end on SunOS.
13103 + Do not complain about duplicate instantiations when using
13105 + Fix array bounds handling in C++ front-end which caused
13106 problems with dwarf debugging information in some
13108 + Fix minor namespace problem.
13109 + Fix problem linking java programs.
13111 Additional Changes in GCC 2.95.3
13113 * Generic bugfixes and improvements
13114 + Fix numerous problems that caused incorrect optimization in
13115 the register reloading code.
13116 + Fix numerous problems that caused incorrect optimization in
13117 the loop optimizer.
13118 + Fix aborts in the functions build_insn_chain and scan_loops
13119 under some circumstances.
13120 + Fix an alias analysis bug.
13121 + Fix an infinite compilation bug in the combiner.
13122 + A few problems with complex number support have been fixed.
13123 + It is no longer possible for gcc to act as a fork bomb when
13124 installed incorrectly.
13125 + The -fpack-struct option should be recognized now.
13126 + Fixed a bug that caused incorrect code to be generated due to
13127 a lost stack adjustment.
13128 * Platform specific bugfixes and improvements
13129 + Support building ARM toolchains hosted on Windows.
13130 + Fix attribute calculations in ARM toolchains.
13131 + arm-linux support has been improved.
13132 + Fix a PIC failure on sparc targets.
13133 + On ix86 targets, the regparm attribute should now work
13135 + Several updates for the h8300 port.
13136 + Fix problem building libio with glibc 2.2.
13139 For questions related to the use of GCC, please consult these web
13140 pages and the [17]GCC manuals. If that fails, the
13141 [18]gcc-help@gcc.gnu.org mailing list might help. Comments on these
13142 web pages and the development of GCC are welcome on our developer
13143 list at [19]gcc@gcc.gnu.org. All of [20]our lists have public
13146 Copyright (C) [21]Free Software Foundation, Inc. Verbatim copying and
13147 distribution of this entire article is permitted in any medium,
13148 provided this notice is preserved.
13150 These pages are [22]maintained by the GCC team. Last modified
13155 1. http://gcc.gnu.org/news/spill.html
13156 2. http://gcc.gnu.org/news/lcm.html
13157 3. http://gcc.gnu.org/news/cprop.html
13158 4. http://gcc.gnu.org/news/cfg.html
13159 5. http://gcc.gnu.org/news/dse.html
13160 6. http://gcc.gnu.org/news/hoist.html
13161 7. http://gcc.gnu.org/news/alias.html
13162 8. http://gcc.gnu.org/gcc-2.95/c++features.html
13163 9. http://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html
13164 10. http://gcc.gnu.org/java/gcj-announce.txt
13165 11. http://gcc.gnu.org/news/javaannounce.html
13166 12. http://gcc.gnu.org/c99status.html
13167 13. http://gcc.gnu.org/news/chill.html
13168 14. http://gcc.gnu.org/news/sparc.html
13169 15. http://gcc.gnu.org/news/egcs-vcg.html
13170 16. http://gcc.gnu.org/egcs-1.0/features-2.8.html
13171 17. http://gcc.gnu.org/onlinedocs/
13172 18. mailto:gcc-help@gcc.gnu.org
13173 19. mailto:gcc@gcc.gnu.org
13174 20. http://gcc.gnu.org/lists.html
13175 21. http://www.fsf.org/
13176 22. http://gcc.gnu.org/about.html
13177 23. http://validator.w3.org/check/referer
13178 ======================================================================
13179 http://gcc.gnu.org/gcc-2.95/caveats.html
13182 * GCC 2.95 will issue an error for invalid asm statements that had
13183 been silently accepted by earlier versions of the compiler. This is
13184 particularly noticeable when compiling older versions of the Linux
13185 kernel (2.0.xx). Please refer to the FAQ (as shipped with GCC 2.95)
13186 for more information on this issue.
13187 * GCC 2.95 implements type based alias analysis to disambiguate
13188 memory references. Some programs, particularly the Linux kernel
13189 violate ANSI/ISO aliasing rules and therefore may not operate
13190 correctly when compiled with GCC 2.95. Please refer to the FAQ (as
13191 shipped with GCC 2.95) for more information on this issue.
13192 * GCC 2.95 has a known bug in its handling of complex variables for
13193 64bit targets. Instead of silently generating incorrect code, GCC
13194 2.95 will issue a fatal error for situations it can not handle.
13195 This primarily affects the Fortran community as Fortran makes more
13196 use of complex variables than C or C++.
13197 * GCC 2.95 has an integrated libstdc++, but does not have an
13198 integrated libg++. Furthermore old libg++ releases will not work
13199 with GCC 2.95. You can retrieve a recent copy of libg++ from the
13201 Note most C++ programs only need libstdc++.
13202 * Exception handling may not work with shared libraries, particularly
13203 on alphas, hppas, rs6000/powerpc and mips based platforms.
13204 Exception handling is known to work on x86 GNU/Linux platforms with
13206 * In general, GCC 2.95 is more rigorous about rejecting invalid C++
13207 code or deprecated C++ constructs than G++ 2.7, G++ 2.8, EGCS 1.0,
13208 or EGCS 1.1. As a result it may be necessary to fix C++ code before
13209 it will compile with GCC 2.95.
13210 * G++ is also converting toward the ISO C++ standard; as a result
13211 code which was previously valid (and thus accepted by other
13212 compilers and older versions of g++) may no longer be accepted. The
13213 flag -fpermissive may allow some non-conforming code to compile
13215 * GCC 2.95 compiled C++ code is not binary compatible with EGCS
13216 1.1.x, EGCS 1.0.x or GCC 2.8.x.
13217 * GCC 2.95 does not have changes from the GCC 2.8 tree that were made
13218 between Sept 30, 1998 and April 30, 1999 (the official end of the
13219 GCC 2.8 project). Future GCC releases will include all the changes
13220 from the defunct GCC 2.8 sources.
13223 For questions related to the use of GCC, please consult these web
13224 pages and the [2]GCC manuals. If that fails, the
13225 [3]gcc-help@gcc.gnu.org mailing list might help. Comments on these
13226 web pages and the development of GCC are welcome on our developer
13227 list at [4]gcc@gcc.gnu.org. All of [5]our lists have public archives.
13229 Copyright (C) [6]Free Software Foundation, Inc. Verbatim copying and
13230 distribution of this entire article is permitted in any medium,
13231 provided this notice is preserved.
13233 These pages are [7]maintained by the GCC team. Last modified
13238 1. ftp://gcc.gnu.org/pub/gcc/infrastructure/libg++-2.8.1.3.tar.gz
13239 2. http://gcc.gnu.org/onlinedocs/
13240 3. mailto:gcc-help@gcc.gnu.org
13241 4. mailto:gcc@gcc.gnu.org
13242 5. http://gcc.gnu.org/lists.html
13243 6. http://www.fsf.org/
13244 7. http://gcc.gnu.org/about.html
13245 8. http://validator.w3.org/check/referer
13246 ======================================================================
13247 http://gcc.gnu.org/egcs-1.1/index.html
13250 September 3, 1998: We are pleased to announce the release of EGCS 1.1.
13251 December 1, 1998: We are pleased to announce the release of EGCS 1.1.1.
13252 March 15, 1999: We are pleased to announce the release of EGCS 1.1.2.
13254 EGCS is a free software project to further the development of the GNU
13255 compilers using an open development environment.
13257 EGCS 1.1 is a major new release of the EGCS compiler system. It has
13258 been [1]extensively tested and is believed to be stable and suitable
13259 for widespread use.
13261 EGCS 1.1 is based on an June 6, 1998 snapshot of the GCC 2.8
13262 development sources; it contains all of the new features found in GCC
13263 2.8.1 as well as all new development from GCC up to June 6, 1998.
13265 EGCS 1.1 also contains many improvements and features not found in GCC
13266 or in older versions of EGCS:
13267 * Global common subexpression elimination and global constant/copy
13268 propagation (aka [2]gcse)
13269 * Ongoing improvements to the [3]alias analysis support to allow for
13270 better optimizations throughout the compiler.
13271 * Vastly improved [4]C++ compiler and integrated C++ runtime
13273 * Fixes for the /tmp symlink race security problems.
13274 * New targets including mips16, arm-thumb and 64 bit PowerPC.
13275 * Improvements to GNU Fortran (g77) compiler and runtime library made
13276 since g77 version 0.5.23.
13278 See the [5]new features page for a more complete list of new features
13279 found in EGCS 1.1 releases.
13281 EGCS 1.1.1 is a minor update to fix several serious problems in EGCS
13283 * General improvements and fixes
13284 + Avoid some stack overflows when compiling large functions.
13285 + Avoid incorrect loop invariant code motions.
13286 + Fix some core dumps on Linux kernel code.
13287 + Bring back the imake -Di386 and friends fix from EGCS 1.0.2.
13288 + Fix code generation problem in gcse.
13289 + Various documentation related fixes.
13290 * g++/libstdc++ improvements and fixes
13291 + MT safe EH fix for setjmp/longjmp based exception handling.
13292 + Fix a few bad interactions between optimization and exception
13294 + Fixes for demangling of template names starting with "__".
13295 + Fix a bug that would fail to run destructors in some cases
13297 + Fix 'new' of classes with virtual bases.
13298 + Fix crash building Qt on the Alpha.
13299 + Fix failure compiling WIFEXITED macro on GNU/Linux.
13300 + Fix some -frepo failures.
13301 * g77 and libf2c improvements and fixes
13302 + Various documentation fixes.
13303 + Avoid compiler crash on RAND intrinsic.
13304 + Fix minor bugs in makefiles exposed by BSD make programs.
13305 + Define _XOPEN_SOURCE for libI77 build to avoid potential
13306 problems on some 64-bit systems.
13307 + Fix problem with implicit endfile on rewind.
13308 + Fix spurious recursive I/O errors.
13309 * platform specific improvements and fixes
13310 + Match all versions of UnixWare7.
13311 + Do not assume x86 SVR4 or UnixWare targets can handle stabs.
13312 + Fix PPC/RS6000 LEGITIMIZE_ADDRESS macro and bug in conversion
13313 from unsigned ints to double precision floats.
13314 + Fix ARM ABI issue with NetBSD.
13315 + Fix a few arm code generation bugs.
13316 + Fixincludes will fix additional broken SCO OpenServer header
13318 + Fix a m68k backend bug which caused invalid offsets in reg+d
13320 + Fix problems with 64bit AIX 4.3 support.
13321 + Fix handling of long longs for varargs/stdarg functions on the
13323 + Minor fixes to CPP predefines for Windows.
13324 + Fix code generation problems with gpr<->fpr copies for 64bit
13326 + Fix a few coldfire code generation bugs.
13327 + Fix some more header file problems on SunOS 4.x.
13328 + Fix assert.h handling for RTEMS.
13329 + Fix Windows handling of TREE_SYMBOL_REFERENCED.
13330 + Fix x86 compiler abort in reg-stack pass.
13331 + Fix cygwin/windows problem with section attributes.
13332 + Fix Alpha code generation problem exposed by SMP Linux
13334 + Fix typo in m68k 32->64bit integer conversion.
13335 + Make sure target libraries build with -fPIC for PPC & Alpha
13338 EGCS 1.1.2 is a minor update to fix several serious problems in EGCS
13340 * General improvements and fixes
13341 + Fix bug in loop optimizer which caused the SPARC (and
13342 potentially other) ports to segfault.
13343 + Fix infinite recursion in alias analysis and combiner code.
13344 + Fix bug in regclass preferencing.
13345 + Fix incorrect loop reversal which caused incorrect code to be
13346 generated for several targets.
13347 + Fix return value for builtin memcpy.
13348 + Reduce compile time for certain loops which exposed quadratic
13349 behavior in the loop optimizer.
13350 + Fix bug which caused volatile memory to be written multiple
13351 times when only one write was needed/desired.
13352 + Fix compiler abort in caller-save.c
13353 + Fix combiner bug which caused incorrect code generation for
13354 certain division by constant operations.
13355 + Fix incorrect code generation due to a bug in range check
13357 + Fix incorrect code generation due to mis-handling of clobbered
13359 + Fix compiler abort/segfault due to incorrect register
13360 splitting when unrolling loops.
13361 + Fix code generation involving autoincremented addresses with
13363 + Work around bug in the scheduler which caused qt to be
13364 mis-compiled on some platforms.
13365 + Fix code generation problems with -fshort-enums.
13366 + Tighten security for temporary files.
13367 + Improve compile time for codes which make heavy use of
13368 overloaded functions.
13369 + Fix multiply defined constructor/destructor symbol problems.
13370 + Avoid setting bogus RPATH environment variable during
13372 + Avoid GNU-make dependencies in the texinfo subdir.
13373 + Install CPP wrapper script in $(prefix)/bin if --enable-cpp.
13374 --enable-cpp=<dirname> can be used to specify an additional
13375 install directory for the cpp wrapper script.
13376 + Fix CSE bug which caused incorrect label-label refs to appear
13378 + Avoid linking in EH routines from libgcc if they are not
13380 + Avoid obscure bug in aliasing code.
13381 + Fix bug in weak symbol handling.
13382 * Platform-specific improvements and fixes
13383 + Fix detection of PPro/PII on Unixware 7.
13384 + Fix compiler segfault when building spec99 and other programs
13386 + Fix code-generation bugs for integer and floating point
13387 conditional move instructions on the PPro/PII.
13388 + Use fixincludes to fix byteorder problems on i?86-*-sysv.
13389 + Fix build failure for the arc port.
13390 + Fix floating point format configuration for i?86-gnu port.
13391 + Fix problems with hppa1.0-hp-hpux10.20 configuration when
13392 threads are enabled.
13393 + Fix coldfire code generation bugs.
13394 + Fix "unrecognized insn" problems for Alpha and PPC ports.
13395 + Fix h8/300 code generation problem with floating point values
13397 + Fix unrecognized insn problems for the m68k port.
13398 + Fix namespace-pollution problem for the x86 port.
13399 + Fix problems with old assembler on x86 NeXT systems.
13400 + Fix PIC code-generation problems for the SPARC port.
13401 + Fix minor bug with LONG_CALLS in PowerPC SVR4 support.
13402 + Fix minor ISO namespace violation in Alpha varargs/stdarg
13404 + Fix incorrect "braf" instruction usage for the SH port.
13405 + Fix minor bug in va-sh which prevented its use with -ansi.
13406 + Fix problems recognizing and supporting FreeBSD.
13407 + Handle OpenBSD systems correctly.
13408 + Minor fixincludes fix for Digital UNIX 4.0B.
13409 + Fix problems with ctors/dtors in SCO shared libraries.
13410 + Abort instead of generating incorrect code for PPro/PII
13411 floating point conditional moves.
13412 + Avoid multiply defined symbols on GNU/Linux systems using
13414 + Fix abort in alpha compiler.
13415 * Fortran-specific fixes
13416 + Fix the IDate intrinsic (VXT) (in libg2c) so the returned year
13417 is in the documented, non-Y2K-compliant range of 0-99, instead
13418 of being returned as 100 in the year 2000.
13419 + Fix the `Date_and_Time' intrinsic (in libg2c) to return the
13420 milliseconds value properly in Values(8).
13421 + Fix the `LStat' intrinsic (in libg2c) to return device-ID
13422 information properly in SArray(7).
13424 Each release includes installation instructions in both HTML and
13425 plaintext forms (see the INSTALL directory in the toplevel directory of
13426 the distribution). However, we also keep the most up to date
13427 [6]installation instructions and [7]build/test status on our web page.
13428 We will update those pages as new information becomes available.
13430 The EGCS project would like to thank the numerous people that have
13431 contributed new features, test results, bugfixes, etc. This [8]amazing
13432 group of volunteers is what makes EGCS successful.
13434 And finally, we can't in good conscience fail to mention some
13435 [9]caveats to using EGCS 1.1.
13437 Download EGCS from egcs.cygnus.com (USA California).
13439 The EGCS 1.1 release is also available on many mirror sites.
13440 [10]Goto mirror list to find a closer site.
13443 For questions related to the use of GCC, please consult these web
13444 pages and the [11]GCC manuals. If that fails, the
13445 [12]gcc-help@gcc.gnu.org mailing list might help. Comments on these
13446 web pages and the development of GCC are welcome on our developer
13447 list at [13]gcc@gcc.gnu.org. All of [14]our lists have public
13450 Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and
13451 distribution of this entire article is permitted in any medium,
13452 provided this notice is preserved.
13454 These pages are [16]maintained by the GCC team. Last modified
13459 1. http://gcc.gnu.org/egcs-1.1/egcs-1.1-test.html
13460 2. http://gcc.gnu.org/news/gcse.html
13461 3. http://gcc.gnu.org/news/alias.html
13462 4. http://gcc.gnu.org/egcs-1.1/c++features.html
13463 5. http://gcc.gnu.org/egcs-1.1/features.html
13464 6. http://gcc.gnu.org/install/
13465 7. http://gcc.gnu.org/egcs-1.1/buildstat.html
13466 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
13467 9. http://gcc.gnu.org/egcs-1.1/caveats.html
13468 10. http://gcc.gnu.org/mirrors.html
13469 11. http://gcc.gnu.org/onlinedocs/
13470 12. mailto:gcc-help@gcc.gnu.org
13471 13. mailto:gcc@gcc.gnu.org
13472 14. http://gcc.gnu.org/lists.html
13473 15. http://www.fsf.org/
13474 16. http://gcc.gnu.org/about.html
13475 17. http://validator.w3.org/check/referer
13476 ======================================================================
13477 http://gcc.gnu.org/egcs-1.1/features.html
13478 EGCS 1.1 new features
13480 * Integrated GNU Fortran (g77) compiler and runtime library with
13481 improvements, based on g77 version 0.5.23.
13482 * Vast improvements in the C++ compiler; so many they have [1]page of
13484 * Compiler implements [2]global common subexpression elimination and
13485 global copy/constant propagation.
13486 * More major improvements in the [3]alias analysis code.
13487 * More major improvements in the exception handling code to improve
13488 performance, lower static overhead and provide the infrastructure
13489 for future improvements.
13490 * The infamous /tmp symlink race security problems have been fixed.
13491 * The regmove optimization pass has been nearly completely rewritten
13492 to improve performance of generated code.
13493 * The compiler now recomputes register usage information before local
13494 register allocation. By providing more accurate information to the
13495 priority based allocator, we get better register allocation.
13496 * The register reloading phase of the compiler optimizes spill code
13497 much better than in previous releases.
13498 * Some bad interactions between the register allocator and
13499 instruction scheduler have been fixed, resulting in much better
13500 code for certain programs. Additionally, we have tuned the
13501 scheduler in various ways to improve performance of generated code
13502 for some architectures.
13503 * The compiler's branch shortening algorithms have been significantly
13504 improved to work better on targets which align jump targets.
13505 * The compiler now supports -Os to prefer optimizing for code space
13506 over optimizing for code speed.
13507 * The compiler will now totally eliminate library calls which compute
13508 constant values. This primarily helps targets with no integer
13509 div/mul support and targets without floating point support.
13510 * The compiler now supports an extensive "--help" option.
13511 * cpplib has been greatly improved and may be suitable for limited
13513 * Memory footprint for the compiler has been significantly reduced
13514 for some pathological cases.
13515 * The time to build EGCS has been improved for certain targets
13516 (particularly the alpha and mips platforms).
13517 * Many infrastructure improvements throughout the compiler, plus the
13518 usual mountain of bugfixes and minor improvements.
13519 * Target dependent improvements:
13520 + SPARC port now includes V8 plus and V9 support as well as
13521 performance tuning for Ultra class machines. The SPARC port
13522 now uses the Haifa scheduler.
13523 + Alpha port has been tuned for the EV6 processor and has an
13524 optimized expansion of memcpy/bzero. The Alpha port now uses
13525 the Haifa scheduler.
13526 + RS6000/PowerPC: support for the Power64 architecture and AIX
13527 4.3. The RS6000/PowerPC port now uses the Haifa scheduler.
13528 + x86: Alignment of static store data and jump targets is per
13529 Intel recommendations now. Various improvements throughout the
13530 x86 port to improve performance on Pentium processors
13531 (including improved epilogue sequences for Pentium chips and
13532 backend improvements which should help register allocation on
13533 all x86 variants. Conditional move support has been fixed and
13534 enabled for PPro processors. The x86 port also better supports
13535 64bit operations now. Unixware 7, a System V Release 5 target,
13536 is now supported and SCO OpenServer targets can support GAS.
13537 + MIPS has improved multiply/multiply-add support and now
13538 includes mips16 ISA support.
13539 + M68k has many micro-optimizations and Coldfire fixes.
13540 * Core compiler is based on the GCC development tree from June 9,
13541 1998, so we have all of the [4]features found in GCC 2.8.
13544 For questions related to the use of GCC, please consult these web
13545 pages and the [5]GCC manuals. If that fails, the
13546 [6]gcc-help@gcc.gnu.org mailing list might help. Comments on these
13547 web pages and the development of GCC are welcome on our developer
13548 list at [7]gcc@gcc.gnu.org. All of [8]our lists have public archives.
13550 Copyright (C) [9]Free Software Foundation, Inc. Verbatim copying and
13551 distribution of this entire article is permitted in any medium,
13552 provided this notice is preserved.
13554 These pages are [10]maintained by the GCC team. Last modified
13559 1. http://gcc.gnu.org/egcs-1.1/c++features.html
13560 2. http://gcc.gnu.org/news/gcse.html
13561 3. http://gcc.gnu.org/news/alias.html
13562 4. http://gcc.gnu.org/egcs-1.0/features-2.8.html
13563 5. http://gcc.gnu.org/onlinedocs/
13564 6. mailto:gcc-help@gcc.gnu.org
13565 7. mailto:gcc@gcc.gnu.org
13566 8. http://gcc.gnu.org/lists.html
13567 9. http://www.fsf.org/
13568 10. http://gcc.gnu.org/about.html
13569 11. http://validator.w3.org/check/referer
13570 ======================================================================
13571 http://gcc.gnu.org/egcs-1.1/caveats.html
13574 * EGCS has an integrated libstdc++, but does not have an integrated
13575 libg++. Furthermore old libg++ releases will not work with EGCS; HJ
13576 Lu has made a libg++-2.8.1.2 snapshot available which may work with
13578 Note most C++ programs only need libstdc++.
13579 * Exception handling may not work with shared libraries, particularly
13580 on alphas, hppas, rs6000/powerpc and mips based platforms.
13581 Exception handling is known to work on x86-linux platforms with
13583 * Some versions of the Linux kernel have bugs which prevent them from
13584 being compiled or from running when compiled by EGCS. See the FAQ
13585 (as shipped with EGCS 1.1) for additional information.
13586 * In general, EGCS is more rigorous about rejecting invalid C++ code
13587 or deprecated C++ constructs than g++-2.7, g++-2.8 or EGCS 1.0. As
13588 a result it may be necessary to fix C++ code before it will compile
13590 * G++ is also converting toward the ISO C++ standard; as a result
13591 code which was previously valid (and thus accepted by other
13592 compilers and older versions of g++) may no longer be accepted.
13593 * EGCS 1.1 compiled C++ code is not binary compatible with EGCS 1.0.x
13594 or GCC 2.8.x due to changes necessary to support thread safe
13595 exception handling.
13598 For questions related to the use of GCC, please consult these web
13599 pages and the [1]GCC manuals. If that fails, the
13600 [2]gcc-help@gcc.gnu.org mailing list might help. Comments on these
13601 web pages and the development of GCC are welcome on our developer
13602 list at [3]gcc@gcc.gnu.org. All of [4]our lists have public archives.
13604 Copyright (C) [5]Free Software Foundation, Inc. Verbatim copying and
13605 distribution of this entire article is permitted in any medium,
13606 provided this notice is preserved.
13608 These pages are [6]maintained by the GCC team. Last modified
13613 1. http://gcc.gnu.org/onlinedocs/
13614 2. mailto:gcc-help@gcc.gnu.org
13615 3. mailto:gcc@gcc.gnu.org
13616 4. http://gcc.gnu.org/lists.html
13617 5. http://www.fsf.org/
13618 6. http://gcc.gnu.org/about.html
13619 7. http://validator.w3.org/check/referer
13620 ======================================================================
13621 http://gcc.gnu.org/egcs-1.0/index.html
13624 December 3, 1997: We are pleased to announce the release of EGCS 1.0.
13625 January 6, 1998: We are pleased to announce the release of EGCS 1.0.1.
13626 March 16, 1998: We are pleased to announce the release of EGCS 1.0.2.
13627 May 15, 1998 We are pleased to announce the release of EGCS 1.0.3.
13629 EGCS is a collaborative effort involving several groups of hackers
13630 using an open development model to accelerate development and testing
13631 of GNU compilers and runtime libraries.
13633 An important goal of EGCS is to allow wide scale testing of
13634 experimental features and optimizations; therefore, EGCS contains some
13635 features and optimizations which are still under development. However,
13636 EGCS has been carefully tested and should be comparable in quality to
13639 EGCS 1.0 is based on an August 2, 1997 snapshot of the GCC 2.8
13640 development sources; it contains nearly all of the new features found
13643 EGCS 1.0 also contains many improvements and features not found in GCC
13644 2.7 and even the GCC 2.8 series (which was released after the original
13646 * Integrated C++ runtime libraries, including support for most major
13648 * The integrated libstdc++ library includes a verbatim copy of SGI's
13650 * Integrated GNU Fortran compiler.
13651 * New instruction scheduler.
13652 * New alias analysis code.
13654 See the [1]new features page for a more complete list of new features.
13656 EGCS 1.0.1 is a minor update to the EGCS 1.0 compiler to fix a few
13657 critical bugs and add support for Red Hat 5.0 Linux. Changes since the
13659 * Add support for Red Hat 5.0 Linux and better support for Linux
13660 systems using glibc2.
13661 Many programs failed to link when compiled with EGCS 1.0 on Red Hat
13662 5.0 or on systems with newer versions of glibc2. EGCS 1.0.1 should
13663 fix these problems.
13664 * Compatibility with both EGCS 1.0 and GCC 2.8 libgcc exception
13665 handling interfaces.
13666 To avoid future compatibility problems, we strongly urge anyone who
13667 is planning on distributing shared libraries that contain C++ code
13668 to upgrade to EGCS 1.0.1 first.
13669 Soon after EGCS 1.0 was released, the GCC developers made some
13670 incompatible changes in libgcc's exception handling interfaces.
13671 These changes were needed to solve problems on some platforms. This
13672 means that GCC 2.8.0, when released, will not be seamlessly
13673 compatible with shared libraries built by EGCS 1.0. The reason is
13674 that the libgcc.a in GCC 2.8.0 will not contain a function needed
13675 by the old interface.
13676 The result of this is that there may be compatibility problems with
13677 shared libraries built by EGCS 1.0 when used with GCC 2.8.0.
13678 With EGCS 1.0.1, generated code uses the new (GCC 2.8.0) interface,
13679 and libgcc.a has the support routines for both the old and the new
13680 interfaces (so EGCS 1.0.1 and EGCS 1.0 code can be freely mixed,
13681 and EGCS 1.0.1 and GCC 2.8.0 code can be freely mixed).
13682 The maintainers of GCC 2.x have decided against including seamless
13683 support for the old interface in 2.8.0, since it was never
13684 "official", so to avoid future compatibility problems we recommend
13685 against distributing any shared libraries built by EGCS 1.0 that
13686 contain C++ code (upgrade to 1.0.1 and use that).
13687 * Various bugfixes in the x86, hppa, mips, and rs6000/ppc backends.
13688 The x86 changes fix code generation errors exposed when building
13689 glibc2 and the usual GNU/Linux dynamic linker (ld.so).
13690 The hppa change fixes a compiler abort when configured for use with
13692 The MIPS changes fix problems with the definition of LONG_MAX on
13693 newer systems, allow for command line selection of the target ABI,
13694 and fix one code generation problem.
13695 The rs6000/ppc change fixes some problems with passing structures
13696 to varargs/stdarg functions.
13697 * A few machine independent bugfixes, mostly to fix code generation
13698 errors when building Linux kernels or glibc.
13699 * Fix a few critical exception handling and template bugs in the C++
13701 * Fix Fortran namelist bug on alphas.
13702 * Fix build problems on x86-solaris systems.
13704 EGCS 1.0.2 is a minor update to the EGCS 1.0.1 compiler to fix several
13705 serious problems in EGCS 1.0.1.
13706 * General improvements and fixes
13707 + Memory consumption significantly reduced, especially for
13708 templates and inline functions.
13709 + Fix various problems with glibc2.1.
13710 + Fix loop optimization bug exposed by rs6000/ppc port.
13711 + Fix to avoid potential code generation problems in jump.c.
13712 + Fix some undefined symbol problems in dwarf1 debug support.
13713 * g++/libstdc++ improvements and fixes
13714 + libstdc++ in the EGCS release has been updated and should be
13715 link compatible with libstdc++-2.8.
13716 + Various fixes in libio/libstdc++ to work better on GNU/Linux
13718 + Fix problems with duplicate symbols on systems that do not
13719 support weak symbols.
13720 + Memory corruption bug and undefined symbols in bastring have
13722 + Various exception handling fixes.
13723 + Fix compiler abort for very long thunk names.
13724 * g77 improvements and fixes
13725 + Fix compiler crash for omitted bound in Fortran CASE
13727 + Add missing entries to g77 lang-options.
13728 + Fix problem with -fpedantic in the g77 compiler.
13729 + Fix "backspace" problem with g77 on alphas.
13730 + Fix x86 backend problem with Fortran literals and -fpic.
13731 + Fix some of the problems with negative subscripts for g77 on
13733 + Fixes for Fortran builds on cygwin32/mingw32.
13734 * platform specific improvements and fixes
13735 + Fix long double problems on x86 (exposed by glibc).
13736 + x86 ports define i386 again to keep imake happy.
13737 + Fix exception handling support on NetBSD ports.
13738 + Several changes to collect2 to fix many problems with AIX.
13739 + Define __ELF__ for GNU/Linux on rs6000.
13740 + Fix -mcall-linux problem on GNU/Linux on rs6000.
13741 + Fix stdarg/vararg problem for GNU/Linux on rs6000.
13742 + Allow autoconf to select a proper install problem on AIX 3.1.
13743 + m68k port support includes -mcpu32 option as well as cpu32
13745 + Fix stdarg bug for irix6.
13746 + Allow EGCS to build on irix5 without the gnu assembler.
13747 + Fix problem with static linking on sco5.
13748 + Fix bootstrap on sco5 with native compiler.
13749 + Fix for abort building newlib on H8 target.
13750 + Fix fixincludes handling of math.h on SunOS.
13751 + Minor fix for Motorola 3300 m68k systems.
13753 EGCS 1.0.3 is a minor update to the EGCS 1.0.2 compiler to fix a few
13754 problems reported by Red Hat for builds of Red Hat 5.1.
13755 * Generic bugfixes:
13756 + Fix a typo in the libio library which resulted in incorrect
13757 behavior of istream::get.
13758 + Fix the Fortran negative array index problem.
13759 + Fix a major problem with the ObjC runtime thread support
13761 + Reduce memory consumption of the Haifa scheduler.
13762 * Target specific bugfixes:
13763 + Fix one x86 floating point code generation bug exposed by
13765 + Fix one x86 internal compiler error exposed by glibc2 builds.
13766 + Fix profiling bugs on the Alpha.
13767 + Fix ImageMagick & emacs 20.2 build problems on the Alpha.
13768 + Fix rs6000/ppc bug when converting values from integer types
13769 to floating point types.
13771 The EGCS 1.0 releases include installation instructions in both HTML
13772 and plaintext forms (see the INSTALL directory in the toplevel
13773 directory of the distribution). However, we also keep the most up to
13774 date [2]installation instructions and [3]build/test status on our web
13775 page. We will update those pages as new information becomes available.
13777 And, we can't in good conscience fail to mention some [4]caveats to
13780 Update: Big thanks to Stanford for providing a high speed link for
13781 downloading EGCS (go.cygnus.com)!
13783 Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
13784 (USA California -- High speed link provided by Stanford).
13786 The EGCS 1.0 release is also available many mirror sites.
13787 [5]Goto mirror list to find a closer site
13789 We'd like to thank the numerous people that have contributed new
13790 features, test results, bugfixes, etc. Unfortunately, they're far too
13791 numerous to mention by name.
13794 For questions related to the use of GCC, please consult these web
13795 pages and the [6]GCC manuals. If that fails, the
13796 [7]gcc-help@gcc.gnu.org mailing list might help. Comments on these
13797 web pages and the development of GCC are welcome on our developer
13798 list at [8]gcc@gcc.gnu.org. All of [9]our lists have public archives.
13800 Copyright (C) [10]Free Software Foundation, Inc. Verbatim copying and
13801 distribution of this entire article is permitted in any medium,
13802 provided this notice is preserved.
13804 These pages are [11]maintained by the GCC team. Last modified
13809 1. http://gcc.gnu.org/egcs-1.0/features.html
13810 2. http://gcc.gnu.org/install/
13811 3. http://gcc.gnu.org/egcs-1.0/buildstat.html
13812 4. http://gcc.gnu.org/egcs-1.0/caveats.html
13813 5. http://gcc.gnu.org/mirrors.html
13814 6. http://gcc.gnu.org/onlinedocs/
13815 7. mailto:gcc-help@gcc.gnu.org
13816 8. mailto:gcc@gcc.gnu.org
13817 9. http://gcc.gnu.org/lists.html
13818 10. http://www.fsf.org/
13819 11. http://gcc.gnu.org/about.html
13820 12. http://validator.w3.org/check/referer
13821 ======================================================================
13822 http://gcc.gnu.org/egcs-1.0/features.html
13825 * Core compiler is based on the gcc2 development tree from Aug 2,
13826 1997, so we have most of the [1]features found in GCC 2.8.
13827 * Integrated GNU Fortran compiler based on g77-0.5.22-19970929.
13828 * Vast improvements in the C++ compiler; so many they have [2]page of
13830 * Integrated C++ runtime libraries, including support for most major
13832 * New instruction scheduler from IBM Haifa which includes support for
13833 function wide instruction scheduling as well as superscalar
13835 * Significantly improved alias analysis code.
13836 * Improved register allocation for two address machines.
13837 * Significant code generation improvements for Fortran code on
13839 * Various optimizations from the g77 project as well as improved loop
13841 * Dwarf2 debug format support for some targets.
13842 * egcs libstdc++ includes the SGI STL implementation without changes.
13843 * As a result of these and other changes, egcs libstc++ is not binary
13844 compatible with previous releases of libstdc++.
13845 * Various new ports -- UltraSPARC, Irix6.2 & Irix6.3 support, The SCO
13846 Openserver 5 family (5.0.{0,2,4} and Internet FastStart 1.0 and
13847 1.1), Support for RTEMS on several embedded targets, Support for
13848 arm-linux, Mitsubishi M32R, Hitachi H8/S, Matsushita MN102 and
13849 MN103, NEC V850, Sparclet, Solaris & GNU/Linux on PowerPCs, etc.
13850 * Integrated testsuites for gcc, g++, g77, libstdc++ and libio.
13851 * RS6000/PowerPC ports generate code which can run on all
13852 RS6000/PowerPC variants by default.
13853 * -mcpu= and -march= switches for the x86 port to allow better
13854 control over how the x86 port generates code.
13855 * Includes the template repository patch (aka repo patch); note the
13856 new template code makes repo obsolete for ELF systems using gnu-ld
13858 * Plus the usual assortment of bugfixes and improvements.
13861 For questions related to the use of GCC, please consult these web
13862 pages and the [3]GCC manuals. If that fails, the
13863 [4]gcc-help@gcc.gnu.org mailing list might help. Comments on these
13864 web pages and the development of GCC are welcome on our developer
13865 list at [5]gcc@gcc.gnu.org. All of [6]our lists have public archives.
13867 Copyright (C) [7]Free Software Foundation, Inc. Verbatim copying and
13868 distribution of this entire article is permitted in any medium,
13869 provided this notice is preserved.
13871 These pages are [8]maintained by the GCC team. Last modified
13876 1. http://gcc.gnu.org/egcs-1.0/features-2.8.html
13877 2. http://gcc.gnu.org/egcs-1.0/c++features.html
13878 3. http://gcc.gnu.org/onlinedocs/
13879 4. mailto:gcc-help@gcc.gnu.org
13880 5. mailto:gcc@gcc.gnu.org
13881 6. http://gcc.gnu.org/lists.html
13882 7. http://www.fsf.org/
13883 8. http://gcc.gnu.org/about.html
13884 9. http://validator.w3.org/check/referer
13885 ======================================================================
13886 http://gcc.gnu.org/egcs-1.0/caveats.html
13889 * EGCS has an integrated libstdc++, but does not have an integrated
13890 libg++. Furthermore old libg++ releases will not work with egc; HJ
13891 Lu has made a libg++-2.8.1.2 available which may work with EGCS.
13892 Note most C++ programs only need libstdc++.
13893 * Note that using -pedantic or -Wreturn-type can cause an explosion
13894 in the amount of memory needed for template-heavy C++ code, such as
13895 code that uses STL. Also note that -Wall includes -Wreturn-type, so
13896 if you use -Wall you will need to specify -Wno-return-type to turn
13898 * Exception handling may not work with shared libraries, particularly
13899 on alphas, hppas, and mips based platforms. Exception handling is
13900 known to work on x86-linux platforms with shared libraries.
13901 * Some versions of the Linux kernel have bugs which prevent them from
13902 being compiled or from running when compiled by EGCS. See the FAQ
13903 (as shipped with EGCS 1.0) for additional information.
13904 * In general, EGCS is more rigorous about rejecting invalid C++ code
13905 or deprecated C++ constructs than G++ 2.7. As a result it may be
13906 necessary to fix C++ code before it will compile with EGCS.
13907 * G++ is also aggressively tracking the C++ standard; as a result
13908 code which was previously valid (and thus accepted by other
13909 compilers and older versions of G++) may no longer be accepted.
13910 * EGCS 1.0 may not work with Red Hat Linux 5.0 on all targets. EGCS
13911 1.0.x and later releases should work with Red Hat Linux 5.0.
13914 For questions related to the use of GCC, please consult these web
13915 pages and the [1]GCC manuals. If that fails, the
13916 [2]gcc-help@gcc.gnu.org mailing list might help. Comments on these
13917 web pages and the development of GCC are welcome on our developer
13918 list at [3]gcc@gcc.gnu.org. All of [4]our lists have public archives.
13920 Copyright (C) [5]Free Software Foundation, Inc. Verbatim copying and
13921 distribution of this entire article is permitted in any medium,
13922 provided this notice is preserved.
13924 These pages are [6]maintained by the GCC team. Last modified
13929 1. http://gcc.gnu.org/onlinedocs/
13930 2. mailto:gcc-help@gcc.gnu.org
13931 3. mailto:gcc@gcc.gnu.org
13932 4. http://gcc.gnu.org/lists.html
13933 5. http://www.fsf.org/
13934 6. http://gcc.gnu.org/about.html
13935 7. http://validator.w3.org/check/referer
13936 ======================================================================