OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [NEWS] - Blame information for rev 450

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 263 jeremybenn
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,
5
see ONEWS.
6
 
7
======================================================================
8
http://gcc.gnu.org/gcc-4.5/index.html
9
 
10
                           GCC 4.5 Release Series
11
 
12
   July 31, 2010
13
 
14
   The [1]GNU project and the GCC developers are pleased to announce the
15
   release of GCC 4.5.1.
16
 
17
   This release is a bug-fix release, containing fixes for regressions in
18
   GCC 4.5.0 relative to previous releases of GCC.
19
 
20
Release History
21
 
22
   GCC 4.5.1
23
          Jul 31, 2010 ([2]changes)
24
 
25
   GCC 4.5.0
26
          April 14, 2010 ([3]changes)
27
 
28
References and Acknowledgements
29
 
30
   GCC used to stand for the GNU C Compiler, but since the compiler
31
   supports several other languages aside from C, it now stands for the
32
   GNU Compiler Collection.
33
 
34
   A list of [4]successful builds is updated as new information becomes
35
   available.
36
 
37
   The GCC developers would like to thank the numerous people that have
38
   contributed new features, improvements, bug fixes, and other changes as
39
   well as test results to GCC. This [5]amazing group of volunteers is
40
   what makes GCC successful.
41
 
42
   For additional information about GCC please refer to the [6]GCC project
43
   web site or contact the [7]GCC development mailing list.
44
 
45
   To obtain GCC please use [8]our mirror sites or [9]our SVN server.
46
 
47
   Please send FSF & GNU inquiries & questions to [10]gnu@gnu.org. There
48
   are also [11]other ways to contact the FSF.
49
 
50
   These pages are [12]maintained by the GCC team.
51
 
52
 
53
    For questions related to the use of GCC, please consult these web
54
    pages and the [13]GCC manuals. If that fails, the
55
    [14]gcc-help@gcc.gnu.org mailing list might help.
56
    Please send comments on these web pages and the development of GCC to
57
    our developer mailing list at [15]gcc@gnu.org or [16]gcc@gcc.gnu.org.
58
    All of our lists have [17]public archives.
59
 
60
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
61
   Floor, Boston, MA 02110, USA.
62
 
63
   Verbatim copying and distribution of this entire article is permitted
64
   in any medium, provided this notice is preserved.
65
   Last modified 2010-07-31 [18]Valid XHTML 1.0
66
 
67
References
68
 
69
   1. http://www.gnu.org/
70
   2. http://gcc.gnu.org/gcc-4.5/changes.html
71
   3. http://gcc.gnu.org/gcc-4.5/changes.html
72
   4. http://gcc.gnu.org/gcc-4.5/buildstat.html
73
   5. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
74
   6. http://gcc.gnu.org/index.html
75
   7. mailto:gcc@gcc.gnu.org
76
   8. http://gcc.gnu.org/mirrors.html
77
   9. http://gcc.gnu.org/svn.html
78
  10. mailto:gnu@gnu.org
79
  11. http://www.gnu.org/home.html#ContactInfo
80
  12. http://gcc.gnu.org/about.html
81
  13. http://gcc.gnu.org/onlinedocs/
82
  14. mailto:gcc-help@gcc.gnu.org
83
  15. mailto:gcc@gnu.org
84
  16. mailto:gcc@gcc.gnu.org
85
  17. http://gcc.gnu.org/lists.html
86
  18. http://validator.w3.org/check/referer
87
======================================================================
88
http://gcc.gnu.org/gcc-4.5/changes.html
89
 
90
                           GCC 4.5 Release Series
91
                      Changes, New Features, and Fixes
92
 
93
Caveats
94
 
95
     * GCC now requires the [1]MPC library in order to build. See the
96
       [2]prerequisites page for version requirements.
97
     * Support for a number of older systems and recently unmaintained or
98
       untested target ports of GCC has been declared obsolete in GCC 4.5.
99
       Unless there is activity to revive them, the next release of GCC
100
       will have their sources permanently removed.
101
       The following ports for individual systems on particular
102
       architectures have been obsoleted:
103
          + IRIX releases before 6.5 (mips-sgi-irix5*,
104
            mips-sgi-irix6.[0-4])
105
          + Solaris 7 (*-*-solaris2.7)
106
          + Tru64 UNIX releases before V5.1 (alpha*-dec-osf4*,
107
            alpha-dec-osf5.0*)
108
          + Details for the IRIX, Solaris 7, and Tru64 UNIX obsoletions
109
            can be found in the [3]announcement.
110
       Support for the classic POWER architecture implemented in the
111
       original RIOS and RIOS2 processors of the old IBM RS/6000 product
112
       line has been obsoleted in the rs6000 port. This does not affect
113
       the new generation Power and PowerPC architectures.
114
     * Support has been removed for all the [4]configurations obsoleted in
115
       GCC 4.4.
116
     * Support has been removed for the protoize and unprotoize utilities,
117
       obsoleted in GCC 4.4.
118
     * Support has been removed for tuning for Itanium1 (Merced) variants.
119
       Note that code tuned for Itanium2 should also run correctly on
120
       Itanium1.
121
     * GCC now generates unwind info also for epilogues. DWARF debuginfo
122
       generated by GCC now uses more features of DWARF3 than it used to
123
       do and also some DWARF4 features. GDB older than 7.0 is not able to
124
       handle either of these, so to debug GCC 4.5 generated binaries or
125
       libraries GDB 7.0 or later is needed. You can disable use of DWARF4
126
       features with -gdwarf-3 -gstrict-dwarf options, or with -gdwarf-2
127
       -gstrict-dwarf restrict GCC to just DWARF2 standard, but epilogue
128
       unwind info is emitted unconditionally whenever unwind info is
129
       emitted.
130
     * On x86 targets, code containing floating-point calculations may run
131
       significantly slower when compiled with GCC 4.5 in strict C99
132
       conformance mode than they did with earlier GCC versions. This is
133
       due to stricter standard conformance of the compiler and can be
134
       avoided by using the option -fexcess-precision=fast; also see
135
       [5]below.
136
     * The function attribute noinline no longer prevents GCC from cloning
137
       the function. A new attribute noclone has been introduced for this
138
       purpose. Cloning a function means that it is duplicated and the new
139
       copy is specialized for certain contexts (for example when a
140
       parameter is a known constant).
141
 
142
General Optimizer Improvements
143
 
144
     * The -save-temps now takes an optional argument. The -save-temps and
145
       -save-temps=cwd switches write the temporary files in the current
146
       working directory based on the original source file. The
147
       -save-temps=obj switch will write files into the directory
148
       specified with the -o option, and the intermediate filenames are
149
       based on the output file. This will allow the user to get the
150
       compiler intermediate files when doing parallel builds without two
151
       builds of the same filename located in different directories from
152
       interfering with each other.
153
     * Debugging dumps are now created in the same directory as the object
154
       file rather than in the current working directory. This allows the
155
       user to get debugging dumps when doing parallel builds without two
156
       builds of the same filename interfering with each other.
157
     * GCC has been integrated with the [6]MPC library. This allows GCC to
158
       evaluate complex arithmetic at compile time [7]more accurately. It
159
       also allows GCC to evaluate calls to complex built-in math
160
       functions having constant arguments and replace them at compile
161
       time with their mathematically equivalent results. In doing so, GCC
162
       can generate correct results regardless of the math library
163
       implementation or floating point precision of the host platform.
164
       This also allows GCC to generate identical results regardless of
165
       whether one compiles in native or cross-compile configurations to a
166
       particular target. The following built-in functions take advantage
167
       of this new capability: cacos, cacosh, casin, casinh, catan,
168
       catanh, ccos, ccosh, cexp, clog, cpow, csin, csinh, csqrt, ctan,
169
       and ctanh. The float and long double variants of these functions
170
       (e.g. csinf and csinl) are also handled.
171
     * A new link-time optimizer has been added ([8]-flto). When this
172
       option is used, GCC generates a bytecode representation of each
173
       input file and writes it to special ELF sections in each object
174
       file. When the object files are linked together, all the function
175
       bodies are read from these ELF sections and instantiated as if they
176
       had been part of the same translation unit. This enables
177
       interprocedural optimizations to work across different files (and
178
       even different languages), potentially improving the performance of
179
       the generated code. To use the link-timer optimizer, -flto needs to
180
       be specified at compile time and during the final link. If the
181
       program does not require any symbols to be exported, it is possible
182
       to combine -flto and the experimental [9]-fwhopr with
183
       [10]-fwhole-program to allow the interprocedural optimizers to use
184
       more aggressive assumptions.
185
     * The automatic parallelization pass was enhanced to support
186
       parallelization of outer loops.
187
     * Automatic parallelization can be enabled as part of Graphite. In
188
       addition to -ftree-parallelize-loops=, specify
189
       -floop-parallelize-all to enable the Graphite-based optimization.
190
     * The infrastructure for optimizing based on [11]restrict qualified
191
       pointers has been rewritten and should result in code generation
192
       improvements. Optimizations based on restrict qualified pointers
193
       are now also available when using -fno-strict-aliasing.
194
     * There is a new optimization pass that attempts to change prototype
195
       of functions to avoid unused parameters, pass only relevant parts
196
       of structures and turn arguments passed by reference to arguments
197
       passed by value when possible. It is enabled by -O2 and above as
198
       well as -Os and can be manually invoked using the new command-line
199
       switch -fipa-sra.
200
     * GCC now optimize exception handling code. In particular cleanup
201
       regions that are proved to not have any effect are optimized out.
202
 
203
New Languages and Language specific improvements
204
 
205
  All languages
206
 
207
     * The -fshow-column option is now on by default. This means error
208
       messages now have a column associated with them.
209
 
210
  Ada
211
 
212
     * Compilation of programs heavily using discriminated record types
213
       with variant parts has been sped up and generates more compact
214
       code.
215
     * Stack checking now works reasonably well on most plaforms. In some
216
       specific cases, stack overflows may still fail to be detected, but
217
       a compile-time warning will be issued for these cases.
218
 
219
  C family
220
 
221
     * If a header named in a #include directive is not found, the
222
       compiler exits immediately. This avoids a cascade of errors arising
223
       from declarations expected to be found in that header being
224
       missing.
225
     * A new built-in function __builtin_unreachable() has been added that
226
       tells the compiler that control will never reach that point. It may
227
       be used after asm statements that terminate by transferring control
228
       elsewhere, and in other places that are known to be unreachable.
229
     * The -Wlogical-op option now warns for logical expressions such as
230
       (c == 1 && c == 2) and (c != 1 || c != 2), which are likely to be
231
       mistakes. This option is disabled by default.
232
     * An asm goto feature has been added to allow asm statements that
233
       jump to C labels.
234
     * C++0x raw strings are supported for C++ and for C with -std=gnu99.
235
     * The deprecated attribute now takes an optional string argument, for
236
       example, __attribute__((deprecated("text string"))), that will be
237
       printed together with the deprecation warning.
238
 
239
  C
240
 
241
     * The -Wenum-compare option, which warns when comparing values of
242
       different enum types, now works for C. It formerly only worked for
243
       C++. This warning is enabled by -Wall. It may be avoided by using a
244
       type cast.
245
     * The -Wcast-qual option now warns about casts which are unsafe in
246
       that they permit const-correctness to be violated without further
247
       warnings. Specifically, it warns about cases where a qualifier is
248
       added when all the lower types are not const. For example, it warns
249
       about a cast from char ** to const char **.
250
     * The -Wc++-compat option is significantly improved. It issues new
251
       warnings for:
252
          + Using C++ reserved operator names as identifiers.
253
          + Conversions to enum types without explicit casts.
254
          + Using va_arg with an enum type.
255
          + Using different enum types in the two branches of ?:.
256
          + Using ++ or -- on a variable of enum type.
257
          + Using the same name as both a struct, union or enum tag and a
258
            typedef, unless the typedef refers to the tagged type itself.
259
          + Using a struct, union, or enum which is defined within another
260
            struct or union.
261
          + A struct field defined using a typedef if there is a field in
262
            the struct, or an enclosing struct, whose name is the typedef
263
            name.
264
          + Duplicate definitions at file scope.
265
          + Uninitialized const variables.
266
          + A global variable with an anonymous struct, union, or enum
267
            type.
268
          + Using a string constant to initialize a char array whose size
269
            is the length of the string.
270
     * The new -Wjump-misses-init option warns about cases where a goto or
271
       switch skips the initialization of a variable. This sort of branch
272
       is an error in C++ but not in C. This warning is enabled by
273
       -Wc++-compat.
274
     * GCC now ensures that a C99-conforming  is present on most
275
       targets, and uses information about the types in this header to
276
       implement the Fortran bindings to those types. GCC does not ensure
277
       the presence of such a header, and does not implement the Fortran
278
       bindings, on the following targets: NetBSD, VxWorks, VMS,
279
       SymbianOS, WinCE, LynxOS, Netware, QNX, Interix, TPF.
280
     * GCC now implements C90- and C99-conforming rules for constant
281
       expressions. This may cause warnings or errors for some code using
282
       expressions that can be folded to a constant but are not constant
283
       expressions as defined by ISO C.
284
     * All known target-independent C90 and C90 Amendment 1 conformance
285
       bugs, and all known target-independent C99 conformance bugs not
286
       related to floating point or extended identifiers, have been fixed.
287
     * The C decimal floating point support now includes support for the
288
       FLOAT_CONST_DECIMAL64 pragma.
289
     * The named address space feature from ISO/IEC TR 18037 is now
290
       supported. This is currently only implemented for the SPU
291
       processor.
292
 
293
  C++
294
 
295
     * Improved [12]experimental support for the upcoming C++0x ISO C++
296
       standard, including support for raw strings, lambda expressions and
297
       explicit type conversion operators.
298
     * When printing the name of a class template specialization, G++ will
299
       now omit any template arguments which come from default template
300
       arguments. This behavior (and the pretty-printing of function
301
       template specializations as template signature and arguments) can
302
       be disabled with the -fno-pretty-templates option.
303
     * Access control is now applied to typedef names used in a template,
304
       which may cause G++ to reject some ill-formed code that was
305
       accepted by earlier releases. The -fno-access-control option can be
306
       used as a temporary workaround until the code is corrected.
307
     * Compilation time for code that uses templates should now scale
308
       linearly with the number of instantiations rather than
309
       quadratically, as template instantiations are now looked up using
310
       hash tables.
311
     * Declarations of functions that look like builtin declarations of
312
       library functions are only considered to be redeclarations if they
313
       are declared with extern "C". This may cause problems with code
314
       that omits extern "C" on hand-written declarations of C library
315
       functions such as abort or memcpy. Such code is ill-formed, but was
316
       accepted by earlier releases.
317
     * Diagnostics that used to complain about passing non-POD types to
318
       ... or jumping past the declaration of a non-POD variable now check
319
       for triviality rather than PODness, as per C++0x.
320
     * In C++0x mode local and anonymous classes are now allowed as
321
       template arguments, and in declarations of variables and functions
322
       with linkage, so long as any such declaration that is used is also
323
       defined ([13]DR 757).
324
     * Labels may now have attributes, as has been permitted for a while
325
       in C. This is only permitted when the label definition and the
326
       attribute specifier is followed by a semicolon--i.e., the label
327
       applies to an empty statement. The only useful attribute for a
328
       label is unused.
329
     * G++ now implements [14]DR 176. Previously G++ did not support using
330
       the injected-class-name of a template base class as a type name,
331
       and lookup of the name found the declaration of the template in the
332
       enclosing scope. Now lookup of the name finds the
333
       injected-class-name, which can be used either as a type or as a
334
       template, depending on whether or not the name is followed by a
335
       template argument list. As a result of this change, some code that
336
       was previously accepted may be ill-formed because
337
         1. The injected-class-name is not accessible because it's from a
338
            private base, or
339
         2. The injected-class-name cannot be used as an argument for a
340
            template template parameter.
341
       In either of these cases, the code can be fixed by adding a
342
       nested-name-specifier to explicitly name the template. The first
343
       can be worked around with -fno-access-control; the second is only
344
       rejected with -pedantic.
345
     * A new standard mangling for SIMD vector types has been added, to
346
       avoid name clashes on systems with vectors of varying length. By
347
       default the compiler still uses the old mangling, but emits aliases
348
       with the new mangling on targets that support strong aliases. Users
349
       can switch over entirely to the new mangling with -fabi-version=4
350
       or -fabi-version=0. -Wabi will now warn about code that uses the
351
       old mangling.
352
     * The command-line option -ftemplate-depth-N is now written as
353
       -ftemplate-depth=N and the old form is deprecated.
354
     * Conversions between NULL and non-pointer types are now warned by
355
       default. The new option -Wno-conversion-null disables these
356
       warnings. Previously these warnings were only available when using
357
       -Wconversion explicitly.
358
 
359
    Runtime Library (libstdc++)
360
 
361
     * [15]Improved experimental support for the upcoming ISO C++
362
       standard, C++0x, including:
363
          + Support for , , and .
364
          + Existing facilities now exploit explicit operators and the
365
            newly implemented core C++0x features.
366
     * An experimental [16]profile mode has been added. This is an
367
       implementation of many C++ standard library constructs with an
368
       additional analysis layer that gives performance improvement advice
369
       based on recognition of suboptimal usage patterns. For example,
370
#include 
371
int main()
372
{
373
  std::vector v;
374
  for (int k = 0; k < 1024; ++k)
375
    v.insert(v.begin(), k);
376
}
377
 
378
       When instrumented via the profile mode, can return suggestions
379
       about the initial size and choice of the container used as follows:
380
vector-to-list: improvement = 5: call stack = 0x804842c ...
381
    : advice = change std::vector to std::list
382
vector-size: improvement = 3: call stack = 0x804842c ...
383
    : advice = change initial container size from 0 to 1024
384
 
385
       These constructs can be substituted for the normal libstdc++
386
       constructs on a piecemeal basis, or all existing components can be
387
       transformed via the -D_GLIBCXX_PROFILE macro.
388
     * [17]Support for decimal floating-point arithmetic (aka ISO C++ TR
389
       24733) has been added. This support is in header file
390
       , uses namespace std::decimal, and includes
391
       classes decimal32, decimal64, and decimal128.
392
     * Sources have been audited for application of function attributes
393
       nothrow, const, pure, and noreturn.
394
     * Python pretty-printers have been added for many standard library
395
       components that simplify the internal representation and present a
396
       more intuitive view of components when used with
397
       appropriately-advanced versions of GDB. For more information,
398
       please consult the more [18]detailed description.
399
     * The default behavior for comparing typeinfo names has changed, so
400
       in , __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.
401
     * The new -static-libstdc++ option directs g++ to link the C++
402
       library statically, even if the default would normally be to link
403
       it dynamically.
404
 
405
  Fortran
406
 
407
     * The COMMON default padding has been changed - instead of adding the
408
       padding before a variable it is now added afterwards, which
409
       increases the compatibility with other vendors and helps to obtain
410
       the correct output in some cases. Cf. also the -falign-commons
411
       option ([19]added in 4.4).
412
     * The -finit-real= option now also supports the value snan for
413
       signalling not-a-number; to be effective, one additionally needs to
414
       enable trapping (e.g. via -ffpe-trap=). Note: Compile-time
415
       optimizations can turn a signalling NaN into a quiet one.
416
     * The new option -fcheck= has been added with the options bounds,
417
       array-temps, do, pointer, and recursive. The bounds and array-temps
418
       options are equivalent to -fbounds-check and
419
       -fcheck-array-temporaries. The do option checks for invalid
420
       modification of loop iteration variables, and the recursive option
421
       tests for recursive calls to subroutines/functions which are not
422
       marked as recursive. With pointer pointer association checks in
423
       calls are performed; however, neither undefined pointers nor
424
       pointers in expressions are handled. Using -fcheck=all enables all
425
       these run-time checks.
426
     * The run-time checking -fcheck=bounds now warns about invalid string
427
       lengths of character dummy arguments. Additionally, more
428
       compile-time checks have been added.
429
     * The new option [20]-fno-protect-parens has been added; if set, the
430
       compiler may reorder REAL and COMPLEX expressions without regard to
431
       parentheses.
432
     * GNU Fortran no longer links against libgfortranbegin. As before,
433
       MAIN__ (assembler symbol name) is the actual Fortran main program,
434
       which is invoked by the main function. However, main is now
435
       generated and put in the same object file as MAIN__. For the time
436
       being, libgfortranbegin still exists for backward compatibility.
437
       For details see the new [21]Mixed-Language Programming chapter in
438
       the manual.
439
     * The I/O library was restructured for performance and cleaner code.
440
     * Array assignments and WHERE are now run in parallel when OpenMP's
441
       WORKSHARE is used.
442
     * The experimental option -fwhole-file was added. The option allows
443
       whole-file checking of procedure arguments and allows for better
444
       optimizations. It can also be used with -fwhole-program, which is
445
       now also supported in gfortran.
446
     * More Fortran 2003 and Fortran 2008 mathematical functions can now
447
       be used as initialization expressions.
448
     * Some extended attributes such as STDCALL are now supported via the
449
       [22]GCC$ compiler directive.
450
     * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN
451
       intrinsic behaves now as if zero were always positive.
452
     * For legacy compatibiliy: On Cygwin and MinGW, the special files
453
       CONOUT$ and CONIN$ (and CONERR$ which maps to CONOUT$) are now
454
       supported.
455
     * Fortran 2003 support has been extended:
456
          + Procedure-pointer function results and procedure-pointer
457
            components (including PASS),
458
          + allocatable scalars (experimental),
459
          + DEFERRED type-bound procedures,
460
          + the ERRMSG= argument of the ALLOCATE and DEALLOCATE statements
461
            have been implemented.
462
          + The ALLOCATE statement supports type-specs and the SOURCE=
463
            argument.
464
          + OPERATOR(*) and ASSIGNMENT(=) are now allowed as GENERIC
465
            type-bound procedure (i.e. as type-bound operators).
466
          + Rounding (ROUND=, RZ, ...) for output is now supported.
467
          + The INT_FAST{8,16,32,64,128}_T kind type parameters of the
468
            intrinsic module ISO_C_BINDING are now supported, except for
469
            the targets listed above as ones where GCC does not have
470
             type information.
471
          + Extensible derived types with type-bound procedure or
472
            procedure pointer with PASS attribute now have to use CLASS in
473
            line with the Fortran 2003 standard; the workaround to use
474
            TYPE is no longer supported.
475
          + [23]Experimental, incomplete support for polymorphism,
476
            including CLASS, SELECT TYPE and dynamic dispatch of
477
            type-bound procedure calls. Some features do not work yet such
478
            as unlimited polymorphism (CLASS(*)).
479
     * Fortran 2008 support has been extended:
480
          + The OPEN statement now supports the NEWUNIT= option, which
481
            returns a unique file unit, thus preventing inadvertent use of
482
            the same unit in different parts of the program.
483
          + Support for unlimited format items has been added.
484
          + The INT{8,16,32} and REAL{32,64,128} kind type parameters of
485
            the intrinsic module ISO_FORTRAN_ENV are now supported.
486
          + Using complex arguments with TAN, SINH, COSH, TANH, ASIN,
487
            ACOS, and ATAN is now possible; the functions ASINH, ACOSH,
488
            and ATANH have been added (for real and complex arguments) and
489
            ATAN(Y,X) is now an alias for ATAN2(Y,X).
490
          + The BLOCK construct has been implemented.
491
 
492
  Java (GCJ)
493
 
494
New Targets and Target Specific Improvements
495
 
496
  AIX
497
 
498
     * Full cross-toolchain support now available with GNU Binutils
499
 
500
  ARM
501
 
502
     * GCC now supports the Cortex-M0 and Cortex-A5 processors.
503
     * GCC now supports the ARM v7E-M architecture.
504
     * GCC now supports VFPv4-based FPUs and FPUs with
505
       single-precision-only VFP.
506
     * GCC has many improvements to optimization for other ARM processors,
507
       including scheduling support for the integer pipeline on Cortex-A9.
508
     * GCC now supports the IEEE 754-2008 half-precision floating-point
509
       type, and a variant ARM-specific half-precision type. This type is
510
       specified using __fp16, with the layout determined by
511
       -mfp16-format. With appropriate -mfpu options, the Cortex-A9 and
512
       VFPv4 half-precision instructions will be used.
513
     * GCC now supports the variant of AAPCS that uses VFP registers for
514
       parameter passing and return values.
515
 
516
  AVR
517
 
518
     * The -mno-tablejump option has been removed because it has the same
519
       effect as the -fno-jump-tables option.
520
     * Added support for these new AVR devices:
521
          + ATmega8U2
522
          + ATmega16U2
523
          + ATmega32U2
524
 
525
  IA-32/x86-64
526
 
527
     * GCC now will set the default for -march= based on the configure
528
       target.
529
     * GCC now supports handling floating-point excess precision arising
530
       from use of the x87 floating-point unit in a way that conforms to
531
       ISO C99. This is enabled with -fexcess-precision=standard and with
532
       standards conformance options such as -std=c99, and may be disabled
533
       using -fexcess-precision=fast.
534
     * Support for the Intel Atom processor is now available through the
535
       -march=atom and -mtune=atom options.
536
     * A new -mcrc32 option is now available to enable crc32 intrinsics.
537
     * A new -mmovbe option is now available to enable GCC to use the
538
       movbe instruction to implement __builtin_bswap32 and
539
       __builtin_bswap64.
540
     * SSE math now can be enabled by default at configure time with the
541
       new --with-fpmath=sse option.
542
     * There is a new intrinsic header file, . It should be
543
       included before using any IA-32/x86-64 intrinsics.
544
     * Support for the XOP, FMA4, and LWP instruction sets for the AMD
545
       Orochi processors are now available with the -mxop, -mfma4, and
546
       -mlwp options.
547
     * The -mabm option enables GCC to use the popcnt and lzcnt
548
       instructions on AMD processors.
549
     * The -mpopcnt option enables GCC to use the popcnt instructions on
550
       both AMD and Intel processors.
551
 
552
  M68K/ColdFire
553
 
554
     * GCC now supports ColdFire 51xx, 5221x, 5225x, 52274, 52277, 5301x
555
       and 5441x devices.
556
     * GCC now supports thread-local storage (TLS) on M68K and ColdFire
557
       processors.
558
 
559
  MeP
560
 
561
   Support has been added for the Toshiba Media embedded Processor (MeP,
562
   or mep-elf) embedded target.
563
 
564
  MIPS
565
 
566
     * GCC now supports MIPS 1004K processors.
567
     * GCC can now be configured with options --with-arch-32,
568
       --with-arch-64, --with-tune-32 and --with-tune-64 to control the
569
       default optimization separately for 32-bit and 64-bit modes.
570
     * MIPS targets now support an alternative _mcount interface, in which
571
       register $12 points to the function's save slot for register $31.
572
       This interface is selected by the -mcount-ra-address option; see
573
       the documentation for more details.
574
     * GNU/Linux targets can now generate read-only .eh_frame sections.
575
       This optimization requires GNU binutils 2.20 or above, and is only
576
       available if GCC is configured with a suitable version of binutils.
577
     * GNU/Linux targets can now attach special relocations to indirect
578
       calls, so that the linker can turn them into direct jumps or
579
       branches. This optimization requires GNU binutils 2.20 or later,
580
       and is automatically selected if GCC is configured with an
581
       appropriate version of binutils. It can be explicitly enabled or
582
       disabled using the -mrelax-pic-calls command-line option.
583
     * GCC now generates more heavily-optimized atomic operations on
584
       Octeon processors.
585
     * MIPS targets now support the -fstack-protector option.
586
     * GCC now supports an -msynci option, which specifies that synci is
587
       enough to flush the instruction cache, without help from the
588
       operating system. GCC uses this information to optimize
589
       automatically-generated cache flush operations, such as those used
590
       for nested functions in C. There is also a --with-synci
591
       configure-time option, which makes -msynci the default.
592
     * GCC supports four new function attributes for interrupt handlers:
593
       interrupt, use_shadow_register_set, keep_interrupts_masked and
594
       use_debug_exception_return. See the documentation for more details
595
       about these attributes.
596
 
597 333 jeremybenn
  OpenRISC 1000
598
 
599
     * GCC now generates global variables and functions without a leading
600
       underscore.
601
     * GCC now generates DWARF 2 debugging output by default (with -g).
602
     * -mhard-mul is enabled by default.
603
     * The -mor32-newlib and -mor32-newlib-uart options enable support for the
604
       OpenRISC newlib library implementations.
605
 
606 263 jeremybenn
  picochip
607
 
608
  RS/6000 (POWER/PowerPC)
609
 
610
     * GCC now supports the Power ISA 2.06, which includes the VSX
611
       instructions that add vector 64-bit floating point support, new
612
       population count instructions, and conversions between floating
613
       point and unsigned types.
614
     * Support for the power7 processor is now available through the
615
       -mcpu=power7 and -mtune=power7.
616
     * GCC will now vectorize loops that contain simple math functions
617
       like copysign when generating code for altivec or VSX targets.
618
     * Support for the A2 processor is now available through the -mcpu=a2
619
       and -mtune=a2 options.
620
     * Support for the 476 processor is now available through the
621
       -mcpu={476,476fp} and -mtune={476,476fp} options.
622
     * Support for the e500mc64 processor is now available through the
623
       -mcpu=e500mc64 and -mtune=e500mc64 options.
624
     * GCC can now be configured with options --with-cpu-32,
625
       --with-cpu-64, --with-tune-32 and --with-tune-64 to control the
626
       default optimization separately for 32-bit and 64-bit modes.
627
 
628
  RX
629
 
630
   Support has been added for the Renesas RX Processor (rx-elf) target.
631
 
632
Operating Systems
633
 
634
  Windows (Cygwin and MinGW)
635
 
636
     * GCC now installs all the major language runtime libraries as DLLs
637
       when configured with the --enable-shared option.
638
     * GCC now makes use of the new support for aligned common variables
639
       in versions of binutils >= 2.20 to fix bugs in the support for SSE
640
       data types.
641
     * Improvements to the libffi support library increase the reliability
642
       of code generated by GCJ on all Windows platforms. Libgcj is
643
       enabled by default for the first time.
644
     * Libtool improvements simplify installation by placing the generated
645
       DLLs in the correct binaries directory.
646
     * Numerous other minor bugfixes and improvements, and substantial
647
       enhancements to the Fortran language support library.
648
 
649
Documentation improvements
650
 
651
Other significant improvements
652
 
653
  Plugins
654
 
655
     * It is now possible to extend the compiler without having to modify
656
       its source code. A new option -fplugin=file.so tells GCC to load
657
       the shared object file.so and execute it as part of the compiler.
658
       The internal documentation describes the details on how plugins can
659
       interact with the compiler.
660
 
661
  Installation changes
662
 
663
     * The move to newer autotools changed default installation
664
       directories and switches to control them: The --with-datarootdir,
665
       --with-docdir, --with-pdfdir, and --with-htmldir switches are not
666
       used any more. Instead, you can now use --datarootdir, --docdir,
667
       --htmldir, and --pdfdir. The default installation directories have
668
       changed as follows according to the GNU Coding Standards:
669
 
670
       datarootdir read-only architecture-independent data root [PREFIX/share]
671
       localedir   locale-specific message catalogs [DATAROOTDIR/locale]
672
       docdir      documentation root [DATAROOTDIR/doc/PACKAGE]
673
       htmldir     html documentation [DOCDIR]
674
       dvidir      dvi documentation [DOCDIR]
675
       pdfdir      pdf documentation [DOCDIR]
676
       psdir       ps documentation [DOCDIR]
677
       The following variables have new default values:
678
 
679
       datadir read-only architecture-independent data [DATAROOTDIR]
680
       infodir info documentation [DATAROOTDIR/info]
681
       mandir  man documentation [DATAROOTDIR/man]
682
 
683
GCC 4.5.1
684
 
685
   This is the [24]list of problem reports (PRs) from GCC's bug tracking
686
   system that are known to be fixed in the 4.5.1 release. This list might
687
   not be complete (that is, it is possible that some PRs that have been
688
   fixed are not listed here).
689
 
690
  All languages
691
 
692
     * GCC's new link-time optimizer ([25]-flto) now also works on a few
693
       non-ELF targets:
694
          + Cygwin (*-cygwin*)
695
          + MinGW (*-mingw*)
696
          + Darwin on x86-64 (x86_64-apple-darwin*)
697
       LTO is not enabled by default for these targets. To enable LTO, you
698
       should configure with the --enable-lto option.
699
 
700
   Please send FSF & GNU inquiries & questions to [26]gnu@gnu.org. There
701
   are also [27]other ways to contact the FSF.
702
 
703
   These pages are [28]maintained by the GCC team.
704
 
705
 
706
    For questions related to the use of GCC, please consult these web
707
    pages and the [29]GCC manuals. If that fails, the
708
    [30]gcc-help@gcc.gnu.org mailing list might help.
709
    Please send comments on these web pages and the development of GCC to
710
    our developer mailing list at [31]gcc@gnu.org or [32]gcc@gcc.gnu.org.
711
    All of our lists have [33]public archives.
712
 
713
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
714
   Floor, Boston, MA 02110, USA.
715
 
716
   Verbatim copying and distribution of this entire article is permitted
717
   in any medium, provided this notice is preserved.
718
   Last modified 2010-07-31 [34]Valid XHTML 1.0
719
 
720
References
721
 
722
   1. http://www.multiprecision.org/
723
   2. http://gcc.gnu.org/install/prerequisites.html
724
   3. http://gcc.gnu.org/ml/gcc/2010-01/msg00510.html
725
   4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted
726
   5. http://gcc.gnu.org/gcc-4.5/changes.html#x86
727
   6. http://www.multiprecision.org/
728
   7. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30789
729
   8. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
730
   9. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhopr-802
731
  10. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800
732
  11. http://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html
733
  12. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
734
  13. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
735
  14. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
736
  15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x
737
  16. http://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html
738
  17. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
739
  18. http://sourceware.org/gdb/wiki/STLSupport
740
  19. http://gcc.gnu.org/gcc-4.4/changes.html
741
  20. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
742
  21. http://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html
743
  22. http://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
744
  23. http://gcc.gnu.org/wiki/OOP
745
  24. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
746
  25. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
747
  26. mailto:gnu@gnu.org
748
  27. http://www.gnu.org/home.html#ContactInfo
749
  28. http://gcc.gnu.org/about.html
750
  29. http://gcc.gnu.org/onlinedocs/
751
  30. mailto:gcc-help@gcc.gnu.org
752
  31. mailto:gcc@gnu.org
753
  32. mailto:gcc@gcc.gnu.org
754
  33. http://gcc.gnu.org/lists.html
755
  34. http://validator.w3.org/check/referer
756
======================================================================
757
http://gcc.gnu.org/gcc-4.4/index.html
758
 
759
                           GCC 4.4 Release Series
760
 
761
   April 29, 2010
762
 
763
   The [1]GNU project and the GCC developers are pleased to announce the
764
   release of GCC 4.4.4.
765
 
766
   This release is a bug-fix release, containing fixes for regressions in
767
   GCC 4.4.3 relative to previous releases of GCC.
768
 
769
Release History
770
 
771
   GCC 4.4.4
772
          April 29, 2010 ([2]changes)
773
 
774
   GCC 4.4.3
775
          January 21, 2010 ([3]changes)
776
 
777
   GCC 4.4.2
778
          October 15, 2009 ([4]changes)
779
 
780
   GCC 4.4.1
781
          July 22, 2009 ([5]changes)
782
 
783
   GCC 4.4.0
784
          April 21, 2009 ([6]changes)
785
 
786
References and Acknowledgements
787
 
788
   GCC used to stand for the GNU C Compiler, but since the compiler
789
   supports several other languages aside from C, it now stands for the
790
   GNU Compiler Collection.
791
 
792
   A list of [7]successful builds is updated as new information becomes
793
   available.
794
 
795
   The GCC developers would like to thank the numerous people that have
796
   contributed new features, improvements, bug fixes, and other changes as
797
   well as test results to GCC. This [8]amazing group of volunteers is
798
   what makes GCC successful.
799
 
800
   For additional information about GCC please refer to the [9]GCC project
801
   web site or contact the [10]GCC development mailing list.
802
 
803
   To obtain GCC please use [11]our mirror sites or [12]our SVN server.
804
 
805
   Please send FSF & GNU inquiries & questions to [13]gnu@gnu.org. There
806
   are also [14]other ways to contact the FSF.
807
 
808
   These pages are [15]maintained by the GCC team.
809
 
810
 
811
    For questions related to the use of GCC, please consult these web
812
    pages and the [16]GCC manuals. If that fails, the
813
    [17]gcc-help@gcc.gnu.org mailing list might help.
814
    Please send comments on these web pages and the development of GCC to
815
    our developer mailing list at [18]gcc@gnu.org or [19]gcc@gcc.gnu.org.
816
    All of our lists have [20]public archives.
817
 
818
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
819
   Floor, Boston, MA 02110, USA.
820
 
821
   Verbatim copying and distribution of this entire article is permitted
822
   in any medium, provided this notice is preserved.
823
   Last modified 2010-07-01 [21]Valid XHTML 1.0
824
 
825
References
826
 
827
   1. http://www.gnu.org/
828
   2. http://gcc.gnu.org/gcc-4.4/changes.html
829
   3. http://gcc.gnu.org/gcc-4.4/changes.html
830
   4. http://gcc.gnu.org/gcc-4.4/changes.html
831
   5. http://gcc.gnu.org/gcc-4.4/changes.html
832
   6. http://gcc.gnu.org/gcc-4.4/changes.html
833
   7. http://gcc.gnu.org/gcc-4.4/buildstat.html
834
   8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
835
   9. http://gcc.gnu.org/index.html
836
  10. mailto:gcc@gcc.gnu.org
837
  11. http://gcc.gnu.org/mirrors.html
838
  12. http://gcc.gnu.org/svn.html
839
  13. mailto:gnu@gnu.org
840
  14. http://www.gnu.org/home.html#ContactInfo
841
  15. http://gcc.gnu.org/about.html
842
  16. http://gcc.gnu.org/onlinedocs/
843
  17. mailto:gcc-help@gcc.gnu.org
844
  18. mailto:gcc@gnu.org
845
  19. mailto:gcc@gcc.gnu.org
846
  20. http://gcc.gnu.org/lists.html
847
  21. http://validator.w3.org/check/referer
848
======================================================================
849
http://gcc.gnu.org/gcc-4.4/changes.html
850
 
851
                           GCC 4.4 Release Series
852
                      Changes, New Features, and Fixes
853
 
854
   The latest release in the 4.4 release series is [1]GCC 4.4.4.
855
 
856
Caveats
857
 
858
     * __builtin_stdarg_start has been completely removed from GCC.
859
       Support for  had been deprecated since GCC 4.0. Use
860
       __builtin_va_start as a replacement.
861
     * Some of the errors issued by the C++ front end that could be
862
       downgraded to warnings in previous releases by using -fpermissive
863
       are now warnings by default. They can be converted into errors by
864
       using -pedantic-errors.
865
     * Use of the cpp assertion extension will now emit a warning when
866
       -Wdeprecated or -pedantic is used. This extension has been
867
       deprecated for many years, but never warned about.
868
     * Packed bit-fields of type char were not properly bit-packed on many
869
       targets prior to GCC 4.4. On these targets, the fix in GCC 4.4
870
       causes an ABI change. For example there is no longer a 4-bit
871
       padding between field a and b in this structure:
872
    struct foo
873
    {
874
      char a:4;
875
      char b:8;
876
    } __attribute__ ((packed));
877
       There is a new warning to help identify fields that are affected:
878
    foo.c:5: note: Offset of packed bit-field 'b' has changed in GCC 4.4
879
       The warning can be disabled with -Wno-packed-bitfield-compat.
880
     * On ARM EABI targets, the C++ mangling of the va_list type has been
881
       changed to conform to the current revision of the EABI. This does
882
       not affect the libstdc++ library included with GCC.
883
     * The SCOUNT and POS bits of the MIPS DSP control register are now
884
       treated as global. Previous versions of GCC treated these fields as
885
       call-clobbered instead.
886
     * The MIPS port no longer recognizes the h asm constraint. It was
887
       necessary to remove this constraint in order to avoid generating
888
       unpredictable code sequences.
889
       One of the main uses of the h constraint was to extract the high
890
       part of a multiplication on 64-bit targets. For example:
891
    asm ("dmultu\t%1,%2" : "=h" (result) : "r" (x), "r" (y));
892
       You can now achieve the same effect using 128-bit types:
893
    typedef unsigned int uint128_t __attribute__((mode(TI)));
894
    result = ((uint128_t) x * y) >> 64;
895
       The second sequence is better in many ways. For example, if x and y
896
       are constants, the compiler can perform the multiplication at
897
       compile time. If x and y are not constants, the compiler can
898
       schedule the runtime multiplication better than it can schedule an
899
       asm statement.
900
     * Support for a number of older systems and recently unmaintained or
901
       untested target ports of GCC has been declared obsolete in GCC 4.4.
902
       Unless there is activity to revive them, the next release of GCC
903
       will have their sources permanently removed.
904
       The following ports for individual systems on particular
905
       architectures have been obsoleted:
906
          + Generic a.out on IA32 and m68k (i[34567]86-*-aout*,
907
            m68k-*-aout*)
908
          + Generic COFF on ARM, H8300, IA32, m68k and SH (arm-*-coff*,
909
            armel-*-coff*, h8300-*-*, i[34567]86-*-coff*, m68k-*-coff*,
910
            sh-*-*). This does not affect other more specific targets
911
            using the COFF object format on those architectures, or the
912
            more specific H8300 and SH targets (h8300-*-rtems*,
913
            h8300-*-elf*, sh-*-elf*, sh-*-symbianelf*, sh-*-linux*,
914
            sh-*-netbsdelf*, sh-*-rtems*, sh-wrs-vxworks).
915
          + 2BSD on PDP-11 (pdp11-*-bsd)
916
          + AIX 4.1 and 4.2 on PowerPC (rs6000-ibm-aix4.[12]*,
917
            powerpc-ibm-aix4.[12]*)
918
          + Tuning support for Itanium1 (Merced) variants. Note that code
919
            tuned for Itanium2 should also run correctly on Itanium1.
920
     * The protoize and unprotoize utilities have been obsoleted and will
921
       be removed in GCC 4.5. These utilities have not been installed by
922
       default since GCC 3.0.
923
     * Support has been removed for all the [2]configurations obsoleted in
924
       GCC 4.3.
925
     * Unknown -Wno-* options are now silently ignored by GCC if no other
926
       diagnostics are issued. If other diagnostics are issued, then GCC
927
       warns about the unknown options.
928
     * More information on porting to GCC 4.4 from previous versions of
929
       GCC can be found in the [3]porting guide for this release.
930
 
931
General Optimizer Improvements
932
 
933
     * A new command-line switch -findirect-inlining has been added. When
934
       turned on it allows the inliner to also inline indirect calls that
935
       are discovered to have known targets at compile time thanks to
936
       previous inlining.
937
     * A new command-line switch -ftree-switch-conversion has been added.
938
       This new pass turns simple initializations of scalar variables in
939
       switch statements into initializations from a static array, given
940
       that all the values are known at compile time and the ratio between
941
       the new array size and the original switch branches does not exceed
942
       the parameter --param switch-conversion-max-branch-ratio (default
943
       is eight).
944
     * A new command-line switch -ftree-builtin-call-dce has been added.
945
       This optimization eliminates unnecessary calls to certain builtin
946
       functions when the return value is not used, in cases where the
947
       calls can not be eliminated entirely because the function may set
948
       errno. This optimization is on by default at -O2 and above.
949
     * A new command-line switch -fconserve-stack directs the compiler to
950
       minimize stack usage even if it makes the generated code slower.
951
       This affects inlining decisions.
952
     * When the assembler supports it, the compiler will now emit unwind
953
       information using assembler .cfi directives. This makes it possible
954
       to use such directives in inline assembler code. The new option
955
       -fno-dwarf2-cfi-asm directs the compiler to not use .cfi
956
       directives.
957
     * The [4]Graphite branch has been merged. This merge has brought in a
958
       new framework for loop optimizations based on a polyhedral
959
       intermediate representation. These optimizations apply to all the
960
       languages supported by GCC. The following new code transformations
961
       are available in GCC 4.4:
962
          + -floop-interchange performs loop interchange transformations
963
            on loops. Interchanging two nested loops switches the inner
964
            and outer loops. For example, given a loop like:
965
          DO J = 1, M
966
            DO I = 1, N
967
              A(J, I) = A(J, I) * C
968
            ENDDO
969
          ENDDO
970
 
971
            loop interchange will transform the loop as if the user had
972
            written:
973
          DO I = 1, N
974
            DO J = 1, M
975
              A(J, I) = A(J, I) * C
976
            ENDDO
977
          ENDDO
978
 
979
            which can be beneficial when N is larger than the caches,
980
            because in Fortran, the elements of an array are stored in
981
            memory contiguously by column, and the original loop iterates
982
            over rows, potentially creating at each access a cache miss.
983
          + -floop-strip-mine performs loop strip mining transformations
984
            on loops. Strip mining splits a loop into two nested loops.
985
            The outer loop has strides equal to the strip size and the
986
            inner loop has strides of the original loop within a strip.
987
            For example, given a loop like:
988
          DO I = 1, N
989
            A(I) = A(I) + C
990
          ENDDO
991
 
992
            loop strip mining will transform the loop as if the user had
993
            written:
994
          DO II = 1, N, 4
995
            DO I = II, min (II + 3, N)
996
              A(I) = A(I) + C
997
            ENDDO
998
          ENDDO
999
 
1000
          + -floop-block performs loop blocking transformations on loops.
1001
            Blocking strip mines each loop in the loop nest such that the
1002
            memory accesses of the element loops fit inside caches. For
1003
            example, given a loop like:
1004
          DO I = 1, N
1005
            DO J = 1, M
1006
              A(J, I) = B(I) + C(J)
1007
            ENDDO
1008
          ENDDO
1009
 
1010
            loop blocking will transform the loop as if the user had
1011
            written:
1012
          DO II = 1, N, 64
1013
            DO JJ = 1, M, 64
1014
              DO I = II, min (II + 63, N)
1015
                DO J = JJ, min (JJ + 63, M)
1016
                  A(J, I) = B(I) + C(J)
1017
                ENDDO
1018
              ENDDO
1019
            ENDDO
1020
          ENDDO
1021
 
1022
            which can be beneficial when M is larger than the caches,
1023
            because the innermost loop will iterate over a smaller amount
1024
            of data that can be kept in the caches.
1025
     * A new register allocator has replaced the old one. It is called
1026
       integrated register allocator (IRA) because coalescing, register
1027
       live range splitting, and hard register preferencing are done
1028
       on-the-fly during coloring. It also has better integration with the
1029
       reload pass. IRA is a regional register allocator which uses modern
1030
       Chaitin-Briggs coloring instead of Chow's priority coloring used in
1031
       the old register allocator. More info about IRA internals and
1032
       options can be found in the GCC manuals.
1033
     * A new instruction scheduler and software pipeliner, based on the
1034
       selective scheduling approach, has been added. The new pass
1035
       performs instruction unification, register renaming, substitution
1036
       through register copies, and speculation during scheduling. The
1037
       software pipeliner is able to pipeline non-countable loops. The new
1038
       pass is targeted at scheduling-eager in-order platforms. In GCC 4.4
1039
       it is available for the Intel Itanium platform working by default
1040
       as the second scheduling pass (after register allocation) at the
1041
       -O3 optimization level.
1042
     * When using -fprofile-generate with a multi-threaded program, the
1043
       profile counts may be slightly wrong due to race conditions. The
1044
       new -fprofile-correction option directs the compiler to apply
1045
       heuristics to smooth out the inconsistencies. By default the
1046
       compiler will give an error message when it finds an inconsistent
1047
       profile.
1048
     * The new -fprofile-dir=PATH option permits setting the directory
1049
       where profile data files are stored when using -fprofile-generate
1050
       and friends, and the directory used when reading profile data files
1051
       using -fprofile-use and friends.
1052
 
1053
New warning options
1054
 
1055
     * The new -Wframe-larger-than=NUMBER option directs GCC to emit a
1056
       warning if any stack frame is larger than NUMBER bytes. This may be
1057
       used to help ensure that code fits within a limited amount of stack
1058
       space.
1059
     * The command-line option -Wlarger-than-N is now written as
1060
       -Wlarger-than=N and the old form is deprecated.
1061
     * The new -Wno-mudflap option disables warnings about constructs
1062
       which can not be instrumented when using -fmudflap.
1063
 
1064
New Languages and Language specific improvements
1065
 
1066
     * Version 3.0 of the [5]OpenMP specification is now supported for the
1067
       C, C++, and Fortran compilers.
1068
     * New character data types, per [6]TR 19769: New character types in
1069
       C, are now supported for the C compiler in -std=gnu99 mode, as
1070
       __CHAR16_TYPE__ and __CHAR32_TYPE__, and for the C++ compiler in
1071
       -std=c++0x and -std=gnu++0x modes, as char16_t and char32_t too.
1072
 
1073
  C family
1074
 
1075
     * A new optimize attribute was added to allow programmers to change
1076
       the optimization level and particular optimization options for an
1077
       individual function. You can also change the optimization options
1078
       via the GCC optimize pragma for functions defined after the pragma.
1079
       The GCC push_options pragma and the GCC pop_options pragma allow
1080
       you temporarily save and restore the options used. The GCC
1081
       reset_options pragma restores the options to what was specified on
1082
       the command line.
1083
     * Uninitialized warnings do not require enabling optimization
1084
       anymore, that is, -Wuninitialized can be used together with -O0.
1085
       Nonetheless, the warnings given by -Wuninitialized will probably be
1086
       more accurate if optimization is enabled.
1087
     * -Wparentheses now warns about expressions such as (!x | y) and (!x
1088
       & y). Using explicit parentheses, such as in ((!x) | y), silences
1089
       this warning.
1090
     * -Wsequence-point now warns within if, while,do while and for
1091
       conditions, and within for begin/end expressions.
1092
     * A new option -dU is available to dump definitions of preprocessor
1093
       macros that are tested or expanded.
1094
 
1095
  C++
1096
 
1097
     * [7]Improved experimental support for the upcoming ISO C++ standard,
1098
       C++0x. Including support for auto, inline namespaces, generalized
1099
       initializer lists, defaulted and deleted functions, new character
1100
       types, and scoped enums.
1101
     * Those errors that may be downgraded to warnings to build legacy
1102
       code now mention -fpermissive when -fdiagnostics-show-option is
1103
       enabled.
1104
     * -Wconversion now warns if the result of a static_cast to enumeral
1105
       type is unspecified because the value is outside the range of the
1106
       enumeral type.
1107
     * -Wuninitialized now warns if a non-static reference or non-static
1108
       const member appears in a class without constructors.
1109
     * G++ now properly implements value-initialization, so objects with
1110
       an initializer of () and an implicitly defined default constructor
1111
       will be zero-initialized before the default constructor is called.
1112
 
1113
    Runtime Library (libstdc++)
1114
 
1115
     * [8]Improved experimental support for the upcoming ISO C++ standard,
1116
       C++0x, including:
1117
          + Support for , , ,
1118
            , , , ,
1119
            , and .
1120
          + unique_ptr,  additions, exception propagation, and
1121
            support for the new character types in  and .
1122
          + Existing facilities now exploit initializer lists, defaulted
1123
            and deleted functions, and the newly implemented core C++0x
1124
            features.
1125
          + Some standard containers are more efficient together with
1126
            stateful allocators, i.e., no allocator is constructed on the
1127
            fly at element construction time.
1128
     * Experimental support for non-standard pointer types in containers.
1129
     * The long standing libstdc++/30928 has been fixed for targets
1130
       running glibc 2.10 or later.
1131
     * As usual, many small and larger bug fixes, in particular quite a
1132
       few corner cases in .
1133
 
1134
  Fortran
1135
 
1136
     * GNU Fortran now employs libcpp directly instead of using cc1 as an
1137
       external preprocessor. The [9]-cpp option was added to allow manual
1138
       invocation of the preprocessor without relying on filename
1139
       extensions.
1140
     * The [10]-Warray-temporaries option warns about array temporaries
1141
       generated by the compiler, as an aid to optimization.
1142
     * The [11]-fcheck-array-temporaries option has been added, printing a
1143
       notification at run time, when an array temporary had to be created
1144
       for an function argument. Contrary to -Warray-temporaries the
1145
       warning is only printed if the array is noncontiguous.
1146
     * Improved generation of DWARF debugging symbols
1147
     * If using an intrinsic not part of the selected standard (via -std=
1148
       and -fall-intrinsics) gfortran will now treat it as if this
1149
       procedure were declared EXTERNAL and try to link to a user-supplied
1150
       procedure. -Wintrinsics-std will warn whenever this happens. The
1151
       now-useless option -Wnonstd-intrinsic was removed.
1152
     * The flag -falign-commons has been added to control the alignment of
1153
       variables in COMMON blocks, which is enabled by default in line
1154
       with previous GCC version. Using -fno-align-commons one can force
1155
       commons to be contiguous in memory as required by the Fortran
1156
       standard, however, this slows down the memory access. The option
1157
       -Walign-commons, which is enabled by default, warns when padding
1158
       bytes were added for alignment. The proper solution is to sort the
1159
       common objects by decreasing storage size, which avoids the
1160
       alignment problems.
1161
     * Fortran 2003 support has been extended:
1162
          + Wide characters (ISO 10646, UCS-4, kind=4) and UTF-8 I/O is
1163
            now supported (except internal reads from/writes to wide
1164
            strings). [12]-fbackslash now supports also \unnnn and
1165
            \Unnnnnnnn to enter Unicode characters.
1166
          + Asynchronous I/O (implemented as synchronous I/O) and the
1167
            decimal=, size=, sign=, pad=, blank=, and delim= specifiers
1168
            are now supported in I/O statements.
1169
          + Support for Fortran 2003 structure constructors and for array
1170
            constructor with typespec has been added.
1171
          + Procedure Pointers (but not yet as component in derived types
1172
            and as function results) are now supported.
1173
          + Abstract types, type extension, and type-bound procedures
1174
            (both PROCEDURE and GENERIC but not as operators). Note: As
1175
            CLASS/polymorphyic types are not implemented, type-bound
1176
            procedures with PASS accept as non-standard extension TYPE
1177
            arguments.
1178
     * Fortran 2008 support has been added:
1179
          + The -std=f2008 option and support for the file extensions
1180
            .f2008 and .F2008 has been added.
1181
          + The g0 format descriptor is now supported.
1182
          + The Fortran 2008 mathematical intrinsics ASINH, ACOSH, ATANH,
1183
            ERF, ERFC, GAMMA, LOG_GAMMA, BESSEL_*, HYPOT, and ERFC_SCALED
1184
            are now available (some of them existed as GNU extension
1185
            before). Note: The hyperbolic functions are not yet supporting
1186
            complex arguments and the three- argument version of BESSEL_*N
1187
            is not available.
1188
          + The bit intrinsics LEADZ and TRAILZ have been added.
1189
 
1190
  Java (GCJ)
1191
 
1192
  Ada
1193
 
1194
     * The Ada runtime now supports multilibs on many platforms including
1195
       x86_64, SPARC and PowerPC. Their build is enabled by default.
1196
 
1197
New Targets and Target Specific Improvements
1198
 
1199
  ARM
1200
 
1201
     * GCC now supports optimizing for the Cortex-A9, Cortex-R4 and
1202
       Cortex-R4F processors and has many other improvements to
1203
       optimization for ARM processors.
1204
     * GCC now supports the VFPv3 variant with 16 double-precision
1205
       registers with -mfpu=vfpv3-d16. The option -mfpu=vfp3 has been
1206
       renamed to -mfpu=vfpv3.
1207
     * GCC now supports the -mfix-cortex-m3-ldrd option to work around an
1208
       erratum on Cortex-M3 processors.
1209
     * GCC now supports the __sync_* atomic operations for ARM EABI
1210
       GNU/Linux.
1211
     * The section anchors optimization is now enabled by default when
1212
       optimizing for ARM.
1213
     * GCC now uses a new EABI-compatible profiling interface for EABI
1214
       targets. This requires a function __gnu_mcount_nc, which is
1215
       provided by GNU libc versions 2.8 and later.
1216
 
1217
  AVR
1218
 
1219
     * The -mno-tablejump option has been deprecated because it has the
1220
       same effect as the -fno-jump-tables option.
1221
     * Added support for these new AVR devices:
1222
          + ATA6289
1223
          + ATtiny13A
1224
          + ATtiny87
1225
          + ATtiny167
1226
          + ATtiny327
1227
          + ATmega8C1
1228
          + ATmega16C1
1229
          + ATmega32C1
1230
          + ATmega8M1
1231
          + ATmega16M1
1232
          + ATmega32M1
1233
          + ATmega32U4
1234
          + ATmega16HVB
1235
          + ATmega4HVD
1236
          + ATmega8HVD
1237
          + ATmega64C1
1238
          + ATmega64M1
1239
          + ATmega16U4
1240
          + ATmega32U6
1241
          + ATmega128RFA1
1242
          + AT90PWM81
1243
          + AT90SCR100
1244
          + M3000F
1245
          + M3000S
1246
          + M3001B
1247
 
1248
  IA-32/x86-64
1249
 
1250
     * Support for Intel AES built-in functions and code generation is
1251
       available via -maes.
1252
     * Support for Intel PCLMUL built-in function and code generation is
1253
       available via -mpclmul.
1254
     * Support for Intel AVX built-in functions and code generation is
1255
       available via -mavx.
1256
     * Automatically align the stack for local variables with alignment
1257
       requirement.
1258
     * GCC can now utilize the SVML library for vectorizing calls to a set
1259
       of C99 functions if -mveclibabi=svml is specified and you link to
1260
       an SVML ABI compatible library.
1261
     * On x86-64, the ABI has been changed in the following cases to
1262
       conform to the x86-64 ABI:
1263
          + Passing/returning structures with flexible array member:
1264
  struct foo
1265
    {
1266
      int i;
1267
      int flex[];
1268
    };
1269
          + Passing/returning structures with complex float member:
1270
  struct foo
1271
    {
1272
      int i;
1273
      __complex__ float f;
1274
    };
1275
          + Passing/returning unions with long double member:
1276
  union foo
1277
    {
1278
      int x;
1279
      long double ld;
1280
    };
1281
       Code built with previous versions of GCC that uses any of these is
1282
       not compatible with code built with GCC 4.4.0 or later.
1283
     * A new target attribute was added to allow programmers to change the
1284
       target options like -msse2 or -march=k8 for an individual function.
1285
       You can also change the target options via the GCC target pragma
1286
       for functions defined after the pragma.
1287
     * GCC can now be configured with options --with-arch-32,
1288
       --with-arch-64, --with-cpu-32, --with-cpu-64, --with-tune-32 and
1289
       --with-tune-64 to control the default optimization separately for
1290
       32-bit and 64-bit modes.
1291
 
1292
  IA-32/IA64
1293
 
1294
     * Support for __float128 (TFmode) IEEE quad type and corresponding
1295
       TCmode IEEE complex quad type is available via the soft-fp library
1296
       on IA-32/IA64 targets. This includes basic arithmetic operations
1297
       (addition, subtraction, negation, multiplication and division) on
1298
       __float128 real and TCmode complex values, the full set of IEEE
1299
       comparisons between __float128 values, conversions to and from
1300
       float, double and long double floating point types, as well as
1301
       conversions to and from signed or unsigned integer, signed or
1302
       unsigned long integer and signed or unsigned quad (TImode, IA64
1303
       only) integer types. Additionally, all operations generate the full
1304
       set of IEEE exceptions and support the full set of IEEE rounding
1305
       modes.
1306
 
1307
  M68K/ColdFire
1308
 
1309
     * GCC now supports instruction scheduling for ColdFire V1, V3 and V4
1310
       processors. (Scheduling support for ColdFire V2 processors was
1311
       added in GCC 4.3.)
1312
     * GCC now supports the -mxgot option to support programs requiring
1313
       many GOT entries on ColdFire.
1314
     * The m68k-*-linux-gnu target now builds multilibs by default.
1315
 
1316
  MIPS
1317
 
1318
     * MIPS Technologies have extended the original MIPS SVR4 ABI to
1319
       include support for procedure linkage tables (PLTs) and copy
1320
       relocations. These extensions allow GNU/Linux executables to use a
1321
       significantly more efficient code model than the one defined by the
1322
       original ABI.
1323
       GCC support for this code model is available via a new command-line
1324
       option, -mplt. There is also a new configure-time option,
1325
       --with-mips-plt, to make -mplt the default.
1326
       The new code model requires support from the assembler, the linker,
1327
       and the runtime C library. This support is available in binutils
1328
       2.19 and GLIBC 2.9.
1329
     * GCC can now generate MIPS16 code for 32-bit GNU/Linux executables
1330
       and 32-bit GNU/Linux shared libraries. This feature requires GNU
1331
       binutils 2.19 or above.
1332
     * Support for RMI's XLR processor is now available through the
1333
       -march=xlr and -mtune=xlr options.
1334
     * 64-bit targets can now perform 128-bit multiplications inline,
1335
       instead of relying on a libgcc function.
1336
     * Native GNU/Linux toolchains now support -march=native and
1337
       -mtune=native, which select the host processor.
1338
     * GCC now supports the R10K, R12K, R14K and R16K processors. The
1339
       canonical -march= and -mtune= names for these processors are
1340
       r10000, r12000, r14000 and r16000 respectively.
1341
     * GCC can now work around the side effects of speculative execution
1342
       on R10K processors. Please see the documentation of the
1343
       -mr10k-cache-barrier option for details.
1344
     * Support for the MIPS64 Release 2 instruction set has been added.
1345
       The option -march=mips64r2 enables generation of these
1346
       instructions.
1347
     * GCC now supports Cavium Networks' Octeon processor. This support is
1348
       available through the -march=octeon and -mtune=octeon options.
1349
     * GCC now supports STMicroelectronics' Loongson 2E/2F processors. The
1350
       canonical -march= and -mtune= names for these processors are
1351
       loongson2e and loongson2f.
1352
 
1353
  picochip
1354
 
1355
   Picochip is a 16-bit processor. A typical picoChip contains over 250
1356
   small cores, each with small amounts of memory. There are three
1357
   processor variants (STAN, MEM and CTRL) with different instruction sets
1358
   and memory configurations and they can be chosen using the -mae option.
1359
 
1360
   This port is intended to be a "C" only port.
1361
 
1362
  Power Architecture and PowerPC
1363
 
1364
     * GCC now supports the e300c2, e300c3 and e500mc processors.
1365
     * GCC now supports Xilinx processors with a single-precision FPU.
1366
     * Decimal floating point is now supported for e500 processors.
1367
 
1368
  S/390, zSeries and System z9/z10
1369
 
1370
     * Support for the IBM System z10 EC/BC processor has been added. When
1371
       using the -march=z10 option, the compiler will generate code making
1372
       use of instructions provided by the General-Instruction-Extension
1373
       Facility and the Execute-Extension Facility.
1374
 
1375
  VxWorks
1376
 
1377
     * GCC now supports the thread-local storage mechanism used on
1378
       VxWorks.
1379
 
1380
  Xtensa
1381
 
1382
     * GCC now supports thread-local storage (TLS) for Xtensa processor
1383
       configurations that include the Thread Pointer option. TLS also
1384
       requires support from the assembler and linker; this support is
1385
       provided in the GNU binutils beginning with version 2.19.
1386
 
1387
Documentation improvements
1388
 
1389
Other significant improvements
1390
 
1391
GCC 4.4.1
1392
 
1393
   This is the [13]list of problem reports (PRs) from GCC's bug tracking
1394
   system that are known to be fixed in the 4.4.1 release. This list might
1395
   not be complete (that is, it is possible that some PRs that have been
1396
   fixed are not listed here).
1397
 
1398
GCC 4.4.2
1399
 
1400
   This is the [14]list of problem reports (PRs) from GCC's bug tracking
1401
   system that are known to be fixed in the 4.4.2 release. This list might
1402
   not be complete (that is, it is possible that some PRs that have been
1403
   fixed are not listed here).
1404
 
1405
GCC 4.4.3
1406
 
1407
   This is the [15]list of problem reports (PRs) from GCC's bug tracking
1408
   system that are known to be fixed in the 4.4.3 release. This list might
1409
   not be complete (that is, it is possible that some PRs that have been
1410
   fixed are not listed here).
1411
 
1412
GCC 4.4.4
1413
 
1414
   This is the [16]list of problem reports (PRs) from GCC's bug tracking
1415
   system that are known to be fixed in the 4.4.4 release. This list might
1416
   not be complete (that is, it is possible that some PRs that have been
1417
   fixed are not listed here).
1418
 
1419
   Please send FSF & GNU inquiries & questions to [17]gnu@gnu.org. There
1420
   are also [18]other ways to contact the FSF.
1421
 
1422
   These pages are [19]maintained by the GCC team.
1423
 
1424
 
1425
    For questions related to the use of GCC, please consult these web
1426
    pages and the [20]GCC manuals. If that fails, the
1427
    [21]gcc-help@gcc.gnu.org mailing list might help.
1428
    Please send comments on these web pages and the development of GCC to
1429
    our developer mailing list at [22]gcc@gnu.org or [23]gcc@gcc.gnu.org.
1430
    All of our lists have [24]public archives.
1431
 
1432
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
1433
   Floor, Boston, MA 02110, USA.
1434
 
1435
   Verbatim copying and distribution of this entire article is permitted
1436
   in any medium, provided this notice is preserved.
1437
   Last modified 2010-07-10 [25]Valid XHTML 1.0
1438
 
1439
References
1440
 
1441
   1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.4
1442
   2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted
1443
   3. http://gcc.gnu.org/gcc-4.4/porting_to.html
1444
   4. http://gcc.gnu.org/wiki/Graphite
1445
   5. http://openmp.org/wp/openmp-specifications/
1446
   6. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf
1447
   7. http://gcc.gnu.org/gcc-4.4/cxx0x_status.html
1448
   8. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#id476343
1449
   9. http://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html
1450
  10. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWarray-temporaries_007d-125
1451
  11. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcheck-array-temporaries_007d-221
1452
  12. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bbackslash_007d-34
1453
  13. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.1
1454
  14. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.2
1455
  15. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.3
1456
  16. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.4
1457
  17. mailto:gnu@gnu.org
1458
  18. http://www.gnu.org/home.html#ContactInfo
1459
  19. http://gcc.gnu.org/about.html
1460
  20. http://gcc.gnu.org/onlinedocs/
1461
  21. mailto:gcc-help@gcc.gnu.org
1462
  22. mailto:gcc@gnu.org
1463
  23. mailto:gcc@gcc.gnu.org
1464
  24. http://gcc.gnu.org/lists.html
1465
  25. http://validator.w3.org/check/referer
1466
======================================================================
1467
http://gcc.gnu.org/gcc-4.3/index.html
1468
 
1469
                           GCC 4.3 Release Series
1470
 
1471
   May 22, 2010
1472
 
1473
   The [1]GNU project and the GCC developers are pleased to announce the
1474
   release of GCC 4.3.5.
1475
 
1476
   This release is a bug-fix release, containing fixes for regressions in
1477
   GCC 4.3.4 relative to previous releases of GCC.
1478
 
1479
Release History
1480
 
1481
   GCC 4.3.5
1482
          May 22, 2010 ([2]changes)
1483
 
1484
   GCC 4.3.4
1485
          August 4, 2009 ([3]changes)
1486
 
1487
   GCC 4.3.3
1488
          January 24, 2009 ([4]changes)
1489
 
1490
   GCC 4.3.2
1491
          August 27, 2008 ([5]changes)
1492
 
1493
   GCC 4.3.1
1494
          June 6, 2008 ([6]changes)
1495
 
1496
   GCC 4.3.0
1497
          March 5, 2008 ([7]changes)
1498
 
1499
References and Acknowledgements
1500
 
1501
   GCC used to stand for the GNU C Compiler, but since the compiler
1502
   supports several other languages aside from C, it now stands for the
1503
   GNU Compiler Collection.
1504
 
1505
   A list of [8]successful builds is updated as new information becomes
1506
   available.
1507
 
1508
   The GCC developers would like to thank the numerous people that have
1509
   contributed new features, improvements, bug fixes, and other changes as
1510
   well as test results to GCC. This [9]amazing group of volunteers is
1511
   what makes GCC successful.
1512
 
1513
   For additional information about GCC please refer to the [10]GCC
1514
   project web site or contact the [11]GCC development mailing list.
1515
 
1516
   To obtain GCC please use [12]our mirror sites or [13]our SVN server.
1517
 
1518
   Please send FSF & GNU inquiries & questions to [14]gnu@gnu.org. There
1519
   are also [15]other ways to contact the FSF.
1520
 
1521
   These pages are [16]maintained by the GCC team.
1522
 
1523
 
1524
    For questions related to the use of GCC, please consult these web
1525
    pages and the [17]GCC manuals. If that fails, the
1526
    [18]gcc-help@gcc.gnu.org mailing list might help.
1527
    Please send comments on these web pages and the development of GCC to
1528
    our developer mailing list at [19]gcc@gnu.org or [20]gcc@gcc.gnu.org.
1529
    All of our lists have [21]public archives.
1530
 
1531
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
1532
   Floor, Boston, MA 02110, USA.
1533
 
1534
   Verbatim copying and distribution of this entire article is permitted
1535
   in any medium, provided this notice is preserved.
1536
   Last modified 2010-07-01 [22]Valid XHTML 1.0
1537
 
1538
References
1539
 
1540
   1. http://www.gnu.org/
1541
   2. http://gcc.gnu.org/gcc-4.3/changes.html
1542
   3. http://gcc.gnu.org/gcc-4.3/changes.html
1543
   4. http://gcc.gnu.org/gcc-4.3/changes.html
1544
   5. http://gcc.gnu.org/gcc-4.3/changes.html
1545
   6. http://gcc.gnu.org/gcc-4.3/changes.html
1546
   7. http://gcc.gnu.org/gcc-4.3/changes.html
1547
   8. http://gcc.gnu.org/gcc-4.3/buildstat.html
1548
   9. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
1549
  10. http://gcc.gnu.org/index.html
1550
  11. mailto:gcc@gcc.gnu.org
1551
  12. http://gcc.gnu.org/mirrors.html
1552
  13. http://gcc.gnu.org/svn.html
1553
  14. mailto:gnu@gnu.org
1554
  15. http://www.gnu.org/home.html#ContactInfo
1555
  16. http://gcc.gnu.org/about.html
1556
  17. http://gcc.gnu.org/onlinedocs/
1557
  18. mailto:gcc-help@gcc.gnu.org
1558
  19. mailto:gcc@gnu.org
1559
  20. mailto:gcc@gcc.gnu.org
1560
  21. http://gcc.gnu.org/lists.html
1561
  22. http://validator.w3.org/check/referer
1562
======================================================================
1563
http://gcc.gnu.org/gcc-4.3/changes.html
1564
 
1565
                           GCC 4.3 Release Series
1566
                      Changes, New Features, and Fixes
1567
 
1568
   The latest release in the 4.3 release series is [1]GCC 4.3.5.
1569
 
1570
Caveats
1571
 
1572
     * GCC requires the [2]GMP and [3]MPFR libraries for building all the
1573
       various front-end languages it supports. See the [4]prerequisites
1574
       page for version requirements.
1575
     * ColdFire targets now treat long double as having the same format as
1576
       double. In earlier versions of GCC, they used the 68881 long double
1577
       format instead.
1578
     * The m68k-uclinux target now uses the same calling conventions as
1579
       m68k-linux-gnu. You can select the original calling conventions by
1580
       configuring for m68k-uclinuxoldabi instead. Note that
1581
       m68k-uclinuxoldabi also retains the original 80-bit long double on
1582
       ColdFire targets.
1583
     * The -fforce-mem option has been removed because it has had no
1584
       effect in the last few GCC releases.
1585
     * The i386 -msvr3-shlib option has been removed since it is no longer
1586
       used.
1587
     * Fastcall for i386 has been changed not to pass aggregate arguments
1588
       in registers, following Microsoft compilers.
1589
     * Support for the AOF assembler has been removed from the ARM back
1590
       end; this affects only the targets arm-semi-aof and armel-semi-aof,
1591
       which are no longer recognized. We removed these targets without a
1592
       deprecation period because we discovered that they have been
1593
       unusable since GCC 4.0.0.
1594
     * Support for the TMS320C3x/C4x processor (targets c4x-* and tic4x-*)
1595
       has been removed. This support had been deprecated since GCC 4.0.0.
1596
     * Support for a number of older systems and recently unmaintained or
1597
       untested target ports of GCC has been declared obsolete in GCC 4.3.
1598
       Unless there is activity to revive them, the next release of GCC
1599
       will have their sources permanently removed.
1600
       All GCC ports for the following processor architectures have been
1601
       declared obsolete:
1602
          + Morpho MT (mt-*)
1603
       The following aliases for processor architectures have been
1604
       declared obsolete. Users should use the indicated generic target
1605
       names instead, with compile-time options such as -mcpu or
1606
       configure-time options such as --with-cpu to control the
1607
       configuration more precisely.
1608
          + strongarm*-*-*, ep9312*-*-*, xscale*-*-* (use arm*-*-*
1609
            instead).
1610
          + parisc*-*-* (use hppa*-*-* instead).
1611
          + m680[012]0-*-* (use m68k-*-* instead).
1612
       All GCC ports for the following operating systems have been
1613
       declared obsolete:
1614
          + BeOS (*-*-beos*)
1615
          + kaOS (*-*-kaos*)
1616
          + GNU/Linux using the a.out object format (*-*-linux*aout*)
1617
          + GNU/Linux using version 1 of the GNU C Library
1618
            (*-*-linux*libc1*)
1619
          + Solaris versions before Solaris 7 (*-*-solaris2.[0-6],
1620
            *-*-solaris2.[0-6].*)
1621
          + Miscellaneous System V (*-*-sysv*)
1622
          + WindISS (*-*-windiss*)
1623
       Also, those for some individual systems on particular architectures
1624
       have been obsoleted:
1625
          + UNICOS/mk on DEC Alpha (alpha*-*-unicosmk*)
1626
          + CRIS with a.out object format (cris-*-aout)
1627
          + BSD 4.3 on PA-RISC (hppa1.1-*-bsd*)
1628
          + OSF/1 on PA-RISC (hppa1.1-*-osf*)
1629
          + PRO on PA-RISC (hppa1.1-*-pro*)
1630
          + Sequent PTX on IA32 (i[34567]86-sequent-ptx4*,
1631
            i[34567]86-sequent-sysv4*)
1632
          + SCO Open Server 5 on IA32 (i[34567]86-*-sco3.2v5*)
1633
          + UWIN on IA32 (i[34567]86-*-uwin*) (support for UWIN as a host
1634
            was previously [5]removed in 2001, leaving only the support
1635
            for UWIN as a target now being deprecated)
1636
          + ChorusOS on PowerPC (powerpc-*-chorusos*)
1637
          + All VAX configurations apart from NetBSD and OpenBSD
1638
            (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*)
1639
     * The [6]-Wconversion option has been modified. Its purpose now is to
1640
       warn for implicit conversions that may alter a value. This new
1641
       behavior is available for both C and C++. Warnings about
1642
       conversions between signed and unsigned integers can be disabled by
1643
       using -Wno-sign-conversion. In C++, they are disabled by default
1644
       unless -Wsign-conversion is explicitly requested. The old behavior
1645
       of -Wconversion, that is, warn for prototypes causing a type
1646
       conversion that is different from what would happen to the same
1647
       argument in the absence of a prototype, has been moved to a new
1648
       option -Wtraditional-conversion, which is only available for C.
1649
     * The -m386, -m486, -mpentium and -mpentiumpro tuning options have
1650
       been removed because they were deprecated for more than 3 GCC major
1651
       releases. Use -mtune=i386, -mtune=i486, -mtune=pentium or
1652
       -mtune=pentiumpro as a replacement.
1653
     * The -funsafe-math-optimizations option now automatically turns on
1654
       -fno-trapping-math in addition to -fno-signed-zeros, as it enables
1655
       reassociation and thus may introduce or remove traps.
1656
     * The -ftree-vectorize option is now on by default under -O3. In
1657
       order to generate code for a SIMD extension, it has to be enabled
1658
       as well: use -maltivec for PowerPC platforms and -msse/-msse2 for
1659
       i?86 and x86_64.
1660
     * More information on porting to GCC 4.3 from previous versions of
1661
       GCC can be found in the [7]porting guide for this release.
1662
 
1663
General Optimizer Improvements
1664
 
1665
     * The GCC middle-end has been integrated with the [8]MPFR library.
1666
       This allows GCC to evaluate and replace at compile-time calls to
1667
       built-in math functions having constant arguments with their
1668
       mathematically equivalent results. In making use of [9]MPFR, GCC
1669
       can generate correct results regardless of the math library
1670
       implementation or floating point precision of the host platform.
1671
       This also allows GCC to generate identical results regardless of
1672
       whether one compiles in native or cross-compile configurations to a
1673
       particular target. The following built-in functions take advantage
1674
       of this new capability: acos, acosh, asin, asinh, atan2, atan,
1675
       atanh, cbrt, cos, cosh, drem, erf, erfc, exp10, exp2, exp, expm1,
1676
       fdim, fma, fmax, fmin, gamma_r, hypot, j0, j1, jn, lgamma_r, log10,
1677
       log1p, log2, log, pow10, pow, remainder, remquo, sin, sincos, sinh,
1678
       tan, tanh, tgamma, y0, y1 and yn. The float and long double
1679
       variants of these functions (e.g. sinf and sinl) are also handled.
1680
       The sqrt and cabs functions with constant arguments were already
1681
       optimized in prior GCC releases. Now they also use [10]MPFR.
1682
     * A new forward propagation pass on RTL was added. The new pass
1683
       replaces several slower transformations, resulting in compile-time
1684
       improvements as well as better code generation in some cases.
1685
     * A new command-line switch -frecord-gcc-switches has been added to
1686
       GCC, although it is only enabled for some targets. The switch
1687
       causes the command line that was used to invoke the compiler to be
1688
       recorded into the object file that is being created. The exact
1689
       format of this recording is target and binary file format
1690
       dependent, but it usually takes the form of a note section
1691
       containing ASCII text. The switch is related to the -fverbose-asm
1692
       switch, but that one only records the information in the assembler
1693
       output file as comments, so the information never reaches the
1694
       object file.
1695
     * The inliner heuristic is now aware of stack frame consumption. New
1696
       command-line parameters --param large-stack-frame and --param
1697
       large-stack-frame-growth can be used to limit stack frame size
1698
       growth caused by inlining.
1699
     * During feedback directed optimizations, the expected block size the
1700
       memcpy, memset and bzero functions operate on is discovered and for
1701
       cases of commonly used small sizes, specialized inline code is
1702
       generated.
1703
     * __builtin_expect no longer requires its argument to be a compile
1704
       time constant.
1705
     * Interprocedural optimization was reorganized to work on functions
1706
       in SSA form. This enables more precise and cheaper dataflow
1707
       analysis and makes writing interprocedural optimizations easier.
1708
       The following improvements have been implemented on top of this
1709
       framework:
1710
          + Pre-inline optimization: Selected local optimization passes
1711
            are run before the inliner (and other interprocedural passes)
1712
            are executed. This significantly improves the accuracy of code
1713
            growth estimates used by the inliner and reduces the overall
1714
            memory footprint for large compilation units.
1715
          + Early inlining (a simple bottom-up inliner pass inlining only
1716
            functions whose body is smaller than the expected call
1717
            overhead) is now executed with the early optimization passes,
1718
            thus inlining already optimized function bodies into an
1719
            unoptimized function that is subsequently optimized by early
1720
            optimizers. This enables the compiler to quickly eliminate
1721
            abstraction penalty in C++ programs.
1722
          + Interprocedural constant propagation now operate on SSA form
1723
            increasing accuracy of the analysis.
1724
     * A new internal representation for GIMPLE statements has been
1725
       contributed, resulting in compile-time memory savings.
1726
     * The vectorizer was enhanced to support vectorization of outer
1727
       loops, intra-iteration parallelism (loop-aware SLP), vectorization
1728
       of strided accesses and loops with multiple data-types. Run-time
1729
       dependency testing using loop versioning was added. The cost model,
1730
       turned on by -fvect-cost-model, was developed.
1731
 
1732
New Languages and Language specific improvements
1733
 
1734
     * We have added new command-line options
1735
       -finstrument-functions-exclude-function-list and
1736
       -finstrument-functions-exclude-file-list. They provide more control
1737
       over which functions are annotated by the -finstrument-functions
1738
       option.
1739
 
1740
  C family
1741
 
1742
     * Implicit conversions between generic vector types are now only
1743
       permitted when the two vectors in question have the same number of
1744
       elements and compatible element types. (Note that the restriction
1745
       involves compatible element types, not implicitly-convertible
1746
       element types: thus, a vector type with element type int may not be
1747
       implicitly converted to a vector type with element type unsigned
1748
       int.) This restriction, which is in line with specifications for
1749
       SIMD architectures such as AltiVec, may be relaxed using the flag
1750
       -flax-vector-conversions. This flag is intended only as a
1751
       compatibility measure and should not be used for new code.
1752
     * -Warray-bounds has been added and is now enabled by default for
1753
       -Wall . It produces warnings for array subscripts that can be
1754
       determined at compile time to be always out of bounds.
1755
       -Wno-array-bounds will disable the warning.
1756
     * The constructor and destructor function attributes now accept
1757
       optional priority arguments which control the order in which the
1758
       constructor and destructor functions are run.
1759
     * New [11]command-line options -Wtype-limits,
1760
       -Wold-style-declaration, -Wmissing-parameter-type, -Wempty-body,
1761
       -Wclobbered and -Wignored-qualifiers have been added for finer
1762
       control of the diverse warnings enabled by -Wextra.
1763
     * A new function attribute alloc_size has been added to mark up
1764
       malloc style functions. For constant sized allocations this can be
1765
       used to find out the size of the returned pointer using the
1766
       __builtin_object_size() function for buffer overflow checking and
1767
       similar. This supplements the already built-in malloc and calloc
1768
       constant size handling.
1769
     * Integer constants written in binary are now supported as a GCC
1770
       extension. They consist of a prefix 0b or 0B, followed by a
1771
       sequence of 0 and 1 digits.
1772
     * A new predefined macro __COUNTER__ has been added. It expands to
1773
       sequential integral values starting from 0. In conjunction with the
1774
       ## operator, this provides a convenient means to generate unique
1775
       identifiers.
1776
     * A new command-line option -fdirectives-only has been added. It
1777
       enables a special preprocessing mode which improves the performance
1778
       of applications like distcc and ccache.
1779
     * Fixed-point data types and operators have been added. They are
1780
       based on Chapter 4 of the Embedded-C specification (n1169.pdf).
1781
       Currently, only MIPS targets are supported.
1782
     * Decimal floating-point arithmetic based on draft ISO/IEC TR 24732,
1783
       N1241, is now supported as a GCC extension to C for targets
1784
       i[34567]86-*-linux-gnu, powerpc*-*-linux-gnu, s390*-ibm-linux-gnu,
1785
       and x86_64-*-linux-gnu. The feature introduces new data types
1786
       _Decimal32, _Decimal64, and _Decimal128 with constant suffixes DF,
1787
       DD, and DL.
1788
 
1789
  C++
1790
 
1791
     * [12]Experimental support for the upcoming ISO C++ standard, C++0x.
1792
     * -Wc++0x-compat has been added and is now enabled by default for
1793
       -Wall. It produces warnings for constructs whose meaning differs
1794
       between ISO C++ 1998 and C++0x.
1795
     * The -Wparentheses option now works for C++ as it does for C. It
1796
       warns if parentheses are omitted when operators with confusing
1797
       precedence are nested. It also warns about ambiguous else
1798
       statements. Since -Wparentheses is enabled by -Wall, this may cause
1799
       additional warnings with existing C++ code which uses -Wall. These
1800
       new warnings may be disabled by using -Wall -Wno-parentheses.
1801
     * The -Wmissing-declarations now works for C++ as it does for C.
1802
     * The -fvisibility-ms-compat flag was added, to make it easier to
1803
       port larger projects using shared libraries from Microsoft's Visual
1804
       Studio to ELF and Mach-O systems.
1805
     * C++ attribute handling has been overhauled for template arguments
1806
       (ie dependent types). In particular, __attribute__((aligned(T)));
1807
       works for C++ types.
1808
 
1809
    Runtime Library (libstdc++)
1810
 
1811
     * [13]Experimental support for the upcoming ISO C++ standard, C++0x.
1812
     * Support for TR1 mathematical special functions and regular
1813
       expressions. ([14]Implementation status of TR1)
1814
     * Default what implementations give more elaborate exception strings
1815
       for bad_cast, bad_typeid, bad_exception, and bad_alloc.
1816
     * Header dependencies have been streamlined, reducing unnecessary
1817
       includes and pre-processed bloat.
1818
     * Variadic template implementations of items in  and
1819
       .
1820
     * An experimental [15]parallel mode has been added. This is a
1821
       parallel implementation of many C++ Standard library algorithms,
1822
       like std::accumulate, std::for_each, std::transform, or std::sort,
1823
       to give but four examples. These algorithms can be substituted for
1824
       the normal (sequential) libstdc++ algorithms on a piecemeal basis,
1825
       or all existing algorithms can be transformed via the
1826
       -D_GLIBCXX_PARALLEL macro.
1827
     * Debug mode versions of classes in  and
1828
       .
1829
     * Formal deprecation of  and , which are
1830
       now  and . This code:
1831
    #include 
1832
    __gnu_cxx::hash_set s;
1833
 
1834
       Can be transformed (in order of preference) to:
1835
    #include 
1836
    std::tr1::unordered_set s;
1837
 
1838
       or
1839
    #include 
1840
    __gnu_cxx::hash_set s;
1841
 
1842
       Similar transformations apply to __gnu_cxx::hash_map,
1843
       __gnu_cxx::hash_multimap, __gnu_cxx::hash_set,
1844
       __gnu_cxx::hash_multiset.
1845
 
1846
  Fortran
1847
 
1848
     * Due to the fact that the [16]GMP and [17]MPFR libraries are
1849
       required for all languages, Fortran is no longer special in this
1850
       regard and is available by default.
1851
     * The [18]-fexternal-blas option has been added, which generates
1852
       calls to BLAS routines for intrinsic matrix operations such as
1853
       matmul rather than using the built-in algorithms.
1854
     * Support to give a backtrace (compiler flag -fbacktrace or
1855
       environment variable GFORTRAN_ERROR_BACKTRACE; on glibc systems
1856
       only) or a core dump (-fdump-core, GFORTRAN_ERROR_DUMPCORE) when a
1857
       run-time error occured.
1858
     * GNU Fortran now defines __GFORTRAN__ when it runs the C
1859
       preprocessor (CPP).
1860
     * The [19]-finit-local-zero, -finit-real, -finit-integer,
1861
       -finit-character, and -finit-logical options have been added, which
1862
       can be used to initialize local variables.
1863
     * The intrinsic procedures [20]GAMMA and [21]LGAMMA have been added,
1864
       which calculate the Gamma function and its logarithm. Use EXTERNAL
1865
       gamma if you want to use your own gamma function.
1866
     * GNU Fortran now regards the backslash character as literal (as
1867
       required by the Fortran 2003 standard); using [22]-fbackslash GNU
1868
       Fortran interprets backslashes as C-style escape characters.
1869
     * The [23]interpretation of binary, octal and hexadecimal (BOZ)
1870
       literal constants has been changed. Before they were always
1871
       interpreted as integer; now they are bit-wise transferred as
1872
       argument of INT, REAL, DBLE and CMPLX as required by the Fortran
1873
       2003 standard, and for real and complex variables in DATA
1874
       statements or when directly assigned to real and complex variables.
1875
       Everywhere else and especially in expressions they are still
1876
       regarded as integer constants.
1877
     * Fortran 2003 support has been extended:
1878
          + Intrinsic statements IMPORT, PROTECTED, VALUE and VOLATILE
1879
          + Pointer intent
1880
          + Intrinsic module ISO_ENV_FORTRAN
1881
          + Interoperability with C (ISO C Bindings)
1882
          + ABSTRACT INTERFACES and PROCEDURE statements (without POINTER
1883
            attribute)
1884
          + Fortran 2003 BOZ
1885
 
1886
  Java (GCJ)
1887
 
1888
     * GCJ now uses the Eclipse Java compiler for its Java parsing needs.
1889
       This enables the use of all 1.5 language features, and fixes most
1890
       existing front end bugs.
1891
     * libgcj now supports all 1.5 language features which require runtime
1892
       support: foreach, enum, annotations, generics, and auto-boxing.
1893
     * We've made many changes to the tools shipped with gcj.
1894
          + The old jv-scan tool has been removed. This tool never really
1895
            worked properly. There is no replacement.
1896
          + gcjh has been rewritten. Some of its more obscure options no
1897
            longer work, but are still recognized in an attempt at
1898
            compatibility. gjavah is a new program with similar
1899
            functionality but different command-line options.
1900
          + grmic and grmiregistry have been rewritten. grmid has been
1901
            added.
1902
          + gjar replaces the old fastjar.
1903
          + gjarsigner (used for signing jars), gkeytool (used for key
1904
            management), gorbd (for CORBA), gserialver (computes
1905
            serialization UIDs), and gtnameserv (also for CORBA) are now
1906
            installed.
1907
     * The ability to dump the contents of the java run time heap to a
1908
       file for off-line analysis has been added. The heap dumps may be
1909
       analyzed with the new gc-analyze tool. They may be generated on
1910
       out-of-memory conditions or on demand and are controlled by the new
1911
       run time class gnu.gcj.util.GCInfo.
1912
     * java.util.TimeZone can now read files from /usr/share/zoneinfo to
1913
       provide correct, updated, timezone information. This means that
1914
       packagers no longer have to update libgcj when a time zone change
1915
       is published.
1916
 
1917
New Targets and Target Specific Improvements
1918
 
1919
  IA-32/x86-64
1920
 
1921
     * Tuning for Intel Core 2 processors is available via -mtune=core2
1922
       and -march=core2.
1923
     * Tuning for AMD Geode processors is available via -mtune=geode and
1924
       -march=geode.
1925
     * Code generation of block move (memcpy) and block set (memset) was
1926
       rewritten. GCC can now pick the best algorithm (loop, unrolled
1927
       loop, instruction with rep prefix or a library call) based on the
1928
       size of the block being copied and the CPU being optimized for. A
1929
       new option -minline-stringops-dynamically has been added. With this
1930
       option string operations of unknown size are expanded such that
1931
       small blocks are copied by in-line code, while for large blocks a
1932
       library call is used. This results in faster code than
1933
       -minline-all-stringops when the library implementation is capable
1934
       of using cache hierarchy hints. The heuristic choosing the
1935
       particular algorithm can be overwritten via -mstringop-strategy.
1936
       Newly also memset of values different from 0 is inlined.
1937
     * GCC no longer places the cld instruction before string operations.
1938
       Both i386 and x86-64 ABI documents mandate the direction flag to be
1939
       clear at the entry of a function. It is now invalid to set the flag
1940
       in asm statement without reseting it afterward.
1941
     * Support for SSSE3 built-in functions and code generation are
1942
       available via -mssse3.
1943
     * Support for SSE4.1 built-in functions and code generation are
1944
       available via -msse4.1.
1945
     * Support for SSE4.2 built-in functions and code generation are
1946
       available via -msse4.2.
1947
     * Both SSE4.1 and SSE4.2 support can be enabled via -msse4.
1948
     * A new set of options -mpc32, -mpc64 and -mpc80 have been added to
1949
       allow explicit control of x87 floating point precision.
1950
     * Support for __float128 (TFmode) IEEE quad type and corresponding
1951
       TCmode IEEE complex quad type is available via the soft-fp library
1952
       on x86_64 targets. This includes basic arithmetic operations
1953
       (addition, subtraction, negation, multiplication and division) on
1954
       __float128 real and TCmode complex values, the full set of IEEE
1955
       comparisons between __float128 values, conversions to and from
1956
       float, double and long double floating point types, as well as
1957
       conversions to and from signed or unsigned integer, signed or
1958
       unsigned long integer and signed or unsigned quad (TImode) integer
1959
       types. Additionally, all operations generate the full set of IEEE
1960
       exceptions and support the full set of IEEE rounding modes.
1961
     * GCC can now utilize the ACML library for vectorizing calls to a set
1962
       of C99 functions on x86_64 if -mveclibabi=acml is specified and you
1963
       link to an ACML ABI compatible library.
1964
 
1965
  ARM
1966
 
1967
     * Compiler and Library support for Thumb-2 and the ARMv7 architecture
1968
       has been added.
1969
 
1970
  CRIS
1971
 
1972
    New features
1973
 
1974
     * Compiler and Library support for the CRIS v32 architecture, as
1975
       found in Axis Communications ETRAX FS and ARTPEC-3 chips, has been
1976
       added.
1977
 
1978
    Configuration changes
1979
 
1980
     * The cris-*-elf target now includes support for CRIS v32, including
1981
       libraries, through the -march=v32 option.
1982
     * A new crisv32-*-elf target defaults to generate code for CRIS v32.
1983
     * A new crisv32-*-linux* target defaults to generate code for CRIS
1984
       v32.
1985
     * The cris-*-aout target has been obsoleted.
1986
 
1987
    Improved support for built-in functions
1988
 
1989
     * GCC can now use the lz and swapwbr instructions to implement the
1990
       __builtin_clz, __builtin_ctz and __builtin_ffs family of functions.
1991
     * __builtin_bswap32 is now implemented using the swapwb instruction,
1992
       when available.
1993
 
1994
  m68k and ColdFire
1995
 
1996
    New features
1997
 
1998
     * Support for several new ColdFire processors has been added. You can
1999
       generate code for them using the new -mcpu option.
2000
     * All targets now support ColdFire processors.
2001
     * m68k-uclinux targets have improved support for C++ constructors and
2002
       destructors, and for shared libraries.
2003
     * It is now possible to set breakpoints on the first or last line of
2004
       a function, even if there are no statements on that line.
2005
 
2006
    Optimizations
2007
 
2008
     * Support for sibling calls has been added.
2009
     * More use is now made of the ColdFire mov3q instruction.
2010
     * __builtin_clz is now implemented using the ff1 ColdFire
2011
       instruction, when available.
2012
     * GCC now honors the -m68010 option. 68010 code now uses clr rather
2013
       than move to zero volatile memory.
2014
     * 68020 targets and above can now use symbol(index.size*scale)
2015
       addresses for indexed array accesses. Earlier compilers would
2016
       always load the symbol into a base register first.
2017
 
2018
    Configuration changes
2019
 
2020
     * All m68k and ColdFire targets now allow the default processor to be
2021
       set at configure time using --with-cpu.
2022
     * A --with-arch configuration option has been added. This option
2023
       allows you to restrict a target to ColdFire or non-ColdFire
2024
       processors.
2025
 
2026
    Preprocessor macros
2027
 
2028
     * An __mcfv*__ macro is now defined for all ColdFire targets.
2029
       (Earlier versions of GCC only defined __mcfv4e__.)
2030
     * __mcf_cpu_*, __mcf_family_* and __mcffpu__ macros have been added.
2031
     * All targets now define __mc68010 and __mc68010__ when generating
2032
       68010 code.
2033
 
2034
    Command-line changes
2035
 
2036
     * New command-line options -march, -mcpu, -mtune and -mhard-float
2037
       have been added. These options apply to both m68k and ColdFire
2038
       targets.
2039
     * -mno-short, -mno-bitfield and -mno-rtd are now accepted as negative
2040
       versions of -mshort, etc.
2041
     * -fforce-addr has been removed. It is now ignored by the compiler.
2042
 
2043
    Other improvements
2044
 
2045
     * ColdFire targets now try to maintain a 4-byte-aligned stack where
2046
       possible.
2047
     * m68k-uclinux targets now try to avoid situations that lead to the
2048
       load-time error: BINFMT_FLAT: reloc outside program.
2049
 
2050
  MIPS
2051
 
2052
    Changes to existing configurations
2053
 
2054
     * libffi and libjava now support all three GNU/Linux ABIs: o32, n32
2055
       and n64. Every GNU/Linux configuration now builds these libraries
2056
       by default.
2057
     * GNU/Linux configurations now generate -mno-shared code unless
2058
       overridden by -fpic, -fPIC, -fpie or -fPIE.
2059
     * mipsisa32*-linux-gnu configurations now generate hard-float code by
2060
       default, just like other mipsisa32* and mips*-linux-gnu
2061
       configurations. You can build a soft-float version of any
2062
       mips*-linux-gnu configuration by passing --with-float=soft to
2063
       configure.
2064
     * mips-wrs-vxworks now supports run-time processes (RTPs).
2065
 
2066
    Changes to existing command-line options
2067
 
2068
     * The -march and -mtune options no longer accept 24k as a processor
2069
       name. Please use 24kc, 24kf2_1 or 24kf1_1 instead.
2070
     * The -march and -mtune options now accept 24kf2_1, 24kef2_1 and
2071
       34kf2_1 as synonyms for 24kf, 24kef and 34kf respectively. The
2072
       options also accept 24kf1_1, 24kef1_1 and 34kf1_1 as synonyms for
2073
       24kx, 24kex and 34kx.
2074
 
2075
    New configurations
2076
 
2077
   GCC now supports the following configurations:
2078
     * mipsisa32r2*-linux-gnu*, which generates MIPS32 revision 2 code by
2079
       default. Earlier releases also recognized this configuration, but
2080
       they treated it in the same way as mipsisa32*-linux-gnu*. Note that
2081
       you can customize any mips*-linux-gnu* configuration to a
2082
       particular ISA or processor by passing an appropriate --with-arch
2083
       option to configure.
2084
     * mipsisa*-sde-elf*, which provides compatibility with MIPS
2085
       Technologies' SDE toolchains. The configuration uses the SDE
2086
       libraries by default, but you can use it like other newlib-based
2087
       ELF configurations by passing --with-newlib to configure. It is the
2088
       only configuration besides mips64vr*-elf* to build MIPS16 as well
2089
       as non-MIPS16 libraries.
2090
     * mipsisa*-elfoabi*, which is similar to the general mipsisa*-elf*
2091
       configuration, but uses the o32 and o64 ABIs instead of the 32-bit
2092
       and 64-bit forms of the EABI.
2093
 
2094
    New processors and application-specific extensions
2095
 
2096
     * Support for the SmartMIPS ASE is available through the new
2097
       -msmartmips option.
2098
     * Support for revision 2 of the DSP ASE is available through the new
2099
       -mdspr2 option. A new preprocessor macro called __mips_dsp_rev
2100
       indicates the revision of the ASE in use.
2101
     * Support for the 4KS and 74K families of processors is available
2102
       through the -march and -mtune options.
2103
 
2104
    Improved support for built-in functions
2105
 
2106
     * GCC can now use load-linked, store-conditional and sync
2107
       instructions to implement atomic built-in functions such as
2108
       __sync_fetch_and_add. The memory reference must be 4 bytes wide for
2109
       32-bit targets and either 4 or 8 bytes wide for 64-bit targets.
2110
     * GCC can now use the clz and dclz instructions to implement the
2111
       __builtin_ctz and __builtin_ffs families of functions.
2112
     * There is a new __builtin___clear_cache function for flushing the
2113
       instruction cache. GCC expands this function inline on MIPS32
2114
       revision 2 targets, otherwise it calls the function specified by
2115
       -mcache-flush-func.
2116
 
2117
    MIPS16 improvements
2118
 
2119
     * GCC can now compile objects that contain a mixture of MIPS16 and
2120
       non-MIPS16 code. There are two new attributes, mips16 and nomips16,
2121
       for specifying which mode a function should use.
2122
     * A new option called -minterlink-mips16 makes non-MIPS16 code
2123
       link-compatible with MIPS16 code.
2124
     * After many bug fixes, the long-standing MIPS16 -mhard-float support
2125
       should now work fairly reliably.
2126
     * GCC can now use the MIPS16e save and restore instructions.
2127
     * -fsection-anchors now works in MIPS16 mode. MIPS16 code compiled
2128
       with -G0 -fsection-anchors is often smaller than code compiled with
2129
       -G8. However, please note that you must usually compile all objects
2130
       in your application with the same -G option; see the documentation
2131
       of -G for details.
2132
     * A new option called-mcode-readable specifies which instructions are
2133
       allowed to load from the code segment. -mcode-readable=yes is the
2134
       default and says that any instruction may load from the code
2135
       segment. The other alternatives are -mcode-readable=pcrel, which
2136
       says that only PC-relative MIPS16 instructions may load from the
2137
       code segment, and -mcode-readable=no, which says that no
2138
       instruction may do so. Please see the documentation for more
2139
       details, including example uses.
2140
 
2141
    Small-data improvements
2142
 
2143
   There are three new options for controlling small data:
2144
     * -mno-extern-sdata, which disables small-data accesses for
2145
       externally-defined variables. Code compiled with -Gn
2146
       -mno-extern-sdata will be link-compatible with any -G setting
2147
       between -G0 and -Gn inclusive.
2148
     * -mno-local-sdata, which disables the use of small-data sections for
2149
       data that is not externally visible. This option can be a useful
2150
       way of reducing small-data usage in less performance-critical parts
2151
       of an application.
2152
     * -mno-gpopt, which disables the use of the $gp register while still
2153
       honoring the -G limit when placing externally-visible data. This
2154
       option implies -mno-extern-sdata and -mno-local-sdata and it can be
2155
       useful in situations where $gp does not necessarily hold the
2156
       expected value.
2157
 
2158
    Miscellaneous improvements
2159
 
2160
     * There is a new option called -mbranch-cost for tweaking the
2161
       perceived cost of branches.
2162
     * If GCC is configured to use a version of GAS that supports the
2163
       .gnu_attribute directive, it will use that directive to record
2164
       certain properties of the output code. .gnu_attribute is new to GAS
2165
       2.18.
2166
     * There are two new function attributes, near and far, for overriding
2167
       the command-line setting of -mlong-calls on a function-by-function
2168
       basis.
2169
     * -mfp64, which previously required a 64-bit target, now works with
2170
       MIPS32 revision 2 targets as well. The mipsisa*-elfoabi* and
2171
       mipsisa*-sde-elf* configurations provide suitable library support.
2172
     * GCC now recognizes the -mdmx and -mmt options and passes them down
2173
       to the assembler. It does nothing else with the options at present.
2174
 
2175
  SPU (Synergistic Processor Unit) of the Cell Broadband Engine Architecture
2176
  (BEA)
2177
 
2178
     * Support has been added for this new architecture.
2179
 
2180
  RS6000 (POWER/PowerPC)
2181
 
2182
     * Support for the PowerPC 750CL paired-single instructions has been
2183
       added with a new powerpc-*-linux*paired* target configuration. It
2184
       is enabled by an associated -mpaired option and can be accessed
2185
       using new built-in functions.
2186
     * Support for auto-detecting architecture and system configuration to
2187
       auto-select processor optimization tuning.
2188
     * Support for VMX on AIX 5.3 has been added.
2189
     * Support for AIX Version 6.1 has been added.
2190
 
2191
  S/390, zSeries and System z9
2192
 
2193
     * Support for the IBM System z9 EC/BC processor (z9 GA3) has been
2194
       added. When using the -march=z9-ec option, the compiler will
2195
       generate code making use of instructions provided by the decimal
2196
       floating point facility and the floating point conversion facility
2197
       (pfpo). Besides the instructions used to implement decimal floating
2198
       point operations these facilities also contain instructions to move
2199
       between general purpose and floating point registers and to modify
2200
       and copy the sign-bit of floating point values.
2201
     * When the -march=z9-ec option is used the new
2202
       -mhard-dfp/-mno-hard-dfp options can be used to specify whether the
2203
       decimal floating point hardware instructions will be used or not.
2204
       If none of them is given the hardware support is enabled by
2205
       default.
2206
     * The -mstack-guard option can now be omitted when using stack
2207
       checking via -mstack-size in order to let GCC choose a sensible
2208
       stack guard value according to the frame size of each function.
2209
     * Various changes to improve performance of generated code have been
2210
       implemented, including:
2211
          + The condition code set by an add logical with carry
2212
            instruction is now available for overflow checks like: a + b +
2213
            carry < b.
2214
          + The test data class instruction is now used to implement
2215
            sign-bit and infinity checks of binary and decimal floating
2216
            point numbers.
2217
 
2218
  Xtensa
2219
 
2220
     * Stack unwinding for exception handling now uses by default a
2221
       specialized version of DWARF unwinding. This is not
2222
       binary-compatible with the setjmp/longjmp (sjlj) unwinding used for
2223
       Xtensa with previous versions of GCC.
2224
     * For Xtensa processors that include the Conditional Store option,
2225
       the built-in functions for atomic memory access are now implemented
2226
       using S32C1I instructions.
2227
     * If the Xtensa NSA option is available, GCC will use it to implement
2228
       the __builtin_ctz and __builtin_clz functions.
2229
 
2230
Documentation improvements
2231
 
2232
     * Existing libstdc++ documentation has been edited and restructured
2233
       into a single DocBook XML manual. The results can be viewed online
2234
       [24]here.
2235
 
2236
Other significant improvements
2237
 
2238
     * The compiler's --help command-line option has been extended so that
2239
       it now takes an optional set of arguments. These arguments restrict
2240
       the information displayed to specific classes of command-line
2241
       options, and possibly only a subset of those options. It is also
2242
       now possible to replace the descriptive text associated with each
2243
       displayed option with an indication of its current value, or for
2244
       binary options, whether it has been enabled or disabled.
2245
       Here are some examples. The following will display all the options
2246
       controlling warning messages:
2247
      --help=warnings
2248
 
2249
       Whereas this will display all the undocumented, target specific
2250
       options:
2251
      --help=target,undocumented
2252
 
2253
       This sequence of commands will display the binary optimizations
2254
       that are enabled by -O3:
2255
      gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
2256
      gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
2257
      diff /tmp/O2-opts /tmp/O3-opts | grep enabled
2258
 
2259
     * The configure options --with-pkgversion and --with-bugurl have been
2260
       added. These allow distributors of GCC to include a
2261
       distributor-specific string in manuals and --version output and to
2262
       specify the URL for reporting bugs in their versions of GCC.
2263
 
2264
GCC 4.3.1
2265
 
2266
   This is the [25]list of problem reports (PRs) from GCC's bug tracking
2267
   system that are known to be fixed in the 4.3.1 release. This list might
2268
   not be complete (that is, it is possible that some PRs that have been
2269
   fixed are not listed here).
2270
 
2271
Target Specific Changes
2272
 
2273
  IA-32/x86-64
2274
 
2275
    ABI changes
2276
 
2277
     * Starting with GCC 4.3.1, decimal floating point variables are
2278
       aligned to their natural boundaries when they are passed on the
2279
       stack for i386.
2280
 
2281
    Command-line changes
2282
 
2283
     * Starting with GCC 4.3.1, the -mcld option has been added to
2284
       automatically generate a cld instruction in the prologue of
2285
       functions that use string instructions. This option is used for
2286
       backward compatibility on some operating systems and can be enabled
2287
       by default for 32-bit x86 targets by configuring GCC with the
2288
       --enable-cld configure option.
2289
 
2290
GCC 4.3.2
2291
 
2292
   This is the [26]list of problem reports (PRs) from GCC's bug tracking
2293
   system that are known to be fixed in the 4.3.2 release. This list might
2294
   not be complete (that is, it is possible that some PRs that have been
2295
   fixed are not listed here).
2296
 
2297
GCC 4.3.3
2298
 
2299
   This is the [27]list of problem reports (PRs) from GCC's bug tracking
2300
   system that are known to be fixed in the 4.3.3 release. This list might
2301
   not be complete (that is, it is possible that some PRs that have been
2302
   fixed are not listed here).
2303
 
2304
GCC 4.3.4
2305
 
2306
   This is the [28]list of problem reports (PRs) from GCC's bug tracking
2307
   system that are known to be fixed in the 4.3.4 release. This list might
2308
   not be complete (that is, it is possible that some PRs that have been
2309
   fixed are not listed here).
2310
 
2311
GCC 4.3.5
2312
 
2313
   This is the [29]list of problem reports (PRs) from GCC's bug tracking
2314
   system that are known to be fixed in the 4.3.5 release. This list might
2315
   not be complete (that is, it is possible that some PRs that have been
2316
   fixed are not listed here).
2317
 
2318
   Please send FSF & GNU inquiries & questions to [30]gnu@gnu.org. There
2319
   are also [31]other ways to contact the FSF.
2320
 
2321
   These pages are [32]maintained by the GCC team.
2322
 
2323
 
2324
    For questions related to the use of GCC, please consult these web
2325
    pages and the [33]GCC manuals. If that fails, the
2326
    [34]gcc-help@gcc.gnu.org mailing list might help.
2327
    Please send comments on these web pages and the development of GCC to
2328
    our developer mailing list at [35]gcc@gnu.org or [36]gcc@gcc.gnu.org.
2329
    All of our lists have [37]public archives.
2330
 
2331
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
2332
   Floor, Boston, MA 02110, USA.
2333
 
2334
   Verbatim copying and distribution of this entire article is permitted
2335
   in any medium, provided this notice is preserved.
2336
   Last modified 2010-07-10 [38]Valid XHTML 1.0
2337
 
2338
References
2339
 
2340
   1. http://gcc.gnu.org/gcc-4.3/changes.html#4.3.5
2341
   2. http://gmplib.org/
2342
   3. http://www.mpfr.org/
2343
   4. http://gcc.gnu.org/install/prerequisites.html
2344
   5. http://gcc.gnu.org/ml/gcc-announce/2001/msg00000.html
2345
   6. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
2346
   7. http://gcc.gnu.org/gcc-4.3/porting_to.html
2347
   8. http://www.mpfr.org/
2348
   9. http://www.mpfr.org/
2349
  10. http://www.mpfr.org/
2350
  11. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
2351
  12. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
2352
  13. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
2353
  14. http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#m anual.intro.status.standard.tr1
2354
  15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html
2355
  16. http://gmplib.org/
2356
  17. http://www.mpfr.org/
2357
  18. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#Code-Gen-Options
2358
  19. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167
2359
  20. http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/GAMMA.html
2360
  21. http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/LGAMMA.html
2361
  22. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html
2362
  23. http://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html
2363
  24. http://gcc.gnu.org/onlinedocs/libstdc++/
2364
  25. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.1
2365
  26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.2
2366
  27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.3
2367
  28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4
2368
  29. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5
2369
  30. mailto:gnu@gnu.org
2370
  31. http://www.gnu.org/home.html#ContactInfo
2371
  32. http://gcc.gnu.org/about.html
2372
  33. http://gcc.gnu.org/onlinedocs/
2373
  34. mailto:gcc-help@gcc.gnu.org
2374
  35. mailto:gcc@gnu.org
2375
  36. mailto:gcc@gcc.gnu.org
2376
  37. http://gcc.gnu.org/lists.html
2377
  38. http://validator.w3.org/check/referer
2378
======================================================================
2379
http://gcc.gnu.org/gcc-4.2/index.html
2380
 
2381
                           GCC 4.2 Release Series
2382
 
2383
   May 19, 2008
2384
 
2385
   The [1]GNU project and the GCC developers are pleased to announce the
2386
   release of GCC 4.2.4.
2387
 
2388
   This release is a bug-fix release, containing fixes for regressions in
2389
   GCC 4.2.3 relative to previous releases of GCC.
2390
 
2391
Release History
2392
 
2393
   GCC 4.2.4
2394
          May 19, 2008 ([2]changes)
2395
 
2396
   GCC 4.2.3
2397
          February 1, 2008 ([3]changes)
2398
 
2399
   GCC 4.2.2
2400
          October 7, 2007 ([4]changes)
2401
 
2402
   GCC 4.2.1
2403
          July 18, 2007 ([5]changes)
2404
 
2405
   GCC 4.2.0
2406
          May 13, 2007 ([6]changes)
2407
 
2408
References and Acknowledgements
2409
 
2410
   GCC used to stand for the GNU C Compiler, but since the compiler
2411
   supports several other languages aside from C, it now stands for the
2412
   GNU Compiler Collection.
2413
 
2414
   A list of [7]successful builds is updated as new information becomes
2415
   available.
2416
 
2417
   The GCC developers would like to thank the numerous people that have
2418
   contributed new features, improvements, bug fixes, and other changes as
2419
   well as test results to GCC. This [8]amazing group of volunteers is
2420
   what makes GCC successful.
2421
 
2422
   For additional information about GCC please refer to the [9]GCC project
2423
   web site or contact the [10]GCC development mailing list.
2424
 
2425
   To obtain GCC please use [11]our mirror sites or [12]our SVN server.
2426
 
2427
   Please send FSF & GNU inquiries & questions to [13]gnu@gnu.org. There
2428
   are also [14]other ways to contact the FSF.
2429
 
2430
   These pages are [15]maintained by the GCC team.
2431
 
2432
 
2433
    For questions related to the use of GCC, please consult these web
2434
    pages and the [16]GCC manuals. If that fails, the
2435
    [17]gcc-help@gcc.gnu.org mailing list might help.
2436
    Please send comments on these web pages and the development of GCC to
2437
    our developer mailing list at [18]gcc@gnu.org or [19]gcc@gcc.gnu.org.
2438
    All of our lists have [20]public archives.
2439
 
2440
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
2441
   Floor, Boston, MA 02110, USA.
2442
 
2443
   Verbatim copying and distribution of this entire article is permitted
2444
   in any medium, provided this notice is preserved.
2445
   Last modified 2010-07-01 [21]Valid XHTML 1.0
2446
 
2447
References
2448
 
2449
   1. http://www.gnu.org/
2450
   2. http://gcc.gnu.org/gcc-4.2/changes.html
2451
   3. http://gcc.gnu.org/gcc-4.2/changes.html
2452
   4. http://gcc.gnu.org/gcc-4.2/changes.html
2453
   5. http://gcc.gnu.org/gcc-4.2/changes.html
2454
   6. http://gcc.gnu.org/gcc-4.2/changes.html
2455
   7. http://gcc.gnu.org/gcc-4.2/buildstat.html
2456
   8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
2457
   9. http://gcc.gnu.org/index.html
2458
  10. mailto:gcc@gcc.gnu.org
2459
  11. http://gcc.gnu.org/mirrors.html
2460
  12. http://gcc.gnu.org/svn.html
2461
  13. mailto:gnu@gnu.org
2462
  14. http://www.gnu.org/home.html#ContactInfo
2463
  15. http://gcc.gnu.org/about.html
2464
  16. http://gcc.gnu.org/onlinedocs/
2465
  17. mailto:gcc-help@gcc.gnu.org
2466
  18. mailto:gcc@gnu.org
2467
  19. mailto:gcc@gcc.gnu.org
2468
  20. http://gcc.gnu.org/lists.html
2469
  21. http://validator.w3.org/check/referer
2470
======================================================================
2471
http://gcc.gnu.org/gcc-4.2/changes.html
2472
 
2473
                           GCC 4.2 Release Series
2474
                      Changes, New Features, and Fixes
2475
 
2476
Caveats
2477
 
2478
     * GCC no longer accepts the -fshared-data option. This option has had
2479
       no effect in any GCC 4 release; the targets to which the option
2480
       used to apply had been removed before GCC 4.0.
2481
 
2482
General Optimizer Improvements
2483
 
2484
     * New command-line options specify the possible relationships among
2485
       parameters and between parameters and global data. For example,
2486
       -fargument-noalias-anything specifies that arguments do not alias
2487
       any other storage.
2488
       Each language will automatically use whatever option is required by
2489
       the language standard. You should not need to use these options
2490
       yourself.
2491
 
2492
New Languages and Language specific improvements
2493
 
2494
     * [1]OpenMP is now supported for the C, C++ and Fortran compilers.
2495
     * New command-line options -fstrict-overflow and -Wstrict-overflow
2496
       have been added. -fstrict-overflow tells the compiler that it may
2497
       assume that the program follows the strict signed overflow
2498
       semantics permitted for the language: for C and C++ this means that
2499
       the compiler may assume that signed overflow does not occur. For
2500
       example, a loop like
2501
      for (i = 1; i > 0; i *= 2)
2502
 
2503
       is presumably intended to continue looping until i overflows. With
2504
       -fstrict-overflow, the compiler may assume that signed overflow
2505
       will not occur, and transform this into an infinite loop.
2506
       -fstrict-overflow is turned on by default at -O2, and may be
2507
       disabled via -fno-strict-overflow. The -Wstrict-overflow option may
2508
       be used to warn about cases where the compiler assumes that signed
2509
       overflow will not occur. It takes five different levels:
2510
       -Wstrict-overflow=1 to 5. See the [2]documentation for details.
2511
       -Wstrict-overflow=1 is enabled by -Wall.
2512
     * The new command-line option -fno-toplevel-reorder directs GCC to
2513
       emit top-level functions, variables, and asm statements in the same
2514
       order that they appear in the input file. This is intended to
2515
       support existing code which relies on a particular ordering (for
2516
       example, code which uses top-level asm statements to switch
2517
       sections). For new code, it is generally better to use function and
2518
       variable attributes. The -fno-toplevel-reorder option may be used
2519
       for most cases which currently use -fno-unit-at-a-time. The
2520
       -fno-unit-at-a-time option will be removed in some future version
2521
       of GCC. If you know of a case which requires -fno-unit-at-a-time
2522
       which is not fixed by -fno-toplevel-reorder, please open a bug
2523
       report.
2524
 
2525
  C family
2526
 
2527
     * The pragma redefine_extname will now macro expand its tokens for
2528
       compatibility with SunPRO.
2529
     * In the next release of GCC, 4.3, -std=c99 or -std=gnu99 will direct
2530
       GCC to handle inline functions as specified in the C99 standard. In
2531
       preparation for this, GCC 4.2 will warn about any use of non-static
2532
       inline functions in gnu99 or c99 mode. This new warning may be
2533
       disabled with the new gnu_inline function attribute or the new
2534
       -fgnu89-inline command-line option. Also, GCC 4.2 and later will
2535
       define one of the preprocessor macros __GNUC_GNU_INLINE__ or
2536
       __GNUC_STDC_INLINE__ to indicate the semantics of inline functions
2537
       in the current compilation.
2538
     * A new command-line option -Waddress has been added to warn about
2539
       suspicious uses of memory addresses as, for example, using the
2540
       address of a function in a conditional expression, and comparisons
2541
       against the memory address of a string literal. This warning is
2542
       enabled by -Wall.
2543
 
2544
  C++
2545
 
2546
     * C++ visibility handling has been overhauled.
2547
       Restricted visiblity is propagated from classes to members, from
2548
       functions to local statics, and from templates and template
2549
       arguments to instantiations, unless the latter has explicitly
2550
       declared visibility.
2551
       The visibility attribute for a class must come between the
2552
       class-key and the name, not after the closing brace.
2553
       Attributes are now allowed for enums and elaborated-type-specifiers
2554
       that only declare a type.
2555
       Members of the anonymous namespace are now local to a particular
2556
       translation unit, along with any other declarations which use them,
2557
       though they are still treated as having external linkage for
2558
       language semantics.
2559
     * The (undocumented) extension which permitted templates with default
2560
       arguments to be bound to template template parameters with fewer
2561
       parameters has been removed. For example:
2562
        template