1
<?xml version="1.0" encoding="ISO-8859-1"?>
3
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
22
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
27
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
28
<link rev="made" href="mailto:gcc@gcc.gnu.org" />
29
<link rel="shortcut icon" href="http://gcc.gnu.org/favicon.ico" />
30
<link rel="stylesheet" type="text/css" href="/gnu.css" />
31
<link rel="stylesheet" type="text/css" href="http://gcc.gnu.org/gcc.css" />
34
GCC 4.6 Release Series — Changes, New Features, and Fixes
35
- GNU Project - Free Software Foundation (FSF)</title>
39
<!-- GCC maintainers, please do not hesitate to update/contribute entries
40
concerning those part of GCC you maintain! 2002-03-23, Gerald.
43
<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" vlink="#9900DD">
48
GCC 4.6 Release Series<br />Changes, New Features, and Fixes
54
<li>The options <code>-b <<em>machine</em>></code> and
55
<code>-V <<em>version</em>></code> have been removed because
56
they were unreliable. Instead, users should directly run
57
<code><<em>machine</em>>-gcc</code> when cross-compiling, or
58
<code><<em>machine</em>>-gcc-<<em>version</em>></code>
59
to run a different version of <code>gcc</code>. </li>
61
<li>GCC now has stricter checks for invalid command-line options.
62
In particular, when <code>gcc</code> was called to link object
63
files rather than compile source code, it would previously accept
64
and ignore all options starting with <code>--</code>, including
65
linker options such as <code>--as-needed</code>
66
and <code>--export-dynamic</code>, although such options would
67
result in errors if any source code was compiled. Such options,
68
if unknown to the compiler, are now rejected in all cases; if the
69
intent was to pass them to the linker, options such
70
as <code>-Wl,--as-needed</code> should be used.</li>
72
<li>Versions of the GNU C library up to and including 2.11.1
74
href="http://sourceware.org/bugzilla/show_bug.cgi?id=10401">incorrect
75
implementation of the <code>cproj</code> function</a>. GCC
76
optimizes its builtin <code>cproj</code> according to the behavior
77
specified and allowed by the ISO C99 standard. If you want to
78
avoid discrepancies between the C library and GCC's builtin
79
transformations when using <code>cproj</code> in your code, use
80
GLIBC 2.12 or later. If you are using an older GLIBC and actually
81
rely on the incorrect behavior of cproj, then you can disable
82
GCC's transformations using <code>-fno-builtin-cproj</code>. </li>
84
<li>The C-only intermodule optimization framework (IMA, enabled by
85
<code>-combine</code>) has been removed in favor of the new
86
generic link-time optimization framework (LTO) introduced
87
in <a href="../gcc-4.5/changes.html">GCC 4.5.0</a>.</li>
89
<li id="libquadmath">GCC now ships with the LGPL-licensed
90
<code>libquadmath</code> library, which provides quad-precision
91
mathematical functions for targets with a <code>__float128</code>
92
datatype. <code>__float128</code> is available for targets on
93
32-bit x86, x86-64 and Itanium architectures. The
94
<code>libquadmath</code> library is automatically built on
95
such targets when building the Fortran compiler.</li>
97
<li>New <code>-Wunused-but-set-variable</code> and
98
<code>-Wunused-but-set-parameter</code> warnings were added
99
for C, C++, Objective-C and Objective-C++.
100
These warnings diagnose variables respective parameters which
101
are only set in the code and never otherwise used.
102
Usually such variables are useless and often even the value
103
assigned to them is computed needlessly, sometimes expensively.
104
The <code>-Wunused-but-set-variable</code> warning is enabled by
105
default by <code>-Wall</code> flag and <code>-Wunused-but-set-parameter</code>
106
by <code>-Wall -Wextra</code> flags.</li>
108
<li><p>Support for a number of older systems and recently
109
unmaintained or untested target ports of GCC has been declared
110
obsolete in GCC 4.6. Unless there is activity to revive them, the
111
next release of GCC will have their sources permanently
112
<strong>removed</strong>.</p>
114
<p id="obsoleted">All GCC ports for the following processor
115
architectures have been declared obsolete:</p>
118
<li>Argonaut ARC (<code>arc-*</code>)</li>
119
<li>National Semiconductor CRX (<code>crx-*</code>)</li>
120
<li>Motorola 68HC11 and 68HC12
121
(<code>m68hc11-*-*</code>, <code>m6811-*-*</code>,
122
<code>m68hc12-*-*</code>, <code>m6812-*-*</code>)</li>
123
<li>Sunplus S+core (<code>score-*</code>)</li>
126
<p>The following ports for individual systems on
127
particular architectures have been obsoleted:</p>
130
<li>Interix (<code>i[34567]86-*-interix3*</code>)</li>
131
<li>Generic ARM PE (<code>arm-*-pe*</code> other
132
than <code>arm*-wince-pe*</code>)</li>
133
<li>MCore PE (<code>mcore-*-pe*</code>)</li>
134
<li>SH SymbianOS (<code>sh*-*-symbianelf*</code>)</li>
135
<li>GNU Hurd on Alpha and PowerPC
136
(<code>alpha*-*-gnu*</code>, <code>powerpc*-*-gnu*</code>)</li>
137
<li>M68K uClinux old ABI
138
(<code>m68k-*-uclinuxoldabi*</code>)</li>
140
(<code>arm*-*-netbsd*</code>, <code>i[34567]86-*-netbsd*</code>,
141
<code>vax-*-netbsd*</code>, but
142
not <code>*-*-netbsdelf*</code>)</li>
145
<p>The <code>i[34567]86-*-pe</code> alias for Cygwin targets has
146
also been obsoleted; users should configure
147
for <code>i[34567]86-*-cygwin*</code> instead.</p>
149
<p>Certain configure options to control the set of libraries built
150
with GCC on some targets have been obsoleted. On ARM targets, the
151
options <code>--disable-fpu</code>, <code>--disable-26bit</code>,
152
<code>--disable-underscore</code>, <code>--disable-interwork</code>,
153
<code>--disable-biendian</code> and <code>--disable-nofmult</code>
154
have been obsoleted. On MIPS targets, the options
155
<code>--disable-single-float</code>, <code>--disable-biendian</code>
156
and <code>--disable-softfloat</code> have been obsoleted.</p>
160
<li>Support has been removed for all the
161
<a href="../gcc-4.5/changes.html#obsoleted">configurations obsoleted
166
<h2>General Optimizer Improvements</h2>
169
<li>A new general optimization level, <code>-Ofast</code>, has been
170
introduced. It combines the existing optimization level <code>-O3</code>
171
with options that can affect standards compliance but result in
172
better optimized code. For example, <code>-Ofast</code> enables
173
<code>-ffast-math</code>.</li>
174
<li>Link-time optimization improvements:
176
<li>The <a href="../projects/lto/whopr.pdf">Scalable Whole
177
Program Optimizer (WHOPR)</a> project has stabilized to the
178
point of being usable. It has become the default mode when
179
using the LTO optimization model. Link time optimization can
180
now split itself into multiple parallel compilations. Parallelism
181
is controlled with <code>-flto=<em>n</em></code> (where
182
<em>n</em> specifies the number of compilations to execute in
183
parallel). GCC can also cooperate with a GNU make job server
184
by specifying the <code>-flto=jobserver</code> option and
185
adding <code>+</code> to the beginning of the
186
Makefile rule executing the linker.<br />
187
Classical LTO mode can be enforced by
188
<code>-flto-partition=none</code>. This may result in small code
189
quality improvements.</li>
190
<li>A large number of bugs were fixed. GCC itself, Mozilla
191
Firefox and other large applications can be built with
193
<li>The linker plugin support improvements
195
<li>Linker plugin is now enabled by default when the linker is
196
detected to have plugin support. This is the case for GNU
197
ld 2.21.51 or newer (on ELF and Cygwin targets) and the Gold
198
linker on ELF targets. Plugin support of the Apple linker on
199
Darwin is not compatible with GCC.
200
The linker plugin can also be controlled by the
201
<code>-fuse-linker-plugin</code> command line option.</li>
202
<li>Resolution information from the linker plugin is used to drive
203
whole program assumptions. Use of the linker plugin results in
204
more aggressive optimization on binaries and on shared libraries
205
that use the <code>hidden</code> visibility
206
attribute. Consequently the use
207
of <code>-fwhole-program</code> is not neccesary in addition to
211
<li>Hidden symbols used from non-LTO objects now have to be
212
explicitly annotated with <code>externally_visible</code> when
213
the linker plugin is not used.</li>
214
<li>C++ inline functions and virtual tables are now privatized more
215
aggressively, leading to better inter-procedural optimization
216
and faster dynamic linking.</li>
217
<li>Memory usage and intermediate language streaming performance
218
have been improved.</li>
219
<li>Static constructors and destructors from individual units are
220
inlined into a single function.
221
This can significantly improve startup times of large C++
222
applications where static constructors are very common. For
223
example, static constructors are used when including the
224
<code>iostream</code> header.</li>
225
<li>Support for the Ada language has been added.</li>
228
<li>Interprocedural optimization improvements
230
<li>The interprocedural framework was re-tuned for link time
231
optimization. Several scalability issues were resolved.</li>
232
<li>Improved auto-detection of <code>const</code> and <code>pure</code>
233
functions. Newly, <code>noreturn</code> functions are auto-detected.
234
<p>The <a href="http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options"><code>-Wsuggest-attribute=[const|pure|noreturn]</code></a>
235
flag is available that informs users when adding
236
attributes to headers might improve code generation.</p></li>
237
<li>A number of inlining heuristic improvements. In particular:
239
<li>Partial inlining is now supported and enabled by default
240
at <code>-O2</code> and greater. The feature can be
241
controlled via <code>-fpartial-inlining</code>.
243
Partial inlining splits functions with short hot path
244
to return. This allows more aggressive inlining of the
245
hot path leading to better performance and often to
246
code size reductions (because cold parts of functions
250
<li>Scalability for large compilation units was improved
252
<li>Inlining of callbacks is now more aggressive.</li>
253
<li>Virtual methods are considered for inlining when the
255
inlined and devirtualization is then possible.</li>
256
<li>Inlining when optimizing for size (either in cold
257
regions of a program or when compiling with
258
<code>-Os</code>) was improved to better handle C++
259
programs with larger abstraction penalty, leading
260
to smaller and faster code.</li>
263
<li>The IPA reference optimization pass detecting global
264
variables used or modified by functions was strengthened
266
<li>Functions whose address was taken are now optimized out
267
when all references to them are dead.</li>
268
<li>A new inter-procedural static profile estimation pass detects
269
functions that are executed once or unlikely to be executed.
270
Unlikely executed functions are optimized for size. Functions
271
executed once are optimized for size except for the inner
273
<li>On most targets with named section support, functions used only
274
at startup (static constructors and <code>main</code>), functions
275
used only at exit and functions detected to be cold are placed into
276
separate text segment subsections.
277
This extends the <code>-freorder-functions</code> feature and is
278
controlled by the same switch. The goal is to improve the startup
279
time of large C++ programs.
280
<p>Proper function placement requires linker support.
281
GNU ld 2.21.51 on ELF targets was updated to place
282
those functions together within the text section leading to better code
283
locality and faster startup times of large C++ programs. The feature is
284
also supported in the Apple linker.
285
Support in the gold linker is planned.</p>
289
<li>A new switch <code>-fstack-usage</code> has been added. It makes
290
the compiler output stack usage information for the program, on a
291
per-function basis, in an auxiliary file.</li>
292
<li>A new switch <code>-fcombine-stack-adjustments</code> has been added.
293
It can be used to enable or disable the compiler's stack-slot combining
294
pass which before was enabled automatically at <code>-O1</code> and above,
295
but could not be controlled on its own.</li>
296
<li>A new switch <code>-fstrict-volatile-bitfields</code> has been
297
added. Using it indicates that accesses to volatile bitfields
298
should use a single access of the width of the field's type.
299
This option can be useful for precisely defining and accessing
300
memory-mapped peripheral registers from C or C++.</li>
303
<h2>Compile time and memory usage improvements</h2>
305
<li>Datastructures used by the dataflow framework in GCC were reorganized
306
for better memory usage and more cache locality. Compile
307
time is improved especially on units with large functions (possibly
308
resulting from a lot of inlining) not fitting into the processor cache.
309
The compile time of the GCC C compiler binary with link-time
310
optimization went down by over 10% (benchmarked on x86-64 target).</li>
313
<h2>New Languages and Language specific improvements</h2>
318
<li>Stack checking has been improved on selected architectures (Alpha,
319
IA-32/x86-64, RS/6000 and SPARC): it now will detect stack overflows
320
in all cases on these architectures.</li>
321
<li>Initial support for Ada 2012 has been added.</li>
327
<li>A new warning, enabled by <code>-Wdouble-promotion</code>,
328
has been added that warns about cases where a value of type
329
<code>float</code> is implicitly promoted to <code>double</code>.
330
This is especially helpful for CPUs that handle the former in
331
hardware, but emulate the latter in software.</li>
332
<li>A new function attribute <code>leaf</code> was introduced.
333
This attribute allows better inter-procedural optimization across
334
calls to functions that return to the current unit only via returning
335
or exception handling. This is the case for most library functions
336
that have no callbacks.</li>
337
<li>Support for a new data type <code>__int128</code> for targets having
338
wide enough machine-mode support.</li>
339
<li>The new function attribute <code>callee_pop_aggregate</code> allows
340
to specify if the caller or callee is responsible for popping the
341
aggregate return pointer value from the stack.</li>
342
<li>Support for selectively enabling and disabling warnings
343
via <code>#pragma GCC diagnostic</code> has been added. For instance:
344
<pre>#pragma GCC diagnostic error "-Wuninitialized"
345
foo(a); /* error is given for this one */
346
#pragma GCC diagnostic push
347
#pragma GCC diagnostic ignored "-Wuninitialized"
348
foo(b); /* no diagnostic for this one */
349
#pragma GCC diagnostic pop
350
foo(c); /* error is given for this one */
351
#pragma GCC diagnostic pop
352
foo(d); /* depends on command line options */
354
<li>The <code>-fmax-errors=N</code> option is now supported. Using
355
this option causes the compiler to exit after <code>N</code> errors
356
have been issued.</li>
362
<li>There is now experimental support for some features from the
363
upcoming C1X revision of the ISO C standard. This support may be
364
selected with <code>-std=c1x</code>, or <code>-std=gnu1x</code>
365
for C1X with GNU extensions. Note that this support is
366
experimental and may change incompatibly in future releases for
367
consistency with changes to the C1X standard draft. The following
368
features are newly supported as described in the N1539 draft of
369
C1X (with changes agreed at the March 2011 WG14 meeting); some
370
other features were already supported with no compiler
371
changes being needed, or have some support but not in full accord
372
with N1539 (as amended).
374
<li>Static assertions (<code>_Static_assert</code> keyword)</li>
375
<li>Typedef redefinition</li>
376
<li>New macros in <code><float.h></code></li>
377
<li>Anonymous structures and unions</li>
380
<li>The new <code>-fplan9-extensions</code> option directs the
381
compiler to support some extensions for anonymous struct fields
382
which are implemented by the Plan 9 compiler. A pointer to a
383
struct may be automatically converted to a pointer to an
384
anonymous field when calling a function, in order to make the
385
types match. An anonymous struct field whose type is a typedef
386
name may be referred to using the typedef name.</li>
389
<h3 id="cplusplus">C++</h3>
392
<li>Improved <a href="cxx0x_status.html">experimental support for the
393
upcoming C++0x</a> ISO C++ standard, including support for
394
<code>constexpr</code> (thanks to Gabriel Dos Reis and Jason Merrill),
395
<code>nullptr</code> (thanks to Magnus Fromreide), <code>noexcept</code>,
396
unrestricted unions, range-based <code>for</code> loops (thanks to Rodrigo Rivas Costa),
397
opaque enum declarations (thanks also to Rodrigo), implicitly deleted
398
functions and implicit move constructors.</li>
400
<li>When an extern declaration within a function does not match a
401
declaration in the enclosing context, G++ now properly declares the
402
name within the namespace of the function rather than the namespace
403
which was open just before the function definition
404
(<a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43145">c++/43145</a>).</li>
406
<li>GCC now warns by default when casting integers to larger
407
pointer types. These warnings can be disabled with the option
408
<code>-Wno-int-to-pointer-cast</code>, which is now also available
411
<li>G++ no longer optimizes using the assumption that a value of
412
enumeration type will fall within the range specified by the standard,
413
since that assumption is easily violated with a conversion from integer
414
type (<a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43680">c++/43680</a>).
415
The old behavior can be restored with <code>-fstrict-enums</code>.</li>
417
<li>The new <code>-fnothrow-opt</code> flag changes the semantics of
418
a <code>throw()</code> exception specification to match the proposed
419
semantics of the <code>noexcept</code> specification: just call
420
<code>terminate</code> if an exception tries to propagate out of a
421
function with such an exception specification. This dramatically
422
reduces or eliminates the code size overhead from adding the exception
425
<li>The new <code>-Wnoexcept</code> flag will suggest adding
426
a <code>noexcept</code> qualifier to a function that the compiler can
427
tell doesn't throw if it would change the value of
428
a <code>noexcept</code> expression.</li>
430
<li>The <code>-Wshadow</code> option now warns if a local variable or
431
type declaration shadows another type in C++. Note that the compiler will
432
not warn if a local variable shadows a struct/class/enum, but will warn
433
if it shadows an explicit typedef. </li>
435
<li>When an identifier is not found in the current scope, G++ now
436
offers suggestions about which identifier might have been
439
<li>G++ now issues clearer diagnostics for missing semicolons
440
after <code>class</code>, <code>struct</code>,
441
and <code>union</code> definitions.</li>
443
<li>G++ now issues clearer diagnostics for missing semicolons after
444
class member declarations.</li>
446
<li>G++ now issues clearer diagnostics when a colon is used in a
447
place where a double-colon was intended.</li>
449
<li>G++ no longer accepts <code>mutable</code> on reference members
450
(<a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33558">c++/33558</a>).
451
Use <code>-fpermissive</code> to allow the old, non-conforming behaviour.
454
<li>A few mangling fixes have been made, to attribute const/volatile on
455
function pointer types, decltype of a plain decl, and use of a
456
function parameter in the declaration of another parameter. By
457
default the compiler still uses the old mangling, but emits aliases
458
with the new mangling on targets that support strong aliases. Users
459
can switch over entirely to the new mangling
460
with <code>-fabi-version=5</code> or <code>-fabi-version=0</code>.
461
<code>-Wabi</code> will now warn about code that uses the old
464
<li>G++ no longer allows objects of const-qualified type to be default
465
initialized unless the type has a user-declared default constructor.
466
Code that fails to compile can be fixed by providing an initializer e.g.
472
Use <code>-fpermissive</code> to allow the old, non-conforming behaviour.
477
<h4>Runtime Library (libstdc++)</h4>
480
<li><a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x">
481
Improved experimental support for the upcoming ISO C++ standard,
482
C++0x</a>, including using <code>constexpr</code> and
483
<code>nullptr</code>. </li>
484
<li>Performance improvements to the
485
<a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html">Debug
486
Mode</a>, thanks to François Dumont.
488
<li>Atomic operations used for reference-counting are annotated so that
489
they can be understood by race detectors such as Helgrind, see
490
<a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug.html#debug.races">Data
491
Race Hunting</a>.</li>
492
<li>Most libstdc++ standard headers have been changed to no longer include
493
the <code>cstddef</code> header as an implementation detail. Code that
494
relied on that header being included as side-effect of including other
495
standard headers will need to include <code>cstddef</code> explicitly.</li>
498
<h3 id="fortran">Fortran</h3>
500
<li>On systems supporting the <code>libquadmath</code> library, GNU Fortran
501
now also supports a quad-precision, <code>kind=16</code> floating-point
502
data type (<code>REAL(16)</code>, <code>COMPLEX(16)</code>). As the data
503
type is not fully supported in hardware, calculations might be one to
504
two orders of magnitude slower than with the 4, 8 or 10 bytes
505
floating-point data types. This change does not affect systems which
506
support <code>REAL(16)</code> in hardware nor those which do not support
507
<code>libquadmath</code>.</li>
508
<li>Much improved compile time for large array constructors.</li>
509
<li>In order to reduce execution time and memory consumption, use of
510
temporary arrays in assignment expressions is avoided for
511
many cases. The compiler now reverses loops in order to avoid
512
generating a temporary array where possible.</li>
513
<li>Improved diagnostics, especially with
514
<code>-fwhole-file</code>.</li>
515
<li>The <code>-fwhole-file</code> flag is now enabled by default. This
516
improves code generation and diagnostics. It can be
517
disabled using the deprecated <code>-fno-whole-file</code> flag.</li>
518
<li>Support the generation of Makefile dependencies via the <a
519
href="http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html">
520
<code>-M</code>...</a> flags of GCC; you may need to specify the
521
<code>-cpp</code> option in addition. The dependencies take
522
modules, Fortran's <code>include</code>, and CPP's <code>#include</code>
523
into account. Note: Using <code>-M</code> for the module path is no
524
longer supported, use <code>-J</code> instead.</li>
525
<li>The flag <code>-Wconversion</code> has been modified to only issue
526
warnings where a conversion leads to information loss. This drastically
527
reduces the number of warnings; <code>-Wconversion</code> is thus now
528
enabled with <code>-Wall</code>. The flag <code>-Wconversion-extra</code>
529
has been added and also warns about other conversions;
530
<code>-Wconversion-extra</code> typically issues a huge number of
531
warnings, most of which can be ignored.</li>
532
<li>A new command-line option <code>-Wunused-dummy-argument</code> warns
533
about unused dummy arguments and is included in <code>-Wall</code>.
534
Before, <code>-Wunused-variable</code> also warned about unused dummy
536
<li>Fortran 2003 support has been extended:
538
<li>Improved support for polymorphism between libraries and
539
programs and for complicated inheritance patterns (cf. <a
540
href="http://gcc.gnu.org/wiki/OOP">object-oriented programming</a>).
542
<li>Experimental support of the <code>ASSOCIATE</code> construct.</li>
543
<li>In pointer assignments it is now possible to specify the lower
544
bounds of the pointer and, for a rank-1 or a simply contiguous
545
data-target, to remap the bounds.</li>
546
<li>Automatic (re)allocation: In intrinsic assignments to
547
allocatable variables the left-hand side will be automatically
548
allocated (if unallocated) or reallocated (if the shape or type
549
parameter is different). To avoid the small performance penalty,
550
you can use <code>a(:) = ...</code> instead of <code>a = ...</code>
551
for arrays and character strings – or disable the feature using
552
<code>-std=f95</code> or <code>-fno-realloc-lhs</code>.</li>
553
<li>Deferred type parameter: For scalar allocatable and pointer
554
variables the character length can be deferred.</li>
555
<li>Namelist variables with allocatable and pointer attribute and
556
nonconstant length type parameter are supported.</li>
559
<li>Fortran 2008 support has been extended:
561
<li>Experimental <a href="http://gcc.gnu.org/wiki/Coarray">
562
coarray support</a> (for one image only, i.e. <code>num_images() ==
563
1</code>); use the <a
564
href="http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcoarray_007d-233">
565
<code>-fcoarray=single</code></a> flag to enable it.</li>
566
<li>The <code>STOP</code> and the new <code>ERROR STOP</code>
567
statements now support all constant expressions.</li>
568
<li>Support for the <code>CONTIGUOUS</code> attribute.</li>
569
<li>Support for <code>ALLOCATE</code> with <code>MOLD</code>.</li>
570
<li>Support for the <code>STORAGE_SIZE</code> intrinsic inquiry
572
<li>Support of the <code>NORM2</code> and <code>PARITY</code>
573
intrinsic functions.</li>
574
<li>The following bit intrinsics were added: <code>POPCNT</code>
575
and <code>POPPAR</code> for counting the number of 1 bits and
576
returning the parity; <code>BGE</code>, <code>BGT</code>,
577
<code>BLE</code>, and <code>BLT</code> for bitwise comparisons;
578
<code>DSHIFTL</code> and <code>DSHIFTR</code> for combined left
579
and right shifts, <code>MASKL</code> and <code>MASKR</code> for
580
simple left and right justified masks, <code>MERGE_BITS</code>
581
for a bitwise merge using a mask, <code>SHIFTA</code>,
582
<code>SHIFTL</code> and <code>SHIFTR</code> for shift operations,
583
and the transformational bit intrinsics <code>IALL</code>,
584
<code>IANY</code> and <code>IPARITY</code>.</li>
585
<li>Support of the <code>EXECUTE_COMMAND_LINE</code> intrinsic
587
<li>Support for the <code>IMPURE</code> attribute for procedures,
588
which allows for <code>ELEMENTAL</code> procedures without the
589
restrictions of <code>PURE</code>.</li>
590
<li>Null pointers (including <code>NULL()</code>) and not
591
allocated variables can be used as actual argument to optional
592
non-pointer, non-allocatable dummy arguments, denoting an absent
594
<li>Non-pointer variables with <code>TARGET</code> attribute can
595
be used as actual argument to <code>POINTER</code> dummies with
596
<code>INTENT(IN)</code></li>
597
<li>Pointers including procedure pointers and those in a derived
598
type (pointer components) can now be initialized by a target
599
instead of only by <code>NULL</code>.</li>
600
<li>The <code>EXIT</code> statement (with construct-name) can
601
now be used to leave not only the <code>DO</code> but also the
602
<code>ASSOCIATE</code>, <code>BLOCK</code>, <code>IF</code>,
603
<code>SELECT CASE</code> and <code>SELECT TYPE</code> constructs.</li>
604
<li>Internal procedures can now be used as actual argument.</li>
605
<li>The named constants <code>INTEGER_KINDS</code>,
606
<code>LOGICAL_KINDS</code>, <code>REAL_KINDS</code> and
607
<code>CHARACTER_KINDS</code> of the intrinsic module
608
<code>ISO_FORTRAN_ENV</code> have been added; these arrays contain
609
the supported kind values for the respective types.</li>
610
<li>The module procedures <code>C_SIZEOF</code> of the intrinsic
611
module <code>ISO_C_BINDINGS</code> and <code>COMPILER_VERSION</code>
612
and <code>COMPILER_OPTIONS</code> of <code>ISO_FORTRAN_ENV</code>
613
have been implemented.</li>
614
<li>Minor changes: obsolescence diagnostics for <code>ENTRY</code>
615
was added for <code>-std=f2008</code>;
616
a line may start with a semicolon;
617
for internal and module procedures <code>END</code> can be used
618
instead of <code>END SUBROUTINE</code> and <code>END
619
FUNCTION</code>; <code>SELECTED_REAL_KIND</code> now also takes a
620
<code>RADIX</code> argument; intrinsic types are supported for
621
<code>TYPE(<i>intrinsic-type-spec</i>)</code>; multiple type-bound
622
procedures can be declared in a single <code>PROCEDURE</code>
623
statement; implied-shape arrays are supported for named constants
624
(<code>PARAMETER</code>). The transformational, three argument
625
versions of <code>BESSEL_JN</code> and <code>BESSEL_YN</code>
626
were added – the elemental, two-argument version had been
627
added in GCC 4.4; note that the transformational functions use
628
a recurrence algorithm.</li>
635
<p>Support for the <a href="http://golang.org/">Go programming
636
language</a> has been added to GCC. It is not enabled by default
637
when you build GCC; use the <code>--enable-languages</code>
638
configure option to build it. The driver program for compiling Go
639
code is <code>gccgo</code>.</p>
641
<p>Go is currently known to work on GNU/Linux and RTEMS. Solaris
642
support is in progress. It may or may not work on other
647
<h3 id="objective-c">Objective-C and Objective-C++</h3>
650
<li>The <code>-fobjc-exceptions</code> flag is now required to
651
enable Objective-C exception and synchronization syntax
652
(introduced by the keywords <code>@try</code>,
653
<code>@catch</code>, <code>@finally</code> and
654
<code>@synchronized</code>).</li>
656
<li>A number of Objective-C 2.0 features and extensions are now
657
supported by GCC. These features are enabled by default; you can
658
disable them by using the new <code>-fobjc-std=objc1</code>
659
command-line option.</li>
661
<li>The Objective-C 2.0 dot-syntax is now supported. It is an
662
alternative syntax for using getters and setters;
663
<code>object.count</code> is automatically converted into
664
<code>[object count]</code> or <code>[object setCount: ...]</code>
665
depending on context; for example <code>if (object.count >
666
0)</code> is automatically compiled into the equivalent of
667
<code>if ([object count] > 0)</code> while <code>object.count =
668
0;</code> is automatically compiled into the equivalent ot
669
<code>[object setCount: 0];</code>. The dot-syntax can be used
670
with instance and class objects and with any setters or getters,
671
no matter if they are part of a declared property or not.</li>
673
<li>Objective-C 2.0 declared properties are now supported. They
674
are declared using the new <code>@property</code> keyword, and are
675
most commonly used in conjunction with the new Objective-C 2.0
676
dot-syntax. The <code>nonatomic</code>, <code>readonly</code>,
677
<code>readwrite</code>, <code>assign</code>, <code>retain</code>,
678
<code>copy</code>, <code>setter</code> and <code>getter</code>
679
attributes are all supported. Marking declared properties with
680
<code>__attribute__ ((deprecated))</code> is supported too.</li>
682
<li>The Objective-C 2.0 <code>@synthesize</code> and
683
<code>@dynamic</code> keywords are supported.
684
<code>@synthesize</code> causes the compiler to automatically
685
synthesize a declared property, while <code>@dynamic</code> is
686
used to disable all warnings for a declared property for which no
687
implementation is provided at compile time. Synthesizing declared
688
properties requires runtime support in most useful cases; to be
689
able to use it with the GNU runtime, appropriate helper functions
690
have been added to the GNU Objective-C runtime ABI, and are
691
implemented by the GNU Objective-C runtime library shipped with
694
<li>The Objective-C 2.0 fast enumeration syntax is supported in
695
Objective-C. This is currently not yet available in
696
Objective-C++. Fast enumeration requires support in the runtime,
697
and such support has been added to the GNU Objective-C runtime
698
library (shipped with GCC).</li>
700
<li>The Objective-C 2.0 <code>@optional</code> keyword is
701
supported. It allows you to mark methods or properties in a
702
protocol as optional as opposed to required.</li>
704
<li>The Objective-C 2.0 <code>@package</code> keyword is
705
supported. It has currently the same effect as the
706
<code>@public</code> keyword.</li>
708
<li>Objective-C 2.0 method attributes are supported. Currently
709
the supported attributes are <code>deprecated</code>,
710
<code>sentinel</code>, <code>noreturn</code> and
711
<code>format</code>.</li>
713
<li>Objective-C 2.0 method argument attributes are supported. The
714
most widely used attribute is <code>unused</code>, to mark an
715
argument as unused in the implementation.</li>
717
<li>Objective-C 2.0 class and protocol attributes are supported.
718
Currently the only supported attribute is
719
<code>deprecated</code>.</li>
721
<li>Objective-C 2.0 class extensions are supported. A class
722
extension has the same syntax as a category declaration with no
723
category name, and the methods and properties declared in it are
724
added directly to the main class. It is mostly used as an
725
alternative to a category to add methods to a class without
726
advertising them in the public headers, with the advantage that
727
for class extensions the compiler checks that all the privately
728
declared methods are actually implemented.</li>
730
<li>As a result of these enhancements, GCC can now be used to
731
build Objective-C and Objective-C++ software that uses Foundation
732
and other important system frameworks with the NeXT runtime on
733
Darwin 9 and Darwin 10 (Mac OS X 10.5 and 10.6). Currently this is for
736
<li>Many bugs in the compiler have been fixed in this release; in
737
particular, LTO can now be used when compiling Objective-C and
738
Objective-C++ and the parser is much more robust in dealing with
742
<h4>Runtime Library (libobjc)</h4>
745
<li>The GNU Objective-C runtime library now defines the macro
746
<code>__GNU_LIBOBJC__</code> (with a value that is increased at
747
every release where there is any change to the API) in
748
<code>objc/objc.h</code>, making it easy to determine if the GNU
749
Objective-C runtime library is being used, and if so, which
750
version. Previous versions of the GNU Objective-C runtime library
751
(and other Objective-C runtime libraries such as the Apple one) do
752
not define this macro.</li>
754
<li>A new Objective-C 2.0 API, almost identical to the one
755
implemented by the Apple Objective-C runtime, has been implemented
756
in the GNU Objective-C runtime library. The new API hides the
757
internals of most runtime structures but provides a more extensive
758
set of functions to operate on them. It is much easier, for
759
example, to create or modify classes at runtime. The new API also
760
makes it easier to port software from Apple to GNU as almost no
761
changes should be required. The old API is still supported for
762
backwards compatibility; including the old
763
<code>objc/objc-api.h</code> header file automatically selects the
764
old API, while including the new <code>objc/runtime.h</code>
765
header file automatically selects the new API. Support for the
766
old API is being phased out and upgrading the software to use the
767
new API is strongly recommended. To check for the availability of
768
the new API, the <code>__GNU_LIBOBJC__</code> macro can be used as
769
older versions of the GNU Objective-C runtime library, which do
770
not support the new API, do not define such a macro.</li>
772
<li>Runtime support for <code>@synchronized</code> has been added.</li>
774
<li>Runtime support for Objective-C 2.0 synthesized property
775
accessors has been added.</li>
777
<li>Runtime support for Objective-C 2.0 fast enumeration has been
781
<h2 id="targets">New Targets and Target Specific Improvements</h2>
783
<h3 id="arm">ARM</h3>
785
<li>GCC now supports the Cortex-M4 processor implementing
786
the v7-em version of the architecture using the option
787
<code>-mcpu=cortex-m4</code>.</li>
789
<li>Scheduling descriptions for the Cortex-M4, the Neon and
790
the floating point units of the Cortex-A9 and a pipeline
791
description for the Cortex-A5 have been added.</li>
793
<li>Synchronization primitives such as <code>__sync_fetch_and_add
794
</code> and friends are now inlined for supported architectures
795
rather than calling into a kernel helper function.</li>
797
<li>SSA loop prefetching is enabled by default for the
798
Cortex-A9 at <code>-O3</code>.</li>
800
<li>Several improvements were committed to improve code
801
generation for the ARM architecture including a rewritten
802
implementation for load and store multiples.</li>
804
<li>Several enhancements were committed to improve SIMD code
805
generation for NEON by adding support for widening instructions,
806
misaligned loads and stores, vector conditionals and
807
support for 64 bit arithmetic.</li>
809
<li>Support was added for the Faraday cores fa526, fa606te,
810
fa626te, fmp626te, fmp626 and fa726te and can be used with the
811
respective names as parameters to the <code>-mcpu=</code>
814
<li>Basic support was added for Cortex-A15 and is available through
815
<code>-mcpu=cortex-a15</code>.</li>
817
<li>GCC for AAPCS configurations now more closely adheres to the AAPCS
818
specification by enabling <code>-fstrict-volatile-bitfields</code> by
822
<h3>IA-32/x86-64</h3>
825
The new <code>-fsplit-stack</code> option permits programs to
826
use a discontiguous stack. This is useful for threaded
827
programs, in that it is no longer necessary to specify the
828
maximum stack size when creating a thread. This feature is
829
currently only implemented for 32-bit and 64-bit x86 GNU/Linux
832
<li>Support for emitting profiler counter calls before function
833
prologues. This is enabled via a new command-line option
834
<code>-mfentry</code>.</li>
835
<li>Optimization for the Intel Core 2 processors is now available through
836
the <code>-march=core2</code> and <code>-mtune=core2</code>
838
<li>Support for Intel Core i3/i5/i7 processors is now available through
839
the <code>-march=corei7</code> and <code>-mtune=corei7</code>
841
<li>Support for Intel Core i3/i5/i7 processors with AVX is now
842
available through the <code>-march=corei7-avx</code> and
843
<code>-mtune=corei7-avx</code> options.</li>
844
<li>Support for AMD Bobcat (family 14) processors is now available through
845
the <code>-march=btver1</code> and <code>-mtune=btver1</code>
847
<li>The default setting (when not optimizing for size) for 32-bit
848
GNU/Linux and Darwin x86 targets has been changed to
849
<code>-fomit-frame-pointer</code>. The default can be reverted
850
to <code>-fno-omit-frame-pointer</code> by configuring GCC with
851
the <code>--enable-frame-pointer</code> configure option.</li>
852
<li>Darwin, FreeBSD, Solaris 2, MinGW and Cygwin now all support
853
<code>__float128</code> on 32-bit and 64-bit x86 targets.</li>
854
<li>AVX floating-point arithmetic can now be enabled by default at
855
configure time with the new <code>--with-fpmath=avx</code> option.</li>
856
<li>The SSA loop prefetching pass is enabled when
857
using <code>-O3</code> when optimizing for CPUs where prefetching
858
is beneficial (AMD CPUs newer than K6).</li>
859
<li>Support for TBM (Trailing Bit Manipulation) built-in functions
860
and code generation is available via <code>-mtbm</code>.</li>
861
<li>Support for AMD's BMI (Bit Manipulation) built-in functions and
862
code generation is available via <code>-mbmi</code>.</li>
865
<h3 id="microblaze">MicroBlaze</h3>
868
<li>Support has been added for the Xilinx MicroBlaze softcore processor
869
(microblaze-elf) embedded target. This configurable processor is
870
supported on several Xilinx Spartan and Virtex FPGAs.
876
<li>GCC now supports the Loongson 3A processor. Its canonical
877
<code>-march=</code> and <code>-mtune=</code> name is
878
<code>loongson3a</code>.
882
<h3 id="mn10300">MN10300 / AM33</h3>
884
<li>The inline assembly register constraint <code>"A"</code> has
885
been renamed <code>"c"</code>. This constraint is used to
886
select a floating-point register that can be used as the
887
destination of a multiply-accumulate instruction.
889
<li>New inline assembly register constraints <code>"A"</code> and
890
<code>"D"</code> have been added. These constraint letters
891
resolve to all general registers when compiling for AM33, and
892
resolve to address registers only or data registers only when
893
compiling for MN10300.
895
<li>The <code>MDR</code> register is represented in the compiler.
896
One can access the register via the <code>"z"</code> constraint
897
in inline assembly. It can be marked as clobbered or used as
898
a local register variable via the <code>"mdr"</code> name.
899
The compiler uses the <code>RETF</code> instruction if the
900
function does not modify the <code>MDR</code> register, so it
901
is important that inline assembly properly annotate any usage
906
<h3>PowerPC/PowerPC64</h3>
908
<li>GCC now supports the Applied Micro Titan processor
909
with <code>-mcpu=titan</code>.</li>
910
<li>The <code>-mrecip</code> option has been added, which indicates
911
whether the reciprocal and reciprocal square root instructions
913
<li>The <code>-mveclibabi=mass</code> option can be used to enable
914
the compiler to autovectorize mathematical functions using the
915
Mathematical Acceleration Subsystem library.</li>
916
<li>The <code>-msingle-pic-base</code> option has been added, which
917
instructs the compiler to avoid loading the PIC base register in
918
function prologues. The PIC base register must be initialized by
919
the runtime system.</li>
920
<li>The <code>-mblock-move-inline-limit</code> option has been
921
added, which enables the user to control the maximum size of
922
inlined <code>memcpy</code> calls and similar.</li>
923
<li>PowerPC64 GNU/Linux support for applications requiring a large
924
TOC section has been improved. A new command-line option,
925
<code>-mcmodel=MODEL</code>, controls this feature; valid values
926
for <code>MODEL</code>
927
are <code>small</code>, <code>medium</code>,
928
or <code>large</code>.</li>
929
<li>The altivec builtin functions <code>vec_ld</code> and <code>vec_st</code>
930
have been modified to generate the Altivec memory instructions
931
<code>LVX</code> and <code>STVX</code>, even if the <code>-mvsx</code>
932
option is used. In the initial GCC 4.5 release, these builtin functions
933
were changed to generate VSX memory reference instructions instead of
934
Altivec memory instructions, but there are differences between the two
935
instructions. If the VSX instruction set is available, you can now use
936
the new builtin functions <code>vec_vsx_ld</code> and <code>vec_vsx_st</code>
937
which always generates the VSX memory instructions.</li>
938
<li>The GCC compiler on AIX now defaults to a process layout with a
939
larger data space allowing larger programs to be compiled.</li>
940
<li>The GCC long double type on AIX 6.1 and above has reverted to 64 bit
941
double precision, matching the AIX XL compiler default, because of
942
missing C99 symbols required by the GCC runtime.</li>
943
<li>The default processor scheduling model and tuning for PowerPC64
944
GNU/Linux and for AIX 6.1 and above now is POWER7.</li>
947
<h3>S/390, zSeries and System z9/z10, IBM zEnterprise z196</h3>
949
<li>Support for the zEnterprise z196 processor has been added.
950
When using the <code>-march=z196</code> option, the compiler
951
will generate code making use of the following instruction
954
<li>Conditional load/store</li>
955
<li>Distinct-operands</li>
956
<li>Floating-point-extension</li>
957
<li>Interlocked-access</li>
958
<li>Population-count</li>
960
The <code>-mtune=z196</code> option avoids the compare and
961
branch instructions as well as the load address instruction
962
with an index register as much as possible and performs
963
instruction scheduling appropriate for the new out-of-order
964
pipeline architecture.</li>
965
<li>When using the <code>-m31 -mzarch</code> options the generated
966
code still conforms to the 32-bit ABI but uses the general
967
purpose registers as 64-bit registers internally. This
968
requires a Linux kernel saving the whole 64-bit registers when
969
doing a context switch. Kernels providing that feature
970
indicate that by the 'highgprs' string
971
in <code>/proc/cpuinfo</code>.</li>
972
<li>The SSA loop prefetching pass is enabled when
973
using <code>-O3</code>.</li>
978
<li>GCC now supports the LEON series of SPARC V8 processors. The
979
code generated by the compiler can either be tuned to it by means
980
of the <code>--with-tune=leon</code> configure option and
981
<code>-mtune=leon</code> compilation option, or the compiler can
982
be built for the <code>sparc-leon-{elf,linux}</code> and
983
<code>sparc-leon3-{elf,linux}</code> targets directly.</li>
984
<li>GCC has stopped sign/zero-extending parameter registers in the
985
callee for functions taking parameters with sub-word size in 32-bit
986
mode, since this is redundant with the specification of the ABI.
987
GCC has never done so in 64-bit mode since this is also redundant.</li>
990
<h2 id="os">Operating Systems</h2>
992
<h3 id="android">Android</h3>
994
<li>GCC now supports the Bionic C library and provides a convenient
995
way of building native libraries and applications for the Android
997
Refer to the documentation of the <code>-mandroid</code> and
998
<code>-mbionic</code> options for details on building native code.
999
At the moment, Android support is enabled only for ARM.</li>
1002
<h3 id="darwin">Darwin/Mac OS X</h3>
1006
<li>Initial support for <code>CFString</code> types has been
1007
added.<br /> This allows GCC to build projects including the system
1008
<em>Core Foundation</em> frameworks. The GCC Objective-C family
1009
supports <code>CFString</code> "toll-free bridged" as per the Mac
1010
OS X system tools. <code>CFString</code> is also recognized in the
1011
context of <code>format</code> attributes and arguments (see the
1012
documentation for <code>format</code> attributes for limitations).
1013
At present, 8-bit character types are supported.</li>
1014
<li>LTO-support.<br />Darwin has benefited from ongoing work on
1015
LTO; support for this is now stable and enabled by default.</li>
1016
<li>Object file size reduction.<br /> The Darwin zeroed memory
1017
allocators have been re-written to make more use of
1018
<code>.zerofill</code> sections. For non-debug code, this can
1019
reduce object file size significantly.</li>
1021
<li>x86 Architecture
1023
<li>The <code>-mdynamic-no-pic</code> option has been
1024
enabled.<br />Code supporting <code>-mdynamic-no-pic</code>
1025
optimization has been added and is applicable to <code>-m32</code>
1026
builds. The compiler bootstrap uses the option where
1028
<li>The default value for <code>-mtune=</code> has been
1029
changed.<br />Since Darwin systems are primarily Xeon, Core-2 or
1030
similar the default tuning has been changed to
1031
<code>-mtune=core2</code>.</li>
1033
<li>PPC Architecture
1035
<li>Darwin64 ABI.<br />Several significant bugs have been fixed,
1036
such that GCC now produces code compatible with the Darwin64
1038
<li>libffi and boehm-gc.<br />The Darwin ports of the libffi and
1039
boehm-gc libraries have been upgraded to include a Darwin64
1040
implementation. This means that powerpc*-*-darwin9 platforms may
1041
now, for example, build Java applications with <code>-m64</code>
1043
<li>Plug-in support has been enabled.</li>
1044
<li>The <code>-fsection-anchors</code> option is now available
1045
although, presently, not heavily tested.</li>
1049
<h3 id="solaris">Solaris 2</h3>
1050
<h4>New Features</h4>
1052
<li>Support symbol versioning with the Sun linker.</li>
1053
<li>Allow libstdc++ to leverage full ISO C99 support on
1055
<li>Support thread-local storage (TLS) with the Sun assembler on
1057
<li>Support TLS on Solaris 8/9 if prerequisites are met.</li>
1058
<li>Support COMDAT group with the GNU assembler and recent Sun
1060
<li>Support the Sun assembler visibility syntax.</li>
1061
<li>Default Solaris 2/x86 to <code>-march=pentium4</code> (Solaris
1062
10+) resp. <code>-march=pentiumpro</code> (Solaris 8/9).</li>
1063
<li>Don't use SSE on Solaris 8/9 x86 by default.</li>
1064
<li>Enable 128-bit long double (<code>__float128</code>) support on
1069
<li>Change the ABI for returning 8-byte vectors like
1070
<code>__m64</code> in MMX registers on Solaris 10+/x86 to match the
1071
Sun Studio 12.1+ compilers. <em>This is an incompatible change.
1072
If you use such types, you must either recompile all your code with
1073
the new compiler or use the new <code>-mvect8-ret-in-mem</code>
1074
option to remain compatible with previous versions of GCC and
1075
Sun Studio.</em></li>
1078
<h3 id="windows">Windows x86/x86_64</h3>
1080
<li>Initial support for decimal floating point.</li>
1081
<li>Support for the <code>__thiscall</code> calling-convention.</li>
1082
<li>Support for hot-patchable function prologues via the
1083
<code>ms_hook_prologue</code> attribute for x86_64 in addition to 32-bit x86.</li>
1084
<li>Improvements of stack-probing and stack-allocation mechanisms.</li>
1085
<li>Support of push/pop-macro pragma as preprocessor command.<br />
1086
With <code>#pragma push_macro("macro-name")</code> the
1087
current definition of <code>macro-name</code> is saved and can be
1088
restored with <code>#pragma pop_macro("macro-name")</code>
1089
to its saved definition.</li>
1090
<li>Enable 128-bit long double (<code>__float128</code>) support on
1091
MinGW and Cygwin.</li>
1094
<h2>Documentation improvements</h2>
1096
<h2>Other significant improvements</h2>
1098
<h3>Installation changes</h3>
1102
An <code>install-strip</code> <code>make</code> target is provided
1103
that installs stripped executables, and may install libraries with
1104
unneeded or debugging sections stripped.
1108
On Power7 systems, there is a potential problem if you build the GCC
1109
compiler with a host compiler using options that enables the VSX
1110
instruction set generation. If the host compiler has been patched so that
1111
the <code>vec_ld</code> and <code>vec_st</code> builtin functions
1112
generate Altivec memory instructions instead of VSX memory instructions,
1113
then you should be able to build the compiler with VSX instruction
1118
<h2>Changes for GCC Developers</h2>
1120
<p>Note: these changes concern developers that develop GCC itself or
1121
software that integrates with GCC, such as plugins, and not the
1122
general GCC users.</p>
1126
The <code>gengtype</code> utility, which previously was internal to
1127
the GCC build process, has been enchanced to provide GC root
1128
information for plugins as necessary.
1131
The old GC allocation interface of <code>ggc_alloc</code> and
1132
friends was replaced with a type-safe alternative.
1139
<!-- ==================================================================== -->
1141
<div class="copyright">
1143
<p>Please send FSF & GNU inquiries & questions to
1144
<a href="mailto:gnu@gnu.org">gnu@gnu.org</a>.
1145
There are also <a href="http://www.gnu.org/home.html#ContactInfo">other ways
1146
to contact</a> the FSF.</p>
1148
<p>These pages are <a href="http://gcc.gnu.org/about.html">maintained by
1149
the GCC team</a>.</p>
1151
<address>For questions related to the use of GCC, please consult these web
1152
pages and the <a href="http://gcc.gnu.org/onlinedocs/">GCC manuals</a>. If
1153
that fails, the <a href="mailto:gcc-help@gcc.gnu.org">gcc-help@gcc.gnu.org</a>
1154
mailing list might help.<br />
1155
Please send comments on these web pages and the development of GCC to our
1156
developer list at <a href="mailto:gcc@gcc.gnu.org">gcc@gcc.gnu.org</a>.
1157
All of our lists have
1158
<a href="http://gcc.gnu.org/lists.html">public archives</a>.
1161
<p>Copyright (C) Free Software Foundation, Inc.<br />
1162
Verbatim copying and distribution of this entire article is
1163
permitted in any medium, provided this notice is preserved.</p>
1165
<table width="100%" border="0"><tr><td>
1166
<!-- IGNORE DIFF -->Last modified 2011-03-22
1167
</td><td align="right" valign="bottom">
1168
<a href="http://validator.w3.org/check/referer">
1169
<img src="http://www.w3.org/Icons/valid-xhtml10"
1170
alt="Valid XHTML 1.0" border="0" width="88" height="31" />
1177
<!-- ==================================================================== -->