Home | History | Annotate | Line # | Download | only in dist
NEWS revision 1.10
      1 This file contains information about GCC releases which has been generated
      2 automatically from the online release notes.  It covers releases of GCC
      3 (and the former EGCS project) since EGCS 1.0, on the line of development
      4 that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2,
      5 see ONEWS.
      6 
      7 ======================================================================
      8 http://gcc.gnu.org/gcc-7/index.html
      9 
     10                               GCC 7 Release Series
     11 
     12    Dec 6, 2018
     13 
     14    The [1]GNU project and the GCC developers are pleased to announce the
     15    release of GCC 7.4.
     16 
     17    This release is a bug-fix release, containing fixes for regressions in
     18    GCC 7.3 relative to previous releases of GCC.
     19 
     20 Release History
     21 
     22    GCC 7.4
     23           Dec 6, 2018 ([2]changes, [3]documentation)
     24 
     25    GCC 7.3
     26           Jan 25, 2018 ([4]changes, [5]documentation)
     27 
     28    GCC 7.2
     29           Aug 14, 2017 ([6]changes, [7]documentation)
     30 
     31    GCC 7.1
     32           May 2, 2017 ([8]changes, [9]documentation)
     33 
     34 References and Acknowledgements
     35 
     36    GCC used to stand for the GNU C Compiler, but since the compiler
     37    supports several other languages aside from C, it now stands for the
     38    GNU Compiler Collection.
     39 
     40    A list of [10]successful builds is updated as new information becomes
     41    available.
     42 
     43    The GCC developers would like to thank the numerous people that have
     44    contributed new features, improvements, bug fixes, and other changes as
     45    well as test results to GCC. This [11]amazing group of volunteers is
     46    what makes GCC successful.
     47 
     48    For additional information about GCC please refer to the [12]GCC
     49    project web site or contact the [13]GCC development mailing list.
     50 
     51    To obtain GCC please use [14]our mirror sites or [15]our SVN server.
     52 
     53 
     54     For questions related to the use of GCC, please consult these web
     55     pages and the [16]GCC manuals. If that fails, the
     56     [17]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
     57     web pages and the development of GCC are welcome on our developer
     58     list at [18]gcc (a] gcc.gnu.org. All of [19]our lists have public
     59     archives.
     60 
     61    Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
     62    distribution of this entire article is permitted in any medium,
     63    provided this notice is preserved.
     64 
     65    These pages are [21]maintained by the GCC team. Last modified
     66    2018-12-06[22].
     67 
     68 References
     69 
     70    1. http://www.gnu.org/
     71    2. http://gcc.gnu.org/gcc-7/changes.html
     72    3. http://gcc.gnu.org/onlinedocs/7.4.0/
     73    4. http://gcc.gnu.org/gcc-7/changes.html
     74    5. http://gcc.gnu.org/onlinedocs/7.3.0/
     75    6. http://gcc.gnu.org/gcc-7/changes.html
     76    7. http://gcc.gnu.org/onlinedocs/7.2.0/
     77    8. http://gcc.gnu.org/gcc-7/changes.html
     78    9. http://gcc.gnu.org/onlinedocs/7.1.0/
     79   10. http://gcc.gnu.org/gcc-7/buildstat.html
     80   11. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
     81   12. http://gcc.gnu.org/index.html
     82   13. mailto:gcc (a] gcc.gnu.org
     83   14. http://gcc.gnu.org/mirrors.html
     84   15. http://gcc.gnu.org/svn.html
     85   16. https://gcc.gnu.org/onlinedocs/
     86   17. mailto:gcc-help (a] gcc.gnu.org
     87   18. mailto:gcc (a] gcc.gnu.org
     88   19. https://gcc.gnu.org/lists.html
     89   20. https://www.fsf.org/
     90   21. https://gcc.gnu.org/about.html
     91   22. http://validator.w3.org/check/referer
     92 ======================================================================
     93 http://gcc.gnu.org/gcc-7/changes.html
     94 
     95                               GCC 7 Release Series
     96                         Changes, New Features, and Fixes
     97 
     98    This page is a brief summary of some of the huge number of improvements
     99    in GCC 7. For more information, see the [1]Porting to GCC 7 page and
    100    the [2]full GCC documentation.
    101 
    102 Caveats
    103 
    104      * GCC now uses [3]LRA (a new local register allocator) by default for
    105        new targets.
    106      * The non-standard C++0x type traits has_trivial_default_constructor,
    107        has_trivial_copy_constructor and has_trivial_copy_assign have been
    108        removed.
    109      * The libstdc++ [4]Profile Mode has been deprecated and will be
    110        removed in a future version.
    111      * The Cilk+ extensions to the C and C++ languages have been
    112        deprecated.
    113      * On ARM targets (arm*-*-*), [5]a bug introduced in GCC 5 that
    114        affects conformance to the procedure call standard (AAPCS) has been
    115        fixed. The bug affects some C++ code where class objects are passed
    116        by value to functions and could result in incorrect or inconsistent
    117        code being generated. This is an ABI change. If the option -Wpsabi
    118        is enabled (on by default) the compiler will emit a diagnostic note
    119        for code that might be affected.
    120 
    121 General Optimizer Improvements
    122 
    123      * GCC 7 can determine the return value or range of return values of
    124        some calls to the sprintf family of functions and make it available
    125        to other optimization passes. Some calls to the snprintf function
    126        with a zero size argument can be folded into constants. This
    127        optimization is included in -O1 and can be selectively controlled
    128        by the -fprintf-return-value option.
    129      * A new store merging pass has been added. It merges constant stores
    130        to adjacent memory locations into fewer, wider, stores. It is
    131        enabled by the -fstore-merging option and at the -O2 optimization
    132        level or higher (and -Os).
    133      * A new code hoisting optimization has been added to the partial
    134        redundancy elimination pass. It attempts to move evaluation of
    135        expressions executed on all paths to the function exit as early as
    136        possible. This primarily helps improve code size, but can improve
    137        the speed of the generated code as well. It is enabled by the
    138        -fcode-hoisting option and at the -O2 optimization level or higher
    139        (and -Os).
    140      * A new interprocedural bitwise constant propagation optimization has
    141        been added, which propagates knowledge about which bits of
    142        variables are known to be zero (including pointer alignment
    143        information) across the call graph. It is enabled by the
    144        -fipa-bit-cp option if -fipa-cp is enabled as well, and is enabled
    145        at the -O2 optimization level and higher (and -Os). This
    146        optimization supersedes interprocedural alignment propagation of
    147        GCC 6, and therefore the option -fipa-cp-alignment is now
    148        deprecated and ignored.
    149      * A new interprocedural value range propagation optimization has been
    150        added, which propagates integral range information across the call
    151        graph when variable values can be proven to be within those ranges.
    152        It is enabled by the -fipa-vrp option and at the -O2 optimization
    153        level and higher (and -Os).
    154      * A new loop splitting optimization pass has been added. Certain
    155        loops which contain a condition that is always true on one side of
    156        the iteration space and always false on the other are split into
    157        two loops, such that each of the two new loops iterates on just one
    158        side of the iteration space and the condition does not need to be
    159        checked inside of the loop. It is enabled by the -fsplit-loops
    160        option and at the -O3 optimization level or higher.
    161      * The shrink-wrapping optimization can now separate portions of
    162        prologues and epilogues to improve performance if some of the work
    163        done traditionally by prologues and epilogues is not needed on
    164        certain paths. This is controlled by the -fshrink-wrap-separate
    165        option, enabled by default. It requires target support, which is
    166        currently only implemented in the PowerPC and AArch64 ports.
    167      * AddressSanitizer gained a new sanitization option,
    168        -fsanitize-address-use-after-scope, which enables sanitization of
    169        variables whose address is taken and used after a scope where the
    170        variable is defined:
    171 
    172 int
    173 main (int argc, char **argv)
    174 {
    175   char *ptr;
    176     {
    177       char my_char;
    178       ptr = &my_char;
    179     }
    180 
    181   *ptr = 123;
    182   return *ptr;
    183 }
    184 
    185 ==28882==ERROR: AddressSanitizer: stack-use-after-scope on address 0x7fffb8dba99
    186 0 at pc 0x0000004006d5 bp 0x7fffb8dba960 sp 0x7fffb8dba958
    187 WRITE of size 1 at 0x7fffb8dba990 thread T0
    188     #0 0x4006d4 in main /tmp/use-after-scope-1.c:10
    189     #1 0x7f9c71943290 in __libc_start_main (/lib64/libc.so.6+0x20290)
    190     #2 0x400739 in _start (/tmp/a.out+0x400739)
    191 
    192 Address 0x7fffb8dba990 is located in stack of thread T0 at offset 32 in frame
    193     #0 0x40067f in main /tmp/use-after-scope-1.c:3
    194 
    195   This frame has 1 object(s):
    196     [32, 33) 'my_char' <== Memory access at offset 32 is inside this variable
    197 
    198        The option is enabled by default with -fsanitize=address and
    199        disabled by default with -fsanitize=kernel-address. Compared to the
    200        LLVM compiler, where the option already exists, the implementation
    201        in the GCC compiler has some improvements and advantages:
    202           + Complex uses of gotos and case labels are properly handled and
    203             should not report any false positive or false negatives.
    204           + C++ temporaries are sanitized.
    205           + Sanitization can handle invalid memory stores that are
    206             optimized out by the LLVM compiler when optimization is
    207             enabled.
    208      * The -fsanitize=signed-integer-overflow suboption of the
    209        UndefinedBehavior Sanitizer now diagnoses arithmetic overflows even
    210        on arithmetic operations with generic vectors.
    211      * Version 5 of the [6]DWARF debugging information standard is
    212        supported through the -gdwarf-5 option. The DWARF version 4
    213        debugging information remains the default until consumers of
    214        debugging information are adjusted.
    215 
    216 New Languages and Language specific improvements
    217 
    218    OpenACC support in C, C++, and Fortran continues to be maintained and
    219    improved. See the [7]OpenACC and [8]Offloading wiki pages for further
    220    information.
    221 
    222   Ada
    223 
    224      * On mainstream native platforms, Ada programs no longer require the
    225        stack to be made executable in order to run properly.
    226 
    227   BRIG (HSAIL)
    228 
    229    Support for processing BRIG 1.0 files was added in this release. BRIG
    230    is a binary format for HSAIL (Heterogeneous System Architecture
    231    Intermediate Language). The BRIG front end can be used for implementing
    232    HSAIL "finalizers" (compilation of HSAIL to a native ISA) for
    233    GCC-supported targets. An implementation of an HSAIL runtime library,
    234    libhsail-rt is also included.
    235 
    236   C family
    237 
    238      * New command-line options have been added for the C and C++
    239        compilers:
    240           + -Wimplicit-fallthrough warns when a switch case falls through.
    241             This warning has five different levels. The compiler is able
    242             to parse a wide range of fallthrough comments, depending on
    243             the level. It also handles control-flow statements, such as
    244             ifs. It's possible to suppress the warning by either adding a
    245             fallthrough comment, or by using a null statement:
    246             __attribute__ ((fallthrough)); (C, C++), or [[fallthrough]];
    247             (C++17), or [[gnu::fallthrough]]; (C++11/C++14). This warning
    248             is enabled by -Wextra.
    249           + -Wpointer-compare warns when a pointer is compared with a zero
    250             character constant. Such code is now invalid in C++11 and GCC
    251             rejects it. This warning is enabled by default.
    252           + -Wduplicated-branches warns when an if-else has identical
    253             branches.
    254           + -Wrestrict warns when an argument passed to a
    255             restrict-qualified parameter aliases with another argument.
    256           + -Wmemset-elt-size warns for memset calls, when the first
    257             argument references an array, and the third argument is a
    258             number equal to the number of elements of the array, but not
    259             the size of the array. This warning is enabled by -Wall.
    260           + -Wint-in-bool-context warns about suspicious uses of integer
    261             values where boolean values are expected. This warning is
    262             enabled by -Wall.
    263           + -Wswitch-unreachable warns when a switch statement has
    264             statements between the controlling expression and the first
    265             case label which will never be executed. This warning is
    266             enabled by default.
    267           + -Wexpansion-to-defined warns when defined is used outside #if.
    268             This warning is enabled by -Wextra or -Wpedantic.
    269           + -Wregister warns about uses of the register storage specifier.
    270             In C++17 this keyword has been removed and for C++17 this is a
    271             pedantic warning enabled by default. The warning is not
    272             emitted for the GNU Explicit Register Variables extension.
    273           + -Wvla-larger-than=N warns about unbounded uses of
    274             variable-length arrays, and about bounded uses of
    275             variable-length arrays whose bound can be larger than N bytes.
    276           + -Wduplicate-decl-specifier warns when a declaration has
    277             duplicate const, volatile, restrict or _Atomic specifier. This
    278             warning is enabled by -Wall.
    279      * GCC 6's C and C++ front ends were able to offer suggestions for
    280        misspelled field names:
    281 
    282 spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did
    283 you mean 'color'?
    284    return ptr->colour;
    285                ^~~~~~
    286 
    287        GCC 7 greatly expands the scope of these suggestions. Firstly, it
    288        adds fix-it hints to such suggestions:
    289 
    290 spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did
    291 you mean 'color'?
    292    return ptr->colour;
    293                ^~~~~~
    294                color
    295 
    296        The suggestions now cover many other things, such as misspelled
    297        function names:
    298 
    299 spellcheck-identifiers.c:11:3: warning: implicit declaration of function 'gtk_wi
    300 dget_showall'; did you mean 'gtk_widget_show_all'? [-Wimplicit-function-declarat
    301 ion]
    302    gtk_widget_showall (w);
    303    ^~~~~~~~~~~~~~~~~~
    304    gtk_widget_show_all
    305 
    306        misspelled macro names and enum values:
    307 
    308 spellcheck-identifiers.cc:85:11: error: 'MAX_ITEM' undeclared here (not in a fun
    309 ction); did you mean 'MAX_ITEMS'?
    310  int array[MAX_ITEM];
    311            ^~~~~~~~
    312            MAX_ITEMS
    313 
    314        misspelled type names:
    315 
    316 spellcheck-typenames.c:7:14: error: unknown type name 'singed'; did you mean 'si
    317 gned'?
    318  void test (singed char e);
    319             ^~~~~~
    320             signed
    321 
    322        and, in the C front end, named initializers:
    323 
    324 test.c:7:20: error: 'struct s' has no member named 'colour'; did you mean 'color
    325 '?
    326  struct s test = { .colour = 3 };
    327                     ^~~~~~
    328                     color
    329 
    330      * The preprocessor can now offer suggestions for misspelled
    331        directives, e.g.:
    332 
    333 test.c:5:2: error:invalid preprocessing directive #endfi; did you mean #endif?
    334  #endfi
    335   ^~~~~
    336   endif
    337 
    338      * Warnings about format strings now underline the pertinent part of
    339        the string, and can offer suggested fixes. In some cases, the
    340        pertinent argument is underlined.
    341 
    342 test.c:51:29: warning: format '%s' expects argument of type 'char *', but argume
    343 nt 3 has type 'int' [-Wformat=]
    344    printf ("foo: %d  bar: %s baz: %d", 100, i + j, 102);
    345                           ~^                ~~~~~
    346                           %d
    347 
    348      * The new -Wdangling-else command-line option has been split out of
    349        -Wparentheses and warns about dangling else.
    350      * The -Wshadow warning has been split into three variants.
    351        -Wshadow=global warns for any shadowing. This is the default when
    352        using -Wshadow without any argument. -Wshadow=local only warns for
    353        a local variable shadowing another local variable or parameter.
    354        -Wshadow=compatible-local only warns for a local variable shadowing
    355        another local variable or parameter whose type is compatible (in
    356        C++ compatible means that the type of the shadowing variable can be
    357        converted to that of the shadowed variable).
    358        The following example shows the different kinds of shadow warnings:
    359 
    360 enum operation { add, count };
    361 struct container { int nr; };
    362 
    363 int
    364 container_count (struct container c, int count)
    365 {
    366   int r = 0;
    367   for (int count = 0; count > 0; count--)
    368     {
    369       struct container count = c;
    370       r += count.nr;
    371     }
    372   return r;
    373 }
    374 
    375        -Wshadow=compatible-local will warn for the parameter being
    376        shadowed with the same type:
    377 
    378 warn-test.c:8:12: warning: declaration of 'count' shadows a parameter [-Wshadow=
    379 compatible-local]
    380    for (int count = 0; count > 0; count--)
    381             ^~~~~
    382 warn-test.c:5:42: note: shadowed declaration is here
    383  container_count (struct container c, int count)
    384                                           ^~~~~
    385 
    386        -Wshadow=local will warn for the above and for the shadowed
    387        declaration with incompatible type:
    388 
    389 warn-test.c:10:24: warning: declaration of 'count' shadows a previous local [-Ws
    390 hadow=local]
    391        struct container count = c;
    392                         ^~~~~
    393 warn-test.c:8:12: note: shadowed declaration is here
    394    for (int count = 0; count > 0; count--)
    395             ^~~~~
    396 
    397        -Wshadow=global will warn for all of the above and the shadowing of
    398        the global declaration:
    399 
    400 warn-test.c:5:42: warning: declaration of 'count' shadows a global declaration [
    401 -Wshadow]
    402  container_count (struct container c, int count)
    403                                           ^~~~~
    404 warn-test.c:1:23: note: shadowed declaration is here
    405  enum operation { add, count };
    406                        ^~~~~
    407 
    408      * GCC 7 contains a number of enhancements that help detect buffer
    409        overflow and other forms of invalid memory accesses.
    410           + The -Walloc-size-larger-than=size option detects calls to
    411             standard and user-defined memory allocation functions
    412             decorated with attribute alloc_size whose argument exceeds the
    413             specified size (PTRDIFF_MAX by default). The option also
    414             detects arithmetic overflow in the computation of the size in
    415             two-argument allocation functions like calloc where the total
    416             size is the product of the two arguments. Since calls with an
    417             excessive size cannot succeed they are typically the result of
    418             programming errors. Such bugs have been known to be the source
    419             of security vulnerabilities and a target of exploits.
    420             -Walloc-size-larger-than=PTRDIFF_MAX is included in -Wall.
    421             For example, the following call to malloc incorrectly tries to
    422             avoid passing a negative argument to the function and instead
    423             ends up unconditionally invoking it with an argument less than
    424             or equal to zero. Since after conversion to the type of the
    425             argument of the function (size_t) a negative argument results
    426             in a value in excess of the maximum PTRDIFF_MAX the call is
    427             diagnosed.
    428 
    429 void* f (int n)
    430 {
    431   return malloc (n > 0 ? 0 : n);
    432 }
    433 
    434 warning: argument 1 range [2147483648, 4294967295] exceeds maximum object size 2
    435 147483647 [-Walloc-size-larger-than=]
    436 
    437           + The -Walloc-zero option detects calls to standard and
    438             user-defined memory allocation functions decorated with
    439             attribute alloc_size with a zero argument. -Walloc-zero is not
    440             included in either -Wall or -Wextra and must be explicitly
    441             enabled.
    442           + The -Walloca option detects all calls to the alloca function
    443             in the program. -Walloca is not included in either -Wall or
    444             -Wextra and must be explicitly enabled.
    445           + The -Walloca-larger-than=size option detects calls to the
    446             alloca function whose argument either may exceed the specified
    447             size, or that is not known to be sufficiently constrained to
    448             avoid exceeding it. -Walloca-larger-than is not included in
    449             either -Wall or -Wextra and must be explicitly enabled.
    450             For example, compiling the following snippet with
    451             -Walloca-larger-than=1024 results in a warning because even
    452             though the code appears to call alloca only with sizes of 1kb
    453             and less, since n is signed, a negative value would result in
    454             a call to the function well in excess of the limit.
    455 
    456 void f (int n)
    457 {
    458   char *d;
    459   if (n < 1025)
    460     d = alloca (n);
    461   else
    462     d = malloc (n);
    463   ...
    464 }
    465 
    466 warning: argument to 'alloca may be too large due to conversion from 'int' to 'l
    467 ong unsigned int' [-Walloca-larger-than=]
    468 
    469             In contrast, a call to alloca that isn't bounded at all such
    470             as in the following function will elicit the warning below
    471             regardless of the size argument to the option.
    472 
    473 void f (size_t n)
    474 {
    475   char *d = alloca (n);
    476   ...
    477 }
    478 
    479 warning: unbounded use of 'alloca' [-Walloca-larger-than=]
    480 
    481           + The -Wformat-overflow=level option detects certain and likely
    482             buffer overflow in calls to the sprintf family of formatted
    483             output functions. Although the option is enabled even without
    484             optimization it works best with -O2 and higher.
    485             For example, in the following snippet the call to sprintf is
    486             diagnosed because even though its output has been constrained
    487             using the modulo operation it could result in as many as three
    488             bytes if mday were negative. The solution is to either
    489             allocate a larger buffer or make sure the argument is not
    490             negative, for example by changing mday's type to unsigned or
    491             by making the type of the second operand of the modulo
    492             expression unsigned: 100U.
    493 
    494 void* f (int mday)
    495 {
    496   char *buf = malloc (3);
    497   sprintf (buf, "%02i", mday % 100);
    498   return buf;
    499 }
    500 
    501 warning: 'sprintf may write a terminating nul past the end of the destination [-
    502 Wformat-overflow=]
    503 note: 'sprintf' output between 3 and 4 bytes into a destination of size 3
    504 
    505           + The -Wformat-truncation=level option detects certain and
    506             likely output truncation in calls to the snprintf family of
    507             formatted output functions. -Wformat-truncation=1 is included
    508             in -Wall and enabled without optimization but works best with
    509             -O2 and higher.
    510             For example, the following function attempts to format an
    511             integer between 0 and 255 in hexadecimal, including the 0x
    512             prefix, into a buffer of four characters. But since the
    513             function must always terminate output by the null character
    514             ('\0') such a buffer is only big enough to fit just one digit
    515             plus the prefix. Therefore the snprintf call is diagnosed. To
    516             avoid the warning either use a bigger buffer or handle the
    517             function's return value which indicates whether or not its
    518             output has been truncated.
    519 
    520 void f (unsigned x)
    521 {
    522   char d[4];
    523   snprintf (d, sizeof d, "%#02x", x & 0xff);
    524   ...
    525 }
    526 
    527 warning: 'snprintf' output may be truncated before the last format character [-W
    528 format-truncation=]
    529 note: 'snprintf' output between 3 and 5 bytes into a destination of size 4
    530 
    531           + The -Wnonnull option has been enhanced to detect a broader set
    532             of cases of passing null pointers to functions that expect a
    533             non-null argument (those decorated with attribute nonnull). By
    534             taking advantage of optimizations the option can detect many
    535             more cases of the problem than in prior GCC versions.
    536           + The -Wstringop-overflow=type option detects buffer overflow in
    537             calls to string handling functions like memcpy and strcpy. The
    538             option relies on [9]Object Size Checking and has an effect
    539             similar to defining the _FORTIFY_SOURCE macro.
    540             -Wstringop-overflow=2 is enabled by default.
    541             For example, in the following snippet, because the call to
    542             strncat specifies a maximum that allows the function to write
    543             past the end of the destination, it is diagnosed. To correct
    544             the problem and avoid the overflow the function should be
    545             called with a size of at most sizeof d - strlen(d) - 1.
    546 
    547 void f (const char *fname)
    548 {
    549   char d[8];
    550   strncpy (d, "/tmp/", sizeof d);
    551   strncat (d, fname, sizeof d);
    552   ...
    553 }
    554 
    555 warning: specified bound 8 equals the size of the destination [-Wstringop-overfl
    556 ow=]
    557 
    558      * The <limits.h> header provided by GCC defines macros such as
    559        INT_WIDTH for the width in bits of integer types, if
    560        __STDC_WANT_IEC_60559_BFP_EXT__ is defined before the header is
    561        included. The <stdint.h> header defines such macros as SIZE_WIDTH
    562        and INTMAX_WIDTH for the width of some standard typedef names for
    563        integer types, again if __STDC_WANT_IEC_60559_BFP_EXT__ is defined
    564        before the header is included; note that GCC's implementation of
    565        this header is only used for freestanding compilations, not hosted
    566        compilations, on most systems. These macros come from ISO/IEC TS
    567        18661-1:2014.
    568      * The <float.h> header provided by GCC defines the macro
    569        CR_DECIMAL_DIG, from ISO/IEC TS 18661-1:2014, if
    570        __STDC_WANT_IEC_60559_BFP_EXT__ is defined before the header is
    571        included. This represents the number of decimal digits for which
    572        conversions between decimal character strings and binary formats,
    573        in both directions, are correctly rounded, and currently has the
    574        value of UINTMAX_MAX on all systems, reflecting that GCC's
    575        compile-time conversions are correctly rounded for any number of
    576        digits.
    577      * New __builtin_add_overflow_p, __builtin_sub_overflow_p,
    578        __builtin_mul_overflow_p built-in functions have been added. These
    579        work similarly to their siblings without the _p suffix, but do not
    580        actually store the result of the arithmetics anywhere, just return
    581        whether the operation would overflow. Calls to these built-ins with
    582        integer constant arguments evaluate to integer constants
    583        expressions.
    584        For example, in the following, c is assigned the result of a * b
    585        only if the multiplication does not overflow, otherwise it is
    586        assigned the value zero. The multiplication is performed at
    587        compile-time and without triggering a -Woverflow warning.
    588 
    589 enum {
    590   a = 12345678,
    591   b = 87654321,
    592   c = __builtin_mul_overflow_p (a, b, a) ? 0 : a * b
    593 };
    594 
    595   C
    596 
    597      * The C front end now supports type names _FloatN for floating-point
    598        types with IEEE interchange formats and _FloatNx for floating-point
    599        types with IEEE extended formats. These type names come from
    600        ISO/IEC TS 18661-3:2015.
    601        The set of types supported depends on the target for which GCC is
    602        configured. Most targets support _Float32, _Float32x and _Float64.
    603        _Float128 is supported on targets where IEEE binary128 encoding was
    604        already supported as long double or __float128. _Float64x is
    605        supported on targets where a type with either binary128 or Intel
    606        extended precision format is available.
    607        Constants with these types are supported using suffixes fN, FN, fNx
    608        and FNx (e.g., 1.2f128 or 2.3F64x). Macros such as FLT128_MAX are
    609        defined in <float.h> if __STDC_WANT_IEC_60559_TYPES_EXT__ is
    610        defined before it is included.
    611        These new types are always distinct from each other and from float,
    612        double and long double, even if they have the same encoding.
    613        Complex types such as _Complex _Float128 are also supported.
    614        Type-generic built-in functions such as __builtin_isinf support the
    615        new types, and the following type-specific built-in functions have
    616        versions (suffixed fN or fNx) for the new types:
    617        __builtin_copysign, __builtin_fabs, __builtin_huge_val,
    618        __builtin_inf, __builtin_nan, __builtin_nans.
    619      * Compilation with -fopenmp is now compatible with the C11 _Atomic
    620        keyword.
    621 
    622   C++
    623 
    624      * The C++ front end has experimental support for all of the current
    625        C++17 draft with the -std=c++1z or -std=gnu++1z flags, including if
    626        constexpr, class template argument deduction, auto template
    627        parameters, and structured bindings. For a full list of new
    628        features, see [10]the C++ status page.
    629      * C++17 support for new of over-aligned types can be enabled in other
    630        modes with the -faligned-new flag.
    631      * The C++17 evaluation order requirements can be selected in other
    632        modes with the -fstrong-eval-order flag, or disabled in C++17 mode
    633        with -fno-strong-eval-order.
    634      * The default semantics of inherited constructors has changed in all
    635        modes, following [11]P0136. Essentially, overload resolution
    636        happens as if calling the inherited constructor directly, and the
    637        compiler fills in construction of the other bases and members as
    638        needed. Most uses should not need any changes. The old behavior can
    639        be restored with -fno-new-inheriting-ctors, or -fabi-version less
    640        than 11.
    641      * The resolution of DR 150 on matching of template template
    642        parameters, allowing default template arguments to make a template
    643        match a parameter, is currently enabled by default in C++17 mode
    644        only. The default can be overridden with -f{no-,}new-ttp-matching.
    645      * The C++ front end will now provide fix-it hints for some missing
    646        semicolons, allowing for automatic fixes by IDEs:
    647 
    648 test.cc:4:11: error: expected ';' after class definition
    649  class a {}
    650            ^
    651            ;
    652 
    653      * -Waligned-new has been added to the C++ front end. It warns about
    654        new of type with extended alignment without -faligned-new.
    655 
    656     Runtime Library (libstdc++)
    657 
    658      * The type of exception thrown by iostreams, std::ios_base::failure,
    659        now uses the [12]cxx11 ABI.
    660      * Experimental support for C++17, including the following new
    661        features:
    662           + std::string_view;
    663           + std::any, std::optional, and std::variant;
    664           + std::invoke, std::is_invocable, std::is_nothrow_invocable, and
    665             invoke_result;
    666           + std::is_swappable, and std::is_nothrow_swappable;
    667           + std::apply, and std::make_from_tuple;
    668           + std::void_t, std::bool_constant, std::conjunction,
    669             std::disjunction, and std::negation;
    670           + Variable templates for type traits;
    671           + Mathematical Special Functions;
    672           + std::chrono::floor, std::chrono::ceil, std::chrono::round, and
    673             std::chrono::abs;
    674           + std::clamp, std::gcd, std::lcm, 3-dimensional std::hypot;
    675           + std::scoped_lock, std::shared_mutex,
    676             std::atomic<T>::is_always_lock_free;
    677           + std::sample, std::default_searcher, std::boyer_moore_searcher
    678             and std::boyer_moore_horspool_searcher;
    679           + Extraction and re-insertion of map and set nodes, try_emplace
    680             members for maps, and functions for accessing containers
    681             std::size, std::empty, and std::data;
    682           + std::shared_ptr support for arrays,
    683             std::shared_ptr<T>::weak_type,
    684             std::enable_shared_from_this<T>::weak_from_this(), and
    685             std::owner_less<void>;
    686           + std::byte;
    687           + std::as_const, std::not_fn,
    688             std::has_unique_object_representations, constexpr
    689             std::addressof.
    690        Thanks to Daniel Kruegler, Tim Shen, Edward Smith-Rowland, and
    691        Ville Voutilainen for work on the C++17 support.
    692      * A new power-of-two rehashing policy for use with the _Hashtable
    693        internals, thanks to Franc,ois Dumont.
    694 
    695   Fortran
    696 
    697      * Support for a number of extensions for compatibility with legacy
    698        code with new flags:
    699           + -fdec-structure Support for DEC STRUCTURE and UNION
    700           + -fdec-intrinsic-ints Support for new integer intrinsics with
    701             B/I/J/K prefixes such as BABS, JIAND...
    702           + -fdec-math Support for additional math intrinsics, including
    703             COTAN and degree-valued trigonometric functions such as TAND,
    704             ASIND...
    705           + -fdec Enable the -fdec-* family of extensions.
    706      * New flag -finit-derived to allow default initialization of
    707        derived-type variables.
    708      * Improved DO loops with step equal to 1 or -1, generates faster code
    709        without a loop preheader. A new warning, -Wundefined-do-loop, warns
    710        when a loop iterates either to HUGE(i) (with step equal to 1), or
    711        to -HUGE(i) (with step equal to -1). Invalid behavior can be caught
    712        at run time with -fcheck=do enabled:
    713 
    714 program test
    715   implicit none
    716   integer(1) :: i
    717   do i = -HUGE(i)+10, -HUGE(i)-1, -1
    718     print *, i
    719   end do
    720 end program test
    721 
    722 At line 8 of file do_check_12.f90
    723 Fortran runtime error: Loop iterates infinitely
    724 
    725      * Version 4.5 of the [13]OpenMP specification is now partially
    726        supported in the Fortran compiler; the largest missing item is
    727        structure element mapping.
    728      * User-defined derived-type input/output (UDTIO) is added.
    729      * Derived type coarrays with allocatable and pointer components are
    730        partially supported.
    731      * Non-constant stop codes and error stop codes (Fortran 2015
    732        feature).
    733      * Derived types with allocatable components of recursive type.
    734      * Intrinsic assignment to polymorphic variables.
    735      * Improved submodule support.
    736      * Improved diagnostics (polymorphic results in pure functions).
    737      * Coarray: Support for failed images (Fortan 2015 feature).
    738 
    739   Go
    740 
    741      * GCC 7 provides a complete implementation of the Go 1.8.1 user
    742        packages.
    743      * Compared to the Go 1.8.1 toolchain, the garbage collector is more
    744        conservative and less concurrent.
    745      * Escape analysis is available for experimental use via the
    746        -fgo-optimize-allocs option. The -fgo-debug-escape prints
    747        information useful for debugging escape analysis choices.
    748 
    749   Java (GCJ)
    750 
    751    The GCC Java front end and associated libjava runtime library have been
    752    removed from GCC.
    753 
    754 libgccjit
    755 
    756    The libgccjit API gained support for marking calls as requiring
    757    tail-call optimization via a new entry point:
    758    [14]gcc_jit_rvalue_set_bool_require_tail_call.
    759 
    760    libgccjit performs numerous checks at the API boundary, but if these
    761    succeed, it previously ignored errors and other diagnostics emitted
    762    within the core of GCC, and treated the compile of a gcc_jit_context as
    763    having succeeded. As of GCC 7 it now ensures that if any diagnostics
    764    are emitted, they are visible from the libgccjit API, and that the the
    765    context is flagged as having failed.
    766 
    767 New Targets and Target Specific Improvements
    768 
    769   AArch64
    770 
    771      * GCC has been updated to the latest revision of the procedure call
    772        standard (AAPCS64) to provide support for parameter passing when
    773        data types have been over-aligned.
    774      * The ARMv8.3-A architecture is now supported. It can be used by
    775        specifying the -march=armv8.3-a option.
    776      * The option -msign-return-address= is supported to enable return
    777        address protection using ARMv8.3-A Pointer Authentication
    778        Extensions. For more information on the arguments accepted by this
    779        option, please refer to [15]AArch64-Options.
    780      * The ARMv8.2-A architecture and the ARMv8.2-A 16-bit Floating-Point
    781        Extensions are now supported. They can be used by specifying the
    782        -march=armv8.2-a or -march=armv8.2-a+fp16 options. The 16-bit
    783        Floating-Point Extensions introduce new half-precision data
    784        processing floating-point instructions.
    785      * Support has been added for the following processors (GCC
    786        identifiers in parentheses): ARM Cortex-A73 (cortex-a73), Broadcom
    787        Vulcan (vulcan), Cavium ThunderX CN81xx (thunderxt81), Cavium
    788        ThunderX CN83xx (thunderxt83), Cavium ThunderX CN88xx
    789        (thunderxt88), Cavium ThunderX CN88xx pass 1.x (thunderxt88p1),
    790        Cavium ThunderX 2 CN99xx (thunderx2t99), Qualcomm Falkor (falkor).
    791        The GCC identifiers can be used as arguments to the -mcpu or -mtune
    792        options, for example: -mcpu=cortex-a73 or -mtune=vulcan or as
    793        arguments to the equivalent target attributes and pragmas.
    794 
    795   ARC
    796 
    797      * Added support for ARC HS and ARC EM processors.
    798      * Added support for ARC EM variation found in Intel QuarkSE SoCs.
    799      * Added support for NPS400 ARC700 based CPUs.
    800      * Thread Local Storage is now supported by ARC CPUs.
    801      * Fixed errors for ARC600 when using 32x16 multiplier option.
    802      * Fixed PIE for ARC CPUs.
    803      * New CPU templates are supported via multilib.
    804 
    805   ARM
    806 
    807      * Support for the ARMv5 and ARMv5E architectures has been deprecated
    808        (which have no known implementations) and will be removed in a
    809        future GCC release. Note that ARMv5T, ARMv5TE and ARMv5TEJ
    810        architectures remain supported. The values armv5 and armv5e of
    811        -march are thus deprecated.
    812      * The ARMv8.2-A architecture and the ARMv8.2-A 16-bit Floating-Point
    813        Extensions are now supported. They can be used by specifying the
    814        -march=armv8.2-a or -march=armv8.2-a+fp16 options. The 16-bit
    815        Floating-Point Extensions introduce new half-precision data
    816        processing floating-point instructions.
    817      * The ARMv8-M architecture is now supported in its two architecture
    818        profiles: ARMv8-M Baseline and ARMv8-M Mainline with its DSP and
    819        Floating-Point Extensions. They can be used by specifying the
    820        -march=armv8-m.base, armv8-m.main or armv8-m.main+dsp options.
    821      * Support has been added for the following processors (GCC
    822        identifiers in parentheses): ARM Cortex-A73 (cortex-a73), ARM
    823        Cortex-M23 (cortex-m23) and ARM Cortex-M33 (cortex-m33). The GCC
    824        identifiers can be used as arguments to the -mcpu or -mtune
    825        options, for example: -mcpu=cortex-a73 or -mtune=cortex-m33.
    826      * A new command-line option -mpure-code has been added. It does not
    827        allow constant data to be placed in code sections. This option is
    828        only available when generating non-PIC code for ARMv7-M targets.
    829      * Support for the ACLE Coprocessor Intrinsics has been added. This
    830        enables the generation of coprocessor instructions through the use
    831        of intrinsics such as cdp, ldc, and others.
    832      * The configure option --with-multilib-list now accepts the value
    833        rmprofile to build multilib libraries for a range of embedded
    834        targets. See our [16]installation instructions for details.
    835 
    836   AVR
    837 
    838      * On the reduced Tiny cores, the progmem [17]variable attribute is
    839        now properly supported. Respective read-only variables are located
    840        in flash memory in section .progmem.data. No special code is needed
    841        to access such variables; the compiler automatically adds an offset
    842        of 0x4000 to all addresses, which is needed to access variables in
    843        flash memory. As opposed to ordinary cores where it is sufficient
    844        to specify the progmem attribute with definitions, on the reduced
    845        Tiny cores the attribute also has to be specified with (external)
    846        declarations:
    847 
    848 extern const int array[] __attribute__((__progmem__));
    849 
    850 int get_value2 (void)
    851 {
    852   /* Access via addresses array + 0x4004 and array + 0x4005. */
    853   return array[2];
    854 }
    855 
    856 const int* get_address (unsigned idx)
    857 {
    858   /* Returns array + 0x4000 + 2 * idx. */
    859   return &array[idx];
    860 }
    861 
    862      * A new command-line option -Wmisspelled-isr has been added. It turns
    863        off -- or turns into errors -- warnings that are reported for
    864        interrupt service routines (ISRs) which don't follow AVR-LibC's
    865        naming convention of prefixing ISR names with __vector.
    866      * __builtin_avr_nops(n) is a new [18]built-in function that inserts n
    867        NOP instructions into the instruction stream. n must be a value
    868        known at compile time.
    869 
    870   IA-32/x86-64
    871 
    872      * Support for the AVX-512 Fused Multiply Accumulation Packed Single
    873        precision (4FMAPS), AVX-512 Vector Neural Network Instructions Word
    874        variable precision (4VNNIW), AVX-512 Vector Population Count
    875        (VPOPCNTDQ) and Software Guard Extensions (SGX) ISA extensions has
    876        been added.
    877 
    878   NVPTX
    879 
    880      * OpenMP target regions can now be offloaded to NVidia PTX GPGPUs.
    881        See the [19]Offloading Wiki on how to configure it.
    882 
    883   PowerPC / PowerPC64 / RS6000
    884 
    885      * The PowerPC port now uses LRA by default.
    886      * GCC now diagnoses inline assembly that clobbers register r2. This
    887        has always been invalid code, and is no longer quietly tolerated.
    888      * The PowerPC port's support for ISA 3.0 (-mcpu=power9) has been
    889        enhanced to generate more of the new instructions by default, and
    890        to provide more built-in functions to generate code for other new
    891        instructions.
    892      * The configuration option --enable-gnu-indirect-function is now
    893        enabled by default on PowerPC GNU/Linux builds.
    894      * The PowerPC port will now allow 64-bit and 32-bit integer types to
    895        be allocated to the VSX vector registers (ISA 2.06 and above). In
    896        addition, on ISA 3.0, 16-bit and 8-bit integer types can be
    897        allocated in the vector registers. Previously, only 64-bit integer
    898        types were allowed in the traditional floating point registers.
    899      * New options -mstack-protector-guard=global,
    900        -mstack-protector-guard=tls, -mstack-protector-guard-reg=, and
    901        -mstack-protector-guard-offset= change how the stack protector gets
    902        the value to use as canary.
    903 
    904   S/390, System z, IBM z Systems, IBM Z
    905 
    906      * Support for the IBM z14 processor has been added. When using the
    907        -march=z14 option, the compiler will generate code making use of
    908        the new instructions introduced with the vector enhancement
    909        facility and the miscellaneous instruction extension facility 2.
    910        The -mtune=z14 option enables z14 specific instruction scheduling
    911        without making use of new instructions.
    912      * Builtins for the new vector instructions have been added and can be
    913        enabled using the -mzvector option.
    914 
    915   RISC-V
    916 
    917      * Support for the RISC-V instruction set has been added.
    918 
    919   RX
    920 
    921    Basic support for atomic built-in function has been added. It is
    922    currently implemented by flipping interrupts off and on as needed.
    923 
    924   SH
    925 
    926      * Support for SH5/SH64 has been removed.
    927      * Improved utilization of delay slots on SH2A.
    928      * Improved utilization of zero-displacement conditional branches.
    929      * The following deprecated options have been removed
    930           + -mcbranchdi
    931           + -mcmpeqdi
    932           + -minvalid-symbols
    933           + -msoft-atomic
    934           + -mspace
    935           + -madjust-unroll
    936      * Support for the following SH2A instructions has been added
    937           + mov.b @-Rm,R0
    938           + mov.w @-Rm,R0
    939           + mov.l @-Rm,R0
    940           + mov.b R0,@Rn+
    941           + mov.w R0,@Rn+
    942           + mov.l R0,@Rn+
    943 
    944   SPARC
    945 
    946      * The SPARC port now uses LRA by default.
    947      * Support for the new Subtract-Extended-with-Carry instruction
    948        available in SPARC M7 (Niagara 7) has been added.
    949 
    950 Operating Systems
    951 
    952   AIX
    953 
    954      * Visibility support has been enabled for AIX 7.1 and above.
    955 
    956   Fuchsia
    957 
    958      * Support has been added for the [20]Fuchsia OS.
    959 
    960   RTEMS
    961 
    962      * The ABI changes on ARM so that no short enums are used by default.
    963 
    964 Other significant improvements
    965 
    966      * -fverbose-asm previously emitted information on the meanings of
    967        assembly expressions. This has been extended so that it now also
    968        prints comments showing the source lines that correspond to the
    969        assembly, making it easier to read the generated assembly
    970        (especially with larger functions). For example, given this C
    971        source file:
    972 
    973 int test (int n)
    974 {
    975   int i;
    976   int total = 0;
    977 
    978   for (i = 0; i < n; i++)
    979     total += i * i;
    980   return total;
    981 }
    982 
    983        -fverbose-asm now gives output similar to this for the function
    984        body (when compiling for x86_64, with -Os):
    985 
    986        .text
    987        .globl  test
    988        .type   test, @@function
    989 test:
    990 .LFB0:
    991        .cfi_startproc
    992 # example.c:4:   int total = 0;
    993        xorl    %eax, %eax      # <retval>
    994 # example.c:6:   for (i = 0; i < n; i++)
    995        xorl    %edx, %edx      # i
    996 .L2:
    997 # example.c:6:   for (i = 0; i < n; i++)
    998        cmpl    %edi, %edx      # n, i
    999        jge     .L5     #,
   1000 # example.c:7:     total += i * i;
   1001        movl    %edx, %ecx      # i, tmp92
   1002        imull   %edx, %ecx      # i, tmp92
   1003 # example.c:6:   for (i = 0; i < n; i++)
   1004        incl    %edx    # i
   1005 # example.c:7:     total += i * i;
   1006        addl    %ecx, %eax      # tmp92, <retval>
   1007        jmp     .L2     #
   1008 .L5:
   1009 # example.c:10: }
   1010        ret
   1011        .cfi_endproc
   1012 
   1013      * Two new options have been added for printing fix-it hints:
   1014           + -fdiagnostics-parseable-fixits allows for fix-it hints to be
   1015             emitted in a machine-readable form, suitable for consumption
   1016             by IDEs. For example, given:
   1017 
   1018 spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did
   1019 you mean 'color'?
   1020    return ptr->colour;
   1021                ^~~~~~
   1022                color
   1023 
   1024             it will emit:
   1025 
   1026 fix-it:"spellcheck-fields.cc":{52:13-52:19}:"color"
   1027 
   1028           + -fdiagnostics-generate-patch will print a patch in "unified"
   1029             format after any diagnostics are printed, showing the result
   1030             of applying all fix-it hints. For the above example it would
   1031             emit:
   1032 
   1033 --- spellcheck-fields.cc
   1034 +++ spellcheck-fields.cc
   1035 @@ -49,5 +49,5 @@
   1036 
   1037  color get_color(struct s *ptr)
   1038  {
   1039 -  return ptr->colour;
   1040 +  return ptr->color;
   1041  }
   1042 
   1043      * The gcc and g++ driver programs will now provide suggestions for
   1044        misspelled arguments to command-line options.
   1045 
   1046 $ gcc -c test.c -ftls-model=global-dinamic
   1047 gcc: error: unknown TLS model 'global-dinamic'
   1048 gcc: note: valid arguments to '-ftls-model=' are: global-dynamic initial-exec lo
   1049 cal-dynamic local-exec; did you mean 'global-dynamic'?
   1050 
   1051      * The compiler will now provide suggestions for misspelled
   1052        parameters.
   1053 
   1054 $ gcc -c test.c --param max-early-inliner-iteration=3
   1055 cc1: error: invalid --param name 'max-early-inliner-iteration'; did you mean 'ma
   1056 x-early-inliner-iterations'?
   1057 
   1058      * Profile-guided optimization (PGO) instrumentation, as well as test
   1059        coverage (GCOV), can newly instrument constructors (functions marks
   1060        with __attribute__((constructor))), destructors and C++
   1061        constructors (and destructors) of classes that are used as the type
   1062        of a global variable.
   1063      * A new option -fprofile-update=atomic prevents creation of corrupted
   1064        profiles created during an instrumentation run (-fprofile=generate)
   1065        of an application. The downside of the option is a speed penalty.
   1066        Providing -pthread on the command line selects atomic profile
   1067        updating (when supported by the target).
   1068      * GCC's already extensive testsuite has gained some new capabilities,
   1069        to further improve the reliability of the compiler:
   1070           + GCC now has an internal unit-testing API and a suite of tests
   1071             for programmatic self-testing of subsystems.
   1072           + GCC's C front end has been extended so that it can parse dumps
   1073             of GCC's internal representations, allowing for DejaGnu tests
   1074             that more directly exercise specific optimization passes. This
   1075             covers both the [21]GIMPLE representation (for testing
   1076             higher-level optimizations) and the [22]RTL representation,
   1077             allowing for more direct testing of lower-level details, such
   1078             as register allocation and instruction selection.
   1079 
   1080 GCC 7.1
   1081 
   1082    This is the [23]list of problem reports (PRs) from GCC's bug tracking
   1083    system that are known to be fixed in the 7.1 release. This list might
   1084    not be complete (that is, it is possible that some PRs that have been
   1085    fixed are not listed here).
   1086 
   1087 GCC 7.2
   1088 
   1089    This is the [24]list of problem reports (PRs) from GCC's bug tracking
   1090    system that are known to be fixed in the 7.2 release. This list might
   1091    not be complete (that is, it is possible that some PRs that have been
   1092    fixed are not listed here).
   1093 
   1094   Target Specific Changes
   1095 
   1096     SPARC
   1097 
   1098      * Support for the SPARC M8 processor has been added.
   1099      * The switches -mfix-ut700 and -mfix-gr712rc have been added to work
   1100        around an erratum in LEON3FT processors.
   1101      * Use of the Floating-point Multiply Single to Double (FsMULd)
   1102        instruction can now be controlled by the -mfsmuld and -fno-fsmuld
   1103        options.
   1104 
   1105   Operating Systems
   1106 
   1107     RTEMS
   1108 
   1109      * The Ada run-time support uses now thread-local storage (TLS).
   1110      * Support for RISC-V has been added.
   1111      * Support for 64-bit PowerPC using the ELFv2 ABI with 64-bit long
   1112        double has been added.
   1113 
   1114 GCC 7.3
   1115 
   1116    This is the [25]list of problem reports (PRs) from GCC's bug tracking
   1117    system that are known to be fixed in the 7.3 release. This list might
   1118    not be complete (that is, it is possible that some PRs that have been
   1119    fixed are not listed here).
   1120 
   1121   Target Specific Changes
   1122 
   1123     SPARC
   1124 
   1125      * Workarounds for the four [26]LEON3FT errata GRLIB-TN-0010..0013
   1126        have been added. Relevant errata are activated by the target
   1127        specific -mfix-ut699, -mfix-ut700 and -mfix-gr712rc switches.
   1128 
   1129   Operating Systems
   1130 
   1131     RTEMS
   1132 
   1133      * Support has been added for Epiphany target.
   1134 
   1135 GCC 7.4
   1136 
   1137    This is the [27]list of problem reports (PRs) from GCC's bug tracking
   1138    system that are known to be fixed in the 7.4 release. This list might
   1139    not be complete (that is, it is possible that some PRs that have been
   1140    fixed are not listed here).
   1141 
   1142 
   1143     For questions related to the use of GCC, please consult these web
   1144     pages and the [28]GCC manuals. If that fails, the
   1145     [29]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   1146     web pages and the development of GCC are welcome on our developer
   1147     list at [30]gcc (a] gcc.gnu.org. All of [31]our lists have public
   1148     archives.
   1149 
   1150    Copyright (C) [32]Free Software Foundation, Inc. Verbatim copying and
   1151    distribution of this entire article is permitted in any medium,
   1152    provided this notice is preserved.
   1153 
   1154    These pages are [33]maintained by the GCC team. Last modified
   1155    2018-12-06[34].
   1156 
   1157 References
   1158 
   1159    1. http://gcc.gnu.org/gcc-7/porting_to.html
   1160    2. http://gcc.gnu.org/onlinedocs/index.html#current
   1161    3. https://gcc.gnu.org/wiki/LRAIsDefault
   1162    4. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/libstdc++/manual/manual/profile_mode.html
   1163    5. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77728
   1164    6. http://www.dwarfstd.org/Download.php
   1165    7. https://gcc.gnu.org/wiki/OpenACC
   1166    8. https://gcc.gnu.org/wiki/Offloading
   1167    9. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Object-Size-Checking.html
   1168   10. https://gcc.gnu.org/projects/cxx-status.html#cxx1z
   1169   11. http://wg21.link/p0136
   1170   12. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/libstdc++/manual/using_dual_abi.html
   1171   13. https://www.openmp.org/specifications/
   1172   14. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/jit/topics/expressions.html#gcc_jit_rvalue_set_bool_require_tail_call
   1173   15. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/AArch64-Options.html#AArch64-Options
   1174   16. https://gcc.gnu.org/install/configure.html
   1175   17. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/AVR-Variable-Attributes.html
   1176   18. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/AVR-Built-in-Functions.html
   1177   19. https://gcc.gnu.org/wiki/Offloading
   1178   20. https://fuchsia.googlesource.com/
   1179   21. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gccint/GIMPLE-Tests.html
   1180   22. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gccint/RTL-Tests.html
   1181   23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.0
   1182   24. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.2
   1183   25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.3
   1184   26. https://www.gaisler.com/index.php/information/app-tech-notes
   1185   27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.4
   1186   28. https://gcc.gnu.org/onlinedocs/
   1187   29. mailto:gcc-help (a] gcc.gnu.org
   1188   30. mailto:gcc (a] gcc.gnu.org
   1189   31. https://gcc.gnu.org/lists.html
   1190   32. https://www.fsf.org/
   1191   33. https://gcc.gnu.org/about.html
   1192   34. http://validator.w3.org/check/referer
   1193 ======================================================================
   1194 http://gcc.gnu.org/gcc-6/index.html
   1195 
   1196                               GCC 6 Release Series
   1197 
   1198    October 26, 2018
   1199 
   1200    The [1]GNU project and the GCC developers are pleased to announce the
   1201    release of GCC 6.5.
   1202 
   1203    This release is a bug-fix release, containing fixes for regressions in
   1204    GCC 6.4 relative to previous releases of GCC.
   1205 
   1206 Release History
   1207 
   1208    GCC 6.5
   1209           October 26, 2018 ([2]changes, [3]documentation)
   1210 
   1211    GCC 6.4
   1212           July 4, 2017 ([4]changes, [5]documentation)
   1213 
   1214    GCC 6.3
   1215           December 21, 2016 ([6]changes, [7]documentation)
   1216 
   1217    GCC 6.2
   1218           August 22, 2016 ([8]changes, [9]documentation)
   1219 
   1220    GCC 6.1
   1221           April 27, 2016 ([10]changes, [11]documentation)
   1222 
   1223 References and Acknowledgements
   1224 
   1225    GCC used to stand for the GNU C Compiler, but since the compiler
   1226    supports several other languages aside from C, it now stands for the
   1227    GNU Compiler Collection.
   1228 
   1229    A list of [12]successful builds is updated as new information becomes
   1230    available.
   1231 
   1232    The GCC developers would like to thank the numerous people that have
   1233    contributed new features, improvements, bug fixes, and other changes as
   1234    well as test results to GCC. This [13]amazing group of volunteers is
   1235    what makes GCC successful.
   1236 
   1237    For additional information about GCC please refer to the [14]GCC
   1238    project web site or contact the [15]GCC development mailing list.
   1239 
   1240    To obtain GCC please use [16]our mirror sites or [17]our SVN server.
   1241 
   1242 
   1243     For questions related to the use of GCC, please consult these web
   1244     pages and the [18]GCC manuals. If that fails, the
   1245     [19]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   1246     web pages and the development of GCC are welcome on our developer
   1247     list at [20]gcc (a] gcc.gnu.org. All of [21]our lists have public
   1248     archives.
   1249 
   1250    Copyright (C) [22]Free Software Foundation, Inc. Verbatim copying and
   1251    distribution of this entire article is permitted in any medium,
   1252    provided this notice is preserved.
   1253 
   1254    These pages are [23]maintained by the GCC team. Last modified
   1255    2018-10-26[24].
   1256 
   1257 References
   1258 
   1259    1. http://www.gnu.org/
   1260    2. http://gcc.gnu.org/gcc-6/changes.html
   1261    3. http://gcc.gnu.org/onlinedocs/6.5.0/
   1262    4. http://gcc.gnu.org/gcc-6/changes.html
   1263    5. http://gcc.gnu.org/onlinedocs/6.4.0/
   1264    6. http://gcc.gnu.org/gcc-6/changes.html
   1265    7. http://gcc.gnu.org/onlinedocs/6.3.0/
   1266    8. http://gcc.gnu.org/gcc-6/changes.html
   1267    9. http://gcc.gnu.org/onlinedocs/6.2.0/
   1268   10. http://gcc.gnu.org/gcc-6/changes.html
   1269   11. http://gcc.gnu.org/onlinedocs/6.1.0/
   1270   12. http://gcc.gnu.org/gcc-6/buildstat.html
   1271   13. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   1272   14. http://gcc.gnu.org/index.html
   1273   15. mailto:gcc (a] gcc.gnu.org
   1274   16. http://gcc.gnu.org/mirrors.html
   1275   17. http://gcc.gnu.org/svn.html
   1276   18. https://gcc.gnu.org/onlinedocs/
   1277   19. mailto:gcc-help (a] gcc.gnu.org
   1278   20. mailto:gcc (a] gcc.gnu.org
   1279   21. https://gcc.gnu.org/lists.html
   1280   22. https://www.fsf.org/
   1281   23. https://gcc.gnu.org/about.html
   1282   24. http://validator.w3.org/check/referer
   1283 ======================================================================
   1284 http://gcc.gnu.org/gcc-6/changes.html
   1285 
   1286                               GCC 6 Release Series
   1287                         Changes, New Features, and Fixes
   1288 
   1289    This page is a brief summary of some of the huge number of improvements
   1290    in GCC 6. For more information, see the [1]Porting to GCC 6 page and
   1291    the [2]full GCC documentation.
   1292 
   1293 Caveats
   1294 
   1295      * The default mode for C++ is now -std=gnu++14 instead of
   1296        -std=gnu++98.
   1297      * Support for a number of older systems and recently unmaintained or
   1298        untested target ports of GCC has been declared obsolete in GCC 6.
   1299        Unless there is activity to revive them, the next release of GCC
   1300        will have their sources permanently removed.
   1301        The following ports for individual systems on particular
   1302        architectures have been obsoleted:
   1303           + SH5 / SH64 (sh64-*-*) as announced [3]here.
   1304      * The AVR port requires binutils version 2.26.1 or later for the fix
   1305        for [4]PR71151 to work.
   1306      * The GCC 6.5 release has an accidental ABI incompatibility for
   1307        nested std::pair objects, for more details see [5]PR 87822. The bug
   1308        causes a layout change for pairs where the first member is also a
   1309        pair, e.g. std::pair<std::pair<X, Y>, Z>. The GCC 6 release series
   1310        is closed so the bug in GCC 6.5 will not be fixed upstream, but
   1311        there is a patch in the bug report to allow it to be fixed by
   1312        anybody packaging GCC 6.5 or installing it themselves.
   1313 
   1314 General Optimizer Improvements
   1315 
   1316      * UndefinedBehaviorSanitizer gained a new sanitization option,
   1317        -fsanitize=bounds-strict, which enables strict checking of array
   1318        bounds. In particular, it enables -fsanitize=bounds as well as
   1319        instrumentation of flexible array member-like arrays.
   1320      * Type-based alias analysis now disambiguates accesses to different
   1321        pointers. This improves precision of the alias oracle by about
   1322        20-30% on higher-level C++ programs. Programs doing invalid type
   1323        punning of pointer types may now need -fno-strict-aliasing to work
   1324        correctly.
   1325      * Alias analysis now correctly supports the weakref and alias
   1326        attributes. This allows accessing both a variable and its alias in
   1327        one translation unit which is common with link-time optimization.
   1328      * Value range propagation now assumes that the this pointer in C++
   1329        member functions is non-null. This eliminates common null pointer
   1330        checks but also breaks some non-conforming code-bases (such as
   1331        Qt-5, Chromium, KDevelop). As a temporary work-around
   1332        -fno-delete-null-pointer-checks can be used. Wrong code can be
   1333        identified by using -fsanitize=undefined.
   1334      * Link-time optimization improvements:
   1335           + warning and error attributes are now correctly preserved by
   1336             declaration linking and thus -D_FORTIFY_SOURCE=2 is now
   1337             supported with -flto.
   1338           + Type merging was fixed to handle C and Fortran
   1339             interoperability rules as defined by the Fortran 2008 language
   1340             standard.
   1341             As an exception, CHARACTER(KIND=C_CHAR) is not inter-operable
   1342             with char in all cases because it is an array while char is
   1343             scalar. INTEGER(KIND=C_SIGNED_CHAR) should be used instead. In
   1344             general, this inter-operability cannot be implemented, for
   1345             example on targets where the argument passing convention for
   1346             arrays differs from scalars.
   1347           + More type information is now preserved at link time, reducing
   1348             the loss of accuracy of the type-based alias analysis compared
   1349             to builds without link-time optimization.
   1350           + Invalid type punning on global variables and declarations is
   1351             now reported with -Wodr-type-mismatch.
   1352           + The size of LTO object files was reduced by about 11%
   1353             (measured by compiling Firefox 46.0).
   1354           + Link-time parallelization (enabled using -flto=n) was
   1355             significantly improved by decreasing the size of streamed data
   1356             when partitioning programs. The size of streamed IL while
   1357             compiling Firefox 46.0 was reduced by 66%.
   1358           + The linker plugin was extended to pass information about the
   1359             type of binary produced to the GCC back end. (That can also be
   1360             controlled manually by -flinker-output.) This makes it
   1361             possible to properly configure the code generator and support
   1362             incremental linking. Incremental linking of LTO objects by gcc
   1363             -r is now supported for plugin-enabled setups.
   1364             There are two ways to perform incremental linking:
   1365               1. Linking by ld -r will result in an object file with all
   1366                  sections from individual object files mechanically
   1367                  merged. This delays the actual link-time optimization to
   1368                  the final linking step and thus permits whole program
   1369                  optimization. Linking the final binary with such object
   1370                  files is however slower.
   1371               2. Linking by gcc -r will lead to link-time optimization and
   1372                  emit the final binary into the object file. Linking such
   1373                  an object file is fast but avoids any benefits from whole
   1374                  program optimization.
   1375             GCC 7 will support incremental link-time optimization with gcc
   1376             -r.
   1377      * Inter-procedural optimization improvements:
   1378           + Basic jump threading is now performed before profile
   1379             construction and inline analysis, resulting in more realistic
   1380             size and time estimates that drive the heuristics of the
   1381             inliner and function cloning passes.
   1382           + Function cloning now more aggressively eliminates unused
   1383             function parameters.
   1384 
   1385 New Languages and Language specific improvements
   1386 
   1387    Compared to GCC 5, the GCC 6 release series includes a much improved
   1388    implementation of the [6]OpenACC 2.0a specification. Highlights are:
   1389      * In addition to single-threaded host-fallback execution, offloading
   1390        is supported for nvptx (Nvidia GPUs) on x86_64 and PowerPC 64-bit
   1391        little-endian GNU/Linux host systems. For nvptx offloading, with
   1392        the OpenACC parallel construct, the execution model allows for an
   1393        arbitrary number of gangs, up to 32 workers, and 32 vectors.
   1394      * Initial support for parallelized execution of OpenACC kernels
   1395        constructs:
   1396           + Parallelization of a kernels region is switched on by
   1397             -fopenacc combined with -O2 or higher.
   1398           + Code is offloaded onto multiple gangs, but executes with just
   1399             one worker, and a vector length of 1.
   1400           + Directives inside a kernels region are not supported.
   1401           + Loops with reductions can be parallelized.
   1402           + Only kernels regions with one loop nest are parallelized.
   1403           + Only the outer-most loop of a loop nest can be parallelized.
   1404           + Loop nests containing sibling loops are not parallelized.
   1405        Typically, using the OpenACC parallel construct gives much better
   1406        performance, compared to the initial support of the OpenACC kernels
   1407        construct.
   1408      * The device_type clause is not supported. The bind and nohost
   1409        clauses are not supported. The host_data directive is not supported
   1410        in Fortran.
   1411      * Nested parallelism (cf. CUDA dynamic parallelism) is not supported.
   1412      * Usage of OpenACC constructs inside multithreaded contexts (such as
   1413        created by OpenMP, or pthread programming) is not supported.
   1414      * If a call to the acc_on_device function has a compile-time constant
   1415        argument, the function call evaluates to a compile-time constant
   1416        value only for C and C++ but not for Fortran.
   1417 
   1418    See the [7]OpenACC and [8]Offloading wiki pages for further
   1419    information.
   1420 
   1421   C family
   1422 
   1423      * Version 4.5 of the [9]OpenMP specification is now supported in the
   1424        C and C++ compilers.
   1425      * The C and C++ compilers now support attributes on enumerators. For
   1426        instance, it is now possible to mark enumerators as deprecated:
   1427 
   1428 enum {
   1429   newval,
   1430   oldval __attribute__ ((deprecated ("too old")))
   1431 };
   1432 
   1433      * Source locations for the C and C++ compilers are now tracked as
   1434        ranges, rather than just points, making it easier to identify the
   1435        subexpression of interest within a complicated expression. For
   1436        example:
   1437 
   1438 test.cc: In function 'int test(int, int, foo, int, int)':
   1439 test.cc:5:16: error: no match for 'operator*' (operand types are 'int' and 'foo'
   1440 )
   1441    return p + q * r * s + t;
   1442               ~~^~~
   1443 
   1444        In addition, there is now initial support for precise diagnostic
   1445        locations within strings:
   1446 
   1447 format-strings.c:3:14: warning: field width specifier '*' expects a matching 'in
   1448 t' argument [-Wformat=]
   1449    printf("%*d");
   1450             ^
   1451 
   1452      * Diagnostics can now contain "fix-it hints", which are displayed in
   1453        context underneath the relevant source code. For example:
   1454 
   1455 fixits.c: In function 'bad_deref':
   1456 fixits.c:11:13: error: 'ptr' is a pointer; did you mean to use '->'?
   1457    return ptr.x;
   1458              ^
   1459              ->
   1460 
   1461      * The C and C++ compilers now offer suggestions for misspelled field
   1462        names:
   1463 
   1464 spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did
   1465 you mean 'color'?
   1466    return ptr->colour;
   1467                ^~~~~~
   1468 
   1469      * New command-line options have been added for the C and C++
   1470        compilers:
   1471           + -Wshift-negative-value warns about left shifting a negative
   1472             value.
   1473           + -Wshift-overflow warns about left shift overflows. This
   1474             warning is enabled by default. -Wshift-overflow=2 also warns
   1475             about left-shifting 1 into the sign bit.
   1476           + -Wtautological-compare warns if a self-comparison always
   1477             evaluates to true or false. This warning is enabled by -Wall.
   1478           + -Wnull-dereference warns if the compiler detects paths that
   1479             trigger erroneous or undefined behavior due to dereferencing a
   1480             null pointer. This option is only active when
   1481             -fdelete-null-pointer-checks is active, which is enabled by
   1482             optimizations in most targets. The precision of the warnings
   1483             depends on the optimization options used.
   1484           + -Wduplicated-cond warns about duplicated conditions in an
   1485             if-else-if chain.
   1486           + -Wmisleading-indentation warns about places where the
   1487             indentation of the code gives a misleading idea of the block
   1488             structure of the code to a human reader. For example, given
   1489             [10]CVE-2014-1266:
   1490 
   1491 sslKeyExchange.c: In function 'SSLVerifySignedServerKeyExchange':
   1492 sslKeyExchange.c:629:3: warning: this 'if' clause does not guard... [-Wmisleadin
   1493 g-indentation]
   1494     if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
   1495     ^~
   1496 sslKeyExchange.c:631:5: note: ...this statement, but the latter is misleadingly
   1497 indented as if it is guarded by the 'if'
   1498         goto fail;
   1499         ^~~~
   1500 
   1501             This warning is enabled by -Wall.
   1502      * The C and C++ compilers now emit saner error messages if
   1503        merge-conflict markers are present in a source file.
   1504 
   1505 test.c:3:1: error: version control conflict marker in file
   1506  <<<<<<< HEAD
   1507  ^~~~~~~
   1508 
   1509   C
   1510 
   1511      * It is possible to disable warnings when an initialized field of a
   1512        structure or a union with side effects is being overridden when
   1513        using designated initializers via a new warning option
   1514        -Woverride-init-side-effects.
   1515      * A new type attribute scalar_storage_order applying to structures
   1516        and unions has been introduced. It specifies the storage order (aka
   1517        endianness) in memory of scalar fields in structures or unions.
   1518 
   1519   C++
   1520 
   1521      * The default mode has been changed to -std=gnu++14.
   1522      * [11]C++ Concepts are now supported when compiling with -fconcepts.
   1523      * -flifetime-dse is more aggressive in dead-store elimination in
   1524        situations where a memory store to a location precedes a
   1525        constructor to that memory location.
   1526      * G++ now supports [12]C++17 fold expressions, u8 character literals,
   1527        extended static_assert, and nested namespace definitions.
   1528      * G++ now allows constant evaluation for all non-type template
   1529        arguments.
   1530      * G++ now supports C++ Transactional Memory when compiling with
   1531        -fgnu-tm.
   1532 
   1533     Runtime Library (libstdc++)
   1534 
   1535      * Extensions to the C++ Library to support mathematical special
   1536        functions (ISO/IEC 29124:2010), thanks to Edward Smith-Rowland.
   1537      * Experimental support for C++17, including the following new
   1538        features:
   1539           + std::uncaught_exceptions function (this is also available for
   1540             -std=gnu++NN modes);
   1541           + new member functions try_emplace and insert_or_assign for
   1542             unique_key maps;
   1543           + non-member functions std::size, std::empty, and std::data for
   1544             accessing containers and arrays;
   1545           + std::invoke;
   1546           + std::shared_mutex;
   1547           + std::void_t and std::bool_constant metaprogramming utilities.
   1548        Thanks to Ville Voutilainen for contributing many of the C++17
   1549        features.
   1550      * An experimental implementation of the File System TS.
   1551      * Experimental support for most features of the second version of the
   1552        Library Fundamentals TS. This includes polymorphic memory resources
   1553        and array support in shared_ptr, thanks to Fan You.
   1554      * Some assertions checked by Debug Mode can now also be enabled by
   1555        _GLIBCXX_ASSERTIONS. The subset of checks enabled by the new macro
   1556        have less run-time overhead than the full _GLIBCXX_DEBUG checks and
   1557        don't affect the library ABI, so can be enabled per-translation
   1558        unit.
   1559      * Timed mutex types are supported on more targets, including Darwin.
   1560      * Improved std::locale support for DragonFly and FreeBSD, thanks to
   1561        John Marino and Andreas Tobler.
   1562 
   1563   Fortran
   1564 
   1565      * Fortran 2008 SUBMODULE support.
   1566      * Fortran 2015 EVENT_TYPE, EVENT_POST, EVENT_WAIT, and EVENT_QUERY
   1567        support.
   1568      * Improved support for Fortran 2003 deferred-length character
   1569        variables.
   1570      * Improved support for OpenMP and OpenACC.
   1571      * The MATMUL intrinsic is now inlined for straightforward cases if
   1572        front-end optimization is active. The maximum size for inlining can
   1573        be set to n with the -finline-matmul-limit=n option and turned off
   1574        with -finline-matmul-limit=0.
   1575      * The -Wconversion-extra option will warn about REAL constants which
   1576        have excess precision for their kind.
   1577      * The -Winteger-division option has been added, which warns about
   1578        divisions of integer constants which are truncated. This option is
   1579        included in -Wall by default.
   1580 
   1581 libgccjit
   1582 
   1583      * The driver code is now run in-process within libgccjit, providing a
   1584        small speed-up of the compilation process.
   1585      * The API has gained entrypoints for
   1586           + [13]timing how long was spent in different parts of code,
   1587           + [14]creating switch statements,
   1588           + [15]allowing unreachable basic blocks in a function, and
   1589           + [16]adding arbitrary command-line options to a compilation.
   1590 
   1591 New Targets and Target Specific Improvements
   1592 
   1593   AArch64
   1594 
   1595      * A number of AArch64-specific options have been added. The most
   1596        important ones are summarised in this section; for more detailed
   1597        information please refer to the documentation.
   1598      * The command-line options -march=native, -mcpu=native and
   1599        -mtune=native are now available on native AArch64 GNU/Linux
   1600        systems. Specifying these options causes GCC to auto-detect the
   1601        host CPU and choose the optimal setting for that system.
   1602      * -fpic is now supported when generating code for the small code
   1603        model (-mcmodel=small). The size of the global offset table (GOT)
   1604        is limited to 28KiB under the LP64 SysV ABI, and 15KiB under the
   1605        ILP32 SysV ABI.
   1606      * The AArch64 port now supports target attributes and pragmas. Please
   1607        refer to the [17]documentation for details of available attributes
   1608        and pragmas as well as usage instructions.
   1609      * Link-time optimization across translation units with different
   1610        target-specific options is now supported.
   1611      * The option -mtls-size= is now supported. It can be used to specify
   1612        the bit size of TLS offsets, allowing GCC to generate better TLS
   1613        instruction sequences.
   1614      * The option -fno-plt is now fully functional.
   1615      * The ARMv8.1-A architecture and the Large System Extensions are now
   1616        supported. They can be used by specifying the -march=armv8.1-a
   1617        option. Additionally, the +lse option extension can be used in a
   1618        similar fashion to other option extensions. The Large System
   1619        Extensions introduce new instructions that are used in the
   1620        implementation of atomic operations.
   1621      * The ACLE half-precision floating-point type __fp16 is now supported
   1622        in the C and C++ languages.
   1623      * The ARM Cortex-A35 processor is now supported via the
   1624        -mcpu=cortex-a35 and -mtune=cortex-a35 options as well as the
   1625        equivalent target attributes and pragmas.
   1626      * The Qualcomm QDF24xx processor is now supported via the
   1627        -mcpu=qdf24xx and -mtune=qdf24xx options as well as the equivalent
   1628        target attributes and pragmas.
   1629      * Code generation for the ARM Cortex-A57 processor is improved. Among
   1630        general code generation improvements, a better algorithm is added
   1631        for allocating registers to floating-point multiply-accumulate
   1632        instructions offering increased performance when compiling with
   1633        -mcpu=cortex-a57 or -mtune=cortex-a57.
   1634      * Code generation for the ARM Cortex-A53 processor is improved. A
   1635        more accurate instruction scheduling model for the processor is now
   1636        used, and a number of compiler tuning parameters have been set to
   1637        offer increased performance when compiling with -mcpu=cortex-a53 or
   1638        -mtune=cortex-a53.
   1639      * Code generation for the Samsung Exynos M1 processor is improved. A
   1640        more accurate instruction scheduling model for the processor is now
   1641        used, and a number of compiler tuning parameters have been set to
   1642        offer increased performance when compiling with -mcpu=exynos-m1 or
   1643        -mtune=exynos-m1.
   1644      * Improvements in the generation of conditional branches and literal
   1645        pools allow the compiler to compile functions of a large size.
   1646        Constant pools are now placed into separate rodata sections. The
   1647        new option -mpc-relative-literal-loads generates per-function
   1648        literal pools, limiting the maximum size of functions to 1MiB.
   1649      * Several correctness issues generating Advanced SIMD instructions
   1650        for big-endian targets have been fixed resulting in improved code
   1651        generation for ACLE intrinsics with -mbig-endian.
   1652 
   1653   ARM
   1654 
   1655      * Support for revisions of the ARM architecture prior to ARMv4t has
   1656        been deprecated and will be removed in a future GCC release. The
   1657        -mcpu and -mtune values that are deprecated are: arm2, arm250,
   1658        arm3, arm6, arm60, arm600, arm610, arm620, arm7, arm7d, arm7di,
   1659        arm70, arm700, arm700i, arm710, arm720, arm710c, arm7100, arm7500,
   1660        arm7500fe, arm7m, arm7dm, arm7dmi, arm8, arm810, strongarm,
   1661        strongarm110, strongarm1100, strongarm1110, fa526, fa626. The value
   1662        arm7tdmi is still supported. The values of -march that are
   1663        deprecated are: armv2,armv2a,armv3,armv3m,armv4.
   1664      * The ARM port now supports target attributes and pragmas. Please
   1665        refer to the [18]documentation for details of available attributes
   1666        and pragmas as well as usage instructions.
   1667      * Support has been added for the following processors (GCC
   1668        identifiers in parentheses): ARM Cortex-A32 (cortex-a32), ARM
   1669        Cortex-A35 (cortex-a35) and ARM Cortex-R8 (cortex-r8). The GCC
   1670        identifiers can be used as arguments to the -mcpu or -mtune
   1671        options, for example: -mcpu=cortex-a32 or -mtune=cortex-a35.
   1672 
   1673   Heterogeneous Systems Architecture
   1674 
   1675      * GCC can now generate HSAIL (Heterogeneous System Architecture
   1676        Intermediate Language) for simple OpenMP device constructs if
   1677        configured with --enable-offload-targets=hsa. A new libgomp plugin
   1678        then runs the HSA GPU kernels implementing these constructs on HSA
   1679        capable GPUs via a standard HSA run time.
   1680        If the HSA compilation back end determines it cannot output HSAIL
   1681        for a particular input, it gives a warning by default. These
   1682        warnings can be suppressed with -Wno-hsa. To give a few examples,
   1683        the HSA back end does not implement compilation of code using
   1684        function pointers, automatic allocation of variable sized arrays,
   1685        functions with variadic arguments as well as a number of other less
   1686        common programming constructs.
   1687        When compilation for HSA is enabled, the compiler attempts to
   1688        compile composite OpenMP constructs
   1689 
   1690 #pragma omp target teams distribute parallel for
   1691 
   1692        into parallel HSA GPU kernels.
   1693 
   1694   IA-32/x86-64
   1695 
   1696      * GCC now supports the Intel CPU named Skylake with AVX-512
   1697        extensions through -march=skylake-avx512. The switch enables the
   1698        following ISA extensions: AVX-512F, AVX512VL, AVX-512CD, AVX-512BW,
   1699        AVX-512DQ.
   1700      * Support for new AMD instructions monitorx and mwaitx has been
   1701        added. This includes new intrinsic and built-in support. It is
   1702        enabled through option -mmwaitx. The instructions monitorx and
   1703        mwaitx implement the same functionality as the old monitor and
   1704        mwait instructions. In addition mwaitx adds a configurable timer.
   1705        The timer value is received as third argument and stored in
   1706        register %ebx.
   1707      * x86-64 targets now allow stack realignment from a word-aligned
   1708        stack pointer using the command-line option -mstackrealign or
   1709        __attribute__ ((force_align_arg_pointer)). This allows functions
   1710        compiled with a vector-aligned stack to be invoked from objects
   1711        that keep only word-alignment.
   1712      * Support for address spaces __seg_fs, __seg_gs, and __seg_tls. These
   1713        can be used to access data via the %fs and %gs segments without
   1714        having to resort to inline assembly. Please refer to the
   1715        [19]documentation for usage instructions.
   1716      * Support for AMD Zen (family 17h) processors is now available
   1717        through the -march=znver1 and -mtune=znver1 options.
   1718 
   1719   MeP
   1720 
   1721      * Support for the MeP (mep-elf) architecture has been deprecated and
   1722        will be removed in a future GCC release.
   1723 
   1724   MSP430
   1725 
   1726      * The MSP430 compiler now has the ability to automatically distribute
   1727        code and data between low memory (addresses below 64K) and high
   1728        memory. This only applies to parts that actually have both memory
   1729        regions and only if the linker script for the part has been
   1730        specifically set up to support this feature.
   1731        A new attribute of either can be applied to both functions and
   1732        data, and this tells the compiler to place the object into low
   1733        memory if there is room and into high memory otherwise. Two other
   1734        new attributes - lower and upper - can be used to explicitly state
   1735        that an object should be placed in the specified memory region. If
   1736        there is not enough left in that region the compilation will fail.
   1737        Two new command-line options - -mcode-region=[lower|upper|either]
   1738        and -mdata-region=[lower|upper|either] - can be used to tell the
   1739        compiler what to do with objects that do not have one of these new
   1740        attributes.
   1741 
   1742   PowerPC / PowerPC64 / RS6000
   1743 
   1744      * PowerPC64 now supports IEEE 128-bit floating-point using the
   1745        __float128 data type. In GCC 6, this is not enabled by default, but
   1746        you can enable it with -mfloat128. The IEEE 128-bit floating-point
   1747        support requires the use of the VSX instruction set. IEEE 128-bit
   1748        floating-point values are passed and returned as a single vector
   1749        value. The software emulator for IEEE 128-bit floating-point
   1750        support is only built on PowerPC GNU/Linux systems where the
   1751        default CPU is at least power7. On future ISA 3.0 systems (POWER 9
   1752        and later), you will be able to use the -mfloat128-hardware option
   1753        to use the ISA 3.0 instructions that support IEEE 128-bit
   1754        floating-point. An additional type (__ibm128) has been added to
   1755        refer to the IBM extended double type that normally implements long
   1756        double. This will allow for a future transition to implementing
   1757        long double with IEEE 128-bit floating-point.
   1758      * Basic support has been added for POWER9 hardware that will use the
   1759        recently published OpenPOWER ISA 3.0 instructions. The following
   1760        new switches are available:
   1761           + -mcpu=power9: Implement all of the ISA 3.0 instructions
   1762             supported by the compiler.
   1763           + -mtune=power9: In the future, apply tuning for POWER9 systems.
   1764             Currently, POWER8 tunings are used.
   1765           + -mmodulo: Generate code using the ISA 3.0 integer instructions
   1766             (modulus, count trailing zeros, array index support, integer
   1767             multiply/add).
   1768           + -mpower9-fusion: Generate code to suitably fuse instruction
   1769             sequences for a POWER9 system.
   1770           + -mpower9-dform: Generate code to use the new D-form
   1771             (register+offset) memory instructions for the vector
   1772             registers.
   1773           + -mpower9-vector: Generate code using the new ISA 3.0 vector
   1774             (VSX or Altivec) instructions.
   1775           + -mpower9-minmax: Reserved for future development.
   1776           + -mtoc-fusion: Keep TOC entries together to provide more fusion
   1777             opportunities.
   1778      * New constraints have been added to support IEEE 128-bit
   1779        floating-point and ISA 3.0 instructions:
   1780           + wb: Altivec register if -mpower9-dform is enabled.
   1781           + we: VSX register if -mpower9-vector is enabled for 64-bit code
   1782             generation.
   1783           + wo: VSX register if -mpower9-vector is enabled.
   1784           + wp: Reserved for future use if long double is implemented with
   1785             IEEE 128-bit floating-point instead of IBM extended double.
   1786           + wq: VSX register if -mfloat128 is enabled.
   1787           + wF: Memory operand suitable for POWER9 fusion load/store.
   1788           + wG: Memory operand suitable for TOC fusion memory references.
   1789           + wL: Integer constant identifying the element number mfvsrld
   1790             accesses within a vector.
   1791      * Support has been added for __builtin_cpu_is() and
   1792        __builtin_cpu_supports(), allowing for very fast access to
   1793        AT_PLATFORM, AT_HWCAP, and AT_HWCAP2 values. This requires use of
   1794        glibc 2.23 or later.
   1795      * All hardware transactional memory builtins now correctly behave as
   1796        memory barriers. Programmers can use #ifdef __TM_FENCE__ to
   1797        determine whether their "old" compiler treats the builtins as
   1798        barriers.
   1799      * Split-stack support has been added for gccgo on PowerPC64 for both
   1800        big- and little-endian (but not for 32-bit). The gold linker from
   1801        at least binutils 2.25.1 must be available in the PATH when
   1802        configuring and building gccgo to enable split stack. (The
   1803        requirement for binutils 2.25.1 applies to PowerPC64 only.) The
   1804        split-stack feature allows a small initial stack size to be
   1805        allocated for each goroutine, which increases as needed.
   1806      * GCC on PowerPC now supports the standard lround function.
   1807      * A new configuration option ---with-advance-toolchain=at was added
   1808        for PowerPC 64-bit GNU/Linux systems to use the header files,
   1809        library files, and the dynamic linker from a specific Advance
   1810        Toolchain release instead of the default versions that are provided
   1811        by the GNU/Linux distribution. In general, this option is intended
   1812        for the developers of GCC, and it is not intended for general use.
   1813      * The "q", "S", "T", and "t" asm-constraints have been removed.
   1814      * The "b", "B", "m", "M", and "W" format modifiers have been removed.
   1815 
   1816   S/390, System z, IBM z Systems
   1817 
   1818      * Support for the IBM z13 processor has been added. When using the
   1819        -march=z13 option, the compiler will generate code making use of
   1820        the new instructions and registers introduced with the vector
   1821        extension facility. The -mtune=z13 option enables z13 specific
   1822        instruction scheduling without making use of new instructions.
   1823        Compiling code with -march=z13 reduces the default alignment of
   1824        vector types bigger than 8 bytes to 8. This is an ABI change and
   1825        care must be taken when linking modules compiled with different
   1826        arch levels which interchange variables containing vector type
   1827        values. For newly compiled code the GNU linker will emit a warning.
   1828      * The -mzvector option enables a C/C++ language extension. This
   1829        extension provides a new keyword vector which can be used to define
   1830        vector type variables. (Note: This is not available when enforcing
   1831        strict standard compliance e.g. with -std=c99. Either enable GNU
   1832        extensions with e.g. -std=gnu99 or use __vector instead of vector.)
   1833        Additionally a set of overloaded builtins is provided which is
   1834        partially compatible to the PowerPC Altivec builtins. In order to
   1835        make use of these builtins the vecintrin.h header file needs to be
   1836        included.
   1837      * The new command-line options -march=native, and -mtune=native are
   1838        now available on native IBM z Systems. Specifying these options
   1839        causes GCC to auto-detect the host CPU and choose the optimal
   1840        setting for that system. If GCC is unable to detect the host CPU
   1841        these options have no effect.
   1842      * The IBM z Systems port now supports target attributes and pragmas.
   1843        Please refer to the [20]documentation for details of available
   1844        attributes and pragmas as well as usage instructions.
   1845      * -fsplit-stack is now supported as part of the IBM z Systems port.
   1846        This feature requires a recent gold linker to be used.
   1847      * Support for the g5 and g6 -march=/-mtune= CPU level switches has
   1848        been deprecated and will be removed in a future GCC release. -m31
   1849        from now on defaults to -march=z900 if not specified otherwise.
   1850        -march=native on a g5/g6 machine will default to -march=z900.
   1851 
   1852   SH
   1853 
   1854      * Support for SH5 / SH64 has been declared obsolete and will be
   1855        removed in future releases.
   1856      * Support for the FDPIC ABI has been added. It can be enabled using
   1857        the new -mfdpic target option and --enable-fdpic configure option.
   1858 
   1859   SPARC
   1860 
   1861      * An ABI bug has been fixed in 64-bit mode. Unfortunately, this
   1862        change will break binary compatibility with earlier releases for
   1863        code it affects, but this should be pretty rare in practice. The
   1864        conditions are: a 16-byte structure containing a double or a 8-byte
   1865        vector in the second half is passed to a subprogram in slot #15,
   1866        for example as 16th parameter if the first 15 ones have at most 8
   1867        bytes. The double or vector was wrongly passed in floating-point
   1868        register %d32 in lieu of on the stack as per the SPARC calling
   1869        conventions.
   1870 
   1871 Operating Systems
   1872 
   1873   AIX
   1874 
   1875      * DWARF debugging support for AIX 7.1 has been enabled as an optional
   1876        debugging format. A more recent Technology Level (TL) and GCC built
   1877        with that level are required for full exploitation of DWARF
   1878        debugging capabilities.
   1879 
   1880   Linux
   1881 
   1882      * Support for the [21]musl C library was added for the AArch64, ARM,
   1883        MicroBlaze, MIPS, MIPS64, PowerPC, PowerPC64, SH, i386, x32 and
   1884        x86_64 targets. It can be selected using the new -mmusl option in
   1885        case musl is not the default libc. GCC defaults to musl libc if it
   1886        is built with a target triplet matching the *-linux-musl* pattern.
   1887 
   1888   RTEMS
   1889 
   1890      * The RTEMS thread model implementation changed. Mutexes now use
   1891        self-contained objects defined in Newlib <sys/lock.h> instead of
   1892        Classic API semaphores. The keys for thread specific data and the
   1893        once function are directly defined via <pthread.h>. Self-contained
   1894        condition variables are provided via Newlib <sys/lock.h>. The RTEMS
   1895        thread model also supports C++11 threads.
   1896      * OpenMP support now uses self-contained objects provided by Newlib
   1897        <sys/lock.h> and offers a significantly better performance compared
   1898        to the POSIX configuration of libgomp. It is possible to configure
   1899        thread pools for each scheduler instance via the environment
   1900        variable GOMP_RTEMS_THREAD_POOLS.
   1901 
   1902   Solaris
   1903 
   1904      * Solaris 12 is now fully supported. Minimal support had already been
   1905        present in GCC 5.3.
   1906      * Solaris 12 provides a full set of startup files (crt1.o, crti.o,
   1907        crtn.o), which GCC now prefers over its own ones.
   1908      * Position independent executables (PIE) are now supported on Solaris
   1909        12.
   1910      * Constructor priority is now supported on Solaris 12 with the system
   1911        linker.
   1912      * libvtv has been ported to Solaris 11 and up.
   1913 
   1914   Windows
   1915 
   1916      * The option -mstackrealign is now automatically activated in 32-bit
   1917        mode whenever the use of SSE instructions is requested.
   1918 
   1919 Other significant improvements
   1920 
   1921      * The gcc and g++ driver programs will now provide suggestions for
   1922        misspelled command-line options.
   1923 
   1924 $ gcc -static-libfortran test.f95
   1925 gcc: error: unrecognized command line option '-static-libfortran'; did you mean
   1926 '-static-libgfortran'?
   1927 
   1928      * The --enable-default-pie configure option enables generation of PIE
   1929        by default.
   1930 
   1931                                     GCC 6.2
   1932 
   1933    This is the [22]list of problem reports (PRs) from GCC's bug tracking
   1934    system that are known to be fixed in the 6.2 release. This list might
   1935    not be complete (that is, it is possible that some PRs that have been
   1936    fixed are not listed here).
   1937 
   1938 Target Specific Changes
   1939 
   1940   SPARC
   1941 
   1942      * Support for --with-cpu-32 and --with-cpu-64 configure options has
   1943        been added on bi-architecture platforms.
   1944      * Support for the SPARC M7 (Niagara 7) processor has been added.
   1945      * Support for the VIS 4.0 instruction set has been added.
   1946 
   1947                                     GCC 6.3
   1948 
   1949    This is the [23]list of problem reports (PRs) from GCC's bug tracking
   1950    system that are known to be fixed in the 6.3 release. This list might
   1951    not be complete (that is, it is possible that some PRs that have been
   1952    fixed are not listed here).
   1953 
   1954 Target Specific Changes
   1955 
   1956   IA-32/x86-64
   1957 
   1958      * Support for the [24]deprecated pcommit instruction has been
   1959        removed.
   1960 
   1961                                     GCC 6.4
   1962 
   1963    This is the [25]list of problem reports (PRs) from GCC's bug tracking
   1964    system that are known to be fixed in the 6.4 release. This list might
   1965    not be complete (that is, it is possible that some PRs that have been
   1966    fixed are not listed here).
   1967 
   1968 Operating Systems
   1969 
   1970   RTEMS
   1971 
   1972      * The ABI changes on ARM so that no short enums are used by default.
   1973 
   1974                                     GCC 6.5
   1975 
   1976    This is the [26]list of problem reports (PRs) from GCC's bug tracking
   1977    system that are known to be fixed in the 6.5 release. This list might
   1978    not be complete (that is, it is possible that some PRs that have been
   1979    fixed are not listed here).
   1980 
   1981 
   1982     For questions related to the use of GCC, please consult these web
   1983     pages and the [27]GCC manuals. If that fails, the
   1984     [28]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   1985     web pages and the development of GCC are welcome on our developer
   1986     list at [29]gcc (a] gcc.gnu.org. All of [30]our lists have public
   1987     archives.
   1988 
   1989    Copyright (C) [31]Free Software Foundation, Inc. Verbatim copying and
   1990    distribution of this entire article is permitted in any medium,
   1991    provided this notice is preserved.
   1992 
   1993    These pages are [32]maintained by the GCC team. Last modified
   1994    2018-10-31[33].
   1995 
   1996 References
   1997 
   1998    1. http://gcc.gnu.org/gcc-6/porting_to.html
   1999    2. http://gcc.gnu.org/onlinedocs/index.html#current
   2000    3. https://gcc.gnu.org/ml/gcc/2015-08/msg00101.html
   2001    4. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71151
   2002    5. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87822
   2003    6. https://www.openacc.org/
   2004    7. https://gcc.gnu.org/wiki/OpenACC
   2005    8. https://gcc.gnu.org/wiki/Offloading
   2006    9. https://www.openmp.org/specifications/
   2007   10. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-1266
   2008   11. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4377.pdf
   2009   12. https://gcc.gnu.org/projects/cxx-status.html#cxx1z
   2010   13. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/jit/topics/performance.html
   2011   14. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/jit/topics/functions.html#gcc_jit_block_end_with_switch
   2012   15. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/jit/topics/contexts.html#gcc_jit_context_set_bool_allow_unreachable_blocks
   2013   16. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/jit/topics/contexts.html#gcc_jit_context_add_command_line_option
   2014   17. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/AArch64-Function-Attributes.html#AArch64-Function-Attributes
   2015   18. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/ARM-Function-Attributes.html#ARM-Function-Attributes
   2016   19. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/Named-Address-Spaces.html#Named-Address-Spaces
   2017   20. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/S_002f390-Function-Attributes.html#S_002f390-Function-Attributes
   2018   21. http://www.musl-libc.org/
   2019   22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.2
   2020   23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.3
   2021   24. https://software.intel.com/en-us/blogs/2016/09/12/deprecate-pcommit-instruction
   2022   25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.4
   2023   26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.5
   2024   27. https://gcc.gnu.org/onlinedocs/
   2025   28. mailto:gcc-help (a] gcc.gnu.org
   2026   29. mailto:gcc (a] gcc.gnu.org
   2027   30. https://gcc.gnu.org/lists.html
   2028   31. https://www.fsf.org/
   2029   32. https://gcc.gnu.org/about.html
   2030   33. http://validator.w3.org/check/referer
   2031 ======================================================================
   2032 http://gcc.gnu.org/gcc-5/index.html
   2033 
   2034                               GCC 5 Release Series
   2035 
   2036    October 10, 2017
   2037 
   2038    The [1]GNU project and the GCC developers are pleased to announce the
   2039    release of GCC 5.5.
   2040 
   2041    This release is a bug-fix release, containing fixes for regressions in
   2042    GCC 5.4 relative to previous releases of GCC.
   2043 
   2044 Release History
   2045 
   2046    GCC 5.5
   2047           October 10, 2017 ([2]changes, [3]documentation)
   2048 
   2049    GCC 5.4
   2050           June 3, 2016 ([4]changes, [5]documentation)
   2051 
   2052    GCC 5.3
   2053           December 4, 2015 ([6]changes, [7]documentation)
   2054 
   2055    GCC 5.2
   2056           July 16, 2015 ([8]changes, [9]documentation)
   2057 
   2058    GCC 5.1
   2059           April 22, 2015 ([10]changes, [11]documentation)
   2060 
   2061 References and Acknowledgements
   2062 
   2063    GCC used to stand for the GNU C Compiler, but since the compiler
   2064    supports several other languages aside from C, it now stands for the
   2065    GNU Compiler Collection.
   2066 
   2067    A list of [12]successful builds is updated as new information becomes
   2068    available.
   2069 
   2070    The GCC developers would like to thank the numerous people that have
   2071    contributed new features, improvements, bug fixes, and other changes as
   2072    well as test results to GCC. This [13]amazing group of volunteers is
   2073    what makes GCC successful.
   2074 
   2075    For additional information about GCC please refer to the [14]GCC
   2076    project web site or contact the [15]GCC development mailing list.
   2077 
   2078    To obtain GCC please use [16]our mirror sites or [17]our SVN server.
   2079 
   2080 
   2081     For questions related to the use of GCC, please consult these web
   2082     pages and the [18]GCC manuals. If that fails, the
   2083     [19]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   2084     web pages and the development of GCC are welcome on our developer
   2085     list at [20]gcc (a] gcc.gnu.org. All of [21]our lists have public
   2086     archives.
   2087 
   2088    Copyright (C) [22]Free Software Foundation, Inc. Verbatim copying and
   2089    distribution of this entire article is permitted in any medium,
   2090    provided this notice is preserved.
   2091 
   2092    These pages are [23]maintained by the GCC team. Last modified
   2093    2018-09-30[24].
   2094 
   2095 References
   2096 
   2097    1. http://www.gnu.org/
   2098    2. http://gcc.gnu.org/gcc-5/changes.html
   2099    3. http://gcc.gnu.org/onlinedocs/5.5.0/
   2100    4. http://gcc.gnu.org/gcc-5/changes.html
   2101    5. http://gcc.gnu.org/onlinedocs/5.4.0/
   2102    6. http://gcc.gnu.org/gcc-5/changes.html
   2103    7. http://gcc.gnu.org/onlinedocs/5.3.0/
   2104    8. http://gcc.gnu.org/gcc-5/changes.html
   2105    9. http://gcc.gnu.org/onlinedocs/5.2.0/
   2106   10. http://gcc.gnu.org/gcc-5/changes.html
   2107   11. http://gcc.gnu.org/onlinedocs/5.1.0/
   2108   12. http://gcc.gnu.org/gcc-5/buildstat.html
   2109   13. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   2110   14. http://gcc.gnu.org/index.html
   2111   15. mailto:gcc (a] gcc.gnu.org
   2112   16. http://gcc.gnu.org/mirrors.html
   2113   17. http://gcc.gnu.org/svn.html
   2114   18. https://gcc.gnu.org/onlinedocs/
   2115   19. mailto:gcc-help (a] gcc.gnu.org
   2116   20. mailto:gcc (a] gcc.gnu.org
   2117   21. https://gcc.gnu.org/lists.html
   2118   22. https://www.fsf.org/
   2119   23. https://gcc.gnu.org/about.html
   2120   24. http://validator.w3.org/check/referer
   2121 ======================================================================
   2122 http://gcc.gnu.org/gcc-5/changes.html
   2123 
   2124                               GCC 5 Release Series
   2125                         Changes, New Features, and Fixes
   2126 
   2127 Caveats
   2128 
   2129      * The default mode for C is now -std=gnu11 instead of -std=gnu89.
   2130      * The C++ runtime library (libstdc++) uses a new ABI by default (see
   2131        [1]below).
   2132      * The Graphite framework for loop optimizations no longer requires
   2133        the CLooG library, only ISL version 0.14 (recommended) or 0.12.2.
   2134        The installation manual contains more information about
   2135        requirements to build GCC.
   2136      * The non-standard C++0x type traits has_trivial_default_constructor,
   2137        has_trivial_copy_constructor and has_trivial_copy_assign have been
   2138        deprecated and will be removed in a future version. The standard
   2139        C++11 traits is_trivially_default_constructible,
   2140        is_trivially_copy_constructible and is_trivially_copy_assignable
   2141        should be used instead.
   2142      * On AVR, support has been added for the devices
   2143        ATtiny4/5/9/10/20/40. This requires Binutils 2.25 or newer.
   2144      * The AVR port uses a new scheme to describe supported devices: For
   2145        each supported device the compiler provides a device-specific
   2146        [2]spec file. If the compiler is used together with AVR-LibC, this
   2147        requires at least GCC 5.2 and a version of AVR-LibC which
   2148        implements [3]feature #44574.
   2149 
   2150 General Optimizer Improvements
   2151 
   2152      * Inter-procedural optimization improvements:
   2153           + An Identical Code Folding (ICF) pass (controlled via
   2154             -fipa-icf) has been added. Compared to the identical code
   2155             folding performed by the Gold linker this pass does not
   2156             require function sections. It also performs merging before
   2157             inlining, so inter-procedural optimizations are aware of the
   2158             code re-use. On the other hand not all unifications performed
   2159             by a linker are doable by GCC which must honor aliasing
   2160             information. During link-time optimization of Firefox, this
   2161             pass unifies about 31000 functions, that is 14% overall.
   2162           + The devirtualization pass was significantly improved by adding
   2163             better support for speculative devirtualization and dynamic
   2164             type detection. About 50% of virtual calls in Firefox are now
   2165             speculatively devirtualized during link-time optimization.
   2166           + A new comdat localization pass allows the linker to eliminate
   2167             more dead code in presence of C++ inline functions.
   2168           + Virtual tables are now optimized. Local aliases are used to
   2169             reduce dynamic linking time of C++ virtual tables on ELF
   2170             targets and data alignment has been reduced to limit data
   2171             segment bloat.
   2172           + A new -fno-semantic-interposition option can be used to
   2173             improve code quality of shared libraries where interposition
   2174             of exported symbols is not allowed.
   2175           + Write-only variables are now detected and optimized out.
   2176           + With profile feedback the function inliner can now bypass
   2177             --param inline-insns-auto and --param inline-insns-single
   2178             limits for hot calls.
   2179           + The IPA reference pass was significantly sped up making it
   2180             feasible to enable -fipa-reference with -fprofile-generate.
   2181             This also solves a bottleneck seen when building Chromium with
   2182             link-time optimization.
   2183           + The symbol table and call-graph API was reworked to C++ and
   2184             simplified.
   2185           + The interprocedural propagation of constants now also
   2186             propagates alignments of pointer parameters. This for example
   2187             means that the vectorizer often does not need to generate loop
   2188             prologues and epilogues to make up for potential
   2189             misalignments.
   2190      * Link-time optimization improvements:
   2191           + One Definition Rule based merging of C++ types has been
   2192             implemented. Type merging enables better devirtualization and
   2193             alias analysis. Streaming extra information needed to merge
   2194             types adds about 2-6% of memory size and object size increase.
   2195             This can be controlled by -flto-odr-type-merging.
   2196           + Command-line optimization and target options are now streamed
   2197             on a per-function basis and honored by the link-time
   2198             optimizer. This change makes link-time optimization a more
   2199             transparent replacement of per-file optimizations. It is now
   2200             possible to build projects that require different optimization
   2201             settings for different translation units (such as -ffast-math,
   2202             -mavx, or -finline). Contrary to earlier GCC releases, the
   2203             optimization and target options passed on the link command
   2204             line are ignored.
   2205             Note that this applies only to those command-line options that
   2206             can be passed to optimize and target attributes. Command-line
   2207             options affecting global code generation (such as -fpic),
   2208             warnings (such as -Wodr), optimizations affecting the way
   2209             static variables are optimized (such as -fcommon), debug
   2210             output (such as -g), and --param parameters can be applied
   2211             only to the whole link-time optimization unit. In these cases,
   2212             it is recommended to consistently use the same options at both
   2213             compile time and link time.
   2214           + GCC bootstrap now uses slim LTO object files.
   2215           + Memory usage and link times were improved. Tree merging was
   2216             sped up, memory usage of GIMPLE declarations and types was
   2217             reduced, and, support for on-demand streaming of variable
   2218             constructors was added.
   2219      * Feedback directed optimization improvements:
   2220           + A new auto-FDO mode uses profiles collected by low overhead
   2221             profiling tools (perf) instead of more expensive program
   2222             instrumentation (via -fprofile-generate). SPEC2006 benchmarks
   2223             on x86-64 improve by 4.7% with auto-FDO and by 7.3% with
   2224             traditional feedback directed optimization.
   2225           + Profile precision was improved in presence of C++ inline and
   2226             extern inline functions.
   2227           + The new gcov-tool utility allows manipulating profiles.
   2228           + Profiles are now more tolerant to source file changes (this
   2229             can be controlled by --param profile-func-internal-id).
   2230      * Register allocation improvements:
   2231           + A new local register allocator (LRA) sub-pass, controlled by
   2232             -flra-remat, implements control-flow sensitive global register
   2233             rematerialization. Instead of spilling and restoring a
   2234             register value, it is recalculated if it is profitable. The
   2235             sub-pass improved SPEC2000 generated code by 1% and 0.5%
   2236             correspondingly on ARM and x86-64.
   2237           + Reuse of the PIC hard register, instead of using a fixed
   2238             register, was implemented on x86/x86-64 targets. This improves
   2239             generated PIC code performance as more hard registers can be
   2240             used. Shared libraries can significantly benefit from this
   2241             optimization. Currently it is switched on only for x86/x86-64
   2242             targets. As RA infrastructure is already implemented for PIC
   2243             register reuse, other targets might follow this in the future.
   2244           + A simple form of inter-procedural RA was implemented. When it
   2245             is known that a called function does not use caller-saved
   2246             registers, save/restore code is not generated around the call
   2247             for such registers. This optimization can be controlled by
   2248             -fipa-ra
   2249           + LRA is now much more effective at generating spills of general
   2250             registers into vector registers instead of memory on
   2251             architectures (e.g., modern Intel processors) where this is
   2252             profitable.
   2253      * UndefinedBehaviorSanitizer gained a few new sanitization options:
   2254           + -fsanitize=float-divide-by-zero: detect floating-point
   2255             division by zero;
   2256           + -fsanitize=float-cast-overflow: check that the result of
   2257             floating-point type to integer conversions do not overflow;
   2258           + -fsanitize=bounds: enable instrumentation of array bounds and
   2259             detect out-of-bounds accesses;
   2260           + -fsanitize=alignment: enable alignment checking, detect
   2261             various misaligned objects;
   2262           + -fsanitize=object-size: enable object size checking, detect
   2263             various out-of-bounds accesses.
   2264           + -fsanitize=vptr: enable checking of C++ member function calls,
   2265             member accesses and some conversions between pointers to base
   2266             and derived classes, detect if the referenced object does not
   2267             have the correct dynamic type.
   2268      * Pointer Bounds Checker, a bounds violation detector, has been added
   2269        and can be enabled via -fcheck-pointer-bounds. Memory accesses are
   2270        instrumented with run-time checks of used pointers against their
   2271        bounds to detect pointer bounds violations (overflows). The Pointer
   2272        Bounds Checker is available on x86/x86-64 GNU/Linux targets with a
   2273        new ISA extension Intel MPX support. See the Pointer Bounds Checker
   2274        [4]Wiki page for more details.
   2275 
   2276 New Languages and Language specific improvements
   2277 
   2278      * [5]OpenMP 4.0 specification offloading features are now supported
   2279        by the C, C++, and Fortran compilers. Generic changes:
   2280           + Infrastructure (suitable for any vendor).
   2281           + Testsuite which covers offloading from the [6]OpenMP 4.0
   2282             Examples document.
   2283        Specific for upcoming Intel Xeon Phi products:
   2284           + Run-time library.
   2285           + Card emulator.
   2286      * GCC 5 includes a preliminary implementation of the OpenACC 2.0a
   2287        specification. OpenACC is intended for programming accelerator
   2288        devices such as GPUs. See [7]the OpenACC wiki page for more
   2289        information.
   2290 
   2291   C family
   2292 
   2293      * The default setting of the -fdiagnostics-color= command-line option
   2294        is now [8]configurable when building GCC using configuration option
   2295        --with-diagnostics-color=. The possible values are: never, always,
   2296        auto and auto-if-env. The new default auto uses color only when the
   2297        standard error is a terminal. The default in GCC 4.9 was
   2298        auto-if-env, which is equivalent to auto if there is a non-empty
   2299        GCC_COLORS environment variable, and never otherwise. As in GCC
   2300        4.9, an empty GCC_COLORS variable in the environment will always
   2301        disable colors, no matter what the default is or what command-line
   2302        options are used.
   2303      * A new command-line option -Wswitch-bool has been added for the C
   2304        and C++ compilers, which warns whenever a switch statement has an
   2305        index of boolean type.
   2306      * A new command-line option -Wlogical-not-parentheses has been added
   2307        for the C and C++ compilers, which warns about "logical not" used
   2308        on the left hand side operand of a comparison.
   2309      * A new command-line option -Wsizeof-array-argument has been added
   2310        for the C and C++ compilers, which warns when the sizeof operator
   2311        is applied to a parameter that has been declared as an array in a
   2312        function definition.
   2313      * A new command-line option -Wbool-compare has been added for the C
   2314        and C++ compilers, which warns about boolean expressions compared
   2315        with an integer value different from true/false.
   2316      * Full support for [9]Cilk Plus has been added to the GCC compiler.
   2317        Cilk Plus is an extension to the C and C++ languages to support
   2318        data and task parallelism.
   2319      * A new attribute no_reorder prevents reordering of selected symbols
   2320        against other such symbols or inline assembler. This enables to
   2321        link-time optimize the Linux kernel without having to resort to
   2322        -fno-toplevel-reorder that disables several optimizations.
   2323      * New preprocessor constructs, __has_include and __has_include_next,
   2324        to test the availability of headers have been added.
   2325        This demonstrates a way to include the header <optional> only if it
   2326        is available:
   2327 
   2328 #ifdef __has_include
   2329 #  if __has_include(<optional>)
   2330 #    include <optional>
   2331 #    define have_optional 1
   2332 #  elif __has_include(<experimental/optional>)
   2333 #    include <experimental/optional>
   2334 #    define have_optional 1
   2335 #    define experimental_optional
   2336 #  else
   2337 #    define have_optional 0
   2338 #  endif
   2339 #endif
   2340 
   2341        The header search paths for __has_include and __has_include_next
   2342        are equivalent to those of the standard directive #include and the
   2343        extension #include_next respectively.
   2344      * A new built-in function-like macro to determine the existence of an
   2345        attribute, __has_attribute, has been added. The equivalent built-in
   2346        macro __has_cpp_attribute was added to C++ to support
   2347        [10]Feature-testing recommendations for C++. The macro
   2348        __has_attribute is added to all C-like languages as an extension:
   2349 
   2350 int
   2351 #ifdef __has_attribute
   2352 #  if __has_attribute(__noinline__)
   2353   __attribute__((__noinline__))
   2354 #  endif
   2355 #endif
   2356 foo(int x);
   2357 
   2358        If an attribute exists, a nonzero constant integer is returned. For
   2359        standardized C++ attributes a date is returned, otherwise the
   2360        constant returned is 1. Both __has_attribute and
   2361        __has_cpp_attribute will add underscores to an attribute name if
   2362        necessary to resolve the name. For C++11 and onwards the attribute
   2363        may be scoped.
   2364      * A new set of built-in functions for arithmetics with overflow
   2365        checking has been added: __builtin_add_overflow,
   2366        __builtin_sub_overflow and __builtin_mul_overflow and for
   2367        compatibility with clang also other variants. These builtins have
   2368        two integral arguments (which don't need to have the same type),
   2369        the arguments are extended to infinite precision signed type, +, -
   2370        or * is performed on those, and the result is stored in an integer
   2371        variable pointed to by the last argument. If the stored value is
   2372        equal to the infinite precision result, the built-in functions
   2373        return false, otherwise true. The type of the integer variable that
   2374        will hold the result can be different from the types of the first
   2375        two arguments. The following snippet demonstrates how this can be
   2376        used in computing the size for the calloc function:
   2377 
   2378 void *
   2379 calloc (size_t x, size_t y)
   2380 {
   2381   size_t sz;
   2382   if (__builtin_mul_overflow (x, y, &sz))
   2383     return NULL;
   2384   void *ret = malloc (sz);
   2385   if (ret) memset (res, 0, sz);
   2386   return ret;
   2387 }
   2388 
   2389        On e.g. i?86 or x86-64 the above will result in a mul instruction
   2390        followed by a jump on overflow.
   2391      * The option -fextended-identifiers is now enabled by default for
   2392        C++, and for C99 and later C versions. Various bugs in the
   2393        implementation of extended identifiers have been fixed.
   2394 
   2395   C
   2396 
   2397      * The default mode has been changed to -std=gnu11.
   2398      * A new command-line option -Wc90-c99-compat has been added to warn
   2399        about features not present in ISO C90, but present in ISO C99.
   2400      * A new command-line option -Wc99-c11-compat has been added to warn
   2401        about features not present in ISO C99, but present in ISO C11.
   2402      * It is possible to disable warnings about conversions between
   2403        pointers that have incompatible types via a new warning option
   2404        -Wno-incompatible-pointer-types; warnings about implicit
   2405        incompatible integer to pointer and pointer to integer conversions
   2406        via a new warning option -Wno-int-conversion; and warnings about
   2407        qualifiers on pointers being discarded via a new warning option
   2408        -Wno-discarded-qualifiers.
   2409      * To allow proper use of const qualifiers with multidimensional
   2410        arrays, GCC will not warn about incompatible pointer types anymore
   2411        for conversions between pointers to arrays with and without const
   2412        qualifier (except when using -pedantic). Instead, a new warning is
   2413        emitted only if the const qualifier is lost. This can be controlled
   2414        with a new warning option -Wno-discarded-array-qualifiers.
   2415      * The C front end now generates more precise caret diagnostics.
   2416      * The -pg command-line option now only affects the current file in an
   2417        LTO build.
   2418 
   2419   C++
   2420 
   2421      * G++ now supports [11]C++14 variable templates.
   2422      * -Wnon-virtual-dtor doesn't warn anymore for final classes.
   2423      * Excessive template instantiation depth is now a fatal error. This
   2424        prevents excessive diagnostics that usually do not help to identify
   2425        the problem.
   2426      * G++ and libstdc++ now implement the feature-testing macros from
   2427        [12]Feature-testing recommendations for C++.
   2428      * G++ now allows typename in a template template parameter.
   2429 
   2430 template<template<typename> typename X> struct D; // OK
   2431 
   2432      * G++ now supports [13]C++14 aggregates with non-static data member
   2433        initializers.
   2434 
   2435 struct A { int i, j = i; };
   2436 A a = { 42 }; // a.j is also 42
   2437 
   2438      * G++ now supports [14]C++14 extended constexpr.
   2439 
   2440 constexpr int f (int i)
   2441 {
   2442   int j = 0;
   2443   for (; i > 0; --i)
   2444     ++j;
   2445   return j;
   2446 }
   2447 
   2448 constexpr int i = f(42); // i is 42
   2449 
   2450      * G++ now supports the [15]C++14 sized deallocation functions.
   2451 
   2452 void operator delete (void *, std::size_t) noexcept;
   2453 void operator delete[] (void *, std::size_t) noexcept;
   2454 
   2455      * A new One Definition Rule violation warning (controlled by -Wodr)
   2456        detects mismatches in type definitions and virtual table contents
   2457        during link-time optimization.
   2458      * New warnings -Wsuggest-final-types and -Wsuggest-final-methods help
   2459        developers to annotate programs with final specifiers (or anonymous
   2460        namespaces) to improve code generation. These warnings can be used
   2461        at compile time, but they are more useful in combination with
   2462        link-time optimization.
   2463      * G++ no longer supports [16]N3639 variable length arrays, as they
   2464        were removed from the C++14 working paper prior to ratification.
   2465        GNU VLAs are still supported, so VLA support is now the same in
   2466        C++14 mode as in C++98 and C++11 modes.
   2467      * G++ now allows passing a non-trivially-copyable class via C
   2468        varargs, which is conditionally-supported with
   2469        implementation-defined semantics in the standard. This uses the
   2470        same calling convention as a normal value parameter.
   2471      * G++ now defaults to -fabi-version=9 and -fabi-compat-version=2. So
   2472        various mangling bugs are fixed, but G++ will still emit aliases
   2473        with the old, wrong mangling where feasible. -Wabi=2 will warn
   2474        about differences between ABI version 2 and the current setting.
   2475      * G++ 5.2 fixes the alignment of std::nullptr_t. Most code is likely
   2476        to be unaffected, but -Wabi=8 will warn about a non-static data
   2477        member with type std::nullptr_t which changes position due to this
   2478        change.
   2479 
   2480     Runtime Library (libstdc++)
   2481 
   2482      * A [17]Dual ABI is provided by the library. A new ABI is enabled by
   2483        default. The old ABI is still supported and can be used by defining
   2484        the macro _GLIBCXX_USE_CXX11_ABI to 0 before including any C++
   2485        standard library headers.
   2486      * A new implementation of std::string is enabled by default, using
   2487        the small string optimization instead of copy-on-write reference
   2488        counting.
   2489      * A new implementation of std::list is enabled by default, with an
   2490        O(1) size() function;
   2491      * [18]Full support for C++11, including the following new features:
   2492           + std::deque and std::vector<bool> meet the allocator-aware
   2493             container requirements;
   2494           + movable and swappable iostream classes;
   2495           + support for std::align and std::aligned_union;
   2496           + type traits std::is_trivially_copyable,
   2497             std::is_trivially_constructible, std::is_trivially_assignable
   2498             etc.;
   2499           + I/O manipulators std::put_time, std::get_time, std::hexfloat
   2500             and std::defaultfloat;
   2501           + generic locale-aware std::isblank;
   2502           + locale facets for Unicode conversion;
   2503           + atomic operations for std::shared_ptr;
   2504           + std::notify_all_at_thread_exit() and functions for making
   2505             futures ready at thread exit.
   2506      * Support for the C++11 hexfloat manipulator changes how the num_put
   2507        facet formats floating point types when
   2508        ios_base::fixed|ios_base::scientific is set in a stream's fmtflags.
   2509        This change affects all language modes, even though the C++98
   2510        standard gave no special meaning to that combination of flags. To
   2511        prevent the use of hexadecimal notation for floating point types
   2512        use str.unsetf(std::ios_base::floatfield) to clear the relevant
   2513        bits in str.flags().
   2514      * [19]Full experimental support for C++14, including the following
   2515        new features:
   2516           + std::is_final type trait;
   2517           + heterogeneous comparison lookup in associative containers.
   2518           + global functions cbegin, cend, rbegin, rend, crbegin, and
   2519             crend for range access to containers, arrays and initializer
   2520             lists.
   2521      * [20]Improved experimental support for the Library Fundamentals TS,
   2522        including:
   2523           + class std::experimental::any;
   2524           + function template std::experimental::apply;
   2525           + function template std::experimental::sample;
   2526           + function template std::experimental::search and related
   2527             searcher types;
   2528           + variable templates for type traits;
   2529           + function template std::experimental::not_fn.
   2530      * New random number distributions logistic_distribution and
   2531        uniform_on_sphere_distribution as extensions.
   2532      * [21]GDB Xmethods for containers and std::unique_ptr.
   2533 
   2534   Fortran
   2535 
   2536      * Compatibility notice:
   2537           + The version of the module files (.mod) has been incremented.
   2538           + For free-form source files [22]-Werror=line-truncation is now
   2539             enabled by default. Note that comments exceeding the line
   2540             length are not diagnosed. (For fixed-form source code, the
   2541             same warning is available but turned off by default, such that
   2542             excess characters are ignored. -ffree-line-length-n and
   2543             -ffixed-line-length-n can be used to modify the default line
   2544             lengths of 132 and 72 columns, respectively.)
   2545           + The -Wtabs option is now more sensible: with -Wtabs the
   2546             compiler warns if it encounters tabs and with -Wno-tabs this
   2547             warning is turned off. Before, -Wno-tabs warned and -Wtabs
   2548             disabled the warning. As before, this warning is also enabled
   2549             by -Wall, -pedantic and the f95, f2003, f2008 and f2008ts
   2550             options of -std=.
   2551      * Incomplete support for colorizing diagnostics emitted by gfortran
   2552        has been added. The option [23]-fdiagnostics-color controls when
   2553        color is used in diagnostics. The default value of this option can
   2554        be [24]configured when building GCC. The GCC_COLORS environment
   2555        variable can be used to customize the colors or disable coloring
   2556        completely. Sample diagnostics output:
   2557       $ gfortran -fdiagnostics-color=always -Wuse-without-only test.f90
   2558       test.f90:6:1:
   2559 
   2560        0 continue
   2561        1
   2562       Error: Zero is not a valid statement label at (1)
   2563       test.f90:9:6:
   2564 
   2565          USE foo
   2566             1
   2567       Warning: USE statement at (1) has no ONLY qualifier [-Wuse-without-only]
   2568 
   2569      * The -Wuse-without-only option has been added to warn when a USE
   2570        statement has no ONLY qualifier and thus implicitly imports all
   2571        public entities of the used module.
   2572      * Formatted READ and WRITE statements now work correctly in
   2573        locale-aware programs. For more information and potential caveats,
   2574        see [25]Section 5.3 Thread-safety of the runtime library in the
   2575        manual.
   2576      * [26]Fortran 2003:
   2577           + The intrinsic IEEE modules (IEEE_FEATURES, IEEE_EXCEPTIONS and
   2578             IEEE_ARITHMETIC) are now supported.
   2579      * [27]Fortran 2008:
   2580           + [28]Coarrays: Full experimental support of Fortran 2008's
   2581             coarrays with -fcoarray=lib except for allocatable/pointer
   2582             components of derived-type coarrays. GCC currently only ships
   2583             with a single-image library (libcaf_single), but multi-image
   2584             support based on MPI and GASNet is provided by the libraries
   2585             of the [29]OpenCoarrays project.
   2586      * TS18508 Additional Parallel Features in Fortran:
   2587           + Support for the collective intrinsic subroutines CO_MAX,
   2588             CO_MIN, CO_SUM, CO_BROADCAST and CO_REDUCE has been added,
   2589             including -fcoarray=lib support.
   2590           + Support for the new atomic intrinsics has been added,
   2591             including -fcoarray=lib support.
   2592      * Fortran 2015:
   2593           + Support for IMPLICIT NONE (external, type).
   2594           + ERROR STOP is now permitted in pure procedures.
   2595 
   2596   Go
   2597 
   2598      * GCC 5 provides a complete implementation of the Go 1.4.2 release.
   2599      * Building GCC 5 with Go enabled will install two new programs:
   2600        [30]go and [31]gofmt.
   2601 
   2602 libgccjit
   2603 
   2604    New in GCC 5 is the ability to build GCC as a shared library for
   2605    embedding in other processes (such as interpreters), suitable for
   2606    Just-In-Time compilation to machine code.
   2607 
   2608    The shared library has a [32]C API and a [33]C++ wrapper API providing
   2609    some "syntactic sugar". There are also bindings available from 3rd
   2610    parties for [34]Python and for [35]D.
   2611 
   2612    For example, this library can be used by interpreters for [36]compiling
   2613    functions from bytecode to machine code.
   2614 
   2615    The library can also be used for ahead-of-time compilation, enabling
   2616    GCC to be plugged into a pre-existing front end. An example of using
   2617    this to build a compiler for an esoteric language we'll refer to as
   2618    "brainf" can be seen [37]here.
   2619 
   2620    libgccjit is licensed under the GPLv3 (or at your option, any later
   2621    version)
   2622 
   2623    It should be regarded as experimental at this time.
   2624 
   2625 New Targets and Target Specific Improvements
   2626 
   2627   Reporting stack usage
   2628 
   2629      * The BFIN, FT32, H8300, IQ2000 and M32C targets now support the
   2630        -fstack-usage option.
   2631 
   2632   AArch64
   2633 
   2634      * Code generation for the ARM Cortex-A57 processor has been improved.
   2635        A more accurate instruction scheduling model for the processor is
   2636        now used, and a number of compiler tuning parameters have been set
   2637        to offer increased performance when compiling with -mcpu=cortex-a57
   2638        or -mtune=cortex-a57.
   2639      * A workaround for the ARM Cortex-A53 erratum 835769 has been added
   2640        and can be enabled by giving the -mfix-cortex-a53-835769 option.
   2641        Alternatively it can be enabled by default by configuring GCC with
   2642        the --enable-fix-cortex-a53-835769 option.
   2643      * The optional cryptographic extensions to the ARMv8-A architecture
   2644        are no longer enabled by default when specifying the
   2645        -mcpu=cortex-a53, -mcpu=cortex-a57 or -mcpu=cortex-a57.cortex-a53
   2646        options. To enable these extensions add +crypto to the value of
   2647        -mcpu or -march e.g. -mcpu=cortex-a53+crypto.
   2648      * Support has been added for the following processors (GCC
   2649        identifiers in parentheses): ARM Cortex-A72 (cortex-a72) and
   2650        initial support for its big.LITTLE combination with the ARM
   2651        Cortex-A53 (cortex-a72.cortex-a53), Cavium ThunderX (thunderx),
   2652        Applied Micro X-Gene 1 (xgene1), and Samsung Exynos M1 (exynos-m1).
   2653        The GCC identifiers can be used as arguments to the -mcpu or -mtune
   2654        options, for example: -mcpu=xgene1 or -mtune=cortex-a72.cortex-a53.
   2655        Using -mcpu=cortex-a72 requires a version of GNU binutils that has
   2656        support for the Cortex-A72.
   2657      * The transitional options -mlra and -mno-lra have been removed. The
   2658        AArch64 backend now uses the local register allocator (LRA) only.
   2659 
   2660   ARM
   2661 
   2662      * Thumb-1 assembly code is now generated in unified syntax. The new
   2663        option -masm-syntax-unified specifies whether inline assembly code
   2664        is using unified syntax. By default the option is off which means
   2665        non-unified syntax is used. However this is subject to change in
   2666        future releases. Eventually the non-unified syntax will be
   2667        deprecated.
   2668      * It is now a configure-time error to use the --with-cpu configure
   2669        option with either of --with-tune or --with-arch.
   2670      * Code generation for the ARM Cortex-A57 processor has been improved.
   2671        A more accurate instruction scheduling model for the processor is
   2672        now used, and a number of compiler tuning parameters have been set
   2673        to offer increased performance when compiling with -mcpu=cortex-a57
   2674        or -mtune=cortex-a57.
   2675      * Support has been added for the following processors (GCC
   2676        identifiers in parentheses): ARM Cortex-A17 (cortex-a17) and
   2677        initial support for its big.LITTLE combination with the ARM
   2678        Cortex-A7 (cortex-a17.cortex-a7), ARM Cortex-A72 (cortex-a72) and
   2679        initial support for its big.LITTLE combination with the ARM
   2680        Cortex-A53 (cortex-a72.cortex-a53), ARM Cortex-M7 (cortex-m7),
   2681        Applied Micro X-Gene 1 (xgene1), and Samsung Exynos M1 (exynos-m1).
   2682        The GCC identifiers can be used as arguments to the -mcpu or -mtune
   2683        options, for example: -mcpu=xgene1 or -mtune=cortex-a72.cortex-a53.
   2684        Using -mcpu=cortex-a72 requires a version of GNU binutils that has
   2685        support for the Cortex-A72.
   2686      * The deprecated option -mwords-little-endian has been removed.
   2687      * The options -mapcs, -mapcs-frame, -mtpcs-frame and
   2688        -mtpcs-leaf-frame which are only applicable to the old ABI have
   2689        been deprecated.
   2690      * The transitional options -mlra and -mno-lra have been removed. The
   2691        ARM backend now uses the local register allocator (LRA) only.
   2692 
   2693   AVR
   2694 
   2695      * The compiler no more supports individual devices like ATmega8.
   2696        Specifying, say, -mmcu=atmega8 triggers the usage of the
   2697        device-specific [38]spec file specs-atmega8 which is part of the
   2698        installation and describes options for the sub-processes like
   2699        compiler proper, assembler and linker. You can add support for a
   2700        new device -mmcu=mydevice as follows:
   2701          1. In an empty directory /someplace, create a new directory
   2702             device-specs.
   2703          2. Copy a device spec file from the installed device-specs
   2704             folder, follow the comments in that file and then save it as
   2705             /someplace/device-specs/specs-mydevice.
   2706          3. Add -B /someplace -mmcu=mydevice to the compiler's
   2707             command-line options. Notice that /someplace must specify an
   2708             absolute path and that mydevice must not start with "avr".
   2709          4. Provided you have a device-specific library libmydevice.a
   2710             available, you can put it at /someplace, dito for a
   2711             device-specific startup file crtmydevice.o.
   2712        The contents of the device spec files depend on the compiler's
   2713        configuration, in particular on --with-avrlibc=no and whether or
   2714        not it is configured for RTEMS.
   2715      * A new command-line option -nodevicelib has been added. It prevents
   2716        the compiler from linking against AVR-LibC's device-specific
   2717        library libdevice.a.
   2718      * The following three command-line options have been added:
   2719 
   2720         -mrmw
   2721                 Set if the device supports the read-modify-write
   2722                 instructions LAC, LAS, LAT and XCH.
   2723 
   2724         -mn-flash=size
   2725                 Specify the flash size of the device in units of 64 KiB,
   2726                 rounded up to the next integer as needed. This option
   2727                 affects the availability of the [39]AVR address-spaces.
   2728 
   2729         -mskip-bug
   2730                 Set if the device is affected by the respective silicon
   2731                 bug.
   2732 
   2733        In general, you don't need to set these options by hand. The new
   2734        device-specific spec file will set them as needed.
   2735 
   2736   IA-32/x86-64
   2737 
   2738      * New [40]ISA extensions support AVX-512{BW,DQ,VL,IFMA,VBMI} of
   2739        Intel's CPU codenamed Skylake Server was added to GCC. That
   2740        includes inline assembly support, new intrinsics, and basic
   2741        autovectorization. These new AVX-512 extensions are available via
   2742        the following GCC switches: AVX-512 Vector Length EVEX feature:
   2743        -mavx512vl, AVX-512 Byte and Word instructions: -mavx512bw, AVX-512
   2744        Dword and Qword instructions: -mavx512dq, AVX-512 FMA-52
   2745        instructions: -mavx512ifma and for AVX-512 Vector Bit Manipulation
   2746        Instructions: -mavx512vbmi.
   2747      * New ISA extensions support Intel MPX was added to GCC. This new
   2748        extension is available via the -mmpx compiler switch. Intel MPX is
   2749        a set of processor features which, with compiler, run-time library
   2750        and OS support, brings increased robustness to software by run-time
   2751        checking pointer references against their bounds. In GCC Intel MPX
   2752        is supported by Pointer Bounds Checker and libmpx run-time
   2753        libraries.
   2754      * The new -mrecord-mcount option for -pg generates a Linux kernel
   2755        style table of pointers to mcount or __fentry__ calls at the
   2756        beginning of functions. The new -mnop-mcount option in addition
   2757        also generates nops in place of the __fentry__ or mcount call, so
   2758        that a call per function can be later patched in. This can be used
   2759        for low overhead tracing or hot code patching.
   2760      * The new -malign-data option controls how GCC aligns variables.
   2761        -malign-data=compat uses increased alignment compatible with GCC
   2762        4.8 and earlier, -malign-data=abi uses alignment as specified by
   2763        the psABI, and -malign-data=cacheline uses increased alignment to
   2764        match the cache line size. -malign-data=compat is the default.
   2765      * The new -mskip-rax-setup option skips setting up the RAX register
   2766        when SSE is disabled and there are no variable arguments passed in
   2767        vector registers. This can be used to optimize the Linux kernel.
   2768 
   2769   MIPS
   2770 
   2771      * MIPS Releases 3 and 5 are now directly supported. Use the
   2772        command-line options -mips32r3, -mips64r3, -mips32r5 and -mips64r5
   2773        to enable code-generation for these processors.
   2774      * The Imagination P5600 processor is now supported using the
   2775        -march=p5600 command-line option.
   2776      * The Cavium Octeon3 processor is now supported using the
   2777        -march=octeon3 command-line option.
   2778      * MIPS Release 6 is now supported using the -mips32r6 and -mips64r6
   2779        command-line options.
   2780      * The o32 ABI has been modified and extended. The o32 64-bit
   2781        floating-point register support is now obsolete and has been
   2782        removed. It has been replaced by three ABI extensions FPXX, FP64A,
   2783        and FP64. The meaning of the -mfp64 command-line option has
   2784        changed. It is now used to enable the FP64A and FP64 ABI
   2785        extensions.
   2786           + The FPXX extension requires that code generated to access
   2787             double-precision values use even-numbered registers. Code that
   2788             adheres to this extension is link-compatible with all other
   2789             o32 double-precision ABI variants and will execute correctly
   2790             in all hardware FPU modes. The command-line options -mabi=32
   2791             -mfpxx can be used to enable this extension. MIPS II is the
   2792             minimum processor required.
   2793           + The o32 FP64A extension requires that floating-point registers
   2794             be 64-bit and odd-numbered single-precision registers are not
   2795             allowed. Code that adheres to the o32 FP64A variant is
   2796             link-compatible with all other o32 double-precision ABI
   2797             variants. The command-line options -mabi=32 -mfp64
   2798             -mno-odd-spreg can be used to enable this extension. MIPS32R2
   2799             is the minimum processor required.
   2800           + The o32 FP64 extension also requires that floating-point
   2801             registers be 64-bit, but permits the use of single-precision
   2802             registers. Code that adheres to the o32 FP64 variant is
   2803             link-compatible with o32 FPXX and o32 FP64A variants only,
   2804             i.e. it is not compatible with the original o32
   2805             double-precision ABI. The command-line options -mabi=32 -mfp64
   2806             -modd-spreg can be used to enable this extension. MIPS32R2 is
   2807             the minimum processor required.
   2808        The new ABI variants can be enabled by default using the configure
   2809        time options --with-fp-32=[32|xx|64] and --with(out)-odd-sp-reg-32.
   2810        It is strongly recommended that all vendors begin to set o32 FPXX
   2811        as the default ABI. This will be required to run the generated code
   2812        on MIPSR5 cores in conjunction with future MIPS SIMD (MSA) code and
   2813        MIPSR6 cores.
   2814      * GCC will now pass all floating-point options to the assembler if
   2815        GNU binutils 2.25 is used. As a result, any inline assembly code
   2816        that uses hard-float instructions should be amended to include a
   2817        .set directive to override the global assembler options when
   2818        compiling for soft-float targets.
   2819 
   2820   NDS32
   2821 
   2822      * The variadic function ABI implementation is now compatible with
   2823        past Andes toolchains where the caller uses registers to pass
   2824        arguments and the callee is in charge of pushing them on stack.
   2825      * The options -mforce-fp-as-gp, -mforbid-fp-as-gp, and -mex9 have
   2826        been removed since they are not yet available in the nds32 port of
   2827        GNU binutils.
   2828      * A new option -mcmodel=[small|medium|large] supports varied code
   2829        models on code generation. The -mgp-direct option became
   2830        meaningless and can be discarded.
   2831 
   2832   RX
   2833 
   2834      * A new command line option -mno-allow-string-insns can be used to
   2835        disable the generation of the SCMPU, SMOVU, SMOVB, SMOVF, SUNTIL,
   2836        SWHILE and RMPA instructions. An erratum released by Renesas shows
   2837        that it is unsafe to use these instructions on addresses within the
   2838        I/O space of the processor. The new option can be used when the
   2839        programmer is concerned that the I/O space might be accessed. The
   2840        default is still to enable these instructions.
   2841 
   2842   SH
   2843 
   2844      * The compiler will now pass the appropriate --isa= option to the
   2845        assembler.
   2846      * The default handling for the GBR has been changed from call
   2847        clobbered to call preserved. The old behavior can be reinstated by
   2848        specifying the option -fcall-used-gbr.
   2849      * Support for the SH4A fpchg instruction has been added which will be
   2850        utilized when switching between single and double precision FPU
   2851        modes.
   2852      * The compiler no longer uses the __fpscr_values array for switching
   2853        between single and double FPU precision modes on non-SH4A targets.
   2854        Instead mode switching will now be performed by storing, modifying
   2855        and reloading the FPSCR, so that other FPSCR bits are preserved
   2856        across mode switches. The __fpscr_values array that is defined in
   2857        libgcc is still present for backwards compatibility, but it will
   2858        not be referenced by compiler generated code anymore.
   2859      * New builtin functions __builtin_sh_get_fpscr and
   2860        __builtin_sh_set_fpscr have been added. The __builtin_sh_set_fpscr
   2861        function will mask the specified bits in such a way that the SZ, PR
   2862        and FR mode bits will be preserved, while changing the other bits.
   2863        These new functions do not reference the __fpscr_values array. The
   2864        old functions __set_fpscr and __get_fpscr in libgcc which access
   2865        the __fpscr_values array are still present for backwards
   2866        compatibility, but their usage is highly discouraged.
   2867      * Some improvements to code generated for __atomic built-in
   2868        functions.
   2869      * When compiling for SH2E the compiler will no longer force the usage
   2870        of delay slots for conditional branch instructions bt and bf. The
   2871        old behavior can be reinstated (e.g. to work around a hardware bug
   2872        in the original SH7055) by specifying the new option
   2873        -mcbranch-force-delay-slot.
   2874 
   2875 Operating Systems
   2876 
   2877   AIX
   2878 
   2879      * GCC now supports stabs debugging continuation lines to allow long
   2880        stabs debug information without overflow that generates AIX linker
   2881        errors.
   2882 
   2883   DragonFly BSD
   2884 
   2885      * GCC now supports the DragonFly BSD operating system.
   2886 
   2887   FreeBSD
   2888 
   2889      * GCC now supports the FreeBSD operating system for the arm port
   2890        through the arm*-*-freebsd* target triplets.
   2891 
   2892   VxWorks MILS
   2893 
   2894      * GCC now supports the MILS (Multiple Independent Levels of Security)
   2895        variant of WindRiver's VxWorks operating system for PowerPC
   2896        targets.
   2897 
   2898 Other significant improvements
   2899 
   2900      * The gcc-ar, gcc-nm, gcc-ranlib wrappers now understand a -B option
   2901        to set the compiler to use.
   2902 
   2903      * When the new command-line option -freport-bug is used, GCC
   2904        automatically generates a developer-friendly reproducer whenever an
   2905        internal compiler error is encountered.
   2906 
   2907                                     GCC 5.2
   2908 
   2909    This is the [41]list of problem reports (PRs) from GCC's bug tracking
   2910    system that are known to be fixed in the 5.2 release. This list might
   2911    not be complete (that is, it is possible that some PRs that have been
   2912    fixed are not listed here).
   2913 
   2914 Target Specific Changes
   2915 
   2916   IA-32/x86-64
   2917 
   2918      * Support for new AMD instructions monitorx and mwaitx has been
   2919        added. This includes new intrinsic and built-in support. It is
   2920        enabled through option -mmwaitx. The instructions monitorx and
   2921        mwaitx implement the same functionality as the old monitor and
   2922        mwait instructions. In addition mwaitx adds a configurable timer.
   2923        The timer value is received as third argument and stored in
   2924        register %ebx.
   2925 
   2926   S/390, System z, IBM z Systems
   2927 
   2928      * Support for the IBM z13 processor has been added. When using the
   2929        -march=z13 option, the compiler will generate code making use of
   2930        the new instructions and registers introduced with the vector
   2931        extension facility. The -mtune=z13 option enables z13 specific
   2932        instruction scheduling without making use of new instructions.
   2933        Compiling code with -march=z13 reduces the default alignment of
   2934        vector types bigger than 8 bytes to 8. This is an ABI change and
   2935        care must be taken when linking modules compiled with different
   2936        arch levels which interchange variables containing vector type
   2937        values. For newly compiled code the GNU linker will emit a warning.
   2938      * The -mzvector option enables a C/C++ language extension. This
   2939        extension provides a new keyword vector which can be used to define
   2940        vector type variables. (Note: This is not available when enforcing
   2941        strict standard compliance e.g. with -std=c99. Either enable GNU
   2942        extensions with e.g. -std=gnu99 or use __vector instead of vector.)
   2943        Additionally a set of overloaded builtins is provided which is
   2944        partially compatible to the PowerPC Altivec builtins. In order to
   2945        make use of these builtins the vecintrin.h header file needs to be
   2946        included.
   2947 
   2948                                     GCC 5.3
   2949 
   2950    This is the [42]list of problem reports (PRs) from GCC's bug tracking
   2951    system that are known to be fixed in the 5.3 release. This list might
   2952    not be complete (that is, it is possible that some PRs that have been
   2953    fixed are not listed here).
   2954 
   2955 Target Specific Changes
   2956 
   2957   IA-32/x86-64
   2958 
   2959      * GCC now supports the Intel CPU named Skylake with AVX-512
   2960        extensions through -march=skylake-avx512. The switch enables the
   2961        following ISA extensions: AVX-512F, AVX512VL, AVX-512CD, AVX-512BW,
   2962        AVX-512DQ.
   2963 
   2964   S/390, System z, IBM z Systems
   2965 
   2966      * With this version of GCC IBM z Systems support has been added to
   2967        the GO runtime environment. GCC 5.3 has proven to be able to
   2968        compile larger GO applications on IBM z Systems.
   2969 
   2970                                     GCC 5.4
   2971 
   2972    This is the [43]list of problem reports (PRs) from GCC's bug tracking
   2973    system that are known to be fixed in the 5.4 release. This list might
   2974    not be complete (that is, it is possible that some PRs that have been
   2975    fixed are not listed here).
   2976 
   2977                                     GCC 5.5
   2978 
   2979    This is the [44]list of problem reports (PRs) from GCC's bug tracking
   2980    system that are known to be fixed in the 5.5 release. This list might
   2981    not be complete (that is, it is possible that some PRs that have been
   2982    fixed are not listed here).
   2983 
   2984 Target Specific Changes
   2985 
   2986   IA-32/x86-64
   2987 
   2988      * Support for the [45]deprecated pcommit instruction has been
   2989        removed.
   2990 
   2991 
   2992     For questions related to the use of GCC, please consult these web
   2993     pages and the [46]GCC manuals. If that fails, the
   2994     [47]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   2995     web pages and the development of GCC are welcome on our developer
   2996     list at [48]gcc (a] gcc.gnu.org. All of [49]our lists have public
   2997     archives.
   2998 
   2999    Copyright (C) [50]Free Software Foundation, Inc. Verbatim copying and
   3000    distribution of this entire article is permitted in any medium,
   3001    provided this notice is preserved.
   3002 
   3003    These pages are [51]maintained by the GCC team. Last modified
   3004    2018-09-30[52].
   3005 
   3006 References
   3007 
   3008    1. http://gcc.gnu.org/gcc-5/changes.html#libstdcxx
   3009    2. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
   3010    3. https://savannah.nongnu.org/bugs/?44574
   3011    4. https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler
   3012    5. https://www.openmp.org/wp-content/uploads/OpenMP4.0.0.pdf
   3013    6. https://www.openmp.org/wp-content/uploads/OpenMP4.0.0.Examples.pdf
   3014    7. https://gcc.gnu.org/wiki/OpenACC
   3015    8. https://gcc.gnu.org/install/configure.html
   3016    9. https://www.cilkplus.org/
   3017   10. https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations
   3018   11. http://gcc.gnu.org/projects/cxx1y.html
   3019   12. https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations
   3020   13. http://gcc.gnu.org/projects/cxx1y.html
   3021   14. http://gcc.gnu.org/projects/cxx1y.html
   3022   15. http://gcc.gnu.org/projects/cxx1y.html
   3023   16. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3639.html
   3024   17. http://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html
   3025   18. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2011
   3026   19. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2014
   3027   20. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2014
   3028   21. https://sourceware.org/gdb/current/onlinedocs/gdb/Xmethods-In-Python.html
   3029   22. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gfortran/Error-and-Warning-Options.html
   3030   23. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/Language-Independent-Options.html
   3031   24. https://gcc.gnu.org/install/configure.html
   3032   25. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gfortran/Thread-safety-of-the-runtime-library.html
   3033   26. https://gcc.gnu.org/wiki/Fortran2003Status
   3034   27. https://gcc.gnu.org/wiki/Fortran2008Status
   3035   28. https://gcc.gnu.org/wiki/Coarray
   3036   29. http://www.opencoarrays.org/
   3037   30. https://golang.org/cmd/go/
   3038   31. https://golang.org/cmd/gofmt/
   3039   32. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/index.html
   3040   33. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/cp/index.html
   3041   34. https://github.com/davidmalcolm/pygccjit
   3042   35. https://github.com/ibuclaw/gccjitd
   3043   36. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/tutorial04.html
   3044   37. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/tutorial05.html
   3045   38. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
   3046   39. https://gcc.gnu.org/onlinedocs/gcc/Named-Address-Spaces.html
   3047   40. https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf
   3048   41. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.2
   3049   42. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.3
   3050   43. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.4
   3051   44. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.5
   3052   45. https://software.intel.com/en-us/blogs/2016/09/12/deprecate-pcommit-instruction
   3053   46. https://gcc.gnu.org/onlinedocs/
   3054   47. mailto:gcc-help (a] gcc.gnu.org
   3055   48. mailto:gcc (a] gcc.gnu.org
   3056   49. https://gcc.gnu.org/lists.html
   3057   50. https://www.fsf.org/
   3058   51. https://gcc.gnu.org/about.html
   3059   52. http://validator.w3.org/check/referer
   3060 ======================================================================
   3061 http://gcc.gnu.org/gcc-4.9/index.html
   3062 
   3063                              GCC 4.9 Release Series
   3064 
   3065    Aug 3, 2016
   3066 
   3067    The [1]GNU project and the GCC developers are pleased to announce the
   3068    release of GCC 4.9.4.
   3069 
   3070    This release is a bug-fix release, containing fixes for regressions in
   3071    GCC 4.9.3 relative to previous releases of GCC.
   3072 
   3073    This release series is no longer maintained.
   3074 
   3075 Release History
   3076 
   3077    GCC 4.9.4
   3078           Aug 3, 2016 ([2]changes, [3]documentation)
   3079 
   3080    GCC 4.9.3
   3081           June 26, 2015 ([4]changes, [5]documentation)
   3082 
   3083    GCC 4.9.2
   3084           October 30, 2014 ([6]changes, [7]documentation)
   3085 
   3086    GCC 4.9.1
   3087           July 16, 2014 ([8]changes, [9]documentation)
   3088 
   3089    GCC 4.9.0
   3090           April 22, 2014 ([10]changes, [11]documentation)
   3091 
   3092 References and Acknowledgements
   3093 
   3094    GCC used to stand for the GNU C Compiler, but since the compiler
   3095    supports several other languages aside from C, it now stands for the
   3096    GNU Compiler Collection.
   3097 
   3098    A list of [12]successful builds is updated as new information becomes
   3099    available.
   3100 
   3101    The GCC developers would like to thank the numerous people that have
   3102    contributed new features, improvements, bug fixes, and other changes as
   3103    well as test results to GCC. This [13]amazing group of volunteers is
   3104    what makes GCC successful.
   3105 
   3106    For additional information about GCC please refer to the [14]GCC
   3107    project web site or contact the [15]GCC development mailing list.
   3108 
   3109    To obtain GCC please use [16]our mirror sites or [17]our SVN server.
   3110 
   3111 
   3112     For questions related to the use of GCC, please consult these web
   3113     pages and the [18]GCC manuals. If that fails, the
   3114     [19]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   3115     web pages and the development of GCC are welcome on our developer
   3116     list at [20]gcc (a] gcc.gnu.org. All of [21]our lists have public
   3117     archives.
   3118 
   3119    Copyright (C) [22]Free Software Foundation, Inc. Verbatim copying and
   3120    distribution of this entire article is permitted in any medium,
   3121    provided this notice is preserved.
   3122 
   3123    These pages are [23]maintained by the GCC team. Last modified
   3124    2018-09-30[24].
   3125 
   3126 References
   3127 
   3128    1. http://www.gnu.org/
   3129    2. http://gcc.gnu.org/gcc-4.9/changes.html
   3130    3. http://gcc.gnu.org/onlinedocs/4.9.4/
   3131    4. http://gcc.gnu.org/gcc-4.9/changes.html
   3132    5. http://gcc.gnu.org/onlinedocs/4.9.3/
   3133    6. http://gcc.gnu.org/gcc-4.9/changes.html
   3134    7. http://gcc.gnu.org/onlinedocs/4.9.2/
   3135    8. http://gcc.gnu.org/gcc-4.9/changes.html
   3136    9. http://gcc.gnu.org/onlinedocs/4.9.1/
   3137   10. http://gcc.gnu.org/gcc-4.9/changes.html
   3138   11. https://gcc.gnu.org/onlinedocs/4.9.0/
   3139   12. http://gcc.gnu.org/gcc-4.9/buildstat.html
   3140   13. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   3141   14. http://gcc.gnu.org/index.html
   3142   15. mailto:gcc (a] gcc.gnu.org
   3143   16. http://gcc.gnu.org/mirrors.html
   3144   17. http://gcc.gnu.org/svn.html
   3145   18. https://gcc.gnu.org/onlinedocs/
   3146   19. mailto:gcc-help (a] gcc.gnu.org
   3147   20. mailto:gcc (a] gcc.gnu.org
   3148   21. https://gcc.gnu.org/lists.html
   3149   22. https://www.fsf.org/
   3150   23. https://gcc.gnu.org/about.html
   3151   24. http://validator.w3.org/check/referer
   3152 ======================================================================
   3153 http://gcc.gnu.org/gcc-4.9/changes.html
   3154 
   3155                              GCC 4.9 Release Series
   3156                         Changes, New Features, and Fixes
   3157 
   3158 Caveats
   3159 
   3160      * The mudflap run time checker has been removed. The mudflap options
   3161        remain, but do nothing.
   3162      * Support for a number of older systems and recently unmaintained or
   3163        untested target ports of GCC has been declared obsolete in GCC 4.9.
   3164        Unless there is activity to revive them, the next release of GCC
   3165        will have their sources permanently removed.
   3166        The following ports for individual systems on particular
   3167        architectures have been obsoleted:
   3168           + Solaris 9 (*-*-solaris2.9). Details can be found in the
   3169             [1]announcement.
   3170      * On AArch64, the singleton vector types int64x1_t, uint64x1_t and
   3171        float64x1_t exported by arm_neon.h are defined to be the same as
   3172        their base types. This results in incorrect application of
   3173        parameter passing rules to arguments of types int64x1_t and
   3174        uint64x1_t, with respect to the AAPCS64 ABI specification. In
   3175        addition, names of C++ functions with parameters of these types
   3176        (including float64x1_t) are not mangled correctly. The current
   3177        typedef declarations also unintentionally allow implicit casting
   3178        between singleton vector types and their base types. These issues
   3179        will be resolved in a near future release. See [2]PR60825 for more
   3180        information.
   3181 
   3182    More information on porting to GCC 4.9 from previous versions of GCC
   3183    can be found in the [3]porting guide for this release.
   3184 
   3185 General Optimizer Improvements
   3186 
   3187      * AddressSanitizer, a fast memory error detector, is now available on
   3188        ARM.
   3189      * UndefinedBehaviorSanitizer (ubsan), a fast undefined behavior
   3190        detector, has been added and can be enabled via
   3191        -fsanitize=undefined. Various computations will be instrumented to
   3192        detect undefined behavior at runtime. UndefinedBehaviorSanitizer is
   3193        currently available for the C and C++ languages.
   3194      * Link-time optimization (LTO) improvements:
   3195           + Type merging was rewritten. The new implementation is
   3196             significantly faster and uses less memory.
   3197           + Better partitioning algorithm resulting in less streaming
   3198             during link time.
   3199           + Early removal of virtual methods reduces the size of object
   3200             files and improves link-time memory usage and compile time.
   3201           + Function bodies are now loaded on-demand and released early
   3202             improving overall memory usage at link time.
   3203           + C++ hidden keyed methods can now be optimized out.
   3204           + When using a linker plugin, compiling with the -flto option
   3205             now generates slim object files (.o) which only contain
   3206             intermediate language representation for LTO. Use
   3207             -ffat-lto-objects to create files which contain additionally
   3208             the object code. To generate static libraries suitable for LTO
   3209             processing, use gcc-ar and gcc-ranlib; to list symbols from a
   3210             slim object file use gcc-nm. (This requires that ar, ranlib
   3211             and nm have been compiled with plugin support.)
   3212        Memory usage building Firefox with debug enabled was reduced from
   3213        15GB to 3.5GB; link time from 1700 seconds to 350 seconds.
   3214      * Inter-procedural optimization improvements:
   3215           + New type inheritance analysis module improving
   3216             devirtualization. Devirtualization now takes into account
   3217             anonymous name-spaces and the C++11 final keyword.
   3218           + New speculative devirtualization pass (controlled by
   3219             -fdevirtualize-speculatively.
   3220           + Calls that were speculatively made direct are turned back to
   3221             indirect where direct call is not cheaper.
   3222           + Local aliases are introduced for symbols that are known to be
   3223             semantically equivalent across shared libraries improving
   3224             dynamic linking times.
   3225      * Feedback directed optimization improvements:
   3226           + Profiling of programs using C++ inline functions is now more
   3227             reliable.
   3228           + New time profiling determines typical order in which functions
   3229             are executed.
   3230           + A new function reordering pass (controlled by
   3231             -freorder-functions) significantly reduces startup time of
   3232             large applications. Until binutils support is completed, it is
   3233             effective only with link-time optimization.
   3234           + Feedback driven indirect call removal and devirtualization now
   3235             handle cross-module calls when link-time optimization is
   3236             enabled.
   3237 
   3238 New Languages and Language specific improvements
   3239 
   3240      * Version 4.0 of the [4]OpenMP specification is now supported in the
   3241        C and C++ compilers and starting with the 4.9.1 release also in the
   3242        Fortran compiler. The new -fopenmp-simd option can be used to
   3243        enable OpenMP's SIMD directives while ignoring other OpenMP
   3244        directives. The new [5]-fsimd-cost-model= option permits to tune
   3245        the vectorization cost model for loops annotated with OpenMP and
   3246        Cilk Plus simd directives. -Wopenmp-simd warns when the current
   3247        cost model overrides simd directives set by the user.
   3248      * The -Wdate-time option has been added for the C, C++ and Fortran
   3249        compilers, which warns when the __DATE__, __TIME__ or __TIMESTAMP__
   3250        macros are used. Those macros might prevent bit-wise-identical
   3251        reproducible compilations.
   3252 
   3253   Ada
   3254 
   3255      * GNAT switched to Ada 2012 instead of Ada 2005 by default.
   3256 
   3257   C family
   3258 
   3259      * Support for colorizing diagnostics emitted by GCC has been added.
   3260        The [6]-fdiagnostics-color=auto will enable it when outputting to
   3261        terminals, -fdiagnostics-color=always unconditionally. The
   3262        GCC_COLORS environment variable can be used to customize the colors
   3263        or disable coloring. If GCC_COLORS variable is present in the
   3264        environment, the default is -fdiagnostics-color=auto, otherwise
   3265        -fdiagnostics-color=never.
   3266        Sample diagnostics output:
   3267     $ g++ -fdiagnostics-color=always -S -Wall test.C
   3268     test.C: In function `int foo()':
   3269     test.C:1:14: warning: no return statement in function returning non-void [-W
   3270 return-type]
   3271      int foo () { }
   3272                   ^
   3273     test.C:2:46: error: template instantiation depth exceeds maximum of 900 (use
   3274  -ftemplate-depth= to increase the maximum) instantiating `struct X<100>'
   3275      template <int N> struct X { static const int value = X<N-1>::value; }; temp
   3276 late struct X<1000>;
   3277                                                   ^
   3278     test.C:2:46:   recursively required from `const int X<999>::value'
   3279     test.C:2:46:   required from `const int X<1000>::value'
   3280     test.C:2:88:   required from here
   3281 
   3282     test.C:2:46: error: incomplete type `X<100>' used in nested name specifier
   3283 
   3284      * With the new [7]#pragma GCC ivdep, the user can assert that there
   3285        are no loop-carried dependencies which would prevent concurrent
   3286        execution of consecutive iterations using SIMD (single instruction
   3287        multiple data) instructions.
   3288      * Support for [8]Cilk Plus has been added and can be enabled with the
   3289        -fcilkplus option. Cilk Plus is an extension to the C and C++
   3290        languages to support data and task parallelism. The present
   3291        implementation follows ABI version 1.2; all features but _Cilk_for
   3292        have been implemented.
   3293 
   3294   C
   3295 
   3296      * ISO C11 atomics (the _Atomic type specifier and qualifier and the
   3297        <stdatomic.h> header) are now supported.
   3298      * ISO C11 generic selections (_Generic keyword) are now supported.
   3299      * ISO C11 thread-local storage (_Thread_local, similar to GNU C
   3300        __thread) is now supported.
   3301      * ISO C11 support is now at a similar level of completeness to ISO
   3302        C99 support: substantially complete modulo bugs, extended
   3303        identifiers (supported except for corner cases when
   3304        -fextended-identifiers is used), floating-point issues (mainly but
   3305        not entirely relating to optional C99 features from Annexes F and
   3306        G) and the optional Annexes K (Bounds-checking interfaces) and L
   3307        (Analyzability).
   3308      * A new C extension __auto_type provides a subset of the
   3309        functionality of C++11 auto in GNU C.
   3310 
   3311   C++
   3312 
   3313      * The G++ implementation of [9]C++1y return type deduction for normal
   3314        functions has been updated to conform to [10]N3638, the proposal
   3315        accepted into the working paper. Most notably, it adds
   3316        decltype(auto) for getting decltype semantics rather than the
   3317        template argument deduction semantics of plain auto:
   3318 
   3319 int& f();
   3320          auto  i1 = f(); // int
   3321 decltype(auto) i2 = f(); // int&
   3322 
   3323      * G++ supports [11]C++1y lambda capture initializers:
   3324 
   3325 [x = 42]{ ... };
   3326 
   3327        Actually, they have been accepted since GCC 4.5, but now the
   3328        compiler doesn't warn about them with -std=c++1y, and supports
   3329        parenthesized and brace-enclosed initializers as well.
   3330      * G++ supports [12]C++1y variable length arrays. G++ has supported
   3331        GNU/C99-style VLAs for a long time, but now additionally supports
   3332        initializers and lambda capture by reference. In C++1y mode G++
   3333        will complain about VLA uses that are not permitted by the draft
   3334        standard, such as forming a pointer to VLA type or applying sizeof
   3335        to a VLA variable. Note that it now appears that VLAs will not be
   3336        part of C++14, but will be part of a separate document and then
   3337        perhaps C++17.
   3338 
   3339 void f(int n) {
   3340   int a[n] = { 1, 2, 3 }; // throws std::bad_array_length if n < 3
   3341   [&a]{ for (int i : a) { cout << i << endl; } }();
   3342   &a; // error, taking address of VLA
   3343 }
   3344 
   3345      * G++ supports the [13]C++1y [[deprecated]] attribute modulo bugs in
   3346        the underlying [[gnu::deprecated]] attribute. Classes and functions
   3347        can be marked deprecated and a diagnostic message added:
   3348 
   3349 class A;
   3350 int bar(int n);
   3351 #if __cplusplus > 201103
   3352 class [[deprecated("A is deprecated in C++14; Use B instead")]] A;
   3353 [[deprecated("bar is unsafe; use foo() instead")]]
   3354 int bar(int n);
   3355 
   3356 int foo(int n);
   3357 class B;
   3358 #endif
   3359 A aa; // warning: 'A' is deprecated : A is deprecated in C++14; Use B instead
   3360 int j = bar(2); // warning: 'int bar(int)' is deprecated : bar is unsafe; use fo
   3361 o() instead
   3362 
   3363      * G++ supports [14]C++1y digit separators. Long numeric literals can
   3364        be subdivided with a single quote ' to enhance readability:
   3365 
   3366 int i = 1048576;
   3367 int j = 1'048'576;
   3368 int k = 0x10'0000;
   3369 int m = 0'004'000'000;
   3370 int n = 0b0001'0000'0000'0000'0000'0000;
   3371 
   3372 double x = 1.602'176'565e-19;
   3373 double y = 1.602'176'565e-1'9;
   3374 
   3375      * G++ supports [15]C++1y generic (polymorphic) lambdas.
   3376 
   3377 // a functional object that will increment any type
   3378 auto incr = [](auto x) { return x++; };
   3379 
   3380      * As a GNU extension, G++ supports explicit template parameter syntax
   3381        for generic lambdas. This can be combined in the expected way with
   3382        the standard auto syntax.
   3383 
   3384 // a functional object that will add two like-type objects
   3385 auto add = [] <typename T> (T a, T b) { return a + b; };
   3386 
   3387      * G++ supports unconstrained generic functions as specified by
   3388        S:4.1.2 and S:5.1.1 of [16]N3889: Concepts Lite Specification.
   3389        Briefly, auto may be used as a type-specifier in a parameter
   3390        declaration of any function declarator in order to introduce an
   3391        implicit function template parameter, akin to generic lambdas.
   3392 
   3393 // the following two function declarations are equivalent
   3394 auto incr(auto x) { return x++; }
   3395 template <typename T>
   3396 auto incr(T x) { return x++; }
   3397 
   3398     Runtime Library (libstdc++)
   3399 
   3400      * [17]Improved support for C++11, including:
   3401           + support for <regex>;
   3402           + The associative containers in <map> and <set> and the
   3403             unordered associative containers in <unordered_map> and
   3404             <unordered_set> meet the allocator-aware container
   3405             requirements;
   3406      * [18]Improved experimental support for the upcoming ISO C++
   3407        standard, C++14, including:
   3408           + fixing constexpr member functions without const;
   3409           + implementation of the std::exchange() utility function;
   3410           + addressing tuples by type;
   3411           + implemention of std::make_unique;
   3412           + implemention of std::shared_lock;
   3413           + making std::result_of SFINAE-friendly;
   3414           + adding operator() to std::integral_constant;
   3415           + adding user-defined literals for standard library types
   3416             std::basic_string, std::chrono::duration, and std::complex;
   3417           + adding two range overloads to non-modifying sequence oprations
   3418             std::equal and std::mismatch;
   3419           + adding IO manipulators for quoted strings;
   3420           + adding constexpr members to <utility>, <complex>, <chrono>,
   3421             and some containers;
   3422           + adding compile-time std::integer_sequence;
   3423           + adding cleaner transformation traits;
   3424           + making <functional>s operator functors easier to use and more
   3425             generic;
   3426      * An implementation of std::experimental::optional.
   3427      * An implementation of std::experimental::string_view.
   3428      * The non-standard function std::copy_exception has been deprecated
   3429        and will be removed in a future version. std::make_exception_ptr
   3430        should be used instead.
   3431 
   3432   Fortran
   3433 
   3434      * Compatibility notice:
   3435           + Module files: The version of the module files (.mod) has been
   3436             incremented; additionally, module files are now compressed.
   3437             Fortran MODULEs compiled by earlier GCC versions have to be
   3438             recompiled, when they are USEd by files compiled with GCC 4.9.
   3439             GCC 4.9 is not able to read .mod files of earlier GCC
   3440             versions; attempting to do so gives an error message. Note:
   3441             The ABI of the produced assembler data itself has not changed:
   3442             object files and libraries are fully compatible with older
   3443             versions (except as stated below).
   3444           + ABI changes:
   3445                o The [19]argument passing ABI has changed for scalar dummy
   3446                  arguments of type INTEGER, REAL, COMPLEX and LOGICAL,
   3447                  which have both the VALUE and the OPTIONAL attributes.
   3448                o To support finalization the virtual table associated with
   3449                  polymorphic variables has changed. Code containing CLASS
   3450                  should be recompiled, including all files which define
   3451                  derived types involved in the type definition used by
   3452                  polymorphic variables. (Note: Due to the incremented
   3453                  module version, trying to mix old code with new code will
   3454                  usually give an error message.)
   3455           + GNU Fortran no longer deallocates allocatable variables or
   3456             allocatable components of variables declared in the main
   3457             program. Since Fortran 2008, the standard explicitly states
   3458             that variables declared in the Fortran main program
   3459             automatically have the SAVE attribute.
   3460           + When opening files, the close-on-exec flag is set if the
   3461             system supports such a feature. This is generally considered
   3462             good practice these days, but if there is a need to pass file
   3463             descriptors to child processes the parent process must now
   3464             remember to clear the close-on-exec flag by calling fcntl(),
   3465             e.g. via ISO_C_BINDING, before executing the child process.
   3466      * The deprecated command-line option -fno-whole-file has been
   3467        removed. (-fwhole-file is the default since GCC 4.6.)
   3468        -fwhole-file/-fno-whole-file continue to be accepted but do not
   3469        influence the code generation.
   3470      * The compiler no longer unconditionally warns about DO loops with
   3471        zero iterations. This warning is now controlled by the -Wzerotrip
   3472        option, which is implied by -Wall.
   3473      * The new NO_ARG_CHECK attribute of the [20]!GCC$ directive can be
   3474        used to disable the type-kind-rank (TKR) argument check for a dummy
   3475        argument. The feature is similar to ISO/IEC TS 29133:2012's
   3476        TYPE(*), except that it additionally also disables the rank check.
   3477        Variables with NO_ARG_CHECK have to be dummy arguments and may only
   3478        be used as argument to ISO_C_BINDING's C_LOC and as actual argument
   3479        to another NO_ARG_CHECK dummy argument; also the other constraints
   3480        of TYPE(*) apply. The dummy arguments should be declared as scalar
   3481        or assumed-size variable of type type(*) (recommended) - or of type
   3482        integer, real, complex or logical. With NO_ARG_CHECK, a pointer to
   3483        the data without further type or shape information is passed,
   3484        similar to C's void*. Note that also TS 29113's
   3485        type(*),dimension(..) accepts arguments of any type and rank;
   3486        contrary to NO_ARG_CHECK assumed-rank arguments pass an array
   3487        descriptor which contains the array shape and stride of the
   3488        argument.
   3489      * [21]Fortran 2003:
   3490           + Finalization is now supported. It is currently only done for a
   3491             subset of those situations in which it should occur.
   3492           + Experimental support for scalar character components with
   3493             deferred length (i.e. allocatable string length) in derived
   3494             types has been added. (Deferred-length character variables are
   3495             supported since GCC 4.6.)
   3496      * [22]Fortran 2008:
   3497           + When STOP or ERROR STOP are used to terminate the execution
   3498             and any exception (but inexact) is signaling, a warning is
   3499             printed to ERROR_UNIT, indicating which exceptions are
   3500             signaling. The [23]-ffpe-summary= command-line option can be
   3501             used to fine-tune for which exceptions the warning should be
   3502             shown.
   3503           + Rounding on input (READ) is now handled on systems where
   3504             strtod honours the rounding mode. (For output, rounding is
   3505             supported since GCC 4.5.) Note that for input, the compatible
   3506             rounding mode is handled as nearest (i.e., rounding to an even
   3507             least significant [cf. IEC 60559:1989] for a tie, while
   3508             compatible rounds away from zero in that case).
   3509 
   3510   Go
   3511 
   3512      * GCC 4.9 provides a complete implementation of the Go 1.2.1 release.
   3513 
   3514 New Targets and Target Specific Improvements
   3515 
   3516   AArch64
   3517 
   3518      * The ARMv8-A crypto and CRC instructions are now supported through
   3519        intrinsics. These are enabled when the architecture supports these
   3520        and are available through the -march=armv8-a+crc and
   3521        -march=armv8-a+crypto options.
   3522      * Initial support for ILP32 has now been added to the compiler. This
   3523        is now available through the command-line option -mabi=ilp32.
   3524        Support for ILP32 is considered experimental as the ABI
   3525        specification is still beta.
   3526      * Coverage of more of the ISA including the SIMD extensions has been
   3527        added. The Advanced SIMD intrinsics have also been improved.
   3528      * The new local register allocator (LRA) is now on by default for the
   3529        AArch64 backend.
   3530      * The REE (Redundant extension elimination) pass has now been enabled
   3531        by default for the AArch64 backend.
   3532      * Tuning for the Cortex-A53 and Cortex-A57 has been improved.
   3533      * Initial big.LITTLE tuning support for the combination of Cortex-A57
   3534        and Cortex-A53 was added through the -mcpu=cortex-a57.cortex-a53
   3535        option.
   3536      * A number of structural changes have been made to both the ARM and
   3537        AArch64 backends to facilitate improved code-generation.
   3538      * As of GCC 4.9.2 a workaround for the ARM Cortex-A53 erratum 835769
   3539        has been added and can be enabled by giving the
   3540        -mfix-cortex-a53-835769 option. Alternatively it can be enabled by
   3541        default by configuring GCC with the --enable-fix-cortex-a53-835769
   3542        option.
   3543 
   3544   ARC
   3545 
   3546      * A port for Synopsys Designware ARC has been contributed by Embecosm
   3547        and Synopsys Inc.
   3548 
   3549   ARM
   3550 
   3551      * Use of Advanced SIMD (Neon) for 64-bit scalar computations has been
   3552        disabled by default. This was found to generate better code in only
   3553        a small number of cases. It can be turned back on with the
   3554        -mneon-for-64bits option.
   3555      * Further support for the ARMv8-A architecture, notably implementing
   3556        the restriction around IT blocks in the Thumb32 instruction set has
   3557        been added. The -mrestrict-it option can be used with
   3558        -march=armv7-a or the -march=armv7ve options to make code
   3559        generation fully compatible with the deprecated instructions in
   3560        ARMv8-A.
   3561      * Support has now been added for the ARMv7ve variant of the
   3562        architecture. This can be used by the -march=armv7ve option.
   3563      * The ARMv8-A crypto and CRC instructions are now supported through
   3564        intrinsics and are available through the -march=armv8-a+crc and
   3565        mfpu=crypto-neon-fp-armv8 options.
   3566      * LRA is now on by default for the ARM target. This can be turned off
   3567        using the -mno-lra option. This option is a purely transitionary
   3568        command-line option and will be removed in a future release. We are
   3569        interested in any bug reports regarding functional and performance
   3570        regressions with LRA.
   3571      * A new option -mslow-flash-data to improve performance of programs
   3572        fetching data on slow flash memory has now been introduced for the
   3573        ARMv7-M profile cores.
   3574      * A new option -mpic-data-is-text-relative for targets that allows
   3575        data segments to be relative to text segments has been added. This
   3576        is on by default for all targets except VxWorks RTP.
   3577      * A number of infrastructural changes have been made to both the ARM
   3578        and AArch64 backends to facilitate improved code-generation.
   3579      * GCC now supports Cortex-A12 and the Cortex-R7 through the
   3580        -mcpu=cortex-a12 and -mcpu=cortex-r7 options.
   3581      * GCC now has tuning for the Cortex-A57 and Cortex-A53 through the
   3582        -mcpu=cortex-a57 and -mcpu=cortex-a53 options.
   3583      * Initial big.LITTLE tuning support for the combination of Cortex-A57
   3584        and Cortex-A53 was added through the -mcpu=cortex-a57.cortex-a53
   3585        option. Similar support was added for the combination of Cortex-A15
   3586        and Cortex-A7 through the -mcpu=cortex-a15.cortex-a7 option.
   3587      * Further performance optimizations for the Cortex-A15 and the
   3588        Cortex-M4 have been added.
   3589      * A number of code generation improvements for Thumb2 to reduce code
   3590        size when compiling for the M-profile processors.
   3591 
   3592   AVR
   3593 
   3594      * A new command-line option -mfract-convert-truncate has been added.
   3595        It allows compiler to use truncation instead of rounding towards
   3596        zero for fractional fixed-point types.
   3597 
   3598   IA-32/x86-64
   3599 
   3600      * -mfpmath=sse is now implied by -ffast-math on all targets where
   3601        SSE2 is supported.
   3602      * Intel AVX-512 support was added to GCC. That includes inline
   3603        assembly support, new registers and extending existing ones, new
   3604        intrinsics (covered by corresponding testsuite), and basic
   3605        autovectorization. AVX-512 instructions are available via the
   3606        following GCC switches: AVX-512 foundation instructions: -mavx512f,
   3607        AVX-512 prefetch instructions: -mavx512pf, AVX-512 exponential and
   3608        reciprocal instructions: -mavx512er, AVX-512 conflict detection
   3609        instructions: -mavx512cd.
   3610      * It is now possible to call x86 intrinsics from select functions in
   3611        a file that are tagged with the corresponding target attribute
   3612        without having to compile the entire file with the -mxxx option.
   3613        This improves the usability of x86 intrinsics and is particularly
   3614        useful when doing [24]Function Multiversioning.
   3615      * GCC now supports the new Intel microarchitecture named Silvermont
   3616        through -march=silvermont.
   3617      * GCC now supports the new Intel microarchitecture named Broadwell
   3618        through -march=broadwell.
   3619      * Optimizing for other Intel microarchitectures have been renamed to
   3620        -march=nehalem, westmere, sandybridge, ivybridge, haswell, bonnell.
   3621      * -march=generic has been retuned for better support of Intel core
   3622        and AMD Bulldozer architectures. Performance of AMD K7, K8, Intel
   3623        Pentium-M, and Pentium4 based CPUs is no longer considered
   3624        important for generic.
   3625      * -mtune=intel can now be used to generate code running well on the
   3626        most current Intel processors, which are Haswell and Silvermont for
   3627        GCC 4.9.
   3628      * Support to encode 32-bit assembly instructions in 16-bit format is
   3629        now available through the -m16 command-line option.
   3630      * Better inlining of memcpy and memset that is aware of value ranges
   3631        and produces shorter alignment prologues.
   3632      * -mno-accumulate-outgoing-args is now honored when unwind
   3633        information is output. Argument accumulation is also now turned off
   3634        for portions of programs optimized for size.
   3635      * Support for new AMD family 15h processors (Excavator core) is now
   3636        available through the -march=bdver4 and -mtune=bdver4 options.
   3637 
   3638   MSP430
   3639 
   3640      * A new command-line option -mcpu= has been added to the MSP430
   3641        backend. This option is used to specify the ISA to be used.
   3642        Accepted values are msp430 (the default), msp430x and msp430xv2.
   3643        The ISA is no longer deduced from the -mmcu= option as there are
   3644        far too many different MCU names. The -mmcu= option is still
   3645        supported, and this is still used to select linker scripts and
   3646        generate a C preprocessor symbol that will be recognised by the
   3647        msp430.h header file.
   3648 
   3649   NDS32
   3650 
   3651      * A new nds32 port supports the 32-bit architecture from Andes
   3652        Technology Corporation.
   3653      * The port provides initial support for the V2, V3, V3m instruction
   3654        set architectures.
   3655 
   3656   Nios II
   3657 
   3658      * A port for the Altera Nios II has been contributed by Mentor
   3659        Graphics.
   3660 
   3661   PowerPC / PowerPC64 / RS6000
   3662 
   3663      * GCC now supports Power ISA 2.07, which includes support for
   3664        Hardware Transactional Memory (HTM), Quadword atomics and several
   3665        VMX and VSX additions, including Crypto, 64-bit integer, 128-bit
   3666        integer and decimal integer operations.
   3667      * Support for the POWER8 processor is now available through the
   3668        -mcpu=power8 and -mtune=power8 options.
   3669      * The libitm library has been modified to add a HTM fastpath that
   3670        automatically uses POWER's HTM hardware instructions when it is
   3671        executing on a HTM enabled processor.
   3672      * Support for the new powerpc64le-linux platform has been added. It
   3673        defaults to generating code that conforms to the ELFV2 ABI.
   3674 
   3675   S/390, System z
   3676 
   3677      * Support for the Transactional Execution Facility included with the
   3678        IBM zEnterprise zEC12 processor has been added. A set of GCC style
   3679        builtins as well as XLC style builtins are provided. The builtins
   3680        are enabled by default when using the -march=zEC12 option but can
   3681        explicitly be disabled with -mno-htm. Using the GCC builtins also
   3682        libitm supports hardware transactions on S/390.
   3683      * The hotpatch features allows to prepare functions for hotpatching.
   3684        A certain amount of bytes is reserved before the function entry
   3685        label plus a NOP is inserted at its very beginning to implement a
   3686        backward jump when applying a patch. The feature can either be
   3687        enabled per compilation unit via the command-line option -mhotpatch
   3688        or per function using the hotpatch attribute.
   3689      * The shrink wrap optimization is now supported on S/390 and enabled
   3690        by default.
   3691      * A major rework of the routines to determine which registers need to
   3692        be saved and restored in function prologue/epilogue now allow to
   3693        use floating point registers as save slots. This will happen for
   3694        certain leaf function with -march=z10 or higher.
   3695      * The LRA rtl pass replaces reload by default on S/390.
   3696 
   3697   RX
   3698 
   3699      * The port now allows to specify the RX100, RX200, and RX600
   3700        processors with the command-line options -mcpu=rx100, -mcpu=rx200
   3701        and -mcpu=rx600.
   3702 
   3703   SH
   3704 
   3705      * Minor improvements to code generated for integer arithmetic and
   3706        code that involves the T bit.
   3707      * Added support for the SH2A clips and clipu instructions. The
   3708        compiler will now try to utilize them for min/max expressions such
   3709        as max (-128, min (127, x)).
   3710      * Added support for the cmp/str instruction through built-in
   3711        functions such as __builtin_strlen. When not optimizing for size,
   3712        the compiler will now expand calls to e.g. strlen as an inlined
   3713        sequences which utilize the cmp/str instruction.
   3714      * Improved code generated around volatile memory loads and stores.
   3715      * The option -mcbranchdi has been deprecated. Specifying it will
   3716        result in a warning and will not influence code generation.
   3717      * The option -mcmpeqdi has been deprecated. Specifying it will result
   3718        in a warning and will not influence code generation.
   3719 
   3720 GCC 4.9.1
   3721 
   3722    This is the [25]list of problem reports (PRs) from GCC's bug tracking
   3723    system that are known to be fixed in the 4.9.1 release. This list might
   3724    not be complete (that is, it is possible that some PRs that have been
   3725    fixed are not listed here).
   3726 
   3727    Version 4.0 of the OpenMP specification is supported even in Fortran,
   3728    not just C and C++.
   3729 
   3730 GCC 4.9.2
   3731 
   3732    This is the [26]list of problem reports (PRs) from GCC's bug tracking
   3733    system that are known to be fixed in the 4.9.2 release. This list might
   3734    not be complete (that is, it is possible that some PRs that have been
   3735    fixed are not listed here).
   3736 
   3737 GCC 4.9.3
   3738 
   3739    This is the [27]list of problem reports (PRs) from GCC's bug tracking
   3740    system that are known to be fixed in the 4.9.3 release. This list might
   3741    not be complete (that is, it is possible that some PRs that have been
   3742    fixed are not listed here).
   3743 
   3744 GCC 4.9.4
   3745 
   3746    This is the [28]list of problem reports (PRs) from GCC's bug tracking
   3747    system that are known to be fixed in the 4.9.4 release. This list might
   3748    not be complete (that is, it is possible that some PRs that have been
   3749    fixed are not listed here).
   3750 
   3751 
   3752     For questions related to the use of GCC, please consult these web
   3753     pages and the [29]GCC manuals. If that fails, the
   3754     [30]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   3755     web pages and the development of GCC are welcome on our developer
   3756     list at [31]gcc (a] gcc.gnu.org. All of [32]our lists have public
   3757     archives.
   3758 
   3759    Copyright (C) [33]Free Software Foundation, Inc. Verbatim copying and
   3760    distribution of this entire article is permitted in any medium,
   3761    provided this notice is preserved.
   3762 
   3763    These pages are [34]maintained by the GCC team. Last modified
   3764    2018-12-01[35].
   3765 
   3766 References
   3767 
   3768    1. https://gcc.gnu.org/ml/gcc-patches/2013-05/msg00728.html
   3769    2. https://gcc.gnu.org/PR60825
   3770    3. https://gcc.gnu.org/gcc-4.9/porting_to.html
   3771    4. https://www.openmp.org/specifications/
   3772    5. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Optimize-Options.html#index-fsimd-cost-model-908
   3773    6. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Language-Independent-Options.html#index-fdiagnostics-color-252
   3774    7. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Loop-Specific-Pragmas.html
   3775    8. https://www.cilkplus.org/
   3776    9. http://gcc.gnu.org/projects/cxx1y.html
   3777   10. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3638.html
   3778   11. http://gcc.gnu.org/projects/cxx1y.html
   3779   12. http://gcc.gnu.org/projects/cxx1y.html
   3780   13. http://gcc.gnu.org/projects/cxx1y.html
   3781   14. http://gcc.gnu.org/projects/cxx1y.html
   3782   15. http://gcc.gnu.org/projects/cxx1y.html
   3783   16. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3889.pdf
   3784   17. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/libstdc++/manual/manual/status.html#status.iso.2011
   3785   18. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2014
   3786   19. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gfortran/Argument-passing-conventions.html
   3787   20. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gfortran/GNU-Fortran-Compiler-Directives.html
   3788   21. https://gcc.gnu.org/wiki/Fortran2003Status
   3789   22. https://gcc.gnu.org/wiki/Fortran2008Status
   3790   23. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gfortran/Debugging-Options.html
   3791   24. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Function-Multiversioning.html
   3792   25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.9.1
   3793   26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.9.2
   3794   27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.9.3
   3795   28. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.9.4
   3796   29. https://gcc.gnu.org/onlinedocs/
   3797   30. mailto:gcc-help (a] gcc.gnu.org
   3798   31. mailto:gcc (a] gcc.gnu.org
   3799   32. https://gcc.gnu.org/lists.html
   3800   33. https://www.fsf.org/
   3801   34. https://gcc.gnu.org/about.html
   3802   35. http://validator.w3.org/check/referer
   3803 ======================================================================
   3804 http://gcc.gnu.org/gcc-4.8/index.html
   3805 
   3806                              GCC 4.8 Release Series
   3807 
   3808    June 23, 2015
   3809 
   3810    The [1]GNU project and the GCC developers are pleased to announce the
   3811    release of GCC 4.8.5.
   3812 
   3813    This release is a bug-fix release, containing fixes for regressions in
   3814    GCC 4.8.4 relative to previous releases of GCC.
   3815 
   3816    This release series is no longer maintained.
   3817 
   3818 Release History
   3819 
   3820    GCC 4.8.5
   3821           June 23, 2015 ([2]changes, [3]documentation)
   3822 
   3823    GCC 4.8.4
   3824           December 19, 2014 ([4]changes, [5]documentation)
   3825 
   3826    GCC 4.8.3
   3827           May 22, 2014 ([6]changes, [7]documentation)
   3828 
   3829    GCC 4.8.2
   3830           October 16, 2013 ([8]changes, [9]documentation)
   3831 
   3832    GCC 4.8.1
   3833           May 31, 2013 ([10]changes, [11]documentation)
   3834 
   3835    GCC 4.8.0
   3836           March 22, 2013 ([12]changes, [13]documentation)
   3837 
   3838 References and Acknowledgements
   3839 
   3840    GCC used to stand for the GNU C Compiler, but since the compiler
   3841    supports several other languages aside from C, it now stands for the
   3842    GNU Compiler Collection.
   3843 
   3844    A list of [14]successful builds is updated as new information becomes
   3845    available.
   3846 
   3847    The GCC developers would like to thank the numerous people that have
   3848    contributed new features, improvements, bug fixes, and other changes as
   3849    well as test results to GCC. This [15]amazing group of volunteers is
   3850    what makes GCC successful.
   3851 
   3852    For additional information about GCC please refer to the [16]GCC
   3853    project web site or contact the [17]GCC development mailing list.
   3854 
   3855    To obtain GCC please use [18]our mirror sites or [19]our SVN server.
   3856 
   3857 
   3858     For questions related to the use of GCC, please consult these web
   3859     pages and the [20]GCC manuals. If that fails, the
   3860     [21]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   3861     web pages and the development of GCC are welcome on our developer
   3862     list at [22]gcc (a] gcc.gnu.org. All of [23]our lists have public
   3863     archives.
   3864 
   3865    Copyright (C) [24]Free Software Foundation, Inc. Verbatim copying and
   3866    distribution of this entire article is permitted in any medium,
   3867    provided this notice is preserved.
   3868 
   3869    These pages are [25]maintained by the GCC team. Last modified
   3870    2018-09-30[26].
   3871 
   3872 References
   3873 
   3874    1. http://www.gnu.org/
   3875    2. http://gcc.gnu.org/gcc-4.8/changes.html
   3876    3. https://gcc.gnu.org/onlinedocs/4.8.5/
   3877    4. http://gcc.gnu.org/gcc-4.8/changes.html
   3878    5. https://gcc.gnu.org/onlinedocs/4.8.4/
   3879    6. http://gcc.gnu.org/gcc-4.8/changes.html
   3880    7. https://gcc.gnu.org/onlinedocs/4.8.3/
   3881    8. http://gcc.gnu.org/gcc-4.8/changes.html
   3882    9. https://gcc.gnu.org/onlinedocs/4.8.2/
   3883   10. http://gcc.gnu.org/gcc-4.8/changes.html
   3884   11. https://gcc.gnu.org/onlinedocs/4.8.1/
   3885   12. http://gcc.gnu.org/gcc-4.8/changes.html
   3886   13. https://gcc.gnu.org/onlinedocs/4.8.0/
   3887   14. http://gcc.gnu.org/gcc-4.8/buildstat.html
   3888   15. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   3889   16. http://gcc.gnu.org/index.html
   3890   17. mailto:gcc (a] gcc.gnu.org
   3891   18. http://gcc.gnu.org/mirrors.html
   3892   19. http://gcc.gnu.org/svn.html
   3893   20. https://gcc.gnu.org/onlinedocs/
   3894   21. mailto:gcc-help (a] gcc.gnu.org
   3895   22. mailto:gcc (a] gcc.gnu.org
   3896   23. https://gcc.gnu.org/lists.html
   3897   24. https://www.fsf.org/
   3898   25. https://gcc.gnu.org/about.html
   3899   26. http://validator.w3.org/check/referer
   3900 ======================================================================
   3901 http://gcc.gnu.org/gcc-4.8/changes.html
   3902 
   3903                              GCC 4.8 Release Series
   3904                         Changes, New Features, and Fixes
   3905 
   3906 Caveats
   3907 
   3908    GCC now uses C++ as its implementation language. This means that to
   3909    build GCC from sources, you will need a C++ compiler that understands
   3910    C++ 2003. For more details on the rationale and specific changes,
   3911    please refer to the [1]C++ conversion page.
   3912 
   3913    To enable the Graphite framework for loop optimizations you now need
   3914    CLooG version 0.18.0 and ISL version 0.11.1. Both can be obtained from
   3915    the [2]GCC infrastructure directory. The installation manual contains
   3916    more information about requirements to build GCC.
   3917 
   3918    GCC now uses a more aggressive analysis to derive an upper bound for
   3919    the number of iterations of loops using constraints imposed by language
   3920    standards. This may cause non-conforming programs to no longer work as
   3921    expected, such as SPEC CPU 2006 464.h264ref and 416.gamess. A new
   3922    option, -fno-aggressive-loop-optimizations, was added to disable this
   3923    aggressive analysis. In some loops that have known constant number of
   3924    iterations, but undefined behavior is known to occur in the loop before
   3925    reaching or during the last iteration, GCC will warn about the
   3926    undefined behavior in the loop instead of deriving lower upper bound of
   3927    the number of iterations for the loop. The warning can be disabled with
   3928    -Wno-aggressive-loop-optimizations.
   3929 
   3930    On ARM, a bug has been fixed in GCC's implementation of the AAPCS rules
   3931    for the layout of vectors that could lead to wrong code being
   3932    generated. Vectors larger than 8 bytes in size are now by default
   3933    aligned to an 8-byte boundary. This is an ABI change: code that makes
   3934    explicit use of vector types may be incompatible with binary objects
   3935    built with older versions of GCC. Auto-vectorized code is not affected
   3936    by this change.
   3937 
   3938    On AVR, support has been removed for the command-line option
   3939    -mshort-calls deprecated in GCC 4.7.
   3940 
   3941    On AVR, the configure option --with-avrlibc supported since GCC 4.7.2
   3942    is turned on per default for all non-RTEMS configurations. This option
   3943    arranges for a better integration of [3]AVR Libc with avr-gcc. For
   3944    technical details, see [4]PR54461. To turn off the option in non-RTEMS
   3945    configurations, use --with-avrlibc=no. If the compiler is configured
   3946    for RTEMS, the option is always turned off.
   3947 
   3948    More information on porting to GCC 4.8 from previous versions of GCC
   3949    can be found in the [5]porting guide for this release.
   3950 
   3951 General Optimizer Improvements (and Changes)
   3952 
   3953      * DWARF4 is now the default when generating DWARF debug information.
   3954        When -g is used on a platform that uses DWARF debugging
   3955        information, GCC will now default to -gdwarf-4
   3956        -fno-debug-types-section.
   3957        GDB 7.5, Valgrind 3.8.0 and elfutils 0.154 debug information
   3958        consumers support DWARF4 by default. Before GCC 4.8 the default
   3959        version used was DWARF2. To make GCC 4.8 generate an older DWARF
   3960        version use -g together with -gdwarf-2 or -gdwarf-3. The default
   3961        for Darwin and VxWorks is still -gdwarf-2 -gstrict-dwarf.
   3962      * A new general optimization level, -Og, has been introduced. It
   3963        addresses the need for fast compilation and a superior debugging
   3964        experience while providing a reasonable level of run-time
   3965        performance. Overall experience for development should be better
   3966        than the default optimization level -O0.
   3967      * A new option -ftree-partial-pre was added to control the partial
   3968        redundancy elimination (PRE) optimization. This option is enabled
   3969        by default at the -O3 optimization level, and it makes PRE more
   3970        aggressive.
   3971      * The option -fconserve-space has been removed; it was no longer
   3972        useful on most targets since GCC supports putting variables into
   3973        BSS without making them common.
   3974      * The struct reorg and matrix reorg optimizations (command-line
   3975        options -fipa-struct-reorg and -fipa-matrix-reorg) have been
   3976        removed. They did not always work correctly, nor did they work with
   3977        link-time optimization (LTO), hence were only applicable to
   3978        programs consisting of a single translation unit.
   3979      * Several scalability bottle-necks have been removed from GCC's
   3980        optimization passes. Compilation of extremely large functions, e.g.
   3981        due to the use of the flatten attribute in the "Eigen" C++ linear
   3982        algebra templates library, is significantly faster than previous
   3983        releases of GCC.
   3984      * Link-time optimization (LTO) improvements:
   3985           + LTO partitioning has been rewritten for better reliability and
   3986             maintanibility. Several important bugs leading to link
   3987             failures have been fixed.
   3988      * Interprocedural optimization improvements:
   3989           + A new symbol table has been implemented. It builds on existing
   3990             callgraph and varpool modules and provide a new API. Unusual
   3991             symbol visibilities and aliases are handled more consistently
   3992             leading to, for example, more aggressive unreachable code
   3993             removal with LTO.
   3994           + The inline heuristic can now bypass limits on the size of of
   3995             inlined functions when the inlining is particularly
   3996             profitable. This happens, for example, when loop bounds or
   3997             array strides get propagated.
   3998           + Values passed through aggregates (either by value or
   3999             reference) are now propagated at the inter-procedural level
   4000             leading to better inlining decisions (for example in the case
   4001             of Fortran array descriptors) and devirtualization.
   4002      * [6]AddressSanitizer , a fast memory error detector, has been added
   4003        and can be enabled via -fsanitize=address. Memory access
   4004        instructions will be instrumented to detect heap-, stack-, and
   4005        global-buffer overflow as well as use-after-free bugs. To get nicer
   4006        stacktraces, use -fno-omit-frame-pointer. The AddressSanitizer is
   4007        available on IA-32/x86-64/x32/PowerPC/PowerPC64 GNU/Linux and on
   4008        x86-64 Darwin.
   4009      * [7]ThreadSanitizer has been added and can be enabled via
   4010        -fsanitize=thread. Instructions will be instrumented to detect data
   4011        races. The ThreadSanitizer is available on x86-64 GNU/Linux.
   4012      * A new local register allocator (LRA) has been implemented, which
   4013        replaces the 26 year old reload pass and improves generated code
   4014        quality. For now it is active on the IA-32 and x86-64 targets.
   4015      * Support for transactional memory has been implemented on the
   4016        following architectures: IA-32/x86-64, ARM, PowerPC, SH, SPARC, and
   4017        Alpha.
   4018 
   4019 New Languages and Language specific improvements
   4020 
   4021   C family
   4022 
   4023      * Each diagnostic emitted now includes the original source line and a
   4024        caret '^' indicating the column. The option
   4025        -fno-diagnostics-show-caret suppresses this information.
   4026      * The option -ftrack-macro-expansion=2 is now enabled by default.
   4027        This allows the compiler to display the macro expansion stack in
   4028        diagnostics. Combined with the caret information, an example
   4029        diagnostic showing these two features is:
   4030 
   4031 t.c:1:94: error: invalid operands to binary < (have `struct mystruct' and `float
   4032 ')
   4033  #define MYMAX(A,B)    __extension__ ({ __typeof__(A) __a = (A); __typeof__(B) _
   4034 _b = (B); __a < __b ? __b : __a; })
   4035 
   4036               ^
   4037 t.c:7:7: note: in expansion of macro 'MYMAX'
   4038    X = MYMAX(P, F);
   4039        ^
   4040 
   4041      * A new -Wsizeof-pointer-memaccess warning has been added (also
   4042        enabled by -Wall) to warn about suspicious length parameters to
   4043        certain string and memory built-in functions if the argument uses
   4044        sizeof. This warning warns e.g. about memset (ptr, 0, sizeof
   4045        (ptr)); if ptr is not an array, but a pointer, and suggests a
   4046        possible fix, or about memcpy (&foo, ptr, sizeof (&foo));.
   4047      * The new option -Wpedantic is an alias for -pedantic, which is now
   4048        deprecated. The forms -Wno-pedantic, -Werror=pedantic, and
   4049        -Wno-error=pedantic work in the same way as for any other -W
   4050        option. One caveat is that -Werror=pedantic is not equivalent to
   4051        -pedantic-errors, since the latter makes into errors some warnings
   4052        that are not controlled by -Wpedantic, and the former only affects
   4053        diagnostics that are disabled when using -Wno-pedantic.
   4054      * The option -Wshadow no longer warns if a declaration shadows a
   4055        function declaration, unless the former declares a function or
   4056        pointer to function, because this is [8]a common and valid case in
   4057        real-world code.
   4058 
   4059   C++
   4060 
   4061      * G++ now implements the [9]C++11 thread_local keyword; this differs
   4062        from the GNU __thread keyword primarily in that it allows dynamic
   4063        initialization and destruction semantics. Unfortunately, this
   4064        support requires a run-time penalty for references to
   4065        non-function-local thread_local variables defined in a different
   4066        translation unit even if they don't need dynamic initialization, so
   4067        users may want to continue to use __thread for TLS variables with
   4068        static initialization semantics.
   4069        If the programmer can be sure that no use of the variable in a
   4070        non-defining TU needs to trigger dynamic initialization (either
   4071        because the variable is statically initialized, or a use of the
   4072        variable in the defining TU will be executed before any uses in
   4073        another TU), they can avoid this overhead with the
   4074        -fno-extern-tls-init option.
   4075        OpenMP threadprivate variables now also support dynamic
   4076        initialization and destruction by the same mechanism.
   4077      * G++ now implements the [10]C++11 attribute syntax, e.g.
   4078 
   4079 [[noreturn]] void f();
   4080 
   4081        and also the alignment specifier, e.g.
   4082 
   4083 alignas(double) int i;
   4084 
   4085      * G++ now implements [11]C++11 inheriting constructors, e.g.
   4086 
   4087 struct A { A(int); };
   4088 struct B: A { using A::A; }; // defines B::B(int)
   4089 B b(42); // OK
   4090 
   4091      * As of GCC 4.8.1, G++ implements the change to decltype semantics
   4092        from [12]N3276.
   4093 
   4094 struct A f();
   4095 decltype(f()) g();    // OK, return type of f() is not required to be complete.
   4096 
   4097      * As of GCC 4.8.1, G++ implements [13]C++11 ref-qualifiers, e.g.
   4098 
   4099 struct A { int f() &; };
   4100 int i = A().f();  // error, f() requires an lvalue object
   4101 
   4102      * G++ now supports a -std=c++1y option for experimentation with
   4103        features proposed for the next revision of the standard, expected
   4104        around 2014. Currently the only difference from -std=c++11 is
   4105        support for return type deduction in normal functions, as proposed
   4106        in [14]N3386. Status of C++1y features in GCC 4.8 can be found
   4107        [15]here.
   4108      * The G++ namespace association extension, __attribute ((strong)),
   4109        has been deprecated. Inline namespaces should be used instead.
   4110      * G++ now supports a -fext-numeric-literal option to control whether
   4111        GNU numeric literal suffixes are accepted as extensions or
   4112        processed as C++11 user-defined numeric literal suffixes. The flag
   4113        is on (use suffixes for GNU literals) by default for -std=gnu++*,
   4114        and -std=c++98. The flag is off (use suffixes for user-defined
   4115        literals) by default for -std=c++11 and later.
   4116 
   4117     Runtime Library (libstdc++)
   4118 
   4119      * [16]Improved experimental support for the new ISO C++ standard,
   4120        C++11, including:
   4121           + forward_list meets the allocator-aware container requirements;
   4122           + this_thread::sleep_for(), this_thread::sleep_until() and
   4123             this_thread::yield() are defined without requiring the
   4124             configure option --enable-libstdcxx-time;
   4125      * Improvements to <random>:
   4126           + SSE optimized normal_distribution.
   4127           + Use of hardware RNG instruction for random_device on new x86
   4128             processors (requires the assembler to support the
   4129             instruction.)
   4130        and <ext/random>:
   4131           + New random number engine simd_fast_mersenne_twister_engine
   4132             with an optimized SSE implementation.
   4133           + New random number distributions beta_distribution,
   4134             normal_mv_distribution, rice_distribution,
   4135             nakagami_distribution, pareto_distribution, k_distribution,
   4136             arcsine_distribution, hoyt_distribution.
   4137      * Added --disable-libstdcxx-verbose configure option to disable
   4138        diagnostic messages issued when a process terminates abnormally.
   4139        This may be useful for embedded systems to reduce the size of
   4140        executables that link statically to the library.
   4141 
   4142   Fortran
   4143 
   4144      * Compatibility notice:
   4145           + Module files: The version of module files (.mod) has been
   4146             incremented. Fortran MODULEs compiled by earlier GCC versions
   4147             have to be recompiled, when they are USEd by files compiled
   4148             with GCC 4.8. GCC 4.8 is not able to read .mod files created
   4149             by earlier versions; attempting to do so gives an error
   4150             message.
   4151             Note: The ABI of the produced assembler data itself has not
   4152             changed; object files and libraries are fully compatible with
   4153             older versions except as noted below.
   4154           + ABI: Some internal names (used in the assembler/object file)
   4155             have changed for symbols declared in the specification part of
   4156             a module. If an affected module - or a file using it via use
   4157             association - is recompiled, the module and all files which
   4158             directly use such symbols have to be recompiled as well. This
   4159             change only affects the following kind of module symbols:
   4160                o Procedure pointers. Note: C-interoperable function
   4161                  pointers (type(c_funptr)) are not affected nor are
   4162                  procedure-pointer components.
   4163                o Deferred-length character strings.
   4164      * The [17]BACKTRACE intrinsic subroutine has been added. It shows a
   4165        backtrace at an arbitrary place in user code; program execution
   4166        continues normally afterwards.
   4167      * The [18]-Wc-binding-type warning option has been added (disabled by
   4168        default). It warns if the a variable might not be C interoperable;
   4169        in particular, if the variable has been declared using an intrinsic
   4170        type with default kind instead of using a kind parameter defined
   4171        for C interoperability in the intrinsic ISO_C_Binding module.
   4172        Before, this warning was always printed. The -Wc-binding-type
   4173        option is enabled by -Wall.
   4174      * The [19]-Wrealloc-lhs and -Wrealloc-lhs-all warning command-line
   4175        options have been added, which diagnose when code is inserted for
   4176        automatic (re)allocation of a variable during assignment. This
   4177        option can be used to decide whether it is safe to use
   4178        [20]-fno-realloc-lhs. Additionally, it can be used to find
   4179        automatic (re)allocation in hot loops. (For arrays, replacing
   4180        "var=" by "var(:)=" disables the automatic reallocation.)
   4181      * The [21]-Wcompare-reals command-line option has been added. When
   4182        this is set, warnings are issued when comparing REAL or COMPLEX
   4183        types for equality and inequality; consider replacing a == b by
   4184        abs(a-b) < eps with a suitable eps. -Wcompare-reals is enabled by
   4185        -Wextra.
   4186      * The [22]-Wtarget-lifetime command-line option has been added
   4187        (enabled with -Wall), which warns if the pointer in a pointer
   4188        assignment might outlive its target.
   4189      * Reading floating point numbers which use "q" for the exponential
   4190        (such as 4.0q0) is now supported as vendor extension for better
   4191        compatibility with old data files. It is strongly recommended to
   4192        use for I/O the equivalent but standard conforming "e" (such as
   4193        4.0e0).
   4194        (For Fortran source code, consider replacing the "q" in
   4195        floating-point literals by a kind parameter (e.g. 4.0e0_qp with a
   4196        suitable qp). Note that - in Fortran source code - replacing "q" by
   4197        a simple "e" is not equivalent.)
   4198      * The GFORTRAN_TMPDIR environment variable for specifying a
   4199        non-default directory for files opened with STATUS="SCRATCH", is
   4200        not used anymore. Instead gfortran checks the POSIX/GNU standard
   4201        TMPDIR environment variable. If TMPDIR is not defined, gfortran
   4202        falls back to other methods to determine the directory for
   4203        temporary files as documented in the [23]user manual.
   4204      * [24]Fortran 2003:
   4205           + Support for unlimited polymorphic variables (CLASS(*)) has
   4206             been added. Nonconstant character lengths are not yet
   4207             supported.
   4208      * [25]TS 29113:
   4209           + Assumed types (TYPE(*)) are now supported.
   4210           + Experimental support for assumed-rank arrays (dimension(..))
   4211             has been added. Note that currently gfortran's own array
   4212             descriptor is used, which is different from the one defined in
   4213             TS29113, see [26]gfortran's header file or use the [27]Chasm
   4214             Language Interoperability Tools.
   4215 
   4216   Go
   4217 
   4218      * GCC 4.8.2 provides a complete implementation of the Go 1.1.2
   4219        release.
   4220      * GCC 4.8.0 and 4.8.1 implement a preliminary version of the Go 1.1
   4221        release. The library support is not quite complete.
   4222      * Go has been tested on GNU/Linux and Solaris platforms for various
   4223        processors including x86, x86_64, PowerPC, SPARC, and Alpha. It may
   4224        work on other platforms as well.
   4225 
   4226 New Targets and Target Specific Improvements
   4227 
   4228   AArch64
   4229 
   4230      * A new port has been added to support AArch64, the new 64-bit
   4231        architecture from ARM. Note that this is a separate port from the
   4232        existing 32-bit ARM port.
   4233      * The port provides initial support for the Cortex-A53 and the
   4234        Cortex-A57 processors with the command line options
   4235        -mcpu=cortex-a53 and -mcpu=cortex-a57.
   4236      * As of GCC 4.8.4 a workaround for the ARM Cortex-A53 erratum 835769
   4237        has been added and can be enabled by giving the
   4238        -mfix-cortex-a53-835769 option. Alternatively it can be enabled by
   4239        default by configuring GCC with the --enable-fix-cortex-a53-835769
   4240        option.
   4241 
   4242   ARM
   4243 
   4244      * Initial support has been added for the AArch32 extensions defined
   4245        in the ARMv8 architecture.
   4246      * Code generation improvements for the Cortex-A7 and Cortex-A15 CPUs.
   4247      * A new option, -mcpu=marvell-pj4, has been added to generate code
   4248        for the Marvell PJ4 processor.
   4249      * The compiler can now automatically generate the VFMA, VFMS, REVSH
   4250        and REV16 instructions.
   4251      * A new vectorizer cost model for Advanced SIMD configurations to
   4252        improve the auto-vectorization strategies used.
   4253      * The scheduler now takes into account the number of live registers
   4254        to reduce the amount of spilling that can occur. This should
   4255        improve code performance in large functions. The limit can be
   4256        removed by using the option -fno-sched-pressure.
   4257      * Improvements have been made to the Marvell iWMMX code generation
   4258        and support for the iWMMX2 SIMD unit has been added. The option
   4259        -mcpu=iwmmxt2 can be used to enable code generation for the latter.
   4260      * A number of code generation improvements for Thumb2 to reduce code
   4261        size when compiling for the M-profile processors.
   4262      * The RTEMS (arm-rtems) port has been updated to use the EABI.
   4263      * Code generation support for the old FPA and Maverick floating-point
   4264        architectures has been removed. Ports that previously relied on
   4265        these features have also been removed. This includes the targets:
   4266           + arm*-*-linux-gnu (use arm*-*-linux-gnueabi)
   4267           + arm*-*-elf (use arm*-*-eabi)
   4268           + arm*-*-uclinux* (use arm*-*-uclinux*eabi)
   4269           + arm*-*-ecos-elf (no alternative)
   4270           + arm*-*-freebsd (no alternative)
   4271           + arm*-wince-pe* (no alternative).
   4272 
   4273   AVR
   4274 
   4275      * Support for the "Embedded C" fixed-point has been added. For
   4276        details, see the [28]GCC wiki and the [29]user manual. The support
   4277        is not complete.
   4278      * A new print modifier %r for register operands in inline assembler
   4279        is supported. It will print the raw register number without the
   4280        register prefix 'r':
   4281     /* Return the most significant byte of 'val', a 64-bit value.  */
   4282 
   4283     unsigned char msb (long long val)
   4284     {
   4285       unsigned char c;
   4286       __asm__ ("mov %0, %r1+7" : "=r" (c) : "r" (val));
   4287       return c;
   4288     }
   4289        The inline assembler in this example will generate code like
   4290     mov r24, 8+7
   4291        provided c is allocated to R24 and val is allocated to R8...R15.
   4292        This works because the GNU assembler accepts plain register numbers
   4293        without register prefix.
   4294      * Static initializers with 3-byte symbols are supported now:
   4295     extern const __memx char foo;
   4296     const __memx void *pfoo = &foo;
   4297        This requires at least Binutils 2.23.
   4298 
   4299   IA-32/x86-64
   4300 
   4301      * Allow -mpreferred-stack-boundary=3 for the x86-64 architecture with
   4302        SSE extensions disabled. Since the x86-64 ABI requires 16 byte
   4303        stack alignment, this is ABI incompatible and intended to be used
   4304        in controlled environments where stack space is an important
   4305        limitation. This option will lead to wrong code when functions
   4306        compiled with 16 byte stack alignment (such as functions from a
   4307        standard library) are called with misaligned stack. In this case,
   4308        SSE instructions may lead to misaligned memory access traps. In
   4309        addition, variable arguments will be handled incorrectly for 16
   4310        byte aligned objects (including x87 long double and __int128),
   4311        leading to wrong results. You must build all modules with
   4312        -mpreferred-stack-boundary=3, including any libraries. This
   4313        includes the system libraries and startup modules.
   4314      * Support for the new Intel processor codename Broadwell with RDSEED,
   4315        ADCX, ADOX, PREFETCHW is available through -madx, -mprfchw,
   4316        -mrdseed command-line options.
   4317      * Support for the Intel RTM and HLE intrinsics, built-in functions
   4318        and code generation is available via -mrtm and -mhle.
   4319      * Support for the Intel FXSR, XSAVE and XSAVEOPT instruction sets.
   4320        Intrinsics and built-in functions are available via -mfxsr, -mxsave
   4321        and -mxsaveopt respectively.
   4322      * New -maddress-mode=[short|long] options for x32.
   4323        -maddress-mode=short overrides default 64-bit addresses to 32-bit
   4324        by emitting the 0x67 address-size override prefix. This is the
   4325        default address mode for x32.
   4326      * New built-in functions to detect run-time CPU type and ISA:
   4327           + A built-in function __builtin_cpu_is has been added to detect
   4328             if the run-time CPU is of a particular type. It returns a
   4329             positive integer on a match and zero otherwise. It accepts one
   4330             string literal argument, the CPU name. For example,
   4331             __builtin_cpu_is("westmere") returns a positive integer if the
   4332             run-time CPU is an Intel Core i7 Westmere processor. Please
   4333             refer to the [30]user manual for the list of valid CPU names
   4334             recognized.
   4335           + A built-in function __builtin_cpu_supports has been added to
   4336             detect if the run-time CPU supports a particular ISA feature.
   4337             It returns a positive integer on a match and zero otherwise.
   4338             It accepts one string literal argument, the ISA feature. For
   4339             example, __builtin_cpu_supports("ssse3") returns a positive
   4340             integer if the run-time CPU supports SSSE3 instructions.
   4341             Please refer to the [31]user manual for the list of valid ISA
   4342             names recognized.
   4343        Caveat: If these built-in functions are called before any static
   4344        constructors are invoked, like during IFUNC initialization, then
   4345        the CPU detection initialization must be explicitly run using this
   4346        newly provided built-in function, __builtin_cpu_init. The
   4347        initialization needs to be done only once. For example, this is how
   4348        the invocation would look like inside an IFUNC initializer:
   4349     static void (*some_ifunc_resolver(void))(void)
   4350     {
   4351       __builtin_cpu_init();
   4352       if (__builtin_cpu_is("amdfam10h") ...
   4353       if (__builtin_cpu_supports("popcnt") ...
   4354     }
   4355 
   4356      * Function Multiversioning Support with G++:
   4357        It is now possible to create multiple function versions each
   4358        targeting a specific processor and/or ISA. Function versions have
   4359        the same signature but different target attributes. For example,
   4360        here is a program with function versions:
   4361     __attribute__ ((target ("default")))
   4362     int foo(void)
   4363     {
   4364       return 1;
   4365     }
   4366 
   4367     __attribute__ ((target ("sse4.2")))
   4368     int foo(void)
   4369     {
   4370       return 2;
   4371     }
   4372 
   4373     int main (void)
   4374     {
   4375       int (*p) = &foo;
   4376       assert ((*p)() == foo());
   4377       return 0;
   4378     }
   4379 
   4380        Please refer to this [32]wiki for more information.
   4381      * The x86 back end has been improved to allow option -fschedule-insns
   4382        to work reliably. This option can be used to schedule instructions
   4383        better and leads to improved performace in certain cases.
   4384      * Windows MinGW-w64 targets (*-w64-mingw*) require at least r5437
   4385        from the Mingw-w64 trunk.
   4386      * Support for new AMD family 15h processors (Steamroller core) is now
   4387        available through the -march=bdver3 and -mtune=bdver3 options.
   4388      * Support for new AMD family 16h processors (Jaguar core) is now
   4389        available through the -march=btver2 and -mtune=btver2 options.
   4390 
   4391   FRV
   4392 
   4393      * This target now supports the -fstack-usage command-line option.
   4394 
   4395   MIPS
   4396 
   4397      * GCC can now generate code specifically for the R4700, Broadcom XLP
   4398        and MIPS 34kn processors. The associated -march options are
   4399        -march=r4700, -march=xlp and -march=34kn respectively.
   4400      * GCC now generates better DSP code for MIPS 74k cores thanks to
   4401        further scheduling optimizations.
   4402      * The MIPS port now supports the -fstack-check option.
   4403      * GCC now passes the -mmcu and -mno-mcu options to the assembler.
   4404      * Previous versions of GCC would silently accept -fpic and -fPIC for
   4405        -mno-abicalls targets like mips*-elf. This combination was not
   4406        intended or supported, and did not generate position-independent
   4407        code. GCC 4.8 now reports an error when this combination is used.
   4408 
   4409   PowerPC / PowerPC64 / RS6000
   4410 
   4411      * SVR4 configurations (GNU/Linux, FreeBSD, NetBSD) no longer save,
   4412        restore or update the VRSAVE register by default. The respective
   4413        operating systems manage the VRSAVE register directly.
   4414      * Large TOC support has been added for AIX through the command line
   4415        option -mcmodel=large.
   4416      * Native Thread-Local Storage support has been added for AIX.
   4417      * VMX (Altivec) and VSX instruction sets now are enabled implicitly
   4418        when targetting processors that support those hardware features on
   4419        AIX 6.1 and above.
   4420 
   4421   RX
   4422 
   4423      * This target will now issue a warning message whenever multiple fast
   4424        interrupt handlers are found in the same compilation unit. This
   4425        feature can be turned off by the new
   4426        -mno-warn-multiple-fast-interrupts command-line option.
   4427 
   4428   S/390, System z
   4429 
   4430      * Support for the IBM zEnterprise zEC12 processor has been added.
   4431        When using the -march=zEC12 option, the compiler will generate code
   4432        making use of the following new instructions:
   4433           + load and trap instructions
   4434           + 2 new compare and trap instructions
   4435           + rotate and insert selected bits - without CC clobber
   4436        The -mtune=zEC12 option enables zEC12 specific instruction
   4437        scheduling without making use of new instructions.
   4438      * Register pressure sensitive instruction scheduling is enabled by
   4439        default.
   4440      * The ifunc function attribute is enabled by default.
   4441      * memcpy and memcmp invokations on big memory chunks or with run time
   4442        lengths are not generated inline anymore when tuning for z10 or
   4443        higher. The purpose is to make use of the IFUNC optimized versions
   4444        in Glibc.
   4445 
   4446   SH
   4447 
   4448      * The default alignment settings have been reduced to be less
   4449        aggressive. This results in more compact code for optimization
   4450        levels other than -Os.
   4451      * Improved support for the __atomic built-in functions:
   4452           + A new option -matomic-model=model selects the model for the
   4453             generated atomic sequences. The following models are
   4454             supported:
   4455 
   4456               soft-gusa
   4457                       Software gUSA sequences (SH3* and SH4* only). On
   4458                       SH4A targets this will now also partially utilize
   4459                       the movco.l and movli.l instructions. This is the
   4460                       default when the target is sh3*-*-linux* or
   4461                       sh4*-*-linux*.
   4462 
   4463               hard-llcs
   4464                       Hardware movco.l / movli.l sequences (SH4A only).
   4465 
   4466               soft-tcb
   4467                       Software thread control block sequences.
   4468 
   4469               soft-imask
   4470                       Software interrupt flipping sequences (privileged
   4471                       mode only). This is the default when the target is
   4472                       sh1*-*-linux* or sh2*-*-linux*.
   4473 
   4474               none
   4475                       Generates function calls to the respective __atomic
   4476                       built-in functions. This is the default for SH64
   4477                       targets or when the target is not sh*-*-linux*.
   4478 
   4479           + The option -msoft-atomic has been deprecated. It is now an
   4480             alias for -matomic-model=soft-gusa.
   4481           + A new option -mtas makes the compiler generate the tas.b
   4482             instruction for the __atomic_test_and_set built-in function
   4483             regardless of the selected atomic model.
   4484           + The __sync functions in libgcc now reflect the selected atomic
   4485             model when building the toolchain.
   4486      * Added support for the mov.b and mov.w instructions with
   4487        displacement addressing.
   4488      * Added support for the SH2A instructions movu.b and movu.w.
   4489      * Various improvements to code generated for integer arithmetic.
   4490      * Improvements to conditional branches and code that involves the T
   4491        bit. A new option -mzdcbranch tells the compiler to favor
   4492        zero-displacement branches. This is enabled by default for SH4*
   4493        targets.
   4494      * The pref instruction will now be emitted by the __builtin_prefetch
   4495        built-in function for SH3* targets.
   4496      * The fmac instruction will now be emitted by the fmaf standard
   4497        function and the __builtin_fmaf built-in function.
   4498      * The -mfused-madd option has been deprecated in favor of the
   4499        machine-independent -ffp-contract option. Notice that the fmac
   4500        instruction will now be generated by default for expressions like a
   4501        * b + c. This is due to the compiler default setting
   4502        -ffp-contract=fast.
   4503      * Added new options -mfsrra and -mfsca to allow the compiler using
   4504        the fsrra and fsca instructions on targets other than SH4A (where
   4505        they are already enabled by default).
   4506      * Added support for the __builtin_bswap32 built-in function. It is
   4507        now expanded as a sequence of swap.b and swap.w instructions
   4508        instead of a library function call.
   4509      * The behavior of the -mieee option has been fixed and the negative
   4510        form -mno-ieee has been added to control the IEEE conformance of
   4511        floating point comparisons. By default -mieee is now enabled and
   4512        the option -ffinite-math-only implicitly sets -mno-ieee.
   4513      * Added support for the built-in functions __builtin_thread_pointer
   4514        and __builtin_set_thread_pointer. This assumes that GBR is used to
   4515        hold the thread pointer of the current thread. Memory loads and
   4516        stores relative to the address returned by __builtin_thread_pointer
   4517        will now also utilize GBR based displacement address modes.
   4518      * The -mdiv= option for targets other than SHmedia has been fixed and
   4519        documented.
   4520 
   4521   SPARC
   4522 
   4523      * Added optimized instruction scheduling for Niagara4.
   4524 
   4525   TILE-Gx
   4526 
   4527      * Added support for the -mcmodel=MODEL command-line option. The
   4528        models supported are small and large.
   4529 
   4530   V850
   4531 
   4532      * This target now supports the E3V5 architecture via the use of the
   4533        new -mv850e3v5 command-line option. It also has experimental
   4534        support for the e3v5 LOOP instruction which can be enabled via the
   4535        new -mloop command-line option.
   4536 
   4537   XStormy16
   4538 
   4539      * This target now supports the -fstack-usage command-line option.
   4540 
   4541 Operating Systems
   4542 
   4543   OpenBSD
   4544 
   4545      * Support for OpenBSD/amd64 (x86_64-*-openbsd*) has been added and
   4546        support for OpenBSD/i386 (i386-*-openbsd*) has been rejuvenated.
   4547 
   4548   Windows (Cygwin)
   4549 
   4550      * Executables are now linked against shared libgcc by default. The
   4551        previous default was to link statically, which can still be done by
   4552        explicitly specifying -static or static-libgcc on the command line.
   4553        However it is strongly advised against, as it will cause problems
   4554        for any application that makes use of DLLs compiled by GCC. It
   4555        should be alright for a monolithic stand-alone application that
   4556        only links against the Windows DLLs, but offers little or no
   4557        benefit.
   4558 
   4559 GCC 4.8.1
   4560 
   4561    This is the [33]list of problem reports (PRs) from GCC's bug tracking
   4562    system that are known to be fixed in the 4.8.1 release. This list might
   4563    not be complete (that is, it is possible that some PRs that have been
   4564    fixed are not listed here).
   4565 
   4566    The C++11 <chrono> std::chrono::system_clock and
   4567    std::chrono::steady_clock classes have changed ABI in GCC 4.8.1, they
   4568    both are now separate (never typedefs of each other), both use
   4569    std::chrono::nanoseconds resolution, on most GNU/Linux configurations
   4570    std::chrono::steady_clock is now finally monotonic, and both classes
   4571    are mangled differently than in the previous GCC releases.
   4572    std::chrono::system_clock::now() with std::chrono::microseconds resp.
   4573    std::chrono::seconds resolution is still exported for backwards
   4574    compatibility with default configured libstdc++. Note that libstdc++
   4575    configured with --enable-libstdcxx-time= used to be ABI incompatible
   4576    with default configured libstdc++ for those two classes and no ABI
   4577    compatibility can be offered for those configurations, so any C++11
   4578    code that uses those classes and has been compiled and linked against
   4579    libstdc++ configured with the non-default --enable-libstdcxx-time=
   4580    configuration option needs to be recompiled.
   4581 
   4582 GCC 4.8.2
   4583 
   4584    This is the [34]list of problem reports (PRs) from GCC's bug tracking
   4585    system that are known to be fixed in the 4.8.2 release. This list might
   4586    not be complete (that is, it is possible that some PRs that have been
   4587    fixed are not listed here).
   4588 
   4589 GCC 4.8.3
   4590 
   4591    This is the [35]list of problem reports (PRs) from GCC's bug tracking
   4592    system that are known to be fixed in the 4.8.3 release. This list might
   4593    not be complete (that is, it is possible that some PRs that have been
   4594    fixed are not listed here).
   4595 
   4596    Support for the new powerpc64le-linux platform has been added. It
   4597    defaults to generating code that conforms to the ELFV2 ABI.
   4598 
   4599 GCC 4.8.4
   4600 
   4601    This is the [36]list of problem reports (PRs) from GCC's bug tracking
   4602    system that are known to be fixed in the 4.8.4 release. This list might
   4603    not be complete (that is, it is possible that some PRs that have been
   4604    fixed are not listed here).
   4605 
   4606 GCC 4.8.5
   4607 
   4608    This is the [37]list of problem reports (PRs) from GCC's bug tracking
   4609    system that are known to be fixed in the 4.8.5 release. This list might
   4610    not be complete (that is, it is possible that some PRs that have been
   4611    fixed are not listed here).
   4612 
   4613 
   4614     For questions related to the use of GCC, please consult these web
   4615     pages and the [38]GCC manuals. If that fails, the
   4616     [39]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   4617     web pages and the development of GCC are welcome on our developer
   4618     list at [40]gcc (a] gcc.gnu.org. All of [41]our lists have public
   4619     archives.
   4620 
   4621    Copyright (C) [42]Free Software Foundation, Inc. Verbatim copying and
   4622    distribution of this entire article is permitted in any medium,
   4623    provided this notice is preserved.
   4624 
   4625    These pages are [43]maintained by the GCC team. Last modified
   4626    2018-09-30[44].
   4627 
   4628 References
   4629 
   4630    1. https://gcc.gnu.org/wiki/cxx-conversion
   4631    2. ftp://gcc.gnu.org/pub/gcc/infrastructure/
   4632    3. http://www.nongnu.org/avr-libc/
   4633    4. https://gcc.gnu.org/PR54461
   4634    5. https://gcc.gnu.org/gcc-4.8/porting_to.html
   4635    6. https://github.com/google/sanitizers
   4636    7. https://code.google.com/archive/p/data-race-test/wikis/ThreadSanitizer.wiki
   4637    8. https://lkml.org/lkml/2006/11/28/239
   4638    9. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
   4639   10. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
   4640   11. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
   4641   12. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf
   4642   13. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
   4643   14. http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3386.html
   4644   15. http://gcc.gnu.org/projects/cxx1y.html
   4645   16. https://gcc.gnu.org/onlinedocs/gcc-4.8.4/libstdc++/manual/manual/status.html#status.iso.2011
   4646   17. https://gcc.gnu.org/onlinedocs/gfortran/BACKTRACE.html
   4647   18. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
   4648   19. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
   4649   20. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
   4650   21. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
   4651   22. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
   4652   23. https://gcc.gnu.org/onlinedocs/gfortran/TMPDIR.html
   4653   24. https://gcc.gnu.org/wiki/Fortran2003Status
   4654   25. https://gcc.gnu.org/wiki/TS29113Status
   4655   26. https://gcc.gnu.org/viewcvs/trunk/libgfortran/libgfortran.h?content-type=text%2Fplain&view=co
   4656   27. http://chasm-interop.sourceforge.net/
   4657   28. https://gcc.gnu.org/wiki/avr-gcc#Fixed-Point_Support
   4658   29. https://gcc.gnu.org/onlinedocs/gcc/Fixed-Point.html
   4659   30. https://gcc.gnu.org/onlinedocs/gcc/x86-Built-in-Functions.html
   4660   31. https://gcc.gnu.org/onlinedocs/gcc/x86-Built-in-Functions.html
   4661   32. https://gcc.gnu.org/wiki/FunctionMultiVersioning
   4662   33. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.1
   4663   34. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.2
   4664   35. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.3
   4665   36. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.4
   4666   37. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.5
   4667   38. https://gcc.gnu.org/onlinedocs/
   4668   39. mailto:gcc-help (a] gcc.gnu.org
   4669   40. mailto:gcc (a] gcc.gnu.org
   4670   41. https://gcc.gnu.org/lists.html
   4671   42. https://www.fsf.org/
   4672   43. https://gcc.gnu.org/about.html
   4673   44. http://validator.w3.org/check/referer
   4674 ======================================================================
   4675 http://gcc.gnu.org/gcc-4.7/index.html
   4676 
   4677                              GCC 4.7 Release Series
   4678 
   4679    June 12, 2014
   4680 
   4681    The [1]GNU project and the GCC developers are pleased to announce the
   4682    release of GCC 4.7.4.
   4683 
   4684    This release is a bug-fix release, containing fixes for regressions in
   4685    GCC 4.7.3 relative to previous releases of GCC.
   4686 
   4687    This release series is no longer maintained.
   4688 
   4689 Release History
   4690 
   4691    GCC 4.7.4
   4692           June 12, 2014 ([2]changes, [3]documentation)
   4693 
   4694    GCC 4.7.3
   4695           April 11, 2013 ([4]changes, [5]documentation)
   4696 
   4697    GCC 4.7.2
   4698           September 20, 2012 ([6]changes, [7]documentation)
   4699 
   4700    GCC 4.7.1
   4701           June 14, 2012 ([8]changes, [9]documentation)
   4702 
   4703    GCC 4.7.0
   4704           March 22, 2012 ([10]changes, [11]documentation)
   4705 
   4706 References and Acknowledgements
   4707 
   4708    GCC used to stand for the GNU C Compiler, but since the compiler
   4709    supports several other languages aside from C, it now stands for the
   4710    GNU Compiler Collection.
   4711 
   4712    A list of [12]successful builds is updated as new information becomes
   4713    available.
   4714 
   4715    The GCC developers would like to thank the numerous people that have
   4716    contributed new features, improvements, bug fixes, and other changes as
   4717    well as test results to GCC. This [13]amazing group of volunteers is
   4718    what makes GCC successful.
   4719 
   4720    For additional information about GCC please refer to the [14]GCC
   4721    project web site or contact the [15]GCC development mailing list.
   4722 
   4723    To obtain GCC please use [16]our mirror sites or [17]our SVN server.
   4724 
   4725 
   4726     For questions related to the use of GCC, please consult these web
   4727     pages and the [18]GCC manuals. If that fails, the
   4728     [19]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   4729     web pages and the development of GCC are welcome on our developer
   4730     list at [20]gcc (a] gcc.gnu.org. All of [21]our lists have public
   4731     archives.
   4732 
   4733    Copyright (C) [22]Free Software Foundation, Inc. Verbatim copying and
   4734    distribution of this entire article is permitted in any medium,
   4735    provided this notice is preserved.
   4736 
   4737    These pages are [23]maintained by the GCC team. Last modified
   4738    2018-09-30[24].
   4739 
   4740 References
   4741 
   4742    1. http://www.gnu.org/
   4743    2. http://gcc.gnu.org/gcc-4.7/changes.html
   4744    3. https://gcc.gnu.org/onlinedocs/4.7.4/
   4745    4. http://gcc.gnu.org/gcc-4.7/changes.html
   4746    5. https://gcc.gnu.org/onlinedocs/4.7.3/
   4747    6. http://gcc.gnu.org/gcc-4.7/changes.html
   4748    7. https://gcc.gnu.org/onlinedocs/4.7.2/
   4749    8. http://gcc.gnu.org/gcc-4.7/changes.html
   4750    9. https://gcc.gnu.org/onlinedocs/4.7.1/
   4751   10. http://gcc.gnu.org/gcc-4.7/changes.html
   4752   11. https://gcc.gnu.org/onlinedocs/4.7.0/
   4753   12. http://gcc.gnu.org/gcc-4.7/buildstat.html
   4754   13. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   4755   14. http://gcc.gnu.org/index.html
   4756   15. mailto:gcc (a] gcc.gnu.org
   4757   16. http://gcc.gnu.org/mirrors.html
   4758   17. http://gcc.gnu.org/svn.html
   4759   18. https://gcc.gnu.org/onlinedocs/
   4760   19. mailto:gcc-help (a] gcc.gnu.org
   4761   20. mailto:gcc (a] gcc.gnu.org
   4762   21. https://gcc.gnu.org/lists.html
   4763   22. https://www.fsf.org/
   4764   23. https://gcc.gnu.org/about.html
   4765   24. http://validator.w3.org/check/referer
   4766 ======================================================================
   4767 http://gcc.gnu.org/gcc-4.7/changes.html
   4768 
   4769                              GCC 4.7 Release Series
   4770                         Changes, New Features, and Fixes
   4771 
   4772 Caveats
   4773 
   4774      * The -fconserve-space flag has been deprecated. The flag had no
   4775        effect for most targets: only targets without a global .bss section
   4776        and without support for switchable sections. Furthermore, the flag
   4777        only had an effect for G++, where it could result in wrong
   4778        semantics (please refer to the GCC manual for further details). The
   4779        flag will be removed in GCC 4.8
   4780      * Support for a number of older systems and recently unmaintained or
   4781        untested target ports of GCC has been declared obsolete in GCC 4.7.
   4782        Unless there is activity to revive them, the next release of GCC
   4783        will have their sources permanently removed.
   4784        All GCC ports for the following processor architectures have been
   4785        declared obsolete:
   4786           + picoChip (picochip-*)
   4787        The following ports for individual systems on particular
   4788        architectures have been obsoleted:
   4789           + IRIX 6.5 (mips-sgi-irix6.5)
   4790           + MIPS OpenBSD (mips*-*-openbsd*)
   4791           + Solaris 8 (*-*-solaris2.8). Details can be found in the
   4792             [1]announcement.
   4793           + Tru64 UNIX V5.1 (alpha*-dec-osf5.1*)
   4794      * On ARM, when compiling for ARMv6 (but not ARMv6-M), ARMv7-A,
   4795        ARMv7-R, or ARMv7-M, the new option -munaligned-access is active by
   4796        default, which for some sources generates code that accesses memory
   4797        on unaligned addresses. This requires the kernel of those systems
   4798        to enable such accesses (controlled by CP15 register c1, refer to
   4799        ARM documentation). Alternatively, or for compatibility with
   4800        kernels where unaligned accesses are not supported, all code has to
   4801        be compiled with -mno-unaligned-access. Upstream Linux kernel
   4802        releases have automatically and unconditionally supported unaligned
   4803        accesses as emitted by GCC due to this option being active since
   4804        version 2.6.28.
   4805      * Support on ARM for the legacy floating-point accelerator (FPA) and
   4806        the mixed-endian floating-point format that it used has been
   4807        obsoleted. The ports that still use this format have been obsoleted
   4808        as well. Many legacy ARM ports already provide an alternative that
   4809        uses the VFP floating-point format. The obsolete ports will be
   4810        deleted in the next release.
   4811        The obsolete ports with alternatives are:
   4812           + arm*-*-rtems (use arm*-*-rtemseabi)
   4813           + arm*-*-linux-gnu (use arm*-*-linux-gnueabi)
   4814           + arm*-*-elf (use arm*-*-eabi)
   4815           + arm*-*-uclinux* (use arm*-*-uclinux*eabi)
   4816        Note, however, that these alternatives are not binary compatible
   4817        with their legacy counterparts (although some can support running
   4818        legacy applications).
   4819        The obsolete ports that currently lack a modern alternative are:
   4820           + arm*-*-ecos-elf
   4821           + arm*-*-freebsd
   4822           + arm*-wince-pe*
   4823        New ports that support more recent versions of the architecture are
   4824        welcome.
   4825      * Support for the Maverick co-processor on ARM has been obsoleted.
   4826        Code to support it will be deleted in the next release.
   4827      * Support has been removed for Unix International threads on Solaris
   4828        2, so the --enable-threads=solaris configure option and the
   4829        -threads compiler option don't work any longer.
   4830      * Support has been removed for the Solaris BSD Compatibility Package,
   4831        which lives in /usr/ucbinclude and /usr/ucblib. It has been removed
   4832        from Solaris 11, and was only intended as a migration aid from
   4833        SunOS 4 to SunOS 5. The -compat-bsd compiler option is not
   4834        recognized any longer.
   4835      * The AVR port's libgcc has been improved and its multilib structure
   4836        has been enhanced. As a result, all objects contributing to an
   4837        application must either be compiled with GCC versions up to 4.6.x
   4838        or with GCC versions 4.7.1 or later. If the compiler is used with
   4839        AVR Libc, you need a version that supports the new layout, i.e.
   4840        implements [2]#35407.
   4841      * The AVR port's -mshort-calls command-line option has been
   4842        deprecated. It will be removed in the GCC 4.8 release. See -mrelax
   4843        for a replacement.
   4844      * The AVR port only references startup code that clears .bss and the
   4845        common section resp. initializes the .data and .rodata section
   4846        provided respective sections (or subsections thereof) are not
   4847        empty, see [3]PR18145. Applications that put all static storage
   4848        objects into non-standard sections and / or define all static
   4849        storage objects in assembler modules, must reference __do_clear_bss
   4850        resp. __do_copy_data by hand or undefine the symbol(s) by means of
   4851        -Wl,-u,__do_clear_bss resp. -Wl,-u,__do_copy_data.
   4852      * The ARM port's -mwords-little-endian option has been deprecated. It
   4853        will be removed in a future release.
   4854      * Support has been removed for the NetWare x86 configuration
   4855        obsoleted in GCC 4.6.
   4856      * It is no longer possible to use the "l" constraint in MIPS16 asm
   4857        statements.
   4858      * GCC versions 4.7.0 and 4.7.1 had changes to the C++ standard
   4859        library which affected the ABI in C++11 mode: a data member was
   4860        added to std::list changing its size and altering the definitions
   4861        of some member functions, and std::pair's move constructor was
   4862        non-trivial which altered the calling convention for functions with
   4863        std::pair arguments or return types. The ABI incompatibilities have
   4864        been fixed for GCC version 4.7.2 but as a result C++11 code
   4865        compiled with GCC 4.7.0 or 4.7.1 may be incompatible with C++11
   4866        code compiled with different GCC versions and with C++98/C++03 code
   4867        compiled with any version.
   4868      * On ARM, a bug has been fixed in GCC's implementation of the AAPCS
   4869        rules for the layout of vectors that could lead to wrong code being
   4870        generated. Vectors larger than 8 bytes in size are now by default
   4871        aligned to an 8-byte boundary. This is an ABI change: code that
   4872        makes explicit use of vector types may be incompatible with binary
   4873        objects built with older versions of GCC. Auto-vectorized code is
   4874        not affected by this change. (This change affects GCC versions
   4875        4.7.2 and later.)
   4876      * More information on porting to GCC 4.7 from previous versions of
   4877        GCC can be found in the [4]porting guide for this release.
   4878 
   4879 General Optimizer Improvements
   4880 
   4881      * Support for a new parameter --param case-values-threshold=n was
   4882        added to allow users to control the cutoff between doing switch
   4883        statements as a series of if statements and using a jump table.
   4884      * Link-time optimization (LTO) improvements:
   4885           + Improved scalability and reduced memory usage. Link time
   4886             optimization of Firefox now requires 3GB of RAM on a 64-bit
   4887             system, while over 8GB was needed previously. Linking time has
   4888             been improved, too. The serial stage of linking Firefox has
   4889             been sped up by about a factor of 10.
   4890           + Reduced size of object files and temporary storage used during
   4891             linking.
   4892           + Streaming performance (both outbound and inbound) has been
   4893             improved.
   4894           + ld -r is now supported with LTO.
   4895           + Several bug fixes, especially in symbol table handling and
   4896             merging.
   4897      * Interprocedural optimization improvements:
   4898           + Heuristics now take into account that after inlining code will
   4899             be optimized out because of known values (or properties) of
   4900             function parameters. For example:
   4901 void foo(int a)
   4902 {
   4903   if (a > 10)
   4904     ... huge code ...
   4905 }
   4906 void bar (void)
   4907 {
   4908   foo (0);
   4909 }
   4910 
   4911             The call of foo will be inlined into bar even when optimizing
   4912             for code size. Constructs based on __builtin_constant_p are
   4913             now understood by the inliner and code size estimates are
   4914             evaluated a lot more realistically.
   4915           + The representation of C++ virtual thunks and aliases (both
   4916             implicit and defined via the alias attribute) has been
   4917             re-engineered. Aliases no longer pose optimization barriers
   4918             and calls to an alias can be inlined and otherwise optimized.
   4919           + The inter-procedural constant propagation pass has been
   4920             rewritten. It now performs generic function specialization.
   4921             For example when compiling the following:
   4922 void foo(bool flag)
   4923 {
   4924   if (flag)
   4925     ... do something ...
   4926   else
   4927     ... do something else ...
   4928 }
   4929 void bar (void)
   4930 {
   4931   foo (false);
   4932   foo (true);
   4933   foo (false);
   4934   foo (true);
   4935   foo (false);
   4936   foo (true);
   4937 }
   4938 
   4939             GCC will now produce two copies of foo. One with flag being
   4940             true, while other with flag being false. This leads to
   4941             performance improvements previously possible only by inlining
   4942             all calls. Cloning causes a lot less code size growth.
   4943      * A string length optimization pass has been added. It attempts to
   4944        track string lengths and optimize various standard C string
   4945        functions like strlen, strchr, strcpy, strcat, stpcpy and their
   4946        _FORTIFY_SOURCE counterparts into faster alternatives. This pass is
   4947        enabled by default at -O2 or above, unless optimizing for size, and
   4948        can be disabled by the -fno-optimize-strlen option. The pass can
   4949        e.g. optimize
   4950 char *bar (const char *a)
   4951 {
   4952   size_t l = strlen (a) + 2;
   4953   char *p = malloc (l); if (p == NULL) return p;
   4954   strcpy (p, a); strcat (p, "/"); return p;
   4955 }
   4956 
   4957        into:
   4958 char *bar (const char *a)
   4959 {
   4960   size_t tmp = strlen (a);
   4961   char *p = malloc (tmp + 2); if (p == NULL) return p;
   4962   memcpy (p, a, tmp); memcpy (p + tmp, "/", 2); return p;
   4963 }
   4964 
   4965        or for hosted compilations where stpcpy is available in the runtime
   4966        and headers provide its prototype, e.g.
   4967 void foo (char *a, const char *b, const char *c, const char *d)
   4968 {
   4969   strcpy (a, b); strcat (a, c); strcat (a, d);
   4970 }
   4971 
   4972        can be optimized into:
   4973 void foo (char *a, const char *b, const char *c, const char *d)
   4974 {
   4975   strcpy (stpcpy (stpcpy (a, b), c), d);
   4976 }
   4977 
   4978 New Languages and Language specific improvements
   4979 
   4980      * Version 3.1 of the [5]OpenMP specification is now supported for the
   4981        C, C++, and Fortran compilers.
   4982 
   4983   Ada
   4984 
   4985      * The command-line option -feliminate-unused-debug-types has been
   4986        re-enabled by default, as it is for the other languages, leading to
   4987        a reduction in debug info size of 12.5% and more for relevant
   4988        cases, as well as to a small compilation speedup.
   4989 
   4990   C family
   4991 
   4992      * A new built-in, __builtin_assume_aligned, has been added, through
   4993        which the compiler can be hinted about pointer alignment and can
   4994        use it to improve generated code.
   4995      * A new warning option -Wunused-local-typedefs was added for C, C++,
   4996        Objective-C and Objective-C++. This warning diagnoses typedefs
   4997        locally defined in a function, and otherwise not used.
   4998      * A new experimental command-line option -ftrack-macro-expansion was
   4999        added for C, C++, Objective-C, Objective-C++ and Fortran. It allows
   5000        the compiler to emit diagnostic about the current macro expansion
   5001        stack when a compilation error occurs in a macro expansion.
   5002      * Experimental support for transactional memory has been added. It
   5003        includes support in the compiler, as well as a supporting runtime
   5004        library called libitm. To compile code with transactional memory
   5005        constructs, use the -fgnu-tm option.
   5006        Support is currently available for Alpha, ARM, PowerPC, SH, SPARC,
   5007        and 32-bit/64-bit x86 platforms.
   5008        For more details on transactional memory see [6]the GCC WiKi.
   5009      * Support for atomic operations specifying the C++11/C11 memory model
   5010        has been added. These new __atomic routines replace the existing
   5011        __sync built-in routines.
   5012        Atomic support is also available for memory blocks. Lock-free
   5013        instructions will be used if a memory block is the same size and
   5014        alignment as a supported integer type. Atomic operations which do
   5015        not have lock-free support are left as function calls. A set of
   5016        library functions is available on the GCC atomic wiki in the
   5017        "External Atomics Library" section.
   5018        For more details on the memory models and features, see the
   5019        [7]atomic wiki.
   5020      * When a binary operation is performed on vector types and one of the
   5021        operands is a uniform vector, it is possible to replace the vector
   5022        with the generating element. For example:
   5023 typedef int v4si __attribute__ ((vector_size (16)));
   5024 v4si res, a = {1,2,3,4};
   5025 int x;
   5026 
   5027 res = 2 + a;  /* means {2,2,2,2} + a  */
   5028 res = a - x;  /* means a - {x,x,x,x}  */
   5029 
   5030   C
   5031 
   5032      * There is support for some more features from the C11 revision of
   5033        the ISO C standard. GCC now accepts the options -std=c11 and
   5034        -std=gnu11, in addition to the previous -std=c1x and -std=gnu1x.
   5035           + Unicode strings (previously supported only with options such
   5036             as -std=gnu11, now supported with -std=c11), and the
   5037             predefined macros __STDC_UTF_16__ and __STDC_UTF_32__.
   5038           + Nonreturning functions (_Noreturn and <stdnoreturn.h>).
   5039           + Alignment support (_Alignas, _Alignof, max_align_t,
   5040             <stdalign.h>).
   5041           + A built-in function __builtin_complex is provided to support C
   5042             library implementation of the CMPLX family of macros.
   5043 
   5044   C++
   5045 
   5046      * G++ now accepts the -std=c++11, -std=gnu++11, and -Wc++11-compat
   5047        options, which are equivalent to -std=c++0x, -std=gnu++0x, and
   5048        -Wc++0x-compat, respectively.
   5049      * G++ now implements [8]C++11 extended friend syntax:
   5050 
   5051 template<class W>
   5052 class Q
   5053 {
   5054   static const int I = 2;
   5055 public:
   5056   friend W;
   5057 };
   5058 
   5059 struct B
   5060 {
   5061   int ar[Q<B>::I];
   5062 };
   5063 
   5064      * Thanks to Ville Voutilainen, G++ now implements [9]C++11 explicit
   5065        override control.
   5066 
   5067 struct B {
   5068   virtual void f() const final;
   5069   virtual void f(int);
   5070 };
   5071 
   5072 struct D : B {
   5073   void f() const;            // error: D::f attempts to override final B::f
   5074   void f(long) override;     // error: doesn't override anything
   5075   void f(int) override;      // ok
   5076 };
   5077 
   5078 struct E final { };
   5079 struct F: E { }; // error: deriving from final class
   5080 
   5081      * G++ now implements [10]C++11 non-static data member initializers.
   5082 
   5083 struct A {
   5084   int i = 42;
   5085 } a; // initializes a.i to 42
   5086 
   5087      * Thanks to Ed Smith-Rowland, G++ now implements [11]C++11
   5088        user-defined literals.
   5089 
   5090 // Not actually a good approximation.  :)
   5091 constexpr long double operator"" _degrees (long double d) { return d * 0.0175; }
   5092 long double pi = 180.0_degrees;
   5093 
   5094      * G++ now implements [12]C++11 alias-declarations.
   5095 
   5096 template <class T> using Ptr = T*;
   5097 Ptr<int> ip;  // decltype(ip) is int*
   5098 
   5099      * Thanks to Ville Voutilainen and Pedro Lamarao, G++ now implements
   5100        [13]C++11 delegating constructors.
   5101 
   5102 struct A {
   5103   A(int);
   5104   A(): A(42) { } // delegate to the A(int) constructor
   5105 };
   5106 
   5107      * G++ now fully implements C++11 atomic classes rather than just
   5108        integer derived classes.
   5109 
   5110 class POD {
   5111   int a;
   5112   int b;
   5113 };
   5114 std::atomic<POD> my_atomic_POD;
   5115 
   5116      * G++ now sets the predefined macro __cplusplus to the correct value,
   5117        199711L for C++98/03, and 201103L for C++11.
   5118      * G++ now correctly implements the two-phase lookup rules such that
   5119        an unqualified name used in a template must have an appropriate
   5120        declaration found either in scope at the point of definition of the
   5121        template or by argument-dependent lookup at the point of
   5122        instantiation. As a result, code that relies on a second
   5123        unqualified lookup at the point of instantiation to find functions
   5124        declared after the template or in dependent bases will be rejected.
   5125        The compiler will suggest ways to fix affected code, and using the
   5126        -fpermissive compiler flag will allow the code to compile with a
   5127        warning.
   5128 
   5129 template <class T>
   5130 void f() { g(T()); } // error, g(int) not found by argument-dependent lookup
   5131 void g(int) { } // fix by moving this declaration before the declaration of f
   5132 
   5133 template <class T>
   5134 struct A: T {
   5135   // error, B::g(B) not found by argument-dependent lookup
   5136   void f() { g(T()); } // fix by using this->g or A::g
   5137 };
   5138 
   5139 struct B { void g(B); };
   5140 
   5141 int main()
   5142 {
   5143   f<int>();
   5144   A<B>().f();
   5145 }
   5146 
   5147      * G++ now properly re-uses stack space allocated for temporary
   5148        objects when their lifetime ends, which can significantly lower
   5149        stack consumption for some C++ functions. As a result of this, some
   5150        code with undefined behavior will now break:
   5151 
   5152 const int &f(const int &i) { return i; }
   5153 ....
   5154 const int &x = f(1);
   5155 const int &y = f(2);
   5156 
   5157        Here, x refers to the temporary allocated to hold the 1 argument,
   5158        which only lives until the end of the initialization; it
   5159        immediately becomes a dangling reference. So the next statement
   5160        re-uses the stack slot to hold the 2 argument, and users of x get
   5161        that value instead.
   5162        Note that this should not cause any change of behavior for
   5163        temporaries of types with non-trivial destructors, as they are
   5164        already destroyed at end of full-expression; the change is that now
   5165        the storage is released as well.
   5166      * A new command-line option -Wdelete-non-virtual-dtor has been added
   5167        to warn when delete is used to destroy an instance of a class which
   5168        has virtual functions and non-virtual destructor. It is unsafe to
   5169        delete an instance of a derived class through a pointer to a base
   5170        class if the base class does not have a virtual destructor. This
   5171        warning is enabled by -Wall.
   5172      * A new command-line option -Wzero-as-null-pointer-constant has been
   5173        added to warn when a literal '0' is used as null pointer constant.
   5174        It can be useful to facilitate the conversion to nullptr in C++11.
   5175      * As per C++98, access-declarations are now deprecated by G++.
   5176        Using-declarations are to be used instead. Furthermore, some
   5177        efforts have been made to improve the support of class scope
   5178        using-declarations. In particular, using-declarations referring to
   5179        a dependent type now work as expected ([14]bug c++/14258).
   5180      * The ELF symbol visibility of a template instantiation is now
   5181        properly constrained by the visibility of its template arguments
   5182        ([15]bug c++/35688).
   5183 
   5184     Runtime Library (libstdc++)
   5185 
   5186      * [16]Improved experimental support for the new ISO C++ standard,
   5187        C++11, including:
   5188           + using noexcept in most of the library;
   5189           + implementations of pointer_traits, allocator_traits and
   5190             scoped_allocator_adaptor;
   5191           + uses-allocator construction for tuple;
   5192           + vector meets the allocator-aware container requirements;
   5193           + replacing monotonic_clock with steady_clock;
   5194           + enabling the thread support library on most POSIX targets;
   5195           + many small improvements to conform to the FDIS.
   5196      * Added --enable-clocale=newlib configure option.
   5197      * Debug Mode iterators for unordered associative containers.
   5198      * Avoid polluting the global namespace and do not include <unistd.h>.
   5199 
   5200   Fortran
   5201 
   5202      * The compile flag [17]-fstack-arrays has been added, which causes
   5203        all local arrays to be put on stack memory. For some programs this
   5204        will improve the performance significantly. If your program uses
   5205        very large local arrays, it is possible that you will have to
   5206        extend your runtime limits for stack memory.
   5207      * The [18]-Ofast flag now also implies [19]-fno-protect-parens and
   5208        [20]-fstack-arrays.
   5209      * Front-end optimizations can now be selected by the
   5210        [21]-ffrontend-optimize option and deselected by the
   5211        -fno-frontend-optimize option.
   5212      * When front-end optimization removes a function call,
   5213        [22]-Wfunction-elimination warns about that.
   5214      * When performing front-end-optimization, the
   5215        [23]-faggressive-function-elimination option allows the removal of
   5216        duplicate function calls even for impure functions.
   5217      * The flag [24]-Wreal-q-constant has been added, which warns if
   5218        floating-point literals have been specified using q (such as
   5219        1.0q0); the q marker is now supported as a vendor extension to
   5220        denote quad precision (REAL(16) or, if not available, REAL(10)).
   5221        Consider using a kind parameter (such as in 1.0_qp) instead, which
   5222        can be obtained via [25]SELECTED_REAL_KIND.
   5223      * The GFORTRAN_USE_STDERR environment variable has been removed. GNU
   5224        Fortran now always prints error messages to standard error. If you
   5225        wish to redirect standard error, please consult the manual for your
   5226        OS, shell, batch environment etc. as appropriate.
   5227      * The -fdump-core option and GFORTRAN_ERROR_DUMPCORE environment
   5228        variable have been removed. When encountering a serious error,
   5229        gfortran will now always abort the program. Whether a core dump is
   5230        generated depends on the user environment settings; see the ulimit
   5231        -c setting for POSIX shells, limit coredumpsize for C shells, and
   5232        the [26]WER user-mode dumps settings on Windows.
   5233      * The [27]-fbacktrace option is now enabled by default. When
   5234        encountering a fatal error, gfortran will attempt to print a
   5235        backtrace to standard error before aborting. It can be disabled
   5236        with -fno-backtrace. Note: On POSIX targets with the addr2line
   5237        utility from GNU binutils, GNU Fortran can print a backtrace with
   5238        function name, file name, line number information in addition to
   5239        the addresses; otherwise only the addresses are printed.
   5240      * [28]Fortran 2003:
   5241           + Generic interface names which have the same name as derived
   5242             types are now supported, which allows to write constructor
   5243             functions. Note that Fortran does not support static
   5244             constructor functions; only default initialization or an
   5245             explicit structure-constructor initialization are available.
   5246           + [29]Polymorphic (class) arrays are now supported.
   5247      * [30]Fortran 2008:
   5248           + Support for the DO CONCURRENT construct has been added, which
   5249             allows the user to specify that individual loop iterations
   5250             have no interdependencies.
   5251           + [31]Coarrays: Full single-image support except for polymorphic
   5252             coarrays. Additionally, preliminary support for multiple
   5253             images via an MPI-based [32]coarray communication library has
   5254             been added. Note: The library version is not yet usable as
   5255             remote coarray access is not yet possible.
   5256      * [33]TS 29113:
   5257           + New flag [34]-std=f2008ts permits programs that are expected
   5258             to conform to the Fortran 2008 standard and the draft
   5259             Technical Specification (TS) 29113 on Further Interoperability
   5260             of Fortran with C.
   5261           + The OPTIONAL attribute is now allowed for dummy arguments of
   5262             BIND(C) procedures.
   5263           + The RANK intrinsic has been added.
   5264           + The implementation of the ASYNCHRONOUS attribute in GCC is
   5265             compatible with the candidate draft of TS 29113 (since GCC
   5266             4.6).
   5267 
   5268   Go
   5269 
   5270      * GCC 4.7 implements the [35]Go 1 language standard. The library
   5271        support in 4.7.0 is not quite complete, due to release timing.
   5272        Release 4.7.1 includes complete support for Go 1. The Go library is
   5273        from the Go 1.0.1 release.
   5274      * Go has been tested on GNU/Linux and Solaris platforms. It may work
   5275        on other platforms as well.
   5276 
   5277 New Targets and Target Specific Improvements
   5278 
   5279   ARM
   5280 
   5281      * GCC now supports the Cortex-A7 processor implementing the v7-a
   5282        version of the architecture using the option -mcpu=cortex-a7.
   5283      * The default vector size in auto-vectorization for NEON is now 128
   5284        bits. If vectorization fails thusly, the vectorizer tries again
   5285        with 64-bit vectors.
   5286      * A new option -mvectorize-with-neon-double was added to allow users
   5287        to change the vector size to 64 bits.
   5288 
   5289   AVR
   5290 
   5291      * GCC now supports the XMEGA architecture. This requires GNU binutils
   5292        2.22 or later.
   5293      * Support for the [36]named address spaces __flash, __flash1, ...,
   5294        __flash5 and __memx has been added. These address spaces locate
   5295        read-only data in flash memory and allow reading from flash memory
   5296        by means of ordinary C code, i.e. without the need of (inline)
   5297        assembler code:
   5298 
   5299 const __flash int values[] = { 42, 31 };
   5300 
   5301 int add_values (const __flash int *p, int i)
   5302 {
   5303     return values[i] + *p;
   5304 }
   5305 
   5306      * Support has been added for the AVR-specific configure option
   5307        --with-avrlibc=yes in order to arrange for better integration of
   5308        [37]AVR-Libc. This configure option is supported in avr-gcc 4.7.2
   5309        and newer and will only take effect in non-RTEMS configurations. If
   5310        avr-gcc is configured for RTEMS, the option will be ignored which
   5311        is the same as specifying --with-avrlibc=no. See [38]PR54461 for
   5312        more technical details.
   5313      * Support for AVR-specific [39]built-in functions has been added.
   5314      * Support has been added for the signed and unsigned 24-bit scalar
   5315        integer types __int24 and __uint24.
   5316      * New command-line options -maccumulate-args, -mbranch-cost=cost and
   5317        -mstrict-X were added to allow better fine-tuning of code
   5318        optimization.
   5319      * The command-line option -fdata-sections now also takes affect on
   5320        the section names of variables with the progmem attribute.
   5321      * A new inline assembler print modifier %i to print a RAM address as
   5322        I/O address has been added:
   5323 
   5324 #include <avr/io.h> /* Port Definitions from AVR-LibC */
   5325 
   5326 void set_portb (uint8_t value)
   5327 {
   5328     asm volatile ("out %i0, %1" :: "n" (&PORTB), "r" (value) : "memory");
   5329 }
   5330 
   5331        The offset between an I/O address and the RAM address for that I/O
   5332        location is device-specific. This offset is taken into account when
   5333        printing a RAM address with the %i modifier so that the address is
   5334        suitable to be used as operand in an I/O command. The address must
   5335        be a constant integer known at compile time.
   5336      * The inline assembler constraint "R" to represent integers in the
   5337        range -6 ... 5 has been removed without replacement.
   5338      * Many optimizations to:
   5339           + 64-bit integer arithmetic
   5340           + Widening multiplication
   5341           + Integer division by a constant
   5342           + Avoid constant reloading in multi-byte instructions.
   5343           + Micro-optimizations for special instruction sequences.
   5344           + Generic built-in functions like __builtin_ffs*,
   5345             __builtin_clz*, etc.
   5346           + If-else decision trees generated by switch instructions
   5347           + Merging of data located in flash memory
   5348           + New libgcc variants for devices with 8-bit wide stack pointer
   5349           + ...
   5350      * Better documentation:
   5351           + Handling of EIND and indirect jumps on devices with more than
   5352             128 KiB of program memory.
   5353           + Handling of the RAMPD, RAMPX, RAMPY and RAMPZ special function
   5354             registers.
   5355           + Function attributes OS_main and OS_task.
   5356           + AVR-specific built-in macros.
   5357 
   5358   C6X
   5359 
   5360      * Support has been added for the Texas Instruments C6X family of
   5361        processors.
   5362 
   5363   CR16
   5364 
   5365      * Support has been added for National Semiconductor's CR16
   5366        architecture.
   5367 
   5368   Epiphany
   5369 
   5370      * Support has been added for Adapteva's Epiphany architecture.
   5371 
   5372   IA-32/x86-64
   5373 
   5374      * Support for Intel AVX2 intrinsics, built-in functions and code
   5375        generation is available via -mavx2.
   5376      * Support for Intel BMI2 intrinsics, built-in functions and code
   5377        generation is available via -mbmi2.
   5378      * Implementation and automatic generation of __builtin_clz* using the
   5379        lzcnt instruction is available via -mlzcnt.
   5380      * Support for Intel FMA3 intrinsics and code generation is available
   5381        via -mfma.
   5382      * A new -mfsgsbase command-line option is available that makes GCC
   5383        generate new segment register read/write instructions through
   5384        dedicated built-ins.
   5385      * Support for the new Intel rdrnd instruction is available via
   5386        -mrdrnd.
   5387      * Two additional AVX vector conversion instructions are available via
   5388        -mf16c.
   5389      * Support for new Intel processor codename IvyBridge with RDRND,
   5390        FSGSBASE and F16C is available through -march=core-avx-i.
   5391      * Support for the new Intel processor codename Haswell with AVX2,
   5392        FMA, BMI, BMI2, LZCNT is available through -march=core-avx2.
   5393      * Support for new AMD family 15h processors (Piledriver core) is now
   5394        available through -march=bdver2 and -mtune=bdver2 options.
   5395      * Support for [40]the x32 psABI is now available through the -mx32
   5396        option.
   5397      * Windows mingw targets are using the -mms-bitfields option by
   5398        default.
   5399      * Windows x86 targets are using the __thiscall calling convention for
   5400        C++ class-member functions.
   5401      * Support for the configure option --with-threads=posix for Windows
   5402        mingw targets.
   5403 
   5404   MIPS
   5405 
   5406      * GCC now supports thread-local storage (TLS) for MIPS16. This
   5407        requires GNU binutils 2.22 or later.
   5408      * GCC can now generate code specifically for the Cavium Octeon+ and
   5409        Octeon2 processors. The associated command-line options are
   5410        -march=octeon+ and -march=octeon2 respectively. Both options
   5411        require GNU binutils 2.22 or later.
   5412      * GCC can now work around certain 24k errata, under the control of
   5413        the command-line option -mfix-24k. These workarounds require GNU
   5414        binutils 2.20 or later.
   5415      * 32-bit MIPS GNU/Linux targets such as mips-linux-gnu can now build
   5416        n32 and n64 multilibs. The result is effectively a 64-bit GNU/Linux
   5417        toolchain that generates 32-bit code by default. Use the
   5418        configure-time option --enable-targets=all to select these extra
   5419        multilibs.
   5420      * Passing -fno-delayed-branch now also stops the assembler from
   5421        automatically filling delay slots.
   5422 
   5423   PowerPC/PowerPC64
   5424 
   5425      * Vectors of type vector long long or vector long are passed and
   5426        returned using the same method as other vectors with the VSX
   5427        instruction set. Previously GCC did not adhere to the ABI for
   5428        128-bit vectors with 64-bit integer base types (PR 48857). This
   5429        will also be fixed in the GCC 4.6.1 and 4.5.4 releases.
   5430      * A new option -mno-pointers-to-nested-functions was added to allow
   5431        AIX 32-bit/64-bit and GNU/Linux 64-bit PowerPC users to specify
   5432        that the compiler should not load up the chain register (r11)
   5433        before calling a function through a pointer. If you use this
   5434        option, you cannot call nested functions through a pointer, or call
   5435        other languages that might use the static chain.
   5436      * A new option msave-toc-indirect was added to allow AIX
   5437        32-bit/64-bit and GNU/Linux 64-bit PowerPC users control whether we
   5438        save the TOC in the prologue for indirect calls or generate the
   5439        save inline. This can speed up some programs that call through a
   5440        function pointer a lot, but it can slow down other functions that
   5441        only call through a function pointer in exceptional cases.
   5442      * The PowerPC port will now enable machine-specific built-in
   5443        functions when the user switches the target machine using the
   5444        #pragma GCC target or __attribute__ ((__target__ ("target"))) code
   5445        sequences. In addition, the target macros are updated. However, due
   5446        to the way the -save-temps switch is implemented, you won't see the
   5447        effect of these additional macros being defined in preprocessor
   5448        output.
   5449 
   5450   SH
   5451 
   5452      * A new option -msoft-atomic has been added. When it is specified,
   5453        GCC will generate GNU/Linux-compatible gUSA atomic sequences for
   5454        the new __atomic routines.
   5455      * Since it is neither supported by GAS nor officially documented,
   5456        code generation for little endian SH2A has been disabled.
   5457        Specifying -ml with -m2a* will now result in a compiler error.
   5458      * The defunct -mbranch-cost option has been fixed.
   5459      * Some improvements to the generated code of:
   5460           + Utilization of the tst #imm,R0 instruction.
   5461           + Dynamic shift instructions on SH2A.
   5462           + Integer absolute value calculations.
   5463      * The -mdiv= option for targets other than SHmedia has been fixed and
   5464        documented.
   5465 
   5466   SPARC
   5467 
   5468      * The option -mflat has been reinstated. When it is specified, the
   5469        compiler will generate code for a single register window model.
   5470        This is essentially a new implementation and the corresponding
   5471        debugger support has been added to GDB 7.4.
   5472      * Support for the options -mtune=native and -mcpu=native has been
   5473        added on selected native platforms (GNU/Linux and Solaris).
   5474      * Support for the SPARC T3 (Niagara 3) processor has been added.
   5475      * VIS:
   5476           + An intrinsics header visintrin.h has been added.
   5477           + Builtin intrinsics for the VIS 1.0 edge handling and pixel
   5478             compare instructions have been added.
   5479           + The little-endian version of alignaddr is now supported.
   5480           + When possible, VIS builtins are marked const, which should
   5481             increase the compiler's ability to optimize VIS operations.
   5482           + The compiler now properly tracks the %gsr register and how it
   5483             behaves as an input for various VIS instructions.
   5484           + Akin to fzero, the compiler can now generate fone instructions
   5485             in order to set all of the bits of a floating-point register
   5486             to 1.
   5487           + The documentation for the VIS intrinsics in the GCC manual has
   5488             been brought up to date and many inaccuracies were fixed.
   5489           + Intrinsics for the VIS 2.0 bmask, bshuffle, and
   5490             non-condition-code setting edge instructions have been added.
   5491             Their availability is controlled by the new -mvis2 and
   5492             -mno-vis2 options. They are enabled by default on
   5493             UltraSPARC-III and later CPUs.
   5494      * Support for UltraSPARC Fused Multiply-Add floating-point extensions
   5495        has been added. These instructions are enabled by default on SPARC
   5496        T3 (Niagara 3) and later CPUs.
   5497 
   5498   TILE-Gx/TILEPro
   5499 
   5500      * Support has been added for the Tilera TILE-Gx and TILEPro families
   5501        of processors.
   5502 
   5503 Other significant improvements
   5504 
   5505      * A new option (-grecord-gcc-switches) was added that appends
   5506        compiler command-line options that might affect code generation to
   5507        the DW_AT_producer attribute string in the DWARF debugging
   5508        information.
   5509      * GCC now supports various new GNU extensions to the DWARF debugging
   5510        information format, like [41]entry value and [42]call site
   5511        information, [43]typed DWARF stack or [44]a more compact macro
   5512        representation. Support for these extensions has been added to GDB
   5513        7.4. They can be disabled through the -gstrict-dwarf command-line
   5514        option.
   5515 
   5516 GCC 4.7.1
   5517 
   5518    This is the [45]list of problem reports (PRs) from GCC's bug tracking
   5519    system that are known to be fixed in the 4.7.1 release. This list might
   5520    not be complete (that is, it is possible that some PRs that have been
   5521    fixed are not listed here).
   5522 
   5523    The Go front end in the 4.7.1 release fully supports the [46]Go 1
   5524    language standard.
   5525 
   5526 GCC 4.7.2
   5527 
   5528    This is the [47]list of problem reports (PRs) from GCC's bug tracking
   5529    system that are known to be fixed in the 4.7.2 release. This list might
   5530    not be complete (that is, it is possible that some PRs that have been
   5531    fixed are not listed here).
   5532 
   5533 GCC 4.7.3
   5534 
   5535    This is the [48]list of problem reports (PRs) from GCC's bug tracking
   5536    system that are known to be fixed in the 4.7.3 release. This list might
   5537    not be complete (that is, it is possible that some PRs that have been
   5538    fixed are not listed here).
   5539 
   5540 GCC 4.7.4
   5541 
   5542    This is the [49]list of problem reports (PRs) from GCC's bug tracking
   5543    system that are known to be fixed in the 4.7.4 release. This list might
   5544    not be complete (that is, it is possible that some PRs that have been
   5545    fixed are not listed here).
   5546 
   5547 
   5548     For questions related to the use of GCC, please consult these web
   5549     pages and the [50]GCC manuals. If that fails, the
   5550     [51]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   5551     web pages and the development of GCC are welcome on our developer
   5552     list at [52]gcc (a] gcc.gnu.org. All of [53]our lists have public
   5553     archives.
   5554 
   5555    Copyright (C) [54]Free Software Foundation, Inc. Verbatim copying and
   5556    distribution of this entire article is permitted in any medium,
   5557    provided this notice is preserved.
   5558 
   5559    These pages are [55]maintained by the GCC team. Last modified
   5560    2018-09-30[56].
   5561 
   5562 References
   5563 
   5564    1. https://gcc.gnu.org/ml/gcc-patches/2011-03/msg01263.html
   5565    2. http://savannah.nongnu.org/bugs/?35407
   5566    3. https://gcc.gnu.org/PR18145
   5567    4. https://gcc.gnu.org/gcc-4.7/porting_to.html
   5568    5. http://www.openmp.org/specifications/
   5569    6. https://gcc.gnu.org/wiki/TransactionalMemory
   5570    7. https://gcc.gnu.org/wiki/Atomic/GCCMM
   5571    8. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
   5572    9. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
   5573   10. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
   5574   11. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
   5575   12. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
   5576   13. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
   5577   14. https://gcc.gnu.org/PR14258
   5578   15. https://gcc.gnu.org/PR35688
   5579   16. https://gcc.gnu.org/onlinedocs/gcc-4.7.4/libstdc++/manual/manual/status.html#status.iso.2011
   5580   17. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254
   5581   18. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Optimize-Options.html#index-Ofast-689
   5582   19. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfno-protect-parens_007d-270
   5583   20. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254
   5584   21. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfrontend-optimize_007d-275
   5585   22. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWfunction-elimination_007d-170
   5586   23. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270
   5587   24. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149
   5588   25. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html
   5589   26. https://docs.microsoft.com/en-us/windows/desktop/wer/collecting-user-mode-dumps
   5590   27. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183
   5591   28. https://gcc.gnu.org/wiki/Fortran2003Status
   5592   29. https://gcc.gnu.org/wiki/OOP
   5593   30. https://gcc.gnu.org/wiki/Fortran2008Status
   5594   31. https://gcc.gnu.org/wiki/Coarray
   5595   32. https://gcc.gnu.org/wiki/CoarrayLib
   5596   33. https://gcc.gnu.org/wiki/TS29113Status
   5597   34. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bstd_003d_007d_0040var_007bstd_007d-option-53
   5598   35. https://golang.org/doc/go1
   5599   36. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html
   5600   37. http://nongnu.org/avr-libc/
   5601   38. https://gcc.gnu.org/PR54461
   5602   39. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built%5f002din-Functions.html
   5603   40. https://sites.google.com/site/x32abi/
   5604   41. http://www.dwarfstd.org/ShowIssue.php?issue=100909.1
   5605   42. http://www.dwarfstd.org/ShowIssue.php?issue=100909.2
   5606   43. http://www.dwarfstd.org/ShowIssue.php?issue=140425.1
   5607   44. http://www.dwarfstd.org/ShowIssue.php?issue=110722.1
   5608   45. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.1
   5609   46. https://golang.org/doc/go1
   5610   47. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.2
   5611   48. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.3
   5612   49. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.4
   5613   50. https://gcc.gnu.org/onlinedocs/
   5614   51. mailto:gcc-help (a] gcc.gnu.org
   5615   52. mailto:gcc (a] gcc.gnu.org
   5616   53. https://gcc.gnu.org/lists.html
   5617   54. https://www.fsf.org/
   5618   55. https://gcc.gnu.org/about.html
   5619   56. http://validator.w3.org/check/referer
   5620 ======================================================================
   5621 http://gcc.gnu.org/gcc-4.6/index.html
   5622 
   5623                              GCC 4.6 Release Series
   5624 
   5625    April 12, 2013
   5626 
   5627    The [1]GNU project and the GCC developers are pleased to announce the
   5628    release of GCC 4.6.4.
   5629 
   5630    This release is a bug-fix release, containing fixes for regressions in
   5631    GCC 4.6.3 relative to previous releases of GCC.
   5632 
   5633    This release series is no longer maintained.
   5634 
   5635 Release History
   5636 
   5637    GCC 4.6.4
   5638           April 12, 2013 ([2]changes, [3]documentation)
   5639 
   5640    GCC 4.6.3
   5641           March 1, 2012 ([4]changes, [5]documentation)
   5642 
   5643    GCC 4.6.2
   5644           October 26, 2011 ([6]changes, [7]documentation)
   5645 
   5646    GCC 4.6.1
   5647           June 27, 2011 ([8]changes, [9]documentation)
   5648 
   5649    GCC 4.6.0
   5650           March 25, 2011 ([10]changes, [11]documentation)
   5651 
   5652 References and Acknowledgements
   5653 
   5654    GCC used to stand for the GNU C Compiler, but since the compiler
   5655    supports several other languages aside from C, it now stands for the
   5656    GNU Compiler Collection.
   5657 
   5658    A list of [12]successful builds is updated as new information becomes
   5659    available.
   5660 
   5661    The GCC developers would like to thank the numerous people that have
   5662    contributed new features, improvements, bug fixes, and other changes as
   5663    well as test results to GCC. This [13]amazing group of volunteers is
   5664    what makes GCC successful.
   5665 
   5666    For additional information about GCC please refer to the [14]GCC
   5667    project web site or contact the [15]GCC development mailing list.
   5668 
   5669    To obtain GCC please use [16]our mirror sites or [17]our SVN server.
   5670 
   5671 
   5672     For questions related to the use of GCC, please consult these web
   5673     pages and the [18]GCC manuals. If that fails, the
   5674     [19]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   5675     web pages and the development of GCC are welcome on our developer
   5676     list at [20]gcc (a] gcc.gnu.org. All of [21]our lists have public
   5677     archives.
   5678 
   5679    Copyright (C) [22]Free Software Foundation, Inc. Verbatim copying and
   5680    distribution of this entire article is permitted in any medium,
   5681    provided this notice is preserved.
   5682 
   5683    These pages are [23]maintained by the GCC team. Last modified
   5684    2018-09-30[24].
   5685 
   5686 References
   5687 
   5688    1. http://www.gnu.org/
   5689    2. http://gcc.gnu.org/gcc-4.6/changes.html
   5690    3. https://gcc.gnu.org/onlinedocs/4.6.4/
   5691    4. http://gcc.gnu.org/gcc-4.6/changes.html
   5692    5. https://gcc.gnu.org/onlinedocs/4.6.3/
   5693    6. http://gcc.gnu.org/gcc-4.6/changes.html
   5694    7. https://gcc.gnu.org/onlinedocs/4.6.2/
   5695    8. http://gcc.gnu.org/gcc-4.6/changes.html
   5696    9. https://gcc.gnu.org/onlinedocs/4.6.1/
   5697   10. http://gcc.gnu.org/gcc-4.6/changes.html
   5698   11. https://gcc.gnu.org/onlinedocs/4.6.0/
   5699   12. http://gcc.gnu.org/gcc-4.6/buildstat.html
   5700   13. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   5701   14. http://gcc.gnu.org/index.html
   5702   15. mailto:gcc (a] gcc.gnu.org
   5703   16. http://gcc.gnu.org/mirrors.html
   5704   17. http://gcc.gnu.org/svn.html
   5705   18. https://gcc.gnu.org/onlinedocs/
   5706   19. mailto:gcc-help (a] gcc.gnu.org
   5707   20. mailto:gcc (a] gcc.gnu.org
   5708   21. https://gcc.gnu.org/lists.html
   5709   22. https://www.fsf.org/
   5710   23. https://gcc.gnu.org/about.html
   5711   24. http://validator.w3.org/check/referer
   5712 ======================================================================
   5713 http://gcc.gnu.org/gcc-4.6/changes.html
   5714 
   5715                              GCC 4.6 Release Series
   5716                         Changes, New Features, and Fixes
   5717 
   5718 Caveats
   5719 
   5720      * The options -b <machine> and -V <version> have been removed because
   5721        they were unreliable. Instead, users should directly run
   5722        <machine>-gcc when cross-compiling, or <machine>-gcc-<version> to
   5723        run a different version of gcc.
   5724      * GCC now has stricter checks for invalid command-line options. In
   5725        particular, when gcc was called to link object files rather than
   5726        compile source code, it would previously accept and ignore all
   5727        options starting with --, including linker options such as
   5728        --as-needed and --export-dynamic, although such options would
   5729        result in errors if any source code was compiled. Such options, if
   5730        unknown to the compiler, are now rejected in all cases; if the
   5731        intent was to pass them to the linker, options such as
   5732        -Wl,--as-needed should be used.
   5733      * Versions of the GNU C library up to and including 2.11.1 included
   5734        an [1]incorrect implementation of the cproj function. GCC optimizes
   5735        its builtin cproj according to the behavior specified and allowed
   5736        by the ISO C99 standard. If you want to avoid discrepancies between
   5737        the C library and GCC's builtin transformations when using cproj in
   5738        your code, use GLIBC 2.12 or later. If you are using an older GLIBC
   5739        and actually rely on the incorrect behavior of cproj, then you can
   5740        disable GCC's transformations using -fno-builtin-cproj.
   5741      * The C-only intermodule optimization framework (IMA, enabled by
   5742        -combine) has been removed in favor of the new generic link-time
   5743        optimization framework (LTO) introduced in [2]GCC 4.5.0.
   5744      * GCC now ships with the LGPL-licensed libquadmath library, which
   5745        provides quad-precision mathematical functions for targets with a
   5746        __float128 datatype. __float128 is available for targets on 32-bit
   5747        x86, x86-64 and Itanium architectures. The libquadmath library is
   5748        automatically built on such targets when building the Fortran
   5749        compiler.
   5750      * New -Wunused-but-set-variable and -Wunused-but-set-parameter
   5751        warnings were added for C, C++, Objective-C and Objective-C++.
   5752        These warnings diagnose variables respective parameters which are
   5753        only set in the code and never otherwise used. Usually such
   5754        variables are useless and often even the value assigned to them is
   5755        computed needlessly, sometimes expensively. The
   5756        -Wunused-but-set-variable warning is enabled by default by -Wall
   5757        flag and -Wunused-but-set-parameter by -Wall -Wextra flags.
   5758      * On ARM, a bug has been fixed in GCC's implementation of the AAPCS
   5759        rules for the layout of vectors that could lead to wrong code being
   5760        generated. Vectors larger than 8 bytes in size are now by default
   5761        aligned to an 8-byte boundary. This is an ABI change: code that
   5762        makes explicit use of vector types may be incompatible with binary
   5763        objects built with older versions of GCC. Auto-vectorized code is
   5764        not affected by this change. (This change affects GCC versions
   5765        4.6.4 and later, with the exception of versions 4.7.0 and 4.7.1.)
   5766      * On AVR, variables with the progmem attribute to locate data in
   5767        flash memory must be qualified as const.
   5768      * Support for a number of older systems and recently unmaintained or
   5769        untested target ports of GCC has been declared obsolete in GCC 4.6.
   5770        Unless there is activity to revive them, the next release of GCC
   5771        will have their sources permanently removed.
   5772        All GCC ports for the following processor architectures have been
   5773        declared obsolete:
   5774           + Argonaut ARC (arc-*)
   5775           + National Semiconductor CRX (crx-*)
   5776           + Motorola 68HC11 and 68HC12 (m68hc11-*-*, m6811-*-*,
   5777             m68hc12-*-*, m6812-*-*)
   5778           + Sunplus S+core (score-*)
   5779        The following ports for individual systems on particular
   5780        architectures have been obsoleted:
   5781           + Interix (i[34567]86-*-interix3*)
   5782           + NetWare x86 (i[3456x]86-*-netware*)
   5783           + Generic ARM PE (arm-*-pe* other than arm*-wince-pe*)
   5784           + MCore PE (mcore-*-pe*)
   5785           + SH SymbianOS (sh*-*-symbianelf*)
   5786           + GNU Hurd on Alpha and PowerPC (alpha*-*-gnu*, powerpc*-*-gnu*)
   5787           + M68K uClinux old ABI (m68k-*-uclinuxoldabi*)
   5788           + a.out NetBSD (arm*-*-netbsd*, i[34567]86-*-netbsd*,
   5789             vax-*-netbsd*, but not *-*-netbsdelf*)
   5790        The i[34567]86-*-pe alias for Cygwin targets has also been
   5791        obsoleted; users should configure for i[34567]86-*-cygwin* instead.
   5792        Certain configure options to control the set of libraries built
   5793        with GCC on some targets have been obsoleted. On ARM targets, the
   5794        options --disable-fpu, --disable-26bit, --disable-underscore,
   5795        --disable-interwork, --disable-biendian and --disable-nofmult have
   5796        been obsoleted. On MIPS targets, the options
   5797        --disable-single-float, --disable-biendian and --disable-softfloat
   5798        have been obsoleted.
   5799      * Support has been removed for all the [3]configurations obsoleted in
   5800        GCC 4.5.
   5801      * More information on porting to GCC 4.6 from previous versions of
   5802        GCC can be found in the [4]porting guide for this release.
   5803 
   5804 General Optimizer Improvements
   5805 
   5806      * A new general optimization level, -Ofast, has been introduced. It
   5807        combines the existing optimization level -O3 with options that can
   5808        affect standards compliance but result in better optimized code.
   5809        For example, -Ofast enables -ffast-math.
   5810      * Link-time optimization improvements:
   5811           + The [5]Scalable Whole Program Optimizer (WHOPR) project has
   5812             stabilized to the point of being usable. It has become the
   5813             default mode when using the LTO optimization model. Link time
   5814             optimization can now split itself into multiple parallel
   5815             compilations. Parallelism is controlled with -flto=n (where n
   5816             specifies the number of compilations to execute in parallel).
   5817             GCC can also cooperate with a GNU make job server by
   5818             specifying the -flto=jobserver option and adding + to the
   5819             beginning of the Makefile rule executing the linker.
   5820             Classical LTO mode can be enforced by -flto-partition=none.
   5821             This may result in small code quality improvements.
   5822           + A large number of bugs were fixed. GCC itself, Mozilla Firefox
   5823             and other large applications can be built with LTO enabled.
   5824           + The linker plugin support improvements
   5825                o Linker plugin is now enabled by default when the linker
   5826                  is detected to have plugin support. This is the case for
   5827                  GNU ld 2.21.51 or newer (on ELF and Cygwin targets) and
   5828                  the Gold linker on ELF targets. Plugin support of the
   5829                  Apple linker on Darwin is not compatible with GCC. The
   5830                  linker plugin can also be controlled by the
   5831                  -fuse-linker-plugin command-line option.
   5832                o Resolution information from the linker plugin is used to
   5833                  drive whole program assumptions. Use of the linker plugin
   5834                  results in more aggressive optimization on binaries and
   5835                  on shared libraries that use the hidden visibility
   5836                  attribute. Consequently the use of -fwhole-program is not
   5837                  necessary in addition to LTO.
   5838           + Hidden symbols used from non-LTO objects now have to be
   5839             explicitly annotated with externally_visible when the linker
   5840             plugin is not used.
   5841           + C++ inline functions and virtual tables are now privatized
   5842             more aggressively, leading to better inter-procedural
   5843             optimization and faster dynamic linking.
   5844           + Memory usage and intermediate language streaming performance
   5845             have been improved.
   5846           + Static constructors and destructors from individual units are
   5847             inlined into a single function. This can significantly improve
   5848             startup times of large C++ applications where static
   5849             constructors are very common. For example, static constructors
   5850             are used when including the iostream header.
   5851           + Support for the Ada language has been added.
   5852      * Interprocedural optimization improvements
   5853           + The interprocedural framework was re-tuned for link time
   5854             optimization. Several scalability issues were resolved.
   5855           + Improved auto-detection of const and pure functions. Newly,
   5856             noreturn functions are auto-detected.
   5857             The [6]-Wsuggest-attribute=[const|pure|noreturn] flag is
   5858             available that informs users when adding attributes to headers
   5859             might improve code generation.
   5860           + A number of inlining heuristic improvements. In particular:
   5861                o Partial inlining is now supported and enabled by default
   5862                  at -O2 and greater. The feature can be controlled via
   5863                  -fpartial-inlining.
   5864                  Partial inlining splits functions with short hot path to
   5865                  return. This allows more aggressive inlining of the hot
   5866                  path leading to better performance and often to code size
   5867                  reductions (because cold parts of functions are not
   5868                  duplicated).
   5869                o Scalability for large compilation units was improved
   5870                  significantly.
   5871                o Inlining of callbacks is now more aggressive.
   5872                o Virtual methods are considered for inlining when the
   5873                  caller is inlined and devirtualization is then possible.
   5874                o Inlining when optimizing for size (either in cold regions
   5875                  of a program or when compiling with -Os) was improved to
   5876                  better handle C++ programs with larger abstraction
   5877                  penalty, leading to smaller and faster code.
   5878           + The IPA reference optimization pass detecting global variables
   5879             used or modified by functions was strengthened and sped up.
   5880           + Functions whose address was taken are now optimized out when
   5881             all references to them are dead.
   5882           + A new inter-procedural static profile estimation pass detects
   5883             functions that are executed once or unlikely to be executed.
   5884             Unlikely executed functions are optimized for size. Functions
   5885             executed once are optimized for size except for the inner
   5886             loops.
   5887           + On most targets with named section support, functions used
   5888             only at startup (static constructors and main), functions used
   5889             only at exit and functions detected to be cold are placed into
   5890             separate text segment subsections. This extends the
   5891             -freorder-functions feature and is controlled by the same
   5892             switch. The goal is to improve the startup time of large C++
   5893             programs.
   5894             Proper function placement requires linker support. GNU ld
   5895             2.21.51 on ELF targets was updated to place those functions
   5896             together within the text section leading to better code
   5897             locality and faster startup times of large C++ programs. The
   5898             feature is also supported in the Apple linker. Support in the
   5899             gold linker is planned.
   5900      * A new switch -fstack-usage has been added. It makes the compiler
   5901        output stack usage information for the program, on a per-function
   5902        basis, in an auxiliary file.
   5903      * A new switch -fcombine-stack-adjustments has been added. It can be
   5904        used to enable or disable the compiler's stack-slot combining pass
   5905        which before was enabled automatically at -O1 and above, but could
   5906        not be controlled on its own.
   5907      * A new switch -fstrict-volatile-bitfields has been added. Using it
   5908        indicates that accesses to volatile bitfields should use a single
   5909        access of the width of the field's type. This option can be useful
   5910        for precisely defining and accessing memory-mapped peripheral
   5911        registers from C or C++.
   5912 
   5913 Compile time and memory usage improvements
   5914 
   5915      * Datastructures used by the dataflow framework in GCC were
   5916        reorganized for better memory usage and more cache locality.
   5917        Compile time is improved especially on units with large functions
   5918        (possibly resulting from a lot of inlining) not fitting into the
   5919        processor cache. The compile time of the GCC C compiler binary with
   5920        link-time optimization went down by over 10% (benchmarked on x86-64
   5921        target).
   5922 
   5923 New Languages and Language specific improvements
   5924 
   5925   Ada
   5926 
   5927      * Stack checking has been improved on selected architectures (Alpha,
   5928        IA-32/x86-64, RS/6000 and SPARC): it now will detect stack
   5929        overflows in all cases on these architectures.
   5930      * Initial support for Ada 2012 has been added.
   5931 
   5932   C family
   5933 
   5934      * A new warning, enabled by -Wdouble-promotion, has been added that
   5935        warns about cases where a value of type float is implicitly
   5936        promoted to double. This is especially helpful for CPUs that handle
   5937        the former in hardware, but emulate the latter in software.
   5938      * A new function attribute leaf was introduced. This attribute allows
   5939        better inter-procedural optimization across calls to functions that
   5940        return to the current unit only via returning or exception
   5941        handling. This is the case for most library functions that have no
   5942        callbacks.
   5943      * Support for a new data type __int128 for targets having wide enough
   5944        machine-mode support.
   5945      * The new function attribute callee_pop_aggregate allows to specify
   5946        if the caller or callee is responsible for popping the aggregate
   5947        return pointer value from the stack.
   5948      * Support for selectively enabling and disabling warnings via #pragma
   5949        GCC diagnostic has been added. For instance:
   5950 #pragma GCC diagnostic error "-Wuninitialized"
   5951   foo(a);                       /* error is given for this one */
   5952 #pragma GCC diagnostic push
   5953 #pragma GCC diagnostic ignored "-Wuninitialized"
   5954   foo(b);                       /* no diagnostic for this one */
   5955 #pragma GCC diagnostic pop
   5956   foo(c);                       /* error is given for this one */
   5957 #pragma GCC diagnostic pop
   5958   foo(d);                       /* depends on command-line options */
   5959 
   5960      * The -fmax-errors=N option is now supported. Using this option
   5961        causes the compiler to exit after N errors have been issued.
   5962 
   5963   C
   5964 
   5965      * There is now experimental support for some features from the
   5966        upcoming C1X revision of the ISO C standard. This support may be
   5967        selected with -std=c1x, or -std=gnu1x for C1X with GNU extensions.
   5968        Note that this support is experimental and may change incompatibly
   5969        in future releases for consistency with changes to the C1X standard
   5970        draft. The following features are newly supported as described in
   5971        the N1539 draft of C1X (with changes agreed at the March 2011 WG14
   5972        meeting); some other features were already supported with no
   5973        compiler changes being needed, or have some support but not in full
   5974        accord with N1539 (as amended).
   5975           + Static assertions (_Static_assert keyword)
   5976           + Typedef redefinition
   5977           + New macros in <float.h>
   5978           + Anonymous structures and unions
   5979      * The new -fplan9-extensions option directs the compiler to support
   5980        some extensions for anonymous struct fields which are implemented
   5981        by the Plan 9 compiler. A pointer to a struct may be automatically
   5982        converted to a pointer to an anonymous field when calling a
   5983        function, in order to make the types match. An anonymous struct
   5984        field whose type is a typedef name may be referred to using the
   5985        typedef name.
   5986 
   5987   C++
   5988 
   5989      * Improved [7]experimental support for the upcoming C++0x ISO C++
   5990        standard, including support for constexpr (thanks to Gabriel Dos
   5991        Reis and Jason Merrill), nullptr (thanks to Magnus Fromreide),
   5992        noexcept, unrestricted unions, range-based for loops (thanks to
   5993        Rodrigo Rivas Costa), opaque enum declarations (thanks also to
   5994        Rodrigo), implicitly deleted functions and implicit move
   5995        constructors.
   5996      * When an extern declaration within a function does not match a
   5997        declaration in the enclosing context, G++ now properly declares the
   5998        name within the namespace of the function rather than the namespace
   5999        which was open just before the function definition ([8]c++/43145).
   6000      * GCC now warns by default when casting integers to larger pointer
   6001        types. These warnings can be disabled with the option
   6002        -Wno-int-to-pointer-cast, which is now also available in C++.
   6003      * G++ no longer optimizes using the assumption that a value of
   6004        enumeration type will fall within the range specified by the
   6005        standard, since that assumption is easily violated with a
   6006        conversion from integer type ([9]c++/43680). The old behavior can
   6007        be restored with -fstrict-enums.
   6008      * The new -fnothrow-opt flag changes the semantics of a throw()
   6009        exception specification to match the proposed semantics of the
   6010        noexcept specification: just call terminate if an exception tries
   6011        to propagate out of a function with such an exception
   6012        specification. This dramatically reduces or eliminates the code
   6013        size overhead from adding the exception specification.
   6014      * The new -Wnoexcept flag will suggest adding a noexcept qualifier to
   6015        a function that the compiler can tell doesn't throw if it would
   6016        change the value of a noexcept expression.
   6017      * The -Wshadow option now warns if a local variable or type
   6018        declaration shadows another type in C++. Note that the compiler
   6019        will not warn if a local variable shadows a struct/class/enum, but
   6020        will warn if it shadows an explicit typedef.
   6021      * When an identifier is not found in the current scope, G++ now
   6022        offers suggestions about which identifier might have been intended.
   6023      * G++ now issues clearer diagnostics for missing semicolons after
   6024        class, struct, and union definitions.
   6025      * G++ now issues clearer diagnostics for missing semicolons after
   6026        class member declarations.
   6027      * G++ now issues clearer diagnostics when a colon is used in a place
   6028        where a double-colon was intended.
   6029      * G++ no longer accepts mutable on reference members ([10]c++/33558).
   6030        Use -fpermissive to allow the old, non-conforming behaviour.
   6031      * A few mangling fixes have been made, to attribute const/volatile on
   6032        function pointer types, decltype of a plain decl, and use of a
   6033        function parameter in the declaration of another parameter. By
   6034        default the compiler still uses the old mangling, but emits aliases
   6035        with the new mangling on targets that support strong aliases. Users
   6036        can switch over entirely to the new mangling with -fabi-version=5
   6037        or -fabi-version=0. -Wabi will now warn about code that uses the
   6038        old mangling.
   6039      * In 4.6.0 and 4.6.1 G++ no longer allows objects of const-qualified
   6040        type to be default initialized unless the type has a user-declared
   6041        default constructor. In 4.6.2 G++ implements the proposed
   6042        resolution of [11]DR 253, so default initialization is allowed if
   6043        it initializes all subobjects. Code that fails to compile can be
   6044        fixed by providing an initializer e.g.
   6045     struct A { A(); };
   6046     struct B : A { int i; };
   6047     const B b = B();
   6048        Use -fpermissive to allow the old, non-conforming behaviour.
   6049 
   6050     Runtime Library (libstdc++)
   6051 
   6052      * [12]Improved experimental support for the upcoming ISO C++
   6053        standard, C++0x, including using constexpr and nullptr.
   6054      * Performance improvements to the [13]Debug Mode, thanks to Franc,ois
   6055        Dumont.
   6056      * Atomic operations used for reference-counting are annotated so that
   6057        they can be understood by race detectors such as Helgrind, see
   6058        [14]Data Race Hunting.
   6059      * Most libstdc++ standard headers have been changed to no longer
   6060        include the cstddef header as an implementation detail. Code that
   6061        relied on that header being included as side-effect of including
   6062        other standard headers will need to include cstddef explicitly.
   6063 
   6064   Fortran
   6065 
   6066      * On systems supporting the libquadmath library, GNU Fortran now also
   6067        supports a quad-precision, kind=16 floating-point data type
   6068        (REAL(16), COMPLEX(16)). As the data type is not fully supported in
   6069        hardware, calculations might be one to two orders of magnitude
   6070        slower than with the 4, 8 or 10 bytes floating-point data types.
   6071        This change does not affect systems which support REAL(16) in
   6072        hardware nor those which do not support libquadmath.
   6073      * Much improved compile time for large array constructors.
   6074      * In order to reduce execution time and memory consumption, use of
   6075        temporary arrays in assignment expressions is avoided for many
   6076        cases. The compiler now reverses loops in order to avoid generating
   6077        a temporary array where possible.
   6078      * Improved diagnostics, especially with -fwhole-file.
   6079      * The -fwhole-file flag is now enabled by default. This improves code
   6080        generation and diagnostics. It can be disabled using the deprecated
   6081        -fno-whole-file flag.
   6082      * Support the generation of Makefile dependencies via the [15]-M...
   6083        flags of GCC; you may need to specify the -cpp option in addition.
   6084        The dependencies take modules, Fortran's include, and CPP's
   6085        #include into account. Note: Using -M for the module path is no
   6086        longer supported, use -J instead.
   6087      * The flag -Wconversion has been modified to only issue warnings
   6088        where a conversion leads to information loss. This drastically
   6089        reduces the number of warnings; -Wconversion is thus now enabled
   6090        with -Wall. The flag -Wconversion-extra has been added and also
   6091        warns about other conversions; -Wconversion-extra typically issues
   6092        a huge number of warnings, most of which can be ignored.
   6093      * A new command-line option -Wunused-dummy-argument warns about
   6094        unused dummy arguments and is included in -Wall. Before,
   6095        -Wunused-variable also warned about unused dummy arguments.
   6096      * Fortran 2003 support has been extended:
   6097           + Improved support for polymorphism between libraries and
   6098             programs and for complicated inheritance patterns (cf.
   6099             [16]object-oriented programming).
   6100           + Experimental support of the ASSOCIATE construct.
   6101           + In pointer assignments it is now possible to specify the lower
   6102             bounds of the pointer and, for a rank-1 or a simply contiguous
   6103             data-target, to remap the bounds.
   6104           + Automatic (re)allocation: In intrinsic assignments to
   6105             allocatable variables the left-hand side will be automatically
   6106             allocated (if unallocated) or reallocated (if the shape or
   6107             type parameter is different). To avoid the small performance
   6108             penalty, you can use a(:) = ... instead of a = ... for arrays
   6109             and character strings - or disable the feature using -std=f95
   6110             or -fno-realloc-lhs.
   6111           + Deferred type parameter: For scalar allocatable and pointer
   6112             variables the character length can be deferred.
   6113           + Namelist variables with allocatable and pointer attribute and
   6114             nonconstant length type parameter are supported.
   6115      * Fortran 2008 support has been extended:
   6116           + Experimental [17]coarray support (for one image only, i.e.
   6117             num_images() == 1); use the [18]-fcoarray=single flag to
   6118             enable it.
   6119           + The STOP and the new ERROR STOP statements now support all
   6120             constant expressions.
   6121           + Support for the CONTIGUOUS attribute.
   6122           + Support for ALLOCATE with MOLD.
   6123           + Support for the STORAGE_SIZE intrinsic inquiry function.
   6124           + Support of the NORM2 and PARITY intrinsic functions.
   6125           + The following bit intrinsics were added: POPCNT and POPPAR for
   6126             counting the number of 1 bits and returning the parity; BGE,
   6127             BGT, BLE, and BLT for bitwise comparisons; DSHIFTL and DSHIFTR
   6128             for combined left and right shifts, MASKL and MASKR for simple
   6129             left and right justified masks, MERGE_BITS for a bitwise merge
   6130             using a mask, SHIFTA, SHIFTL and SHIFTR for shift operations,
   6131             and the transformational bit intrinsics IALL, IANY and
   6132             IPARITY.
   6133           + Support of the EXECUTE_COMMAND_LINE intrinsic subroutine.
   6134           + Support for the IMPURE attribute for procedures, which allows
   6135             for ELEMENTAL procedures without the restrictions of PURE.
   6136           + Null pointers (including NULL()) and not allocated variables
   6137             can be used as actual argument to optional non-pointer,
   6138             non-allocatable dummy arguments, denoting an absent argument.
   6139           + Non-pointer variables with TARGET attribute can be used as
   6140             actual argument to POINTER dummies with INTENT(IN)
   6141           + Pointers including procedure pointers and those in a derived
   6142             type (pointer components) can now be initialized by a target
   6143             instead of only by NULL.
   6144           + The EXIT statement (with construct-name) can now be used to
   6145             leave not only the DO but also the ASSOCIATE, BLOCK, IF,
   6146             SELECT CASE and SELECT TYPE constructs.
   6147           + Internal procedures can now be used as actual argument.
   6148           + The named constants INTEGER_KINDS, LOGICAL_KINDS, REAL_KINDS
   6149             and CHARACTER_KINDS of the intrinsic module ISO_FORTRAN_ENV
   6150             have been added; these arrays contain the supported kind
   6151             values for the respective types.
   6152           + The module procedures C_SIZEOF of the intrinsic module
   6153             ISO_C_BINDINGS and COMPILER_VERSION and COMPILER_OPTIONS of
   6154             ISO_FORTRAN_ENV have been implemented.
   6155           + Minor changes: obsolescence diagnostics for ENTRY was added
   6156             for -std=f2008; a line may start with a semicolon; for
   6157             internal and module procedures END can be used instead of END
   6158             SUBROUTINE and END FUNCTION; SELECTED_REAL_KIND now also takes
   6159             a RADIX argument; intrinsic types are supported for
   6160             TYPE(intrinsic-type-spec); multiple type-bound procedures can
   6161             be declared in a single PROCEDURE statement; implied-shape
   6162             arrays are supported for named constants (PARAMETER). The
   6163             transformational, three argument versions of BESSEL_JN and
   6164             BESSEL_YN were added - the elemental, two-argument version had
   6165             been added in GCC 4.4; note that the transformational
   6166             functions use a recurrence algorithm.
   6167 
   6168   Go
   6169 
   6170    Support for the [19]Go programming language has been added to GCC. It
   6171    is not enabled by default when you build GCC; use the
   6172    --enable-languages configure option to build it. The driver program for
   6173    compiling Go code is gccgo.
   6174 
   6175    Go is currently known to work on GNU/Linux and RTEMS. Solaris support
   6176    is in progress. It may or may not work on other platforms.
   6177 
   6178   Objective-C and Objective-C++
   6179 
   6180      * The -fobjc-exceptions flag is now required to enable Objective-C
   6181        exception and synchronization syntax (introduced by the keywords
   6182        @try, @catch, @finally and @synchronized).
   6183      * A number of Objective-C 2.0 features and extensions are now
   6184        supported by GCC. These features are enabled by default; you can
   6185        disable them by using the new -fobjc-std=objc1 command-line option.
   6186      * The Objective-C 2.0 dot-syntax is now supported. It is an
   6187        alternative syntax for using getters and setters; object.count is
   6188        automatically converted into [object count] or [object setCount:
   6189        ...] depending on context; for example if (object.count > 0) is
   6190        automatically compiled into the equivalent of if ([object count] >
   6191        0) while object.count = 0; is automatically compiled into the
   6192        equivalent ot [object setCount: 0];. The dot-syntax can be used
   6193        with instance and class objects and with any setters or getters, no
   6194        matter if they are part of a declared property or not.
   6195      * Objective-C 2.0 declared properties are now supported. They are
   6196        declared using the new @property keyword, and are most commonly
   6197        used in conjunction with the new Objective-C 2.0 dot-syntax. The
   6198        nonatomic, readonly, readwrite, assign, retain, copy, setter and
   6199        getter attributes are all supported. Marking declared properties
   6200        with __attribute__ ((deprecated)) is supported too.
   6201      * The Objective-C 2.0 @synthesize and @dynamic keywords are
   6202        supported. @synthesize causes the compiler to automatically
   6203        synthesize a declared property, while @dynamic is used to disable
   6204        all warnings for a declared property for which no implementation is
   6205        provided at compile time. Synthesizing declared properties requires
   6206        runtime support in most useful cases; to be able to use it with the
   6207        GNU runtime, appropriate helper functions have been added to the
   6208        GNU Objective-C runtime ABI, and are implemented by the GNU
   6209        Objective-C runtime library shipped with GCC.
   6210      * The Objective-C 2.0 fast enumeration syntax is supported in
   6211        Objective-C. This is currently not yet available in Objective-C++.
   6212        Fast enumeration requires support in the runtime, and such support
   6213        has been added to the GNU Objective-C runtime library (shipped with
   6214        GCC).
   6215      * The Objective-C 2.0 @optional keyword is supported. It allows you
   6216        to mark methods or properties in a protocol as optional as opposed
   6217        to required.
   6218      * The Objective-C 2.0 @package keyword is supported. It has currently
   6219        the same effect as the @public keyword.
   6220      * Objective-C 2.0 method attributes are supported. Currently the
   6221        supported attributes are deprecated, sentinel, noreturn and format.
   6222      * Objective-C 2.0 method argument attributes are supported. The most
   6223        widely used attribute is unused, to mark an argument as unused in
   6224        the implementation.
   6225      * Objective-C 2.0 class and protocol attributes are supported.
   6226        Currently the only supported attribute is deprecated.
   6227      * Objective-C 2.0 class extensions are supported. A class extension
   6228        has the same syntax as a category declaration with no category
   6229        name, and the methods and properties declared in it are added
   6230        directly to the main class. It is mostly used as an alternative to
   6231        a category to add methods to a class without advertising them in
   6232        the public headers, with the advantage that for class extensions
   6233        the compiler checks that all the privately declared methods are
   6234        actually implemented.
   6235      * As a result of these enhancements, GCC can now be used to build
   6236        Objective-C and Objective-C++ software that uses Foundation and
   6237        other important system frameworks with the NeXT runtime on Darwin 9
   6238        and Darwin 10 (OSX 10.5 and 10.6).
   6239      * Many bugs in the compiler have been fixed in this release; in
   6240        particular, LTO can now be used when compiling Objective-C and
   6241        Objective-C++ and the parser is much more robust in dealing with
   6242        invalid code.
   6243 
   6244     Runtime Library (libobjc)
   6245 
   6246      * The GNU Objective-C runtime library now defines the macro
   6247        __GNU_LIBOBJC__ (with a value that is increased at every release
   6248        where there is any change to the API) in objc/objc.h, making it
   6249        easy to determine if the GNU Objective-C runtime library is being
   6250        used, and if so, which version. Previous versions of the GNU
   6251        Objective-C runtime library (and other Objective-C runtime
   6252        libraries such as the Apple one) do not define this macro.
   6253      * A new Objective-C 2.0 API, almost identical to the one implemented
   6254        by the Apple Objective-C runtime, has been implemented in the GNU
   6255        Objective-C runtime library. The new API hides the internals of
   6256        most runtime structures but provides a more extensive set of
   6257        functions to operate on them. It is much easier, for example, to
   6258        create or modify classes at runtime. The new API also makes it
   6259        easier to port software from Apple to GNU as almost no changes
   6260        should be required. The old API is still supported for backwards
   6261        compatibility; including the old objc/objc-api.h header file
   6262        automatically selects the old API, while including the new
   6263        objc/runtime.h header file automatically selects the new API.
   6264        Support for the old API is being phased out and upgrading the
   6265        software to use the new API is strongly recommended. To check for
   6266        the availability of the new API, the __GNU_LIBOBJC__ macro can be
   6267        used as older versions of the GNU Objective-C runtime library,
   6268        which do not support the new API, do not define such a macro.
   6269      * Runtime support for @synchronized has been added.
   6270      * Runtime support for Objective-C 2.0 synthesized property accessors
   6271        has been added.
   6272      * Runtime support for Objective-C 2.0 fast enumeration has been
   6273        added.
   6274 
   6275 New Targets and Target Specific Improvements
   6276 
   6277   ARM
   6278 
   6279      * GCC now supports the Cortex-M4 processor implementing the v7-em
   6280        version of the architecture using the option -mcpu=cortex-m4.
   6281      * Scheduling descriptions for the Cortex-M4, the Neon and the
   6282        floating point units of the Cortex-A9 and a pipeline description
   6283        for the Cortex-A5 have been added.
   6284      * Synchronization primitives such as __sync_fetch_and_add and friends
   6285        are now inlined for supported architectures rather than calling
   6286        into a kernel helper function.
   6287      * SSA loop prefetching is enabled by default for the Cortex-A9 at
   6288        -O3.
   6289      * Several improvements were committed to improve code generation for
   6290        the ARM architecture including a rewritten implementation for load
   6291        and store multiples.
   6292      * Several enhancements were committed to improve SIMD code generation
   6293        for NEON by adding support for widening instructions, misaligned
   6294        loads and stores, vector conditionals and support for 64 bit
   6295        arithmetic.
   6296      * Support was added for the Faraday cores fa526, fa606te, fa626te,
   6297        fmp626te, fmp626 and fa726te and can be used with the respective
   6298        names as parameters to the -mcpu= option.
   6299      * Basic support was added for Cortex-A15 and is available through
   6300        -mcpu=cortex-a15.
   6301      * GCC for AAPCS configurations now more closely adheres to the AAPCS
   6302        specification by enabling -fstrict-volatile-bitfields by default.
   6303 
   6304   IA-32/x86-64
   6305 
   6306      * The new -fsplit-stack option permits programs to use a
   6307        discontiguous stack. This is useful for threaded programs, in that
   6308        it is no longer necessary to specify the maximum stack size when
   6309        creating a thread. This feature is currently only implemented for
   6310        32-bit and 64-bit x86 GNU/Linux targets.
   6311      * Support for emitting profiler counter calls before function
   6312        prologues. This is enabled via a new command-line option -mfentry.
   6313      * Optimization for the Intel Core 2 processors is now available
   6314        through the -march=core2 and -mtune=core2 options.
   6315      * Support for Intel Core i3/i5/i7 processors is now available through
   6316        the -march=corei7 and -mtune=corei7 options.
   6317      * Support for Intel Core i3/i5/i7 processors with AVX is now
   6318        available through the -march=corei7-avx and -mtune=corei7-avx
   6319        options.
   6320      * Support for AMD Bobcat (family 14) processors is now available
   6321        through the -march=btver1 and -mtune=btver1 options.
   6322      * Support for AMD Bulldozer (family 15) processors is now available
   6323        through the -march=bdver1 and -mtune=bdver1 options.
   6324      * The default setting (when not optimizing for size) for 32-bit
   6325        GNU/Linux and Darwin x86 targets has been changed to
   6326        -fomit-frame-pointer. The default can be reverted to
   6327        -fno-omit-frame-pointer by configuring GCC with the
   6328        --enable-frame-pointer configure option.
   6329      * Darwin, FreeBSD, Solaris 2, MinGW and Cygwin now all support
   6330        __float128 on 32-bit and 64-bit x86 targets.
   6331      * AVX floating-point arithmetic can now be enabled by default at
   6332        configure time with the new --with-fpmath=avx option.
   6333      * The SSA loop prefetching pass is enabled when using -O3 when
   6334        optimizing for CPUs where prefetching is beneficial (AMD CPUs newer
   6335        than K6).
   6336      * Support for TBM (Trailing Bit Manipulation) built-in functions and
   6337        code generation is available via -mtbm.
   6338      * Support for AMD's BMI (Bit Manipulation) built-in functions and
   6339        code generation is available via -mbmi.
   6340 
   6341   MicroBlaze
   6342 
   6343      * Support has been added for the Xilinx MicroBlaze softcore processor
   6344        (microblaze-elf) embedded target. This configurable processor is
   6345        supported on several Xilinx Spartan and Virtex FPGAs.
   6346 
   6347   MIPS
   6348 
   6349      * GCC now supports the Loongson 3A processor. Its canonical -march=
   6350        and -mtune= name is loongson3a.
   6351 
   6352   MN10300 / AM33
   6353 
   6354      * The inline assembly register constraint "A" has been renamed "c".
   6355        This constraint is used to select a floating-point register that
   6356        can be used as the destination of a multiply-accumulate
   6357        instruction.
   6358      * New inline assembly register constraints "A" and "D" have been
   6359        added. These constraint letters resolve to all general registers
   6360        when compiling for AM33, and resolve to address registers only or
   6361        data registers only when compiling for MN10300.
   6362      * The MDR register is represented in the compiler. One can access the
   6363        register via the "z" constraint in inline assembly. It can be
   6364        marked as clobbered or used as a local register variable via the
   6365        "mdr" name. The compiler uses the RETF instruction if the function
   6366        does not modify the MDR register, so it is important that inline
   6367        assembly properly annotate any usage of the register.
   6368 
   6369   PowerPC/PowerPC64
   6370 
   6371      * GCC now supports the Applied Micro Titan processor with
   6372        -mcpu=titan.
   6373      * The -mrecip option has been added, which indicates whether the
   6374        reciprocal and reciprocal square root instructions should be used.
   6375      * The -mveclibabi=mass option can be used to enable the compiler to
   6376        autovectorize mathematical functions using the Mathematical
   6377        Acceleration Subsystem library.
   6378      * The -msingle-pic-base option has been added, which instructs the
   6379        compiler to avoid loading the PIC base register in function
   6380        prologues. The PIC base register must be initialized by the runtime
   6381        system.
   6382      * The -mblock-move-inline-limit option has been added, which enables
   6383        the user to control the maximum size of inlined memcpy calls and
   6384        similar.
   6385      * PowerPC64 GNU/Linux support for applications requiring a large TOC
   6386        section has been improved. A new command-line option,
   6387        -mcmodel=MODEL, controls this feature; valid values for MODEL are
   6388        small, medium, or large.
   6389      * The Altivec builtin functions vec_ld and vec_st have been modified
   6390        to generate the Altivec memory instructions LVX and STVX, even if
   6391        the -mvsx option is used. In the initial GCC 4.5 release, these
   6392        builtin functions were changed to generate VSX memory reference
   6393        instructions instead of Altivec memory instructions, but there are
   6394        differences between the two instructions. If the VSX instruction
   6395        set is available, you can now use the new builtin functions
   6396        vec_vsx_ld and vec_vsx_st which always generates the VSX memory
   6397        instructions.
   6398      * The GCC compiler on AIX now defaults to a process layout with a
   6399        larger data space allowing larger programs to be compiled.
   6400      * The GCC long double type on AIX 6.1 and above has reverted to 64
   6401        bit double precision, matching the AIX XL compiler default, because
   6402        of missing C99 symbols required by the GCC runtime.
   6403      * The default processor scheduling model and tuning for PowerPC64
   6404        GNU/Linux and for AIX 6.1 and above now is POWER7.
   6405      * Starting with GCC 4.6.1, vectors of type vector long long or vector
   6406        long are passed and returned in the same method as other vectors
   6407        with the VSX instruction set. Previously the GCC compiler did not
   6408        adhere to the ABI for 128-bit vectors with 64-bit integer base
   6409        types (PR 48857). This is also fixed in the GCC 4.5.4 release.
   6410 
   6411   S/390, zSeries and System z9/z10, IBM zEnterprise z196
   6412 
   6413      * Support for the zEnterprise z196 processor has been added. When
   6414        using the -march=z196 option, the compiler will generate code
   6415        making use of the following instruction facilities:
   6416           + Conditional load/store
   6417           + Distinct-operands
   6418           + Floating-point-extension
   6419           + Interlocked-access
   6420           + Population-count
   6421        The -mtune=z196 option avoids the compare and branch instructions
   6422        as well as the load address instruction with an index register as
   6423        much as possible and performs instruction scheduling appropriate
   6424        for the new out-of-order pipeline architecture.
   6425      * When using the -m31 -mzarch options the generated code still
   6426        conforms to the 32-bit ABI but uses the general purpose registers
   6427        as 64-bit registers internally. This requires a Linux kernel saving
   6428        the whole 64-bit registers when doing a context switch. Kernels
   6429        providing that feature indicate that by the 'highgprs' string in
   6430        /proc/cpuinfo.
   6431      * The SSA loop prefetching pass is enabled when using -O3.
   6432 
   6433   SPARC
   6434 
   6435      * GCC now supports the LEON series of SPARC V8 processors. The code
   6436        generated by the compiler can either be tuned to it by means of the
   6437        --with-tune=leon configure option and -mtune=leon compilation
   6438        option, or the compiler can be built for the sparc-leon-{elf,linux}
   6439        and sparc-leon3-{elf,linux} targets directly.
   6440      * GCC has stopped sign/zero-extending parameter registers in the
   6441        callee for functions taking parameters with sub-word size in 32-bit
   6442        mode, since this is redundant with the specification of the ABI.
   6443        GCC has never done so in 64-bit mode since this is also redundant.
   6444      * The command-line option -mfix-at697f has been added to enable the
   6445        documented workaround for the single erratum of the Atmel AT697F
   6446        processor.
   6447 
   6448 Operating Systems
   6449 
   6450   Android
   6451 
   6452      * GCC now supports the Bionic C library and provides a convenient way
   6453        of building native libraries and applications for the Android
   6454        platform. Refer to the documentation of the -mandroid and -mbionic
   6455        options for details on building native code. At the moment, Android
   6456        support is enabled only for ARM.
   6457 
   6458   Darwin/Mac OS X
   6459 
   6460      * General
   6461           + Initial support for CFString types has been added.
   6462             This allows GCC to build projects including the system Core
   6463             Foundation frameworks. The GCC Objective-C family supports
   6464             CFString "toll-free bridged" as per the Mac OS X system tools.
   6465             CFString is also recognized in the context of format
   6466             attributes and arguments (see the documentation for format
   6467             attributes for limitations). At present, 8-bit character types
   6468             are supported.
   6469           + Object file size reduction.
   6470             The Darwin zeroed memory allocators have been re-written to
   6471             make more use of .zerofill sections. For non-debug code, this
   6472             can reduce object file size significantly.
   6473           + Objective-C family 64-bit support (NeXT ABI 2).
   6474             Initial support has been added to support 64-bit Objective-C
   6475             code using the Darwin/OS X native (NeXT) runtime. ABI version
   6476             2 will be selected automatically when 64-bit code is built.
   6477           + Objective-C family 32-bit ABI 1.
   6478             For 32-bit code ABI 1 is also now also allowed. At present it
   6479             must be selected manually using -fobjc-abi-version=1 where
   6480             applicable - i.e. on Darwin 9/10 (OS X 10.5/10.6).
   6481      * x86 Architecture
   6482           + The -mdynamic-no-pic option has been enabled.
   6483             Code supporting -mdynamic-no-pic optimization has been added
   6484             and is applicable to -m32 builds. The compiler bootstrap uses
   6485             the option where appropriate.
   6486           + The default value for -mtune= has been changed.
   6487             Since Darwin systems are primarily Xeon, Core-2 or similar the
   6488             default tuning has been changed to -mtune=core2.
   6489           + Enable 128-bit long double (__float128) support on Darwin.
   6490      * PPC Architecture
   6491           + Darwin64 ABI.
   6492             Several significant bugs have been fixed, such that GCC now
   6493             produces code compatible with the Darwin64 PowerPC ABI.
   6494           + libffi and boehm-gc.
   6495             The Darwin ports of the libffi and boehm-gc libraries have
   6496             been upgraded to include a Darwin64 implementation. This means
   6497             that powerpc*-*-darwin9 platforms may now, for example, build
   6498             Java applications with -m64 enabled.
   6499           + Plug-in support has been enabled.
   6500           + The -fsection-anchors option is now available although,
   6501             presently, not heavily tested.
   6502 
   6503   Solaris 2
   6504 
   6505     New Features
   6506 
   6507      * Support symbol versioning with the Sun linker.
   6508      * Allow libstdc++ to leverage full ISO C99 support on Solaris 10+.
   6509      * Support thread-local storage (TLS) with the Sun assembler on
   6510        Solaris 2/x86.
   6511      * Support TLS on Solaris 8/9 if prerequisites are met.
   6512      * Support COMDAT group with the GNU assembler and recent Sun linker.
   6513      * Support the Sun assembler visibility syntax.
   6514      * Default Solaris 2/x86 to -march=pentium4 (Solaris 10+) resp.
   6515        -march=pentiumpro (Solaris 8/9).
   6516      * Don't use SSE on Solaris 8/9 x86 by default.
   6517      * Enable 128-bit long double (__float128) support on Solaris 2/x86.
   6518 
   6519     ABI Change
   6520 
   6521      * Change the ABI for returning 8-byte vectors like __m64 in MMX
   6522        registers on Solaris 10+/x86 to match the Sun Studio 12.1+
   6523        compilers. This is an incompatible change. If you use such types,
   6524        you must either recompile all your code with the new compiler or
   6525        use the new -mvect8-ret-in-mem option to remain compatible with
   6526        previous versions of GCC and Sun Studio.
   6527 
   6528   Windows x86/x86_64
   6529 
   6530      * Initial support for decimal floating point.
   6531      * Support for the __thiscall calling-convention.
   6532      * Support for hot-patchable function prologues via the
   6533        ms_hook_prologue attribute for x86_64 in addition to 32-bit x86.
   6534      * Improvements of stack-probing and stack-allocation mechanisms.
   6535      * Support of push/pop-macro pragma as preprocessor command.
   6536        With #pragma push_macro("macro-name") the current definition of
   6537        macro-name is saved and can be restored with #pragma
   6538        pop_macro("macro-name") to its saved definition.
   6539      * Enable 128-bit long double (__float128) support on MinGW and
   6540        Cygwin.
   6541 
   6542 Other significant improvements
   6543 
   6544   Installation changes
   6545 
   6546      * An install-strip make target is provided that installs stripped
   6547        executables, and may install libraries with unneeded or debugging
   6548        sections stripped.
   6549      * On Power7 systems, there is a potential problem if you build the
   6550        GCC compiler with a host compiler using options that enable the VSX
   6551        instruction set generation. If the host compiler has been patched
   6552        so that the vec_ld and vec_st builtin functions generate Altivec
   6553        memory instructions instead of VSX memory instructions, then you
   6554        should be able to build the compiler with VSX instruction
   6555        generation.
   6556 
   6557 Changes for GCC Developers
   6558 
   6559    Note: these changes concern developers that develop GCC itself or
   6560    software that integrates with GCC, such as plugins, and not the general
   6561    GCC users.
   6562      * The gengtype utility, which previously was internal to the GCC
   6563        build process, has been enchanced to provide GC root information
   6564        for plugins as necessary.
   6565      * The old GC allocation interface of ggc_alloc and friends was
   6566        replaced with a type-safe alternative.
   6567 
   6568 GCC 4.6.1
   6569 
   6570    This is the [20]list of problem reports (PRs) from GCC's bug tracking
   6571    system that are known to be fixed in the 4.6.1 release. This list might
   6572    not be complete (that is, it is possible that some PRs that have been
   6573    fixed are not listed here).
   6574 
   6575 GCC 4.6.2
   6576 
   6577    This is the [21]list of problem reports (PRs) from GCC's bug tracking
   6578    system that are known to be fixed in the 4.6.2 release. This list might
   6579    not be complete (that is, it is possible that some PRs that have been
   6580    fixed are not listed here).
   6581 
   6582 GCC 4.6.3
   6583 
   6584    This is the [22]list of problem reports (PRs) from GCC's bug tracking
   6585    system that are known to be fixed in the 4.6.3 release. This list might
   6586    not be complete (that is, it is possible that some PRs that have been
   6587    fixed are not listed here).
   6588 
   6589 GCC 4.6.4
   6590 
   6591    This is the [23]list of problem reports (PRs) from GCC's bug tracking
   6592    system that are known to be fixed in the 4.6.4 release. This list might
   6593    not be complete (that is, it is possible that some PRs that have been
   6594    fixed are not listed here).
   6595 
   6596 
   6597     For questions related to the use of GCC, please consult these web
   6598     pages and the [24]GCC manuals. If that fails, the
   6599     [25]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   6600     web pages and the development of GCC are welcome on our developer
   6601     list at [26]gcc (a] gcc.gnu.org. All of [27]our lists have public
   6602     archives.
   6603 
   6604    Copyright (C) [28]Free Software Foundation, Inc. Verbatim copying and
   6605    distribution of this entire article is permitted in any medium,
   6606    provided this notice is preserved.
   6607 
   6608    These pages are [29]maintained by the GCC team. Last modified
   6609    2018-09-30[30].
   6610 
   6611 References
   6612 
   6613    1. https://sourceware.org/bugzilla/show_bug.cgi?id=10401
   6614    2. http://gcc.gnu.org/gcc-4.5/changes.html
   6615    3. http://gcc.gnu.org/gcc-4.5/changes.html#obsoleted
   6616    4. http://gcc.gnu.org/gcc-4.6/porting_to.html
   6617    5. http://gcc.gnu.org/projects/lto/whopr.pdf
   6618    6. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
   6619    7. http://gcc.gnu.org/gcc-4.6/cxx0x_status.html
   6620    8. https://gcc.gnu.org/PR43145
   6621    9. https://gcc.gnu.org/PR43680
   6622   10. https://gcc.gnu.org/PR33558
   6623   11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#253
   6624   12. https://gcc.gnu.org/onlinedocs/gcc-4.6.4/libstdc++/manual/manual/status.html#status.iso.200x
   6625   13. https://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html
   6626   14. https://gcc.gnu.org/onlinedocs/libstdc++/manual/debug.html#debug.races
   6627   15. https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html
   6628   16. https://gcc.gnu.org/wiki/OOP
   6629   17. https://gcc.gnu.org/wiki/Coarray
   6630   18. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcoarray_007d-233
   6631   19. https://golang.org/
   6632   20. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.1
   6633   21. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.2
   6634   22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.3
   6635   23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.4
   6636   24. https://gcc.gnu.org/onlinedocs/
   6637   25. mailto:gcc-help (a] gcc.gnu.org
   6638   26. mailto:gcc (a] gcc.gnu.org
   6639   27. https://gcc.gnu.org/lists.html
   6640   28. https://www.fsf.org/
   6641   29. https://gcc.gnu.org/about.html
   6642   30. http://validator.w3.org/check/referer
   6643 ======================================================================
   6644 http://gcc.gnu.org/gcc-4.5/index.html
   6645 
   6646                              GCC 4.5 Release Series
   6647 
   6648    Jul 2, 2012
   6649 
   6650    The [1]GNU project and the GCC developers are pleased to announce the
   6651    release of GCC 4.5.4.
   6652 
   6653    This release is a bug-fix release, containing fixes for regressions in
   6654    GCC 4.5.3 relative to previous releases of GCC.
   6655 
   6656    This release series is no longer maintained.
   6657 
   6658 Release History
   6659 
   6660    GCC 4.5.4
   6661           Jul 2, 2012 ([2]changes)
   6662 
   6663    GCC 4.5.3
   6664           Apr 28, 2011 ([3]changes)
   6665 
   6666    GCC 4.5.2
   6667           Dec 16, 2010 ([4]changes)
   6668 
   6669    GCC 4.5.1
   6670           Jul 31, 2010 ([5]changes)
   6671 
   6672    GCC 4.5.0
   6673           April 14, 2010 ([6]changes)
   6674 
   6675 References and Acknowledgements
   6676 
   6677    GCC used to stand for the GNU C Compiler, but since the compiler
   6678    supports several other languages aside from C, it now stands for the
   6679    GNU Compiler Collection.
   6680 
   6681    A list of [7]successful builds is updated as new information becomes
   6682    available.
   6683 
   6684    The GCC developers would like to thank the numerous people that have
   6685    contributed new features, improvements, bug fixes, and other changes as
   6686    well as test results to GCC. This [8]amazing group of volunteers is
   6687    what makes GCC successful.
   6688 
   6689    For additional information about GCC please refer to the [9]GCC project
   6690    web site or contact the [10]GCC development mailing list.
   6691 
   6692    To obtain GCC please use [11]our mirror sites or [12]our SVN server.
   6693 
   6694 
   6695     For questions related to the use of GCC, please consult these web
   6696     pages and the [13]GCC manuals. If that fails, the
   6697     [14]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   6698     web pages and the development of GCC are welcome on our developer
   6699     list at [15]gcc (a] gcc.gnu.org. All of [16]our lists have public
   6700     archives.
   6701 
   6702    Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
   6703    distribution of this entire article is permitted in any medium,
   6704    provided this notice is preserved.
   6705 
   6706    These pages are [18]maintained by the GCC team. Last modified
   6707    2018-09-30[19].
   6708 
   6709 References
   6710 
   6711    1. http://www.gnu.org/
   6712    2. http://gcc.gnu.org/gcc-4.5/changes.html
   6713    3. http://gcc.gnu.org/gcc-4.5/changes.html
   6714    4. http://gcc.gnu.org/gcc-4.5/changes.html
   6715    5. http://gcc.gnu.org/gcc-4.5/changes.html
   6716    6. http://gcc.gnu.org/gcc-4.5/changes.html
   6717    7. http://gcc.gnu.org/gcc-4.5/buildstat.html
   6718    8. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   6719    9. http://gcc.gnu.org/index.html
   6720   10. mailto:gcc (a] gcc.gnu.org
   6721   11. http://gcc.gnu.org/mirrors.html
   6722   12. http://gcc.gnu.org/svn.html
   6723   13. https://gcc.gnu.org/onlinedocs/
   6724   14. mailto:gcc-help (a] gcc.gnu.org
   6725   15. mailto:gcc (a] gcc.gnu.org
   6726   16. https://gcc.gnu.org/lists.html
   6727   17. https://www.fsf.org/
   6728   18. https://gcc.gnu.org/about.html
   6729   19. http://validator.w3.org/check/referer
   6730 ======================================================================
   6731 http://gcc.gnu.org/gcc-4.5/changes.html
   6732 
   6733                              GCC 4.5 Release Series
   6734                         Changes, New Features, and Fixes
   6735 
   6736 Caveats
   6737 
   6738      * GCC now requires the [1]MPC library in order to build. See the
   6739        [2]prerequisites page for version requirements.
   6740      * Support for a number of older systems and recently unmaintained or
   6741        untested target ports of GCC has been declared obsolete in GCC 4.5.
   6742        Unless there is activity to revive them, the next release of GCC
   6743        will have their sources permanently removed.
   6744        The following ports for individual systems on particular
   6745        architectures have been obsoleted:
   6746           + IRIX releases before 6.5 (mips-sgi-irix5*,
   6747             mips-sgi-irix6.[0-4])
   6748           + Solaris 7 (*-*-solaris2.7)
   6749           + Tru64 UNIX releases before V5.1 (alpha*-dec-osf4*,
   6750             alpha-dec-osf5.0*)
   6751           + Details for the IRIX, Solaris 7, and Tru64 UNIX obsoletions
   6752             can be found in the [3]announcement.
   6753        Support for the classic POWER architecture implemented in the
   6754        original RIOS and RIOS2 processors of the old IBM RS/6000 product
   6755        line has been obsoleted in the rs6000 port. This does not affect
   6756        the new generation Power and PowerPC architectures.
   6757      * Support has been removed for all the [4]configurations obsoleted in
   6758        GCC 4.4.
   6759      * Support has been removed for the protoize and unprotoize utilities,
   6760        obsoleted in GCC 4.4.
   6761      * Support has been removed for tuning for Itanium1 (Merced) variants.
   6762        Note that code tuned for Itanium2 should also run correctly on
   6763        Itanium1.
   6764      * GCC now generates unwind info also for epilogues. DWARF debuginfo
   6765        generated by GCC now uses more features of DWARF3 than before, and
   6766        also some DWARF4 features. GDB older than 7.0 is not able to handle
   6767        either of these, so to debug GCC 4.5 generated binaries or
   6768        libraries GDB 7.0 or later is needed. You can disable use of DWARF4
   6769        features with the -gdwarf-3 -gstrict-dwarf options, or use
   6770        -gdwarf-2 -gstrict-dwarf to restrict GCC to just DWARF2, but
   6771        epilogue unwind info is emitted unconditionally whenever unwind
   6772        info is emitted.
   6773      * On x86 targets, code containing floating-point calculations may run
   6774        significantly more slowly when compiled with GCC 4.5 in strict C99
   6775        conformance mode than they did with earlier GCC versions. This is
   6776        due to stricter standard conformance of the compiler and can be
   6777        avoided by using the option -fexcess-precision=fast; also see
   6778        [5]below.
   6779      * The function attribute noinline no longer prevents GCC from cloning
   6780        the function. A new attribute noclone has been introduced for this
   6781        purpose. Cloning a function means that it is duplicated and the new
   6782        copy is specialized for certain contexts (for example when a
   6783        parameter is a known constant).
   6784 
   6785 General Optimizer Improvements
   6786 
   6787      * The -save-temps now takes an optional argument. The -save-temps and
   6788        -save-temps=cwd switches write the temporary files in the current
   6789        working directory based on the original source file. The
   6790        -save-temps=obj switch will write files into the directory
   6791        specified with the -o option, and the intermediate filenames are
   6792        based on the output file. This will allow the user to get the
   6793        compiler intermediate files when doing parallel builds without two
   6794        builds of the same filename located in different directories from
   6795        interfering with each other.
   6796      * Debugging dumps are now created in the same directory as the object
   6797        file rather than in the current working directory. This allows the
   6798        user to get debugging dumps when doing parallel builds without two
   6799        builds of the same filename interfering with each other.
   6800      * GCC has been integrated with the MPC library. This allows GCC to
   6801        evaluate complex arithmetic at compile time [6]more accurately. It
   6802        also allows GCC to evaluate calls to complex built-in math
   6803        functions having constant arguments and replace them at compile
   6804        time with their mathematically equivalent results. In doing so, GCC
   6805        can generate correct results regardless of the math library
   6806        implementation or floating point precision of the host platform.
   6807        This also allows GCC to generate identical results regardless of
   6808        whether one compiles in native or cross-compile configurations to a
   6809        particular target. The following built-in functions take advantage
   6810        of this new capability: cacos, cacosh, casin, casinh, catan,
   6811        catanh, ccos, ccosh, cexp, clog, cpow, csin, csinh, csqrt, ctan,
   6812        and ctanh. The float and long double variants of these functions
   6813        (e.g. csinf and csinl) are also handled.
   6814      * A new link-time optimizer has been added ([7]-flto). When this
   6815        option is used, GCC generates a bytecode representation of each
   6816        input file and writes it to specially-named sections in each object
   6817        file. When the object files are linked together, all the function
   6818        bodies are read from these named sections and instantiated as if
   6819        they had been part of the same translation unit. This enables
   6820        interprocedural optimizations to work across different files (and
   6821        even different languages), potentially improving the performance of
   6822        the generated code. To use the link-timer optimizer, -flto needs to
   6823        be specified at compile time and during the final link. If the
   6824        program does not require any symbols to be exported, it is possible
   6825        to combine -flto and the experimental [8]-fwhopr with
   6826        [9]-fwhole-program to allow the interprocedural optimizers to use
   6827        more aggressive assumptions.
   6828      * The automatic parallelization pass was enhanced to support
   6829        parallelization of outer loops.
   6830      * Automatic parallelization can be enabled as part of Graphite. In
   6831        addition to -ftree-parallelize-loops=, specify
   6832        -floop-parallelize-all to enable the Graphite-based optimization.
   6833      * The infrastructure for optimizing based on [10]restrict qualified
   6834        pointers has been rewritten and should result in code generation
   6835        improvements. Optimizations based on restrict qualified pointers
   6836        are now also available when using -fno-strict-aliasing.
   6837      * There is a new optimization pass that attempts to change prototype
   6838        of functions to avoid unused parameters, pass only relevant parts
   6839        of structures and turn arguments passed by reference to arguments
   6840        passed by value when possible. It is enabled by -O2 and above as
   6841        well as -Os and can be manually invoked using the new command-line
   6842        switch -fipa-sra.
   6843      * GCC now optimize exception handling code. In particular cleanup
   6844        regions that are proved to not have any effect are optimized out.
   6845 
   6846 New Languages and Language specific improvements
   6847 
   6848   All languages
   6849 
   6850      * The -fshow-column option is now on by default. This means error
   6851        messages now have a column associated with them.
   6852 
   6853   Ada
   6854 
   6855      * Compilation of programs heavily using discriminated record types
   6856        with variant parts has been sped up and generates more compact
   6857        code.
   6858      * Stack checking now works reasonably well on most plaforms. In some
   6859        specific cases, stack overflows may still fail to be detected, but
   6860        a compile-time warning will be issued for these cases.
   6861 
   6862   C family
   6863 
   6864      * If a header named in a #include directive is not found, the
   6865        compiler exits immediately. This avoids a cascade of errors arising
   6866        from declarations expected to be found in that header being
   6867        missing.
   6868      * A new built-in function __builtin_unreachable() has been added that
   6869        tells the compiler that control will never reach that point. It may
   6870        be used after asm statements that terminate by transferring control
   6871        elsewhere, and in other places that are known to be unreachable.
   6872      * The -Wlogical-op option now warns for logical expressions such as
   6873        (c == 1 && c == 2) and (c != 1 || c != 2), which are likely to be
   6874        mistakes. This option is disabled by default.
   6875      * An asm goto feature has been added to allow asm statements that
   6876        jump to C labels.
   6877      * C++0x raw strings are supported for C++ and for C with -std=gnu99.
   6878      * The deprecated attribute now takes an optional string argument, for
   6879        example, __attribute__((deprecated("text string"))), that will be
   6880        printed together with the deprecation warning.
   6881 
   6882   C
   6883 
   6884      * The -Wenum-compare option, which warns when comparing values of
   6885        different enum types, now works for C. It formerly only worked for
   6886        C++. This warning is enabled by -Wall. It may be avoided by using a
   6887        type cast.
   6888      * The -Wcast-qual option now warns about casts which are unsafe in
   6889        that they permit const-correctness to be violated without further
   6890        warnings. Specifically, it warns about cases where a qualifier is
   6891        added when all the lower types are not const. For example, it warns
   6892        about a cast from char ** to const char **.
   6893      * The -Wc++-compat option is significantly improved. It issues new
   6894        warnings for:
   6895           + Using C++ reserved operator names as identifiers.
   6896           + Conversions to enum types without explicit casts.
   6897           + Using va_arg with an enum type.
   6898           + Using different enum types in the two branches of ?:.
   6899           + Using ++ or -- on a variable of enum type.
   6900           + Using the same name as both a struct, union or enum tag and a
   6901             typedef, unless the typedef refers to the tagged type itself.
   6902           + Using a struct, union, or enum which is defined within another
   6903             struct or union.
   6904           + A struct field defined using a typedef if there is a field in
   6905             the struct, or an enclosing struct, whose name is the typedef
   6906             name.
   6907           + Duplicate definitions at file scope.
   6908           + Uninitialized const variables.
   6909           + A global variable with an anonymous struct, union, or enum
   6910             type.
   6911           + Using a string constant to initialize a char array whose size
   6912             is the length of the string.
   6913      * The new -Wjump-misses-init option warns about cases where a goto or
   6914        switch skips the initialization of a variable. This sort of branch
   6915        is an error in C++ but not in C. This warning is enabled by
   6916        -Wc++-compat.
   6917      * GCC now ensures that a C99-conforming <stdint.h> is present on most
   6918        targets, and uses information about the types in this header to
   6919        implement the Fortran bindings to those types. GCC does not ensure
   6920        the presence of such a header, and does not implement the Fortran
   6921        bindings, on the following targets: NetBSD, VxWorks, VMS,
   6922        SymbianOS, WinCE, LynxOS, Netware, QNX, Interix, TPF.
   6923      * GCC now implements C90- and C99-conforming rules for constant
   6924        expressions. This may cause warnings or errors for some code using
   6925        expressions that can be folded to a constant but are not constant
   6926        expressions as defined by ISO C.
   6927      * All known target-independent C90 and C90 Amendment 1 conformance
   6928        bugs, and all known target-independent C99 conformance bugs not
   6929        related to floating point or extended identifiers, have been fixed.
   6930      * The C decimal floating point support now includes support for the
   6931        FLOAT_CONST_DECIMAL64 pragma.
   6932      * The named address space feature from ISO/IEC TR 18037 is now
   6933        supported. This is currently only implemented for the SPU
   6934        processor.
   6935 
   6936   C++
   6937 
   6938      * Improved [11]experimental support for the upcoming C++0x ISO C++
   6939        standard, including support for raw strings, lambda expressions and
   6940        explicit type conversion operators.
   6941      * When printing the name of a class template specialization, G++ will
   6942        now omit any template arguments which come from default template
   6943        arguments. This behavior (and the pretty-printing of function
   6944        template specializations as template signature and arguments) can
   6945        be disabled with the -fno-pretty-templates option.
   6946      * Access control is now applied to typedef names used in a template,
   6947        which may cause G++ to reject some ill-formed code that was
   6948        accepted by earlier releases. The -fno-access-control option can be
   6949        used as a temporary workaround until the code is corrected.
   6950      * Compilation time for code that uses templates should now scale
   6951        linearly with the number of instantiations rather than
   6952        quadratically, as template instantiations are now looked up using
   6953        hash tables.
   6954      * Declarations of functions that look like builtin declarations of
   6955        library functions are only considered to be redeclarations if they
   6956        are declared with extern "C". This may cause problems with code
   6957        that omits extern "C" on hand-written declarations of C library
   6958        functions such as abort or memcpy. Such code is ill-formed, but was
   6959        accepted by earlier releases.
   6960      * Diagnostics that used to complain about passing non-POD types to
   6961        ... or jumping past the declaration of a non-POD variable now check
   6962        for triviality rather than PODness, as per C++0x.
   6963      * In C++0x mode local and anonymous classes are now allowed as
   6964        template arguments, and in declarations of variables and functions
   6965        with linkage, so long as any such declaration that is used is also
   6966        defined ([12]DR 757).
   6967      * Labels may now have attributes, as has been permitted for a while
   6968        in C. This is only permitted when the label definition and the
   6969        attribute specifier is followed by a semicolon--i.e., the label
   6970        applies to an empty statement. The only useful attribute for a
   6971        label is unused.
   6972      * G++ now implements [13]DR 176. Previously G++ did not support using
   6973        the injected-class-name of a template base class as a type name,
   6974        and lookup of the name found the declaration of the template in the
   6975        enclosing scope. Now lookup of the name finds the
   6976        injected-class-name, which can be used either as a type or as a
   6977        template, depending on whether or not the name is followed by a
   6978        template argument list. As a result of this change, some code that
   6979        was previously accepted may be ill-formed because
   6980          1. The injected-class-name is not accessible because it's from a
   6981             private base, or
   6982          2. The injected-class-name cannot be used as an argument for a
   6983             template template parameter.
   6984        In either of these cases, the code can be fixed by adding a
   6985        nested-name-specifier to explicitly name the template. The first
   6986        can be worked around with -fno-access-control; the second is only
   6987        rejected with -pedantic.
   6988      * A new standard mangling for SIMD vector types has been added, to
   6989        avoid name clashes on systems with vectors of varying length. By
   6990        default the compiler still uses the old mangling, but emits aliases
   6991        with the new mangling on targets that support strong aliases. Users
   6992        can switch over entirely to the new mangling with -fabi-version=4
   6993        or -fabi-version=0. -Wabi will now warn about code that uses the
   6994        old mangling.
   6995      * The command-line option -ftemplate-depth-N is now written as
   6996        -ftemplate-depth=N and the old form is deprecated.
   6997      * Conversions between NULL and non-pointer types are now warned by
   6998        default. The new option -Wno-conversion-null disables these
   6999        warnings. Previously these warnings were only available when using
   7000        -Wconversion explicitly.
   7001 
   7002     Runtime Library (libstdc++)
   7003 
   7004      * Improved experimental support for the upcoming ISO C++ standard,
   7005        C++0x, including:
   7006           + Support for <future>, <functional>, and <random>.
   7007           + Existing facilities now exploit explicit operators and the
   7008             newly implemented core C++0x features.
   7009           + The header <cstdatomic> has been renamed to <atomic>.
   7010      * An experimental [14]profile mode has been added. This is an
   7011        implementation of many C++ standard library constructs with an
   7012        additional analysis layer that gives performance improvement advice
   7013        based on recognition of suboptimal usage patterns. For example,
   7014 #include <vector>
   7015 int main()
   7016 {
   7017   std::vector<int> v;
   7018   for (int k = 0; k < 1024; ++k)
   7019     v.insert(v.begin(), k);
   7020 }
   7021 
   7022        When instrumented via the profile mode, can return suggestions
   7023        about the initial size and choice of the container used as follows:
   7024 vector-to-list: improvement = 5: call stack = 0x804842c ...
   7025     : advice = change std::vector to std::list
   7026 vector-size: improvement = 3: call stack = 0x804842c ...
   7027     : advice = change initial container size from 0 to 1024
   7028 
   7029        These constructs can be substituted for the normal libstdc++
   7030        constructs on a piecemeal basis, or all existing components can be
   7031        transformed via the -D_GLIBCXX_PROFILE macro.
   7032      * [15]Support for decimal floating-point arithmetic (aka ISO C++ TR
   7033        24733) has been added. This support is in header file
   7034        <decimal/decimal>, uses namespace std::decimal, and includes
   7035        classes decimal32, decimal64, and decimal128.
   7036      * Sources have been audited for application of function attributes
   7037        nothrow, const, pure, and noreturn.
   7038      * Python pretty-printers have been added for many standard library
   7039        components that simplify the internal representation and present a
   7040        more intuitive view of components when used with
   7041        appropriately-advanced versions of GDB. For more information,
   7042        please consult the more [16]detailed description.
   7043      * The default behavior for comparing typeinfo names has changed, so
   7044        in <typeinfo>, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.
   7045      * The new -static-libstdc++ option directs g++ to link the C++
   7046        library statically, even if the default would normally be to link
   7047        it dynamically.
   7048 
   7049   Fortran
   7050 
   7051      * The COMMON default padding has been changed - instead of adding the
   7052        padding before a variable it is now added afterwards, which
   7053        increases the compatibility with other vendors and helps to obtain
   7054        the correct output in some cases. Cf. also the -falign-commons
   7055        option ([17]added in 4.4).
   7056      * The -finit-real= option now also supports the value snan for
   7057        signaling not-a-number; to be effective, one additionally needs to
   7058        enable trapping (e.g. via -ffpe-trap=). Note: Compile-time
   7059        optimizations can turn a signaling NaN into a quiet one.
   7060      * The new option -fcheck= has been added with the options bounds,
   7061        array-temps, do, pointer, and recursive. The bounds and array-temps
   7062        options are equivalent to -fbounds-check and
   7063        -fcheck-array-temporaries. The do option checks for invalid
   7064        modification of loop iteration variables, and the recursive option
   7065        tests for recursive calls to subroutines/functions which are not
   7066        marked as recursive. With pointer pointer association checks in
   7067        calls are performed; however, neither undefined pointers nor
   7068        pointers in expressions are handled. Using -fcheck=all enables all
   7069        these run-time checks.
   7070      * The run-time checking -fcheck=bounds now warns about invalid string
   7071        lengths of character dummy arguments. Additionally, more
   7072        compile-time checks have been added.
   7073      * The new option [18]-fno-protect-parens has been added; if set, the
   7074        compiler may reorder REAL and COMPLEX expressions without regard to
   7075        parentheses.
   7076      * GNU Fortran no longer links against libgfortranbegin. As before,
   7077        MAIN__ (assembler symbol name) is the actual Fortran main program,
   7078        which is invoked by the main function. However, main is now
   7079        generated and put in the same object file as MAIN__. For the time
   7080        being, libgfortranbegin still exists for backward compatibility.
   7081        For details see the new [19]Mixed-Language Programming chapter in
   7082        the manual.
   7083      * The I/O library was restructured for performance and cleaner code.
   7084      * Array assignments and WHERE are now run in parallel when OpenMP's
   7085        WORKSHARE is used.
   7086      * The experimental option -fwhole-file was added. The option allows
   7087        whole-file checking of procedure arguments and allows for better
   7088        optimizations. It can also be used with -fwhole-program, which is
   7089        now also supported in gfortran.
   7090      * More Fortran 2003 and Fortran 2008 mathematical functions can now
   7091        be used as initialization expressions.
   7092      * Some extended attributes such as STDCALL are now supported via the
   7093        [20]GCC$ compiler directive.
   7094      * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN
   7095        intrinsic behaves now as if zero were always positive.
   7096      * For legacy compatibiliy: On Cygwin and MinGW, the special files
   7097        CONOUT$ and CONIN$ (and CONERR$ which maps to CONOUT$) are now
   7098        supported.
   7099      * Fortran 2003 support has been extended:
   7100           + Procedure-pointer function results and procedure-pointer
   7101             components (including PASS),
   7102           + allocatable scalars (experimental),
   7103           + DEFERRED type-bound procedures,
   7104           + the ERRMSG= argument of the ALLOCATE and DEALLOCATE statements
   7105             have been implemented.
   7106           + The ALLOCATE statement supports type-specs and the SOURCE=
   7107             argument.
   7108           + OPERATOR(*) and ASSIGNMENT(=) are now allowed as GENERIC
   7109             type-bound procedure (i.e. as type-bound operators).
   7110           + Rounding (ROUND=, RZ, ...) for output is now supported.
   7111           + The INT_FAST{8,16,32,64,128}_T kind type parameters of the
   7112             intrinsic module ISO_C_BINDING are now supported, except for
   7113             the targets listed above as ones where GCC does not have
   7114             <stdint.h> type information.
   7115           + Extensible derived types with type-bound procedure or
   7116             procedure pointer with PASS attribute now have to use CLASS in
   7117             line with the Fortran 2003 standard; the workaround to use
   7118             TYPE is no longer supported.
   7119           + [21]Experimental, incomplete support for polymorphism,
   7120             including CLASS, SELECT TYPE and dynamic dispatch of
   7121             type-bound procedure calls. Some features do not work yet such
   7122             as unlimited polymorphism (CLASS(*)).
   7123      * Fortran 2008 support has been extended:
   7124           + The OPEN statement now supports the NEWUNIT= option, which
   7125             returns a unique file unit, thus preventing inadvertent use of
   7126             the same unit in different parts of the program.
   7127           + Support for unlimited format items has been added.
   7128           + The INT{8,16,32} and REAL{32,64,128} kind type parameters of
   7129             the intrinsic module ISO_FORTRAN_ENV are now supported.
   7130           + Using complex arguments with TAN, SINH, COSH, TANH, ASIN,
   7131             ACOS, and ATAN is now possible; the functions ASINH, ACOSH,
   7132             and ATANH have been added (for real and complex arguments) and
   7133             ATAN(Y,X) is now an alias for ATAN2(Y,X).
   7134           + The BLOCK construct has been implemented.
   7135 
   7136 New Targets and Target Specific Improvements
   7137 
   7138   AIX
   7139 
   7140      * Full cross-toolchain support now available with GNU Binutils
   7141 
   7142   ARM
   7143 
   7144      * GCC now supports the Cortex-M0 and Cortex-A5 processors.
   7145      * GCC now supports the ARM v7E-M architecture.
   7146      * GCC now supports VFPv4-based FPUs and FPUs with
   7147        single-precision-only VFP.
   7148      * GCC has many improvements to optimization for other ARM processors,
   7149        including scheduling support for the integer pipeline on Cortex-A9.
   7150      * GCC now supports the IEEE 754-2008 half-precision floating-point
   7151        type, and a variant ARM-specific half-precision type. This type is
   7152        specified using __fp16, with the layout determined by
   7153        -mfp16-format. With appropriate -mfpu options, the Cortex-A9 and
   7154        VFPv4 half-precision instructions will be used.
   7155      * GCC now supports the variant of AAPCS that uses VFP registers for
   7156        parameter passing and return values.
   7157 
   7158   AVR
   7159 
   7160      * The -mno-tablejump option has been removed because it has the same
   7161        effect as the -fno-jump-tables option.
   7162      * Added support for these new AVR devices:
   7163           + ATmega8U2
   7164           + ATmega16U2
   7165           + ATmega32U2
   7166 
   7167   IA-32/x86-64
   7168 
   7169      * GCC now will set the default for -march= based on the configure
   7170        target.
   7171      * GCC now supports handling floating-point excess precision arising
   7172        from use of the x87 floating-point unit in a way that conforms to
   7173        ISO C99. This is enabled with -fexcess-precision=standard and with
   7174        standards conformance options such as -std=c99, and may be disabled
   7175        using -fexcess-precision=fast.
   7176      * Support for the Intel Atom processor is now available through the
   7177        -march=atom and -mtune=atom options.
   7178      * A new -mcrc32 option is now available to enable crc32 intrinsics.
   7179      * A new -mmovbe option is now available to enable GCC to use the
   7180        movbe instruction to implement __builtin_bswap32 and
   7181        __builtin_bswap64.
   7182      * SSE math now can be enabled by default at configure time with the
   7183        new --with-fpmath=sse option.
   7184      * There is a new intrinsic header file, <x86intrin.h>. It should be
   7185        included before using any IA-32/x86-64 intrinsics.
   7186      * Support for the XOP, FMA4, and LWP instruction sets for the AMD
   7187        Orochi processors are now available with the -mxop, -mfma4, and
   7188        -mlwp options.
   7189      * The -mabm option enables GCC to use the popcnt and lzcnt
   7190        instructions on AMD processors.
   7191      * The -mpopcnt option enables GCC to use the popcnt instructions on
   7192        both AMD and Intel processors.
   7193 
   7194   M68K/ColdFire
   7195 
   7196      * GCC now supports ColdFire 51xx, 5221x, 5225x, 52274, 52277, 5301x
   7197        and 5441x devices.
   7198      * GCC now supports thread-local storage (TLS) on M68K and ColdFire
   7199        processors.
   7200 
   7201   MeP
   7202 
   7203    Support has been added for the Toshiba Media embedded Processor (MeP,
   7204    or mep-elf) embedded target.
   7205 
   7206   MIPS
   7207 
   7208      * GCC now supports MIPS 1004K processors.
   7209      * GCC can now be configured with options --with-arch-32,
   7210        --with-arch-64, --with-tune-32 and --with-tune-64 to control the
   7211        default optimization separately for 32-bit and 64-bit modes.
   7212      * MIPS targets now support an alternative _mcount interface, in which
   7213        register $12 points to the function's save slot for register $31.
   7214        This interface is selected by the -mcount-ra-address option; see
   7215        the documentation for more details.
   7216      * GNU/Linux targets can now generate read-only .eh_frame sections.
   7217        This optimization requires GNU binutils 2.20 or above, and is only
   7218        available if GCC is configured with a suitable version of binutils.
   7219      * GNU/Linux targets can now attach special relocations to indirect
   7220        calls, so that the linker can turn them into direct jumps or
   7221        branches. This optimization requires GNU binutils 2.20 or later,
   7222        and is automatically selected if GCC is configured with an
   7223        appropriate version of binutils. It can be explicitly enabled or
   7224        disabled using the -mrelax-pic-calls command-line option.
   7225      * GCC now generates more heavily-optimized atomic operations on
   7226        Octeon processors.
   7227      * MIPS targets now support the -fstack-protector option.
   7228      * GCC now supports an -msynci option, which specifies that synci is
   7229        enough to flush the instruction cache, without help from the
   7230        operating system. GCC uses this information to optimize
   7231        automatically-generated cache flush operations, such as those used
   7232        for nested functions in C. There is also a --with-synci
   7233        configure-time option, which makes -msynci the default.
   7234      * GCC supports four new function attributes for interrupt handlers:
   7235        interrupt, use_shadow_register_set, keep_interrupts_masked and
   7236        use_debug_exception_return. See the documentation for more details
   7237        about these attributes.
   7238 
   7239   RS/6000 (POWER/PowerPC)
   7240 
   7241      * GCC now supports the Power ISA 2.06, which includes the VSX
   7242        instructions that add vector 64-bit floating point support, new
   7243        population count instructions, and conversions between floating
   7244        point and unsigned types.
   7245      * Support for the power7 processor is now available through the
   7246        -mcpu=power7 and -mtune=power7.
   7247      * GCC will now vectorize loops that contain simple math functions
   7248        like copysign when generating code for altivec or VSX targets.
   7249      * Support for the A2 processor is now available through the -mcpu=a2
   7250        and -mtune=a2 options.
   7251      * Support for the 476 processor is now available through the
   7252        -mcpu={476,476fp} and -mtune={476,476fp} options.
   7253      * Support for the e500mc64 processor is now available through the
   7254        -mcpu=e500mc64 and -mtune=e500mc64 options.
   7255      * GCC can now be configured with options --with-cpu-32,
   7256        --with-cpu-64, --with-tune-32 and --with-tune-64 to control the
   7257        default optimization separately for 32-bit and 64-bit modes.
   7258      * Starting with GCC 4.5.4, vectors of type vector long long or vector
   7259        long are passed and returned in the same method as other vectors
   7260        with the VSX instruction set. Previously the GCC compiler did not
   7261        adhere to the ABI for 128-bit vectors with 64-bit integer base
   7262        types (PR 48857). This is also fixed in the GCC 4.6.1 release.
   7263 
   7264   RX
   7265 
   7266    Support has been added for the Renesas RX Processor (rx-elf) target.
   7267 
   7268 Operating Systems
   7269 
   7270   Windows (Cygwin and MinGW)
   7271 
   7272      * GCC now installs all the major language runtime libraries as DLLs
   7273        when configured with the --enable-shared option.
   7274      * GCC now makes use of the new support for aligned common variables
   7275        in versions of binutils >= 2.20 to fix bugs in the support for SSE
   7276        data types.
   7277      * Improvements to the libffi support library increase the reliability
   7278        of code generated by GCJ on all Windows platforms. Libgcj is
   7279        enabled by default for the first time.
   7280      * Libtool improvements simplify installation by placing the generated
   7281        DLLs in the correct binaries directory.
   7282      * Numerous other minor bugfixes and improvements, and substantial
   7283        enhancements to the Fortran language support library.
   7284 
   7285    >
   7286 
   7287 Other significant improvements
   7288 
   7289   Plugins
   7290 
   7291      * It is now possible to extend the compiler without having to modify
   7292        its source code. A new option -fplugin=file.so tells GCC to load
   7293        the shared object file.so and execute it as part of the compiler.
   7294        The internal documentation describes the details on how plugins can
   7295        interact with the compiler.
   7296 
   7297   Installation changes
   7298 
   7299      * The move to newer autotools changed default installation
   7300        directories and switches to control them: The --with-datarootdir,
   7301        --with-docdir, --with-pdfdir, and --with-htmldir switches are not
   7302        used any more. Instead, you can now use --datarootdir, --docdir,
   7303        --htmldir, and --pdfdir. The default installation directories have
   7304        changed as follows according to the GNU Coding Standards:
   7305 
   7306        datarootdir read-only architecture-independent data root [PREFIX/share]
   7307        localedir   locale-specific message catalogs [DATAROOTDIR/locale]
   7308        docdir      documentation root [DATAROOTDIR/doc/PACKAGE]
   7309        htmldir     html documentation [DOCDIR]
   7310        dvidir      dvi documentation [DOCDIR]
   7311        pdfdir      pdf documentation [DOCDIR]
   7312        psdir       ps documentation [DOCDIR]
   7313        The following variables have new default values:
   7314 
   7315        datadir read-only architecture-independent data [DATAROOTDIR]
   7316        infodir info documentation [DATAROOTDIR/info]
   7317        mandir  man documentation [DATAROOTDIR/man]
   7318 
   7319 GCC 4.5.1
   7320 
   7321    This is the [22]list of problem reports (PRs) from GCC's bug tracking
   7322    system that are known to be fixed in the 4.5.1 release. This list might
   7323    not be complete (that is, it is possible that some PRs that have been
   7324    fixed are not listed here).
   7325 
   7326   All languages
   7327 
   7328      * GCC's new link-time optimizer ([23]-flto) now also works on a few
   7329        non-ELF targets:
   7330           + Cygwin (*-cygwin*)
   7331           + MinGW (*-mingw*)
   7332           + Darwin on x86-64 (x86_64-apple-darwin*)
   7333        LTO is not enabled by default for these targets. To enable LTO, you
   7334        should configure with the --enable-lto option.
   7335 
   7336 GCC 4.5.2
   7337 
   7338    This is the [24]list of problem reports (PRs) from GCC's bug tracking
   7339    system that are known to be fixed in the 4.5.2 release. This list might
   7340    not be complete (that is, it is possible that some PRs that have been
   7341    fixed are not listed here).
   7342 
   7343 GCC 4.5.3
   7344 
   7345    This is the [25]list of problem reports (PRs) from GCC's bug tracking
   7346    system that are known to be fixed in the 4.5.3 release. This list might
   7347    not be complete (that is, it is possible that some PRs that have been
   7348    fixed are not listed here).
   7349 
   7350    On the PowerPC compiler, the Altivec builtin functions vec_ld and
   7351    vec_st have been modified to generate the Altivec memory instructions
   7352    LVX and STVX, even if the -mvsx option is used. In the initial GCC 4.5
   7353    release, these builtin functions were changed to generate VSX memory
   7354    reference instructions instead of Altivec memory instructions, but
   7355    there are differences between the two instructions. If the VSX
   7356    instruction set is available, you can now use the new builtin functions
   7357    vec_vsx_ld and vec_vsx_st which always generates the VSX memory
   7358    instructions.
   7359 
   7360 GCC 4.5.4
   7361 
   7362    This is the [26]list of problem reports (PRs) from GCC's bug tracking
   7363    system that are known to be fixed in the 4.5.4 release. This list might
   7364    not be complete (that is, it is possible that some PRs that have been
   7365    fixed are not listed here).
   7366 
   7367 
   7368     For questions related to the use of GCC, please consult these web
   7369     pages and the [27]GCC manuals. If that fails, the
   7370     [28]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   7371     web pages and the development of GCC are welcome on our developer
   7372     list at [29]gcc (a] gcc.gnu.org. All of [30]our lists have public
   7373     archives.
   7374 
   7375    Copyright (C) [31]Free Software Foundation, Inc. Verbatim copying and
   7376    distribution of this entire article is permitted in any medium,
   7377    provided this notice is preserved.
   7378 
   7379    These pages are [32]maintained by the GCC team. Last modified
   7380    2018-09-30[33].
   7381 
   7382 References
   7383 
   7384    1. http://www.multiprecision.org/mpc/
   7385    2. https://gcc.gnu.org/install/prerequisites.html
   7386    3. https://gcc.gnu.org/ml/gcc/2010-01/msg00510.html
   7387    4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted
   7388    5. http://gcc.gnu.org/gcc-4.5/changes.html#x86
   7389    6. https://gcc.gnu.org/PR30789
   7390    7. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
   7391    8. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhopr-802
   7392    9. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800
   7393   10. https://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html
   7394   11. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
   7395   12. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
   7396   13. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
   7397   14. https://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html
   7398   15. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
   7399   16. https://sourceware.org/gdb/wiki/STLSupport
   7400   17. http://gcc.gnu.org/gcc-4.4/changes.html
   7401   18. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
   7402   19. https://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html
   7403   20. https://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
   7404   21. https://gcc.gnu.org/wiki/OOP
   7405   22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
   7406   23. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
   7407   24. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2
   7408   25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3
   7409   26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4
   7410   27. https://gcc.gnu.org/onlinedocs/
   7411   28. mailto:gcc-help (a] gcc.gnu.org
   7412   29. mailto:gcc (a] gcc.gnu.org
   7413   30. https://gcc.gnu.org/lists.html
   7414   31. https://www.fsf.org/
   7415   32. https://gcc.gnu.org/about.html
   7416   33. http://validator.w3.org/check/referer
   7417 ======================================================================
   7418 http://gcc.gnu.org/gcc-4.4/index.html
   7419 
   7420                              GCC 4.4 Release Series
   7421 
   7422    March 13, 2012
   7423 
   7424    The [1]GNU project and the GCC developers are pleased to announce the
   7425    release of GCC 4.4.7.
   7426 
   7427    This release is a bug-fix release, containing fixes for regressions in
   7428    GCC 4.4.6 relative to previous releases of GCC.
   7429 
   7430    This release series is no longer maintained.
   7431 
   7432 Release History
   7433 
   7434    GCC 4.4.7
   7435           March 13, 2012 ([2]changes)
   7436 
   7437    GCC 4.4.6
   7438           April 16, 2011 ([3]changes)
   7439 
   7440    GCC 4.4.5
   7441           October 1, 2010 ([4]changes)
   7442 
   7443    GCC 4.4.4
   7444           April 29, 2010 ([5]changes)
   7445 
   7446    GCC 4.4.3
   7447           January 21, 2010 ([6]changes)
   7448 
   7449    GCC 4.4.2
   7450           October 15, 2009 ([7]changes)
   7451 
   7452    GCC 4.4.1
   7453           July 22, 2009 ([8]changes)
   7454 
   7455    GCC 4.4.0
   7456           April 21, 2009 ([9]changes)
   7457 
   7458 References and Acknowledgements
   7459 
   7460    GCC used to stand for the GNU C Compiler, but since the compiler
   7461    supports several other languages aside from C, it now stands for the
   7462    GNU Compiler Collection.
   7463 
   7464    A list of [10]successful builds is updated as new information becomes
   7465    available.
   7466 
   7467    The GCC developers would like to thank the numerous people that have
   7468    contributed new features, improvements, bug fixes, and other changes as
   7469    well as test results to GCC. This [11]amazing group of volunteers is
   7470    what makes GCC successful.
   7471 
   7472    For additional information about GCC please refer to the [12]GCC
   7473    project web site or contact the [13]GCC development mailing list.
   7474 
   7475    To obtain GCC please use [14]our mirror sites or [15]our SVN server.
   7476 
   7477 
   7478     For questions related to the use of GCC, please consult these web
   7479     pages and the [16]GCC manuals. If that fails, the
   7480     [17]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   7481     web pages and the development of GCC are welcome on our developer
   7482     list at [18]gcc (a] gcc.gnu.org. All of [19]our lists have public
   7483     archives.
   7484 
   7485    Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
   7486    distribution of this entire article is permitted in any medium,
   7487    provided this notice is preserved.
   7488 
   7489    These pages are [21]maintained by the GCC team. Last modified
   7490    2018-09-30[22].
   7491 
   7492 References
   7493 
   7494    1. http://www.gnu.org/
   7495    2. http://gcc.gnu.org/gcc-4.4/changes.html
   7496    3. http://gcc.gnu.org/gcc-4.4/changes.html
   7497    4. http://gcc.gnu.org/gcc-4.4/changes.html
   7498    5. http://gcc.gnu.org/gcc-4.4/changes.html
   7499    6. http://gcc.gnu.org/gcc-4.4/changes.html
   7500    7. http://gcc.gnu.org/gcc-4.4/changes.html
   7501    8. http://gcc.gnu.org/gcc-4.4/changes.html
   7502    9. http://gcc.gnu.org/gcc-4.4/changes.html
   7503   10. http://gcc.gnu.org/gcc-4.4/buildstat.html
   7504   11. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   7505   12. http://gcc.gnu.org/index.html
   7506   13. mailto:gcc (a] gcc.gnu.org
   7507   14. http://gcc.gnu.org/mirrors.html
   7508   15. http://gcc.gnu.org/svn.html
   7509   16. https://gcc.gnu.org/onlinedocs/
   7510   17. mailto:gcc-help (a] gcc.gnu.org
   7511   18. mailto:gcc (a] gcc.gnu.org
   7512   19. https://gcc.gnu.org/lists.html
   7513   20. https://www.fsf.org/
   7514   21. https://gcc.gnu.org/about.html
   7515   22. http://validator.w3.org/check/referer
   7516 ======================================================================
   7517 http://gcc.gnu.org/gcc-4.4/changes.html
   7518 
   7519                              GCC 4.4 Release Series
   7520                         Changes, New Features, and Fixes
   7521 
   7522    The latest release in the 4.4 release series is [1]GCC 4.4.7.
   7523 
   7524 Caveats
   7525 
   7526      * __builtin_stdarg_start has been completely removed from GCC.
   7527        Support for <varargs.h> had been deprecated since GCC 4.0. Use
   7528        __builtin_va_start as a replacement.
   7529      * Some of the errors issued by the C++ front end that could be
   7530        downgraded to warnings in previous releases by using -fpermissive
   7531        are now warnings by default. They can be converted into errors by
   7532        using -pedantic-errors.
   7533      * Use of the cpp assertion extension will now emit a warning when
   7534        -Wdeprecated or -pedantic is used. This extension has been
   7535        deprecated for many years, but never warned about.
   7536      * Packed bit-fields of type char were not properly bit-packed on many
   7537        targets prior to GCC 4.4. On these targets, the fix in GCC 4.4
   7538        causes an ABI change. For example there is no longer a 4-bit
   7539        padding between field a and b in this structure:
   7540     struct foo
   7541     {
   7542       char a:4;
   7543       char b:8;
   7544     } __attribute__ ((packed));
   7545        There is a new warning to help identify fields that are affected:
   7546     foo.c:5: note: Offset of packed bit-field 'b' has changed in GCC 4.4
   7547        The warning can be disabled with -Wno-packed-bitfield-compat.
   7548      * On ARM EABI targets, the C++ mangling of the va_list type has been
   7549        changed to conform to the current revision of the EABI. This does
   7550        not affect the libstdc++ library included with GCC.
   7551      * The SCOUNT and POS bits of the MIPS DSP control register are now
   7552        treated as global. Previous versions of GCC treated these fields as
   7553        call-clobbered instead.
   7554      * The MIPS port no longer recognizes the h asm constraint. It was
   7555        necessary to remove this constraint in order to avoid generating
   7556        unpredictable code sequences.
   7557        One of the main uses of the h constraint was to extract the high
   7558        part of a multiplication on 64-bit targets. For example:
   7559     asm ("dmultu\t%1,%2" : "=h" (result) : "r" (x), "r" (y));
   7560        You can now achieve the same effect using 128-bit types:
   7561     typedef unsigned int uint128_t __attribute__((mode(TI)));
   7562     result = ((uint128_t) x * y) >> 64;
   7563        The second sequence is better in many ways. For example, if x and y
   7564        are constants, the compiler can perform the multiplication at
   7565        compile time. If x and y are not constants, the compiler can
   7566        schedule the runtime multiplication better than it can schedule an
   7567        asm statement.
   7568      * Support for a number of older systems and recently unmaintained or
   7569        untested target ports of GCC has been declared obsolete in GCC 4.4.
   7570        Unless there is activity to revive them, the next release of GCC
   7571        will have their sources permanently removed.
   7572        The following ports for individual systems on particular
   7573        architectures have been obsoleted:
   7574           + Generic a.out on IA32 and m68k (i[34567]86-*-aout*,
   7575             m68k-*-aout*)
   7576           + Generic COFF on ARM, H8300, IA32, m68k and SH (arm-*-coff*,
   7577             armel-*-coff*, h8300-*-*, i[34567]86-*-coff*, m68k-*-coff*,
   7578             sh-*-*). This does not affect other more specific targets
   7579             using the COFF object format on those architectures, or the
   7580             more specific H8300 and SH targets (h8300-*-rtems*,
   7581             h8300-*-elf*, sh-*-elf*, sh-*-symbianelf*, sh-*-linux*,
   7582             sh-*-netbsdelf*, sh-*-rtems*, sh-wrs-vxworks).
   7583           + 2BSD on PDP-11 (pdp11-*-bsd)
   7584           + AIX 4.1 and 4.2 on PowerPC (rs6000-ibm-aix4.[12]*,
   7585             powerpc-ibm-aix4.[12]*)
   7586           + Tuning support for Itanium1 (Merced) variants. Note that code
   7587             tuned for Itanium2 should also run correctly on Itanium1.
   7588      * The protoize and unprotoize utilities have been obsoleted and will
   7589        be removed in GCC 4.5. These utilities have not been installed by
   7590        default since GCC 3.0.
   7591      * Support has been removed for all the [2]configurations obsoleted in
   7592        GCC 4.3.
   7593      * Unknown -Wno-* options are now silently ignored by GCC if no other
   7594        diagnostics are issued. If other diagnostics are issued, then GCC
   7595        warns about the unknown options.
   7596      * More information on porting to GCC 4.4 from previous versions of
   7597        GCC can be found in the [3]porting guide for this release.
   7598 
   7599 General Optimizer Improvements
   7600 
   7601      * A new command-line switch -findirect-inlining has been added. When
   7602        turned on it allows the inliner to also inline indirect calls that
   7603        are discovered to have known targets at compile time thanks to
   7604        previous inlining.
   7605      * A new command-line switch -ftree-switch-conversion has been added.
   7606        This new pass turns simple initializations of scalar variables in
   7607        switch statements into initializations from a static array, given
   7608        that all the values are known at compile time and the ratio between
   7609        the new array size and the original switch branches does not exceed
   7610        the parameter --param switch-conversion-max-branch-ratio (default
   7611        is eight).
   7612      * A new command-line switch -ftree-builtin-call-dce has been added.
   7613        This optimization eliminates unnecessary calls to certain builtin
   7614        functions when the return value is not used, in cases where the
   7615        calls can not be eliminated entirely because the function may set
   7616        errno. This optimization is on by default at -O2 and above.
   7617      * A new command-line switch -fconserve-stack directs the compiler to
   7618        minimize stack usage even if it makes the generated code slower.
   7619        This affects inlining decisions.
   7620      * When the assembler supports it, the compiler will now emit unwind
   7621        information using assembler .cfi directives. This makes it possible
   7622        to use such directives in inline assembler code. The new option
   7623        -fno-dwarf2-cfi-asm directs the compiler to not use .cfi
   7624        directives.
   7625      * The [4]Graphite branch has been merged. This merge has brought in a
   7626        new framework for loop optimizations based on a polyhedral
   7627        intermediate representation. These optimizations apply to all the
   7628        languages supported by GCC. The following new code transformations
   7629        are available in GCC 4.4:
   7630           + -floop-interchange performs loop interchange transformations
   7631             on loops. Interchanging two nested loops switches the inner
   7632             and outer loops. For example, given a loop like:
   7633           DO J = 1, M
   7634             DO I = 1, N
   7635               A(J, I) = A(J, I) * C
   7636             ENDDO
   7637           ENDDO
   7638 
   7639             loop interchange will transform the loop as if the user had
   7640             written:
   7641           DO I = 1, N
   7642             DO J = 1, M
   7643               A(J, I) = A(J, I) * C
   7644             ENDDO
   7645           ENDDO
   7646 
   7647             which can be beneficial when N is larger than the caches,
   7648             because in Fortran, the elements of an array are stored in
   7649             memory contiguously by column, and the original loop iterates
   7650             over rows, potentially creating at each access a cache miss.
   7651           + -floop-strip-mine performs loop strip mining transformations
   7652             on loops. Strip mining splits a loop into two nested loops.
   7653             The outer loop has strides equal to the strip size and the
   7654             inner loop has strides of the original loop within a strip.
   7655             For example, given a loop like:
   7656           DO I = 1, N
   7657             A(I) = A(I) + C
   7658           ENDDO
   7659 
   7660             loop strip mining will transform the loop as if the user had
   7661             written:
   7662           DO II = 1, N, 4
   7663             DO I = II, min (II + 3, N)
   7664               A(I) = A(I) + C
   7665             ENDDO
   7666           ENDDO
   7667 
   7668           + -floop-block performs loop blocking transformations on loops.
   7669             Blocking strip mines each loop in the loop nest such that the
   7670             memory accesses of the element loops fit inside caches. For
   7671             example, given a loop like:
   7672           DO I = 1, N
   7673             DO J = 1, M
   7674               A(J, I) = B(I) + C(J)
   7675             ENDDO
   7676           ENDDO
   7677 
   7678             loop blocking will transform the loop as if the user had
   7679             written:
   7680           DO II = 1, N, 64
   7681             DO JJ = 1, M, 64
   7682               DO I = II, min (II + 63, N)
   7683                 DO J = JJ, min (JJ + 63, M)
   7684                   A(J, I) = B(I) + C(J)
   7685                 ENDDO
   7686               ENDDO
   7687             ENDDO
   7688           ENDDO
   7689 
   7690             which can be beneficial when M is larger than the caches,
   7691             because the innermost loop will iterate over a smaller amount
   7692             of data that can be kept in the caches.
   7693      * A new register allocator has replaced the old one. It is called
   7694        integrated register allocator (IRA) because coalescing, register
   7695        live range splitting, and hard register preferencing are done
   7696        on-the-fly during coloring. It also has better integration with the
   7697        reload pass. IRA is a regional register allocator which uses modern
   7698        Chaitin-Briggs coloring instead of Chow's priority coloring used in
   7699        the old register allocator. More info about IRA internals and
   7700        options can be found in the GCC manuals.
   7701      * A new instruction scheduler and software pipeliner, based on the
   7702        selective scheduling approach, has been added. The new pass
   7703        performs instruction unification, register renaming, substitution
   7704        through register copies, and speculation during scheduling. The
   7705        software pipeliner is able to pipeline non-countable loops. The new
   7706        pass is targeted at scheduling-eager in-order platforms. In GCC 4.4
   7707        it is available for the Intel Itanium platform working by default
   7708        as the second scheduling pass (after register allocation) at the
   7709        -O3 optimization level.
   7710      * When using -fprofile-generate with a multi-threaded program, the
   7711        profile counts may be slightly wrong due to race conditions. The
   7712        new -fprofile-correction option directs the compiler to apply
   7713        heuristics to smooth out the inconsistencies. By default the
   7714        compiler will give an error message when it finds an inconsistent
   7715        profile.
   7716      * The new -fprofile-dir=PATH option permits setting the directory
   7717        where profile data files are stored when using -fprofile-generate
   7718        and friends, and the directory used when reading profile data files
   7719        using -fprofile-use and friends.
   7720 
   7721 New warning options
   7722 
   7723      * The new -Wframe-larger-than=NUMBER option directs GCC to emit a
   7724        warning if any stack frame is larger than NUMBER bytes. This may be
   7725        used to help ensure that code fits within a limited amount of stack
   7726        space.
   7727      * The command-line option -Wlarger-than-N is now written as
   7728        -Wlarger-than=N and the old form is deprecated.
   7729      * The new -Wno-mudflap option disables warnings about constructs
   7730        which can not be instrumented when using -fmudflap.
   7731 
   7732 New Languages and Language specific improvements
   7733 
   7734      * Version 3.0 of the OpenMP specification is now supported for the C,
   7735        C++, and Fortran compilers.
   7736      * New character data types, per [5]TR 19769: New character types in
   7737        C, are now supported for the C compiler in -std=gnu99 mode, as
   7738        __CHAR16_TYPE__ and __CHAR32_TYPE__, and for the C++ compiler in
   7739        -std=c++0x and -std=gnu++0x modes, as char16_t and char32_t too.
   7740 
   7741   C family
   7742 
   7743      * A new optimize attribute was added to allow programmers to change
   7744        the optimization level and particular optimization options for an
   7745        individual function. You can also change the optimization options
   7746        via the GCC optimize pragma for functions defined after the pragma.
   7747        The GCC push_options pragma and the GCC pop_options pragma allow
   7748        you temporarily save and restore the options used. The GCC
   7749        reset_options pragma restores the options to what was specified on
   7750        the command line.
   7751      * Uninitialized warnings do not require enabling optimization
   7752        anymore, that is, -Wuninitialized can be used together with -O0.
   7753        Nonetheless, the warnings given by -Wuninitialized will probably be
   7754        more accurate if optimization is enabled.
   7755      * -Wparentheses now warns about expressions such as (!x | y) and (!x
   7756        & y). Using explicit parentheses, such as in ((!x) | y), silences
   7757        this warning.
   7758      * -Wsequence-point now warns within if, while,do while and for
   7759        conditions, and within for begin/end expressions.
   7760      * A new option -dU is available to dump definitions of preprocessor
   7761        macros that are tested or expanded.
   7762 
   7763   C++
   7764 
   7765      * [6]Improved experimental support for the upcoming ISO C++ standard,
   7766        C++0x. Including support for auto, inline namespaces, generalized
   7767        initializer lists, defaulted and deleted functions, new character
   7768        types, and scoped enums.
   7769      * Those errors that may be downgraded to warnings to build legacy
   7770        code now mention -fpermissive when -fdiagnostics-show-option is
   7771        enabled.
   7772      * -Wconversion now warns if the result of a static_cast to enumeral
   7773        type is unspecified because the value is outside the range of the
   7774        enumeral type.
   7775      * -Wuninitialized now warns if a non-static reference or non-static
   7776        const member appears in a class without constructors.
   7777      * G++ now properly implements value-initialization, so objects with
   7778        an initializer of () and an implicitly defined default constructor
   7779        will be zero-initialized before the default constructor is called.
   7780 
   7781     Runtime Library (libstdc++)
   7782 
   7783      * Improved experimental support for the upcoming ISO C++ standard,
   7784        C++0x, including:
   7785           + Support for <chrono>, <condition_variable>, <cstdatomic>,
   7786             <forward_list>, <initializer_list>, <mutex>, <ratio>,
   7787             <system_error>, and <thread>.
   7788           + unique_ptr, <algorithm> additions, exception propagation, and
   7789             support for the new character types in <string> and <limits>.
   7790           + Existing facilities now exploit initializer lists, defaulted
   7791             and deleted functions, and the newly implemented core C++0x
   7792             features.
   7793           + Some standard containers are more efficient together with
   7794             stateful allocators, i.e., no allocator is constructed on the
   7795             fly at element construction time.
   7796      * Experimental support for non-standard pointer types in containers.
   7797      * The long standing libstdc++/30928 has been fixed for targets
   7798        running glibc 2.10 or later.
   7799      * As usual, many small and larger bug fixes, in particular quite a
   7800        few corner cases in <locale>.
   7801 
   7802   Fortran
   7803 
   7804      * GNU Fortran now employs libcpp directly instead of using cc1 as an
   7805        external preprocessor. The [7]-cpp option was added to allow manual
   7806        invocation of the preprocessor without relying on filename
   7807        extensions.
   7808      * The [8]-Warray-temporaries option warns about array temporaries
   7809        generated by the compiler, as an aid to optimization.
   7810      * The [9]-fcheck-array-temporaries option has been added, printing a
   7811        notification at run time, when an array temporary had to be created
   7812        for an function argument. Contrary to -Warray-temporaries the
   7813        warning is only printed if the array is noncontiguous.
   7814      * Improved generation of DWARF debugging symbols
   7815      * If using an intrinsic not part of the selected standard (via -std=
   7816        and -fall-intrinsics) gfortran will now treat it as if this
   7817        procedure were declared EXTERNAL and try to link to a user-supplied
   7818        procedure. -Wintrinsics-std will warn whenever this happens. The
   7819        now-useless option -Wnonstd-intrinsic was removed.
   7820      * The flag -falign-commons has been added to control the alignment of
   7821        variables in COMMON blocks, which is enabled by default in line
   7822        with previous GCC version. Using -fno-align-commons one can force
   7823        commons to be contiguous in memory as required by the Fortran
   7824        standard, however, this slows down the memory access. The option
   7825        -Walign-commons, which is enabled by default, warns when padding
   7826        bytes were added for alignment. The proper solution is to sort the
   7827        common objects by decreasing storage size, which avoids the
   7828        alignment problems.
   7829      * Fortran 2003 support has been extended:
   7830           + Wide characters (ISO 10646, UCS-4, kind=4) and UTF-8 I/O is
   7831             now supported (except internal reads from/writes to wide
   7832             strings). [10]-fbackslash now supports also \unnnn and
   7833             \Unnnnnnnn to enter Unicode characters.
   7834           + Asynchronous I/O (implemented as synchronous I/O) and the
   7835             decimal=, size=, sign=, pad=, blank=, and delim= specifiers
   7836             are now supported in I/O statements.
   7837           + Support for Fortran 2003 structure constructors and for array
   7838             constructor with typespec has been added.
   7839           + Procedure Pointers (but not yet as component in derived types
   7840             and as function results) are now supported.
   7841           + Abstract types, type extension, and type-bound procedures
   7842             (both PROCEDURE and GENERIC but not as operators). Note: As
   7843             CLASS/polymorphyic types are not implemented, type-bound
   7844             procedures with PASS accept as non-standard extension TYPE
   7845             arguments.
   7846      * Fortran 2008 support has been added:
   7847           + The -std=f2008 option and support for the file extensions
   7848             .f2008 and .F2008 has been added.
   7849           + The g0 format descriptor is now supported.
   7850           + The Fortran 2008 mathematical intrinsics ASINH, ACOSH, ATANH,
   7851             ERF, ERFC, GAMMA, LOG_GAMMA, BESSEL_*, HYPOT, and ERFC_SCALED
   7852             are now available (some of them existed as GNU extension
   7853             before). Note: The hyperbolic functions are not yet supporting
   7854             complex arguments and the three- argument version of BESSEL_*N
   7855             is not available.
   7856           + The bit intrinsics LEADZ and TRAILZ have been added.
   7857 
   7858   Java (GCJ)
   7859 
   7860   Ada
   7861 
   7862      * The Ada runtime now supports multilibs on many platforms including
   7863        x86_64, SPARC and PowerPC. Their build is enabled by default.
   7864 
   7865 New Targets and Target Specific Improvements
   7866 
   7867   ARM
   7868 
   7869      * GCC now supports optimizing for the Cortex-A9, Cortex-R4 and
   7870        Cortex-R4F processors and has many other improvements to
   7871        optimization for ARM processors.
   7872      * GCC now supports the VFPv3 variant with 16 double-precision
   7873        registers with -mfpu=vfpv3-d16. The option -mfpu=vfp3 has been
   7874        renamed to -mfpu=vfpv3.
   7875      * GCC now supports the -mfix-cortex-m3-ldrd option to work around an
   7876        erratum on Cortex-M3 processors.
   7877      * GCC now supports the __sync_* atomic operations for ARM EABI
   7878        GNU/Linux.
   7879      * The section anchors optimization is now enabled by default when
   7880        optimizing for ARM.
   7881      * GCC now uses a new EABI-compatible profiling interface for EABI
   7882        targets. This requires a function __gnu_mcount_nc, which is
   7883        provided by GNU libc versions 2.8 and later.
   7884 
   7885   AVR
   7886 
   7887      * The -mno-tablejump option has been deprecated because it has the
   7888        same effect as the -fno-jump-tables option.
   7889      * Added support for these new AVR devices:
   7890           + ATA6289
   7891           + ATtiny13A
   7892           + ATtiny87
   7893           + ATtiny167
   7894           + ATtiny327
   7895           + ATmega8C1
   7896           + ATmega16C1
   7897           + ATmega32C1
   7898           + ATmega8M1
   7899           + ATmega16M1
   7900           + ATmega32M1
   7901           + ATmega32U4
   7902           + ATmega16HVB
   7903           + ATmega4HVD
   7904           + ATmega8HVD
   7905           + ATmega64C1
   7906           + ATmega64M1
   7907           + ATmega16U4
   7908           + ATmega32U6
   7909           + ATmega128RFA1
   7910           + AT90PWM81
   7911           + AT90SCR100
   7912           + M3000F
   7913           + M3000S
   7914           + M3001B
   7915 
   7916   IA-32/x86-64
   7917 
   7918      * Support for Intel AES built-in functions and code generation is
   7919        available via -maes.
   7920      * Support for Intel PCLMUL built-in function and code generation is
   7921        available via -mpclmul.
   7922      * Support for Intel AVX built-in functions and code generation is
   7923        available via -mavx.
   7924      * Automatically align the stack for local variables with alignment
   7925        requirement.
   7926      * GCC can now utilize the SVML library for vectorizing calls to a set
   7927        of C99 functions if -mveclibabi=svml is specified and you link to
   7928        an SVML ABI compatible library.
   7929      * On x86-64, the ABI has been changed in the following cases to
   7930        conform to the x86-64 ABI:
   7931           + Passing/returning structures with flexible array member:
   7932   struct foo
   7933     {
   7934       int i;
   7935       int flex[];
   7936     };
   7937           + Passing/returning structures with complex float member:
   7938   struct foo
   7939     {
   7940       int i;
   7941       __complex__ float f;
   7942     };
   7943           + Passing/returning unions with long double member:
   7944   union foo
   7945     {
   7946       int x;
   7947       long double ld;
   7948     };
   7949        Code built with previous versions of GCC that uses any of these is
   7950        not compatible with code built with GCC 4.4.0 or later.
   7951      * A new target attribute was added to allow programmers to change the
   7952        target options like -msse2 or -march=k8 for an individual function.
   7953        You can also change the target options via the GCC target pragma
   7954        for functions defined after the pragma.
   7955      * GCC can now be configured with options --with-arch-32,
   7956        --with-arch-64, --with-cpu-32, --with-cpu-64, --with-tune-32 and
   7957        --with-tune-64 to control the default optimization separately for
   7958        32-bit and 64-bit modes.
   7959 
   7960   IA-32/IA64
   7961 
   7962      * Support for __float128 (TFmode) IEEE quad type and corresponding
   7963        TCmode IEEE complex quad type is available via the soft-fp library
   7964        on IA-32/IA64 targets. This includes basic arithmetic operations
   7965        (addition, subtraction, negation, multiplication and division) on
   7966        __float128 real and TCmode complex values, the full set of IEEE
   7967        comparisons between __float128 values, conversions to and from
   7968        float, double and long double floating point types, as well as
   7969        conversions to and from signed or unsigned integer, signed or
   7970        unsigned long integer and signed or unsigned quad (TImode, IA64
   7971        only) integer types. Additionally, all operations generate the full
   7972        set of IEEE exceptions and support the full set of IEEE rounding
   7973        modes.
   7974 
   7975   M68K/ColdFire
   7976 
   7977      * GCC now supports instruction scheduling for ColdFire V1, V3 and V4
   7978        processors. (Scheduling support for ColdFire V2 processors was
   7979        added in GCC 4.3.)
   7980      * GCC now supports the -mxgot option to support programs requiring
   7981        many GOT entries on ColdFire.
   7982      * The m68k-*-linux-gnu target now builds multilibs by default.
   7983 
   7984   MIPS
   7985 
   7986      * MIPS Technologies have extended the original MIPS SVR4 ABI to
   7987        include support for procedure linkage tables (PLTs) and copy
   7988        relocations. These extensions allow GNU/Linux executables to use a
   7989        significantly more efficient code model than the one defined by the
   7990        original ABI.
   7991        GCC support for this code model is available via a new command-line
   7992        option, -mplt. There is also a new configure-time option,
   7993        --with-mips-plt, to make -mplt the default.
   7994        The new code model requires support from the assembler, the linker,
   7995        and the runtime C library. This support is available in binutils
   7996        2.19 and GLIBC 2.9.
   7997      * GCC can now generate MIPS16 code for 32-bit GNU/Linux executables
   7998        and 32-bit GNU/Linux shared libraries. This feature requires GNU
   7999        binutils 2.19 or above.
   8000      * Support for RMI's XLR processor is now available through the
   8001        -march=xlr and -mtune=xlr options.
   8002      * 64-bit targets can now perform 128-bit multiplications inline,
   8003        instead of relying on a libgcc function.
   8004      * Native GNU/Linux toolchains now support -march=native and
   8005        -mtune=native, which select the host processor.
   8006      * GCC now supports the R10K, R12K, R14K and R16K processors. The
   8007        canonical -march= and -mtune= names for these processors are
   8008        r10000, r12000, r14000 and r16000 respectively.
   8009      * GCC can now work around the side effects of speculative execution
   8010        on R10K processors. Please see the documentation of the
   8011        -mr10k-cache-barrier option for details.
   8012      * Support for the MIPS64 Release 2 instruction set has been added.
   8013        The option -march=mips64r2 enables generation of these
   8014        instructions.
   8015      * GCC now supports Cavium Networks' Octeon processor. This support is
   8016        available through the -march=octeon and -mtune=octeon options.
   8017      * GCC now supports STMicroelectronics' Loongson 2E/2F processors. The
   8018        canonical -march= and -mtune= names for these processors are
   8019        loongson2e and loongson2f.
   8020 
   8021   picochip
   8022 
   8023    Picochip is a 16-bit processor. A typical picoChip contains over 250
   8024    small cores, each with small amounts of memory. There are three
   8025    processor variants (STAN, MEM and CTRL) with different instruction sets
   8026    and memory configurations and they can be chosen using the -mae option.
   8027 
   8028    This port is intended to be a "C" only port.
   8029 
   8030   Power Architecture and PowerPC
   8031 
   8032      * GCC now supports the e300c2, e300c3 and e500mc processors.
   8033      * GCC now supports Xilinx processors with a single-precision FPU.
   8034      * Decimal floating point is now supported for e500 processors.
   8035 
   8036   S/390, zSeries and System z9/z10
   8037 
   8038      * Support for the IBM System z10 EC/BC processor has been added. When
   8039        using the -march=z10 option, the compiler will generate code making
   8040        use of instructions provided by the General-Instruction-Extension
   8041        Facility and the Execute-Extension Facility.
   8042 
   8043   VxWorks
   8044 
   8045      * GCC now supports the thread-local storage mechanism used on
   8046        VxWorks.
   8047 
   8048   Xtensa
   8049 
   8050      * GCC now supports thread-local storage (TLS) for Xtensa processor
   8051        configurations that include the Thread Pointer option. TLS also
   8052        requires support from the assembler and linker; this support is
   8053        provided in the GNU binutils beginning with version 2.19.
   8054 
   8055 Documentation improvements
   8056 
   8057 Other significant improvements
   8058 
   8059 GCC 4.4.1
   8060 
   8061    This is the [11]list of problem reports (PRs) from GCC's bug tracking
   8062    system that are known to be fixed in the 4.4.1 release. This list might
   8063    not be complete (that is, it is possible that some PRs that have been
   8064    fixed are not listed here).
   8065 
   8066 GCC 4.4.2
   8067 
   8068    This is the [12]list of problem reports (PRs) from GCC's bug tracking
   8069    system that are known to be fixed in the 4.4.2 release. This list might
   8070    not be complete (that is, it is possible that some PRs that have been
   8071    fixed are not listed here).
   8072 
   8073 GCC 4.4.3
   8074 
   8075    This is the [13]list of problem reports (PRs) from GCC's bug tracking
   8076    system that are known to be fixed in the 4.4.3 release. This list might
   8077    not be complete (that is, it is possible that some PRs that have been
   8078    fixed are not listed here).
   8079 
   8080 GCC 4.4.4
   8081 
   8082    This is the [14]list of problem reports (PRs) from GCC's bug tracking
   8083    system that are known to be fixed in the 4.4.4 release. This list might
   8084    not be complete (that is, it is possible that some PRs that have been
   8085    fixed are not listed here).
   8086 
   8087 GCC 4.4.5
   8088 
   8089    This is the [15]list of problem reports (PRs) from GCC's bug tracking
   8090    system that are known to be fixed in the 4.4.5 release. This list might
   8091    not be complete (that is, it is possible that some PRs that have been
   8092    fixed are not listed here).
   8093 
   8094 GCC 4.4.6
   8095 
   8096    This is the [16]list of problem reports (PRs) from GCC's bug tracking
   8097    system that are known to be fixed in the 4.4.6 release. This list might
   8098    not be complete (that is, it is possible that some PRs that have been
   8099    fixed are not listed here).
   8100 
   8101 GCC 4.4.7
   8102 
   8103    This is the [17]list of problem reports (PRs) from GCC's bug tracking
   8104    system that are known to be fixed in the 4.4.7 release. This list might
   8105    not be complete (that is, it is possible that some PRs that have been
   8106    fixed are not listed here).
   8107 
   8108 
   8109     For questions related to the use of GCC, please consult these web
   8110     pages and the [18]GCC manuals. If that fails, the
   8111     [19]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   8112     web pages and the development of GCC are welcome on our developer
   8113     list at [20]gcc (a] gcc.gnu.org. All of [21]our lists have public
   8114     archives.
   8115 
   8116    Copyright (C) [22]Free Software Foundation, Inc. Verbatim copying and
   8117    distribution of this entire article is permitted in any medium,
   8118    provided this notice is preserved.
   8119 
   8120    These pages are [23]maintained by the GCC team. Last modified
   8121    2018-09-30[24].
   8122 
   8123 References
   8124 
   8125    1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.7
   8126    2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted
   8127    3. http://gcc.gnu.org/gcc-4.4/porting_to.html
   8128    4. https://gcc.gnu.org/wiki/Graphite
   8129    5. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf
   8130    6. http://gcc.gnu.org/gcc-4.4/cxx0x_status.html
   8131    7. https://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html
   8132    8. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWarray-temporaries_007d-125
   8133    9. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcheck-array-temporaries_007d-221
   8134   10. https://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bbackslash_007d-34
   8135   11. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.1
   8136   12. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.2
   8137   13. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.3
   8138   14. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.4
   8139   15. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.5
   8140   16. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.6
   8141   17. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.7
   8142   18. https://gcc.gnu.org/onlinedocs/
   8143   19. mailto:gcc-help (a] gcc.gnu.org
   8144   20. mailto:gcc (a] gcc.gnu.org
   8145   21. https://gcc.gnu.org/lists.html
   8146   22. https://www.fsf.org/
   8147   23. https://gcc.gnu.org/about.html
   8148   24. http://validator.w3.org/check/referer
   8149 ======================================================================
   8150 http://gcc.gnu.org/gcc-4.3/index.html
   8151 
   8152                              GCC 4.3 Release Series
   8153 
   8154    Jun 27, 2011
   8155 
   8156    The [1]GNU project and the GCC developers are pleased to announce the
   8157    release of GCC 4.3.6.
   8158 
   8159    This release is a bug-fix release, containing fixes for regressions in
   8160    GCC 4.3.5 relative to previous releases of GCC.
   8161 
   8162    This release series is no longer maintained.
   8163 
   8164 Release History
   8165 
   8166    GCC 4.3.6
   8167           Jun 27, 2011 ([2]changes)
   8168 
   8169    GCC 4.3.5
   8170           May 22, 2010 ([3]changes)
   8171 
   8172    GCC 4.3.4
   8173           August 4, 2009 ([4]changes)
   8174 
   8175    GCC 4.3.3
   8176           January 24, 2009 ([5]changes)
   8177 
   8178    GCC 4.3.2
   8179           August 27, 2008 ([6]changes)
   8180 
   8181    GCC 4.3.1
   8182           June 6, 2008 ([7]changes)
   8183 
   8184    GCC 4.3.0
   8185           March 5, 2008 ([8]changes)
   8186 
   8187 References and Acknowledgements
   8188 
   8189    GCC used to stand for the GNU C Compiler, but since the compiler
   8190    supports several other languages aside from C, it now stands for the
   8191    GNU Compiler Collection.
   8192 
   8193    A list of [9]successful builds is updated as new information becomes
   8194    available.
   8195 
   8196    The GCC developers would like to thank the numerous people that have
   8197    contributed new features, improvements, bug fixes, and other changes as
   8198    well as test results to GCC. This [10]amazing group of volunteers is
   8199    what makes GCC successful.
   8200 
   8201    For additional information about GCC please refer to the [11]GCC
   8202    project web site or contact the [12]GCC development mailing list.
   8203 
   8204    To obtain GCC please use [13]our mirror sites or [14]our SVN server.
   8205 
   8206 
   8207     For questions related to the use of GCC, please consult these web
   8208     pages and the [15]GCC manuals. If that fails, the
   8209     [16]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   8210     web pages and the development of GCC are welcome on our developer
   8211     list at [17]gcc (a] gcc.gnu.org. All of [18]our lists have public
   8212     archives.
   8213 
   8214    Copyright (C) [19]Free Software Foundation, Inc. Verbatim copying and
   8215    distribution of this entire article is permitted in any medium,
   8216    provided this notice is preserved.
   8217 
   8218    These pages are [20]maintained by the GCC team. Last modified
   8219    2018-09-30[21].
   8220 
   8221 References
   8222 
   8223    1. http://www.gnu.org/
   8224    2. http://gcc.gnu.org/gcc-4.3/changes.html
   8225    3. http://gcc.gnu.org/gcc-4.3/changes.html
   8226    4. http://gcc.gnu.org/gcc-4.3/changes.html
   8227    5. http://gcc.gnu.org/gcc-4.3/changes.html
   8228    6. http://gcc.gnu.org/gcc-4.3/changes.html
   8229    7. http://gcc.gnu.org/gcc-4.3/changes.html
   8230    8. http://gcc.gnu.org/gcc-4.3/changes.html
   8231    9. http://gcc.gnu.org/gcc-4.3/buildstat.html
   8232   10. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   8233   11. http://gcc.gnu.org/index.html
   8234   12. mailto:gcc (a] gcc.gnu.org
   8235   13. http://gcc.gnu.org/mirrors.html
   8236   14. http://gcc.gnu.org/svn.html
   8237   15. https://gcc.gnu.org/onlinedocs/
   8238   16. mailto:gcc-help (a] gcc.gnu.org
   8239   17. mailto:gcc (a] gcc.gnu.org
   8240   18. https://gcc.gnu.org/lists.html
   8241   19. https://www.fsf.org/
   8242   20. https://gcc.gnu.org/about.html
   8243   21. http://validator.w3.org/check/referer
   8244 ======================================================================
   8245 http://gcc.gnu.org/gcc-4.3/changes.html
   8246 
   8247                              GCC 4.3 Release Series
   8248                         Changes, New Features, and Fixes
   8249 
   8250    The latest release in the 4.3 release series is [1]GCC 4.3.5.
   8251 
   8252 Caveats
   8253 
   8254      * GCC requires the [2]GMP and [3]MPFR libraries for building all the
   8255        various front-end languages it supports. See the [4]prerequisites
   8256        page for version requirements.
   8257      * ColdFire targets now treat long double as having the same format as
   8258        double. In earlier versions of GCC, they used the 68881 long double
   8259        format instead.
   8260      * The m68k-uclinux target now uses the same calling conventions as
   8261        m68k-linux-gnu. You can select the original calling conventions by
   8262        configuring for m68k-uclinuxoldabi instead. Note that
   8263        m68k-uclinuxoldabi also retains the original 80-bit long double on
   8264        ColdFire targets.
   8265      * The -fforce-mem option has been removed because it has had no
   8266        effect in the last few GCC releases.
   8267      * The i386 -msvr3-shlib option has been removed since it is no longer
   8268        used.
   8269      * Fastcall for i386 has been changed not to pass aggregate arguments
   8270        in registers, following Microsoft compilers.
   8271      * Support for the AOF assembler has been removed from the ARM back
   8272        end; this affects only the targets arm-semi-aof and armel-semi-aof,
   8273        which are no longer recognized. We removed these targets without a
   8274        deprecation period because we discovered that they have been
   8275        unusable since GCC 4.0.0.
   8276      * Support for the TMS320C3x/C4x processor (targets c4x-* and tic4x-*)
   8277        has been removed. This support had been deprecated since GCC 4.0.0.
   8278      * Support for a number of older systems and recently unmaintained or
   8279        untested target ports of GCC has been declared obsolete in GCC 4.3.
   8280        Unless there is activity to revive them, the next release of GCC
   8281        will have their sources permanently removed.
   8282        All GCC ports for the following processor architectures have been
   8283        declared obsolete:
   8284           + Morpho MT (mt-*)
   8285        The following aliases for processor architectures have been
   8286        declared obsolete. Users should use the indicated generic target
   8287        names instead, with compile-time options such as -mcpu or
   8288        configure-time options such as --with-cpu to control the
   8289        configuration more precisely.
   8290           + strongarm*-*-*, ep9312*-*-*, xscale*-*-* (use arm*-*-*
   8291             instead).
   8292           + parisc*-*-* (use hppa*-*-* instead).
   8293           + m680[012]0-*-* (use m68k-*-* instead).
   8294        All GCC ports for the following operating systems have been
   8295        declared obsolete:
   8296           + BeOS (*-*-beos*)
   8297           + kaOS (*-*-kaos*)
   8298           + GNU/Linux using the a.out object format (*-*-linux*aout*)
   8299           + GNU/Linux using version 1 of the GNU C Library
   8300             (*-*-linux*libc1*)
   8301           + Solaris versions before Solaris 7 (*-*-solaris2.[0-6],
   8302             *-*-solaris2.[0-6].*)
   8303           + Miscellaneous System V (*-*-sysv*)
   8304           + WindISS (*-*-windiss*)
   8305        Also, those for some individual systems on particular architectures
   8306        have been obsoleted:
   8307           + UNICOS/mk on DEC Alpha (alpha*-*-unicosmk*)
   8308           + CRIS with a.out object format (cris-*-aout)
   8309           + BSD 4.3 on PA-RISC (hppa1.1-*-bsd*)
   8310           + OSF/1 on PA-RISC (hppa1.1-*-osf*)
   8311           + PRO on PA-RISC (hppa1.1-*-pro*)
   8312           + Sequent PTX on IA32 (i[34567]86-sequent-ptx4*,
   8313             i[34567]86-sequent-sysv4*)
   8314           + SCO Open Server 5 on IA32 (i[34567]86-*-sco3.2v5*)
   8315           + UWIN on IA32 (i[34567]86-*-uwin*) (support for UWIN as a host
   8316             was previously [5]removed in 2001, leaving only the support
   8317             for UWIN as a target now being deprecated)
   8318           + ChorusOS on PowerPC (powerpc-*-chorusos*)
   8319           + All VAX configurations apart from NetBSD and OpenBSD
   8320             (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*)
   8321      * The [6]-Wconversion option has been modified. Its purpose now is to
   8322        warn for implicit conversions that may alter a value. This new
   8323        behavior is available for both C and C++. Warnings about
   8324        conversions between signed and unsigned integers can be disabled by
   8325        using -Wno-sign-conversion. In C++, they are disabled by default
   8326        unless -Wsign-conversion is explicitly requested. The old behavior
   8327        of -Wconversion, that is, warn for prototypes causing a type
   8328        conversion that is different from what would happen to the same
   8329        argument in the absence of a prototype, has been moved to a new
   8330        option -Wtraditional-conversion, which is only available for C.
   8331      * The -m386, -m486, -mpentium and -mpentiumpro tuning options have
   8332        been removed because they were deprecated for more than 3 GCC major
   8333        releases. Use -mtune=i386, -mtune=i486, -mtune=pentium or
   8334        -mtune=pentiumpro as a replacement.
   8335      * The -funsafe-math-optimizations option now automatically turns on
   8336        -fno-trapping-math in addition to -fno-signed-zeros, as it enables
   8337        reassociation and thus may introduce or remove traps.
   8338      * The -ftree-vectorize option is now on by default under -O3. In
   8339        order to generate code for a SIMD extension, it has to be enabled
   8340        as well: use -maltivec for PowerPC platforms and -msse/-msse2 for
   8341        i?86 and x86_64.
   8342      * More information on porting to GCC 4.3 from previous versions of
   8343        GCC can be found in the [7]porting guide for this release.
   8344 
   8345 General Optimizer Improvements
   8346 
   8347      * The GCC middle-end has been integrated with the MPFR library. This
   8348        allows GCC to evaluate and replace at compile-time calls to
   8349        built-in math functions having constant arguments with their
   8350        mathematically equivalent results. In making use of MPFR, GCC can
   8351        generate correct results regardless of the math library
   8352        implementation or floating point precision of the host platform.
   8353        This also allows GCC to generate identical results regardless of
   8354        whether one compiles in native or cross-compile configurations to a
   8355        particular target. The following built-in functions take advantage
   8356        of this new capability: acos, acosh, asin, asinh, atan2, atan,
   8357        atanh, cbrt, cos, cosh, drem, erf, erfc, exp10, exp2, exp, expm1,
   8358        fdim, fma, fmax, fmin, gamma_r, hypot, j0, j1, jn, lgamma_r, log10,
   8359        log1p, log2, log, pow10, pow, remainder, remquo, sin, sincos, sinh,
   8360        tan, tanh, tgamma, y0, y1 and yn. The float and long double
   8361        variants of these functions (e.g. sinf and sinl) are also handled.
   8362        The sqrt and cabs functions with constant arguments were already
   8363        optimized in prior GCC releases. Now they also use MPFR.
   8364      * A new forward propagation pass on RTL was added. The new pass
   8365        replaces several slower transformations, resulting in compile-time
   8366        improvements as well as better code generation in some cases.
   8367      * A new command-line switch -frecord-gcc-switches has been added to
   8368        GCC, although it is only enabled for some targets. The switch
   8369        causes the command line that was used to invoke the compiler to be
   8370        recorded into the object file that is being created. The exact
   8371        format of this recording is target and binary file format
   8372        dependent, but it usually takes the form of a note section
   8373        containing ASCII text. The switch is related to the -fverbose-asm
   8374        switch, but that one only records the information in the assembler
   8375        output file as comments, so the information never reaches the
   8376        object file.
   8377      * The inliner heuristic is now aware of stack frame consumption. New
   8378        command-line parameters --param large-stack-frame and --param
   8379        large-stack-frame-growth can be used to limit stack frame size
   8380        growth caused by inlining.
   8381      * During feedback directed optimizations, the expected block size the
   8382        memcpy, memset and bzero functions operate on is discovered and for
   8383        cases of commonly used small sizes, specialized inline code is
   8384        generated.
   8385      * __builtin_expect no longer requires its argument to be a compile
   8386        time constant.
   8387      * Interprocedural optimization was reorganized to work on functions
   8388        in SSA form. This enables more precise and cheaper dataflow
   8389        analysis and makes writing interprocedural optimizations easier.
   8390        The following improvements have been implemented on top of this
   8391        framework:
   8392           + Pre-inline optimization: Selected local optimization passes
   8393             are run before the inliner (and other interprocedural passes)
   8394             are executed. This significantly improves the accuracy of code
   8395             growth estimates used by the inliner and reduces the overall
   8396             memory footprint for large compilation units.
   8397           + Early inlining (a simple bottom-up inliner pass inlining only
   8398             functions whose body is smaller than the expected call
   8399             overhead) is now executed with the early optimization passes,
   8400             thus inlining already optimized function bodies into an
   8401             unoptimized function that is subsequently optimized by early
   8402             optimizers. This enables the compiler to quickly eliminate
   8403             abstraction penalty in C++ programs.
   8404           + Interprocedural constant propagation now operate on SSA form
   8405             increasing accuracy of the analysis.
   8406      * A new internal representation for GIMPLE statements has been
   8407        contributed, resulting in compile-time memory savings.
   8408      * The vectorizer was enhanced to support vectorization of outer
   8409        loops, intra-iteration parallelism (loop-aware SLP), vectorization
   8410        of strided accesses and loops with multiple data-types. Run-time
   8411        dependency testing using loop versioning was added. The cost model,
   8412        turned on by -fvect-cost-model, was developed.
   8413 
   8414 New Languages and Language specific improvements
   8415 
   8416      * We have added new command-line options
   8417        -finstrument-functions-exclude-function-list and
   8418        -finstrument-functions-exclude-file-list. They provide more control
   8419        over which functions are annotated by the -finstrument-functions
   8420        option.
   8421 
   8422   C family
   8423 
   8424      * Implicit conversions between generic vector types are now only
   8425        permitted when the two vectors in question have the same number of
   8426        elements and compatible element types. (Note that the restriction
   8427        involves compatible element types, not implicitly-convertible
   8428        element types: thus, a vector type with element type int may not be
   8429        implicitly converted to a vector type with element type unsigned
   8430        int.) This restriction, which is in line with specifications for
   8431        SIMD architectures such as AltiVec, may be relaxed using the flag
   8432        -flax-vector-conversions. This flag is intended only as a
   8433        compatibility measure and should not be used for new code.
   8434      * -Warray-bounds has been added and is now enabled by default for
   8435        -Wall . It produces warnings for array subscripts that can be
   8436        determined at compile time to be always out of bounds.
   8437        -Wno-array-bounds will disable the warning.
   8438      * The constructor and destructor function attributes now accept
   8439        optional priority arguments which control the order in which the
   8440        constructor and destructor functions are run.
   8441      * New [8]command-line options -Wtype-limits, -Wold-style-declaration,
   8442        -Wmissing-parameter-type, -Wempty-body, -Wclobbered and
   8443        -Wignored-qualifiers have been added for finer control of the
   8444        diverse warnings enabled by -Wextra.
   8445      * A new function attribute alloc_size has been added to mark up
   8446        malloc style functions. For constant sized allocations this can be
   8447        used to find out the size of the returned pointer using the
   8448        __builtin_object_size() function for buffer overflow checking and
   8449        similar. This supplements the already built-in malloc and calloc
   8450        constant size handling.
   8451      * Integer constants written in binary are now supported as a GCC
   8452        extension. They consist of a prefix 0b or 0B, followed by a
   8453        sequence of 0 and 1 digits.
   8454      * A new predefined macro __COUNTER__ has been added. It expands to
   8455        sequential integral values starting from 0. In conjunction with the
   8456        ## operator, this provides a convenient means to generate unique
   8457        identifiers.
   8458      * A new command-line option -fdirectives-only has been added. It
   8459        enables a special preprocessing mode which improves the performance
   8460        of applications like distcc and ccache.
   8461      * Fixed-point data types and operators have been added. They are
   8462        based on Chapter 4 of the Embedded-C specification (n1169.pdf).
   8463        Currently, only MIPS targets are supported.
   8464      * Decimal floating-point arithmetic based on draft ISO/IEC TR 24732,
   8465        N1241, is now supported as a GCC extension to C for targets
   8466        i[34567]86-*-linux-gnu, powerpc*-*-linux-gnu, s390*-ibm-linux-gnu,
   8467        and x86_64-*-linux-gnu. The feature introduces new data types
   8468        _Decimal32, _Decimal64, and _Decimal128 with constant suffixes DF,
   8469        DD, and DL.
   8470 
   8471   C++
   8472 
   8473      * [9]Experimental support for the upcoming ISO C++ standard, C++0x.
   8474      * -Wc++0x-compat has been added and is now enabled by default for
   8475        -Wall. It produces warnings for constructs whose meaning differs
   8476        between ISO C++ 1998 and C++0x.
   8477      * The -Wparentheses option now works for C++ as it does for C. It
   8478        warns if parentheses are omitted when operators with confusing
   8479        precedence are nested. It also warns about ambiguous else
   8480        statements. Since -Wparentheses is enabled by -Wall, this may cause
   8481        additional warnings with existing C++ code which uses -Wall. These
   8482        new warnings may be disabled by using -Wall -Wno-parentheses.
   8483      * The -Wmissing-declarations now works for C++ as it does for C.
   8484      * The -fvisibility-ms-compat flag was added, to make it easier to
   8485        port larger projects using shared libraries from Microsoft's Visual
   8486        Studio to ELF and Mach-O systems.
   8487      * C++ attribute handling has been overhauled for template arguments
   8488        (ie dependent types). In particular, __attribute__((aligned(T)));
   8489        works for C++ types.
   8490 
   8491     Runtime Library (libstdc++)
   8492 
   8493      * [10]Experimental support for the upcoming ISO C++ standard, C++0x.
   8494      * Support for TR1 mathematical special functions and regular
   8495        expressions.
   8496      * Default what implementations give more elaborate exception strings
   8497        for bad_cast, bad_typeid, bad_exception, and bad_alloc.
   8498      * Header dependencies have been streamlined, reducing unnecessary
   8499        includes and pre-processed bloat.
   8500      * Variadic template implementations of items in <tuple> and
   8501        <functional>.
   8502      * An experimental [11]parallel mode has been added. This is a
   8503        parallel implementation of many C++ Standard library algorithms,
   8504        like std::accumulate, std::for_each, std::transform, or std::sort,
   8505        to give but four examples. These algorithms can be substituted for
   8506        the normal (sequential) libstdc++ algorithms on a piecemeal basis,
   8507        or all existing algorithms can be transformed via the
   8508        -D_GLIBCXX_PARALLEL macro.
   8509      * Debug mode versions of classes in <unordered_set> and
   8510        <unordered_map>.
   8511      * Formal deprecation of <ext/hash_set> and <ext/hash_map>, which are
   8512        now <backward/hash_set> and <backward/hash_map>. This code:
   8513     #include <ext/hash_set>
   8514     __gnu_cxx::hash_set<int> s;
   8515 
   8516        Can be transformed (in order of preference) to:
   8517     #include <tr1/unordered_set>
   8518     std::tr1::unordered_set<int> s;
   8519 
   8520        or
   8521     #include <backward/hash_set>
   8522     __gnu_cxx::hash_set<int> s;
   8523 
   8524        Similar transformations apply to __gnu_cxx::hash_map,
   8525        __gnu_cxx::hash_multimap, __gnu_cxx::hash_set,
   8526        __gnu_cxx::hash_multiset.
   8527 
   8528   Fortran
   8529 
   8530      * Due to the fact that the GMP and MPFR libraries are required for
   8531        all languages, Fortran is no longer special in this regard and is
   8532        available by default.
   8533      * The [12]-fexternal-blas option has been added, which generates
   8534        calls to BLAS routines for intrinsic matrix operations such as
   8535        matmul rather than using the built-in algorithms.
   8536      * Support to give a backtrace (compiler flag -fbacktrace or
   8537        environment variable GFORTRAN_ERROR_BACKTRACE; on glibc systems
   8538        only) or a core dump (-fdump-core, GFORTRAN_ERROR_DUMPCORE) when a
   8539        run-time error occured.
   8540      * GNU Fortran now defines __GFORTRAN__ when it runs the C
   8541        preprocessor (CPP).
   8542      * The [13]-finit-local-zero, -finit-real, -finit-integer,
   8543        -finit-character, and -finit-logical options have been added, which
   8544        can be used to initialize local variables.
   8545      * The intrinsic procedures [14]GAMMA and [15]LGAMMA have been added,
   8546        which calculate the Gamma function and its logarithm. Use EXTERNAL
   8547        gamma if you want to use your own gamma function.
   8548      * GNU Fortran now regards the backslash character as literal (as
   8549        required by the Fortran 2003 standard); using [16]-fbackslash GNU
   8550        Fortran interprets backslashes as C-style escape characters.
   8551      * The [17]interpretation of binary, octal and hexadecimal (BOZ)
   8552        literal constants has been changed. Before they were always
   8553        interpreted as integer; now they are bit-wise transferred as
   8554        argument of INT, REAL, DBLE and CMPLX as required by the Fortran
   8555        2003 standard, and for real and complex variables in DATA
   8556        statements or when directly assigned to real and complex variables.
   8557        Everywhere else and especially in expressions they are still
   8558        regarded as integer constants.
   8559      * Fortran 2003 support has been extended:
   8560           + Intrinsic statements IMPORT, PROTECTED, VALUE and VOLATILE
   8561           + Pointer intent
   8562           + Intrinsic module ISO_ENV_FORTRAN
   8563           + Interoperability with C (ISO C Bindings)
   8564           + ABSTRACT INTERFACES and PROCEDURE statements (without POINTER
   8565             attribute)
   8566           + Fortran 2003 BOZ
   8567 
   8568   Java (GCJ)
   8569 
   8570      * GCJ now uses the Eclipse Java compiler for its Java parsing needs.
   8571        This enables the use of all 1.5 language features, and fixes most
   8572        existing front end bugs.
   8573      * libgcj now supports all 1.5 language features which require runtime
   8574        support: foreach, enum, annotations, generics, and auto-boxing.
   8575      * We've made many changes to the tools shipped with gcj.
   8576           + The old jv-scan tool has been removed. This tool never really
   8577             worked properly. There is no replacement.
   8578           + gcjh has been rewritten. Some of its more obscure options no
   8579             longer work, but are still recognized in an attempt at
   8580             compatibility. gjavah is a new program with similar
   8581             functionality but different command-line options.
   8582           + grmic and grmiregistry have been rewritten. grmid has been
   8583             added.
   8584           + gjar replaces the old fastjar.
   8585           + gjarsigner (used for signing jars), gkeytool (used for key
   8586             management), gorbd (for CORBA), gserialver (computes
   8587             serialization UIDs), and gtnameserv (also for CORBA) are now
   8588             installed.
   8589      * The ability to dump the contents of the java run time heap to a
   8590        file for off-line analysis has been added. The heap dumps may be
   8591        analyzed with the new gc-analyze tool. They may be generated on
   8592        out-of-memory conditions or on demand and are controlled by the new
   8593        run time class gnu.gcj.util.GCInfo.
   8594      * java.util.TimeZone can now read files from /usr/share/zoneinfo to
   8595        provide correct, updated, timezone information. This means that
   8596        packagers no longer have to update libgcj when a time zone change
   8597        is published.
   8598 
   8599 New Targets and Target Specific Improvements
   8600 
   8601   IA-32/x86-64
   8602 
   8603      * Tuning for Intel Core 2 processors is available via -mtune=core2
   8604        and -march=core2.
   8605      * Tuning for AMD Geode processors is available via -mtune=geode and
   8606        -march=geode.
   8607      * Code generation of block move (memcpy) and block set (memset) was
   8608        rewritten. GCC can now pick the best algorithm (loop, unrolled
   8609        loop, instruction with rep prefix or a library call) based on the
   8610        size of the block being copied and the CPU being optimized for. A
   8611        new option -minline-stringops-dynamically has been added. With this
   8612        option string operations of unknown size are expanded such that
   8613        small blocks are copied by in-line code, while for large blocks a
   8614        library call is used. This results in faster code than
   8615        -minline-all-stringops when the library implementation is capable
   8616        of using cache hierarchy hints. The heuristic choosing the
   8617        particular algorithm can be overwritten via -mstringop-strategy.
   8618        Newly also memset of values different from 0 is inlined.
   8619      * GCC no longer places the cld instruction before string operations.
   8620        Both i386 and x86-64 ABI documents mandate the direction flag to be
   8621        clear at the entry of a function. It is now invalid to set the flag
   8622        in asm statement without reseting it afterward.
   8623      * Support for SSSE3 built-in functions and code generation are
   8624        available via -mssse3.
   8625      * Support for SSE4.1 built-in functions and code generation are
   8626        available via -msse4.1.
   8627      * Support for SSE4.2 built-in functions and code generation are
   8628        available via -msse4.2.
   8629      * Both SSE4.1 and SSE4.2 support can be enabled via -msse4.
   8630      * A new set of options -mpc32, -mpc64 and -mpc80 have been added to
   8631        allow explicit control of x87 floating point precision.
   8632      * Support for __float128 (TFmode) IEEE quad type and corresponding
   8633        TCmode IEEE complex quad type is available via the soft-fp library
   8634        on x86_64 targets. This includes basic arithmetic operations
   8635        (addition, subtraction, negation, multiplication and division) on
   8636        __float128 real and TCmode complex values, the full set of IEEE
   8637        comparisons between __float128 values, conversions to and from
   8638        float, double and long double floating point types, as well as
   8639        conversions to and from signed or unsigned integer, signed or
   8640        unsigned long integer and signed or unsigned quad (TImode) integer
   8641        types. Additionally, all operations generate the full set of IEEE
   8642        exceptions and support the full set of IEEE rounding modes.
   8643      * GCC can now utilize the ACML library for vectorizing calls to a set
   8644        of C99 functions on x86_64 if -mveclibabi=acml is specified and you
   8645        link to an ACML ABI compatible library.
   8646 
   8647   ARM
   8648 
   8649      * Compiler and Library support for Thumb-2 and the ARMv7 architecture
   8650        has been added.
   8651 
   8652   CRIS
   8653 
   8654     New features
   8655 
   8656      * Compiler and Library support for the CRIS v32 architecture, as
   8657        found in Axis Communications ETRAX FS and ARTPEC-3 chips, has been
   8658        added.
   8659 
   8660     Configuration changes
   8661 
   8662      * The cris-*-elf target now includes support for CRIS v32, including
   8663        libraries, through the -march=v32 option.
   8664      * A new crisv32-*-elf target defaults to generate code for CRIS v32.
   8665      * A new crisv32-*-linux* target defaults to generate code for CRIS
   8666        v32.
   8667      * The cris-*-aout target has been obsoleted.
   8668 
   8669     Improved support for built-in functions
   8670 
   8671      * GCC can now use the lz and swapwbr instructions to implement the
   8672        __builtin_clz, __builtin_ctz and __builtin_ffs family of functions.
   8673      * __builtin_bswap32 is now implemented using the swapwb instruction,
   8674        when available.
   8675 
   8676   m68k and ColdFire
   8677 
   8678     New features
   8679 
   8680      * Support for several new ColdFire processors has been added. You can
   8681        generate code for them using the new -mcpu option.
   8682      * All targets now support ColdFire processors.
   8683      * m68k-uclinux targets have improved support for C++ constructors and
   8684        destructors, and for shared libraries.
   8685      * It is now possible to set breakpoints on the first or last line of
   8686        a function, even if there are no statements on that line.
   8687 
   8688     Optimizations
   8689 
   8690      * Support for sibling calls has been added.
   8691      * More use is now made of the ColdFire mov3q instruction.
   8692      * __builtin_clz is now implemented using the ff1 ColdFire
   8693        instruction, when available.
   8694      * GCC now honors the -m68010 option. 68010 code now uses clr rather
   8695        than move to zero volatile memory.
   8696      * 68020 targets and above can now use symbol(index.size*scale)
   8697        addresses for indexed array accesses. Earlier compilers would
   8698        always load the symbol into a base register first.
   8699 
   8700     Configuration changes
   8701 
   8702      * All m68k and ColdFire targets now allow the default processor to be
   8703        set at configure time using --with-cpu.
   8704      * A --with-arch configuration option has been added. This option
   8705        allows you to restrict a target to ColdFire or non-ColdFire
   8706        processors.
   8707 
   8708     Preprocessor macros
   8709 
   8710      * An __mcfv*__ macro is now defined for all ColdFire targets.
   8711        (Earlier versions of GCC only defined __mcfv4e__.)
   8712      * __mcf_cpu_*, __mcf_family_* and __mcffpu__ macros have been added.
   8713      * All targets now define __mc68010 and __mc68010__ when generating
   8714        68010 code.
   8715 
   8716     Command-line changes
   8717 
   8718      * New command-line options -march, -mcpu, -mtune and -mhard-float
   8719        have been added. These options apply to both m68k and ColdFire
   8720        targets.
   8721      * -mno-short, -mno-bitfield and -mno-rtd are now accepted as negative
   8722        versions of -mshort, etc.
   8723      * -fforce-addr has been removed. It is now ignored by the compiler.
   8724 
   8725     Other improvements
   8726 
   8727      * ColdFire targets now try to maintain a 4-byte-aligned stack where
   8728        possible.
   8729      * m68k-uclinux targets now try to avoid situations that lead to the
   8730        load-time error: BINFMT_FLAT: reloc outside program.
   8731 
   8732   MIPS
   8733 
   8734     Changes to existing configurations
   8735 
   8736      * libffi and libjava now support all three GNU/Linux ABIs: o32, n32
   8737        and n64. Every GNU/Linux configuration now builds these libraries
   8738        by default.
   8739      * GNU/Linux configurations now generate -mno-shared code unless
   8740        overridden by -fpic, -fPIC, -fpie or -fPIE.
   8741      * mipsisa32*-linux-gnu configurations now generate hard-float code by
   8742        default, just like other mipsisa32* and mips*-linux-gnu
   8743        configurations. You can build a soft-float version of any
   8744        mips*-linux-gnu configuration by passing --with-float=soft to
   8745        configure.
   8746      * mips-wrs-vxworks now supports run-time processes (RTPs).
   8747 
   8748     Changes to existing command-line options
   8749 
   8750      * The -march and -mtune options no longer accept 24k as a processor
   8751        name. Please use 24kc, 24kf2_1 or 24kf1_1 instead.
   8752      * The -march and -mtune options now accept 24kf2_1, 24kef2_1 and
   8753        34kf2_1 as synonyms for 24kf, 24kef and 34kf respectively. The
   8754        options also accept 24kf1_1, 24kef1_1 and 34kf1_1 as synonyms for
   8755        24kx, 24kex and 34kx.
   8756 
   8757     New configurations
   8758 
   8759    GCC now supports the following configurations:
   8760      * mipsisa32r2*-linux-gnu*, which generates MIPS32 revision 2 code by
   8761        default. Earlier releases also recognized this configuration, but
   8762        they treated it in the same way as mipsisa32*-linux-gnu*. Note that
   8763        you can customize any mips*-linux-gnu* configuration to a
   8764        particular ISA or processor by passing an appropriate --with-arch
   8765        option to configure.
   8766      * mipsisa*-sde-elf*, which provides compatibility with MIPS
   8767        Technologies' SDE toolchains. The configuration uses the SDE
   8768        libraries by default, but you can use it like other newlib-based
   8769        ELF configurations by passing --with-newlib to configure. It is the
   8770        only configuration besides mips64vr*-elf* to build MIPS16 as well
   8771        as non-MIPS16 libraries.
   8772      * mipsisa*-elfoabi*, which is similar to the general mipsisa*-elf*
   8773        configuration, but uses the o32 and o64 ABIs instead of the 32-bit
   8774        and 64-bit forms of the EABI.
   8775 
   8776     New processors and application-specific extensions
   8777 
   8778      * Support for the SmartMIPS ASE is available through the new
   8779        -msmartmips option.
   8780      * Support for revision 2 of the DSP ASE is available through the new
   8781        -mdspr2 option. A new preprocessor macro called __mips_dsp_rev
   8782        indicates the revision of the ASE in use.
   8783      * Support for the 4KS and 74K families of processors is available
   8784        through the -march and -mtune options.
   8785 
   8786     Improved support for built-in functions
   8787 
   8788      * GCC can now use load-linked, store-conditional and sync
   8789        instructions to implement atomic built-in functions such as
   8790        __sync_fetch_and_add. The memory reference must be 4 bytes wide for
   8791        32-bit targets and either 4 or 8 bytes wide for 64-bit targets.
   8792      * GCC can now use the clz and dclz instructions to implement the
   8793        __builtin_ctz and __builtin_ffs families of functions.
   8794      * There is a new __builtin___clear_cache function for flushing the
   8795        instruction cache. GCC expands this function inline on MIPS32
   8796        revision 2 targets, otherwise it calls the function specified by
   8797        -mcache-flush-func.
   8798 
   8799     MIPS16 improvements
   8800 
   8801      * GCC can now compile objects that contain a mixture of MIPS16 and
   8802        non-MIPS16 code. There are two new attributes, mips16 and nomips16,
   8803        for specifying which mode a function should use.
   8804      * A new option called -minterlink-mips16 makes non-MIPS16 code
   8805        link-compatible with MIPS16 code.
   8806      * After many bug fixes, the long-standing MIPS16 -mhard-float support
   8807        should now work fairly reliably.
   8808      * GCC can now use the MIPS16e save and restore instructions.
   8809      * -fsection-anchors now works in MIPS16 mode. MIPS16 code compiled
   8810        with -G0 -fsection-anchors is often smaller than code compiled with
   8811        -G8. However, please note that you must usually compile all objects
   8812        in your application with the same -G option; see the documentation
   8813        of -G for details.
   8814      * A new option called-mcode-readable specifies which instructions are
   8815        allowed to load from the code segment. -mcode-readable=yes is the
   8816        default and says that any instruction may load from the code
   8817        segment. The other alternatives are -mcode-readable=pcrel, which
   8818        says that only PC-relative MIPS16 instructions may load from the
   8819        code segment, and -mcode-readable=no, which says that no
   8820        instruction may do so. Please see the documentation for more
   8821        details, including example uses.
   8822 
   8823     Small-data improvements
   8824 
   8825    There are three new options for controlling small data:
   8826      * -mno-extern-sdata, which disables small-data accesses for
   8827        externally-defined variables. Code compiled with -Gn
   8828        -mno-extern-sdata will be link-compatible with any -G setting
   8829        between -G0 and -Gn inclusive.
   8830      * -mno-local-sdata, which disables the use of small-data sections for
   8831        data that is not externally visible. This option can be a useful
   8832        way of reducing small-data usage in less performance-critical parts
   8833        of an application.
   8834      * -mno-gpopt, which disables the use of the $gp register while still
   8835        honoring the -G limit when placing externally-visible data. This
   8836        option implies -mno-extern-sdata and -mno-local-sdata and it can be
   8837        useful in situations where $gp does not necessarily hold the
   8838        expected value.
   8839 
   8840     Miscellaneous improvements
   8841 
   8842      * There is a new option called -mbranch-cost for tweaking the
   8843        perceived cost of branches.
   8844      * If GCC is configured to use a version of GAS that supports the
   8845        .gnu_attribute directive, it will use that directive to record
   8846        certain properties of the output code. .gnu_attribute is new to GAS
   8847        2.18.
   8848      * There are two new function attributes, near and far, for overriding
   8849        the command-line setting of -mlong-calls on a function-by-function
   8850        basis.
   8851      * -mfp64, which previously required a 64-bit target, now works with
   8852        MIPS32 revision 2 targets as well. The mipsisa*-elfoabi* and
   8853        mipsisa*-sde-elf* configurations provide suitable library support.
   8854      * GCC now recognizes the -mdmx and -mmt options and passes them down
   8855        to the assembler. It does nothing else with the options at present.
   8856 
   8857   SPU (Synergistic Processor Unit) of the Cell Broadband Engine Architecture
   8858   (BEA)
   8859 
   8860      * Support has been added for this new architecture.
   8861 
   8862   RS6000 (POWER/PowerPC)
   8863 
   8864      * Support for the PowerPC 750CL paired-single instructions has been
   8865        added with a new powerpc-*-linux*paired* target configuration. It
   8866        is enabled by an associated -mpaired option and can be accessed
   8867        using new built-in functions.
   8868      * Support for auto-detecting architecture and system configuration to
   8869        auto-select processor optimization tuning.
   8870      * Support for VMX on AIX 5.3 has been added.
   8871      * Support for AIX Version 6.1 has been added.
   8872 
   8873   S/390, zSeries and System z9
   8874 
   8875      * Support for the IBM System z9 EC/BC processor (z9 GA3) has been
   8876        added. When using the -march=z9-ec option, the compiler will
   8877        generate code making use of instructions provided by the decimal
   8878        floating point facility and the floating point conversion facility
   8879        (pfpo). Besides the instructions used to implement decimal floating
   8880        point operations these facilities also contain instructions to move
   8881        between general purpose and floating point registers and to modify
   8882        and copy the sign-bit of floating point values.
   8883      * When the -march=z9-ec option is used the new
   8884        -mhard-dfp/-mno-hard-dfp options can be used to specify whether the
   8885        decimal floating point hardware instructions will be used or not.
   8886        If none of them is given the hardware support is enabled by
   8887        default.
   8888      * The -mstack-guard option can now be omitted when using stack
   8889        checking via -mstack-size in order to let GCC choose a sensible
   8890        stack guard value according to the frame size of each function.
   8891      * Various changes to improve performance of generated code have been
   8892        implemented, including:
   8893           + The condition code set by an add logical with carry
   8894             instruction is now available for overflow checks like: a + b +
   8895             carry < b.
   8896           + The test data class instruction is now used to implement
   8897             sign-bit and infinity checks of binary and decimal floating
   8898             point numbers.
   8899 
   8900   SPARC
   8901 
   8902      * Support for the Sun UltraSPARC T2 (Niagara 2) processor has been
   8903        added.
   8904 
   8905   Xtensa
   8906 
   8907      * Stack unwinding for exception handling now uses by default a
   8908        specialized version of DWARF unwinding. This is not
   8909        binary-compatible with the setjmp/longjmp (sjlj) unwinding used for
   8910        Xtensa with previous versions of GCC.
   8911      * For Xtensa processors that include the Conditional Store option,
   8912        the built-in functions for atomic memory access are now implemented
   8913        using S32C1I instructions.
   8914      * If the Xtensa NSA option is available, GCC will use it to implement
   8915        the __builtin_ctz and __builtin_clz functions.
   8916 
   8917 Documentation improvements
   8918 
   8919      * Existing libstdc++ documentation has been edited and restructured
   8920        into a single DocBook XML manual. The results can be viewed online
   8921        [18]here.
   8922 
   8923 Other significant improvements
   8924 
   8925      * The compiler's --help command-line option has been extended so that
   8926        it now takes an optional set of arguments. These arguments restrict
   8927        the information displayed to specific classes of command-line
   8928        options, and possibly only a subset of those options. It is also
   8929        now possible to replace the descriptive text associated with each
   8930        displayed option with an indication of its current value, or for
   8931        binary options, whether it has been enabled or disabled.
   8932        Here are some examples. The following will display all the options
   8933        controlling warning messages:
   8934       --help=warnings
   8935 
   8936        Whereas this will display all the undocumented, target specific
   8937        options:
   8938       --help=target,undocumented
   8939 
   8940        This sequence of commands will display the binary optimizations
   8941        that are enabled by -O3:
   8942       gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
   8943       gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
   8944       diff /tmp/O2-opts /tmp/O3-opts | grep enabled
   8945 
   8946      * The configure options --with-pkgversion and --with-bugurl have been
   8947        added. These allow distributors of GCC to include a
   8948        distributor-specific string in manuals and --version output and to
   8949        specify the URL for reporting bugs in their versions of GCC.
   8950 
   8951 GCC 4.3.1
   8952 
   8953    This is the [19]list of problem reports (PRs) from GCC's bug tracking
   8954    system that are known to be fixed in the 4.3.1 release. This list might
   8955    not be complete (that is, it is possible that some PRs that have been
   8956    fixed are not listed here).
   8957 
   8958 Target Specific Changes
   8959 
   8960   IA-32/x86-64
   8961 
   8962     ABI changes
   8963 
   8964      * Starting with GCC 4.3.1, decimal floating point variables are
   8965        aligned to their natural boundaries when they are passed on the
   8966        stack for i386.
   8967 
   8968     Command-line changes
   8969 
   8970      * Starting with GCC 4.3.1, the -mcld option has been added to
   8971        automatically generate a cld instruction in the prologue of
   8972        functions that use string instructions. This option is used for
   8973        backward compatibility on some operating systems and can be enabled
   8974        by default for 32-bit x86 targets by configuring GCC with the
   8975        --enable-cld configure option.
   8976 
   8977 GCC 4.3.2
   8978 
   8979    This is the [20]list of problem reports (PRs) from GCC's bug tracking
   8980    system that are known to be fixed in the 4.3.2 release. This list might
   8981    not be complete (that is, it is possible that some PRs that have been
   8982    fixed are not listed here).
   8983 
   8984 GCC 4.3.3
   8985 
   8986    This is the [21]list of problem reports (PRs) from GCC's bug tracking
   8987    system that are known to be fixed in the 4.3.3 release. This list might
   8988    not be complete (that is, it is possible that some PRs that have been
   8989    fixed are not listed here).
   8990 
   8991 GCC 4.3.4
   8992 
   8993    This is the [22]list of problem reports (PRs) from GCC's bug tracking
   8994    system that are known to be fixed in the 4.3.4 release. This list might
   8995    not be complete (that is, it is possible that some PRs that have been
   8996    fixed are not listed here).
   8997 
   8998 GCC 4.3.5
   8999 
   9000    This is the [23]list of problem reports (PRs) from GCC's bug tracking
   9001    system that are known to be fixed in the 4.3.5 release. This list might
   9002    not be complete (that is, it is possible that some PRs that have been
   9003    fixed are not listed here).
   9004 
   9005 GCC 4.3.6
   9006 
   9007    This is the [24]list of problem reports (PRs) from GCC's bug tracking
   9008    system that are known to be fixed in the 4.3.6 release. This list might
   9009    not be complete (that is, it is possible that some PRs that have been
   9010    fixed are not listed here).
   9011 
   9012 
   9013     For questions related to the use of GCC, please consult these web
   9014     pages and the [25]GCC manuals. If that fails, the
   9015     [26]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   9016     web pages and the development of GCC are welcome on our developer
   9017     list at [27]gcc (a] gcc.gnu.org. All of [28]our lists have public
   9018     archives.
   9019 
   9020    Copyright (C) [29]Free Software Foundation, Inc. Verbatim copying and
   9021    distribution of this entire article is permitted in any medium,
   9022    provided this notice is preserved.
   9023 
   9024    These pages are [30]maintained by the GCC team. Last modified
   9025    2018-09-30[31].
   9026 
   9027 References
   9028 
   9029    1. http://gcc.gnu.org/gcc-4.3/changes.html#4.3.5
   9030    2. https://gmplib.org/
   9031    3. https://www.mpfr.org/
   9032    4. https://gcc.gnu.org/install/prerequisites.html
   9033    5. https://gcc.gnu.org/ml/gcc-announce/2001/msg00000.html
   9034    6. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
   9035    7. http://gcc.gnu.org/gcc-4.3/porting_to.html
   9036    8. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
   9037    9. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
   9038   10. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
   9039   11. https://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html
   9040   12. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#Code-Gen-Options
   9041   13. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167
   9042   14. https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/GAMMA.html
   9043   15. https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/LGAMMA.html
   9044   16. https://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html
   9045   17. https://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html
   9046   18. https://gcc.gnu.org/onlinedocs/libstdc++/
   9047   19. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.1
   9048   20. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.2
   9049   21. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.3
   9050   22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4
   9051   23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5
   9052   24. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.6
   9053   25. https://gcc.gnu.org/onlinedocs/
   9054   26. mailto:gcc-help (a] gcc.gnu.org
   9055   27. mailto:gcc (a] gcc.gnu.org
   9056   28. https://gcc.gnu.org/lists.html
   9057   29. https://www.fsf.org/
   9058   30. https://gcc.gnu.org/about.html
   9059   31. http://validator.w3.org/check/referer
   9060 ======================================================================
   9061 http://gcc.gnu.org/gcc-4.2/index.html
   9062 
   9063                              GCC 4.2 Release Series
   9064 
   9065    May 19, 2008
   9066 
   9067    The [1]GNU project and the GCC developers are pleased to announce the
   9068    release of GCC 4.2.4.
   9069 
   9070    This release is a bug-fix release, containing fixes for regressions in
   9071    GCC 4.2.3 relative to previous releases of GCC.
   9072 
   9073    This release series is no longer maintained.
   9074 
   9075 Release History
   9076 
   9077    GCC 4.2.4
   9078           May 19, 2008 ([2]changes)
   9079 
   9080    GCC 4.2.3
   9081           February 1, 2008 ([3]changes)
   9082 
   9083    GCC 4.2.2
   9084           October 7, 2007 ([4]changes)
   9085 
   9086    GCC 4.2.1
   9087           July 18, 2007 ([5]changes)
   9088 
   9089    GCC 4.2.0
   9090           May 13, 2007 ([6]changes)
   9091 
   9092 References and Acknowledgements
   9093 
   9094    GCC used to stand for the GNU C Compiler, but since the compiler
   9095    supports several other languages aside from C, it now stands for the
   9096    GNU Compiler Collection.
   9097 
   9098    A list of [7]successful builds is updated as new information becomes
   9099    available.
   9100 
   9101    The GCC developers would like to thank the numerous people that have
   9102    contributed new features, improvements, bug fixes, and other changes as
   9103    well as test results to GCC. This [8]amazing group of volunteers is
   9104    what makes GCC successful.
   9105 
   9106    For additional information about GCC please refer to the [9]GCC project
   9107    web site or contact the [10]GCC development mailing list.
   9108 
   9109    To obtain GCC please use [11]our mirror sites or [12]our SVN server.
   9110 
   9111 
   9112     For questions related to the use of GCC, please consult these web
   9113     pages and the [13]GCC manuals. If that fails, the
   9114     [14]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   9115     web pages and the development of GCC are welcome on our developer
   9116     list at [15]gcc (a] gcc.gnu.org. All of [16]our lists have public
   9117     archives.
   9118 
   9119    Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
   9120    distribution of this entire article is permitted in any medium,
   9121    provided this notice is preserved.
   9122 
   9123    These pages are [18]maintained by the GCC team. Last modified
   9124    2018-09-30[19].
   9125 
   9126 References
   9127 
   9128    1. http://www.gnu.org/
   9129    2. http://gcc.gnu.org/gcc-4.2/changes.html
   9130    3. http://gcc.gnu.org/gcc-4.2/changes.html
   9131    4. http://gcc.gnu.org/gcc-4.2/changes.html
   9132    5. http://gcc.gnu.org/gcc-4.2/changes.html
   9133    6. http://gcc.gnu.org/gcc-4.2/changes.html
   9134    7. http://gcc.gnu.org/gcc-4.2/buildstat.html
   9135    8. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   9136    9. http://gcc.gnu.org/index.html
   9137   10. mailto:gcc (a] gcc.gnu.org
   9138   11. http://gcc.gnu.org/mirrors.html
   9139   12. http://gcc.gnu.org/svn.html
   9140   13. https://gcc.gnu.org/onlinedocs/
   9141   14. mailto:gcc-help (a] gcc.gnu.org
   9142   15. mailto:gcc (a] gcc.gnu.org
   9143   16. https://gcc.gnu.org/lists.html
   9144   17. https://www.fsf.org/
   9145   18. https://gcc.gnu.org/about.html
   9146   19. http://validator.w3.org/check/referer
   9147 ======================================================================
   9148 http://gcc.gnu.org/gcc-4.2/changes.html
   9149 
   9150                              GCC 4.2 Release Series
   9151                         Changes, New Features, and Fixes
   9152 
   9153 Caveats
   9154 
   9155      * GCC no longer accepts the -fshared-data option. This option has had
   9156        no effect in any GCC 4 release; the targets to which the option
   9157        used to apply had been removed before GCC 4.0.
   9158 
   9159 General Optimizer Improvements
   9160 
   9161      * New command-line options specify the possible relationships among
   9162        parameters and between parameters and global data. For example,
   9163        -fargument-noalias-anything specifies that arguments do not alias
   9164        any other storage.
   9165        Each language will automatically use whatever option is required by
   9166        the language standard. You should not need to use these options
   9167        yourself.
   9168 
   9169 New Languages and Language specific improvements
   9170 
   9171      * [1]OpenMP is now supported for the C, C++ and Fortran compilers.
   9172      * New command-line options -fstrict-overflow and -Wstrict-overflow
   9173        have been added. -fstrict-overflow tells the compiler that it may
   9174        assume that the program follows the strict signed overflow
   9175        semantics permitted for the language: for C and C++ this means that
   9176        the compiler may assume that signed overflow does not occur. For
   9177        example, a loop like
   9178       for (i = 1; i > 0; i *= 2)
   9179 
   9180        is presumably intended to continue looping until i overflows. With
   9181        -fstrict-overflow, the compiler may assume that signed overflow
   9182        will not occur, and transform this into an infinite loop.
   9183        -fstrict-overflow is turned on by default at -O2, and may be
   9184        disabled via -fno-strict-overflow. The -Wstrict-overflow option may
   9185        be used to warn about cases where the compiler assumes that signed
   9186        overflow will not occur. It takes five different levels:
   9187        -Wstrict-overflow=1 to 5. See the [2]documentation for details.
   9188        -Wstrict-overflow=1 is enabled by -Wall.
   9189      * The new command-line option -fno-toplevel-reorder directs GCC to
   9190        emit top-level functions, variables, and asm statements in the same
   9191        order that they appear in the input file. This is intended to
   9192        support existing code which relies on a particular ordering (for
   9193        example, code which uses top-level asm statements to switch
   9194        sections). For new code, it is generally better to use function and
   9195        variable attributes. The -fno-toplevel-reorder option may be used
   9196        for most cases which currently use -fno-unit-at-a-time. The
   9197        -fno-unit-at-a-time option will be removed in some future version
   9198        of GCC. If you know of a case which requires -fno-unit-at-a-time
   9199        which is not fixed by -fno-toplevel-reorder, please open a bug
   9200        report.
   9201 
   9202   C family
   9203 
   9204      * The pragma redefine_extname will now macro expand its tokens for
   9205        compatibility with SunPRO.
   9206      * In the next release of GCC, 4.3, -std=c99 or -std=gnu99 will direct
   9207        GCC to handle inline functions as specified in the C99 standard. In
   9208        preparation for this, GCC 4.2 will warn about any use of non-static
   9209        inline functions in gnu99 or c99 mode. This new warning may be
   9210        disabled with the new gnu_inline function attribute or the new
   9211        -fgnu89-inline command-line option. Also, GCC 4.2 and later will
   9212        define one of the preprocessor macros __GNUC_GNU_INLINE__ or
   9213        __GNUC_STDC_INLINE__ to indicate the semantics of inline functions
   9214        in the current compilation.
   9215      * A new command-line option -Waddress has been added to warn about
   9216        suspicious uses of memory addresses as, for example, using the
   9217        address of a function in a conditional expression, and comparisons
   9218        against the memory address of a string literal. This warning is
   9219        enabled by -Wall.
   9220 
   9221   C++
   9222 
   9223      * C++ visibility handling has been overhauled.
   9224        Restricted visiblity is propagated from classes to members, from
   9225        functions to local statics, and from templates and template
   9226        arguments to instantiations, unless the latter has explicitly
   9227        declared visibility.
   9228        The visibility attribute for a class must come between the
   9229        class-key and the name, not after the closing brace.
   9230        Attributes are now allowed for enums and elaborated-type-specifiers
   9231        that only declare a type.
   9232        Members of the anonymous namespace are now local to a particular
   9233        translation unit, along with any other declarations which use them,
   9234        though they are still treated as having external linkage for
   9235        language semantics.
   9236      * The (undocumented) extension which permitted templates with default
   9237        arguments to be bound to template template parameters with fewer
   9238        parameters has been removed. For example:
   9239         template <template <typename> class C>
   9240         void f(C<double>) {}
   9241 
   9242         template <typename T, typename U = int>
   9243         struct S {};
   9244 
   9245         template void f(S<double>);
   9246 
   9247        is no longer accepted by G++. The reason this code is not accepted
   9248        is that S is a template with two parameters; therefore, it cannot
   9249        be bound to C which has only one parameter.
   9250      * The <?, >?, <?=, and >?= operators, deprecated in previous GCC
   9251        releases, have been removed.
   9252      * The command-line option -fconst-strings, deprecated in previous GCC
   9253        releases, has been removed.
   9254      * The configure variable enable-__cxa_atexit is now enabled by
   9255        default for more targets. Enabling this variable is necessary in
   9256        order for static destructors to be executed in the correct order,
   9257        but it depends upon the presence of a non-standard C library in the
   9258        target library in order to work. The variable is now enabled for
   9259        more targets which are known to have suitable C libraries.
   9260      * -Wextra will produce warnings for if statements with a semicolon as
   9261        the only body, to catch code like:
   9262          if (a);
   9263             return 1;
   9264          return 0;
   9265 
   9266        To suppress the warning in valid cases, use { } instead.
   9267      * The C++ front end now also produces strict aliasing warnings when
   9268        -fstrict-aliasing -Wstrict-aliasing is in effect.
   9269 
   9270     Runtime Library (libstdc++)
   9271 
   9272      * Added support for TR1 <random>, <complex>, and C compatibility
   9273        headers. In addition, a lock-free version of shared_ptr was
   9274        contributed as part of Phillip Jordan's Google Summer of Code
   9275        project on lock-free containers.
   9276      * In association with the Summer of Code work on lock-free
   9277        containers, the interface for atomic builtins was adjusted,
   9278        creating simpler alternatives for non-threaded code paths. Also,
   9279        usage was consolidated and all elements were moved from namespace
   9280        std to namespace__gnu_cxx. Affected interfaces are the functions
   9281        __exchange_and_add, __atomic_add, and the objects __mutex,
   9282        __recursive_mutex, and __scoped_lock.
   9283      * Support for versioning weak symbol names via namespace association
   9284        was added. However, as this changes the names of exported symbols,
   9285        this is turned off by default in the current ABI. Intrepid users
   9286        can enable this feature by using
   9287        --enable-symvers=gnu-versioned-namespace during configuration.
   9288      * Revised, simplified, and expanded policy-based associative
   9289        containers, including data types for tree and trie forms
   9290        (basic_tree, tree, trie), lists (list_update), and both
   9291        collision-chaining and probing hash-based containers
   9292        (basic_hash_table, cc_hash_table, gp_hash_table). More details per
   9293        the [3]documentation.
   9294      * The implementation of the debug mode was modified, whereby the
   9295        debug namespaces were nested inside of namespace std and namespace
   9296        __gnu_cxx in order to resolve some long standing corner cases
   9297        involving name lookup. Debug functionality from the policy-based
   9298        data structures was consolidated and enabled with the single macro,
   9299        _GLIBCXX_DEBUG. See PR 26142 for more information.
   9300      * Added extensions for type traits: __conditional_type,
   9301        __numeric_traits, __add_unsigned, __removed_unsigned, __enable_if.
   9302      * Added a typelist implementation for compile-time meta-programming.
   9303        Elements for typelist construction and operation can be found
   9304        within namespace __gnu_cxx::typelist.
   9305      * Added a new allocator, __gnu_cxx::throw_allocator, for testing
   9306        exception-safety.
   9307      * Enabled library-wide visibility control, allowing -fvisibility to
   9308        be used.
   9309      * Consolidated all nested namespaces and the conversion of
   9310        __gnu_internal implementation-private details to anonymous
   9311        namespaces whenever possible.
   9312      * Implemented LWG resolutions DR 431 and DR 538.
   9313 
   9314   Fortran
   9315 
   9316      * Support for allocatable components has been added (TR 15581 and
   9317        Fortran 2003).
   9318      * Support for the Fortran 2003 streaming IO extension has been added.
   9319      * The GNU Fortran compiler now uses 4-byte record markers by default
   9320        for unformatted files to be compatible with g77 and most other
   9321        compilers. The implementation allows for records greater than 2 GB
   9322        and is compatible with several other compilers. Older versions of
   9323        gfortran used 8-byte record markers by default (on most systems).
   9324        In order to change the length of the record markers, e.g. to read
   9325        unformatted files created by older gfortran versions, the
   9326        [4]-frecord-marker=8 option can be used.
   9327 
   9328   Java (GCJ)
   9329 
   9330      * A new command-line option -static-libgcj has been added for targets
   9331        that use a linker compatible with GNU Binutils. As its name
   9332        implies, this causes libgcj to be linked statically. In some cases
   9333        this causes the resulting executable to start faster and use less
   9334        memory than if the shared version of libgcj were used. However
   9335        caution should be used as it can also cause essential parts of the
   9336        library to be omitted. Some of these issues are discussed in:
   9337        [5]https://gcc.gnu.org/wiki/Statically_linking_libgcj
   9338      * fastjar is no longer bundled with GCC. To build libgcj, you will
   9339        need either InfoZIP (both zip and unzip) or an external jar
   9340        program. In the former case, the GCC build will install a jar shell
   9341        script that is based on InfoZIP and provides the same functionality
   9342        as fastjar.
   9343 
   9344 New Targets and Target Specific Improvements
   9345 
   9346   IA-32/x86-64
   9347 
   9348      * -mtune=generic can now be used to generate code running well on
   9349        common x86 chips. This includes AMD Athlon, AMD Opteron, Intel
   9350        Pentium-M, Intel Pentium 4 and Intel Core 2.
   9351      * -mtune=native and -march=native will produce code optimized for the
   9352        host architecture as detected using the cpuid instruction.
   9353      * Added a new command-line option -fstackrealign and and
   9354        __attribute__ ((force_align_arg_pointer)) to realign the stack at
   9355        runtime. This allows functions compiled with a vector-aligned stack
   9356        to be invoked from legacy objects that keep only word-alignment.
   9357 
   9358   SPARC
   9359 
   9360      * The default CPU setting has been changed from V7 to V9 in 32-bit
   9361        mode on Solaris 7 and above. This is already the case in 64-bit
   9362        mode. It can be overridden by specifying --with-cpu at configure
   9363        time.
   9364      * Back-end support of built-in functions for atomic memory access has
   9365        been implemented.
   9366      * Support for the Sun UltraSPARC T1 (Niagara) processor has been
   9367        added.
   9368 
   9369   M32C
   9370 
   9371      * Various bug fixes have made some functions (notably, functions
   9372        returning structures) incompatible with previous releases.
   9373        Recompiling all libraries is recommended. Note that code quality
   9374        has considerably improved since 4.1, making a recompile even more
   9375        beneficial.
   9376 
   9377   MIPS
   9378 
   9379      * Added support for the Broadcom SB-1A core.
   9380 
   9381   IA-64
   9382 
   9383      * Added support for IA-64 data and control speculation. By default
   9384        speculation is enabled only during second scheduler pass. A number
   9385        of machine flags was introduced to control the usage of speculation
   9386        for both scheduler passes.
   9387 
   9388   HPPA
   9389 
   9390      * Added Java language support (libffi and libjava) for 32-bit HP-UX
   9391        11 target.
   9392 
   9393 Obsolete Systems
   9394 
   9395 Documentation improvements
   9396 
   9397   PDF Documentation
   9398 
   9399      * A make pdf target has been added to the top-level makefile,
   9400        enabling automated production of PDF documentation files.
   9401        (Front-ends external to GCC should modify their Make-lang.in file
   9402        to add a lang.pdf: target.)
   9403 
   9404 Other significant improvements
   9405 
   9406   Build system improvements
   9407 
   9408      * All the components of the compiler are now bootstrapped by default.
   9409        This improves the resilience to bugs in the system compiler or
   9410        binary compatibility problems, as well as providing better testing
   9411        of GCC 4.2 itself. In addition, if you build the compiler from a
   9412        combined tree, the assembler, linker, etc. will also be
   9413        bootstrapped (i.e. built with themselves).
   9414        You can disable this behavior, and go back to the pre-GCC 4.2 set
   9415        up, by configuring GCC with --disable-bootstrap.
   9416      * The rules that configure follows to find target tools resemble more
   9417        closely the locations that the built compiler will search. In
   9418        addition, you can use the new configure option --with-target-tools
   9419        to specify where to find the target tools used during the build,
   9420        without affecting what the built compiler will use.
   9421        This can be especially useful when building packages of GCC. For
   9422        example, you may want to build GCC with GNU as or ld, even if the
   9423        resulting compiler to work with the native assembler and linker. To
   9424        do so, you can use --with-target-tools to point to the native
   9425        tools.
   9426 
   9427   Incompatible changes to the build system
   9428 
   9429      * Front-ends external to GCC should modify their Make-lang.in file to
   9430        replace double-colon rules (e.g. dvi::) with normal rules (like
   9431        lang.dvi:). Front-end makefile hooks do not use double-colon rules
   9432        anymore.
   9433      * Up to GCC 4.1, a popular way to specify the target tools used
   9434        during the build was to create directories named gas, binutils,
   9435        etc. in the build tree, and create links to the tools from there.
   9436        This does not work any more when the compiler is bootstrapped. The
   9437        new configure option --with-target-tools provides a better way to
   9438        achieve the same effect, and works for all native and cross
   9439        settings.
   9440 
   9441 
   9442     For questions related to the use of GCC, please consult these web
   9443     pages and the [6]GCC manuals. If that fails, the
   9444     [7]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   9445     web pages and the development of GCC are welcome on our developer
   9446     list at [8]gcc (a] gcc.gnu.org. All of [9]our lists have public archives.
   9447 
   9448    Copyright (C) [10]Free Software Foundation, Inc. Verbatim copying and
   9449    distribution of this entire article is permitted in any medium,
   9450    provided this notice is preserved.
   9451 
   9452    These pages are [11]maintained by the GCC team. Last modified
   9453    2018-09-30[12].
   9454 
   9455 References
   9456 
   9457    1. http://gcc.gnu.org/projects/gomp/
   9458    2. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
   9459    3. https://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html
   9460    4. https://gcc.gnu.org/onlinedocs/gfortran/Runtime-Options.html
   9461    5. https://gcc.gnu.org/wiki/Statically_linking_libgcj
   9462    6. https://gcc.gnu.org/onlinedocs/
   9463    7. mailto:gcc-help (a] gcc.gnu.org
   9464    8. mailto:gcc (a] gcc.gnu.org
   9465    9. https://gcc.gnu.org/lists.html
   9466   10. https://www.fsf.org/
   9467   11. https://gcc.gnu.org/about.html
   9468   12. http://validator.w3.org/check/referer
   9469 ======================================================================
   9470 http://gcc.gnu.org/gcc-4.1/index.html
   9471 
   9472                              GCC 4.1 Release Series
   9473 
   9474    February 13, 2007
   9475 
   9476    The [1]GNU project and the GCC developers are pleased to announce the
   9477    release of GCC 4.1.2.
   9478 
   9479    This release is a bug-fix release, containing fixes for regressions in
   9480    GCC 4.1.1 relative to previous releases of GCC.
   9481 
   9482    This release series is no longer maintained.
   9483 
   9484 Release History
   9485 
   9486    GCC 4.1.2
   9487           February 13, 2007 ([2]changes)
   9488 
   9489    GCC 4.1.1
   9490           May 24, 2006 ([3]changes)
   9491 
   9492    GCC 4.1.0
   9493           February 28, 2006 ([4]changes)
   9494 
   9495 References and Acknowledgements
   9496 
   9497    GCC used to stand for the GNU C Compiler, but since the compiler
   9498    supports several other languages aside from C, it now stands for the
   9499    GNU Compiler Collection.
   9500 
   9501    A list of [5]successful builds is updated as new information becomes
   9502    available.
   9503 
   9504    The GCC developers would like to thank the numerous people that have
   9505    contributed new features, improvements, bug fixes, and other changes as
   9506    well as test results to GCC. This [6]amazing group of volunteers is
   9507    what makes GCC successful.
   9508 
   9509    For additional information about GCC please refer to the [7]GCC project
   9510    web site or contact the [8]GCC development mailing list.
   9511 
   9512    To obtain GCC please use [9]our mirror sites or [10]our SVN server.
   9513 
   9514 
   9515     For questions related to the use of GCC, please consult these web
   9516     pages and the [11]GCC manuals. If that fails, the
   9517     [12]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   9518     web pages and the development of GCC are welcome on our developer
   9519     list at [13]gcc (a] gcc.gnu.org. All of [14]our lists have public
   9520     archives.
   9521 
   9522    Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and
   9523    distribution of this entire article is permitted in any medium,
   9524    provided this notice is preserved.
   9525 
   9526    These pages are [16]maintained by the GCC team. Last modified
   9527    2018-09-30[17].
   9528 
   9529 References
   9530 
   9531    1. http://www.gnu.org/
   9532    2. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2
   9533    3. http://gcc.gnu.org/gcc-4.1/changes.html
   9534    4. http://gcc.gnu.org/gcc-4.1/changes.html
   9535    5. http://gcc.gnu.org/gcc-4.1/buildstat.html
   9536    6. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   9537    7. http://gcc.gnu.org/index.html
   9538    8. mailto:gcc (a] gcc.gnu.org
   9539    9. http://gcc.gnu.org/mirrors.html
   9540   10. http://gcc.gnu.org/svn.html
   9541   11. https://gcc.gnu.org/onlinedocs/
   9542   12. mailto:gcc-help (a] gcc.gnu.org
   9543   13. mailto:gcc (a] gcc.gnu.org
   9544   14. https://gcc.gnu.org/lists.html
   9545   15. https://www.fsf.org/
   9546   16. https://gcc.gnu.org/about.html
   9547   17. http://validator.w3.org/check/referer
   9548 ======================================================================
   9549 http://gcc.gnu.org/gcc-4.1/changes.html
   9550 
   9551                              GCC 4.1 Release Series
   9552                         Changes, New Features, and Fixes
   9553 
   9554    The latest release in the 4.1 release series is [1]GCC 4.1.2.
   9555 
   9556 Caveats
   9557 
   9558 General Optimizer Improvements
   9559 
   9560      * GCC now has infrastructure for inter-procedural optimizations and
   9561        the following inter-procedural optimizations are implemented:
   9562           + Profile guided inlining. When doing profile feedback guided
   9563             optimization, GCC can now use the profile to make better
   9564             informed decisions on whether inlining of a function is
   9565             profitable or not. This means that GCC will no longer inline
   9566             functions at call sites that are not executed very often, and
   9567             that functions at hot call sites are more likely to be
   9568             inlined.
   9569             A new parameter min-inline-recursive-probability is also now
   9570             available to throttle recursive inlining of functions with
   9571             small average recursive depths.
   9572           + Discovery of pure and const functions, a form of side-effects
   9573             analysis. While older GCC releases could also discover such
   9574             special functions, the new IPA-based pass runs earlier so that
   9575             the results are available to more optimizers. The pass is also
   9576             simply more powerful than the old one.
   9577           + Analysis of references to static variables and type escape
   9578             analysis, also forms of side-effects analysis. The results of
   9579             these passes allow the compiler to be less conservative about
   9580             call-clobbered variables and references. This results in more
   9581             redundant loads being eliminated and in making static
   9582             variables candidates for register promotion.
   9583           + Improvement of RTL-based alias analysis. The results of type
   9584             escape analysis are fed to the RTL type-based alias analyzer,
   9585             allowing it to disambiguate more memory references.
   9586           + Interprocedural constant propagation and function versioning.
   9587             This pass looks for functions that are always called with the
   9588             same constant value for one or more of the function arguments,
   9589             and propagates those constants into those functions.
   9590           + GCC will now eliminate static variables whose usage was
   9591             optimized out.
   9592           + -fwhole-program --combine can now be used to make all
   9593             functions in program static allowing whole program
   9594             optimization. As an exception, the main function and all
   9595             functions marked with the new externally_visible attribute are
   9596             kept global so that programs can link with runtime libraries.
   9597      * GCC can now do a form of partial dead code elimination (PDCE) that
   9598        allows code motion of expressions to the paths where the result of
   9599        the expression is actually needed. This is not always a win, so the
   9600        pass has been limited to only consider profitable cases. Here is an
   9601        example:
   9602     int foo (int *, int *);
   9603     int
   9604     bar (int d)
   9605     {
   9606       int a, b, c;
   9607       b = d + 1;
   9608       c = d + 2;
   9609       a = b + c;
   9610       if (d)
   9611         {
   9612           foo (&b, &c);
   9613           a = b + c;
   9614         }
   9615       printf ("%d\n", a);
   9616     }
   9617 
   9618        The a = b + c can be sunk to right before the printf. Normal code
   9619        sinking will not do this, it will sink the first one above into the
   9620        else-branch of the conditional jump, which still gives you two
   9621        copies of the code.
   9622      * GCC now has a value range propagation pass. This allows the
   9623        compiler to eliminate bounds checks and branches. The results of
   9624        the pass can also be used to accurately compute branch
   9625        probabilities.
   9626      * The pass to convert PHI nodes to straight-line code (a form of
   9627        if-conversion for GIMPLE) has been improved significantly. The two
   9628        most significant improvements are an improved algorithm to
   9629        determine the order in which the PHI nodes are considered, and an
   9630        improvement that allow the pass to consider if-conversions of basic
   9631        blocks with more than two predecessors.
   9632      * Alias analysis improvements. GCC can now differentiate between
   9633        different fields of structures in Tree-SSA's virtual operands form.
   9634        This lets stores/loads from non-overlapping structure fields not
   9635        conflict. A new algorithm to compute points-to sets was contributed
   9636        that can allows GCC to see now that p->a and p->b, where p is a
   9637        pointer to a structure, can never point to the same field.
   9638      * Various enhancements to auto-vectorization:
   9639           + Incrementally preserve SSA form when vectorizing.
   9640           + Incrementally preserve loop-closed form when vectorizing.
   9641           + Improvements to peeling for alignment: generate better code
   9642             when the misalignment of an access is known at compile time,
   9643             or when different accesses are known to have the same
   9644             misalignment, even if the misalignment amount itself is
   9645             unknown.
   9646           + Consider dependence distance in the vectorizer.
   9647           + Externalize generic parts of data reference analysis to make
   9648             this analysis available to other passes.
   9649           + Vectorization of conditional code.
   9650           + Reduction support.
   9651      * GCC can now partition functions in sections of hot and cold code.
   9652        This can significantly improve performance due to better
   9653        instruction cache locality. This feature works best together with
   9654        profile feedback driven optimization.
   9655      * A new pass to avoid saving of unneeded arguments to the stack in
   9656        vararg functions if the compiler can prove that they will not be
   9657        needed.
   9658      * Transition of basic block profiling to tree level implementation
   9659        has been completed. The new implementation should be considerably
   9660        more reliable (hopefully avoiding profile mismatch errors when
   9661        using -fprofile-use or -fbranch-probabilities) and can be used to
   9662        drive higher level optimizations, such as inlining.
   9663        The -ftree-based-profiling command-line option was removed and
   9664        -fprofile-use now implies disabling old RTL level loop optimizer
   9665        (-fno-loop-optimize). Speculative prefetching optimization
   9666        (originally enabled by -fspeculative-prefetching) was removed.
   9667 
   9668 New Languages and Language specific improvements
   9669 
   9670   C and Objective-C
   9671 
   9672      * The old Bison-based C and Objective-C parser has been replaced by a
   9673        new, faster hand-written recursive-descent parser.
   9674 
   9675   Ada
   9676 
   9677      * The build infrastructure for the Ada runtime library and tools has
   9678        been changed to be better integrated with the rest of the build
   9679        infrastructure of GCC. This should make doing cross builds of Ada a
   9680        bit easier.
   9681 
   9682   C++
   9683 
   9684      * ARM-style name-injection of friend declarations is no longer the
   9685        default. For example:
   9686           struct S {
   9687             friend void f();
   9688           };
   9689 
   9690           void g() { f(); }
   9691        will not be accepted; instead a declaration of f will need to be
   9692        present outside of the scope of S. The new -ffriend-injection
   9693        option will enable the old behavior.
   9694      * The (undocumented) extension which permitted templates with default
   9695        arguments to be bound to template template parameters with fewer
   9696        parameters has been deprecated, and will be removed in the next
   9697        major release of G++. For example:
   9698        template <template <typename> class C>
   9699        void f(C<double>) {}
   9700 
   9701        template <typename T, typename U = int>
   9702        struct S {};
   9703 
   9704        template void f(S<double>);
   9705 
   9706        makes use of the deprecated extension. The reason this code is not
   9707        valid ISO C++ is that S is a template with two parameters;
   9708        therefore, it cannot be bound to C which has only one parameter.
   9709 
   9710     Runtime Library (libstdc++)
   9711 
   9712      * Optimization work:
   9713           + A new implementation of std::search_n is provided, better
   9714             performing in case of random access iterators.
   9715           + Added further efficient specializations of istream functions,
   9716             i.e., character array and string extractors.
   9717           + Other smaller improvements throughout.
   9718      * Policy-based associative containers, designed for high-performance,
   9719        flexibility and semantic safety are delivered in ext/pb_assoc.
   9720      * A versatile string class, __gnu_cxx::__versa_string, providing
   9721        facilities conforming to the standard requirements for
   9722        basic_string, is delivered in <ext/vstring.h>. In particular:
   9723           + Two base classes are provided: the default one avoids
   9724             reference counting and is optimized for short strings; the
   9725             alternate one, still uses it while improving in a few low
   9726             level areas (e.g., alignment). See vstring_fwd.h for some
   9727             useful typedefs.
   9728           + Various algorithms have been rewritten (e.g., replace), the
   9729             code streamlined and simple optimizations added.
   9730           + Option 3 of DR 431 is implemented for both available bases,
   9731             thus improving the support for stateful allocators.
   9732      * As usual, many bugs have been fixed (e.g., libstdc++/13583,
   9733        libstdc++/23953) and LWG resolutions put into effect for the first
   9734        time (e.g., DR 280, DR 464, N1780 recommendations for DR 233, TR1
   9735        Issue 6.19). The implementation status of TR1 is now tracked in the
   9736        docs in tr1.html.
   9737 
   9738   Objective-C++
   9739 
   9740      * A new language front end for Objective-C++ has been added. This
   9741        language allows users to mix the object oriented features of
   9742        Objective-C with those of C++.
   9743 
   9744   Java (GCJ)
   9745 
   9746      * Core library (libgcj) updates based on GNU Classpath 0.15 - 0.19
   9747        features (plus some 0.20 bug-fixes)
   9748           + Networking
   9749                o The java.net.HttpURLConnection implementation no longer
   9750                  buffers the entire response body in memory. This means
   9751                  that response bodies larger than available memory can now
   9752                  be handled.
   9753           + (N)IO
   9754                o NIO FileChannel.map implementation, fast bulk put
   9755                  implementation for DirectByteBuffer (speeds up this
   9756                  method 10x).
   9757                o FileChannel.lock() and FileChannel.force() implemented.
   9758           + XML
   9759                o gnu.xml fix for nodes created outside a namespace
   9760                  context.
   9761                o Add support for output indenting and
   9762                  cdata-section-elements output instruction in
   9763                  xml.transform.
   9764                o xml.xpath corrections for cases where elements/attributes
   9765                  might have been created in non-namespace-aware mode.
   9766                  Corrections to handling of XSL variables and minor
   9767                  conformance updates.
   9768           + AWT
   9769                o GNU JAWT implementation, the AWT Native Interface, which
   9770                  allows direct access to native screen resources from
   9771                  within a Canvas's paint method. GNU Classpath Examples
   9772                  comes with a Demo, see libjava/classpath/examples/README.
   9773                o awt.datatransfer updated to 1.5 with support for
   9774                  FlavorEvents. The gtk+ awt peers now allow copy/paste of
   9775                  text, images, URIs/files and serialized objects with
   9776                  other applications and tracking clipboard change events
   9777                  with gtk+ 2.6 (for gtk+ 2.4 only text and serialized
   9778                  objects are supported). A GNU Classpath Examples
   9779                  datatransfer Demo was added to show the new
   9780                  functionality.
   9781                o Split gtk+ awt peers event handling in two threads and
   9782                  improve gdk lock handling (solves several awt lock ups).
   9783                o Speed up awt Image loading.
   9784                o Better gtk+ scrollbar peer implementation when using gtk+
   9785                  >= 2.6.
   9786                o Handle image loading errors correctly for gdkpixbuf and
   9787                  MediaTracker.
   9788                o Better handle GDK lock. Properly prefix gtkpeer native
   9789                  functions (cp_gtk).
   9790                o GdkGraphics2D has been updated to use Cairo 0.5.x or
   9791                  higher.
   9792                o BufferedImage and GtkImage rewrites. All image drawing
   9793                  operations should now work correctly (flipping requires
   9794                  gtk+ >= 2.6)
   9795                o Future Graphics2D, image and text work is documented at:
   9796                  [2]http://developer.classpath.org/mediation/ClasspathGrap
   9797                  hicsImagesText
   9798                o When gtk+ 2.6 or higher is installed the default log
   9799                  handler will produce stack traces whenever a WARNING,
   9800                  CRITICAL or ERROR message is produced.
   9801           + Free Swing
   9802                o The RepaintManager has been reworked for more efficient
   9803                  painting, especially for large GUIs.
   9804                o The layout manager OverlayLayout has been implemented,
   9805                  the BoxLayout has been rewritten to make use of the
   9806                  SizeRequirements utility class and caching for more
   9807                  efficient layout.
   9808                o Improved accessibility support.
   9809                o Significant progress has been made in the implementation
   9810                  of the javax.swing.plaf.metal package, with most UI
   9811                  delegates in a working state now. Please test this with
   9812                  your own applications and provide feedback that will help
   9813                  us to improve this package.
   9814                o The GUI demo (gnu.classpath.examples.swing.Demo) has been
   9815                  extended to highlight various features in our Free Swing
   9816                  implementation. And it includes a look and feel switcher
   9817                  for Metal (default), Ocean and GNU themes.
   9818                o The javax.swing.plaf.multi package is now implemented.
   9819                o Editing and several key actions for JTree and JTable were
   9820                  implemented.
   9821                o Lots of icons and look and feel improvements for Free
   9822                  Swing basic and metal themes were added. Try running the
   9823                  GNU Classpath Swing Demo in examples
   9824                  (gnu.classpath.examples.swing.Demo) with:
   9825                  -Dswing.defaultlaf=javax.swing.plaf.basic.BasicLookAndFee
   9826                  l or
   9827                  -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFee
   9828                  l
   9829                o Start of styled text capabilites for java.swing.text.
   9830                o DefaultMutableTreeNode pre-order, post-order, depth-first
   9831                  and breadth-first traversal enumerations implemented.
   9832                o JInternalFrame colors and titlebar draw properly.
   9833                o JTree is working up to par (icons, selection and keyboard
   9834                  traversal).
   9835                o JMenus were made more compatible in visual and
   9836                  programmatic behavior.
   9837                o JTable changeSelection and multiple selections
   9838                  implemented.
   9839                o JButton and JToggleButton change states work properly
   9840                  now.
   9841                o JFileChooser fixes.
   9842                o revalidate() and repaint() fixes which make Free Swing
   9843                  much more responsive.
   9844                o MetalIconFactory implemented.
   9845                o Free Swing Top-Level Compatibility. JFrame, JDialog,
   9846                  JApplet, JInternalFrame, and JWindow are now 1.5
   9847                  compatible in the sense that you can call add() and
   9848                  setLayout() directly on them, which will have the same
   9849                  effect as calling getContentPane().add() and
   9850                  getContentPane().setLayout().
   9851                o The JTree interface has been completed. JTrees now
   9852                  recognizes mouse clicks and selections work.
   9853                o BoxLayout works properly now.
   9854                o Fixed GrayFilter to actually work.
   9855                o Metal SplitPane implemented.
   9856                o Lots of Free Swing text and editor stuff work now.
   9857           + Free RMI and Corba
   9858                o Andrew Watson, Vice President and Technical Director of
   9859                  the Object Management Group, has officially assigned us
   9860                  20 bit Vendor Minor Code Id: 0x47430 ("GC") that will
   9861                  mark remote classpath-specific system exceptions.
   9862                  Obtaining the VMCID means that GNU Classpath now is a
   9863                  recogniseable type of node in a highly interoperable
   9864                  CORBA world.
   9865                o GNU Classpath now includes the first working draft to
   9866                  support the RMI over IIOP protocol. The current
   9867                  implementation is capable of remote invocations,
   9868                  transferring various Serializables and Externalizables
   9869                  via RMI-IIOP protocol. It can flatten graphs and, at
   9870                  least for the simple cases, is interoperable with 1.5
   9871                  JDKs.
   9872                o org.omg.PortableInterceptor and related functionality in
   9873                  other packages is now implemented:
   9874                     # The sever and client interceptors work as required
   9875                       since 1.4.
   9876                     # The IOR interceptor works as needed for 1.5.
   9877                o The org.omg.DynamicAny package is completed and passes
   9878                  the prepared tests.
   9879                o The Portable Object Adapter should now support the output
   9880                  of the recent IDL to java compilers. These compilers now
   9881                  generate servants and not CORBA objects as before, making
   9882                  the output depend on the existing POA implementation.
   9883                  Completing POA means that such code can already be tried
   9884                  to run on Classpath. Our POA is tested for the following
   9885                  usager scenarios:
   9886                     # POA converts servant to the CORBA object.
   9887                     # Servant provides to the CORBA object.
   9888                     # POA activates new CORBA object with the given Object
   9889                       Id (byte array) that is later accessible for the
   9890                       servant.
   9891                     # During the first call, the ServantActivator provides
   9892                       servant for this and all subsequent calls on the
   9893                       current object.
   9894                     # During each call, the ServantLocator provides
   9895                       servant for this call only.
   9896                     # ServantLocator or ServantActivator forwards call to
   9897                       another server.
   9898                     # POA has a single servant, responsible for all
   9899                       objects.
   9900                     # POA has a default servant, but some objects are
   9901                       explicitly connected to they specific servants.
   9902                  The POA is verified using tests from the former
   9903                  cost.omg.org.
   9904                o The CORBA implementation is now a working prototype that
   9905                  should support features up to 1.3 inclusive. We invite
   9906                  groups writing CORBA dependent applications to try
   9907                  Classpath implementation, reporting any possible bugs.
   9908                  The CORBA prototype is interoperable with Sun's
   9909                  implementation v 1.4, transferring object references,
   9910                  primitive types, narrow and wide strings, arrays,
   9911                  structures, trees, abstract interfaces and value types
   9912                  (feature of CORBA 2.3) between these two platforms.
   9913                  Remote exceptions are transferred and handled correctly.
   9914                  The stringified object references (IORs) from various
   9915                  sources are parsed as required. The transient (for
   9916                  current session) and permanent (till jre restart)
   9917                  redirections work. Both Little and Big Endian encoded
   9918                  messages are accepted. The implementation is verified
   9919                  using tests from the former cost.omg.org. The current
   9920                  release includes working examples (see the examples
   9921                  directory), demonstrating the client-server
   9922                  communication, using either CORBA Request or IDL-based
   9923                  stub (usually generated by a IDL to java compiler). These
   9924                  examples also show how to use the Classpath CORBA naming
   9925                  service. The IDL to java compiler is not yet written, but
   9926                  as our library must be compatible, it naturally accepts
   9927                  the output of other idlj implementations.
   9928           + Misc
   9929                o Updated TimeZone data against Olson tzdata2005l.
   9930                o Make zip and jar packages UTF-8 clean.
   9931                o "native" code builds and compiles (warning free) on
   9932                  Darwin and Solaris.
   9933                o java.util.logging.FileHandler now rotates files.
   9934                o Start of a generic JDWP framework in gnu/classpath/jdwp.
   9935                  This is unfinished, but feedback (at classpath (a] gnu.org)
   9936                  from runtime hackers is greatly appreciated. Although
   9937                  most of the work is currently being done around gcj/gij
   9938                  we want this framework to be as VM neutral as possible.
   9939                  Early design is described in:
   9940                  [3]https://gcc.gnu.org/ml/java/2005-05/msg00260.html
   9941                o QT4 AWT peers, enable by giving configure
   9942                  --enable-qt-peer. Included, but not ready for production
   9943                  yet. They are explicitly disabled and not supported. But
   9944                  if you want to help with the development of these new
   9945                  features we are interested in feedback. You will have to
   9946                  explicitly enable them to try them out (and they will
   9947                  most likely contain bugs).
   9948                o Documentation fixes all over the place. See
   9949                  [4]http://developer.classpath.org/doc/
   9950 
   9951 New Targets and Target Specific Improvements
   9952 
   9953   IA-32/x86-64
   9954 
   9955      * The x86-64 medium model (that allows building applications whose
   9956        data segment exceeds 4GB) was redesigned to match latest ABI draft.
   9957        New implementation split large datastructures into separate segment
   9958        improving performance of accesses to small datastructures and also
   9959        allows linking of small model libraries into medium model programs
   9960        as long as the libraries are not accessing the large datastructures
   9961        directly. Medium model is also supported in position independent
   9962        code now.
   9963        The ABI change results in partial incompatibility among medium
   9964        model objects. Linking medium model libraries (or objects) compiled
   9965        with new compiler into medium model program compiled with older
   9966        will likely result in exceeding ranges of relocations.
   9967        Binutils 2.16.91 or newer are required for compiling medium model
   9968        now.
   9969 
   9970   RS6000 (POWER/PowerPC)
   9971 
   9972      * The AltiVec vector primitives in <altivec.h> are now implemented in
   9973        a way that puts a smaller burden on the preprocessor, instead
   9974        processing the "overloading" in the front ends. This should benefit
   9975        compilation speed on AltiVec vector code.
   9976      * AltiVec initializers now are generated more efficiently.
   9977      * The popcountb instruction available on POWER5 now is generated.
   9978      * The floating point round to integer instructions available on
   9979        POWER5+ now is generated.
   9980      * Floating point divides can be synthesized using the floating point
   9981        reciprocal estimate instructions.
   9982      * Double precision floating point constants are initialized as single
   9983        precision values if they can be represented exactly.
   9984 
   9985   S/390, zSeries and System z9
   9986 
   9987      * Support for the IBM System z9 109 processor has been added. When
   9988        using the -march=z9-109 option, the compiler will generate code
   9989        making use of instructions provided by the extended immediate
   9990        facility.
   9991      * Support for 128-bit IEEE floating point has been added. When using
   9992        the -mlong-double-128 option, the compiler will map the long double
   9993        data type to 128-bit IEEE floating point. Using this option
   9994        constitutes an ABI change, and requires glibc support.
   9995      * Various changes to improve performance of generated code have been
   9996        implemented, including:
   9997           + In functions that do not require a literal pool, register %r13
   9998             (which is traditionally reserved as literal pool pointer), can
   9999             now be freely used for other purposes by the compiler.
   10000           + More precise tracking of register use allows the compiler to
   10001             generate more efficient function prolog and epilog code in
   10002             certain cases.
   10003           + The SEARCH STRING, COMPARE LOGICAL STRING, and MOVE STRING
   10004             instructions are now used to implement C string functions.
   10005           + The MOVE CHARACTER instruction with single byte overlap is now
   10006             used to implement the memset function with non-zero fill byte.
   10007           + The LOAD ZERO instructions are now used where appropriate.
   10008           + The INSERT CHARACTERS UNDER MASK, STORE CHARACTERS UNDER MASK,
   10009             and INSERT IMMEDIATE instructions are now used more frequently
   10010             to optimize bitfield operations.
   10011           + The BRANCH ON COUNT instruction is now used more frequently.
   10012             In particular, the fact that a loop contains a subroutine call
   10013             no longer prevents the compiler from using this instruction.
   10014           + The compiler is now aware that all shift and rotate
   10015             instructions implicitly truncate the shift count to six bits.
   10016      * Back-end support for the following generic features has been
   10017        implemented:
   10018           + The full set of [5]built-in functions for atomic memory
   10019             access.
   10020           + The -fstack-protector feature.
   10021           + The optimization pass avoiding unnecessary stores of incoming
   10022             argument registers in functions with variable argument list.
   10023 
   10024   SPARC
   10025 
   10026      * The default code model in 64-bit mode has been changed from
   10027        Medium/Anywhere to Medium/Middle on Solaris.
   10028      * TLS support is disabled by default on Solaris prior to release 10.
   10029        It can be enabled on TLS-capable Solaris 9 versions (4/04 release
   10030        and later) by specifying --enable-tls at configure time.
   10031 
   10032   MorphoSys
   10033 
   10034      * Support has been added for this new architecture.
   10035 
   10036 Obsolete Systems
   10037 
   10038 Documentation improvements
   10039 
   10040 Other significant improvements
   10041 
   10042      * GCC can now emit code for protecting applications from
   10043        stack-smashing attacks. The protection is realized by buffer
   10044        overflow detection and reordering of stack variables to avoid
   10045        pointer corruption.
   10046      * Some built-in functions have been fortified to protect them against
   10047        various buffer overflow (and format string) vulnerabilities.
   10048        Compared to the mudflap bounds checking feature, the safe builtins
   10049        have far smaller overhead. This means that programs built using
   10050        safe builtins should not experience any measurable slowdown.
   10051 
   10052 GCC 4.1.2
   10053 
   10054    This is the [6]list of problem reports (PRs) from GCC's bug tracking
   10055    system that are known to be fixed in the 4.1.2 release. This list might
   10056    not be complete (that is, it is possible that some PRs that have been
   10057    fixed are not listed here).
   10058 
   10059    When generating code for a shared library, GCC now recognizes that
   10060    global functions may be replaced when the program runs. Therefore, it
   10061    is now more conservative in deducing information from the bodies of
   10062    functions. For example, in this example:
   10063     void f() {}
   10064     void g() {
   10065      try { f(); }
   10066      catch (...) {
   10067        cout << "Exception";
   10068      }
   10069     }
   10070 
   10071    G++ would previously have optimized away the catch clause, since it
   10072    would have concluded that f cannot throw exceptions. Because users may
   10073    replace f with another function in the main body of the program, this
   10074    optimization is unsafe, and is no longer performed. If you wish G++ to
   10075    continue to optimize as before, you must add a throw() clause to the
   10076    declaration of f to make clear that it does not throw exceptions.
   10077 
   10078 
   10079     For questions related to the use of GCC, please consult these web
   10080     pages and the [7]GCC manuals. If that fails, the
   10081     [8]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   10082     web pages and the development of GCC are welcome on our developer
   10083     list at [9]gcc (a] gcc.gnu.org. All of [10]our lists have public
   10084     archives.
   10085 
   10086    Copyright (C) [11]Free Software Foundation, Inc. Verbatim copying and
   10087    distribution of this entire article is permitted in any medium,
   10088    provided this notice is preserved.
   10089 
   10090    These pages are [12]maintained by the GCC team. Last modified
   10091    2018-09-30[13].
   10092 
   10093 References
   10094 
   10095    1. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2
   10096    2. http://developer.classpath.org/mediation/ClasspathGraphicsImagesText
   10097    3. https://gcc.gnu.org/ml/java/2005-05/msg00260.html
   10098    4. http://developer.classpath.org/doc/
   10099    5. https://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
   10100    6. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.1.2
   10101    7. https://gcc.gnu.org/onlinedocs/
   10102    8. mailto:gcc-help (a] gcc.gnu.org
   10103    9. mailto:gcc (a] gcc.gnu.org
   10104   10. https://gcc.gnu.org/lists.html
   10105   11. https://www.fsf.org/
   10106   12. https://gcc.gnu.org/about.html
   10107   13. http://validator.w3.org/check/referer
   10108 ======================================================================
   10109 http://gcc.gnu.org/gcc-4.0/index.html
   10110 
   10111                              GCC 4.0 Release Series
   10112 
   10113    January 31, 2007
   10114 
   10115    The [1]GNU project and the GCC developers are pleased to announce the
   10116    release of GCC 4.0.4.
   10117 
   10118    This release is a bug-fix release, containing fixes for regressions in
   10119    GCC 4.0.3 relative to previous releases of GCC.
   10120 
   10121    This release series is no longer maintained.
   10122 
   10123 Release History
   10124 
   10125    GCC 4.0.4
   10126           January 31, 2007 ([2]changes)
   10127 
   10128    GCC 4.0.3
   10129           March 10, 2006 ([3]changes)
   10130 
   10131    GCC 4.0.2
   10132           September 28, 2005 ([4]changes)
   10133 
   10134    GCC 4.0.1
   10135           July 7, 2005 ([5]changes)
   10136 
   10137    GCC 4.0.0
   10138           April 20, 2005 ([6]changes)
   10139 
   10140 References and Acknowledgements
   10141 
   10142    GCC used to stand for the GNU C Compiler, but since the compiler
   10143    supports several other languages aside from C, it now stands for the
   10144    GNU Compiler Collection.
   10145 
   10146    A list of [7]successful builds is updated as new information becomes
   10147    available.
   10148 
   10149    The GCC developers would like to thank the numerous people that have
   10150    contributed new features, improvements, bug fixes, and other changes as
   10151    well as test results to GCC. This [8]amazing group of volunteers is
   10152    what makes GCC successful.
   10153 
   10154    For additional information about GCC please refer to the [9]GCC project
   10155    web site or contact the [10]GCC development mailing list.
   10156 
   10157    To obtain GCC please use [11]our mirror sites, or [12]our SVN server.
   10158 
   10159 
   10160     For questions related to the use of GCC, please consult these web
   10161     pages and the [13]GCC manuals. If that fails, the
   10162     [14]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   10163     web pages and the development of GCC are welcome on our developer
   10164     list at [15]gcc (a] gcc.gnu.org. All of [16]our lists have public
   10165     archives.
   10166 
   10167    Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
   10168    distribution of this entire article is permitted in any medium,
   10169    provided this notice is preserved.
   10170 
   10171    These pages are [18]maintained by the GCC team. Last modified
   10172    2018-09-30[19].
   10173 
   10174 References
   10175 
   10176    1. http://www.gnu.org/
   10177    2. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4
   10178    3. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.3
   10179    4. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.2
   10180    5. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.1
   10181    6. http://gcc.gnu.org/gcc-4.0/changes.html
   10182    7. http://gcc.gnu.org/gcc-4.0/buildstat.html
   10183    8. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   10184    9. http://gcc.gnu.org/index.html
   10185   10. mailto:gcc (a] gcc.gnu.org
   10186   11. http://gcc.gnu.org/mirrors.html
   10187   12. http://gcc.gnu.org/svn.html
   10188   13. https://gcc.gnu.org/onlinedocs/
   10189   14. mailto:gcc-help (a] gcc.gnu.org
   10190   15. mailto:gcc (a] gcc.gnu.org
   10191   16. https://gcc.gnu.org/lists.html
   10192   17. https://www.fsf.org/
   10193   18. https://gcc.gnu.org/about.html
   10194   19. http://validator.w3.org/check/referer
   10195 ======================================================================
   10196 http://gcc.gnu.org/gcc-4.0/changes.html
   10197 
   10198                              GCC 4.0 Release Series
   10199                         Changes, New Features, and Fixes
   10200 
   10201    The latest release in the 4.0 release series is [1]GCC 4.0.4.
   10202 
   10203 Caveats
   10204 
   10205      * GCC now generates location lists by default when compiling with
   10206        debug info and optimization.
   10207           + GDB 6.0 and older crashes when it sees location lists. GDB 6.1
   10208             or later is needed to debug binaries containing location
   10209             lists.
   10210           + When you are trying to view a value of a variable in a part of
   10211             a function where it has no location (for example when the
   10212             variable is no longer used and thus its location was used for
   10213             something else) GDB will say that it is not available.
   10214        You can disable generating location lists by -fno-var-tracking.
   10215      * GCC no longer accepts the -fwritable-strings option. Use named
   10216        character arrays when you need a writable string.
   10217      * The options -freduce-all-givs and -fmove-all-movables have been
   10218        discontinued. They were used to circumvent a shortcoming in the
   10219        heuristics of the old loop optimization code with respect to common
   10220        Fortran constructs. The new (tree) loop optimizer works differently
   10221        and doesn't need those work-arounds.
   10222      * The graph-coloring register allocator, formerly enabled by the
   10223        option -fnew-ra, has been discontinued.
   10224      * -I- has been deprecated. -iquote is meant to replace the need for
   10225        this option.
   10226      * The MIPS -membedded-pic and -mrnames options have been removed.
   10227      * All MIPS targets now require the GNU assembler. In particular, IRIX
   10228        configurations can no longer use the MIPSpro assemblers, although
   10229        they do still support the MIPSpro linkers.
   10230      * The SPARC option -mflat has been removed.
   10231      * English-language diagnostic messages will now use Unicode quotation
   10232        marks in UTF-8 locales. (Non-English messages already used the
   10233        quotes appropriate for the language in previous releases.) If your
   10234        terminal does not support UTF-8 but you are using a UTF-8 locale
   10235        (such locales are the default on many GNU/Linux systems) then you
   10236        should set LC_CTYPE=C in the environment to disable that locale.
   10237        Programs that parse diagnostics and expect plain ASCII
   10238        English-language messages should set LC_ALL=C. See [2]Markus Kuhn's
   10239        explanation of Unicode quotation marks for more information.
   10240      * The specs file is no longer installed on most platforms. Most users
   10241        will be totally unaffected. However, if you are accustomed to
   10242        editing the specs file yourself, you will now have to use the
   10243        -dumpspecs option to generate the specs file, and then edit the
   10244        resulting file.
   10245 
   10246 General Optimizer Improvements
   10247 
   10248      * The [3]tree ssa branch has been merged. This merge has brought in a
   10249        completely new optimization framework based on a higher level
   10250        intermediate representation than the existing RTL representation.
   10251        Numerous new code transformations based on the new framework are
   10252        available in GCC 4.0, including:
   10253           + Scalar replacement of aggregates
   10254           + Constant propagation
   10255           + Value range propagation
   10256           + Partial redundancy elimination
   10257           + Load and store motion
   10258           + Strength reduction
   10259           + Dead store elimination
   10260           + Dead and unreachable code elimination
   10261           + [4]Autovectorization
   10262           + Loop interchange
   10263           + Tail recursion by accumulation
   10264        Many of these passes outperform their counterparts from previous
   10265        GCC releases.
   10266      * [5]Swing Modulo Scheduling (SMS). An RTL level instruction
   10267        scheduling optimization intended for loops that perform heavy
   10268        computations.
   10269 
   10270 New Languages and Language specific improvements
   10271 
   10272   C family
   10273 
   10274      * The sentinel attribute has been added to GCC. This function
   10275        attribute allows GCC to warn when variadic functions such as execl
   10276        are not NULL terminated. See the GCC manual for a complete
   10277        description of its behavior.
   10278      * Given __attribute__((alias("target"))) it is now an error if target
   10279        is not a symbol, defined in the same translation unit. This also
   10280        applies to aliases created by #pragma weak alias=target. This is
   10281        because it's meaningless to define an alias to an undefined symbol.
   10282        On Solaris, the native assembler would have caught this error, but
   10283        GNU as does not.
   10284 
   10285   C and Objective-C
   10286 
   10287      * The -Wstrict-aliasing=2 option has been added. This warning catches
   10288        all unsafe cases, but it may also give a warning for some cases
   10289        that are safe.
   10290      * The cast-as-lvalue, conditional-expression-as-lvalue and
   10291        compound-expression-as-lvalue extensions, which were deprecated in
   10292        3.3.4 and 3.4, have been removed.
   10293      * The -fwritable-strings option, which was deprecated in 3.4, has
   10294        been removed.
   10295      * #pragma pack() semantics have been brought closer to those used by
   10296        other compilers. This also applies to C++.
   10297      * Taking the address of a variable with register storage is invalid
   10298        in C. GCC now issues an error instead of a warning.
   10299      * Arrays of incomplete element type are invalid in C. GCC now issues
   10300        an error for such arrays. Declarations such as extern struct s x[];
   10301        (where struct s has not been defined) can be moved after the
   10302        definition of struct s. Function parameters declared as arrays of
   10303        incomplete type can instead be declared as pointers.
   10304 
   10305   C++
   10306 
   10307      * When compiling without optimizations (-O0), the C++ front end is
   10308        much faster than in any previous versions of GCC. Independent
   10309        testers have measured speed-ups up to 25% in real-world production
   10310        code, compared to the 3.4 family (which was already the fastest
   10311        version to date). Upgrading from older versions might show even
   10312        bigger improvements.
   10313      * ELF visibility attributes can now be applied to a class type, so
   10314        that it affects every member function of a class at once, without
   10315        having to specify each individually:
   10316 class __attribute__ ((visibility("hidden"))) Foo
   10317 {
   10318    int foo1();
   10319    void foo2();
   10320 };
   10321        The syntax is deliberately similar to the __declspec() system used
   10322        by Microsoft Windows based compilers, allowing cross-platform
   10323        projects to easily reuse their existing macro system for denoting
   10324        exports and imports. By explicitly marking internal classes never
   10325        used outside a binary as hidden, one can completely avoid PLT
   10326        indirection overheads during their usage by the compiler. You can
   10327        find out more about the advantages of this at
   10328        [6]https://www.akkadia.org/drepper/dsohowto.pdf
   10329      * The -fvisibility-inlines-hidden option has been added which marks
   10330        all inlineable functions as having hidden ELF visibility, thus
   10331        removing their symbol and typeinfo from the exported symbol table
   10332        of the output ELF binary. Using this option can reduce the exported
   10333        symbol count of template-heavy code by up to 40% with no code
   10334        change at all, thus notably improving link and load times for the
   10335        binary as well as a reduction in size of up to 10%. Also, check the
   10336        new [7]-fvisibility option.
   10337      * The compiler now uses the library interface specified by the [8]C++
   10338        ABI for thread-safe initialization of function-scope static
   10339        variables. Most users should leave this alone, but embedded
   10340        programmers may want to disable this by specifying
   10341        -fno-threadsafe-statics for a small savings in code size.
   10342      * Taking the address of an explicit register variable is no longer
   10343        supported. Note that C++ allows taking the address of variables
   10344        with register storage so this will continue to compile with a
   10345        warning. For example, assuming that r0 is a machine register:
   10346 register int foo asm ("r0");
   10347 register int bar;
   10348 &foo; // error, no longer accepted
   10349 &bar; // OK, with a warning
   10350      * G++ has an undocumented extension to virtual function covariancy
   10351        rules that allowed the overrider to return a type that was
   10352        implicitly convertable to the overridden function's return type.
   10353        For instance a function returning void * could be overridden by a
   10354        function returning T *. This is now deprecated and will be removed
   10355        in a future release.
   10356      * The G++ minimum and maximum operators (<? and >?) and their
   10357        compound forms (<?=) and >?=) have been deprecated and will be
   10358        removed in a future version. Code using these operators should be
   10359        modified to use std::min and std::max instead.
   10360      * Declaration of nested classes of class templates as friends are
   10361        supported:
   10362 template <typename T> struct A {
   10363   class B {};
   10364 };
   10365 class C {
   10366   template <typename T> friend class A<T>::B;
   10367 };
   10368        This complements the feature member functions of class templates as
   10369        friends introduced in GCC 3.4.0.
   10370      * When declaring a friend class using an unqualified name, classes
   10371        outside the innermost non-class scope are not searched:
   10372 class A;
   10373 namespace N {
   10374   class B {
   10375     friend class A;   // Refer to N::A which has not been declared yet
   10376                       // because name outside namespace N are not searched
   10377     friend class ::A; // Refer to ::A
   10378   };
   10379 }
   10380        Hiding the friend name until declaration is still not implemented.
   10381      * Friends of classes defined outside their namespace are correctly
   10382        handled:
   10383 namespace N {
   10384   class A;
   10385 }
   10386 class N::A {
   10387   friend class B; // Refer to N::B in GCC 4.0.0
   10388                   // but ::B in earlier versions of GCC
   10389 };
   10390 
   10391     Runtime Library (libstdc++)
   10392 
   10393      * Optimization work:
   10394           + Added efficient specializations of istream functions for char
   10395             and wchar_t.
   10396           + Further performance tuning of strings, in particular wrt
   10397             single-char append and getline.
   10398           + iter_swap - and therefore most of the mutating algorithms -
   10399             now makes an unqualified call to swap when the value_type of
   10400             the two iterators is the same.
   10401      * A large subset of the features in Technical Report 1 (TR1 for
   10402        short) is experimentally delivered (i.e., no guarantees about the
   10403        implementation are provided. In particular it is not promised that
   10404        the library will remain link-compatible when code using TR1 is
   10405        used):
   10406           + General utilities such as reference_wrapper and shared_ptr.
   10407           + Function objects, i.e., result_of, mem_fn, bind, function.
   10408           + Support for metaprogramming.
   10409           + New containers such as tuple, array, unordered_set,
   10410             unordered_map, unordered_multiset, unordered_multimap.
   10411      * As usual, many bugs have been fixed and LWG resolutions implemented
   10412        for the first time (e.g., DR 409).
   10413 
   10414   Java
   10415 
   10416      * In order to prevent naming conflicts with other implementations of
   10417        these tools, some GCJ binaries have been renamed:
   10418           + rmic is now grmic,
   10419           + rmiregistry is now grmiregistry, and
   10420           + jar is now fastjar.
   10421        In particular, these names were problematic for the jpackage.org
   10422        packaging conventions which install symlinks in /usr/bin that point
   10423        to the preferred versions of these tools.
   10424      * The -findirect-dispatch argument to the compiler now works and
   10425        generates code following a new "binary compatibility" ABI. Code
   10426        compiled this way follows the binary compatibility rules of the
   10427        Java Language Specification.
   10428      * libgcj now has support for using GCJ as a JIT, using the
   10429        gnu.gcj.jit family of system properties.
   10430      * libgcj can now find a shared library corresponding to the bytecode
   10431        representation of a class. See the documentation for the new
   10432        gcj-dbtool program, and the new gnu.gcj.precompiled.db.path system
   10433        property.
   10434      * There have been many improvements to the class library. Here are
   10435        some highlights:
   10436           + Much more of AWT and Swing exist.
   10437           + Many new packages and classes were added, including
   10438             java.util.regex, java.net.URI, javax.crypto,
   10439             javax.crypto.interfaces, javax.crypto.spec, javax.net,
   10440             javax.net.ssl, javax.security.auth,
   10441             javax.security.auth.callback, javax.security.auth.login,
   10442             javax.security.auth.x500, javax.security.sasl, org.ietf.jgss,
   10443             javax.imageio, javax.imageio.event, javax.imageio.spi,
   10444             javax.print, javax.print.attribute,
   10445             javax.print.attribute.standard, javax.print.event, and
   10446             javax.xml
   10447           + Updated SAX and DOM, and imported GNU JAXP
   10448 
   10449   Fortran
   10450 
   10451      * A new [9]Fortran front end has replaced the aging GNU Fortran 77
   10452        front end. The new front end supports Fortran 90 and Fortran 95. It
   10453        may not yet be as stable as the old Fortran front end.
   10454 
   10455   Ada
   10456 
   10457      * Ada (with tasking and Zero Cost Exceptions) is now available on
   10458        many more targets, including but not limited to: alpha-linux,
   10459        hppa-hpux, hppa-linux, powerpc-darwin, powerpc-linux, s390-linux,
   10460        s390x-linux, sparc-linux.
   10461      * Some of the new Ada 2005 features are now implemented like
   10462        Wide_Wide_Character and Ada.Containers.
   10463      * Many bugs have been fixed, tools and documentation improved.
   10464      * To compile Ada from the sources, install an older working Ada
   10465        compiler and then use --enable-languages=ada at configuration time,
   10466        since the Ada front end is not currently activated by default. See
   10467        the [10]Installing GCC for details.
   10468 
   10469 New Targets and Target Specific Improvements
   10470 
   10471   H8/300
   10472 
   10473      * The frame layout has changed. In the new layout, the prologue of a
   10474        function first saves registers and then allocate space for locals,
   10475        resulting in an 1% improvement on code size.
   10476 
   10477   IA-32/x86-64 (AMD64)
   10478 
   10479      * The acos, asin, drem, exp10, exp2, expm1, fmod, ilogb, log10,
   10480        log1p, log2, logb and tan mathematical builtins (and their float
   10481        and long double variants) are now implemented as inline x87
   10482        intrinsics when using -ffast-math.
   10483      * The ceil, floor, nearbyint, rint and trunc mathematical builtins
   10484        (and their float and long double variants) are now implemented as
   10485        inline x87 intrinsics when using -ffast-math.
   10486      * The x87's fsincos instruction is now used automatically with
   10487        -ffast-math when calculating both the sin and cos of the same
   10488        argument.
   10489      * Instruction selection for multiplication and division by constants
   10490        has been improved.
   10491 
   10492   IA-64
   10493 
   10494      * Floating point division, integer division and sqrt are now inlined,
   10495        resulting in significant performance improvements on some codes.
   10496 
   10497   MIPS
   10498 
   10499      * Division by zero checks now use conditional traps if the target
   10500        processor supports them. This decreases code size by one word per
   10501        division operation. The old behavior (branch and break) can be
   10502        obtained either at configure time by passing --with-divide=breaks
   10503        to configure or at runtime by passing -mdivide-breaks to GCC.
   10504      * Support for MIPS64 paired-single instructions has been added. It is
   10505        enabled by -mpaired-single and can be accessed using both the
   10506        target-independent vector extensions and new MIPS-specific built-in
   10507        functions.
   10508      * Support for the MIPS-3D ASE has been added. It is enabled by
   10509        -mips3d and provides new MIPS-3D-specific built-in functions.
   10510      * The -mexplicit-relocs option now supports static n64 code (as is
   10511        used, for example, in 64-bit linux kernels). -mexplicit-relocs
   10512        should now be feature-complete and is enabled by default when GCC
   10513        is configured to use a compatible assembler.
   10514      * Support for the NEC VR4130 series has been added. This support
   10515        includes the use of VR-specific instructions and a new VR4130
   10516        scheduler. Full VR4130 support can be selected with -march=vr4130
   10517        while code for any ISA can be tuned for the VR4130 using
   10518        -mtune=vr4130. There is also a new -mvr4130-align option that
   10519        produces better schedules at the cost of increased code size.
   10520      * Support for the Broadcom SB-1 has been extended. There is now an
   10521        SB-1 scheduler as well as support for the SB-1-specific
   10522        paired-single instructions. Full SB-1 support can be selected with
   10523        -march=sb1 while code for any ISA can be optimized for the SB-1
   10524        using -mtune=sb1.
   10525      * The compiler can now work around errata in R4000, R4400, VR4120 and
   10526        VR4130 processors. These workarounds are enabled by -mfix-r4000,
   10527        -mfix-r4400, -mfix-vr4120 and -mfix-vr4130 respectively. The VR4120
   10528        and VR4130 workarounds need binutils 2.16 or above.
   10529      * IRIX shared libraries are now installed into the standard library
   10530        directories: o32 libraries go into lib/, n32 libraries go into
   10531        lib32/ and n64 libraries go into lib64/.
   10532      * The compiler supports a new -msym32 option. It can be used to
   10533        optimize n64 code in which all symbols are known to have 32-bit
   10534        values.
   10535 
   10536   S/390 and zSeries
   10537 
   10538      * New command-line options help to generate code intended to run in
   10539        an environment where stack space is restricted, e.g. Linux kernel
   10540        code:
   10541           + -mwarn-framesize and -mwarn-dynamicstack trigger compile-time
   10542             warnings for single functions that require large or dynamic
   10543             stack frames.
   10544           + -mstack-size and -mstack-guard generate code that checks for
   10545             stack overflow at run time.
   10546           + -mpacked-stack generates code that reduces the stack frame
   10547             size of many functions by reusing unneeded parts of the stack
   10548             bias area.
   10549      * The -msoft-float option now ensures that generated code never
   10550        accesses floating point registers.
   10551      * The s390x-ibm-tpf target now fully supports C++, including
   10552        exceptions and threads.
   10553      * Various changes to improve performance of the generated code have
   10554        been implemented, including:
   10555           + GCC now uses sibling calls where possible.
   10556           + Condition code handling has been optimized, allowing GCC to
   10557             omit redundant comparisons in certain cases.
   10558           + The cost function guiding many optimizations has been refined
   10559             to more accurately represent the z900 and z990 processors.
   10560           + The ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL WITH BORROW
   10561             instructions are now used to avoid conditional branches in
   10562             certain cases.
   10563           + The back end now uses the LEGITIMIZE_RELOAD_ADDRESS feature to
   10564             optimize address arithmetic required to access large stack
   10565             frames.
   10566           + GCC now makes more efficient use of memory-to-memory type
   10567             instructions (MVC, CLC, ...).
   10568           + More precise tracking of special register use allows better
   10569             instruction scheduling, in particular of the function prologue
   10570             and epilogue sequences.
   10571           + The Java front end now generates inline code to implement
   10572             integer division, instead of calling library routines.
   10573 
   10574   SPARC
   10575 
   10576      * The options -mv8, -msparclite, -mcypress, -msupersparc, -mf930 and
   10577        -mf934 have been removed. They have been replaced with -mcpu=xxx.
   10578      * The internal model used to estimate the relative cost of each
   10579        instruction has been updated. It is expected to give better results
   10580        on recent UltraSPARC processors.
   10581      * Code generation for function prologues and epilogues has been
   10582        improved, resulting in better scheduling and allowing multiple exit
   10583        points in functions.
   10584      * Support for Sun's Visual Instruction Set (VIS) has been enhanced.
   10585        It is enabled by -mvis and provides new built-in functions for VIS
   10586        instructions on UltraSPARC processors.
   10587      * The option -mapp-regs has been turned on by default on Solaris too.
   10588 
   10589   NetWare
   10590 
   10591      * Novell NetWare (on ix86, no other hardware platform was ever really
   10592        supported by this OS) has been re-enabled and the ABI supported by
   10593        GCC has been brought into sync with that of MetroWerks CodeWarrior
   10594        (the ABI previously supported was that of some Unix systems, which
   10595        NetWare never tried to support).
   10596 
   10597 Obsolete Systems
   10598 
   10599    Support for a number of older systems has been declared obsolete in GCC
   10600    4.0. Unless there is activity to revive them, the next release of GCC
   10601    will have their sources permanently removed.
   10602 
   10603    All GCC ports for the following processor architectures have been
   10604    declared obsolete:
   10605      * Intel i860
   10606      * Ubicom IP2022
   10607      * National Semiconductor NS32K (ns32k)
   10608      * Texas Instruments TMS320C[34]x
   10609 
   10610    Also, those for some individual systems have been obsoleted:
   10611      * SPARC family
   10612           + SPARClite-based systems (sparclite-*-coff, sparclite-*-elf,
   10613             sparc86x-*-elf)
   10614           + OpenBSD 32-bit (sparc-*-openbsd*)
   10615 
   10616 Documentation improvements
   10617 
   10618 Other significant improvements
   10619 
   10620      * Location lists are now generated by default when compiling with
   10621        debug info and optimization. Location lists provide more accurate
   10622        debug info about locations of variables and they allow debugging
   10623        code compiled with -fomit-frame-pointer.
   10624      * The -fvisibility option has been added which allows the default ELF
   10625        visibility of all symbols to be set per compilation and the new
   10626        #pragma GCC visibility preprocessor command allows the setting of
   10627        default ELF visibility for a region of code. Using
   10628        -fvisibility=hidden especially in combination with the new
   10629        -fvisibility-inlines-hidden can yield substantial improvements in
   10630        output binary quality including avoiding PLT indirection overheads,
   10631        reduction of the exported symbol count by up to 60% (with resultant
   10632        improvements to link and load times), better scope for the
   10633        optimizer to improve code and up to a 20% reduction in binary size.
   10634        Using these options correctly yields a binary with a similar symbol
   10635        count to a Windows DLL.
   10636        Perhaps more importantly, this new feature finally allows (with
   10637        careful planning) complete avoidance of symbol clashes when
   10638        manually loading shared objects with RTLD_GLOBAL, thus finally
   10639        solving problems many projects such as python were forced to use
   10640        RTLD_LOCAL for (with its resulting issues for C++ correctness). You
   10641        can find more information about using these options at
   10642        [11]https://gcc.gnu.org/wiki/Visibility.
   10643      __________________________________________________________________
   10644 
   10645 GCC 4.0.1
   10646 
   10647    This is the [12]list of problem reports (PRs) from GCC's bug tracking
   10648    system that are known to be fixed in the 4.0.1 release. This list might
   10649    not be complete (that is, it is possible that some PRs that have been
   10650    fixed are not listed here).
   10651 
   10652 GCC 4.0.2
   10653 
   10654    This is the [13]list of problem reports (PRs) from GCC's bug tracking
   10655    system that are known to be fixed in the 4.0.2 release. This list might
   10656    not be complete (that is, it is possible that some PRs that have been
   10657    fixed are not listed here).
   10658 
   10659    Unfortunately, due to a release engineering failure, this release has a
   10660    regression on Solaris that will affect some C++ programs. We suggest
   10661    that Solaris users apply a [14]patch that corrects the problem. Users
   10662    who do not wish to apply the patch should explicitly link C++ programs
   10663    with the -pthreads option, even if they do not use threads. This
   10664    problem has been corrected in the current 4.0 branch sources and will
   10665    not be present in GCC 4.0.3.
   10666 
   10667 GCC 4.0.3
   10668 
   10669    Starting with this release, the function getcontext is recognized by
   10670    the compiler as having the same semantics as the setjmp function. In
   10671    particular, the compiler will ensure that all registers are dead before
   10672    calling such a function and will emit a warning about the variables
   10673    that may be clobbered after the second return from the function.
   10674 
   10675 GCC 4.0.4
   10676 
   10677    This is the [15]list of problem reports (PRs) from GCC's bug tracking
   10678    system that are known to be fixed in the 4.0.4 release. This list might
   10679    not be complete (that is, it is possible that some PRs that have been
   10680    fixed are not listed here).
   10681 
   10682    The 4.0.4 release is provided for those that require a high degree of
   10683    binary compatibility with previous 4.0.x releases. For most users, the
   10684    GCC team recommends that version 4.1.1 or later be used instead."
   10685 
   10686 
   10687     For questions related to the use of GCC, please consult these web
   10688     pages and the [16]GCC manuals. If that fails, the
   10689     [17]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   10690     web pages and the development of GCC are welcome on our developer
   10691     list at [18]gcc (a] gcc.gnu.org. All of [19]our lists have public
   10692     archives.
   10693 
   10694    Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
   10695    distribution of this entire article is permitted in any medium,
   10696    provided this notice is preserved.
   10697 
   10698    These pages are [21]maintained by the GCC team. Last modified
   10699    2018-09-30[22].
   10700 
   10701 References
   10702 
   10703    1. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4
   10704    2. https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
   10705    3. http://gcc.gnu.org/projects/tree-ssa/
   10706    4. http://gcc.gnu.org/projects/tree-ssa/vectorization.html
   10707    5. http://gcc.gnu.org/news/sms.html
   10708    6. https://www.akkadia.org/drepper/dsohowto.pdf
   10709    7. http://gcc.gnu.org/gcc-4.0/changes.html#visibility
   10710    8. https://itanium-cxx-abi.github.io/cxx-abi/
   10711    9. http://gcc.gnu.org/fortran/
   10712   10. https://gcc.gnu.org/install/
   10713   11. https://gcc.gnu.org/wiki/Visibility
   10714   12. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.1
   10715   13. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.2
   10716   14. https://gcc.gnu.org/ml/gcc-cvs/2005-09/msg00984.html
   10717   15. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.4
   10718   16. https://gcc.gnu.org/onlinedocs/
   10719   17. mailto:gcc-help (a] gcc.gnu.org
   10720   18. mailto:gcc (a] gcc.gnu.org
   10721   19. https://gcc.gnu.org/lists.html
   10722   20. https://www.fsf.org/
   10723   21. https://gcc.gnu.org/about.html
   10724   22. http://validator.w3.org/check/referer
   10725 ======================================================================
   10726 http://gcc.gnu.org/gcc-3.4/index.html
   10727 
   10728                              GCC 3.4 Release Series
   10729 
   10730    May 26, 2006
   10731 
   10732    The [1]GNU project and the GCC developers are pleased to announce the
   10733    release of GCC 3.4.6.
   10734 
   10735    This release is a bug-fix release, containing fixes for regressions in
   10736    GCC 3.4.4 relative to previous releases of GCC. This is the last of the
   10737    3.4.x series.
   10738 
   10739    The GCC 3.4 release series includes numerous [2]new features,
   10740    improvements, bug fixes, and other changes, thanks to an [3]amazing
   10741    group of volunteers.
   10742 
   10743    This release series is no longer maintained.
   10744 
   10745 Release History
   10746 
   10747    GCC 3.4.6
   10748           March 6, 2006 ([4]changes)
   10749 
   10750    GCC 3.4.5
   10751           November 30, 2005 ([5]changes)
   10752 
   10753    GCC 3.4.4
   10754           May 18, 2005 ([6]changes)
   10755 
   10756    GCC 3.4.3
   10757           November 4, 2004 ([7]changes)
   10758 
   10759    GCC 3.4.2
   10760           September 6, 2004 ([8]changes)
   10761 
   10762    GCC 3.4.1
   10763           July 1, 2004 ([9]changes)
   10764 
   10765    GCC 3.4.0
   10766           April 18, 2004 ([10]changes)
   10767 
   10768 References and Acknowledgements
   10769 
   10770    GCC used to stand for the GNU C Compiler, but since the compiler
   10771    supports several other languages aside from C, it now stands for the
   10772    GNU Compiler Collection.
   10773 
   10774    A list of [11]successful builds is updated as new information becomes
   10775    available.
   10776 
   10777    The GCC developers would like to thank the numerous people that have
   10778    contributed new features, improvements, bug fixes, and other changes as
   10779    well as test results to GCC. This [12]amazing group of volunteers is
   10780    what makes GCC successful.
   10781 
   10782    For additional information about GCC please refer to the [13]GCC
   10783    project web site or contact the [14]GCC development mailing list.
   10784 
   10785    To obtain GCC please use [15]our mirror sites, or [16]our SVN server.
   10786 
   10787 
   10788     For questions related to the use of GCC, please consult these web
   10789     pages and the [17]GCC manuals. If that fails, the
   10790     [18]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   10791     web pages and the development of GCC are welcome on our developer
   10792     list at [19]gcc (a] gcc.gnu.org. All of [20]our lists have public
   10793     archives.
   10794 
   10795    Copyright (C) [21]Free Software Foundation, Inc. Verbatim copying and
   10796    distribution of this entire article is permitted in any medium,
   10797    provided this notice is preserved.
   10798 
   10799    These pages are [22]maintained by the GCC team. Last modified
   10800    2018-09-30[23].
   10801 
   10802 References
   10803 
   10804    1. http://www.gnu.org/
   10805    2. http://gcc.gnu.org/gcc-3.4/changes.html
   10806    3. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   10807    4. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6
   10808    5. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.5
   10809    6. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.4
   10810    7. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.3
   10811    8. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.2
   10812    9. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.1
   10813   10. http://gcc.gnu.org/gcc-3.4/changes.html
   10814   11. http://gcc.gnu.org/gcc-3.4/buildstat.html
   10815   12. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   10816   13. http://gcc.gnu.org/index.html
   10817   14. mailto:gcc (a] gcc.gnu.org
   10818   15. http://gcc.gnu.org/mirrors.html
   10819   16. http://gcc.gnu.org/svn.html
   10820   17. https://gcc.gnu.org/onlinedocs/
   10821   18. mailto:gcc-help (a] gcc.gnu.org
   10822   19. mailto:gcc (a] gcc.gnu.org
   10823   20. https://gcc.gnu.org/lists.html
   10824   21. https://www.fsf.org/
   10825   22. https://gcc.gnu.org/about.html
   10826   23. http://validator.w3.org/check/referer
   10827 ======================================================================
   10828 http://gcc.gnu.org/gcc-3.4/changes.html
   10829 
   10830                              GCC 3.4 Release Series
   10831                         Changes, New Features, and Fixes
   10832 
   10833    The final release in the 3.4 release series is [1]GCC 3.4.6. The series
   10834    is now closed.
   10835 
   10836    GCC 3.4 has [2]many improvements in the C++ front end. Before reporting
   10837    a bug, please make sure it's really GCC, and not your code, that is
   10838    broken.
   10839 
   10840 Caveats
   10841 
   10842      * GNU Make is now required to build GCC.
   10843      * With -nostdinc the preprocessor used to ignore both standard
   10844        include paths and include paths contained in environment variables.
   10845        It was neither documented nor intended that environment variable
   10846        paths be ignored, so this has been corrected.
   10847      * GCC no longer accepts the options -fvolatile, -fvolatile-global and
   10848        -fvolatile-static. It is unlikely that they worked correctly in any
   10849        3.x release.
   10850      * GCC no longer ships <varargs.h>. Use <stdarg.h> instead.
   10851      * Support for all the systems [3]obsoleted in GCC 3.3 has been
   10852        removed from GCC 3.4. See below for a [4]list of systems which are
   10853        obsoleted in this release.
   10854      * GCC now requires an ISO C90 (ANSI C89) C compiler to build. K&R C
   10855        compilers will not work.
   10856      * The implementation of the [5]MIPS ABIs has changed. As a result,
   10857        the code generated for certain MIPS targets will not be binary
   10858        compatible with earlier releases.
   10859      * In previous releases, the MIPS port had a fake "hilo" register with
   10860        the user-visible name accum. This register has been removed.
   10861      * The implementation of the [6]SPARC ABIs has changed. As a result,
   10862        the code generated will not be binary compatible with earlier
   10863        releases in certain cases.
   10864      * The configure option --enable-threads=pthreads has been removed;
   10865        use --enable-threads=posix instead, which should have the same
   10866        effect.
   10867      * Code size estimates used by inlining heuristics for C, Objective-C,
   10868        C++ and Java have been redesigned significantly. As a result the
   10869        parameters of -finline-insns, --param max-inline-insns-single and
   10870        --param max-inline-insns-auto need to be reconsidered.
   10871      * --param max-inline-slope and --param min-inline-insns have been
   10872        removed; they are not needed for the new bottom-up inlining
   10873        heuristics.
   10874      * The new unit-at-a-time compilation scheme has several compatibility
   10875        issues:
   10876           + The order in which functions, variables, and top-level asm
   10877             statements are emitted may have changed. Code relying on some
   10878             particular ordering needs to be updated. The majority of such
   10879             top-level asm statements can be replaced by section
   10880             attributes.
   10881           + Unreferenced static variables and functions are removed. This
   10882             may result in undefined references when an asm statement
   10883             refers to the variable/function directly. In that case either
   10884             the variable/function shall be listed in asm statement operand
   10885             or in the case of top-level asm statements the attribute used
   10886             shall be used to force function/variable to be always output
   10887             and considered as a possibly used by unknown code.
   10888             For variables the attribute is accepted only by GCC 3.4 and
   10889             newer, while for earlier versions it is sufficient to use
   10890             unused to silence warnings about the variables not being
   10891             referenced. To keep code portable across different GCC
   10892             versions, you can use appropriate preprocessor conditionals.
   10893           + Static functions now can use non-standard passing conventions
   10894             that may break asm statements calling functions directly.
   10895             Again the attribute used shall be used to prevent this
   10896             behavior.
   10897        As a temporary workaround, -fno-unit-at-a-time can be used, but
   10898        this scheme may not be supported by future releases of GCC.
   10899      * GCC 3.4 automatically places zero-initialized variables in the .bss
   10900        section on some operating systems. Versions of GNU Emacs up to (and
   10901        including) 21.3 will not work correctly when using this
   10902        optimization; you can use -fno-zero-initialized-in-bss to disable
   10903        it.
   10904      * If GCC 3.4 is configured with --enable-threads=posix (the default
   10905        on most targets that support pthreads) then _REENTRANT will be
   10906        defined unconditionally by some libstdc++ headers. C++ code which
   10907        relies on that macro to detect whether multi-threaded code is being
   10908        compiled might change in meaning, possibly resulting in linker
   10909        errors for single-threaded programs. Affected users of [7]Boost
   10910        should compile single-threaded code with -DBOOST_DISABLE_THREADS.
   10911        See Bugzilla for [8]more information.
   10912 
   10913 General Optimizer Improvements
   10914 
   10915      * Usability of the profile feedback and coverage testing has been
   10916        improved.
   10917           + Performance of profiled programs has been improved by faster
   10918             profile merging code.
   10919           + Better use of the profile feedback for optimization (loop
   10920             unrolling and loop peeling).
   10921           + File locking support allowing fork() calls and parallel runs
   10922             of profiled programs.
   10923           + Coverage file format has been redesigned.
   10924           + gcov coverage tool has been improved.
   10925           + make profiledbootstrap available to build a faster compiler.
   10926             Experiments made on i386 hardware showed an 11% speedup on -O0
   10927             and a 7.5% speedup on -O2 compilation of a [9]large C++
   10928             testcase.
   10929           + New value profiling pass enabled via -fprofile-values
   10930           + New value profile transformations pass enabled via -fvpt aims
   10931             to optimize some code sequences by exploiting knowledge about
   10932             value ranges or other properties of the operands. At the
   10933             moment a conversion of expensive divisions into cheaper
   10934             operations has been implemented.
   10935           + New -fprofile-generate and -fprofile-use command-line options
   10936             to simplify the use of profile feedback.
   10937      * A new unit-at-a-time compilation scheme for C, Objective-C, C++ and
   10938        Java which is enabled via -funit-at-a-time (and implied by -O2). In
   10939        this scheme a whole file is parsed first and optimized later. The
   10940        following basic inter-procedural optimizations are implemented:
   10941           + Removal of unreachable functions and variables
   10942           + Discovery of local functions (functions with static linkage
   10943             whose address is never taken)
   10944           + On i386, these local functions use register parameter passing
   10945             conventions.
   10946           + Reordering of functions in topological order of the call graph
   10947             to enable better propagation of optimizing hints (such as the
   10948             stack alignments needed by functions) in the back end.
   10949           + Call graph based out-of-order inlining heuristics which allows
   10950             to limit overall compilation unit growth (--param
   10951             inline-unit-growth).
   10952        Overall, the unit-at-a-time scheme produces a 1.3% improvement for
   10953        the SPECint2000 benchmark on the i386 architecture (AMD Athlon
   10954        CPU).
   10955      * More realistic code size estimates used by inlining for C,
   10956        Objective-C, C++ and Java. The growth of large functions can now be
   10957        limited via --param large-function-insns and --param
   10958        large-function-growth.
   10959      * A new cfg-level loop optimizer pass replaces the old loop unrolling
   10960        pass and adds two other loop transformations -- loop peeling and
   10961        loop unswitching -- and also uses the profile feedback to limit
   10962        code growth. (The three optimizations are enabled by
   10963        -funroll-loops, -fpeel-loops and -funswitch-loops flags,
   10964        respectively).
   10965        The old loop unroller still can be enabled by -fold-unroll-loops
   10966        and may produce better code in some cases, especially when the
   10967        webizer optimization pass is not run.
   10968      * A new web construction pass enabled via -fweb (and implied by -O3)
   10969        improves the quality of register allocation, CSE, first scheduling
   10970        pass and some other optimization passes by avoiding re-use of
   10971        pseudo registers with non-overlapping live ranges. The pass almost
   10972        always improves code quality but does make debugging difficult and
   10973        thus is not enabled by default by -O2
   10974        The pass is especially effective as cleanup after code duplication
   10975        passes, such as the loop unroller or the tracer.
   10976      * Experimental implementations of superblock or trace scheduling in
   10977        the second scheduling pass can be enabled via
   10978        -fsched2-use-superblocks and -fsched2-use-traces, respectively.
   10979 
   10980 New Languages and Language specific improvements
   10981 
   10982   Ada
   10983 
   10984      * The Ada front end has been updated to include numerous bug fixes
   10985        and enhancements. These include:
   10986           + Improved project file support
   10987           + Additional set of warnings about potential wrong code
   10988           + Improved error messages
   10989           + Improved code generation
   10990           + Improved cross reference information
   10991           + Improved inlining
   10992           + Better run-time check elimination
   10993           + Better error recovery
   10994           + More efficient implementation of unbounded strings
   10995           + Added features in GNAT.Sockets, GNAT.OS_Lib, GNAT.Debug_Pools,
   10996             ...
   10997           + New GNAT.xxxx packages (e.g. GNAT.Strings,
   10998             GNAT.Exception_Action)
   10999           + New pragmas
   11000           + New -gnatS switch replacing gnatpsta
   11001           + Implementation of new Ada features (in particular limited
   11002             with, limited aggregates)
   11003 
   11004   C/Objective-C/C++
   11005 
   11006      * Precompiled headers are now supported. Precompiled headers can
   11007        dramatically speed up compilation of some projects. There are some
   11008        known defects in the current precompiled header implementation that
   11009        will result in compiler crashes in relatively rare situations.
   11010        Therefore, precompiled headers should be considered a "technology
   11011        preview" in this release. Read the manual for details about how to
   11012        use precompiled headers.
   11013      * File handling in the preprocessor has been rewritten. GCC no longer
   11014        gets confused by symlinks and hardlinks, and now has a correct
   11015        implementation of #import and #pragma once. These two directives
   11016        have therefore been un-deprecated.
   11017      * The undocumented extension that allowed C programs to have a label
   11018        at the end of a compound statement, which has been deprecated since
   11019        GCC 3.0, has been removed.
   11020      * The cast-as-lvalue extension has been removed for C++ and
   11021        deprecated for C and Objective-C. In particular, code like this:
   11022         int i;
   11023         (char) i = 5;
   11024 
   11025        or this:
   11026         char *p;
   11027         ((int *) p)++;
   11028 
   11029        is no longer accepted for C++ and will not be accepted for C and
   11030        Objective-C in a future version.
   11031      * The conditional-expression-as-lvalue extension has been deprecated
   11032        for C and Objective-C. In particular, code like this:
   11033         int a, b, c;
   11034         (a ? b : c) = 2;
   11035 
   11036        will not be accepted for C and Objective-C in a future version.
   11037      * The compound-expression-as-lvalue extension has been deprecated for
   11038        C and Objective-C. In particular, code like this:
   11039         int a, b;
   11040         (a, b) = 2;
   11041 
   11042        will not be accepted for C and Objective-C in a future version. A
   11043        possible non-intrusive workaround is the following:
   11044         (*(a, &b)) = 2;
   11045 
   11046      * Several [10]built-in functions such as __builtin_popcount for
   11047        counting bits, finding the highest and lowest bit in a word, and
   11048        parity have been added.
   11049      * The -fwritable-strings option has been deprecated and will be
   11050        removed.
   11051      * Many C math library functions are now recognized as built-ins and
   11052        optimized.
   11053      * The C, C++, and Objective-C compilers can now handle source files
   11054        written in any character encoding supported by the host C library.
   11055        The default input character set is taken from the current locale,
   11056        and may be overridden with the -finput-charset command line option.
   11057        In the future we will add support for inline encoding markers.
   11058 
   11059   C++
   11060 
   11061      * G++ is now much closer to full conformance to the ISO/ANSI C++
   11062        standard. This means, among other things, that a lot of invalid
   11063        constructs which used to be accepted in previous versions will now
   11064        be rejected. It is very likely that existing C++ code will need to
   11065        be fixed. This document lists some of the most common issues.
   11066      * A hand-written recursive-descent C++ parser has replaced the
   11067        YACC-derived C++ parser from previous GCC releases. The new parser
   11068        contains much improved infrastructure needed for better parsing of
   11069        C++ source codes, handling of extensions, and clean separation
   11070        (where possible) between proper semantics analysis and parsing. The
   11071        new parser fixes many bugs that were found in the old parser.
   11072      * You must now use the typename and template keywords to disambiguate
   11073        dependent names, as required by the C++ standard.
   11074         struct K {
   11075           typedef int mytype_t;
   11076         };
   11077 
   11078         template <class T1> struct A {
   11079           template <class T2> struct B {
   11080               void callme(void);
   11081             };
   11082 
   11083           template <int N> void bar(void)
   11084           {
   11085             // Use 'typename' to tell the parser that T1::mytype_t names
   11086             //  a type. This is needed because the name is dependent (in
   11087             //  this case, on template parameter T1).
   11088             typename T1::mytype_t x;
   11089             x = 0;
   11090           }
   11091         };
   11092 
   11093         template <class T> void template_func(void)
   11094         {
   11095           // Use 'template' to prefix member templates within
   11096           //  dependent types (a has type A<T>, which depends on
   11097           //  the template parameter T).
   11098           A<T> a;
   11099           a.template bar<0>();
   11100 
   11101           // Use 'template' to tell the parser that B is a nested
   11102           //  template class (dependent on template parameter T), and
   11103           //  'typename' because the whole A<T>::B<int> is
   11104           //  the name of a type (again, dependent).
   11105           typename A<T>::template B<int> b;
   11106           b.callme();
   11107         }
   11108 
   11109         void non_template_func(void)
   11110         {
   11111           // Outside of any template class or function, no names can be
   11112           //  dependent, so the use of the keyword 'typename' and 'template'
   11113           //  is not needed (and actually forbidden).
   11114           A<K> a;
   11115           a.bar<0>();
   11116           A<K>::B<float> b;
   11117           b.callme();
   11118         }
   11119      * In a template definition, unqualified names will no longer find
   11120        members of a dependent base (as specified by [temp.dep]/3 in the
   11121        C++ standard). For example,
   11122         template <typename T> struct B {
   11123           int m;
   11124           int n;
   11125           int f ();
   11126           int g ();
   11127         };
   11128         int n;
   11129         int g ();
   11130         template <typename T> struct C : B<T> {
   11131           void h ()
   11132           {
   11133             m = 0; // error
   11134             f ();  // error
   11135             n = 0; // ::n is modified
   11136             g ();  // ::g is called
   11137           }
   11138         };
   11139        You must make the names dependent, e.g. by prefixing them with
   11140        this->. Here is the corrected definition of C<T>::h,
   11141         template <typename T> void C<T>::h ()
   11142         {
   11143           this->m = 0;
   11144           this->f ();
   11145           this->n = 0
   11146           this->g ();
   11147         }
   11148        As an alternative solution (unfortunately not backwards compatible
   11149        with GCC 3.3), you may use using declarations instead of this->:
   11150         template <typename T> struct C : B<T> {
   11151           using B<T>::m;
   11152           using B<T>::f;
   11153           using B<T>::n;
   11154           using B<T>::g;
   11155           void h ()
   11156           {
   11157             m = 0;
   11158             f ();
   11159             n = 0;
   11160             g ();
   11161           }
   11162         };
   11163      * In templates, all non-dependent names are now looked up and bound
   11164        at definition time (while parsing the code), instead of later when
   11165        the template is instantiated. For instance:
   11166         void foo(int);
   11167 
   11168         template <int> struct A {
   11169           static void bar(void){
   11170             foo('a');
   11171           }
   11172         };
   11173 
   11174         void foo(char);
   11175 
   11176         int main()
   11177         {
   11178           A<0>::bar();    // Calls foo(int), used to call foo(char).
   11179         }
   11180 
   11181      * In an explicit instantiation of a class template, you must use
   11182        class or struct before the template-id:
   11183         template <int N>
   11184         class A {};
   11185 
   11186         template A<0>;         // error, not accepted anymore
   11187         template class A<0>;   // OK
   11188      * The "named return value" and "implicit typename" extensions have
   11189        been removed.
   11190      * Default arguments in function types have been deprecated and will
   11191        be removed.
   11192      * ARM-style name-injection of friend declarations has been deprecated
   11193        and will be removed. For example: struct S { friend void f(); };
   11194        void g() { f(); } will not be accepted by future versions of G++;
   11195        instead a declaration of "f" will need to be present outside of the
   11196        scope of "S".
   11197      * Covariant returns are implemented for all but varadic functions
   11198        that require an adjustment.
   11199      * When -pedantic is used, G++ now issues errors about spurious
   11200        semicolons. For example,
   11201         namespace N {}; // Invalid semicolon.
   11202         void f() {}; // Invalid semicolon.
   11203      * G++ no longer accepts attributes for a declarator after the
   11204        initializer associated with that declarator. For example,
   11205         X x(1) __attribute__((...));
   11206        is no longer accepted. Instead, use:
   11207         X x __attribute__((...)) (1);
   11208      * Inside the scope of a template class, the name of the class itself
   11209        can be treated as either a class or a template. So GCC used to
   11210        accept the class name as argument of type template, and template
   11211        template parameter. However this is not C++ standard compliant. Now
   11212        the name is not treated as a valid template template argument
   11213        unless you qualify the name by its scope. For example, the code
   11214        below no longer compiles.
   11215         template <template <class> class TT> class X {};
   11216         template <class T> class Y {
   11217           X<Y> x; // Invalid, Y is always a type template parameter.
   11218         };
   11219        The valid code for the above example is
   11220           X< ::Y> x; // Valid.
   11221        (Notice the space between < and : to prevent GCC to interpret this
   11222        as a digraph for [.)
   11223      * Friend declarations that refer to template specializations are
   11224        rejected if the template has not already been declared. For
   11225        example,
   11226         template <typename T>
   11227         class C {
   11228           friend void f<> (C&);
   11229         };
   11230        is rejected. You must first declare f as a template,
   11231         template <typename T>
   11232         void f(T);
   11233      * In case of friend declarations, every name used in the friend
   11234        declaration must be accessible at the point of that declaration.
   11235        Previous versions of G++ used to be less strict about this and
   11236        allowed friend declarations for private class members, for example.
   11237        See the ISO C++ Standard Committee's [11]defect report #209 for
   11238        details.
   11239      * Declaration of member functions of class templates as friends are
   11240        supported. For example,
   11241         template <typename T> struct A {
   11242           void f();
   11243         };
   11244         class C {
   11245           template <typename T> friend void A<T>::f();
   11246         };
   11247      * You must use template <> to introduce template specializations, as
   11248        required by the standard. For example,
   11249         template <typename T>
   11250         struct S;
   11251 
   11252         struct S<int> { };
   11253        is rejected. You must write,
   11254         template <> struct S<int> {};
   11255      * G++ used to accept code like this,
   11256         struct S {
   11257           int h();
   11258           void f(int i = g());
   11259           int g(int i = h());
   11260         };
   11261        This behavior is not mandated by the standard. Now G++ issues an
   11262        error about this code. To avoid the error, you must move the
   11263        declaration of g before the declaration of f. The default arguments
   11264        for g must be visible at the point where it is called.
   11265      * The C++ ABI Section 3.3.3 specifications for the array construction
   11266        routines __cxa_vec_new2 and __cxa_vec_new3 were changed to return
   11267        NULL when the allocator argument returns NULL. These changes are
   11268        incorporated into the libstdc++ runtime library.
   11269      * Using a name introduced by a typedef in a friend declaration or in
   11270        an explicit instantiation is now rejected, as specified by the ISO
   11271        C++ standard.
   11272         class A;
   11273         typedef A B;
   11274         class C {
   11275           friend class B;      // error, no typedef name here
   11276           friend B;            // error, friend always needs class/struct/enum
   11277           friend class A;      // OK
   11278         };
   11279 
   11280         template <int> class Q {};
   11281         typedef Q<0> R;
   11282         template class R;      // error, no typedef name here
   11283         template class Q<0>;   // OK
   11284      * When allocating an array with a new expression, GCC used to allow
   11285        parentheses around the type name. This is actually ill-formed and
   11286        it is now rejected:
   11287         int* a = new (int)[10];    // error, not accepted anymore
   11288         int* a = new int[10];      // OK
   11289      * When binding an rvalue of class type to a reference, the copy
   11290        constructor of the class must be accessible. For instance, consider
   11291        the following code:
   11292         class A
   11293         {
   11294         public:
   11295           A();
   11296 
   11297         private:
   11298           A(const A&);   // private copy ctor
   11299         };
   11300 
   11301         A makeA(void);
   11302         void foo(const A&);
   11303 
   11304         void bar(void)
   11305         {
   11306           foo(A());       // error, copy ctor is not accessible
   11307           foo(makeA());   // error, copy ctor is not accessible
   11308 
   11309           A a1;
   11310           foo(a1);        // OK, a1 is a lvalue
   11311         }
   11312        This might be surprising at first sight, especially since most
   11313        popular compilers do not correctly implement this rule ([12]further
   11314        details).
   11315      * When forming a pointer to member or a pointer to member function,
   11316        access checks for class visibility (public, protected, private) are
   11317        now performed using the qualifying scope of the name itself. This
   11318        is better explained with an example:
   11319         class A
   11320         {
   11321         public:
   11322           void pub_func();
   11323         protected:
   11324           void prot_func();
   11325         private:
   11326           void priv_func();
   11327         };
   11328 
   11329         class B : public A
   11330         {
   11331         public:
   11332           void foo()
   11333           {
   11334             &A::pub_func;   // OK, pub_func is accessible through A
   11335             &A::prot_func;  // error, cannot access prot_func through A
   11336             &A::priv_func;  // error, cannot access priv_func through A
   11337 
   11338             &B::pub_func;   // OK, pub_func is accessible through B
   11339             &B::prot_func;  // OK, can access prot_func through B (within B)
   11340             &B::priv_func;  // error, cannot access priv_func through B
   11341           }
   11342         };
   11343 
   11344     Runtime Library (libstdc++)
   11345 
   11346      * Optimization work:
   11347           + Streamlined streambuf, filebuf, separate synched with C
   11348             Standard I/O streambuf.
   11349           + All formatted I/O now uses cached locale information.
   11350           + STL optimizations (memory/speed for list, red-black trees as
   11351             used by sets and maps).
   11352           + More use of GCC builtins.
   11353           + String optimizations (avoid contention on
   11354             increment/decrement-and-test of the reference count in the
   11355             empty-string object, constructor from input_iterators
   11356             speedup).
   11357      * Static linkage size reductions.
   11358      * Large File Support (files larger than 2 GB on 32-bit systems).
   11359      * Wide character and variable encoding filebuf work (UTF-8, Unicode).
   11360      * Generic character traits.
   11361      * Also support wchar_t specializations on Mac OS 10.3.x, FreeBSD 5.x,
   11362        Solaris 2.7 and above, AIX 5.x, Irix 6.5.
   11363      * The allocator class is now standard-conformant, and two additional
   11364        extension allocators have been added, mt_alloc and
   11365        bitmap_allocator.
   11366      * PCH support: -include bits/stdc++.h (2x compile speedup).
   11367      * Rewrote __cxa_demangle with support for C++ style allocators.
   11368      * New debug modes for STL containers and iterators.
   11369      * Testsuite rewrite: five times as many tests, plus increasingly
   11370        sophisticated tests, including I/O, MT, multi-locale, wide and
   11371        narrow characters.
   11372      * Use current versions of GNU "autotools" for build/configuration.
   11373 
   11374   Objective-C
   11375 
   11376      * The Objective-C front end has been updated to include the numerous
   11377        bug fixes and enhancements previously available only in Apple's
   11378        version of GCC. These include:
   11379           + Structured exception (@try... @catch... @finally, @throw) and
   11380             synchronization (@synchronized) support. These are accessible
   11381             via the -fobjc-exceptions switch; as of this writing, they may
   11382             only be used in conjunction with -fnext-runtime on Mac OS X
   11383             10.3 and later. See [13]Options Controlling Objective-C
   11384             Dialect for more information.
   11385           + An overhaul of @encode logic. The C99 _Bool and C++ bool type
   11386             may now be encoded as 'B'. In addition, the back-end/codegen
   11387             dependencies have been removed.
   11388           + An overhaul of message dispatch construction, ensuring that
   11389             the various receiver types (and casts thereof) are handled
   11390             properly, and that correct diagnostics are issued.
   11391           + Support for "Zero-Link" (-fzero-link) and "Fix-and-Continue"
   11392             (-freplace-objc-classes) debugging modes, currently available
   11393             on Mac OS X 10.3 and later. See [14]Options Controlling
   11394             Objective-C Dialect for more information.
   11395           + Access to optimized runtime entry points (-fno-nil-receivers )
   11396             on the assumption that message receivers are never nil. This
   11397             is currently available on Mac OS X 10.3 and later. See
   11398             [15]Options Controlling Objective-C Dialect for more
   11399             information.
   11400 
   11401   Java
   11402 
   11403      * Compiling a .jar file will now cause non-.class entries to be
   11404        automatically compiled as resources.
   11405      * libgcj has been ported to Darwin.
   11406      * Jeff Sturm has adapted Jan Hubicka's call graph optimization code
   11407        to gcj.
   11408      * libgcj has a new gcjlib URL type; this lets URLClassLoader load
   11409        code from shared libraries.
   11410      * libgcj has been much more completely merged with [16]GNU Classpath.
   11411      * Class loading is now much more correct; in particular the caller's
   11412        class loader is now used when that is required.
   11413      * [17]Eclipse 2.x will run out of the box using gij.
   11414      * Parts of java.nio have been implemented. Direct and indirect
   11415        buffers work, as do fundamental file and socket operations.
   11416      * java.awt has been improved, though it is still not ready for
   11417        general use.
   11418      * The HTTP protocol handler now uses HTTP/1.1 and can handle the POST
   11419        method.
   11420      * The MinGW port has matured. Enhancements include socket timeout
   11421        support, thread interruption, improved Runtime.exec() handling and
   11422        support for accented characters in filenames.
   11423 
   11424   Fortran
   11425 
   11426      * Fortran improvements are listed in the [18]Fortran documentation.
   11427 
   11428 New Targets and Target Specific Improvements
   11429 
   11430   Alpha
   11431 
   11432      * Several [19]built-in functions have been added such as
   11433        __builtin_alpha_zap to allow utilizing the more obscure
   11434        instructions of the CPU.
   11435      * Parameter passing of complex arguments has changed to match the
   11436        ABI. This change is incompatible with previous GCC versions, but
   11437        does fix compatibility with the Tru64 compiler and several corner
   11438        cases where GCC was incompatible with itself.
   11439 
   11440   ARM
   11441 
   11442      * Nicolas Pitre has contributed his hand-coded floating-point support
   11443        code for ARM. It is both significantly smaller and faster than the
   11444        existing C-based implementation, even when building applications
   11445        for Thumb. The arm-elf configuration has been converted to use the
   11446        new code.
   11447      * Support for the Intel's iWMMXt architecture, a second generation
   11448        XScale processor, has been added. Enabled at run time with the
   11449        -mcpu=iwmmxt command line switch.
   11450      * A new ARM target has been added: arm-wince-pe. This is similar to
   11451        the arm-pe target, but it defaults to using the APCS32 ABI.
   11452      * The existing ARM pipeline description has been converted to the use
   11453        the [20]DFA processor pipeline model. There is not much change in
   11454        code performance, but the description is now [21]easier to
   11455        understand.
   11456      * Support for the Cirrus EP9312 Maverick floating point co-processor
   11457        added. Enabled at run time with the -mcpu=ep9312 command line
   11458        switch. Note however that the multilibs to support this chip are
   11459        currently disabled in gcc/config/arm/t-arm-elf, so if you want to
   11460        enable their production you will have to uncomment the entries in
   11461        that file.
   11462 
   11463   H8/300
   11464 
   11465      * Support for long long has been added.
   11466      * Support for saveall attribute has been added.
   11467      * Pavel Pisa contributed hand-written 32-bit-by-32-bit division code
   11468        for H8/300H and H8S, which is much faster than the previous
   11469        implementation.
   11470      * A lot of small performance improvements.
   11471 
   11472   IA-32/AMD64 (x86-64)
   11473 
   11474      * Tuning for K8 (AMD Opteron/Athlon64) core is available via
   11475        -march=k8 and -mcpu=k8.
   11476      * Scalar SSE code generation carefully avoids reformatting penalties,
   11477        hidden dependencies and minimizes the number of uops generated on
   11478        both Intel and AMD CPUs.
   11479      * Vector MMX and SSE operands are now passed in registers to improve
   11480        performance and match the argument passing convention used by the
   11481        Intel C++ Compiler. As a result it is not possible to call
   11482        functions accepting vector arguments compiled by older GCC version.
   11483      * Conditional jump elimination is now more aggressive on modern CPUs.
   11484      * The Athlon ports has been converted to use the DFA processor
   11485        pipeline description.
   11486      * Optimization of indirect tail calls is now possible in a similar
   11487        fashion as direct sibcall optimization.
   11488      * Further small performance improvements.
   11489      * -m128bit-long-double is now less buggy.
   11490      * __float128 support in 64-bit compilation.
   11491      * Support for data structures exceeding 2GB in 64-bit mode.
   11492      * -mcpu has been renamed to -mtune.
   11493 
   11494   IA-64
   11495 
   11496      * Tuning code for the Itanium 2 processor has been added. The
   11497        generation of code tuned for Itanium 2 (option -mtune=itanium2) is
   11498        enabled by default now. To generate code tuned for Itanium 1 the
   11499        option -mtune=itanium1 should be used.
   11500      * [22]DFA processor pipeline descriptions for the IA-64 processors
   11501        have been added. This resulted in about 3% improvement on the
   11502        SPECInt2000 benchmark for Itanium 2.
   11503      * Instruction bundling for the IA-64 processors has been rewritten
   11504        using the DFA pipeline hazard recognizer. It resulted in about 60%
   11505        compiler speedup on the SPECInt2000 C programs.
   11506 
   11507   M32R
   11508 
   11509      * Support for the M32R/2 processor has been added by Renesas.
   11510      * Support for an M32R GNU/Linux target and PIC code generation has
   11511        been added by Renesas.
   11512 
   11513   M68000
   11514 
   11515      * Bernardo Innocenti (Develer S.r.l.) has contributed the
   11516        m68k-uclinux target, based on former work done by Paul Dale
   11517        (SnapGear Inc.). Code generation for the ColdFire processors family
   11518        has been enhanced and extended to support the MCF 53xx and MCF 54xx
   11519        cores, integrating former work done by Peter Barada (Motorola).
   11520 
   11521   MIPS
   11522 
   11523     Processor-specific changes
   11524 
   11525      * Support for the RM7000 and RM9000 processors has been added. It can
   11526        be selected using the -march compiler option and should work with
   11527        any MIPS I (mips-*) or MIPS III (mips64-*) configuration.
   11528      * Support for revision 2 of the MIPS32 ISA has been added. It can be
   11529        selected with the command-line option -march=mips32r2.
   11530      * There is a new option, -mfix-sb1, to work around certain SB-1
   11531        errata.
   11532 
   11533     Configuration
   11534 
   11535      * It is possible to customize GCC using the following configure-time
   11536        options:
   11537           + --with-arch, which specifies the default value of the -march
   11538             option.
   11539           + --with-tune, which specifies the default value of the -mtune
   11540             option.
   11541           + --with-abi, which specifies the default ABI.
   11542           + --with-float=soft, which tells GCC to use software floating
   11543             point by default.
   11544           + --with-float=hard, which tells GCC to use hardware floating
   11545             point by default.
   11546      * A 64-bit GNU/Linux port has been added. The associated
   11547        configurations are mips64-linux-gnu and mips64el-linux-gnu.
   11548      * The 32-bit GNU/Linux port now supports Java.
   11549      * The IRIX 6 configuration now supports the o32 ABI and will build
   11550        o32 multilibs by default. This support is compatible with both
   11551        binutils and the SGI tools, but note that several features,
   11552        including debugging information and DWARF2 exception handling, are
   11553        only available when using the GNU assembler. Use of the GNU
   11554        assembler and linker (version 2.15 or above) is strongly
   11555        recommended.
   11556      * The IRIX 6 configuration now supports 128-bit long doubles.
   11557      * There are two new RTEMS-specific configurations, mips-rtems and
   11558        mipsel-rtems.
   11559      * There are two new *-elf configurations, mipsisa32r2-elf and
   11560        mipsisa32r2el-elf.
   11561 
   11562     General
   11563 
   11564      * Several [23]ABI bugs have been fixed. Unfortunately, these changes
   11565        will break binary compatibility with earlier releases.
   11566      * GCC can now use explicit relocation operators when generating
   11567        -mabicalls code. This behavior is controlled by -mexplicit-relocs
   11568        and can have several performance benefits. For example:
   11569           + It allows for more optimization of GOT accesses, including
   11570             better scheduling and redundancy elimination.
   11571           + It allows sibling calls to be implemented as jumps.
   11572           + n32 and n64 leaf functions can use a call-clobbered global
   11573             pointer instead of $28.
   11574           + The code to set up $gp can be removed from functions that
   11575             don't need it.
   11576      * A new option, -mxgot, allows the GOT to be bigger than 64k. This
   11577        option is equivalent to the assembler's -xgot option and should be
   11578        used instead of -Wa,-xgot.
   11579      * Frame pointer elimination is now supported when generating 64-bit
   11580        MIPS16 code.
   11581      * Inline block moves have been optimized to take more account of
   11582        alignment information.
   11583      * Many internal changes have been made to the MIPS port, mostly aimed
   11584        at reducing the reliance on assembler macros.
   11585 
   11586   PowerPC
   11587 
   11588      * GCC 3.4 releases have a number of fixes for PowerPC and PowerPC64
   11589        [24]ABI incompatibilities regarding the way parameters are passed
   11590        during functions calls. These changes may result in incompatibility
   11591        between code compiled with GCC 3.3 and GCC 3.4.
   11592 
   11593     PowerPC Darwin
   11594 
   11595      * Support for shared/dylib gcc libraries has been added. It is
   11596        enabled by default on powerpc-apple-darwin7.0.0 and up.
   11597      * Libgcj is enabled by default. On systems older than
   11598        powerpc-apple-darwin7.0.0 you need to install dlcompat.
   11599      * 128-bit IBM extended precision format support added for long
   11600        double.
   11601 
   11602     PowerPC64 GNU/Linux
   11603 
   11604      * By default, PowerPC64 GNU/Linux now uses natural alignment of
   11605        structure elements. The old four byte alignment for double, with
   11606        special rules for a struct starting with a double, can be chosen
   11607        with -malign-power. This change may result in incompatibility
   11608        between code compiled with GCC 3.3 and GCC 3.4.
   11609      * -mabi=altivec is now the default rather than -mabi=no-altivec.
   11610      * 128-bit IBM extended precision format support added for long
   11611        double.
   11612 
   11613   S/390 and zSeries
   11614 
   11615      * New command-line options allow to specify the intended execution
   11616        environment for generated code:
   11617           + -mesa/-mzarch allows to specify whether to generate code
   11618             running in ESA/390 mode or in z/Architecture mode (this is
   11619             applicable to 31-bit code only).
   11620           + -march allows to specify a minimum processor architecture
   11621             level (g5, g6, z900, or z990).
   11622           + -mtune allows to specify which processor to tune for.
   11623      * It is possible to customize GCC using the following configure-time
   11624        options:
   11625           + --with-mode, which specifies whether to default to assuming
   11626             ESA/390 or z/Architecture mode.
   11627           + --with-arch, which specifies the default value of the -march
   11628             option.
   11629           + --with-tune, which specifies the default value of the -mtune
   11630             option.
   11631      * Support for the z990 processor has been added, and can be selected
   11632        using -march=z990 or -mtune=z990. This includes instruction
   11633        scheduling tuned for the superscalar instruction pipeline of the
   11634        z990 processor as well as support for all new instructions provided
   11635        by the long-displacement facility.
   11636      * Support to generate 31-bit code optimized for zSeries processors
   11637        (running in ESA/390 or in z/Architecture mode) has been added. This
   11638        can be selected using -march=z900 and -mzarch respectively.
   11639      * Instruction scheduling for the z900 and z990 processors now uses
   11640        the DFA pipeline hazard recognizer.
   11641      * GCC no longer generates code to maintain a stack backchain,
   11642        previously used to generate stack backtraces for debugging
   11643        purposes. As replacement that does not incur runtime overhead,
   11644        DWARF-2 call frame information is provided by GCC; this is
   11645        supported by GDB 6.1. The old behavior can be restored using the
   11646        -mbackchain option.
   11647      * The stack frame size of functions may now exceed 2 GB in 64-bit
   11648        code.
   11649      * A port for the 64-bit IBM TPF operating system has been added; the
   11650        configuration is s390x-ibm-tpf. This configuration is supported as
   11651        cross-compilation target only.
   11652      * Various changes to improve the generated code have been
   11653        implemented, including:
   11654           + GCC now uses the MULTIPLY AND ADD and MULTIPLY AND SUBTRACT
   11655             instructions to significantly speed up many floating-point
   11656             applications.
   11657           + GCC now uses the ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL
   11658             WITH BORROW instructions to speed up long long arithmetic.
   11659           + GCC now uses the SEARCH STRING instruction to implement
   11660             strlen().
   11661           + In many cases, function call overhead for 31-bit code has been
   11662             reduced by placing the literal pool after the function code
   11663             instead of after the function prolog.
   11664           + Register 14 is no longer reserved in 64-bit code.
   11665           + Handling of global register variables has been improved.
   11666 
   11667   SPARC
   11668 
   11669      * The option -mflat is deprecated.
   11670      * Support for large (> 2GB) frames has been added to the 64-bit port.
   11671      * Several [25]ABI bugs have been fixed. Unfortunately, these changes
   11672        will break binary compatibility with earlier releases.
   11673      * The default debugging format has been switched from STABS to
   11674        DWARF-2 for 32-bit code on Solaris 7 and later. DWARF-2 is already
   11675        the default debugging format for 64-bit code on Solaris.
   11676 
   11677   SuperH
   11678 
   11679      * Support for the SH2E processor has been added. Enabled at run time
   11680        with the -m2e command line switch, or at configure time by
   11681        specifying sh2e as the machine part of the target triple.
   11682 
   11683   V850
   11684 
   11685      * Support for the Mitsubishi V850E1 processor has been added. This is
   11686        a variant of the V850E processor with some additional debugging
   11687        instructions.
   11688 
   11689   Xtensa
   11690 
   11691      * Several ABI bugs have been fixed. Unfortunately, these changes
   11692        break binary compatibility with earlier releases.
   11693           + For big-endian processors, the padding of aggregate return
   11694             values larger than a word has changed. If the size of an
   11695             aggregate return value is not a multiple of 32 bits, previous
   11696             versions of GCC inserted padding in the most-significant bytes
   11697             of the first return value register. Aggregates larger than a
   11698             word are now padded in the least-significant bytes of the last
   11699             return value register used. Aggregates smaller than a word are
   11700             still padded in the most-significant bytes. The return value
   11701             padding has not changed for little-endian processors.
   11702           + Function arguments with 16-byte alignment are now properly
   11703             aligned.
   11704           + The implementation of the va_list type has changed. A va_list
   11705             value created by va_start from a previous release cannot be
   11706             used with va_arg from this release, or vice versa.
   11707      * More processor configuration options for Xtensa processors are
   11708        supported:
   11709           + the ABS instruction is now optional;
   11710           + the ADDX* and SUBX* instructions are now optional;
   11711           + an experimental CONST16 instruction can be used to synthesize
   11712             constants instead of loading them from constant pools.
   11713        These and other Xtensa processor configuration options can no
   11714        longer be enabled or disabled by command-line options; the
   11715        processor configuration must be specified by the xtensa-config.h
   11716        header file when building GCC. Additionally, the
   11717        -mno-serialize-volatile option is no longer supported.
   11718 
   11719 Obsolete Systems
   11720 
   11721    Support for a number of older systems has been declared obsolete in GCC
   11722    3.4. Unless there is activity to revive them, the next release of GCC
   11723    will have their sources permanently removed.
   11724 
   11725    All configurations of the following processor architectures have been
   11726    declared obsolete:
   11727      * Mitsubishi D30V, d30v-*
   11728      * AT&T DSP1600 and DSP1610, dsp16xx-*
   11729      * Intel 80960, i960
   11730 
   11731    Also, some individual systems have been obsoleted:
   11732      * ARM Family
   11733           + Support for generating code for operation in APCS/26 mode
   11734             (-mapcs-26).
   11735      * IBM ESA/390
   11736           + "Bigfoot" port, i370-*. (The other port, s390-*, is actively
   11737             maintained and supported.)
   11738      * Intel 386 family
   11739           + MOSS, i?86-moss-msdos and i?86-*-moss*
   11740           + NCR 3000 running System V r.4, i?86-ncr-sysv4*
   11741           + FreeBSD with a.out object format, i?86-*-freebsd*aout* and
   11742             i?86-*-freebsd2*
   11743           + GNU/Linux with a.out object format, i?86-linux*aout*
   11744           + GNU/Linux with libc5, a.k.a. glibc1, i?86-linux*libc1*
   11745           + Interix versions before Interix 3, i?86-*-interix
   11746           + Mach microkernel, i?86-mach*
   11747           + SCO UnixWare with UDK, i?86-*-udk*
   11748           + Generic System V releases 1, 2, and 3, i?86-*-sysv[123]*
   11749           + VSTa microkernel, i386-*-vsta
   11750      * Motorola M68000 family
   11751           + HPUX, m68k-hp-hpux* and m68000-hp-hpux*
   11752           + NetBSD with a.out object format (before NetBSD 1.4),
   11753             m68k-*-*-netbsd* except m68k-*-*-netbsdelf*
   11754           + Generic System V r.4, m68k-*-sysv4*
   11755      * VAX
   11756           + Generic VAX, vax-*-* (This is generic VAX only; we have not
   11757             obsoleted any VAX triples for specific operating systems.)
   11758 
   11759 Documentation improvements
   11760 
   11761 Other significant improvements
   11762 
   11763      * The build system has undergone several significant cleanups.
   11764        Subdirectories will only be configured if they are being built, and
   11765        all subdirectory configures are run from the make command. The top
   11766        level has been autoconfiscated.
   11767      * Building GCC no longer writes to its source directory. This should
   11768        help those wishing to share a read-only source directory over NFS
   11769        or build from a CD. The exceptions to this feature are if you
   11770        configure with either --enable-maintainer-mode or
   11771        --enable-generated-files-in-srcdir.
   11772      * The -W warning option has been renamed to -Wextra, which is more
   11773        easily understood. The older spelling will be retained for
   11774        backwards compatibility.
   11775      * Substantial improvements in compile time have been made,
   11776        particularly for non-optimizing compilations.
   11777      __________________________________________________________________
   11778 
   11779 GCC 3.4.0
   11780 
   11781   Bug Fixes
   11782 
   11783    A vast number of bugs have been fixed in 3.4.0, too many to publish a
   11784    complete list here. [26]Follow this link to query the Bugzilla database
   11785    for the list of over 900 bugs fixed in 3.4.0. This is the list of all
   11786    bugs marked as resolved and fixed in 3.4.0 that are not flagged as 3.4
   11787    regressions.
   11788      __________________________________________________________________
   11789 
   11790 GCC 3.4.1
   11791 
   11792   Bug Fixes
   11793 
   11794    This section lists the problem reports (PRs) from GCC's bug tracking
   11795    system that are known to be fixed in the 3.4.1 release. This list might
   11796    not be complete (that is, it is possible that some PRs that have been
   11797    fixed are not listed here).
   11798 
   11799     Bootstrap failures
   11800 
   11801      * [27]10129 Ada bootstrap fails on PPC-Darwin - invalid assembler
   11802        emitted - PIC related
   11803      * [28]14576 [ARM] ICE in libiberty when building gcc-3.4 for arm-elf
   11804      * [29]14760 A bug in configure.in prevents using both
   11805        --program-suffix and --program-prefix
   11806      * [30]14671 [hppa64] bootstrap fails: ICE in
   11807        save_call_clobbered_regs, in caller_save.c
   11808      * [31]15093 [alpha][Java] make bootstrap fails to configure libffi on
   11809        Alpha
   11810      * [32]15178 Solaris 9/x86 fails linking after stage 3
   11811 
   11812     Multi-platform internal compiler errors (ICEs)
   11813 
   11814      * [33]12753 (preprocessor) Memory corruption in preprocessor on bad
   11815        input
   11816      * [34]13985 ICE in gcc.c-torture/compile/930621-1.c
   11817      * [35]14810 (c++) tree check failures with invalid code involving
   11818        templates
   11819      * [36]14883 (c++) ICE on invalid code, in cp_parser_lookup_name, in
   11820        cp/parser.c
   11821      * [37]15044 (c++) ICE on syntax error, template header
   11822      * [38]15057 (c++) Compiling of conditional value throw constructs
   11823        cause a segmentation violation
   11824      * [39]15064 (c++) typeid of template parameter gives ICE
   11825      * [40]15142 (c++) ICE when passing a string where a char* is expected
   11826        in a throw statement
   11827      * [41]15159 ICE in rtl_verify_flow_info_1
   11828      * [42]15165 (c++) ICE in instantiate_template
   11829      * [43]15193 Unary minus using pointer to V4SF vector causes
   11830        -fforce-mem to exhaust all memory
   11831      * [44]15209 (c++) Runs out of memory with packed structs
   11832      * [45]15227 (c++) Trouble with invalid function definition
   11833      * [46]15285 (c++) instantiate_type ICE when forming pointer to
   11834        template function
   11835      * [47]15299 (c++) ICE in resolve_overloaded_unification
   11836      * [48]15329 (c++) ICE on constructor of member template
   11837      * [49]15550 ICE in extract_insn, in recog.c
   11838      * [50]15554 (c++) ICE in tsubst_copy, in cp/pt.c
   11839      * [51]15640 (c++) ICE on invalid code in arg_assoc, in
   11840        cp/name-lookup.c
   11841      * [52]15666 [unit-at-a-time] Gcc abort on valid code
   11842      * [53]15696 (c++) ICE with bad pointer-to-member code
   11843      * [54]15701 (c++) ICE with friends and template template parameter
   11844      * [55]15761 ICE in do_SUBST, in combine.c
   11845      * [56]15829 (c++) ICE on Botan-1.3.13 due to -funroll-loops
   11846 
   11847     Ada
   11848 
   11849      * [57]14538 All RTEMS targets broken for gnat
   11850 
   11851     C front end
   11852 
   11853      * [58]12391 missing warning about assigning to an incomplete type
   11854      * [59]14649 atan(1.0) should not be a constant expression
   11855      * [60]15004 [unit-at-a-time] no warning for unused paramater in
   11856        static function
   11857      * [61]15749 --pedantic-errors behaves differently from --pedantic
   11858        with C-compiler on GNU/Linux
   11859 
   11860     C++ compiler and library
   11861 
   11862      * [62]10646 non-const reference is incorrectly matched in a "const T"
   11863        partial specialization
   11864      * [63]12077 wcin.rdbuf()->in_avail() return value too high
   11865      * [64]13598 enc_filebuf doesn't work
   11866      * [65]14211 const_cast returns lvalue but should be rvalue
   11867      * [66]14220 num_put::do_put() undesired float/double behavior
   11868      * [67]14245 problem with user-defined allocators in std::basic_string
   11869      * [68]14340 libstdc++ Debug mode: failure to convert iterator to
   11870        const_iterator
   11871      * [69]14600 __gnu_cxx::stdio_sync_filebuf should expose internal
   11872        FILE*
   11873      * [70]14668 no warning anymore for reevaluation of declaration
   11874      * [71]14775 LFS (large file support) tests missing
   11875      * [72]14821 Duplicate namespace alias declaration should not conflict
   11876      * [73]14930 Friend declaration ignored
   11877      * [74]14932 cannot use offsetof to get offsets of array elements in
   11878        g++ 3.4.0
   11879      * [75]14950 [non unit-at-a-time] always_inline does not mix with
   11880        templates and -O0
   11881      * [76]14962 g++ ignores #pragma redefine_extname
   11882      * [77]14975 Segfault on low-level write error during imbue
   11883      * [78]15002 Linewise stream input is unusably slow (std::string slow)
   11884      * [79]15025 compiler accepts redeclaration of template as
   11885        non-template
   11886      * [80]15046 [arm] Math functions misdetected by cross configuration
   11887      * [81]15069 a bit test on a variable of enum type is miscompiled
   11888      * [82]15074 g++ -lsupc++ still links against libstdc++
   11889      * [83]15083 spurious "statement has no effect" warning
   11890      * [84]15096 parse error with templates and pointer to const member
   11891      * [85]15287 combination of operator[] and operator .* fails in
   11892        templates
   11893      * [86]15317 __attribute__ unused in first parameter of constructor
   11894        gives error
   11895      * [87]15337 sizeof on incomplete type diagnostic
   11896      * [88]15361 bitset<>::_Find_next fails
   11897      * [89]15412 _GLIBCXX_ symbols symbols defined and used in different
   11898        namespaces
   11899      * [90]15427 valid code results in incomplete type error
   11900      * [91]15471 Incorrect member pointer offsets in anonymous
   11901        structs/unions
   11902      * [92]15503 nested template problem
   11903      * [93]15507 compiler hangs while laying out union
   11904      * [94]15542 operator & and template definitions
   11905      * [95]15565 SLES9: leading + sign for unsigned int with showpos
   11906      * [96]15625 friend defined inside a template fails to find static
   11907        function
   11908      * [97]15629 Function templates, overloads, and friend name injection
   11909      * [98]15742 'noreturn' attribute ignored in method of template
   11910        functions.
   11911      * [99]15775 Allocator::pointer consistently ignored
   11912      * [100]15821 Duplicate namespace alias within namespace rejected
   11913      * [101]15862 'enum yn' fails (confict with undeclared builtin)
   11914      * [102]15875 rejects pointer to member in template
   11915      * [103]15877 valid code using templates and anonymous enums is
   11916        rejected
   11917      * [104]15947 Puzzling error message for wrong destructor declaration
   11918        in template class
   11919      * [105]16020 cannot copy __gnu_debug::bitset
   11920      * [106]16154 input iterator concept too restrictive
   11921      * [107]16174 deducing top-level consts
   11922 
   11923     Java
   11924 
   11925      * [108]14315 Java compiler is not parallel make safe
   11926 
   11927     Fortran
   11928 
   11929      * [109]15151 [g77] incorrect logical i/o in 64-bit mode
   11930 
   11931     Objective-C
   11932 
   11933      * [110]7993 private variables cannot be shadowed in subclasses
   11934 
   11935     Optimization bugs
   11936 
   11937      * [111]15228 useless copies of floating point operands
   11938      * [112]15345 [non-unit-at-a-time] unreferenced nested inline
   11939        functions not optimized away
   11940      * [113]15945 Incorrect floating point optimization
   11941      * [114]15526 ftrapv aborts on 0 * (-1)
   11942      * [115]14690 Miscompiled POOMA tests
   11943      * [116]15112 GCC generates code to write to unchanging memory
   11944 
   11945     Preprocessor
   11946 
   11947      * [117]15067 Minor glitch in the source of cpp
   11948 
   11949     Main driver program bugs
   11950 
   11951      * [118]1963 collect2 interprets -oldstyle_liblookup as -o
   11952        ldstyle_liblookup
   11953 
   11954     x86-specific (Intel/AMD)
   11955 
   11956      * [119]15717 Error: can't resolve `L0' {*ABS* section} - `xx' {*UND*
   11957        section}
   11958 
   11959     HPPA-specific
   11960 
   11961      * [120]14782 GCC produces an unaligned data access at -O2
   11962      * [121]14828 FAIL: gcc.c-torture/execute/20030408-1.c execution, -O2
   11963      * [122]15202 ICE in reload_cse_simplify_operands, in postreload.c
   11964 
   11965     IA64-specific
   11966 
   11967      * [123]14610 __float80 constants incorrectly emitted
   11968      * [124]14813 init_array sections are initialized in the wrong order
   11969      * [125]14857 GCC segfault on duplicated asm statement
   11970      * [126]15598 Gcc 3.4 ICE on valid code
   11971      * [127]15653 Gcc 3.4 ICE on valid code
   11972 
   11973     MIPS-specific
   11974 
   11975      * [128]15189 wrong filling of delay slot with -march=mips1 -G0
   11976        -mno-split-addresses -mno-explicit-relocs
   11977      * [129]15331 Assembler error building gnatlib on IRIX 6.5 with GNU as
   11978        2.14.91
   11979      * [130]16144 Bogus reference to __divdf3 when -O1
   11980      * [131]16176 Miscompilation of unaligned data in MIPS backend
   11981 
   11982     PowerPC-specific
   11983 
   11984      * [132]11591 ICE in gcc.dg/altivec-5.c
   11985      * [133]12028 powerpc-eabispe produces bad sCOND operation
   11986      * [134]14478 rs6000 geu/ltu patterns generate incorrect code
   11987      * [135]14567 long double and va_arg complex args
   11988      * [136]14715 Altivec stack layout may overlap gpr save with stack
   11989        temps
   11990      * [137]14902 (libstdc++) Stream checking functions fail when -pthread
   11991        option is used.
   11992      * [138]14924 Compiler ICE on valid code
   11993      * [139]14960 -maltivec affects vector return with -mabi=no-altivec
   11994      * [140]15106 vector varargs failure passing from altivec to
   11995        non-altivec code for -m32
   11996      * [141]16026 ICE in function.c:4804, assign_parms, when -mpowerpc64 &
   11997        half-word operation
   11998      * [142]15191 -maltivec -mabi=no-altivec results in mis-aligned lvx
   11999        and stvx
   12000      * [143]15662 Segmentation fault when an exception is thrown - even if
   12001        try and catch are specified
   12002 
   12003     s390-specific
   12004 
   12005      * [144]15054 Bad code due to overlapping stack temporaries
   12006 
   12007     SPARC-specific
   12008 
   12009      * [145]15783 ICE with union assignment in 64-bit mode
   12010      * [146]15626 GCC 3.4 emits "ld: warning: relocation error:
   12011        R_SPARC_UA32"
   12012 
   12013     x86-64-specific
   12014 
   12015      * [147]14326 boehm-gc hardcodes to 3DNow! prefetch for x86_64
   12016      * [148]14723 Backported -march=nocona from mainline
   12017      * [149]15290 __float128 failed to pass to function properly
   12018 
   12019     Cygwin/Mingw32-specific
   12020 
   12021      * [150]15250 Option -mms-bitfields support on GCC 3.4 is not
   12022        conformant to MS layout
   12023      * [151]15551 -mtune=pentium4 -O2 with sjlj EH breaks stack probe
   12024        worker on windows32 targets
   12025 
   12026     Bugs specific to embedded processors
   12027 
   12028      * [152]8309 [m68k] -m5200 produces erroneous SImode set of short
   12029        varaible on stack
   12030      * [153]13250 [SH] Gcc code for rotation clobbers the register, but
   12031        gcc continues to use the register as if it was not clobbered
   12032      * [154]13803 [coldfire] movqi operand constraints too restrictivefor
   12033        TARGET_COLDFIRE
   12034      * [155]14093 [SH] ICE for code when using -mhitachi option in SH
   12035      * [156]14457 [m6811hc] ICE with simple c++ source
   12036      * [157]14542 [m6811hc] ICE on simple source
   12037      * [158]15100 [SH] cc1plus got hang-up on
   12038        libstdc++-v3/testsuite/abi_check.cc
   12039      * [159]15296 [CRIS] Delayed branch scheduling causing invalid code on
   12040        cris-*
   12041      * [160]15396 [SH] ICE with -O2 -fPIC
   12042      * [161]15782 [coldfire] m68k_output_mi_thunk emits wrong code for
   12043        ColdFire
   12044 
   12045     Testsuite problems (compiler not affected)
   12046 
   12047      * [162]11610 libstdc++ testcases 27_io/* don't work properly remotely
   12048      * [163]15488 (libstdc++) possibly insufficient file permissions for
   12049        executing test suite
   12050      * [164]15489 (libstdc++) testsuite_files determined incorrectly
   12051 
   12052     Documentation bugs
   12053 
   12054      * [165]13928 (libstdc++) no whatis info in some man pages generated
   12055        by doxygen
   12056      * [166]14150 Ada documentation out of date
   12057      * [167]14949 (c++) Need to document method visibility changes
   12058      * [168]15123 libstdc++-doc: Allocators.3 manpage is empty
   12059      __________________________________________________________________
   12060 
   12061 GCC 3.4.2
   12062 
   12063   Bug Fixes
   12064 
   12065    This section lists the problem reports (PRs) from GCC's bug tracking
   12066    system that are known to be fixed in the 3.4.2 release. This list might
   12067    not be complete (that is, it is possible that some PRs that have been
   12068    fixed are not listed here).
   12069 
   12070     Bootstrap failures and issues
   12071 
   12072      * [169]16469 [mips-sgi-irix5.3] bootstrap fails in
   12073        libstdc++-v3/testsuite
   12074      * [170]16344 [hppa-linux-gnu] libstdc++'s PCH built by
   12075        profiledbootstrap does not work with the built compiler
   12076      * [171]16842 [Solaris/x86] mkheaders can not find mkheaders.conf
   12077 
   12078     Multi-platform internal compiler errors (ICEs)
   12079 
   12080      * [172]12608 (c++) ICE: expected class 't', have 'x' (error_mark) in
   12081        cp_parser_class_specifier, in cp/parser.c
   12082      * [173]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
   12083      * [174]15461 (c++) ICE due to NRV and inlining
   12084      * [175]15890 (c++) ICE in c_expand_expr, in c-common.c
   12085      * [176]16180 ICE: segmentation fault in RTL optimization
   12086      * [177]16224 (c++) ICE in write_unscoped_name (template/namespace)
   12087      * [178]16408 ICE: in delete_insn, in cfgrtl.c
   12088      * [179]16529 (c++) ICE for: namespace-alias shall not be declared as
   12089        the name of any other entity
   12090      * [180]16698 (c++) ICE with exceptions and declaration of __cxa_throw
   12091      * [181]16706 (c++) ICE in finish_member_declaration, in
   12092        cp/semantics.c
   12093      * [182]16810 (c++) Legal C++ program with cast gives ICE in
   12094        build_ptrmemfunc
   12095      * [183]16851 (c++) ICE when throwing a comma expression
   12096      * [184]16870 (c++) Boost.Spirit causes ICE in tsubst, in cp/pt.c
   12097      * [185]16904 (c++) ICE in finish_class_member_access_expr, in
   12098        cp/typeck.c
   12099      * [186]16905 (c++) ICE (segfault) with exceptions
   12100      * [187]16964 (c++) ICE in cp_parser_class_specifier due to
   12101        redefinition
   12102      * [188]17068 (c++) ICE: tree check: expected class 'd', have 'x'
   12103        (identifier_node) in dependent_template_p, in cp/pt.c
   12104 
   12105     Preprocessor bugs
   12106 
   12107      * [189]16366 Preprocessor option -remap causes memory corruption
   12108 
   12109     Optimization
   12110 
   12111      * [190]15345 unreferenced nested inline functions not optimized away
   12112      * [191]16590 Incorrect execution when compiling with -O2
   12113      * [192]16693 Bitwise AND is lost when used within a cast to an enum
   12114        of the same precision
   12115      * [193]17078 Jump into if(0) substatement fails
   12116 
   12117     Problems in generated debug information
   12118 
   12119      * [194]13956 incorrect stabs for nested local variables
   12120 
   12121     C front end bugs
   12122 
   12123      * [195]16684 GCC should not warn about redundant redeclarations of
   12124        built-ins
   12125 
   12126     C++ compiler and library
   12127 
   12128      * [196]12658 Thread safety problems in locale::global() and
   12129        locale::locale()
   12130      * [197]13092 g++ accepts invalid pointer-to-member conversion
   12131      * [198]15320 Excessive memory consumption
   12132      * [199]16246 Incorrect template argument deduction
   12133      * [200]16273 Memory exhausted when using nested classes and virtual
   12134        functions
   12135      * [201]16401 ostringstream in gcc 3.4.x very slow for big data
   12136      * [202]16411 undefined reference to
   12137        __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char>
   12138        >::file()
   12139      * [203]16489 G++ incorrectly rejects use of a null constant integral
   12140        expression as a null constant pointer
   12141      * [204]16618 offsetof fails with constant member
   12142      * [205]16637 syntax error reported for valid input code
   12143      * [206]16717 __attribute__((constructor)) broken in C++
   12144      * [207]16813 compiler error in DEBUG version of range insertion
   12145        std::map::insert
   12146      * [208]16853 pointer-to-member initialization from incompatible one
   12147        accepted
   12148      * [209]16889 ambiguity is not detected
   12149      * [210]16959 Segmentation fault in ios_base::sync_with_stdio
   12150 
   12151     Java compiler and library
   12152 
   12153      * [211]7587 direct threaded interpreter not thread-safe
   12154      * [212]16473 ServerSocket accept() leaks file descriptors
   12155      * [213]16478 Hash synchronization deadlock with finalizers
   12156 
   12157     Alpha-specific
   12158 
   12159      * [214]10695 ICE in dwarf2out_frame_debug_expr, in dwarf2out.c
   12160      * [215]16974 could not split insn (ice in final_scan_insn, in
   12161        final.c)
   12162 
   12163     x86-specific
   12164 
   12165      * [216]16298 ICE in output_operand
   12166      * [217]17113 ICE with SSE2 intrinsics
   12167 
   12168     x86-64 specific
   12169 
   12170      * [218]14697 libstdc++ couldn't find 32bit libgcc_s
   12171 
   12172     MIPS-specific
   12173 
   12174      * [219]15869 [mips64] No NOP after LW (with -mips1 -O0)
   12175      * [220]16325 [mips64] value profiling clobbers gp on mips
   12176      * [221]16357 [mipsisa64-elf] ICE copying 7 bytes between extern
   12177        char[]s
   12178      * [222]16380 [mips64] Use of uninitialised register after dbra
   12179        conversion
   12180      * [223]16407 [mips64] Unaligned access to local variables
   12181      * [224]16643 [mips64] verify_local_live_at_start ICE after
   12182        crossjumping & cfgcleanup
   12183 
   12184     ARM-specific
   12185 
   12186      * [225]15927 THUMB -O2: strength-reduced iteration variable ends up
   12187        off by 1
   12188      * [226]15948 THUMB: ICE with non-commutative cbranch
   12189      * [227]17019 THUMB: bad switch statement in md code for
   12190        addsi3_cbranch_scratch
   12191 
   12192     IA64-specific
   12193 
   12194      * [228]16130 ICE on valid code: in bundling, in config/ia64/ia64.c
   12195        (-mtune=merced)
   12196      * [229]16142 ICE on valid code: in bundling, in config/ia64/ia64.c
   12197        (-mtune=itanium)
   12198      * [230]16278 Gcc failed to build Linux kernel with -mtune=merced
   12199      * [231]16414 ICE on valid code: typo in comparison of asm_noperands
   12200        result
   12201      * [232]16445 ICE on valid code: don't count ignored insns
   12202      * [233]16490 ICE (segfault) while compiling with -fprofile-use
   12203      * [234]16683 ia64 does not honor SUBTARGET_EXTRA_SPECS
   12204 
   12205     PowerPC-specific
   12206 
   12207      * [235]16195 (ppc64): Miscompilation of GCC 3.3.x by 3.4.x
   12208      * [236]16239 ICE on ppc64 (mozilla 1.7 compile, -O1 -fno-exceptions
   12209        issue)
   12210 
   12211     SPARC-specific
   12212 
   12213      * [237]16199 ICE while compiling apache 2.0.49
   12214      * [238]16416 -m64 doesn't imply -mcpu=v9 anymore
   12215      * [239]16430 ICE when returning non-C aggregates larger than 16 bytes
   12216 
   12217     Bugs specific to embedded processors
   12218 
   12219      * [240]16379 [m32r] can't output large model function call of memcpy
   12220      * [241]17093 [m32r] ICE with -msdata=use -O0
   12221      * [242]17119 [m32r] ICE at switch case 0x8000
   12222 
   12223     DJGPP-specific
   12224 
   12225      * [243]15928 libstdc++ in 3.4.x doesn't cross-compile for djgpp
   12226 
   12227     Alpha Tru64-specific
   12228 
   12229      * [244]16210 libstdc++ gratuitously omits "long long" I/O
   12230 
   12231     Testsuite, documentation issues (compiler is not affected):
   12232 
   12233      * [245]15488 (libstdc++) possibly insufficient file permissions for
   12234        executing test suite
   12235      * [246]16250 ada/doctools runs makeinfo even in release tarball
   12236      __________________________________________________________________
   12237 
   12238 GCC 3.4.3
   12239 
   12240    This is the [247]list of problem reports (PRs) from GCC's bug tracking
   12241    system that are known to be fixed in the 3.4.3 release. This list might
   12242    not be complete (that is, it is possible that some PRs that have been
   12243    fixed are not listed here).
   12244 
   12245     Bootstrap failures
   12246 
   12247      * [248]17369 [ia64] Bootstrap failure with binutils-2.15.90.0.1.1
   12248      * [249]17850 [arm-elf] bootstrap failure - libstdc++ uses strtold
   12249        when undeclared
   12250 
   12251     Internal compiler errors (ICEs) affecting multiple platforms
   12252 
   12253      * [250]13948 (java) GCJ segmentation fault while compiling GL4Java
   12254        .class files
   12255      * [251]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
   12256      * [252]16301 (c++) ICE when "strong" attribute is attached to a using
   12257        directive
   12258      * [253]16566 ICE with flexible arrays
   12259      * [254]17023 ICE with nested functions in parameter declaration
   12260      * [255]17027 ICE with noreturn function in loop at -O2
   12261      * [256]17524 ICE in grokdeclarator, in cp/decl.c
   12262      * [257]17826 (c++) ICE in cp_tree_equal
   12263 
   12264     C and optimization bugs
   12265 
   12266      * [258]15526 -ftrapv aborts on 0 * (-1)
   12267      * [259]16999 #ident stopped working
   12268      * [260]17503 quadratic behaviour in invalid_mode_change_p
   12269      * [261]17581 Long long arithmetic fails inside a switch/case
   12270        statement when compiled with -O2
   12271      * [262]18129 -fwritable-strings doesn't work
   12272 
   12273     C++ compiler and library bugs
   12274 
   12275      * [263]10975 incorrect initial ostringstream::tellp()
   12276      * [264]11722 Unbuffered filebuf::sgetn is slow
   12277      * [265]14534 Unrecognizing static function as a template parameter
   12278        when its return value is also templated
   12279      * [266]15172 Copy constructor optimization in aggregate
   12280        initialization
   12281      * [267]15786 Bad error message for frequently occuring error.
   12282      * [268]16162 Rejects valid member-template-definition
   12283      * [269]16612 empty basic_strings can't live in shared memory
   12284      * [270]16715 std::basic_iostream is instantiated when used, even
   12285        though instantiations are already contained in libstdc++
   12286      * [271]16848 code in /ext/demangle.h appears broken
   12287      * [272]17132 GCC fails to eliminate function template specialization
   12288        when argument deduction fails
   12289      * [273]17259 One more _S_leaf incorrectly qualified with _RopeRep::
   12290        in ropeimpl.h
   12291      * [274]17327 use of `enumeral_type' in template type unification
   12292      * [275]17393 "unused variable '._0'" warning with -Wall
   12293      * [276]17501 Confusion with member templates
   12294      * [277]17537 g++ not passing -lstdc++ to linker when all command line
   12295        arguments are libraries
   12296      * [278]17585 usage of unqualified name of static member from within
   12297        class not allowed
   12298      * [279]17821 Poor diagnostic for using "." instead of "->"
   12299      * [280]17829 wrong error: call of overloaded function is ambiguous
   12300      * [281]17851 Misleading diagnostic for invalid function declarations
   12301        with undeclared types
   12302      * [282]17976 Destructor is called twice
   12303      * [283]18020 rejects valid definition of enum value in template
   12304      * [284]18093 bogus conflict in namespace aliasing
   12305      * [285]18140 C++ parser bug when using >> in templates
   12306 
   12307     Fortran
   12308 
   12309      * [286]17541 data statements with double precision constants fail
   12310 
   12311     x86-specific
   12312 
   12313      * [287]17853 -O2 ICE for MMX testcase
   12314 
   12315     SPARC-specific
   12316 
   12317      * [288]17245 ICE compiling gsl-1.5 statistics/lag1.c
   12318 
   12319     Darwin-specific
   12320 
   12321      * [289]17167 FATAL:Symbol L_foo$stub already defined.
   12322 
   12323     AIX-specific
   12324 
   12325      * [290]17277 could not catch an exception when specified -maix64
   12326 
   12327     Solaris-specific
   12328 
   12329      * [291]17505 <cmath> calls acosf(), ceilf(), and other functions
   12330        missing from system libraries
   12331 
   12332     HP/UX specific:
   12333 
   12334      * [292]17684 /usr/ccs/bin/ld: Can't create libgcc_s.sl
   12335 
   12336     ARM-specific
   12337 
   12338      * [293]17384 ICE with mode attribute on structures
   12339 
   12340     MIPS-specific
   12341 
   12342      * [294]17770 No NOP after LWL with -mips1
   12343 
   12344     Other embedded target specific
   12345 
   12346      * [295]11476 [arc-elf] gcc ICE on newlib's vfprintf.c
   12347      * [296]14064 [avr-elf] -fdata-sections triggers ICE
   12348      * [297]14678 [m68hc11-elf] gcc ICE
   12349      * [298]15583 [powerpc-rtems] powerpc-rtems lacks __USE_INIT_FINI__
   12350      * [299]15790 [i686-coff] Alignment error building gcc with i686-coff
   12351        target
   12352      * [300]15886 [SH] Miscompilation with -O2 -fPIC
   12353      * [301]16884 [avr-elf] [fweb related] bug while initializing
   12354        variables
   12355 
   12356     Bugs relating to debugger support
   12357 
   12358      * [302]13841 missing debug info for _Complex function arguments
   12359      * [303]15860 [big-endian targets] No DW_AT_location debug info is
   12360        emitted for formal arguments to a function that uses "register"
   12361        qualifiers
   12362 
   12363     Testsuite issues (compiler not affected)
   12364 
   12365      * [304]17465 Testsuite in libffi overrides LD_LIBRARY_PATH
   12366      * [305]17469 Testsuite in libstdc++ overrides LD_LIBRARY_PATH
   12367      * [306]18138 [mips-sgi-irix6.5] libgcc_s.so.1 not found by 64-bit
   12368        testsuite
   12369 
   12370     Documentation
   12371 
   12372      * [307]15498 typo in gcc manual: non-existing locale example en_UK,
   12373        should be en_GB
   12374      * [308]15747 [mips-sgi-irix5.3] /bin/sh hangs during bootstrap:
   12375        document broken shell
   12376      * [309]16406 USE_LD_AS_NEEDED undocumented
   12377      __________________________________________________________________
   12378 
   12379 GCC 3.4.4
   12380 
   12381    This is the [310]list of problem reports (PRs) from GCC's bug tracking
   12382    system that are known to be fixed in the 3.4.4 release. This list might
   12383    not be complete (that is, it is possible that some PRs that have been
   12384    fixed are not listed here).
   12385      __________________________________________________________________
   12386 
   12387 GCC 3.4.5
   12388 
   12389    This is the [311]list of problem reports (PRs) from GCC's bug tracking
   12390    system that are known to be fixed in the 3.4.5 release. This list might
   12391    not be complete (that is, it is possible that some PRs that have been
   12392    fixed are not listed here).
   12393 
   12394     Bootstrap issues
   12395 
   12396      * [312]24688 sco_math fixincl breaks math.h
   12397 
   12398     C compiler bugs
   12399 
   12400      * [313]17188 struct Foo { } redefinition
   12401      * [314]20187 wrong code for ((unsigned char)(unsigned long
   12402        long)((a?a:1)&(a*b)))?0:1)
   12403      * [315]21873 infinite warning loop on bad array initializer
   12404      * [316]21899 enum definition accepts values to be overriden
   12405      * [317]22061 ICE in find_function_data, in function.c
   12406      * [318]22308 Failure to diagnose violation of constraint 6.516p2
   12407      * [319]22458 ICE on missing brace
   12408      * [320]22589 ICE casting to long long
   12409      * [321]24101 Segfault with preprocessed source
   12410 
   12411     C++ compiler and library bugs
   12412 
   12413      * [322]10611 operations on vector mode not recognized in C++
   12414      * [323]13377 unexpected behavior of namespace usage directive
   12415      * [324]16002 Strange error message with new parser
   12416      * [325]17413 local classes as template argument
   12417      * [326]17609 spurious error message after using keyword
   12418      * [327]17618 ICE in cp_convert_to_pointer, in cp/cvt.c
   12419      * [328]18124 ICE with invalid template template parameter
   12420      * [329]18155 typedef in template declaration not rejected
   12421      * [330]18177 ICE with const_cast for undeclared variable
   12422      * [331]18368 C++ error message regression
   12423      * [332]16378 ICE when returning a copy of a packed member
   12424      * [333]18466 int ::i; accepted
   12425      * [334]18512 ICE on invalid usage of template base class
   12426      * [335]18454 ICE when returning undefined type
   12427      * [336]18738 typename not allowed with non-dependent qualified name
   12428      * [337]18803 rejects access to operator() in template
   12429      * [338]19004 ICE in uses_template_parms, in cp/pt.c
   12430      * [339]19208 Spurious error about variably modified type
   12431      * [340]18253 bad error message / ICE for invalid template parameter
   12432      * [341]19608 ICE after friend function definition in local class
   12433      * [342]19884 ICE on explicit instantiation of a non-template
   12434        constructor
   12435      * [343]20153 ICE when C++ template function contains anonymous union
   12436      * [344]20563 Infinite loop in diagnostic (and ice after error
   12437        message)
   12438      * [345]20789 ICE with incomplete type in template
   12439      * [346]21336 Internal compiler error when using custom new operators
   12440      * [347]21768 ICE in error message due to violation of coding
   12441        conventions
   12442      * [348]21853 constness of pointer to data member ignored
   12443      * [349]21903 Default argument of template function causes a
   12444        compile-time error
   12445      * [350]21983 multiple diagnostics
   12446      * [351]21987 New testsuite failure
   12447        g++.dg/warn/conversion-function-1.C
   12448      * [352]22153 ICE on invalid template specialization
   12449      * [353]22172 Internal compiler error, seg fault.
   12450      * [354]21286 filebuf::xsgetn vs pipes
   12451      * [355]22233 ICE with wrong number of template parameters
   12452      * [356]22508 ICE after invalid operator new
   12453      * [357]22545 ICE with pointer to class member & user defined
   12454        conversion operator
   12455      * [358]23528 Wrong default allocator in ext/hash_map
   12456      * [359]23550 char_traits requirements/1.cc test bad math
   12457      * [360]23586 Bad diagnostic for invalid namespace-name
   12458      * [361]23624 ICE in invert_truthvalue, in fold-const.c
   12459      * [362]23639 Bad error message: not a member of '<declaration error>'
   12460      * [363]23797 ICE on typename outside template
   12461      * [364]23965 Bogus error message: no matching function for call to
   12462        'foo(<type error>)'
   12463      * [365]24052 &#`label_decl' not supported by dump_expr#<expression
   12464        error>
   12465      * [366]24580 virtual base class cause exception not to be caught
   12466 
   12467     Problems in generated debug information
   12468 
   12469      * [367]24267 Bad DWARF for altivec vectors
   12470 
   12471     Optimizations issues
   12472 
   12473      * [368]17810 ICE in verify_local_live_at_start
   12474      * [369]17860 Wrong generated code for loop with varying bound
   12475      * [370]21709 ICE on compile-time complex NaN
   12476      * [371]21964 broken tail call at -O2 or more
   12477      * [372]22167 Strange optimization bug when using -Os
   12478      * [373]22619 Compilation failure for real_const_1.f and
   12479        real_const_2.f90
   12480      * [374]23241 Invalid code generated for comparison of uchar to 255
   12481      * [375]23478 Miscompilation due to reloading of a var that is also
   12482        used in EH pad
   12483      * [376]24470 segmentation fault in cc1plus when compiling with -O
   12484      * [377]24950 ICE in operand_subword_force
   12485 
   12486     Precompiled headers problems
   12487 
   12488      * [378]14400 Cannot compile qt-x11-free-3.3.0
   12489      * [379]14940 PCH largefile test fails on various platforms
   12490 
   12491     Preprocessor bugs
   12492 
   12493      * [380]20239 ICE on empty preprocessed input
   12494      * [381]15220 "gcc -E -MM -MG" reports missing system headers in
   12495        source directory
   12496 
   12497     Testsuite issues
   12498 
   12499      * [382]19275 gcc.dg/20020919-1.c fails with -fpic/-fPIC on
   12500        i686-pc-linux-gnu
   12501 
   12502     Alpha specific
   12503 
   12504      * [383]21888 bootstrap failure with linker relaxation enabled
   12505 
   12506     ARM specific
   12507 
   12508      * [384]15342 [arm-linux]: ICE in verify_local_live_at_start
   12509      * [385]23985 Memory aliasing information incorrect in inlined memcpy
   12510 
   12511     ColdFile specific
   12512 
   12513      * [386]16719 Illegal move of byte into address register causes
   12514        compiler to ICE
   12515 
   12516     HPPA specific
   12517 
   12518      * [387]21723 ICE while building libgfortran
   12519      * [388]21841 -mhp-ld/-mgnu-ld documentation
   12520 
   12521     IA-64 specific
   12522 
   12523      * [389]23644 IA-64 hardware models and configuration options
   12524        documentation error
   12525      * [390]24718 Shared libgcc not used for linking by default
   12526 
   12527     M68000 specific
   12528 
   12529      * [391]18421 ICE in reload_cse_simplify_operands, in postreload.c
   12530 
   12531     MIPS specific
   12532 
   12533      * [392]20621 ICE in change_address_1, in emit-rtl.c
   12534 
   12535     PowerPC and PowerPC64 specific
   12536 
   12537      * [393]18583 error on valid code: const
   12538        __attribute__((altivec(vector__))) doesn't work in arrays
   12539      * [394]20191 ICE in reload_cse_simplify_operands
   12540      * [395]22083 AIX: TARGET_C99_FUNCTIONS is wrongly defined
   12541      * [396]23070 CALL_V4_CLEAR_FP_ARGS flag not properly set
   12542      * [397]23404 gij trashes args of functions with more than 8 fp args
   12543      * [398]23539 C & C++ compiler generating misaligned references
   12544        regardless of compiler flags
   12545      * [399]24102 floatdisf2_internal2 broken
   12546      * [400]24465 -mminimal-toc miscompilation of __thread vars
   12547 
   12548     Solaris specific
   12549 
   12550      * [401]19933 Problem with define of HUGE_VAL in math_c99
   12551      * [402]21889 Native Solaris assembler cannot grok DTP-relative debug
   12552        symbols
   12553 
   12554     SPARC specific
   12555 
   12556      * [403]19300 PCH failures on sparc-linux
   12557      * [404]20301 Assembler labels have a leading "-"
   12558      * [405]20673 C PCH testsuite assembly comparison failure
   12559 
   12560     x86 and x86_64 specific
   12561 
   12562      * [406]18582 ICE with arrays of type V2DF
   12563      * [407]19340 Compilation SEGFAULTs with -O1 -fschedule-insns2
   12564        -fsched2-use-traces
   12565      * [408]21716 ICE in reg-stack.c's swap_rtx_condition
   12566      * [409]24315 amd64 fails -fpeephole2
   12567      __________________________________________________________________
   12568 
   12569 GCC 3.4.6
   12570 
   12571    This is the [410]list of problem reports (PRs) from GCC's bug tracking
   12572    system that are known to be fixed in the 3.4.6 release. This list might
   12573    not be complete (that is, it is possible that some PRs that have been
   12574    fixed are not listed here).
   12575 
   12576 
   12577     For questions related to the use of GCC, please consult these web
   12578     pages and the [411]GCC manuals. If that fails, the
   12579     [412]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   12580     web pages and the development of GCC are welcome on our developer
   12581     list at [413]gcc (a] gcc.gnu.org. All of [414]our lists have public
   12582     archives.
   12583 
   12584    Copyright (C) [415]Free Software Foundation, Inc. Verbatim copying and
   12585    distribution of this entire article is permitted in any medium,
   12586    provided this notice is preserved.
   12587 
   12588    These pages are [416]maintained by the GCC team. Last modified
   12589    2018-09-30[417].
   12590 
   12591 References
   12592 
   12593    1. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6
   12594    2. http://gcc.gnu.org/gcc-3.4/changes.html#cplusplus
   12595    3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems
   12596    4. http://gcc.gnu.org/gcc-3.4/changes.html#obsolete_systems
   12597    5. http://gcc.gnu.org/gcc-3.4/mips-abi.html
   12598    6. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
   12599    7. https://www.boost.org/
   12600    8. https://gcc.gnu.org/PR11953
   12601    9. https://gcc.gnu.org/PR8361
   12602   10. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other%20Builtins
   12603   11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#209
   12604   12. http://gcc.gnu.org/bugs/#cxx_rvalbind
   12605   13. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
   12606   14. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
   12607   15. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
   12608   16. http://www.gnu.org/software/classpath/
   12609   17. http://www.eclipse.org/
   12610   18. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/g77/News.html
   12611   19. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Alpha-Built-in-Functions.html
   12612   20. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
   12613   21. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Comparison-of-the-two-descriptions.html
   12614   22. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
   12615   23. http://gcc.gnu.org/gcc-3.4/mips-abi.html
   12616   24. http://gcc.gnu.org/gcc-3.4/powerpc-abi.html
   12617   25. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
   12618   26. https://gcc.gnu.org/bugzilla/buglist.cgi?short_desc_type=notregexp&short_desc=%5C%5B3%5C.4.*%5BRr%5Degression&target_milestone=3.4.0&bug_status=RESOLVED&resolution=FIXED
   12619   27. https://gcc.gnu.org/PR10129
   12620   28. https://gcc.gnu.org/PR14576
   12621   29. https://gcc.gnu.org/PR14760
   12622   30. https://gcc.gnu.org/PR14671
   12623   31. https://gcc.gnu.org/PR15093
   12624   32. https://gcc.gnu.org/PR15178
   12625   33. https://gcc.gnu.org/PR12753
   12626   34. https://gcc.gnu.org/PR13985
   12627   35. https://gcc.gnu.org/PR14810
   12628   36. https://gcc.gnu.org/PR14883
   12629   37. https://gcc.gnu.org/PR15044
   12630   38. https://gcc.gnu.org/PR15057
   12631   39. https://gcc.gnu.org/PR15064
   12632   40. https://gcc.gnu.org/PR15142
   12633   41. https://gcc.gnu.org/PR15159
   12634   42. https://gcc.gnu.org/PR15165
   12635   43. https://gcc.gnu.org/PR15193
   12636   44. https://gcc.gnu.org/PR15209
   12637   45. https://gcc.gnu.org/PR15227
   12638   46. https://gcc.gnu.org/PR15285
   12639   47. https://gcc.gnu.org/PR15299
   12640   48. https://gcc.gnu.org/PR15329
   12641   49. https://gcc.gnu.org/PR15550
   12642   50. https://gcc.gnu.org/PR15554
   12643   51. https://gcc.gnu.org/PR15640
   12644   52. https://gcc.gnu.org/PR15666
   12645   53. https://gcc.gnu.org/PR15696
   12646   54. https://gcc.gnu.org/PR15701
   12647   55. https://gcc.gnu.org/PR15761
   12648   56. https://gcc.gnu.org/PR15829
   12649   57. https://gcc.gnu.org/PR14538
   12650   58. https://gcc.gnu.org/PR12391
   12651   59. https://gcc.gnu.org/PR14649
   12652   60. https://gcc.gnu.org/PR15004
   12653   61. https://gcc.gnu.org/PR15749
   12654   62. https://gcc.gnu.org/PR10646
   12655   63. https://gcc.gnu.org/PR12077
   12656   64. https://gcc.gnu.org/PR13598
   12657   65. https://gcc.gnu.org/PR14211
   12658   66. https://gcc.gnu.org/PR14220
   12659   67. https://gcc.gnu.org/PR14245
   12660   68. https://gcc.gnu.org/PR14340
   12661   69. https://gcc.gnu.org/PR14600
   12662   70. https://gcc.gnu.org/PR14668
   12663   71. https://gcc.gnu.org/PR14775
   12664   72. https://gcc.gnu.org/PR14821
   12665   73. https://gcc.gnu.org/PR14930
   12666   74. https://gcc.gnu.org/PR14932
   12667   75. https://gcc.gnu.org/PR14950
   12668   76. https://gcc.gnu.org/PR14962
   12669   77. https://gcc.gnu.org/PR14975
   12670   78. https://gcc.gnu.org/PR15002
   12671   79. https://gcc.gnu.org/PR15025
   12672   80. https://gcc.gnu.org/PR15046
   12673   81. https://gcc.gnu.org/PR15069
   12674   82. https://gcc.gnu.org/PR15074
   12675   83. https://gcc.gnu.org/PR15083
   12676   84. https://gcc.gnu.org/PR15096
   12677   85. https://gcc.gnu.org/PR15287
   12678   86. https://gcc.gnu.org/PR15317
   12679   87. https://gcc.gnu.org/PR15337
   12680   88. https://gcc.gnu.org/PR15361
   12681   89. https://gcc.gnu.org/PR15412
   12682   90. https://gcc.gnu.org/PR15427
   12683   91. https://gcc.gnu.org/PR15471
   12684   92. https://gcc.gnu.org/PR15503
   12685   93. https://gcc.gnu.org/PR15507
   12686   94. https://gcc.gnu.org/PR15542
   12687   95. https://gcc.gnu.org/PR15565
   12688   96. https://gcc.gnu.org/PR15625
   12689   97. https://gcc.gnu.org/PR15629
   12690   98. https://gcc.gnu.org/PR15742
   12691   99. https://gcc.gnu.org/PR15775
   12692  100. https://gcc.gnu.org/PR15821
   12693  101. https://gcc.gnu.org/PR15862
   12694  102. https://gcc.gnu.org/PR15875
   12695  103. https://gcc.gnu.org/PR15877
   12696  104. https://gcc.gnu.org/PR15947
   12697  105. https://gcc.gnu.org/PR16020
   12698  106. https://gcc.gnu.org/PR16154
   12699  107. https://gcc.gnu.org/PR16174
   12700  108. https://gcc.gnu.org/PR14315
   12701  109. https://gcc.gnu.org/PR15151
   12702  110. https://gcc.gnu.org/PR7993
   12703  111. https://gcc.gnu.org/PR15228
   12704  112. https://gcc.gnu.org/PR15345
   12705  113. https://gcc.gnu.org/PR15945
   12706  114. https://gcc.gnu.org/PR15526
   12707  115. https://gcc.gnu.org/PR14690
   12708  116. https://gcc.gnu.org/PR15112
   12709  117. https://gcc.gnu.org/PR15067
   12710  118. https://gcc.gnu.org/PR1963
   12711  119. https://gcc.gnu.org/PR15717
   12712  120. https://gcc.gnu.org/PR14782
   12713  121. https://gcc.gnu.org/PR14828
   12714  122. https://gcc.gnu.org/PR15202
   12715  123. https://gcc.gnu.org/PR14610
   12716  124. https://gcc.gnu.org/PR14813
   12717  125. https://gcc.gnu.org/PR14857
   12718  126. https://gcc.gnu.org/PR15598
   12719  127. https://gcc.gnu.org/PR15653
   12720  128. https://gcc.gnu.org/PR15189
   12721  129. https://gcc.gnu.org/PR15331
   12722  130. https://gcc.gnu.org/PR16144
   12723  131. https://gcc.gnu.org/PR16176
   12724  132. https://gcc.gnu.org/PR11591
   12725  133. https://gcc.gnu.org/PR12028
   12726  134. https://gcc.gnu.org/PR14478
   12727  135. https://gcc.gnu.org/PR14567
   12728  136. https://gcc.gnu.org/PR14715
   12729  137. https://gcc.gnu.org/PR14902
   12730  138. https://gcc.gnu.org/PR14924
   12731  139. https://gcc.gnu.org/PR14960
   12732  140. https://gcc.gnu.org/PR15106
   12733  141. https://gcc.gnu.org/PR16026
   12734  142. https://gcc.gnu.org/PR15191
   12735  143. https://gcc.gnu.org/PR15662
   12736  144. https://gcc.gnu.org/PR15054
   12737  145. https://gcc.gnu.org/PR15783
   12738  146. https://gcc.gnu.org/PR15626
   12739  147. https://gcc.gnu.org/PR14326
   12740  148. https://gcc.gnu.org/PR14723
   12741  149. https://gcc.gnu.org/PR15290
   12742  150. https://gcc.gnu.org/PR15250
   12743  151. https://gcc.gnu.org/PR15551
   12744  152. https://gcc.gnu.org/PR8309
   12745  153. https://gcc.gnu.org/PR13250
   12746  154. https://gcc.gnu.org/PR13803
   12747  155. https://gcc.gnu.org/PR14093
   12748  156. https://gcc.gnu.org/PR14457
   12749  157. https://gcc.gnu.org/PR14542
   12750  158. https://gcc.gnu.org/PR15100
   12751  159. https://gcc.gnu.org/PR15296
   12752  160. https://gcc.gnu.org/PR15396
   12753  161. https://gcc.gnu.org/PR15782
   12754  162. https://gcc.gnu.org/PR11610
   12755  163. https://gcc.gnu.org/PR15488
   12756  164. https://gcc.gnu.org/PR15489
   12757  165. https://gcc.gnu.org/PR13928
   12758  166. https://gcc.gnu.org/PR14150
   12759  167. https://gcc.gnu.org/PR14949
   12760  168. https://gcc.gnu.org/PR15123
   12761  169. https://gcc.gnu.org/PR16469
   12762  170. https://gcc.gnu.org/PR16344
   12763  171. https://gcc.gnu.org/PR16842
   12764  172. https://gcc.gnu.org/PR12608
   12765  173. https://gcc.gnu.org/PR14492
   12766  174. https://gcc.gnu.org/PR15461
   12767  175. https://gcc.gnu.org/PR15890
   12768  176. https://gcc.gnu.org/PR16180
   12769  177. https://gcc.gnu.org/PR16224
   12770  178. https://gcc.gnu.org/PR16408
   12771  179. https://gcc.gnu.org/PR16529
   12772  180. https://gcc.gnu.org/PR16698
   12773  181. https://gcc.gnu.org/PR16706
   12774  182. https://gcc.gnu.org/PR16810
   12775  183. https://gcc.gnu.org/PR16851
   12776  184. https://gcc.gnu.org/PR16870
   12777  185. https://gcc.gnu.org/PR16904
   12778  186. https://gcc.gnu.org/PR16905
   12779  187. https://gcc.gnu.org/PR16964
   12780  188. https://gcc.gnu.org/PR17068
   12781  189. https://gcc.gnu.org/PR16366
   12782  190. https://gcc.gnu.org/PR15345
   12783  191. https://gcc.gnu.org/PR16590
   12784  192. https://gcc.gnu.org/PR16693
   12785  193. https://gcc.gnu.org/PR17078
   12786  194. https://gcc.gnu.org/PR13956
   12787  195. https://gcc.gnu.org/PR16684
   12788  196. https://gcc.gnu.org/PR12658
   12789  197. https://gcc.gnu.org/PR13092
   12790  198. https://gcc.gnu.org/PR15320
   12791  199. https://gcc.gnu.org/PR16246
   12792  200. https://gcc.gnu.org/PR16273
   12793  201. https://gcc.gnu.org/PR16401
   12794  202. https://gcc.gnu.org/PR16411
   12795  203. https://gcc.gnu.org/PR16489
   12796  204. https://gcc.gnu.org/PR16618
   12797  205. https://gcc.gnu.org/PR16637
   12798  206. https://gcc.gnu.org/PR16717
   12799  207. https://gcc.gnu.org/PR16813
   12800  208. https://gcc.gnu.org/PR16853
   12801  209. https://gcc.gnu.org/PR16889
   12802  210. https://gcc.gnu.org/PR16959
   12803  211. https://gcc.gnu.org/PR7587
   12804  212. https://gcc.gnu.org/PR16473
   12805  213. https://gcc.gnu.org/PR16478
   12806  214. https://gcc.gnu.org/PR10695
   12807  215. https://gcc.gnu.org/PR16974
   12808  216. https://gcc.gnu.org/PR16298
   12809  217. https://gcc.gnu.org/PR17113
   12810  218. https://gcc.gnu.org/PR14697
   12811  219. https://gcc.gnu.org/PR15869
   12812  220. https://gcc.gnu.org/PR16325
   12813  221. https://gcc.gnu.org/PR16357
   12814  222. https://gcc.gnu.org/PR16380
   12815  223. https://gcc.gnu.org/PR16407
   12816  224. https://gcc.gnu.org/PR16643
   12817  225. https://gcc.gnu.org/PR15927
   12818  226. https://gcc.gnu.org/PR15948
   12819  227. https://gcc.gnu.org/PR17019
   12820  228. https://gcc.gnu.org/PR16130
   12821  229. https://gcc.gnu.org/PR16142
   12822  230. https://gcc.gnu.org/PR16278
   12823  231. https://gcc.gnu.org/PR16414
   12824  232. https://gcc.gnu.org/PR16445
   12825  233. https://gcc.gnu.org/PR16490
   12826  234. https://gcc.gnu.org/PR16683
   12827  235. https://gcc.gnu.org/PR16195
   12828  236. https://gcc.gnu.org/PR16239
   12829  237. https://gcc.gnu.org/PR16199
   12830  238. https://gcc.gnu.org/PR16416
   12831  239. https://gcc.gnu.org/PR16430
   12832  240. https://gcc.gnu.org/PR16379
   12833  241. https://gcc.gnu.org/PR17093
   12834  242. https://gcc.gnu.org/PR17119
   12835  243. https://gcc.gnu.org/PR15928
   12836  244. https://gcc.gnu.org/PR16210
   12837  245. https://gcc.gnu.org/PR15488
   12838  246. https://gcc.gnu.org/PR16250
   12839  247. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.3
   12840  248. https://gcc.gnu.org/PR17369
   12841  249. https://gcc.gnu.org/PR17850
   12842  250. https://gcc.gnu.org/PR13948
   12843  251. https://gcc.gnu.org/PR14492
   12844  252. https://gcc.gnu.org/PR16301
   12845  253. https://gcc.gnu.org/PR16566
   12846  254. https://gcc.gnu.org/PR17023
   12847  255. https://gcc.gnu.org/PR17027
   12848  256. https://gcc.gnu.org/PR17524
   12849  257. https://gcc.gnu.org/PR17826
   12850  258. https://gcc.gnu.org/PR15526
   12851  259. https://gcc.gnu.org/PR16999
   12852  260. https://gcc.gnu.org/PR17503
   12853  261. https://gcc.gnu.org/PR17581
   12854  262. https://gcc.gnu.org/PR18129
   12855  263. https://gcc.gnu.org/PR10975
   12856  264. https://gcc.gnu.org/PR11722
   12857  265. https://gcc.gnu.org/PR14534
   12858  266. https://gcc.gnu.org/PR15172
   12859  267. https://gcc.gnu.org/PR15786
   12860  268. https://gcc.gnu.org/PR16162
   12861  269. https://gcc.gnu.org/PR16612
   12862  270. https://gcc.gnu.org/PR16715
   12863  271. https://gcc.gnu.org/PR16848
   12864  272. https://gcc.gnu.org/PR17132
   12865  273. https://gcc.gnu.org/PR17259
   12866  274. https://gcc.gnu.org/PR17327
   12867  275. https://gcc.gnu.org/PR17393
   12868  276. https://gcc.gnu.org/PR17501
   12869  277. https://gcc.gnu.org/PR17537
   12870  278. https://gcc.gnu.org/PR17585
   12871  279. https://gcc.gnu.org/PR17821
   12872  280. https://gcc.gnu.org/PR17829
   12873  281. https://gcc.gnu.org/PR17851
   12874  282. https://gcc.gnu.org/PR17976
   12875  283. https://gcc.gnu.org/PR18020
   12876  284. https://gcc.gnu.org/PR18093
   12877  285. https://gcc.gnu.org/PR18140
   12878  286. https://gcc.gnu.org/PR17541
   12879  287. https://gcc.gnu.org/PR17853
   12880  288. https://gcc.gnu.org/PR17245
   12881  289. https://gcc.gnu.org/PR17167
   12882  290. https://gcc.gnu.org/PR17277
   12883  291. https://gcc.gnu.org/PR17505
   12884  292. https://gcc.gnu.org/PR17684
   12885  293. https://gcc.gnu.org/PR17384
   12886  294. https://gcc.gnu.org/PR17770
   12887  295. https://gcc.gnu.org/PR11476
   12888  296. https://gcc.gnu.org/PR14064
   12889  297. https://gcc.gnu.org/PR14678
   12890  298. https://gcc.gnu.org/PR15583
   12891  299. https://gcc.gnu.org/PR15790
   12892  300. https://gcc.gnu.org/PR15886
   12893  301. https://gcc.gnu.org/PR16884
   12894  302. https://gcc.gnu.org/PR13841
   12895  303. https://gcc.gnu.org/PR15860
   12896  304. https://gcc.gnu.org/PR17465
   12897  305. https://gcc.gnu.org/PR17469
   12898  306. https://gcc.gnu.org/PR18138
   12899  307. https://gcc.gnu.org/PR15498
   12900  308. https://gcc.gnu.org/PR15747
   12901  309. https://gcc.gnu.org/PR16406
   12902  310. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.4
   12903  311. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.5
   12904  312. https://gcc.gnu.org/PR24688
   12905  313. https://gcc.gnu.org/PR17188
   12906  314. https://gcc.gnu.org/PR20187
   12907  315. https://gcc.gnu.org/PR21873
   12908  316. https://gcc.gnu.org/PR21899
   12909  317. https://gcc.gnu.org/PR22061
   12910  318. https://gcc.gnu.org/PR22208
   12911  319. https://gcc.gnu.org/PR22458
   12912  320. https://gcc.gnu.org/PR22589
   12913  321. https://gcc.gnu.org/PR24101
   12914  322. https://gcc.gnu.org/PR10611
   12915  323. https://gcc.gnu.org/PR13377
   12916  324. https://gcc.gnu.org/PR16002
   12917  325. https://gcc.gnu.org/PR17413
   12918  326. https://gcc.gnu.org/PR17609
   12919  327. https://gcc.gnu.org/PR17618
   12920  328. https://gcc.gnu.org/PR18124
   12921  329. https://gcc.gnu.org/PR18155
   12922  330. https://gcc.gnu.org/PR18177
   12923  331. https://gcc.gnu.org/PR18368
   12924  332. https://gcc.gnu.org/PR18378
   12925  333. https://gcc.gnu.org/PR18466
   12926  334. https://gcc.gnu.org/PR18512
   12927  335. https://gcc.gnu.org/PR18545
   12928  336. https://gcc.gnu.org/PR18738
   12929  337. https://gcc.gnu.org/PR18803
   12930  338. https://gcc.gnu.org/PR19004
   12931  339. https://gcc.gnu.org/PR19208
   12932  340. https://gcc.gnu.org/PR19253
   12933  341. https://gcc.gnu.org/PR19608
   12934  342. https://gcc.gnu.org/PR19884
   12935  343. https://gcc.gnu.org/PR20153
   12936  344. https://gcc.gnu.org/PR20563
   12937  345. https://gcc.gnu.org/PR20789
   12938  346. https://gcc.gnu.org/PR21336
   12939  347. https://gcc.gnu.org/PR21768
   12940  348. https://gcc.gnu.org/PR21853
   12941  349. https://gcc.gnu.org/PR21903
   12942  350. https://gcc.gnu.org/PR21983
   12943  351. https://gcc.gnu.org/PR21987
   12944  352. https://gcc.gnu.org/PR22153
   12945  353. https://gcc.gnu.org/PR22172
   12946  354. https://gcc.gnu.org/PR21286
   12947  355. https://gcc.gnu.org/PR22233
   12948  356. https://gcc.gnu.org/PR22508
   12949  357. https://gcc.gnu.org/PR22545
   12950  358. https://gcc.gnu.org/PR23528
   12951  359. https://gcc.gnu.org/PR23550
   12952  360. https://gcc.gnu.org/PR23586
   12953  361. https://gcc.gnu.org/PR23624
   12954  362. https://gcc.gnu.org/PR23639
   12955  363. https://gcc.gnu.org/PR23797
   12956  364. https://gcc.gnu.org/PR23965
   12957  365. https://gcc.gnu.org/PR24052
   12958  366. https://gcc.gnu.org/PR24580
   12959  367. https://gcc.gnu.org/PR24267
   12960  368. https://gcc.gnu.org/PR17810
   12961  369. https://gcc.gnu.org/PR17860
   12962  370. https://gcc.gnu.org/PR21709
   12963  371. https://gcc.gnu.org/PR21964
   12964  372. https://gcc.gnu.org/PR22167
   12965  373. https://gcc.gnu.org/PR22619
   12966  374. https://gcc.gnu.org/PR23241
   12967  375. https://gcc.gnu.org/PR23478
   12968  376. https://gcc.gnu.org/PR24470
   12969  377. https://gcc.gnu.org/PR24950
   12970  378. https://gcc.gnu.org/PR14400
   12971  379. https://gcc.gnu.org/PR14940
   12972  380. https://gcc.gnu.org/PR20239
   12973  381. https://gcc.gnu.org/PR15220
   12974  382. https://gcc.gnu.org/PR19275
   12975  383. https://gcc.gnu.org/PR21888
   12976  384. https://gcc.gnu.org/PR15342
   12977  385. https://gcc.gnu.org/PR23985
   12978  386. https://gcc.gnu.org/PR16719
   12979  387. https://gcc.gnu.org/PR21723
   12980  388. https://gcc.gnu.org/PR21841
   12981  389. https://gcc.gnu.org/PR23644
   12982  390. https://gcc.gnu.org/PR24718
   12983  391. https://gcc.gnu.org/PR18421
   12984  392. https://gcc.gnu.org/PR20621
   12985  393. https://gcc.gnu.org/PR18583
   12986  394. https://gcc.gnu.org/PR20191
   12987  395. https://gcc.gnu.org/PR22083
   12988  396. https://gcc.gnu.org/PR23070
   12989  397. https://gcc.gnu.org/PR23404
   12990  398. https://gcc.gnu.org/PR23539
   12991  399. https://gcc.gnu.org/PR24102
   12992  400. https://gcc.gnu.org/PR24465
   12993  401. https://gcc.gnu.org/PR19933
   12994  402. https://gcc.gnu.org/PR21889
   12995  403. https://gcc.gnu.org/PR19300
   12996  404. https://gcc.gnu.org/PR20301
   12997  405. https://gcc.gnu.org/PR20673
   12998  406. https://gcc.gnu.org/PR18582
   12999  407. https://gcc.gnu.org/PR19340
   13000  408. https://gcc.gnu.org/PR21716
   13001  409. https://gcc.gnu.org/PR24315
   13002  410. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.6
   13003  411. https://gcc.gnu.org/onlinedocs/
   13004  412. mailto:gcc-help (a] gcc.gnu.org
   13005  413. mailto:gcc (a] gcc.gnu.org
   13006  414. https://gcc.gnu.org/lists.html
   13007  415. https://www.fsf.org/
   13008  416. https://gcc.gnu.org/about.html
   13009  417. http://validator.w3.org/check/referer
   13010 ======================================================================
   13011 http://gcc.gnu.org/gcc-3.3/index.html
   13012 
   13013                              GCC 3.3 Release Series
   13014 
   13015    May 03, 2005
   13016 
   13017    The [1]GNU project and the GCC developers are pleased to announce the
   13018    release of GCC 3.3.6.
   13019 
   13020    This release is a bug-fix release, containing fixes for regressions in
   13021    GCC 3.3.5 relative to previous releases of GCC.
   13022 
   13023    This release is the last of the series 3.3.x.
   13024 
   13025    The GCC 3.3 release series includes numerous [2]new features,
   13026    improvements, bug fixes, and other changes, thanks to an [3]amazing
   13027    group of volunteers.
   13028 
   13029    This release series is no longer maintained.
   13030 
   13031 Release History
   13032 
   13033    GCC 3.3.6
   13034           May 3, 2005 ([4]changes)
   13035 
   13036    GCC 3.3.5
   13037           September 30, 2004 ([5]changes)
   13038 
   13039    GCC 3.3.4
   13040           May 31, 2004 ([6]changes)
   13041 
   13042    GCC 3.3.3
   13043           February 14, 2004 ([7]changes)
   13044 
   13045    GCC 3.3.2
   13046           October 16, 2003 ([8]changes)
   13047 
   13048    GCC 3.3.1
   13049           August 8, 2003 ([9]changes)
   13050 
   13051    GCC 3.3
   13052           May 14, 2003 ([10]changes)
   13053 
   13054 References and Acknowledgements
   13055 
   13056    GCC used to stand for the GNU C Compiler, but since the compiler
   13057    supports several other languages aside from C, it now stands for the
   13058    GNU Compiler Collection.
   13059 
   13060    A list of [11]successful builds is updated as new information becomes
   13061    available.
   13062 
   13063    The GCC developers would like to thank the numerous people that have
   13064    contributed new features, improvements, bug fixes, and other changes as
   13065    well as test results to GCC. This [12]amazing group of volunteers is
   13066    what makes GCC successful.
   13067 
   13068    For additional information about GCC please refer to the [13]GCC
   13069    project web site or contact the [14]GCC development mailing list.
   13070 
   13071    To obtain GCC please use [15]our mirror sites, or our CVS server.
   13072 
   13073 
   13074     For questions related to the use of GCC, please consult these web
   13075     pages and the [16]GCC manuals. If that fails, the
   13076     [17]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   13077     web pages and the development of GCC are welcome on our developer
   13078     list at [18]gcc (a] gcc.gnu.org. All of [19]our lists have public
   13079     archives.
   13080 
   13081    Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
   13082    distribution of this entire article is permitted in any medium,
   13083    provided this notice is preserved.
   13084 
   13085    These pages are [21]maintained by the GCC team. Last modified
   13086    2018-09-30[22].
   13087 
   13088 References
   13089 
   13090    1. http://www.gnu.org/
   13091    2. http://gcc.gnu.org/gcc-3.3/changes.html
   13092    3. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   13093    4. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.6
   13094    5. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.5
   13095    6. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.4
   13096    7. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.3
   13097    8. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.2
   13098    9. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.1
   13099   10. http://gcc.gnu.org/gcc-3.3/changes.html
   13100   11. http://gcc.gnu.org/gcc-3.3/buildstat.html
   13101   12. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   13102   13. http://gcc.gnu.org/index.html
   13103   14. mailto:gcc (a] gcc.gnu.org
   13104   15. http://gcc.gnu.org/mirrors.html
   13105   16. https://gcc.gnu.org/onlinedocs/
   13106   17. mailto:gcc-help (a] gcc.gnu.org
   13107   18. mailto:gcc (a] gcc.gnu.org
   13108   19. https://gcc.gnu.org/lists.html
   13109   20. https://www.fsf.org/
   13110   21. https://gcc.gnu.org/about.html
   13111   22. http://validator.w3.org/check/referer
   13112 ======================================================================
   13113 http://gcc.gnu.org/gcc-3.3/changes.html
   13114 
   13115                              GCC 3.3 Release Series
   13116                         Changes, New Features, and Fixes
   13117 
   13118    The latest release in the 3.3 release series is [1]GCC 3.3.6.
   13119 
   13120 Caveats
   13121 
   13122      * The preprocessor no longer accepts multi-line string literals. They
   13123        were deprecated in 3.0, 3.1, and 3.2.
   13124      * The preprocessor no longer supports the -A- switch when appearing
   13125        alone. -A- followed by an assertion is still supported.
   13126      * Support for all the systems [2]obsoleted in GCC 3.1 has been
   13127        removed from GCC 3.3. See below for a [3]list of systems which are
   13128        obsoleted in this release.
   13129      * Checking for null format arguments has been decoupled from the rest
   13130        of the format checking mechanism. Programs which use the format
   13131        attribute may regain this functionality by using the new [4]nonnull
   13132        function attribute. Note that all functions for which GCC has a
   13133        built-in format attribute, an appropriate built-in nonnull
   13134        attribute is also applied.
   13135      * The DWARF (version 1) debugging format has been deprecated and will
   13136        be removed in a future version of GCC. Version 2 of the DWARF
   13137        debugging format will continue to be supported for the foreseeable
   13138        future.
   13139      * The C and Objective-C compilers no longer accept the "Naming Types"
   13140        extension (typedef foo = bar); it was already unavailable in C++.
   13141        Code which uses it will need to be changed to use the "typeof"
   13142        extension instead: typedef typeof(bar) foo. (We have removed this
   13143        extension without a period of deprecation because it has caused the
   13144        compiler to crash since version 3.0 and no one noticed until very
   13145        recently. Thus we conclude it is not in widespread use.)
   13146      * The -traditional C compiler option has been removed. It was
   13147        deprecated in 3.1 and 3.2. (Traditional preprocessing remains
   13148        available.) The <varargs.h> header, used for writing variadic
   13149        functions in traditional C, still exists but will produce an error
   13150        message if used.
   13151      * GCC 3.3.1 automatically places zero-initialized variables in the
   13152        .bss section on some operating systems. Versions of GNU Emacs up to
   13153        (and including) 21.3 will not work correctly when using this
   13154        optimization; you can use -fno-zero-initialized-in-bss to disable
   13155        it.
   13156 
   13157 General Optimizer Improvements
   13158 
   13159      * A new scheme for accurately describing processor pipelines, the
   13160        [5]DFA scheduler, has been added.
   13161      * Pavel Nejedly, Charles University Prague, has contributed new file
   13162        format used by the edge coverage profiler (-fprofile-arcs).
   13163        The new format is robust and diagnoses common mistakes where
   13164        profiles from different versions (or compilations) of the program
   13165        are combined resulting in nonsensical profiles and slow code to
   13166        produced with profile feedback. Additionally this format allows
   13167        extra data to be gathered. Currently, overall statistics are
   13168        produced helping optimizers to identify hot spots of a program
   13169        globally replacing the old intra-procedural scheme and resulting in
   13170        better code. Note that the gcov tool from older GCC versions will
   13171        not be able to parse the profiles generated by GCC 3.3 and vice
   13172        versa.
   13173      * Jan Hubicka, SuSE Labs, has contributed a new superblock formation
   13174        pass enabled using -ftracer. This pass simplifies the control flow
   13175        of functions allowing other optimizations to do better job.
   13176        He also contributed the function reordering pass
   13177        (-freorder-functions) to optimize function placement using profile
   13178        feedback.
   13179 
   13180 New Languages and Language specific improvements
   13181 
   13182   C/ObjC/C++
   13183 
   13184      * The preprocessor now accepts directives within macro arguments. It
   13185        processes them just as if they had not been within macro arguments.
   13186      * The separate ISO and traditional preprocessors have been completely
   13187        removed. The front end handles either type of preprocessed output
   13188        if necessary.
   13189      * In C99 mode preprocessor arithmetic is done in the precision of the
   13190        target's intmax_t, as required by that standard.
   13191      * The preprocessor can now copy comments inside macros to the output
   13192        file when the macro is expanded. This feature, enabled using the
   13193        -CC option, is intended for use by applications which place
   13194        metadata or directives inside comments, such as lint.
   13195      * The method of constructing the list of directories to be searched
   13196        for header files has been revised. If a directory named by a -I
   13197        option is a standard system include directory, the option is
   13198        ignored to ensure that the default search order for system
   13199        directories and the special treatment of system header files are
   13200        not defeated.
   13201      * A few more [6]ISO C99 features now work correctly.
   13202      * A new function attribute, nonnull, has been added which allows
   13203        pointer arguments to functions to be specified as requiring a
   13204        non-null value. The compiler currently uses this information to
   13205        issue a warning when it detects a null value passed in such an
   13206        argument slot.
   13207      * A new type attribute, may_alias, has been added. Accesses to
   13208        objects with types with this attribute are not subjected to
   13209        type-based alias analysis, but are instead assumed to be able to
   13210        alias any other type of objects, just like the char type.
   13211 
   13212   C++
   13213 
   13214      * Type based alias analysis has been implemented for C++ aggregate
   13215        types.
   13216 
   13217   Objective-C
   13218 
   13219      * Generate an error if Objective-C objects are passed by value in
   13220        function and method calls.
   13221      * When -Wselector is used, check the whole list of selectors at the
   13222        end of compilation, and emit a warning if a @selector() is not
   13223        known.
   13224      * Define __NEXT_RUNTIME__ when compiling for the NeXT runtime.
   13225      * No longer need to include objc/objc-class.h to compile self calls
   13226        in class methods (NeXT runtime only).
   13227      * New -Wundeclared-selector option.
   13228      * Removed selector bloating which was causing object files to be 10%
   13229        bigger on average (GNU runtime only).
   13230      * Using at run time @protocol() objects has been fixed in certain
   13231        situations (GNU runtime only).
   13232      * Type checking has been fixed and improved in many situations
   13233        involving protocols.
   13234 
   13235   Java
   13236 
   13237      * The java.sql and javax.sql packages now implement the JDBC 3.0 (JDK
   13238        1.4) API.
   13239      * The JDK 1.4 assert facility has been implemented.
   13240      * The bytecode interpreter is now direct threaded and thus faster.
   13241 
   13242   Fortran
   13243 
   13244      * Fortran improvements are listed in [7]the Fortran documentation.
   13245 
   13246   Ada
   13247 
   13248      * Ada tasking now works with glibc 2.3.x threading libraries.
   13249 
   13250 New Targets and Target Specific Improvements
   13251 
   13252      * The following changes have been made to the HP-PA port:
   13253           + The port now defaults to scheduling for the PA8000 series of
   13254             processors.
   13255           + Scheduling support for the PA7300 processor has been added.
   13256           + The 32-bit port now supports weak symbols under HP-UX 11.
   13257           + The handling of initializers and finalizers has been improved
   13258             under HP-UX 11. The 64-bit port no longer uses collect2.
   13259           + Dwarf2 EH support has been added to the 32-bit GNU/Linux port.
   13260           + ABI fixes to correct the passing of small structures by value.
   13261      * The SPARC, HP-PA, SH4, and x86/pentium ports have been converted to
   13262        use the DFA processor pipeline description.
   13263      * The following NetBSD configurations for the SuperH processor family
   13264        have been added:
   13265           + SH3, big-endian, sh-*-netbsdelf*
   13266           + SH3, little-endian, shle-*-netbsdelf*
   13267           + SH5, SHmedia, big-endian, 32-bit default, sh5-*-netbsd*
   13268           + SH5, SHmedia, little-endian, 32-bit default, sh5le-*-netbsd*
   13269           + SH5, SHmedia, big-endian, 64-bit default, sh64-*-netbsd*
   13270           + SH5, SHmedia, little-endian, 64-bit default, sh64le-*-netbsd*
   13271      * The following changes have been made to the IA-32/x86-64 port:
   13272           + SSE2 and 3dNOW! intrinsics are now supported.
   13273           + Support for thread local storage has been added to the IA-32
   13274             and x86-64 ports.
   13275           + The x86-64 port has been significantly improved.
   13276      * The following changes have been made to the MIPS port:
   13277           + All configurations now accept the -mabi switch. Note that you
   13278             will need appropriate multilibs for this option to work
   13279             properly.
   13280           + ELF configurations will always pass an ABI flag to the
   13281             assembler, except when the MIPS EABI is selected.
   13282           + -mabi=64 no longer selects MIPS IV code.
   13283           + The -mcpu option, which was deprecated in 3.1 and 3.2, has
   13284             been removed from this release.
   13285           + -march now changes the core ISA level. In previous releases,
   13286             it would change the use of processor-specific extensions, but
   13287             would leave the core ISA unchanged. For example, mips64-elf
   13288             -march=r8000 will now generate MIPS IV code.
   13289           + Under most configurations, -mipsN now acts as a synonym for
   13290             -march.
   13291           + There are some new preprocessor macros to describe the -march
   13292             and -mtune settings. See the documentation of those options
   13293             for details.
   13294           + Support for the NEC VR-Series processors has been added. This
   13295             includes the 54xx, 5500, and 41xx series.
   13296           + Support for the Sandcraft sr71k processor has been added.
   13297      * The following changes have been made to the S/390 port:
   13298           + Support to build the Java runtime libraries has been added.
   13299             Java is now enabled by default on s390-*-linux* and
   13300             s390x-*-linux* targets.
   13301           + Multilib support for the s390x-*-linux* target has been added;
   13302             this allows to build 31-bit binaries using the -m31 option.
   13303           + Support for thread local storage has been added.
   13304           + Inline assembler code may now use the 'Q' constraint to
   13305             specify memory operands without index register.
   13306           + Various platform-specific performance improvements have been
   13307             implemented; in particular, the compiler now uses the BRANCH
   13308             ON COUNT family of instructions and makes more frequent use of
   13309             the TEST UNDER MASK family of instructions.
   13310      * The following changes have been made to the PowerPC port:
   13311           + Support for IBM Power4 processor added.
   13312           + Support for Motorola e500 SPE added.
   13313           + Support for AIX 5.2 added.
   13314           + Function and Data sections now supported on AIX.
   13315           + Sibcall optimizations added.
   13316      * The support for H8 Tiny is added to the H8/300 port with -mn.
   13317 
   13318 Obsolete Systems
   13319 
   13320    Support for a number of older systems has been declared obsolete in GCC
   13321    3.3. Unless there is activity to revive them, the next release of GCC
   13322    will have their sources permanently removed.
   13323 
   13324    All configurations of the following processor architectures have been
   13325    declared obsolete:
   13326      * Matsushita MN10200, mn10200-*-*
   13327      * Motorola 88000, m88k-*-*
   13328      * IBM ROMP, romp-*-*
   13329 
   13330    Also, some individual systems have been obsoleted:
   13331      * Alpha
   13332           + Interix, alpha*-*-interix*
   13333           + Linux libc1, alpha*-*-linux*libc1*
   13334           + Linux ECOFF, alpha*-*-linux*ecoff*
   13335      * ARM
   13336           + Generic a.out, arm*-*-aout*
   13337           + Conix, arm*-*-conix*
   13338           + "Old ABI," arm*-*-oabi
   13339           + StrongARM/COFF, strongarm-*-coff*
   13340      * HPPA (PA-RISC)
   13341           + Generic OSF, hppa1.0-*-osf*
   13342           + Generic BSD, hppa1.0-*-bsd*
   13343           + HP/UX versions 7, 8, and 9, hppa1.[01]-*-hpux[789]*
   13344           + HiUX, hppa*-*-hiux*
   13345           + Mach Lites, hppa*-*-lites*
   13346      * Intel 386 family
   13347           + Windows NT 3.x, i?86-*-win32
   13348      * MC68000 family
   13349           + HP systems, m68000-hp-bsd* and m68k-hp-bsd*
   13350           + Sun systems, m68000-sun-sunos*, m68k-sun-sunos*, and
   13351             m68k-sun-mach*
   13352           + AT&T systems, m68000-att-sysv*
   13353           + Atari systems, m68k-atari-sysv*
   13354           + Motorola systems, m68k-motorola-sysv*
   13355           + NCR systems, m68k-ncr-sysv*
   13356           + Plexus systems, m68k-plexus-sysv*
   13357           + Commodore systems, m68k-cbm-sysv*
   13358           + Citicorp TTI, m68k-tti-*
   13359           + Unos, m68k-crds-unos*
   13360           + Concurrent RTU, m68k-ccur-rtu*
   13361           + Linux a.out, m68k-*-linux*aout*
   13362           + Linux libc1, m68k-*-linux*libc1*
   13363           + pSOS, m68k-*-psos*
   13364      * MIPS
   13365           + Generic ECOFF, mips*-*-ecoff*
   13366           + SINIX, mips-sni-sysv4
   13367           + Orion RTEMS, mips64orion-*-rtems*
   13368      * National Semiconductor 32000
   13369           + OpenBSD, ns32k-*-openbsd*
   13370      * POWER (aka RS/6000) and PowerPC
   13371           + AIX versions 1, 2, and 3, rs6000-ibm-aix[123]*
   13372           + Bull BOSX, rs6000-bull-bosx
   13373           + Generic Mach, rs6000-*-mach*
   13374           + Generic SysV, powerpc*-*-sysv*
   13375           + Linux libc1, powerpc*-*-linux*libc1*
   13376      * Sun SPARC
   13377           + Generic a.out, sparc-*-aout*, sparclet-*-aout*,
   13378             sparclite-*-aout*, and sparc86x-*-aout*
   13379           + NetBSD a.out, sparc-*-netbsd*aout*
   13380           + Generic BSD, sparc-*-bsd*
   13381           + ChorusOS, sparc-*-chorusos*
   13382           + Linux a.out, sparc-*-linux*aout*
   13383           + Linux libc1, sparc-*-linux*libc1*
   13384           + LynxOS, sparc-*-lynxos*
   13385           + Solaris on HAL hardware, sparc-hal-solaris2*
   13386           + SunOS versions 3 and 4, sparc-*-sunos[34]*
   13387      * NEC V850
   13388           + RTEMS, v850-*-rtems*
   13389      * VAX
   13390           + VMS, vax-*-vms*
   13391 
   13392 Documentation improvements
   13393 
   13394 Other significant improvements
   13395 
   13396      * Almost all front-end dependencies in the compiler have been
   13397        separated out into a set of language hooks. This should make adding
   13398        a new front end clearer and easier.
   13399      * One effect of removing the separate preprocessor is a small
   13400        increase in the robustness of the compiler in general, and the
   13401        maintainability of target descriptions. Previously target-specific
   13402        built-in macros and others, such as __FAST_MATH__, had to be
   13403        handled with so-called specs that were hard to maintain. Often they
   13404        would fail to behave properly when conflicting options were
   13405        supplied on the command line, and define macros in the user's
   13406        namespace even when strict ISO compliance was requested.
   13407        Integrating the preprocessor has cleanly solved these issues.
   13408      * The Makefile suite now supports redirection of make install by
   13409        means of the variable DESTDIR.
   13410      __________________________________________________________________
   13411 
   13412 GCC 3.3
   13413 
   13414    Detailed release notes for the GCC 3.3 release follow.
   13415 
   13416   Bug Fixes
   13417 
   13418     bootstrap failures
   13419 
   13420      * [8]10140 cross compiler build failures: missing __mempcpy (DUP:
   13421        [9]10198,[10]10338)
   13422 
   13423     Internal compiler errors (multi-platform)
   13424 
   13425      * [11]3581 large string causes segmentation fault in cc1
   13426      * [12]4382 __builtin_{set,long}jmp with -O3 can crash the compiler
   13427      * [13]5533 (c++) ICE when processing std::accumulate(begin, end,
   13428        init, invalid_op)
   13429      * [14]6387 -fpic -gdwarf-2 -g1 combination gives ICE in dwarf2out
   13430      * [15]6412 (c++) ICE in retrieve_specialization
   13431      * [16]6620 (c++) partial template specialization causes an ICE
   13432        (segmentation fault)
   13433      * [17]6663 (c++) ICE with attribute aligned
   13434      * [18]7068 ICE with incomplete types
   13435      * [19]7083 (c++) ICE using -gstabs with dodgy class derivation
   13436      * [20]7647 (c++) ICE when data member has the name of the enclosing
   13437        class
   13438      * [21]7675 ICE in fixup_var_refs_1
   13439      * [22]7718 'complex' template instantiation causes ICE
   13440      * [23]8116 (c++) ICE in member template function
   13441      * [24]8358 (ada) Ada compiler accesses freed memory, crashes
   13442      * [25]8511 (c++) ICE: (hopefully) reproducible cc1plus segmentation
   13443        fault
   13444      * [26]8564 (c++) ICE in find_function_data, in function.c
   13445      * [27]8660 (c++) template overloading ICE in tsubst_expr, in cp/pt.c
   13446      * [28]8766 (c++) ICE after failed initialization of static template
   13447        variable
   13448      * [29]8803 ICE in instantiate_virtual_regs_1, in function.c
   13449      * [30]8846 (c++) ICE after diagnostic if fr_FR@euro locale is set
   13450      * [31]8906 (c++) ICE (Segmentation fault) when parsing nested-class
   13451        definition
   13452      * [32]9216 (c++) ICE on missing template parameter
   13453      * [33]9261 (c++) ICE in arg_assoc, in cp/decl2.c
   13454      * [34]9263 (fortran) ICE caused by invalid PARAMETER in implied DO
   13455        loop
   13456      * [35]9429 (c++) ICE in template instantiation with a pointered new
   13457        operator
   13458      * [36]9516 Internal error when using a big array
   13459      * [37]9600 (c++) ICE with typedefs in template class
   13460      * [38]9629 (c++) virtual inheritance segfault
   13461      * [39]9672 (c++) ICE: Error reporting routines re-entered
   13462      * [40]9749 (c++) ICE in write_expression on invalid function
   13463        prototype
   13464      * [41]9794 (fortran) ICE: floating point exception during constant
   13465        folding
   13466      * [42]9829 (c++) Missing colon in nested namespace usage causes ICE
   13467      * [43]9916 (c++) ICE with noreturn function in ?: statement
   13468      * [44]9936 ICE with local function and variable-length 2d array
   13469      * [45]10262 (c++) cc1plus crashes with large generated code
   13470      * [46]10278 (c++) ICE in parser for invalid code
   13471      * [47]10446 (c++) ICE on definition of nonexistent member function of
   13472        nested class in a class template
   13473      * [48]10451 (c++) ICE in grokdeclarator on spurious mutable
   13474        declaration
   13475      * [49]10506 (c++) ICE in build_new at cp/init.c with
   13476        -fkeep-inline-functions and multiple inheritance
   13477      * [50]10549 (c++) ICE in store_bit_field on bitfields that exceed the
   13478        precision of the declared type
   13479 
   13480     Optimization bugs
   13481 
   13482      * [51]2001 Inordinately long compile times in reload CSE regs
   13483      * [52]2391 Exponential compilation time explosion in combine
   13484      * [53]2960 Duplicate loop conditions even with -Os
   13485      * [54]4046 redundant conditional branch
   13486      * [55]6405 Loop-unrolling related performance regressions
   13487      * [56]6798 very long compile time with large case-statement
   13488      * [57]6871 const objects shouldn't be moved to .bss
   13489      * [58]6909 problem w/ -Os on modified loop-2c.c test case
   13490      * [59]7189 gcc -O2 -Wall does not print ``control reaches end of
   13491        non-void function'' warning
   13492      * [60]7642 optimization problem with signbit()
   13493      * [61]8634 incorrect code for inlining of memcpy under -O2
   13494      * [62]8750 Cygwin prolog generation erroneously emitting __alloca as
   13495        regular function call
   13496 
   13497     C front end
   13498 
   13499      * [63]2161 long if-else cascade overflows parser stack
   13500      * [64]4319 short accepted on typedef'd char
   13501      * [65]8602 incorrect line numbers in warning messages when using
   13502        inline functions
   13503      * [66]9177 -fdump-translation-unit: C front end deletes function_decl
   13504        AST nodes and breaks debugging dumps
   13505      * [67]9853 miscompilation of non-constant structure initializer
   13506 
   13507     c++ compiler and library
   13508 
   13509      * [68]45 legal template specialization code is rejected (DUP:
   13510        [69]3784)
   13511      * [70]764 lookup failure: friend operator and dereferencing a pointer
   13512        and templates (DUP: [71]5116)
   13513      * [72]2862 gcc accepts invalid explicit instantiation syntax (DUP:
   13514        2863)
   13515      * [73]3663 G++ doesn't check access control during template
   13516        instantiation
   13517      * [74]3797 gcc fails to emit explicit specialization of a template
   13518        member
   13519      * [75]3948 Two destructors are called when no copy destructor is
   13520        defined (ABI change)
   13521      * [76]4137 Conversion operator within template is not accepted
   13522      * [77]4361 bogus ambiguity taking the address of a member template
   13523      * [78]4802 g++ accepts illegal template code (access to private
   13524        member; DUP: [79]5837)
   13525      * [80]4803 inline function is used but never defined, and g++ does
   13526        not object
   13527      * [81]5094 Partial specialization cannot be friend?
   13528      * [82]5730 complex<double>::norm() -- huge slowdown from egcs-2.91.66
   13529      * [83]6713 Regression wrt 3.0.4: g++ -O2 leads to seg fault at run
   13530        time
   13531      * [84]7015 certain __asm__ constructs rejected
   13532      * [85]7086 compile time regression (quadratic behavior in
   13533        fixup_var_refs)
   13534      * [86]7099 G++ doesn't set the noreturn attribute on std::exit and
   13535        std::abort
   13536      * [87]7247 copy constructor missing when inlining enabled (invalid
   13537        optimization?)
   13538      * [88]7441 string array initialization compilation time regression
   13539        from seconds to minutes
   13540      * [89]7768 __PRETTY_FUNCTION__ for template destructor is wrong
   13541      * [90]7804 bad printing of floating point constant in warning message
   13542      * [91]8099 Friend classes and template specializations
   13543      * [92]8117 member function pointers and multiple inheritance
   13544      * [93]8205 using declaration and multiple inheritance
   13545      * [94]8645 unnecessary non-zero checks in stl_tree.h
   13546      * [95]8724 explicit destructor call for incomplete class allowed
   13547      * [96]8805 compile time regression with many member variables
   13548      * [97]8691 -O3 and -fno-implicit-templates are incompatible
   13549      * [98]8700 unhelpful error message for binding temp to reference
   13550      * [99]8724 explicit destructor call for incomplete class allowed
   13551      * [100]8949 numeric_limits<>::denorm_min() and is_iec559 problems
   13552      * [101]9016 Failure to consistently constant fold "constant" C++
   13553        objects
   13554      * [102]9053 g++ confused about ambiguity of overloaded function
   13555        templates
   13556      * [103]9152 undefined virtual thunks
   13557      * [104]9182 basic_filebuf<> does not report errors in codecvt<>::out
   13558      * [105]9297 data corruption due to codegen bug (when copying.)
   13559      * [106]9318 i/ostream::operator>>/<<(streambuf*) broken
   13560      * [107]9320 Incorrect usage of traits_type::int_type in stdio_filebuf
   13561      * [108]9400 bogus -Wshadow warning: shadowed declaration of this in
   13562        local classes
   13563      * [109]9424 i/ostream::operator>>/<<(streambuf*) drops characters
   13564      * [110]9425 filebuf::pbackfail broken (DUP: [111]9439)
   13565      * [112]9474 GCC freezes in compiling a weird code mixing <iostream>
   13566        and <iostream.h>
   13567      * [113]9548 Incorrect results from setf(ios::fixed) and precision(-1)
   13568        [114][DR 231]
   13569      * [115]9555 ostream inserters fail to set badbit on exception
   13570      * [116]9561 ostream inserters rethrow exception of wrong type
   13571      * [117]9563 ostream::sentry returns true after a failed preparation
   13572      * [118]9582 one-definition rule violation in std::allocator
   13573      * [119]9622 __PRETTY_FUNCTION__ incorrect in template destructors
   13574      * [120]9683 bug in initialization chains for static const variables
   13575        from template classes
   13576      * [121]9791 -Woverloaded-virtual reports hiding of destructor
   13577      * [122]9817 collate::compare doesn't handle nul characters
   13578      * [123]9825 filebuf::sputbackc breaks sbumpc
   13579      * [124]9826 operator>>(basic_istream, basic_string) fails to compile
   13580        with custom traits
   13581      * [125]9924 Multiple using statements for builtin functions not
   13582        allowed
   13583      * [126]9946 destructor is not called for temporary object
   13584      * [127]9964 filebuf::close() sometimes fails to close file
   13585      * [128]9988 filebuf::overflow writes EOF to file
   13586      * [129]10033 optimization breaks polymorphic references w/ typeid
   13587        operator
   13588      * [130]10097 filebuf::underflow drops characters
   13589      * [131]10132 filebuf destructor can throw exceptions
   13590      * [132]10180 gcc fails to warn about non-inlined function
   13591      * [133]10199 method parametrized by template does not work everywhere
   13592      * [134]10300 use of array-new (nothrow) in segfaults on NULL return
   13593      * [135]10427 Stack corruption with variable-length automatic arrays
   13594        and virtual destructors
   13595      * [136]10503 Compilation never stops in fixed_type_or_null
   13596 
   13597     Objective-C
   13598 
   13599      * [137]5956 selectors aren't matched properly when added to the
   13600        selector table
   13601 
   13602     Fortran compiler and library
   13603 
   13604      * [138]1832 list directed i/o overflow hangs, -fbounds-check doesn't
   13605        detect
   13606      * [139]3924 g77 generates code that is rejected by GAS if COFF debug
   13607        info requested
   13608      * [140]5634 doc: explain that configure --prefix=~/... does not work
   13609      * [141]6367 multiple repeat counts confuse namelist read into array
   13610      * [142]6491 Logical operations error on logicals when using
   13611        -fugly-logint
   13612      * [143]6742 Generation of C++ Prototype for FORTRAN and extern "C"
   13613      * [144]7113 Failure of g77.f-torture/execute/f90-intrinsic-bit.f -Os
   13614        on irix6.5
   13615      * [145]7236 OPEN(...,RECL=nnn,...) without ACCESS='DIRECT' should
   13616        assume a direct access file
   13617      * [146]7278 g77 "bug"; the executable misbehaves (with -O2
   13618        -fno-automatic)
   13619      * [147]7384 DATE_AND_TIME milliseconds field inactive on Windows
   13620      * [148]7388 Incorrect output with 0-based array of characters
   13621      * [149]8587 Double complex zero ** double precision number -> NaN
   13622        instead of zero
   13623      * [150]9038 -ffixed-line-length-none -x f77-cpp-input gives: Warning:
   13624        unknown register name line-length-none
   13625      * [151]10197 Direct access files not unformatted by default
   13626 
   13627     Java compiler and library
   13628 
   13629      * [152]6005 gcj fails to build rhug on alpha
   13630      * [153]6389 System.getProperty("") should always throw an
   13631        IllegalArgumentException
   13632      * [154]6576 java.util.ResourceBundle.getResource ignores locale
   13633      * [155]6652 new java.io.File("").getCanonicalFile() throws exception
   13634      * [156]7060 getMethod() doesn't search super interface
   13635      * [157]7073 bytecode interpreter gives wrong answer for interface
   13636        getSuperclass()
   13637      * [158]7180 possible bug in
   13638        javax.naming.spi.NamingManager.getPlusPath()
   13639      * [159]7416 java.security startup refs "GNU libgcj.security"
   13640      * [160]7570 Runtime.exec with null envp: child doesn't inherit parent
   13641        env (DUP: [161]7578)
   13642      * [162]7611 Internal error while compiling libjava with -O
   13643      * [163]7709 NullPointerException in _Jv_ResolvePoolEntry
   13644      * [164]7766 ZipInputStream.available returns 0 immediately after
   13645        construction
   13646      * [165]7785 Calendar.getTimeInMillis/setTimeInMillis should be public
   13647      * [166]7786 TimeZone.getDSTSavings() from JDK1.4 not implemented
   13648      * [167]8142 '$' in class names vs. dlopen 'dynamic string tokens'
   13649      * [168]8234 ZipInputStream chokes when InputStream.read() returns
   13650        small chunks
   13651      * [169]8415 reflection bug: exception info for Method
   13652      * [170]8481 java.Random.nextInt(int) may return negative
   13653      * [171]8593 Error reading GZIPped files with BufferedReader
   13654      * [172]8759 java.beans.Introspector has no flushCaches() or
   13655        flushFromCaches() methods
   13656      * [173]8997 spin() calls Thread.sleep
   13657      * [174]9253 on win32, java.io.File.listFiles("C:\\") returns pwd
   13658        instead of the root content of C:
   13659      * [175]9254 java::lang::Object::wait(), threads-win32.cc returns
   13660        wrong return codes
   13661      * [176]9271 Severe bias in java.security.SecureRandom
   13662 
   13663     Ada compiler and library
   13664 
   13665      * [177]6767 make gnatlib-shared fails on -laddr2line
   13666      * [178]9911 gnatmake fails to link when GCC configured with
   13667        --with-sjlj-exceptions=yes
   13668      * [179]10020 Can't bootstrap gcc on AIX with Ada enabled
   13669      * [180]10546 Ada tasking not working on Red Hat 9
   13670 
   13671     preprocessor
   13672 
   13673      * [181]7029 preprocessor should ignore #warning with -M
   13674 
   13675     ARM-specific
   13676 
   13677      * [182]2903 [arm] Optimization bug with long long arithmetic
   13678      * [183]7873 arm-linux-gcc fails when assigning address to a bit field
   13679 
   13680     FreeBSD-specific
   13681 
   13682      * [184]7680 float functions undefined in math.h/cmath with #define
   13683        _XOPEN_SOURCE
   13684 
   13685     HP-UX or HP-PA-specific
   13686 
   13687      * [185]8705 [HP-PA] ICE in emit_move_insn_1, in expr.c
   13688      * [186]9986 [HP-UX] Incorrect transformation of fputs_unlocked to
   13689        fputc_unlocked
   13690      * [187]10056 [HP-PA] ICE at -O2 when building c++ code from doxygen
   13691 
   13692     m68hc11-specific
   13693 
   13694      * [188]6744 Bad assembler code generated: reference to pseudo
   13695        register z
   13696      * [189]7361 Internal compiler error in reload_cse_simplify_operands,
   13697        in reload1.c
   13698 
   13699     MIPS-specific
   13700 
   13701      * [190]9496 [mips-linux] bug in optimizer?
   13702 
   13703     PowerPC-specific
   13704 
   13705      * [191]7067 -Os with -mcpu=powerpc optimizes for speed (?) instead of
   13706        space
   13707      * [192]8480 reload ICEs for LAPACK code on powerpc64-linux
   13708      * [193]8784 [AIX] Internal compiler error in simplify_gen_subreg
   13709      * [194]10315 [powerpc] ICE: in extract_insn, in recog.c
   13710 
   13711     SPARC-specific
   13712 
   13713      * [195]10267 (documentation) Wrong build instructions for
   13714        *-*-solaris2*
   13715 
   13716     x86-specific (Intel/AMD)
   13717 
   13718      * [196]7916 ICE in instantiate_virtual_register_1
   13719      * [197]7926 (c++) i486 instructions in header files make c++ programs
   13720        crash on i386
   13721      * [198]8555 ICE in gen_split_1231
   13722      * [199]8994 ICE with -O -march=pentium4
   13723      * [200]9426 ICE with -fssa -funroll-loops -fprofile-arcs
   13724      * [201]9806 ICE in inline assembly with -fPIC flag
   13725      * [202]10077 gcc -msse2 generates movd to move dwords between xmm
   13726        regs
   13727      * [203]10233 64-bit comparison only comparing bottom 32-bits
   13728      * [204]10286 type-punning doesn't work with __m64 and -O
   13729      * [205]10308 [x86] ICE with -O -fgcse or -O2
   13730      __________________________________________________________________
   13731 
   13732 GCC 3.3.1
   13733 
   13734   Bug Fixes
   13735 
   13736    This section lists the problem reports (PRs) from GCC's bug tracking
   13737    system that are known to be fixed in the 3.3.1 release. This list might
   13738    not be complete (that is, it is possible that some PRs that have been
   13739    fixed are not listed here).
   13740 
   13741     Bootstrap failures
   13742 
   13743      * [206]11272 [Solaris] make bootstrap fails while building libstdc++
   13744 
   13745     Internal compiler errors (multi-platform)
   13746 
   13747      * [207]5754 ICE on invalid nested template class
   13748      * [208]6597 ICE in set_mem_alias_set compiling Qt with -O2 on ia64
   13749        and --enable-checking
   13750      * [209]6949 (c++) ICE in tsubst_decl, in cp/pt.c
   13751      * [210]7053 (c++) ICE when declaring a function already defined as a
   13752        friend method of a template class
   13753      * [211]8164 (c++) ICE when using different const expressions as
   13754        template parameter
   13755      * [212]8384 (c++) ICE in is_base_type, in dwarf2out.c
   13756      * [213]9559 (c++) ICE with invalid initialization of a static const
   13757      * [214]9649 (c++) ICE in finish_member_declaration, in cp/semantics.c
   13758        when redeclaring a static member variable
   13759      * [215]9864 (fortran) ICE in add_abstract_origin_attribute, in
   13760        dwarfout.c with -g -O -finline-functions
   13761      * [216]10432 (c++) ICE in poplevel, in cp/decl.c
   13762      * [217]10475 ICE in subreg_highpart_offset for code with long long
   13763      * [218]10635 (c++) ICE when dereferencing an incomplete type casted
   13764        from a void pointer
   13765      * [219]10661 (c++) ICE in instantiate_decl, in cp/pt.c while
   13766        instantiating static member variables
   13767      * [220]10700 ICE in copy_to_mode_reg on 64-bit targets
   13768      * [221]10712 (c++) ICE in constructor_name_full, in cp/decl2.c
   13769      * [222]10796 (c++) ICE when defining an enum with two values: -1 and
   13770        MAX_INT_64BIT
   13771      * [223]10890 ICE in merge_assigned_reloads building Linux 2.4.2x
   13772        sched.c
   13773      * [224]10939 (c++) ICE with template code
   13774      * [225]10956 (c++) ICE when specializing a template member function
   13775        of a template class, in tsubst, in cp/pt.c
   13776      * [226]11041 (c++) ICE: const myclass &x = *x; (when operator*()
   13777        defined)
   13778      * [227]11059 (c++) ICE with empty union
   13779      * [228]11083 (c++) ICE in commit_one_edge_insertion, in cfgrtl.c with
   13780        -O2 -fnon-call-exceptions
   13781      * [229]11105 (c++) ICE in mangle_conv_op_name_for_type
   13782      * [230]11149 (c++) ICE on error when instantiation with call function
   13783        of a base type
   13784      * [231]11228 (c++) ICE on new-expression using array operator new and
   13785        default-initialization
   13786      * [232]11282 (c++) Infinite memory usage after syntax error
   13787      * [233]11301 (fortran) ICE with -fno-globals
   13788      * [234]11308 (c++) ICE when using an enum type name as if it were a
   13789        class or namespace
   13790      * [235]11473 (c++) ICE with -gstabs when empty struct inherits from
   13791        an empty struct
   13792      * [236]11503 (c++) ICE when instantiating template with ADDR_EXPR
   13793      * [237]11513 (c++) ICE in push_template_decl_real, in cp/pt.c:
   13794        template member functions
   13795 
   13796     Optimization bugs
   13797 
   13798      * [238]11198 -O2 -frename-registers generates wrong code (aliasing
   13799        problem)
   13800      * [239]11304 Wrong code production with -fomit-frame-pointer
   13801      * [240]11381 volatile memory access optimized away
   13802      * [241]11536 [strength-reduce] -O2 optimization produces wrong code
   13803      * [242]11557 constant folding bug generates wrong code
   13804 
   13805     C front end
   13806 
   13807      * [243]5897 No warning for statement after return
   13808      * [244]11279 DWARF-2 output mishandles large enums
   13809 
   13810     Preprocessor bugs
   13811 
   13812      * [245]11022 no warning for non-compatible macro redefinition
   13813 
   13814     C++ compiler and library
   13815 
   13816      * [246]2330 static_cast<>() to a private base is allowed
   13817      * [247]5388 Incorrect message "operands to ?: have different types"
   13818      * [248]5390 Libiberty fails to demangle multi-digit template
   13819        parameters
   13820      * [249]7877 Incorrect parameter passing to specializations of member
   13821        function templates
   13822      * [250]9393 Anonymous namespaces and compiling the same file twice
   13823      * [251]10032 -pedantic converts some errors to warnings
   13824      * [252]10468 const typeof(x) is non-const, but only in templates
   13825      * [253]10527 confused error message with "new int()" parameter
   13826        initializer
   13827      * [254]10679 parameter MIN_INLINE_INSNS is not honored
   13828      * [255]10682 gcc chokes on a typedef for an enum inside a class
   13829        template
   13830      * [256]10689 pow(std::complex(0),1/3) returns (nan, nan) instead of
   13831        0.
   13832      * [257]10845 template member function (with nested template as
   13833        parameter) cannot be called anymore if another unrelated template
   13834        member function is defined
   13835      * [258]10849 Cannot define an out-of-class specialization of a
   13836        private nested template class
   13837      * [259]10888 Suppress -Winline warnings for system headers
   13838      * [260]10929 -Winline warns about functions for which no definition
   13839        is visible
   13840      * [261]10931 valid conversion static_cast<const unsigned
   13841        int&>(lvalue-of-type-int) is rejected
   13842      * [262]10940 Bad code with explicit specialization
   13843      * [263]10968 If member function implicitly instantiated, explicit
   13844        instantiation of class fails to instantiate it
   13845      * [264]10990 Cannot convert with dynamic_cast<> to a private base
   13846        class from within a member function
   13847      * [265]11039 Bad interaction between implicit typename deprecation
   13848        and friendship
   13849      * [266]11062 (libstdc++) avoid __attribute__ ((unused)); say
   13850        "__unused__" instead
   13851      * [267]11095 C++ iostream manipulator causes segfault when called
   13852        with negative argument
   13853      * [268]11098 g++ doesn't emit complete debugging information for
   13854        local variables in destructors
   13855      * [269]11137 GNU/Linux shared library constructors not called unless
   13856        there's one global object
   13857      * [270]11154 spurious ambiguity report for template class
   13858        specialization
   13859      * [271]11329 Compiler cannot find user defined implicit typecast
   13860      * [272]11332 Spurious error with casts in ?: expression
   13861      * [273]11431 static_cast behavior with subclasses when default
   13862        constructor available
   13863      * [274]11528 money_get facet does not accept "$.00" as valid
   13864      * [275]11546 Type lookup problems in out-of-line definition of a
   13865        class doubly nested from a template class
   13866      * [276]11567 C++ code containing templated member function with same
   13867        name as pure virtual member function results in linking failure
   13868      * [277]11645 Failure to deal with using and private inheritance
   13869 
   13870     Java compiler and library
   13871 
   13872      * [278]5179 Qualified static field access doesn't initialize its
   13873        class
   13874      * [279]8204 gcj -O2 to native reorders certain instructions
   13875        improperly
   13876      * [280]10838 java.io.ObjectInputStream syntax error
   13877      * [281]10886 The RMI registry that comes with GCJ does not work
   13878        correctly
   13879      * [282]11349 JNDI URL context factories not located correctly
   13880 
   13881     x86-specific (Intel/AMD)
   13882 
   13883      * [283]4823 ICE on inline assembly code
   13884      * [284]8878 miscompilation with -O and SSE
   13885      * [285]9815 (c++ library) atomicity.h - fails to compile with -O3
   13886        -masm=intel
   13887      * [286]10402 (inline assembly) [x86] ICE in merge_assigned_reloads,
   13888        in reload1.c
   13889      * [287]10504 ICE with SSE2 code and -O3 -mcpu=pentium4 -msse2
   13890      * [288]10673 ICE for x86-64 on freebsd libc vfprintf.c source
   13891      * [289]11044 [x86] out of range loop instructions for FP code on K6
   13892      * [290]11089 ICE: instantiate_virtual_regs_lossage while using SSE
   13893        built-ins
   13894      * [291]11420 [x86_64] gcc generates invalid asm code when "-O -fPIC"
   13895        is used
   13896 
   13897     SPARC- or Solaris- specific
   13898 
   13899      * [292]9362 solaris 'as' dies when fed .s and "-gstabs"
   13900      * [293]10142 [SPARC64] gcc produces wrong code when passing
   13901        structures by value
   13902      * [294]10663 New configure check aborts with Sun tools.
   13903      * [295]10835 combinatorial explosion in scheduler on HyperSPARC
   13904      * [296]10876 ICE in calculate_giv_inc when building KDE
   13905      * [297]10955 wrong code at -O3 for structure argument in context of
   13906        structure return
   13907      * [298]11018 -mcpu=ultrasparc busts tar-1.13.25
   13908      * [299]11556 [sparc64] ICE in gen_reg_rtx() while compiling 2.6.x
   13909        Linux kernel
   13910 
   13911     ia64 specific
   13912 
   13913      * [300]10907 gcc violates the ia64 ABI (GP must be preserved)
   13914      * [301]11320 scheduler bug (in machine depended reorganization pass)
   13915      * [302]11599 bug with conditional and __builtin_prefetch
   13916 
   13917     PowerPC specific
   13918 
   13919      * [303]9745 [powerpc] gcc mis-compiles libmcrypt (alias problem
   13920        during loop)
   13921      * [304]10871 error in rs6000_stack_info save_size computation
   13922      * [305]11440 gcc mis-compiles c++ code (libkhtml) with -O2, -fno-gcse
   13923        cures it
   13924 
   13925     m68k-specific
   13926 
   13927      * [306]7594 [m68k] ICE on legal code associated with simplify-rtx
   13928      * [307]10557 [m68k] ICE in subreg_offset_representable_p
   13929      * [308]11054 [m68k] ICE in reg_overlap_mentioned_p
   13930 
   13931     ARM-specific
   13932 
   13933      * [309]10834 [arm] GCC 3.3 still generates incorrect instructions for
   13934        functions with __attribute__ ((interrupt ("IRQ")))
   13935      * [310]10842 [arm] Clobbered link register is copied to pc under
   13936        certain circumstances
   13937      * [311]11052 [arm] noce_process_if_block() can lose REG_INC notes
   13938      * [312]11183 [arm] ICE in change_address_1 (3.3) / subreg_hard_regno
   13939        (3.4)
   13940 
   13941     MIPS-specific
   13942 
   13943      * [313]11084 ICE in propagate_one_insn, in flow.c
   13944 
   13945     SH-specific
   13946 
   13947      * [314]10331 can't compile c++ part of gcc cross compiler for sh-elf
   13948      * [315]10413 [SH] ICE in reload_cse_simplify_operands, in reload1.c
   13949      * [316]11096 i686-linux to sh-linux cross compiler fails to compile
   13950        C++ files
   13951 
   13952     GNU/Linux (or Hurd?) specific
   13953 
   13954      * [317]2873 Bogus fixinclude of stdio.h from glibc 2.2.3
   13955 
   13956     UnixWare specific
   13957 
   13958      * [318]3163 configure bug: gcc/aclocal.m4 mmap test fails on UnixWare
   13959        7.1.1
   13960 
   13961     Cygwin (or mingw) specific
   13962 
   13963      * [319]5287 ICE with dllimport attribute
   13964      * [320]10148 [MingW/CygWin] Compiler dumps core
   13965 
   13966     DJGPP specific
   13967 
   13968      * [321]8787 GCC fails to emit .intel_syntax when invoked with
   13969        -masm=intel on DJGPP
   13970 
   13971     Darwin (and MacOS X) specific
   13972 
   13973      * [322]10900 trampolines crash
   13974 
   13975     Documentation
   13976 
   13977      * [323]1607 (c++) Format attributes on methods undocumented
   13978      * [324]4252 Invalid option `-fdump-translation-unit'
   13979      * [325]4490 Clarify restrictions on -m96bit-long-double,
   13980        -m128bit-long-double
   13981      * [326]10355 document an issue with regparm attribute on some systems
   13982        (e.g. Solaris)
   13983      * [327]10726 (fortran) Documentation for function "IDate Intrinsic
   13984        (Unix)" is wrong
   13985      * [328]10805 document bug in old version of Sun assembler
   13986      * [329]10815 warn against GNU binutils on AIX
   13987      * [330]10877 document need for newer binutils on i?86-*-linux-gnu
   13988      * [331]11280 Manual incorrect with respect to -freorder-blocks
   13989      * [332]11466 Document -mlittle-endian and its restrictions for the
   13990        sparc64 port
   13991 
   13992     Testsuite bugs (compiler itself is not affected)
   13993 
   13994      * [333]10737 newer bison causes g++.dg/parse/crash2.C to incorrectly
   13995        report failure
   13996      * [334]10810 gcc-3.3 fails make check: buffer overrun in
   13997        test_demangle.c
   13998      __________________________________________________________________
   13999 
   14000 GCC 3.3.2
   14001 
   14002   Bug Fixes
   14003 
   14004    This section lists the problem reports (PRs) from GCC's bug tracker
   14005    that are known to be fixed in the 3.3.2 release. This list might not be
   14006    complete (that is, it is possible that some PRs that have been fixed
   14007    are not listed here).
   14008 
   14009     Bootstrap failures and problems
   14010 
   14011      * [335]8336 [SCO5] bootstrap config still tries to use COFF options
   14012      * [336]9330 [alpha-osf] Bootstrap failure on Compaq Tru64 with
   14013        --enable-threads=posix
   14014      * [337]9631 [hppa64-linux] gcc-3.3 fails to bootstrap
   14015      * [338]9877 fixincludes makes a bad sys/byteorder.h on svr5 (UnixWare
   14016        7.1.1)
   14017      * [339]11687 xstormy16-elf build fails in libf2c
   14018      * [340]12263 [SGI IRIX] bootstrap fails during compile of
   14019        libf2c/libI77/backspace.c
   14020      * [341]12490 buffer overflow in scan-decls.c (during Solaris 9
   14021        fix-header processing)
   14022 
   14023     Internal compiler errors (multi-platform)
   14024 
   14025      * [342]7277 Casting integers to vector types causes ICE
   14026      * [343]7939 (c++) ICE on invalid function template specialization
   14027      * [344]11063 (c++) ICE on parsing initialization list of const array
   14028        member
   14029      * [345]11207 ICE with negative index in array element designator
   14030      * [346]11522 (fortran) g77 dwarf-2 ICE in
   14031        add_abstract_origin_attribute
   14032      * [347]11595 (c++) ICE on duplicate label definition
   14033      * [348]11646 (c++) ICE in commit_one_edge_insertion with
   14034        -fnon-call-exceptions -fgcse -O
   14035      * [349]11665 ICE in struct initializer when taking address
   14036      * [350]11852 (c++) ICE with bad struct initializer.
   14037      * [351]11878 (c++) ICE in cp_expr_size
   14038      * [352]11883 ICE with any -O on mercury-generated C code
   14039      * [353]11991 (c++) ICE in cxx_incomplete_type_diagnostic, in
   14040        cp/typeck2.c when applying typeid operator to template template
   14041        parameter
   14042      * [354]12146 ICE in lookup_template_function, in cp/pt.c
   14043      * [355]12215 ICE in make_label_edge with -fnon-call-exceptions
   14044        -fno-gcse -O2
   14045      * [356]12369 (c++) ICE with templates and friends
   14046      * [357]12446 ICE in emit_move_insn on complicated array reference
   14047      * [358]12510 ICE in final_scan_insn
   14048      * [359]12544 ICE with large parameters used in nested functions
   14049 
   14050     C and optimization bugs
   14051 
   14052      * [360]9862 spurious warnings with -W -finline-functions
   14053      * [361]10962 lookup_field is a linear search on a linked list (can be
   14054        slow if large struct)
   14055      * [362]11370 -Wunreachable-code gives false complaints
   14056      * [363]11637 invalid assembly with -fnon-call-exceptions
   14057      * [364]11885 Problem with bitfields in packed structs
   14058      * [365]12082 Inappropriate unreachable code warnings
   14059      * [366]12180 Inline optimization fails for variadic function
   14060      * [367]12340 loop unroller + gcse produces wrong code
   14061 
   14062     C++ compiler and library
   14063 
   14064      * [368]3907 nested template parameter collides with member name
   14065      * [369]5293 confusing message when binding a temporary to a reference
   14066      * [370]5296 [DR115] Pointers to functions and to template functions
   14067        behave differently in deduction
   14068      * [371]7939 ICE on function template specialization
   14069      * [372]8656 Unable to assign function with __attribute__ and pointer
   14070        return type to an appropriate variable
   14071      * [373]10147 Confusing error message for invalid template function
   14072        argument
   14073      * [374]11400 std::search_n() makes assumptions about Size parameter
   14074      * [375]11409 issues with using declarations, overloading, and
   14075        built-in functions
   14076      * [376]11740 ctype<wchar_t>::do_is(mask, wchar_t) doesn't handle
   14077        multiple bits in mask
   14078      * [377]11786 operator() call on variable in other namespace not
   14079        recognized
   14080      * [378]11867 static_cast ignores ambiguity
   14081      * [379]11928 bug with conversion operators that are typedefs
   14082      * [380]12114 Uninitialized memory accessed in dtor
   14083      * [381]12163 static_cast + explicit constructor regression
   14084      * [382]12181 Wrong code with comma operator and c++
   14085      * [383]12236 regparm and fastcall messes up parameters
   14086      * [384]12266 incorrect instantiation of unneeded template during
   14087        overload resolution
   14088      * [385]12296 istream::peek() doesn't set eofbit
   14089      * [386]12298 [sjlj exceptions] Stack unwind destroys
   14090        not-yet-constructed object
   14091      * [387]12369 ICE with templates and friends
   14092      * [388]12337 apparently infinite loop in g++
   14093      * [389]12344 stdcall attribute ignored if function returns a pointer
   14094      * [390]12451 missing(late) class forward declaration in cxxabi.h
   14095      * [391]12486 g++ accepts invalid use of a qualified name
   14096 
   14097     x86 specific (Intel/AMD)
   14098 
   14099      * [392]8869 [x86 MMX] ICE with const variable optimization and MMX
   14100        builtins
   14101      * [393]9786 ICE in fixup_abnormal_edges with -fnon-call-exceptions
   14102        -O2
   14103      * [394]11689 g++3.3 emits un-assembleable code for k6 architecture
   14104      * [395]12116 [k6] Invalid assembly output values with X-MAME code
   14105      * [396]12070 ICE converting between double and long double with
   14106        -msoft-float
   14107 
   14108     ia64-specific
   14109 
   14110      * [397]11184 [ia64 hpux] ICE on __builtin_apply building libobjc
   14111      * [398]11535 __builtin_return_address may not work on ia64
   14112      * [399]11693 [ia64] ICE in gen_nop_type
   14113      * [400]12224 [ia64] Thread-local storage doesn't work
   14114 
   14115     PowerPC-specific
   14116 
   14117      * [401]11087 [powerpc64-linux] GCC miscompiles raid1.c from linux
   14118        kernel
   14119      * [402]11319 loop miscompiled on ppc32
   14120      * [403]11949 ICE Compiler segfault with ffmpeg -maltivec code
   14121 
   14122     SPARC-specific
   14123 
   14124      * [404]11662 wrong code for expr. with cast to long long and
   14125        exclusive or
   14126      * [405]11965 invalid assembler code for a shift < 32 operation
   14127      * [406]12301 (c++) stack corruption when a returned expression throws
   14128        an exception
   14129 
   14130     Alpha-specific
   14131 
   14132      * [407]11717 [alpha-linux] unrecognizable insn compiling for.c of
   14133        kernel 2.4.22-pre8
   14134 
   14135     HPUX-specific
   14136 
   14137      * [408]11313 problem with #pragma weak and static inline functions
   14138      * [409]11712 __STDC_EXT__ not defined for C++ by default anymore?
   14139 
   14140     Solaris specific
   14141 
   14142      * [410]12166 Profiled programs crash if PROFDIR is set
   14143 
   14144     Solaris-x86 specific
   14145 
   14146      * [411]12101 i386 Solaris no longer works with GNU as?
   14147 
   14148     Miscellaneous embedded target-specific bugs
   14149 
   14150      * [412]10988 [m32r-elf] wrong blockmove code with -O3
   14151      * [413]11805 [h8300-unknown-coff] [H8300] ICE for simple code with
   14152        -O2
   14153      * [414]11902 [sh4] spec file improperly inserts rpath even when none
   14154        needed
   14155      * [415]11903 [sh4] -pthread fails to link due to error in spec file
   14156        on sh4
   14157      __________________________________________________________________
   14158 
   14159 GCC 3.3.3
   14160 
   14161   Minor features
   14162 
   14163    In addition to the bug fixes documented below, this release contains
   14164    few minor features such as:
   14165      * Support for --with-sysroot
   14166      * Support for automatic detection of executable stacks
   14167      * Support for SSE3 instructions
   14168      * Support for thread local storage debugging under GDB on S390
   14169 
   14170   Bug Fixes
   14171 
   14172    This section lists the problem reports (PRs) from GCC's bug tracker
   14173    that are known to be fixed in the 3.3.3 release. This list might not be
   14174    complete (that is, it is possible that some PRs that have been fixed
   14175    are not listed here).
   14176 
   14177     Bootstrap failures and issues
   14178 
   14179      * [416]11890 Building cross gcc-3.3.1 for sparc-sun-solaris2.6 fails
   14180      * [417]12399 boehm-gc fails (when building a cross compiler): libtool
   14181        unable to infer tagged configuration
   14182      * [418]13068 mklibgcc.in doesn't handle multi-level multilib
   14183        subdirectories properly
   14184 
   14185     Internal compiler errors (multi-platform)
   14186 
   14187      * [419]10060 ICE (stack overflow) on huge file (300k lines) due to
   14188        recursive behaviour of copy_rtx_if_shared, in emit_rtl.c
   14189      * [420]10555 (c++) ICE on undefined template argument
   14190      * [421]10706 (c++) ICE in mangle_class_name_for_template
   14191      * [422]11496 (fortran) error in flow_loops_find when -funroll-loops
   14192        active
   14193      * [423]11741 ICE in pre_insert_copy_insn, in gcse.c
   14194      * [424]12440 GCC crashes during compilation of quicktime4linux 2.0.0
   14195      * [425]12632 (fortran) -fbounds-check ICE
   14196      * [426]12712 (c++) ICE on short legit C++ code fragment with gcc
   14197        3.3.2
   14198      * [427]12726 (c++) ICE (segfault) on trivial code
   14199      * [428]12890 (c++) ICE on compilation of class with throwing method
   14200      * [429]12900 (c++) ICE in rtl_verify_flow_info_1
   14201      * [430]13060 (fortran) ICE in fixup_var_refs_1, in function.c on
   14202        correct code with -O2 -fno-force-mem
   14203      * [431]13289 (c++) ICE in regenerate_decl_from_template on recursive
   14204        template
   14205      * [432]13318 ICE: floating point exception in the loop optimizer
   14206      * [433]13392 (c++) ICE in convert_from_eh_region_ranges_1, in
   14207        except.c
   14208      * [434]13574 (c++) invalid array default initializer in class lets
   14209        gcc consume all memory and die
   14210      * [435]13475 ICE on SIMD variables with partial value initialization
   14211      * [436]13797 (c++) ICE on invalid template parameter
   14212      * [437]13824 (java) gcj SEGV with simple .java program
   14213 
   14214     C and optimization bugs
   14215 
   14216      * [438]8776 loop invariants are not removed (most likely)
   14217      * [439]10339 [sparc,ppc,ppc64] Invalid optimization: replacing
   14218        strncmp by memcmp
   14219      * [440]11350 undefined labels with -Os -fPIC
   14220      * [441]12826 Optimizer removes reference through volatile pointer
   14221      * [442]12500 stabs debug info: void no longer a predefined / builtin
   14222        type
   14223      * [443]12941 builtin-bitops-1.c miscompilation (latent bug)
   14224      * [444]12953 tree inliner bug (in inline_forbidden_p) and fix
   14225      * [445]13041 linux-2.6/sound/core/oss/rate.c miscompiled
   14226      * [446]13507 spurious printf format warning
   14227      * [447]13382 Type information for const pointer disappears during
   14228        optimization.
   14229      * [448]13394 noreturn attribute ignored on recursive invokation
   14230      * [449]13400 Compiled code crashes storing to read-only location
   14231      * [450]13521 Endless loop in calculate_global_regs_live
   14232 
   14233     C++ compiler and library
   14234 
   14235    Some of the bug fixes in this list were made to implement decisions
   14236    that the ISO C++ standards committee has made concerning several defect
   14237    reports (DRs). Links in the list below point to detailed discussion of
   14238    the relevant defect report.
   14239      * [451]2094 unimplemented: use of `ptrmem_cst' in template type
   14240        unification
   14241      * [452]2294 using declaration confusion
   14242      * [453]5050 template instantiation depth exceeds limit: recursion
   14243        problem?
   14244      * [454]9371 Bad exception handling in
   14245        i/ostream::operator>>/<<(streambuf*)
   14246      * [455]9546 bad exception handling in ostream members
   14247      * [456]10081 basic_ios::_M_cache_locale leaves NULL members in the
   14248        face of unknown locales
   14249      * [457]10093 [458][DR 61] Setting failbit in exceptions doesn't work
   14250      * [459]10095 istream::operator>>(int&) sets ios::badbit when
   14251        ios::failbit is set.
   14252      * [460]11554 Warning about reordering of initializers doesn't mention
   14253        location of constructor
   14254      * [461]12297 istream::sentry::sentry() handles eof() incorrectly.
   14255      * [462]12352 Exception safety problems in src/localename.cc
   14256      * [463]12438 Memory leak in locale::combine()
   14257      * [464]12540 Memory leak in locale::locale(const char*)
   14258      * [465]12594 DRs [466]60 [TC] and [467]63 [TC] not implemented
   14259      * [468]12657 Resolution of [469]DR 292 (WP) still unimplemented
   14260      * [470]12696 memory eating infinite loop in diagnostics (error
   14261        recovery problem)
   14262      * [471]12815 Code compiled with optimization behaves unexpectedly
   14263      * [472]12862 Conflicts between typedefs/enums and namespace member
   14264        declarations
   14265      * [473]12926 Wrong value after assignment in initialize list using
   14266        bit-fields
   14267      * [474]12967 Resolution of [475]DR 300 [WP] still unimplemented
   14268      * [476]12971 Resolution of [477]DR 328 [WP] still unimplemented
   14269      * [478]13007 basic_streambuf::pubimbue, imbue wrong
   14270      * [479]13009 Implicitly-defined assignment operator writes to wrong
   14271        memory
   14272      * [480]13057 regparm attribute not applied to destructor
   14273      * [481]13070 -Wformat option ignored in g++
   14274      * [482]13081 forward template declarations in <complex> let inlining
   14275        fail
   14276      * [483]13239 Assertion does not seem to work correctly anymore
   14277      * [484]13262 "xxx is private within this context" when initializing a
   14278        self-contained template class
   14279      * [485]13290 simple typo in concept checking for std::generate_n
   14280      * [486]13323 Template code does not compile in presence of typedef
   14281      * [487]13369 __verify_grouping (and __add_grouping?) not correct
   14282      * [488]13371 infinite loop with packed struct and inlining
   14283      * [489]13445 Template argument replacement "dereferences" a typedef
   14284      * [490]13461 Fails to access protected-ctor from public constant
   14285      * [491]13462 Non-standard-conforming type set::pointer
   14286      * [492]13478 gcc uses wrong constructor to initialize a const
   14287        reference
   14288      * [493]13544 "conflicting types" for enums in different scopes
   14289      * [494]13650 string::compare should not (always) use
   14290        traits_type::length()
   14291      * [495]13683 bogus warning about passing non-PODs through ellipsis
   14292      * [496]13688 Derived class is denied access to protected base class
   14293        member class
   14294      * [497]13774 Member variable cleared in virtual multiple inheritance
   14295        class
   14296      * [498]13884 Protect sstream.tcc from extern template use
   14297 
   14298     Java compiler and library
   14299 
   14300      * [499]10746 [win32] garbage collection crash in GCJ
   14301 
   14302     Objective-C compiler and library
   14303 
   14304      * [500]11433 Crash due to dereferencing null pointer when querying
   14305        protocol
   14306 
   14307     Fortran compiler and library
   14308 
   14309      * [501]12633 logical expression gives incorrect result with
   14310        -fugly-logint option
   14311      * [502]13037 [gcse-lm] g77 generates incorrect code
   14312      * [503]13213 Hex constant problem when compiling with -fugly-logint
   14313        and -ftypeless-boz
   14314 
   14315     x86-specific (Intel/AMD)
   14316 
   14317      * [504]4490 ICE with -m128bit-long-double
   14318      * [505]12292 [x86_64] ICE: RTL check: expected code `const_int', have
   14319        `reg' in make_field_assignment, in combine.c
   14320      * [506]12441 ICE: can't find a register to spill
   14321      * [507]12943 array static-init failure under -fpic, -fPIC
   14322      * [508]13608 Incorrect code with -O3 -ffast-math
   14323 
   14324     PowerPC-specific
   14325 
   14326      * [509]11598 testcase gcc.dg/20020118-1.c fails runtime check of
   14327        __attribute__((aligned(16)))
   14328      * [510]11793 ICE in extract_insn, in recog.c (const_vector's)
   14329      * [511]12467 vmsumubm emitted when vmsummbm appropriate (typo in
   14330        altivec.md)
   14331      * [512]12537 g++ generates writeable text sections
   14332 
   14333     SPARC-specific
   14334 
   14335      * [513]12496 wrong result for __atomic_add(&value, -1) when using -O0
   14336        -m64
   14337      * [514]12865 mprotect call to make trampoline executable may fail
   14338      * [515]13354 ICE in sparc_emit_set_const32
   14339 
   14340     ARM-specific
   14341 
   14342      * [516]10467 [arm] ICE in pre_insert_copy_insn,
   14343 
   14344     ia64-specific
   14345 
   14346      * [517]11226 ICE passing struct arg with two floats
   14347      * [518]11227 ICE for _Complex float, _Complex long double args
   14348      * [519]12644 GCC 3.3.2 fails to compile glibc on ia64
   14349      * [520]13149 build gcc-3.3.2 1305 error:unrecognizable insn
   14350      * Various fixes for libunwind
   14351 
   14352     Alpha-specific
   14353 
   14354      * [521]12654 Incorrect comparison code generated for Alpha
   14355      * [522]12965 SEGV+ICE in cc1plus on alpha-linux with -O2
   14356      * [523]13031 ICE (unrecognizable insn) when building gnome-libs-1.4.2
   14357 
   14358     HPPA-specific
   14359 
   14360      * [524]11634 [hppa] ICE in verify_local_live_at_start, in flow.c
   14361      * [525]12158 [hppa] compilation does not terminate at -O1
   14362 
   14363     S390-specific
   14364 
   14365      * [526]11992 Wrong built-in code for memcmp with length 1<<24: only
   14366        (1<<24)-1 possible for CLCL-Instruction
   14367 
   14368     SH-specific
   14369 
   14370      * [527]9365 segfault in gen_far_branch (config/sh/sh.c)
   14371      * [528]10392 optimizer generates faulty array indexing
   14372      * [529]11322 SH profiler outputs multiple definitions of symbol
   14373      * [530]13069 gcc/config/sh/rtems.h broken
   14374      * [531]13302 Putting a va_list in a struct causes seg fault
   14375      * [532]13585 Incorrect optimization of call to sfunc
   14376      * Fix inappropriately exported libgcc functions from the shared
   14377        library
   14378 
   14379     Other embedded target specific
   14380 
   14381      * [533]8916 [mcore] unsigned char assign gets hosed.
   14382      * [534]11576 [h8300] ICE in change_address_1, in emit-rtl.c
   14383      * [535]13122 [h8300] local variable gets corrupted by function call
   14384        when -fomit-frame-pointer is given
   14385      * [536]13256 [cris] strict_low_part mistreated in delay slots
   14386      * [537]13373 [mcore] optimization with -frerun-cse-after-loop
   14387        -fexpensive-optimizations produces wrong code on mcore
   14388 
   14389     GNU HURD-specific
   14390 
   14391      * [538]12561 gcc/config/t-gnu needs updating to work with
   14392        --with-sysroot
   14393 
   14394     Tru64 Unix specific
   14395 
   14396      * [539]6243 testsuite fails almost all tests due to no libintl in
   14397        LD_LIBRARY_PATH during test.
   14398      * [540]11397 weak aliases broken on Tru64 UNIX
   14399 
   14400     AIX-specific
   14401 
   14402      * [541]12505 build failure due to defines of uchar in cpphash.h and
   14403        sys/types.h
   14404      * [542]13150 WEAK symbols not exported by collect2
   14405 
   14406     IRIX-specific
   14407 
   14408      * [543]12666 fixincludes problem on IRIX 6.5.19m
   14409 
   14410     Solaris-specific
   14411 
   14412      * [544]12969 Including sys/byteorder.h breaks configure checks
   14413 
   14414     Testsuite problems (compiler is not affected)
   14415 
   14416      * [545]10819 testsuite creates CR+LF on compiler version lines in
   14417        test summary files
   14418      * [546]11612 abi_check not finding correct libgcc_s.so.1
   14419 
   14420     Miscellaneous
   14421 
   14422      * [547]13211 using -###, incorrect warnings about unused linker file
   14423        are produced
   14424      __________________________________________________________________
   14425 
   14426 GCC 3.3.4
   14427 
   14428    This is the [548]list of problem reports (PRs) from GCC's bug tracking
   14429    system that are known to be fixed in the 3.3.4 release. This list might
   14430    not be complete (that is, it is possible that some PRs that have been
   14431    fixed are not listed here).
   14432      __________________________________________________________________
   14433 
   14434 GCC 3.3.5
   14435 
   14436    This is the [549]list of problem reports (PRs) from GCC's bug tracking
   14437    system that are known to be fixed in the 3.3.5 release. This list might
   14438    not be complete (that is, it is possible that some PRs that have been
   14439    fixed are not listed here).
   14440      __________________________________________________________________
   14441 
   14442 GCC 3.3.6
   14443 
   14444    This is the [550]list of problem reports (PRs) from GCC's bug tracking
   14445    system that are known to be fixed in the 3.3.6 release. This list might
   14446    not be complete (that is, it is possible that some PRs that have been
   14447    fixed are not listed here).
   14448 
   14449 
   14450     For questions related to the use of GCC, please consult these web
   14451     pages and the [551]GCC manuals. If that fails, the
   14452     [552]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   14453     web pages and the development of GCC are welcome on our developer
   14454     list at [553]gcc (a] gcc.gnu.org. All of [554]our lists have public
   14455     archives.
   14456 
   14457    Copyright (C) [555]Free Software Foundation, Inc. Verbatim copying and
   14458    distribution of this entire article is permitted in any medium,
   14459    provided this notice is preserved.
   14460 
   14461    These pages are [556]maintained by the GCC team. Last modified
   14462    2018-09-30[557].
   14463 
   14464 References
   14465 
   14466    1. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.6
   14467    2. http://gcc.gnu.org/gcc-3.1/changes.html#obsolete_systems
   14468    3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems
   14469    4. http://gcc.gnu.org/gcc-3.3/changes.html#nonnull_attribute
   14470    5. http://gcc.gnu.org/news/dfa.html
   14471    6. http://gcc.gnu.org/c99status.html
   14472    7. https://gcc.gnu.org/onlinedocs/gcc-3.3.6/g77/News.html
   14473    8. https://gcc.gnu.org/PR10140
   14474    9. https://gcc.gnu.org/PR10198
   14475   10. https://gcc.gnu.org/PR10338
   14476   11. https://gcc.gnu.org/PR3581
   14477   12. https://gcc.gnu.org/PR4382
   14478   13. https://gcc.gnu.org/PR5533
   14479   14. https://gcc.gnu.org/PR6387
   14480   15. https://gcc.gnu.org/PR6412
   14481   16. https://gcc.gnu.org/PR6620
   14482   17. https://gcc.gnu.org/PR6663
   14483   18. https://gcc.gnu.org/PR7068
   14484   19. https://gcc.gnu.org/PR7083
   14485   20. https://gcc.gnu.org/PR7647
   14486   21. https://gcc.gnu.org/PR7675
   14487   22. https://gcc.gnu.org/PR7718
   14488   23. https://gcc.gnu.org/PR8116
   14489   24. https://gcc.gnu.org/PR8358
   14490   25. https://gcc.gnu.org/PR8511
   14491   26. https://gcc.gnu.org/PR8564
   14492   27. https://gcc.gnu.org/PR8660
   14493   28. https://gcc.gnu.org/PR8766
   14494   29. https://gcc.gnu.org/PR8803
   14495   30. https://gcc.gnu.org/PR8846
   14496   31. https://gcc.gnu.org/PR8906
   14497   32. https://gcc.gnu.org/PR9216
   14498   33. https://gcc.gnu.org/PR9261
   14499   34. https://gcc.gnu.org/PR9263
   14500   35. https://gcc.gnu.org/PR9429
   14501   36. https://gcc.gnu.org/PR9516
   14502   37. https://gcc.gnu.org/PR9600
   14503   38. https://gcc.gnu.org/PR9629
   14504   39. https://gcc.gnu.org/PR9672
   14505   40. https://gcc.gnu.org/PR9749
   14506   41. https://gcc.gnu.org/PR9794
   14507   42. https://gcc.gnu.org/PR9829
   14508   43. https://gcc.gnu.org/PR9916
   14509   44. https://gcc.gnu.org/PR9936
   14510   45. https://gcc.gnu.org/PR10262
   14511   46. https://gcc.gnu.org/PR10278
   14512   47. https://gcc.gnu.org/PR10446
   14513   48. https://gcc.gnu.org/PR10451
   14514   49. https://gcc.gnu.org/PR10506
   14515   50. https://gcc.gnu.org/PR10549
   14516   51. https://gcc.gnu.org/PR2001
   14517   52. https://gcc.gnu.org/PR2391
   14518   53. https://gcc.gnu.org/PR2960
   14519   54. https://gcc.gnu.org/PR4046
   14520   55. https://gcc.gnu.org/PR6405
   14521   56. https://gcc.gnu.org/PR6798
   14522   57. https://gcc.gnu.org/PR6871
   14523   58. https://gcc.gnu.org/PR6909
   14524   59. https://gcc.gnu.org/PR7189
   14525   60. https://gcc.gnu.org/PR7642
   14526   61. https://gcc.gnu.org/PR8634
   14527   62. https://gcc.gnu.org/PR8750
   14528   63. https://gcc.gnu.org/PR2161
   14529   64. https://gcc.gnu.org/PR4319
   14530   65. https://gcc.gnu.org/PR8602
   14531   66. https://gcc.gnu.org/PR9177
   14532   67. https://gcc.gnu.org/PR9853
   14533   68. https://gcc.gnu.org/PR45
   14534   69. https://gcc.gnu.org/PR3784
   14535   70. https://gcc.gnu.org/PR764
   14536   71. https://gcc.gnu.org/PR5116
   14537   72. https://gcc.gnu.org/PR2862
   14538   73. https://gcc.gnu.org/PR3663
   14539   74. https://gcc.gnu.org/PR3797
   14540   75. https://gcc.gnu.org/PR3948
   14541   76. https://gcc.gnu.org/PR4137
   14542   77. https://gcc.gnu.org/PR4361
   14543   78. https://gcc.gnu.org/PR4802
   14544   79. https://gcc.gnu.org/PR5837
   14545   80. https://gcc.gnu.org/PR4803
   14546   81. https://gcc.gnu.org/PR5094
   14547   82. https://gcc.gnu.org/PR5730
   14548   83. https://gcc.gnu.org/PR6713
   14549   84. https://gcc.gnu.org/PR7015
   14550   85. https://gcc.gnu.org/PR7086
   14551   86. https://gcc.gnu.org/PR7099
   14552   87. https://gcc.gnu.org/PR7247
   14553   88. https://gcc.gnu.org/PR7441
   14554   89. https://gcc.gnu.org/PR7768
   14555   90. https://gcc.gnu.org/PR7804
   14556   91. https://gcc.gnu.org/PR8099
   14557   92. https://gcc.gnu.org/PR8117
   14558   93. https://gcc.gnu.org/PR8205
   14559   94. https://gcc.gnu.org/PR8645
   14560   95. https://gcc.gnu.org/PR8724
   14561   96. https://gcc.gnu.org/PR8805
   14562   97. https://gcc.gnu.org/PR8691
   14563   98. https://gcc.gnu.org/PR8700
   14564   99. https://gcc.gnu.org/PR8724
   14565  100. https://gcc.gnu.org/PR8949
   14566  101. https://gcc.gnu.org/PR9016
   14567  102. https://gcc.gnu.org/PR9053
   14568  103. https://gcc.gnu.org/PR9152
   14569  104. https://gcc.gnu.org/PR9182
   14570  105. https://gcc.gnu.org/PR9297
   14571  106. https://gcc.gnu.org/PR9318
   14572  107. https://gcc.gnu.org/PR9320
   14573  108. https://gcc.gnu.org/PR9400
   14574  109. https://gcc.gnu.org/PR9424
   14575  110. https://gcc.gnu.org/PR9425
   14576  111. https://gcc.gnu.org/PR9439
   14577  112. https://gcc.gnu.org/PR9474
   14578  113. https://gcc.gnu.org/PR9548
   14579  114. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#231
   14580  115. https://gcc.gnu.org/PR9555
   14581  116. https://gcc.gnu.org/PR9561
   14582  117. https://gcc.gnu.org/PR9563
   14583  118. https://gcc.gnu.org/PR9582
   14584  119. https://gcc.gnu.org/PR9622
   14585  120. https://gcc.gnu.org/PR9683
   14586  121. https://gcc.gnu.org/PR9791
   14587  122. https://gcc.gnu.org/PR9817
   14588  123. https://gcc.gnu.org/PR9825
   14589  124. https://gcc.gnu.org/PR9826
   14590  125. https://gcc.gnu.org/PR9924
   14591  126. https://gcc.gnu.org/PR9946
   14592  127. https://gcc.gnu.org/PR9964
   14593  128. https://gcc.gnu.org/PR9988
   14594  129. https://gcc.gnu.org/PR10033
   14595  130. https://gcc.gnu.org/PR10097
   14596  131. https://gcc.gnu.org/PR10132
   14597  132. https://gcc.gnu.org/PR10180
   14598  133. https://gcc.gnu.org/PR10199
   14599  134. https://gcc.gnu.org/PR10300
   14600  135. https://gcc.gnu.org/PR10427
   14601  136. https://gcc.gnu.org/PR10503
   14602  137. https://gcc.gnu.org/PR5956
   14603  138. https://gcc.gnu.org/PR1832
   14604  139. https://gcc.gnu.org/PR3924
   14605  140. https://gcc.gnu.org/PR5634
   14606  141. https://gcc.gnu.org/PR6367
   14607  142. https://gcc.gnu.org/PR6491
   14608  143. https://gcc.gnu.org/PR6742
   14609  144. https://gcc.gnu.org/PR7113
   14610  145. https://gcc.gnu.org/PR7236
   14611  146. https://gcc.gnu.org/PR7278
   14612  147. https://gcc.gnu.org/PR7384
   14613  148. https://gcc.gnu.org/PR7388
   14614  149. https://gcc.gnu.org/PR8587
   14615  150. https://gcc.gnu.org/PR9038
   14616  151. https://gcc.gnu.org/PR10197
   14617  152. https://gcc.gnu.org/PR6005
   14618  153. https://gcc.gnu.org/PR6389
   14619  154. https://gcc.gnu.org/PR6576
   14620  155. https://gcc.gnu.org/PR6652
   14621  156. https://gcc.gnu.org/PR7060
   14622  157. https://gcc.gnu.org/PR7073
   14623  158. https://gcc.gnu.org/PR7180
   14624  159. https://gcc.gnu.org/PR7416
   14625  160. https://gcc.gnu.org/PR7570
   14626  161. https://gcc.gnu.org/PR7578
   14627  162. https://gcc.gnu.org/PR7611
   14628  163. https://gcc.gnu.org/PR7709
   14629  164. https://gcc.gnu.org/PR7766
   14630  165. https://gcc.gnu.org/PR7785
   14631  166. https://gcc.gnu.org/PR7786
   14632  167. https://gcc.gnu.org/PR8142
   14633  168. https://gcc.gnu.org/PR8234
   14634  169. https://gcc.gnu.org/PR8415
   14635  170. https://gcc.gnu.org/PR8481
   14636  171. https://gcc.gnu.org/PR8593
   14637  172. https://gcc.gnu.org/PR8759
   14638  173. https://gcc.gnu.org/PR8997
   14639  174. https://gcc.gnu.org/PR9253
   14640  175. https://gcc.gnu.org/PR9254
   14641  176. https://gcc.gnu.org/PR9271
   14642  177. https://gcc.gnu.org/PR6767
   14643  178. https://gcc.gnu.org/PR9911
   14644  179. https://gcc.gnu.org/PR10020
   14645  180. https://gcc.gnu.org/PR10546
   14646  181. https://gcc.gnu.org/PR7029
   14647  182. https://gcc.gnu.org/PR2903
   14648  183. https://gcc.gnu.org/PR7873
   14649  184. https://gcc.gnu.org/PR7680
   14650  185. https://gcc.gnu.org/PR8705
   14651  186. https://gcc.gnu.org/PR9986
   14652  187. https://gcc.gnu.org/PR10056
   14653  188. https://gcc.gnu.org/PR6744
   14654  189. https://gcc.gnu.org/PR7361
   14655  190. https://gcc.gnu.org/PR9496
   14656  191. https://gcc.gnu.org/PR7067
   14657  192. https://gcc.gnu.org/PR8480
   14658  193. https://gcc.gnu.org/PR8784
   14659  194. https://gcc.gnu.org/PR10315
   14660  195. https://gcc.gnu.org/PR10267
   14661  196. https://gcc.gnu.org/PR7916
   14662  197. https://gcc.gnu.org/PR7926
   14663  198. https://gcc.gnu.org/PR8555
   14664  199. https://gcc.gnu.org/PR8994
   14665  200. https://gcc.gnu.org/PR9426
   14666  201. https://gcc.gnu.org/PR9806
   14667  202. https://gcc.gnu.org/PR10077
   14668  203. https://gcc.gnu.org/PR10233
   14669  204. https://gcc.gnu.org/PR10286
   14670  205. https://gcc.gnu.org/PR10308
   14671  206. https://gcc.gnu.org/PR11272
   14672  207. https://gcc.gnu.org/PR5754
   14673  208. https://gcc.gnu.org/PR6597
   14674  209. https://gcc.gnu.org/PR6949
   14675  210. https://gcc.gnu.org/PR7053
   14676  211. https://gcc.gnu.org/PR8164
   14677  212. https://gcc.gnu.org/PR8384
   14678  213. https://gcc.gnu.org/PR9559
   14679  214. https://gcc.gnu.org/PR9649
   14680  215. https://gcc.gnu.org/PR9864
   14681  216. https://gcc.gnu.org/PR10432
   14682  217. https://gcc.gnu.org/PR10475
   14683  218. https://gcc.gnu.org/PR10635
   14684  219. https://gcc.gnu.org/PR10661
   14685  220. https://gcc.gnu.org/PR10700
   14686  221. https://gcc.gnu.org/PR10712
   14687  222. https://gcc.gnu.org/PR10796
   14688  223. https://gcc.gnu.org/PR10890
   14689  224. https://gcc.gnu.org/PR10939
   14690  225. https://gcc.gnu.org/PR10956
   14691  226. https://gcc.gnu.org/PR11041
   14692  227. https://gcc.gnu.org/PR11059
   14693  228. https://gcc.gnu.org/PR11083
   14694  229. https://gcc.gnu.org/PR11105
   14695  230. https://gcc.gnu.org/PR11149
   14696  231. https://gcc.gnu.org/PR11228
   14697  232. https://gcc.gnu.org/PR11282
   14698  233. https://gcc.gnu.org/PR11301
   14699  234. https://gcc.gnu.org/PR11308
   14700  235. https://gcc.gnu.org/PR11473
   14701  236. https://gcc.gnu.org/PR11503
   14702  237. https://gcc.gnu.org/PR11513
   14703  238. https://gcc.gnu.org/PR11198
   14704  239. https://gcc.gnu.org/PR11304
   14705  240. https://gcc.gnu.org/PR11381
   14706  241. https://gcc.gnu.org/PR11536
   14707  242. https://gcc.gnu.org/PR11557
   14708  243. https://gcc.gnu.org/PR5897
   14709  244. https://gcc.gnu.org/PR11279
   14710  245. https://gcc.gnu.org/PR11022
   14711  246. https://gcc.gnu.org/PR2330
   14712  247. https://gcc.gnu.org/PR5388
   14713  248. https://gcc.gnu.org/PR5390
   14714  249. https://gcc.gnu.org/PR7877
   14715  250. https://gcc.gnu.org/PR9393
   14716  251. https://gcc.gnu.org/PR10032
   14717  252. https://gcc.gnu.org/PR10468
   14718  253. https://gcc.gnu.org/PR10527
   14719  254. https://gcc.gnu.org/PR10679
   14720  255. https://gcc.gnu.org/PR10682
   14721  256. https://gcc.gnu.org/PR10689
   14722  257. https://gcc.gnu.org/PR10845
   14723  258. https://gcc.gnu.org/PR10849
   14724  259. https://gcc.gnu.org/PR10888
   14725  260. https://gcc.gnu.org/PR10929
   14726  261. https://gcc.gnu.org/PR10931
   14727  262. https://gcc.gnu.org/PR10940
   14728  263. https://gcc.gnu.org/PR10968
   14729  264. https://gcc.gnu.org/PR10990
   14730  265. https://gcc.gnu.org/PR11039
   14731  266. https://gcc.gnu.org/PR11062
   14732  267. https://gcc.gnu.org/PR11095
   14733  268. https://gcc.gnu.org/PR11098
   14734  269. https://gcc.gnu.org/PR11137
   14735  270. https://gcc.gnu.org/PR11154
   14736  271. https://gcc.gnu.org/PR11329
   14737  272. https://gcc.gnu.org/PR11332
   14738  273. https://gcc.gnu.org/PR11431
   14739  274. https://gcc.gnu.org/PR11528
   14740  275. https://gcc.gnu.org/PR11546
   14741  276. https://gcc.gnu.org/PR11567
   14742  277. https://gcc.gnu.org/PR11645
   14743  278. https://gcc.gnu.org/PR5179
   14744  279. https://gcc.gnu.org/PR8204
   14745  280. https://gcc.gnu.org/PR10838
   14746  281. https://gcc.gnu.org/PR10886
   14747  282. https://gcc.gnu.org/PR11349
   14748  283. https://gcc.gnu.org/PR4823
   14749  284. https://gcc.gnu.org/PR8878
   14750  285. https://gcc.gnu.org/PR9815
   14751  286. https://gcc.gnu.org/PR10402
   14752  287. https://gcc.gnu.org/PR10504
   14753  288. https://gcc.gnu.org/PR10673
   14754  289. https://gcc.gnu.org/PR11044
   14755  290. https://gcc.gnu.org/PR11089
   14756  291. https://gcc.gnu.org/PR11420
   14757  292. https://gcc.gnu.org/PR9362
   14758  293. https://gcc.gnu.org/PR10142
   14759  294. https://gcc.gnu.org/PR10663
   14760  295. https://gcc.gnu.org/PR10835
   14761  296. https://gcc.gnu.org/PR10876
   14762  297. https://gcc.gnu.org/PR10955
   14763  298. https://gcc.gnu.org/PR11018
   14764  299. https://gcc.gnu.org/PR11556
   14765  300. https://gcc.gnu.org/PR10907
   14766  301. https://gcc.gnu.org/PR11320
   14767  302. https://gcc.gnu.org/PR11599
   14768  303. https://gcc.gnu.org/PR9745
   14769  304. https://gcc.gnu.org/PR10871
   14770  305. https://gcc.gnu.org/PR11440
   14771  306. https://gcc.gnu.org/PR7594
   14772  307. https://gcc.gnu.org/PR10557
   14773  308. https://gcc.gnu.org/PR11054
   14774  309. https://gcc.gnu.org/PR10834
   14775  310. https://gcc.gnu.org/PR10842
   14776  311. https://gcc.gnu.org/PR11052
   14777  312. https://gcc.gnu.org/PR11183
   14778  313. https://gcc.gnu.org/PR11084
   14779  314. https://gcc.gnu.org/PR10331
   14780  315. https://gcc.gnu.org/PR10413
   14781  316. https://gcc.gnu.org/PR11096
   14782  317. https://gcc.gnu.org/PR2873
   14783  318. https://gcc.gnu.org/PR3163
   14784  319. https://gcc.gnu.org/PR5287
   14785  320. https://gcc.gnu.org/PR10148
   14786  321. https://gcc.gnu.org/PR8787
   14787  322. https://gcc.gnu.org/PR10900
   14788  323. https://gcc.gnu.org/PR1607
   14789  324. https://gcc.gnu.org/PR4252
   14790  325. https://gcc.gnu.org/PR4490
   14791  326. https://gcc.gnu.org/PR10355
   14792  327. https://gcc.gnu.org/PR10726
   14793  328. https://gcc.gnu.org/PR10805
   14794  329. https://gcc.gnu.org/PR10815
   14795  330. https://gcc.gnu.org/PR10877
   14796  331. https://gcc.gnu.org/PR11280
   14797  332. https://gcc.gnu.org/PR11466
   14798  333. https://gcc.gnu.org/PR10737
   14799  334. https://gcc.gnu.org/PR10810
   14800  335. https://gcc.gnu.org/PR8336
   14801  336. https://gcc.gnu.org/PR9330
   14802  337. https://gcc.gnu.org/PR9631
   14803  338. https://gcc.gnu.org/PR9877
   14804  339. https://gcc.gnu.org/PR11687
   14805  340. https://gcc.gnu.org/PR12263
   14806  341. https://gcc.gnu.org/PR12490
   14807  342. https://gcc.gnu.org/PR7277
   14808  343. https://gcc.gnu.org/PR7939
   14809  344. https://gcc.gnu.org/PR11063
   14810  345. https://gcc.gnu.org/PR11207
   14811  346. https://gcc.gnu.org/PR11522
   14812  347. https://gcc.gnu.org/PR11595
   14813  348. https://gcc.gnu.org/PR11646
   14814  349. https://gcc.gnu.org/PR11665
   14815  350. https://gcc.gnu.org/PR11852
   14816  351. https://gcc.gnu.org/PR11878
   14817  352. https://gcc.gnu.org/PR11883
   14818  353. https://gcc.gnu.org/PR11991
   14819  354. https://gcc.gnu.org/PR12146
   14820  355. https://gcc.gnu.org/PR12215
   14821  356. https://gcc.gnu.org/PR12369
   14822  357. https://gcc.gnu.org/PR12446
   14823  358. https://gcc.gnu.org/PR12510
   14824  359. https://gcc.gnu.org/PR12544
   14825  360. https://gcc.gnu.org/PR9862
   14826  361. https://gcc.gnu.org/PR10962
   14827  362. https://gcc.gnu.org/PR11370
   14828  363. https://gcc.gnu.org/PR11637
   14829  364. https://gcc.gnu.org/PR11885
   14830  365. https://gcc.gnu.org/PR12082
   14831  366. https://gcc.gnu.org/PR12180
   14832  367. https://gcc.gnu.org/PR12340
   14833  368. https://gcc.gnu.org/PR3907
   14834  369. https://gcc.gnu.org/PR5293
   14835  370. https://gcc.gnu.org/PR5296
   14836  371. https://gcc.gnu.org/PR7939
   14837  372. https://gcc.gnu.org/PR8656
   14838  373. https://gcc.gnu.org/PR10147
   14839  374. https://gcc.gnu.org/PR11400
   14840  375. https://gcc.gnu.org/PR11409
   14841  376. https://gcc.gnu.org/PR11740
   14842  377. https://gcc.gnu.org/PR11786
   14843  378. https://gcc.gnu.org/PR11867
   14844  379. https://gcc.gnu.org/PR11928
   14845  380. https://gcc.gnu.org/PR12114
   14846  381. https://gcc.gnu.org/PR12163
   14847  382. https://gcc.gnu.org/PR12181
   14848  383. https://gcc.gnu.org/PR12236
   14849  384. https://gcc.gnu.org/PR12266
   14850  385. https://gcc.gnu.org/PR12296
   14851  386. https://gcc.gnu.org/PR12298
   14852  387. https://gcc.gnu.org/PR12369
   14853  388. https://gcc.gnu.org/PR12337
   14854  389. https://gcc.gnu.org/PR12344
   14855  390. https://gcc.gnu.org/PR12451
   14856  391. https://gcc.gnu.org/PR12486
   14857  392. https://gcc.gnu.org/PR8869
   14858  393. https://gcc.gnu.org/PR9786
   14859  394. https://gcc.gnu.org/PR11689
   14860  395. https://gcc.gnu.org/PR12116
   14861  396. https://gcc.gnu.org/PR12070
   14862  397. https://gcc.gnu.org/PR11184
   14863  398. https://gcc.gnu.org/PR11535
   14864  399. https://gcc.gnu.org/PR11693
   14865  400. https://gcc.gnu.org/PR12224
   14866  401. https://gcc.gnu.org/PR11087
   14867  402. https://gcc.gnu.org/PR11319
   14868  403. https://gcc.gnu.org/PR11949
   14869  404. https://gcc.gnu.org/PR11662
   14870  405. https://gcc.gnu.org/PR11965
   14871  406. https://gcc.gnu.org/PR12301
   14872  407. https://gcc.gnu.org/PR11717
   14873  408. https://gcc.gnu.org/PR11313
   14874  409. https://gcc.gnu.org/PR11712
   14875  410. https://gcc.gnu.org/PR12166
   14876  411. https://gcc.gnu.org/PR12101
   14877  412. https://gcc.gnu.org/PR10988
   14878  413. https://gcc.gnu.org/PR11805
   14879  414. https://gcc.gnu.org/PR11902
   14880  415. https://gcc.gnu.org/PR11903
   14881  416. https://gcc.gnu.org/PR11890
   14882  417. https://gcc.gnu.org/PR12399
   14883  418. https://gcc.gnu.org/PR13068
   14884  419. https://gcc.gnu.org/PR10060
   14885  420. https://gcc.gnu.org/PR10555
   14886  421. https://gcc.gnu.org/PR10706
   14887  422. https://gcc.gnu.org/PR11496
   14888  423. https://gcc.gnu.org/PR11741
   14889  424. https://gcc.gnu.org/PR12440
   14890  425. https://gcc.gnu.org/PR12632
   14891  426. https://gcc.gnu.org/PR12712
   14892  427. https://gcc.gnu.org/PR12726
   14893  428. https://gcc.gnu.org/PR12890
   14894  429. https://gcc.gnu.org/PR12900
   14895  430. https://gcc.gnu.org/PR13060
   14896  431. https://gcc.gnu.org/PR13289
   14897  432. https://gcc.gnu.org/PR13318
   14898  433. https://gcc.gnu.org/PR13392
   14899  434. https://gcc.gnu.org/PR13574
   14900  435. https://gcc.gnu.org/PR13475
   14901  436. https://gcc.gnu.org/PR13797
   14902  437. https://gcc.gnu.org/PR13824
   14903  438. https://gcc.gnu.org/PR8776
   14904  439. https://gcc.gnu.org/PR10339
   14905  440. https://gcc.gnu.org/PR11350
   14906  441. https://gcc.gnu.org/PR12826
   14907  442. https://gcc.gnu.org/PR12500
   14908  443. https://gcc.gnu.org/PR12941
   14909  444. https://gcc.gnu.org/PR12953
   14910  445. https://gcc.gnu.org/PR13041
   14911  446. https://gcc.gnu.org/PR13507
   14912  447. https://gcc.gnu.org/PR13382
   14913  448. https://gcc.gnu.org/PR13394
   14914  449. https://gcc.gnu.org/PR13400
   14915  450. https://gcc.gnu.org/PR13521
   14916  451. https://gcc.gnu.org/PR2094
   14917  452. https://gcc.gnu.org/PR2294
   14918  453. https://gcc.gnu.org/PR5050
   14919  454. https://gcc.gnu.org/PR9371
   14920  455. https://gcc.gnu.org/PR9546
   14921  456. https://gcc.gnu.org/PR10081
   14922  457. https://gcc.gnu.org/PR10093
   14923  458. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#61
   14924  459. https://gcc.gnu.org/PR10095
   14925  460. https://gcc.gnu.org/PR11554
   14926  461. https://gcc.gnu.org/PR12297
   14927  462. https://gcc.gnu.org/PR12352
   14928  463. https://gcc.gnu.org/PR12438
   14929  464. https://gcc.gnu.org/PR12540
   14930  465. https://gcc.gnu.org/PR12594
   14931  466. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#60
   14932  467. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#63
   14933  468. https://gcc.gnu.org/PR12657
   14934  469. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#292
   14935  470. https://gcc.gnu.org/PR12696
   14936  471. https://gcc.gnu.org/PR12815
   14937  472. https://gcc.gnu.org/PR12862
   14938  473. https://gcc.gnu.org/PR12926
   14939  474. https://gcc.gnu.org/PR12967
   14940  475. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html
   14941  476. https://gcc.gnu.org/PR12971
   14942  477. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#328
   14943  478. https://gcc.gnu.org/PR13007
   14944  479. https://gcc.gnu.org/PR13009
   14945  480. https://gcc.gnu.org/PR13057
   14946  481. https://gcc.gnu.org/PR13070
   14947  482. https://gcc.gnu.org/PR13081
   14948  483. https://gcc.gnu.org/PR13239
   14949  484. https://gcc.gnu.org/PR13262
   14950  485. https://gcc.gnu.org/PR13290
   14951  486. https://gcc.gnu.org/PR13323
   14952  487. https://gcc.gnu.org/PR13369
   14953  488. https://gcc.gnu.org/PR13371
   14954  489. https://gcc.gnu.org/PR13445
   14955  490. https://gcc.gnu.org/PR13461
   14956  491. https://gcc.gnu.org/PR13462
   14957  492. https://gcc.gnu.org/PR13478
   14958  493. https://gcc.gnu.org/PR13544
   14959  494. https://gcc.gnu.org/PR13650
   14960  495. https://gcc.gnu.org/PR13683
   14961  496. https://gcc.gnu.org/PR13688
   14962  497. https://gcc.gnu.org/PR13774
   14963  498. https://gcc.gnu.org/PR13884
   14964  499. https://gcc.gnu.org/PR10746
   14965  500. https://gcc.gnu.org/PR11433
   14966  501. https://gcc.gnu.org/PR12633
   14967  502. https://gcc.gnu.org/PR13037
   14968  503. https://gcc.gnu.org/PR13213
   14969  504. https://gcc.gnu.org/PR4490
   14970  505. https://gcc.gnu.org/PR12292
   14971  506. https://gcc.gnu.org/PR12441
   14972  507. https://gcc.gnu.org/PR12943
   14973  508. https://gcc.gnu.org/PR13608
   14974  509. https://gcc.gnu.org/PR11598
   14975  510. https://gcc.gnu.org/PR11793
   14976  511. https://gcc.gnu.org/PR12467
   14977  512. https://gcc.gnu.org/PR12537
   14978  513. https://gcc.gnu.org/PR12496
   14979  514. https://gcc.gnu.org/PR12865
   14980  515. https://gcc.gnu.org/PR13354
   14981  516. https://gcc.gnu.org/PR10467
   14982  517. https://gcc.gnu.org/PR11226
   14983  518. https://gcc.gnu.org/PR11227
   14984  519. https://gcc.gnu.org/PR12644
   14985  520. https://gcc.gnu.org/PR13149
   14986  521. https://gcc.gnu.org/PR12654
   14987  522. https://gcc.gnu.org/PR12965
   14988  523. https://gcc.gnu.org/PR13031
   14989  524. https://gcc.gnu.org/PR11634
   14990  525. https://gcc.gnu.org/PR12158
   14991  526. https://gcc.gnu.org/PR11992
   14992  527. https://gcc.gnu.org/PR9365
   14993  528. https://gcc.gnu.org/PR10392
   14994  529. https://gcc.gnu.org/PR11322
   14995  530. https://gcc.gnu.org/PR13069
   14996  531. https://gcc.gnu.org/PR13302
   14997  532. https://gcc.gnu.org/PR13585
   14998  533. https://gcc.gnu.org/PR8916
   14999  534. https://gcc.gnu.org/PR11576
   15000  535. https://gcc.gnu.org/PR13122
   15001  536. https://gcc.gnu.org/PR13256
   15002  537. https://gcc.gnu.org/PR13373
   15003  538. https://gcc.gnu.org/PR12561
   15004  539. https://gcc.gnu.org/PR6243
   15005  540. https://gcc.gnu.org/PR11397
   15006  541. https://gcc.gnu.org/PR12505
   15007  542. https://gcc.gnu.org/PR13150
   15008  543. https://gcc.gnu.org/PR12666
   15009  544. https://gcc.gnu.org/PR12969
   15010  545. https://gcc.gnu.org/PR10819
   15011  546. https://gcc.gnu.org/PR11612
   15012  547. https://gcc.gnu.org/PR13211
   15013  548. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.4
   15014  549. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.5
   15015  550. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.6
   15016  551. https://gcc.gnu.org/onlinedocs/
   15017  552. mailto:gcc-help (a] gcc.gnu.org
   15018  553. mailto:gcc (a] gcc.gnu.org
   15019  554. https://gcc.gnu.org/lists.html
   15020  555. https://www.fsf.org/
   15021  556. https://gcc.gnu.org/about.html
   15022  557. http://validator.w3.org/check/referer
   15023 ======================================================================
   15024 http://gcc.gnu.org/gcc-3.2/index.html
   15025 
   15026                              GCC 3.2 Release Series
   15027 
   15028    April 25, 2003
   15029 
   15030    The [1]GNU project and the GCC developers are pleased to announce the
   15031    release of GCC 3.2.3.
   15032 
   15033    The purpose of the GCC 3.2 release series is to provide a stable
   15034    platform for OS distributors to use building their next releases. A
   15035    primary objective was to stabilize the C++ ABI; we believe that the
   15036    interface to the compiler and the C++ standard library are now
   15037    relatively stable.
   15038 
   15039    Be aware that C++ code compiled by GCC 3.2.x will (in general) not
   15040    interoperate with code compiled by GCC 3.1.1 or earlier.
   15041 
   15042    Please refer to our [2]detailed list of news, caveats, and bug-fixes
   15043    for further information.
   15044 
   15045    This release series is no longer maintained.
   15046 
   15047 Release History
   15048 
   15049    GCC 3.2.3
   15050           April 25, 2003 ([3]changes)
   15051 
   15052    GCC 3.2.2
   15053           February 5, 2003 ([4]changes)
   15054 
   15055    GCC 3.2.1
   15056           November 19, 2002 ([5]changes)
   15057 
   15058    GCC 3.2
   15059           August 14, 2002 ([6]changes)
   15060 
   15061 References and Acknowledgements
   15062 
   15063    GCC used to stand for the GNU C Compiler, but since the compiler
   15064    supports several other languages aside from C, it now stands for the
   15065    GNU Compiler Collection.
   15066 
   15067    A list of [7]successful builds is updated as new information becomes
   15068    available.
   15069 
   15070    The GCC developers would like to thank the numerous people that have
   15071    contributed new features, improvements, bug fixes, and other changes as
   15072    well as test results to GCC. This [8]amazing group of volunteers is
   15073    what makes GCC successful.
   15074 
   15075    For additional information about GCC please refer to the [9]GCC project
   15076    web site or contact the [10]GCC development mailing list.
   15077 
   15078    To obtain GCC please use [11]our mirror sites, or our CVS server.
   15079 
   15080 
   15081     For questions related to the use of GCC, please consult these web
   15082     pages and the [12]GCC manuals. If that fails, the
   15083     [13]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   15084     web pages and the development of GCC are welcome on our developer
   15085     list at [14]gcc (a] gcc.gnu.org. All of [15]our lists have public
   15086     archives.
   15087 
   15088    Copyright (C) [16]Free Software Foundation, Inc. Verbatim copying and
   15089    distribution of this entire article is permitted in any medium,
   15090    provided this notice is preserved.
   15091 
   15092    These pages are [17]maintained by the GCC team. Last modified
   15093    2018-09-30[18].
   15094 
   15095 References
   15096 
   15097    1. http://www.gnu.org/
   15098    2. http://gcc.gnu.org/gcc-3.2/changes.html
   15099    3. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3
   15100    4. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.2
   15101    5. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.1
   15102    6. http://gcc.gnu.org/gcc-3.2/changes.html#3.2
   15103    7. http://gcc.gnu.org/gcc-3.2/buildstat.html
   15104    8. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   15105    9. http://gcc.gnu.org/index.html
   15106   10. mailto:gcc (a] gcc.gnu.org
   15107   11. http://gcc.gnu.org/mirrors.html
   15108   12. https://gcc.gnu.org/onlinedocs/
   15109   13. mailto:gcc-help (a] gcc.gnu.org
   15110   14. mailto:gcc (a] gcc.gnu.org
   15111   15. https://gcc.gnu.org/lists.html
   15112   16. https://www.fsf.org/
   15113   17. https://gcc.gnu.org/about.html
   15114   18. http://validator.w3.org/check/referer
   15115 ======================================================================
   15116 http://gcc.gnu.org/gcc-3.2/changes.html
   15117 
   15118                              GCC 3.2 Release Series
   15119                         Changes, New Features, and Fixes
   15120 
   15121    The latest release in the 3.2 release series is [1]GCC 3.2.3.
   15122 
   15123 Caveats and New Features
   15124 
   15125   Caveats
   15126 
   15127      * The C++ compiler does not correctly zero-initialize
   15128        pointers-to-data members. You must explicitly initialize them. For
   15129        example: int S::*m(0); will work, but depending on
   15130        default-initialization to zero will not work. This bug cannot be
   15131        fixed in GCC 3.2 without inducing unacceptable risks. It will be
   15132        fixed in GCC 3.3.
   15133      * This GCC release is based on the GCC 3.1 sourcebase, and thus has
   15134        all the [2]changes in the GCC 3.1 series. In addition, GCC 3.2 has
   15135        a number of C++ ABI fixes which make its C++ compiler generate
   15136        binary code which is incompatible with the C++ compilers found in
   15137        earlier GCC releases, including GCC 3.1 and GCC 3.1.1.
   15138 
   15139   Frontend Enhancements
   15140 
   15141     C/C++/Objective-C
   15142 
   15143      * The method of constructing the list of directories to be searched
   15144        for header files has been revised. If a directory named by a -I
   15145        option is a standard system include directory, the option is
   15146        ignored to ensure that the default search order for system
   15147        directories and the special treatment of system header files are
   15148        not defeated.
   15149      * The C and Objective-C compilers no longer accept the "Naming Types"
   15150        extension (typedef foo = bar); it was already unavailable in C++.
   15151        Code which uses it will need to be changed to use the "typeof"
   15152        extension instead: typedef typeof(bar) foo. (We have removed this
   15153        extension without a period of deprecation because it has caused the
   15154        compiler to crash since version 3.0 and no one noticed until very
   15155        recently. Thus we conclude it is not in widespread use.)
   15156 
   15157     C++
   15158 
   15159      * GCC 3.2 fixed serveral differences between the C++ ABI implemented
   15160        in GCC and the multi-vendor standard, but more have been found
   15161        since the release. 3.2.1 adds a new warning, -Wabi, to warn about
   15162        code which is affected by these bugs. We will fix these bugs in
   15163        some future release, once we are confident that all have been
   15164        found; until then, it is our intention to make changes to the ABI
   15165        only if they are necessary for correct compilation of C++, as
   15166        opposed to conformance to the ABI documents.
   15167      * For details on how to build an ABI compliant compiler for GNU/Linux
   15168        systems, check the [3]common C++ ABI page.
   15169 
   15170   New Targets and Target Specific Improvements
   15171 
   15172     IA-32
   15173 
   15174      * Fixed a number of bugs in SSE and MMX intrinsics.
   15175      * Fixed common compiler crashes with SSE instruction set enabled
   15176        (implied by -march=pentium3, pentium4, athlon-xp)
   15177      * __m128 and __m128i is not 128bit aligned when used in structures.
   15178 
   15179     x86-64
   15180 
   15181      * A bug whereby the compiler could generate bad code for bzero has
   15182        been fixed.
   15183      * ABI fixes (implying ABI incompatibilities with previous version in
   15184        some corner cases)
   15185      * Fixed prefetch code generation
   15186      __________________________________________________________________
   15187 
   15188 GCC 3.2.3
   15189 
   15190    3.2.3 is a bug fix release only; there are no new features that were
   15191    not present in GCC 3.2.2.
   15192 
   15193   Bug Fixes
   15194 
   15195    This section lists the problem reports (PRs) from GCC's bug tracking
   15196    system that are known to be fixed in the 3.2.3 release. This list might
   15197    not be complete (that is, it is possible that some PRs that have been
   15198    fixed are not listed here), and some of the titles have been changed to
   15199    make them more clear.
   15200 
   15201     Internal Compiler Errors (multi-platform)
   15202 
   15203      * [4]3782: (c++) -quiet -fstats produces a segmentation fault in
   15204        cc1plus
   15205      * [5]6440: (c++) template specializations cause ICE
   15206      * [6]7050: (c++) ICE on: (i ? get_string() : throw)
   15207      * [7]7741: ICE on conflicting types (make_decl_rtl in varasm.c)
   15208      * [8]7982: (c++) ICE due to infinite recursion (using STL set)
   15209      * [9]8068: exceedingly high (infinite) memory usage
   15210      * [10]8178: ICE with __builtin_ffs
   15211      * [11]8396: ICE in copy_to_mode_reg, in explow.c
   15212      * [12]8674: (c++) ICE in cp_expr_size, in cp/cp-lang.c
   15213      * [13]9768: ICE when optimizing inline code at -O2
   15214      * [14]9798: (c++) Infinite recursion (segfault) in
   15215        cp/decl.c:push_using_directive with recursive using directives
   15216      * [15]9799: mismatching structure initializer with nested flexible
   15217        array member: ICE
   15218      * [16]9928: ICE on duplicate enum declaration
   15219      * [17]10114: ICE in mem_loc_descriptor, in dwarf2out.c (affects
   15220        sparc, alpha)
   15221      * [18]10352: ICE in find_reloads_toplev
   15222      * [19]10336: ICE with -Wunreachable-code
   15223 
   15224     C/optimizer bugs:
   15225 
   15226      * [20]8224: Incorrect joining of signed and unsigned division
   15227      * [21]8613: -O2 produces wrong code with builtin strlen and
   15228        postincrements
   15229      * [22]8828: gcc reports some code is unreachable when it is not
   15230      * [23]9226: GCSE breaking argument passing
   15231      * [24]9853: miscompilation of non-constant structure initializer
   15232      * [25]9797: C99-style struct initializers are miscompiled
   15233      * [26]9967: Some standard C function calls should not be replaced
   15234        when optimizing for size
   15235      * [27]10116: ce2: invalid merge of join_bb in the context of switch
   15236        statements
   15237      * [28]10171: wrong code for inlined function
   15238      * [29]10175: -Wunreachable-code doesn't work for single lines
   15239 
   15240     C++ compiler and library:
   15241 
   15242      * [30]8316: Confusing diagnostic for code that misuses conversion
   15243        operators
   15244      * [31]9169: filebuf output fails if codecvt<>::out returns noconv
   15245      * [32]9420: incomplete type incorrectly reported
   15246      * [33]9459: typeof in return type specification of template not
   15247        supported
   15248      * [34]9507: filebuf::open handles ios_base::ate incorrectly
   15249      * [35]9538: Out-of-bounds memory access in streambuf::sputbackc
   15250      * [36]9602: Total confusion about template/friend/virtual/abstract
   15251      * [37]9993: destructor not called for local object created within and
   15252        returned from infinite loop
   15253      * [38]10167: ieee_1003.1-2001 locale specialisations on a glibc-2.3.2
   15254        system
   15255 
   15256     Java compiler and library:
   15257 
   15258      * [39]9652: libgcj build fails on irix6.5.1[78]
   15259      * [40]10144: gas on solaris complains about bad .stabs lines for
   15260        java, native as unaffected
   15261 
   15262     x86-specific (Intel/AMD):
   15263 
   15264      * [41]8746: gcc miscompiles Linux kernel ppa driver on x86
   15265      * [42]9888: -mcpu=k6 -Os produces out of range loop instructions
   15266      * [43]9638: Cross-build for target i386-elf and i586-pc-linux-gnu
   15267        failed
   15268      * [44]9954: Cross-build for target i586-pc-linux-gnu (--with-newlib)
   15269        failed
   15270 
   15271     SPARC-specific:
   15272 
   15273      * [45]7784: [Sparc] ICE in extract_insn, in recog.c
   15274      * [46]7796: sparc extra failure with -m64 on execute/930921-1.c in
   15275        unroll.c
   15276      * [47]8281: ICE when compiling with -O2 -fPIC for Ultrasparc
   15277      * [48]8366: [Sparc] C testsuite failure with -m64 -fpic -O in
   15278        execute/loop-2d.c
   15279      * [49]8726: gcc -O2 miscompiles Samba 2.2.7 on 32-bit sparc
   15280      * [50]9414: Scheduling bug on Ultrasparc
   15281      * [51]10067: GCC-3.2.2 outputs invalid asm on sparc64
   15282 
   15283     m68k-specific:
   15284 
   15285      * [52]7248: broken "inclusive or" code
   15286      * [53]8343: m68k-elf/rtems ICE at instantiate_virtual_regs_1
   15287 
   15288     PowerPC-specific:
   15289 
   15290      * [54]9732: Wrong code with -O2 -fPIC
   15291      * [55]10073: ICE: powerpc cannot split insn
   15292 
   15293     Alpha-specific:
   15294 
   15295      * [56]7702: optimization problem on a DEC alpha under OSF1
   15296      * [57]9671: gcc.3.2.2 does not build on a HP Tru64 Unix v5.1B system
   15297 
   15298     HP-specific:
   15299 
   15300      * [58]8694: <string> breaks <ctype.h> on HP-UX 10.20 (DUP: 9275)
   15301      * [59]9953: (ada) gcc 3.2.x can't build 3.3-branch ada on HP-UX 10
   15302        (missing symbol)
   15303      * [60]10271: Floating point args don't get reloaded across function
   15304        calls with -O2
   15305 
   15306     MIPS specific:
   15307 
   15308      * [61]6362: mips-irix6 gcc-3.1 C testsuite failure with -mips4 in
   15309        compile/920501-4.c
   15310 
   15311     CRIS specific:
   15312 
   15313      * [62]10377: gcc-3.2.2 creates bad assembler code for cris
   15314 
   15315     Miscellaneous and minor bugs:
   15316 
   15317      * [63]6955: collect2 says "core dumped" when there is no core
   15318      __________________________________________________________________
   15319 
   15320 GCC 3.2.2
   15321 
   15322    Beginning with 3.2.2, GCC's Makefile suite supports redirection of make
   15323    install by means of the DESTDIR variable. Parts of the GCC tree have
   15324    featured that support long before, but now it is available even from
   15325    the top level.
   15326 
   15327    Other than that, GCC 3.2.2 is a bug fix release only; there are no new
   15328    features that were not present in GCC 3.2.1.
   15329 
   15330   Bug Fixes
   15331 
   15332    On the following i386-based systems GCC 3.2.1 broke the C ABI wrt.
   15333    functions returning structures: Cygwin, FreeBSD (GCC 3.2.1 as shipped
   15334    with FreeBSD 5.0 does not have this problem), Interix, a.out-based
   15335    GNU/Linux and NetBSD, OpenBSD, and Darwin. GCC 3.2.2 reverts this ABI
   15336    change, and thus restores ABI-compatibility with previous releases
   15337    (except GCC 3.2.1) on these platforms.
   15338 
   15339    This section lists the problem reports (PRs) from GCC's bug tracking
   15340    system that are known to be fixed in the 3.2.2 release. This list might
   15341    not be complete (that is, it is possible that some PRs that have been
   15342    fixed are not listed here) and some of the titles have been changed to
   15343    make them more clear.
   15344 
   15345     Internal Compiler Errors (multi-platform)
   15346 
   15347      * [64]5919: (c++) ICE when passing variable array to template
   15348        function
   15349      * [65]7129: (c++) ICE with min/max assignment operators (<?= and >?=)
   15350      * [66]7507: ICE with -O2 when address of called function is a
   15351        complicated expression
   15352      * [67]7622: ICE with nested inline functions if function's address is
   15353        taken
   15354      * [68]7681: (fortran) ICE in compensate_edge, in reg-stack.c (also PR
   15355        [69]9258)
   15356      * [70]8031: (c++) ICE in code comparing typeids and casting from
   15357        virtual base
   15358      * [71]8275: ICE in simplify_subreg
   15359      * [72]8332: (c++) builtin strlen/template interaction causes ICE
   15360      * [73]8372: (c++) ICE on explicit call of destructor
   15361      * [74]8439: (c, not c++) empty struct causes ICE
   15362      * [75]8442: (c++) ICE with nested template classes
   15363      * [76]8518: ICE when compiling mplayer ("extern inline" issue)
   15364      * [77]8615: (c++) ICE with out-of-range character constant template
   15365        argument
   15366      * [78]8663: (c++) ICE in cp_expr_size, at cp-lang.c:307
   15367      * [79]8799: (c++) ICE: error reporting routines re-entered
   15368      * [80]9328: (c++) ICE with typeof(X) for overloaded X
   15369      * [81]9465: (preprocessor) cpp -traditional ICE on null bytes
   15370 
   15371     C++ (compiler and library) bugs
   15372 
   15373      * [82]47: scoping in nested classes is broken
   15374      * [83]6745: problems with iostream rdbuf() member function
   15375      * [84]8214: conversion from const char* const to char* sometimes
   15376        accepted illegally
   15377      * [85]8493: builtin strlen and overload resolution (same bug as
   15378        [86]8332)
   15379      * [87]8503: strange behaviour of function types
   15380      * [88]8727: compiler confused by inheritance from an anonymous struct
   15381      * [89]7445: poor performance of std::locale::classic() in
   15382        multi-threaded applications
   15383      * [90]8230: mishandling of overflow in vector<T>::resize
   15384      * [91]8399: sync_with_stdio(false) breaks unformatted input
   15385      * [92]8662: illegal access of private member of unnamed class is
   15386        accepted
   15387      * [93]8707: "make distclean" fails in libstdc++-v3 directory
   15388      * [94]8708: __USE_MALLOC doesn't work
   15389      * [95]8790: Use of non-thread-safe strtok in src/localename.cc
   15390      * [96]8887: Bug in date formats with --enable-clocale=generic
   15391      * [97]9076: Call Frame Instructions are not handled correctly during
   15392        unwind operation
   15393      * [98]9151: std::setprecision limited to 16 digits when outputting a
   15394        double to a stream
   15395      * [99]9168: codecvt<char, char, mbstate_t> overwrites output buffers
   15396      * [100]9269: libstdc++ headers: explicit specialization of function
   15397        must precede its first use
   15398      * [101]9322: return value of basic_streambuf<>::getloc affected by
   15399        locale::global
   15400      * [102]9433: segfault in runtime support for dynamic_cast
   15401 
   15402     C and optimizer bugs
   15403 
   15404      * [103]8032: GCC incorrectly initializes static structs that have
   15405        flexible arrays
   15406      * [104]8639: simple arithmetic expression broken
   15407      * [105]8794: optimization improperly eliminates certain expressions
   15408      * [106]8832: traditional "asm volatile" code is illegally optimized
   15409      * [107]8988: loop optimizer bug: with -O2, code is generated that
   15410        segfaults (found on i386, bug present for all platforms)
   15411      * [108]9492: structure copy clobbers subsequent stores to structure
   15412 
   15413     Objective-C bugs
   15414 
   15415      * [109]9267: Objective-C parser won't build with newer bison versions
   15416        (e.g. 1.875)
   15417 
   15418     Ada bugs
   15419 
   15420      * [110]8344: Ada build problem due to conflict between gcc/final.o,
   15421        gcc/ada/final.o
   15422 
   15423     Preprocessor bugs
   15424 
   15425      * [111]8524: _Pragma within macros is improperly expanded
   15426      * [112]8880: __WCHAR_TYPE__ macro incorrectly set to "long int" with
   15427        -fshort-wchar
   15428 
   15429     ARM-specific
   15430 
   15431      * [113]9090: arm ICE with >= -O2; regression from gcc-2.95
   15432 
   15433     x86-specific (Intel/AMD)
   15434 
   15435      * [114]8588: ICE in extract_insn, at recog.c:NNNN (shift instruction)
   15436      * [115]8599: loop unroll bug with -march=k6-3
   15437      * [116]9506: ABI breakage in structure return (affects BSD and
   15438        Cygwin, but not GNU/Linux)
   15439 
   15440     FreeBSD 5.0 specific
   15441 
   15442      * [117]9484: GCC 3.2.1 Bootstrap failure on FreeBSD 5.0
   15443 
   15444     RTEMS-specific
   15445 
   15446      * [118]9292: hppa1.1-rtems configurery problems
   15447      * [119]9293: [m68k-elf/rtems] config/m68k/t-crtstuff bug
   15448      * [120]9295: [mips-rtems] config/mips/rtems.h init/fini issue
   15449      * [121]9296: gthr-rtems regression
   15450      * [122]9316: powerpc-rtems: extending multilibs
   15451 
   15452     HP-PA specific
   15453 
   15454      * [123]9493: ICE with -O2 when building a simple function
   15455 
   15456     Documentation
   15457 
   15458      * [124]7341: hyperlink to gcov in GCC documentation doesn't work
   15459      * [125]8947: Please add a warning about "-malign-double" in docs
   15460      * [126]7448, [127]8882: typo cleanups
   15461      __________________________________________________________________
   15462 
   15463 GCC 3.2.1
   15464 
   15465    3.2.1 adds a new warning, -Wabi. This option warns when GNU C++
   15466    generates code that is known not to be binary-compatible with the
   15467    vendor-neutral ia32/ia64 ABI. Please consult the GCC manual, included
   15468    in the distribution, for details.
   15469 
   15470    This release also removes an old GCC extension, "naming types", and the
   15471    documentation now directs users to use a different GCC extension,
   15472    __typeof__, instead. The feature had evidently been broken for a while.
   15473 
   15474    Otherwise, 3.2.1 is a bug fix release only; other than bug fixes and
   15475    the new warning there are no new features that were not present in GCC
   15476    3.2.
   15477 
   15478    In addition, the previous fix for [128]PR 7445 (poor performance of
   15479    std::locale::classic() in multi-threaded applications) was reverted
   15480    ("unfixed"), because the "fix" was not thread-safe.
   15481 
   15482   Bug Fixes
   15483 
   15484    This section lists the problem reports (PRs) from GCC's bug tracking
   15485    system that are known to be fixed in the 3.2.1 release. This list might
   15486    not be complete (that is, it is possible that some PRs that have been
   15487    fixed are not listed here). As you can see, the number of bug fixes is
   15488    quite large, so it is strongly recommended that users of earlier GCC
   15489    3.x releases upgrade to GCC 3.2.1.
   15490 
   15491     Internal Compiler Errors (multi-platform)
   15492 
   15493      * [129]2521: (c++) ICE in build_ptrmemfunc, in cp/typeck.c
   15494      * [130]5661: (c++) ICE instantiating template on array of unknown
   15495        size (bad code)
   15496      * [131]6419: (c++) ICE in make_decl_rtl for "longest" attribute on
   15497        64-bit platforms
   15498      * [132]6994: (c++) ICE in find_function_data
   15499      * [133]7150: preprocessor: GCC -dM -E gives an ICE
   15500      * [134]7160: ICE when optimizing branches without a return value
   15501      * [135]7228: (c++) ICE when using member template and template
   15502        function
   15503      * [136]7266: (c++) ICE with -pedantic on missing typename
   15504      * [137]7353: ICE from use of "Naming Types" extension, see above
   15505      * [138]7411: ICE in instantiate_virtual_regs_1, in function.c
   15506      * [139]7478: (c++) ICE on static_cast inside template
   15507      * [140]7526: preprocessor core dump when _Pragma implies #pragma
   15508        dependency
   15509      * [141]7721: (c++) ICE on simple (but incorrect) template ([142]7803
   15510        is a duplicate)
   15511      * [143]7754: (c++) ICE on union with template parameter
   15512      * [144]7788: (c++) redeclaring a definition as an incomplete class
   15513        causes ICE
   15514      * [145]8031: (c++) ICE in comptypes, in cp/typeck.c
   15515      * [146]8055: preprocessor dies with SIG11 when building FreeBSD
   15516        kernel
   15517      * [147]8067: (c++) ICE due to mishandling of __FUNCTION__ and related
   15518        variables
   15519      * [148]8134: (c++) ICE in force_store_init_value on legal code
   15520      * [149]8149: (c++) ICE on incomplete type
   15521      * [150]8160: (c++) ICE in build_modify_expr, in cp/typeck.c: array
   15522        initialization
   15523 
   15524     C++ (compiler and library) bugs
   15525 
   15526      * [151]5607: No pointer adjustment in covariant return types
   15527      * [152]6579: Infinite loop with statement expressions in member
   15528        initialization
   15529      * [153]6803: Default copy constructor bug in GCC 3.1
   15530      * [154]7176: g++ confused by friend and static member with same name
   15531      * [155]7188: Segfault with template class and recursive (incorrect)
   15532        initializer list
   15533      * [156]7306: Regression: GCC 3.x fails to compile code with virtual
   15534        inheritance if a method has a variable number of arguments
   15535      * [157]7461: ctype<char>::classic_table() returns offset array on
   15536        Cygwin
   15537      * [158]7524: f(const float arg[3]) fails
   15538      * [159]7584: Erroneous ambiguous base error on using declaration
   15539      * [160]7676: Member template overloading problem
   15540      * [161]7679: infinite loop when a right parenthesis is missing
   15541      * [162]7811: default locale not taken from environment
   15542      * [163]7961: compare( char *) implemented incorrectly in
   15543        basic_string<>
   15544      * [164]8071: basic_ostream::operator<<(streambuf*) loops forever if
   15545        streambuf::underflow() leaves gptr() NULL (dups: [165]8127,
   15546        [166]6745)
   15547      * [167]8096: deque::at() throws std::range_error instead of
   15548        std::out_of_range
   15549      * [168]8127: cout << cin.rdbuf() infinite loop
   15550      * [169]8218: Excessively large memory consumed for classes with large
   15551        array members
   15552      * [170]8287: GCC 3.2: Destructor called for non-constructed local
   15553        object
   15554      * [171]8347: empty vector range used in string construction causes
   15555        core dump
   15556      * [172]8348: fail() flag is set in istringstream when eof() flag is
   15557        set
   15558      * [173]8391: regression: infinite loop in cp/decl2.c(finish_file)
   15559 
   15560     C and optimizer bugs
   15561 
   15562      * [174]6627: -fno-align-functions doesn't seem to disable function
   15563        alignment
   15564      * [175]6631: life_analysis misoptimizes code to initialize fields of
   15565        a structure
   15566      * [176]7102: unsigned char division results in floating exception
   15567      * [177]7120: Run once loop should *always* be unrolled
   15568        (pessimization)
   15569      * [178]7209: Bug involving array referencing and ?: operator
   15570      * [179]7515: invalid inlining of global function with -O3
   15571      * [180]7814: incorrect scheduling for glibc-2.2.92 strcpy test
   15572      * [181]8467: bug in sibling call optimization
   15573 
   15574     Preprocessor bugs
   15575 
   15576      * [182]4890: incorrect line markers from the traditional preprocessor
   15577      * [183]7357: -M option omits system headers files (making it the same
   15578        as -MM)
   15579      * [184]7358: Changes to Sun's make Dependencies
   15580      * [185]7602: C++ header files found in CPLUS_INCLUDE_PATH treated as
   15581        C headers
   15582      * [186]7862: Interrupting GCC -MD removes .d file but not .o
   15583      * [187]8190: Failed compilation deletes -MD dependency file
   15584      * [188]8524: _Pragma within macro is improperly expanded
   15585 
   15586     x86 specific (Intel/AMD)
   15587 
   15588      * [189]5351: (i686-only) function pass-by-value structure copy
   15589        corrupts stack ([190]7591 is a duplicate)
   15590      * [191]6845, [192]7034, [193]7124, [194]7174: ICE's with
   15591        -march=pentium3/pentium2/athlon (these are all the same underlying
   15592        bug, in MMX register use)
   15593      * [195]7134, [196]7375, [197]7390: ICE with -march=athlon (maybe same
   15594        as above?)
   15595      * [198]6890: xmmintrin.h, _MM_TRANSPOSE4_PS is broken
   15596      * [199]6981: wrong code in 64-bit manipulation on x86
   15597      * [200]7242: GCC -mcpu=pentium[23] doesn't define __tune_pentiumpro__
   15598        macro
   15599      * [201]7396: ix86: cmpgt_ss, cmpge_ss, cmpngt_ss, and cmpnge_ss SSE
   15600        intrinsics are broken
   15601      * [202]7630: GCC 3.2 breaks on Mozilla 1.0's JS sources with
   15602        -march=pentium4
   15603      * [203]7693: Typo in i386 mmintrin.h header
   15604      * [204]7723: ICE - Pentium3 sse - GCC 3.2
   15605      * [205]7951: ICE on -march=pentium4 -O2 -mfpmath=sse
   15606      * [206]8146: (i686 only) gcc 3.2 miscompiles gcc 2.95.3
   15607 
   15608     PowerPC specific
   15609 
   15610      * [207]5967: GCC bug when profiling nested functions on powerpc
   15611      * [208]6984: wrong code generated with -O2, -O3, -Os for do-while
   15612        loop on PowerPC
   15613      * [209]7114: PowerPC: ICE building strcoll.op from glibc-2.2.5
   15614      * [210]7130: miscompiled code for GCC-3.1 on
   15615        powerpc-unknown-linux-gnu with -funroll-all-loops
   15616      * [211]7133: PowerPC ICE: unrecognizable insn
   15617      * [212]7380: ICE in extract_insn, at recog.c:2148
   15618      * [213]8252: ICE on Altivec code with optimization turned on
   15619      * [214]8451: Altivec ICE in GCC 3.2
   15620 
   15621     HP/PA specific
   15622 
   15623      * [215]7250: __ashrdi3 returns wrong value on 32 bit hppa
   15624 
   15625     SPARC specific
   15626 
   15627      * [216]6668: when using --disable-multilib, libgcc_s.so is installed
   15628        in the wrong place on sparc-solaris
   15629      * [217]7151: ICE when compiling for UltraSPARC
   15630      * [218]7335: SPARC: ICE in verify_wide_reg (flow.c:557) with long
   15631        double and -O1
   15632      * [219]7842: [REGRESSION] SPARC code gen bug
   15633 
   15634     ARM specific
   15635 
   15636      * [220]7856: [arm] invalid offset in constant pool reference
   15637      * [221]7967: optimization produces wrong code (ARM)
   15638 
   15639     Alpha specific
   15640 
   15641      * [222]7374: __builtin_fabsl broken on alpha
   15642 
   15643     IBM s390 specific
   15644 
   15645      * [223]7370: ICE in fixup_var_refs_1 on s390x
   15646      * [224]7409: loop optimization bug on s390x-linux-gnu
   15647      * [225]8232: s390x: ICE when using bcmp with int length argument
   15648 
   15649     SCO specific
   15650 
   15651      * [226]7623: SCO OpenServer build fails with machmode.def: undefined
   15652        symbol: BITS_PER_UNIT
   15653 
   15654     m68k/Coldfire specific
   15655 
   15656      * [227]8314: crtbegin, crtend need to be multilib'ed for this
   15657        platform
   15658 
   15659     Documentation
   15660 
   15661      * [228]761: Document some undocumented options
   15662      * [229]5610: Fix documentation about invoking SSE instructions
   15663        (-mfpmath=sse)
   15664      * [230]7484: List -Wmissing-declarations as C-only option
   15665      * [231]7531: -mcmodel not documented for x86-64
   15666      * [232]8120: Update documentation of bad use of ##
   15667      __________________________________________________________________
   15668 
   15669 GCC 3.2
   15670 
   15671    3.2 is a small bug fix release, but there is a change to the
   15672    application binary interface (ABI), hence the change to the second part
   15673    of the version number.
   15674 
   15675    The main purpose of the 3.2 release is to correct a couple of problems
   15676    in the C++ ABI, with the intention of providing a stable interface
   15677    going forward.  Accordingly, 3.2 is only a small change to 3.1.1.
   15678 
   15679   Bug Fixes
   15680 
   15681     C++
   15682 
   15683      * [233]7320: g++ 3.2 relocation problem
   15684      * [234]7470: vtable: virtual function pointers not in declaration
   15685        order
   15686 
   15687     libstdc++
   15688 
   15689      * [235]6410: Trouble with non-ASCII monetary symbols and wchar_t
   15690      * [236]6503, [237]6642, [238]7186: Problems with comparing or
   15691        subtracting various types of const and non-const iterators
   15692      * [239]7216: ambiguity with basic_iostream::traits_type
   15693      * [240]7220: problem with basic_istream::ignore(0,delimiter)
   15694      * [241]7222: locale::operator==() doesn't work on std::locale("")
   15695      * [242]7286: placement operator delete issue
   15696      * [243]7442: cxxabi.h does not match the C++ ABI
   15697      * [244]7445: poor performance of std::locale::classic() in
   15698        multi-threaded applications
   15699 
   15700     x86-64 specific
   15701 
   15702      * [245]7291: off-by-one in generated inline bzero code for x86-64
   15703 
   15704 
   15705     For questions related to the use of GCC, please consult these web
   15706     pages and the [246]GCC manuals. If that fails, the
   15707     [247]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   15708     web pages and the development of GCC are welcome on our developer
   15709     list at [248]gcc (a] gcc.gnu.org. All of [249]our lists have public
   15710     archives.
   15711 
   15712    Copyright (C) [250]Free Software Foundation, Inc. Verbatim copying and
   15713    distribution of this entire article is permitted in any medium,
   15714    provided this notice is preserved.
   15715 
   15716    These pages are [251]maintained by the GCC team. Last modified
   15717    2018-09-30[252].
   15718 
   15719 References
   15720 
   15721    1. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3
   15722    2. http://gcc.gnu.org/gcc-3.1/changes.html
   15723    3. http://gcc.gnu.org/gcc-3.2/c++-abi.html
   15724    4. https://gcc.gnu.org/PR3782
   15725    5. https://gcc.gnu.org/PR6440
   15726    6. https://gcc.gnu.org/PR7050
   15727    7. https://gcc.gnu.org/PR7741
   15728    8. https://gcc.gnu.org/PR7982
   15729    9. https://gcc.gnu.org/PR8068
   15730   10. https://gcc.gnu.org/PR8178
   15731   11. https://gcc.gnu.org/PR8396
   15732   12. https://gcc.gnu.org/PR8674
   15733   13. https://gcc.gnu.org/PR9768
   15734   14. https://gcc.gnu.org/PR9798
   15735   15. https://gcc.gnu.org/PR9799
   15736   16. https://gcc.gnu.org/PR9928
   15737   17. https://gcc.gnu.org/PR10114
   15738   18. https://gcc.gnu.org/PR10352
   15739   19. https://gcc.gnu.org/PR10336
   15740   20. https://gcc.gnu.org/PR8224
   15741   21. https://gcc.gnu.org/PR8613
   15742   22. https://gcc.gnu.org/PR8828
   15743   23. https://gcc.gnu.org/PR9226
   15744   24. https://gcc.gnu.org/PR9853
   15745   25. https://gcc.gnu.org/PR9797
   15746   26. https://gcc.gnu.org/PR9967
   15747   27. https://gcc.gnu.org/PR10116
   15748   28. https://gcc.gnu.org/PR10171
   15749   29. https://gcc.gnu.org/PR10175
   15750   30. https://gcc.gnu.org/PR8316
   15751   31. https://gcc.gnu.org/PR9169
   15752   32. https://gcc.gnu.org/PR9420
   15753   33. https://gcc.gnu.org/PR9459
   15754   34. https://gcc.gnu.org/PR9507
   15755   35. https://gcc.gnu.org/PR9538
   15756   36. https://gcc.gnu.org/PR9602
   15757   37. https://gcc.gnu.org/PR9993
   15758   38. https://gcc.gnu.org/PR10167
   15759   39. https://gcc.gnu.org/PR9652
   15760   40. https://gcc.gnu.org/PR10144
   15761   41. https://gcc.gnu.org/PR8746
   15762   42. https://gcc.gnu.org/PR9888
   15763   43. https://gcc.gnu.org/PR9638
   15764   44. https://gcc.gnu.org/PR9954
   15765   45. https://gcc.gnu.org/PR7784
   15766   46. https://gcc.gnu.org/PR7796
   15767   47. https://gcc.gnu.org/PR8281
   15768   48. https://gcc.gnu.org/PR8366
   15769   49. https://gcc.gnu.org/PR8726
   15770   50. https://gcc.gnu.org/PR9414
   15771   51. https://gcc.gnu.org/PR10067
   15772   52. https://gcc.gnu.org/PR7248
   15773   53. https://gcc.gnu.org/PR8343
   15774   54. https://gcc.gnu.org/PR9732
   15775   55. https://gcc.gnu.org/PR10073
   15776   56. https://gcc.gnu.org/PR7702
   15777   57. https://gcc.gnu.org/PR9671
   15778   58. https://gcc.gnu.org/PR8694
   15779   59. https://gcc.gnu.org/PR9953
   15780   60. https://gcc.gnu.org/PR10271
   15781   61. https://gcc.gnu.org/PR6362
   15782   62. https://gcc.gnu.org/PR10377
   15783   63. https://gcc.gnu.org/PR6955
   15784   64. https://gcc.gnu.org/PR5919
   15785   65. https://gcc.gnu.org/PR7129
   15786   66. https://gcc.gnu.org/PR7507
   15787   67. https://gcc.gnu.org/PR7622
   15788   68. https://gcc.gnu.org/PR7681
   15789   69. https://gcc.gnu.org/PR9528
   15790   70. https://gcc.gnu.org/PR8031
   15791   71. https://gcc.gnu.org/PR8275
   15792   72. https://gcc.gnu.org/PR8332
   15793   73. https://gcc.gnu.org/PR8372
   15794   74. https://gcc.gnu.org/PR8439
   15795   75. https://gcc.gnu.org/PR8442
   15796   76. https://gcc.gnu.org/PR8518
   15797   77. https://gcc.gnu.org/PR8615
   15798   78. https://gcc.gnu.org/PR8663
   15799   79. https://gcc.gnu.org/PR8799
   15800   80. https://gcc.gnu.org/PR9328
   15801   81. https://gcc.gnu.org/PR9465
   15802   82. https://gcc.gnu.org/PR47
   15803   83. https://gcc.gnu.org/PR6745
   15804   84. https://gcc.gnu.org/PR8214
   15805   85. https://gcc.gnu.org/PR8493
   15806   86. https://gcc.gnu.org/PR8332
   15807   87. https://gcc.gnu.org/PR8503
   15808   88. https://gcc.gnu.org/PR8727
   15809   89. https://gcc.gnu.org/PR7445
   15810   90. https://gcc.gnu.org/PR8230
   15811   91. https://gcc.gnu.org/PR8399
   15812   92. https://gcc.gnu.org/PR8662
   15813   93. https://gcc.gnu.org/PR8707
   15814   94. https://gcc.gnu.org/PR8708
   15815   95. https://gcc.gnu.org/PR8790
   15816   96. https://gcc.gnu.org/PR8887
   15817   97. https://gcc.gnu.org/PR9076
   15818   98. https://gcc.gnu.org/PR9151
   15819   99. https://gcc.gnu.org/PR9168
   15820  100. https://gcc.gnu.org/PR9269
   15821  101. https://gcc.gnu.org/PR9322
   15822  102. https://gcc.gnu.org/PR9433
   15823  103. https://gcc.gnu.org/PR8032
   15824  104. https://gcc.gnu.org/PR8639
   15825  105. https://gcc.gnu.org/PR8794
   15826  106. https://gcc.gnu.org/PR8832
   15827  107. https://gcc.gnu.org/PR8988
   15828  108. https://gcc.gnu.org/PR9492
   15829  109. https://gcc.gnu.org/PR9267
   15830  110. https://gcc.gnu.org/PR8344
   15831  111. https://gcc.gnu.org/PR8524
   15832  112. https://gcc.gnu.org/PR8880
   15833  113. https://gcc.gnu.org/PR9090
   15834  114. https://gcc.gnu.org/PR8588
   15835  115. https://gcc.gnu.org/PR8599
   15836  116. https://gcc.gnu.org/PR9506
   15837  117. https://gcc.gnu.org/PR9484
   15838  118. https://gcc.gnu.org/PR9292
   15839  119. https://gcc.gnu.org/PR9293
   15840  120. https://gcc.gnu.org/PR9295
   15841  121. https://gcc.gnu.org/PR9296
   15842  122. https://gcc.gnu.org/PR9316
   15843  123. https://gcc.gnu.org/PR9493
   15844  124. https://gcc.gnu.org/PR7341
   15845  125. https://gcc.gnu.org/PR8947
   15846  126. https://gcc.gnu.org/PR7448
   15847  127. https://gcc.gnu.org/PR8882
   15848  128. https://gcc.gnu.org/PR7445
   15849  129. https://gcc.gnu.org/PR2521
   15850  130. https://gcc.gnu.org/PR5661
   15851  131. https://gcc.gnu.org/PR6419
   15852  132. https://gcc.gnu.org/PR6994
   15853  133. https://gcc.gnu.org/PR7150
   15854  134. https://gcc.gnu.org/PR7160
   15855  135. https://gcc.gnu.org/PR7228
   15856  136. https://gcc.gnu.org/PR7266
   15857  137. https://gcc.gnu.org/PR7353
   15858  138. https://gcc.gnu.org/PR7411
   15859  139. https://gcc.gnu.org/PR7478
   15860  140. https://gcc.gnu.org/PR7526
   15861  141. https://gcc.gnu.org/PR7721
   15862  142. https://gcc.gnu.org/PR7803
   15863  143. https://gcc.gnu.org/PR7754
   15864  144. https://gcc.gnu.org/PR7788
   15865  145. https://gcc.gnu.org/PR8031
   15866  146. https://gcc.gnu.org/PR8055
   15867  147. https://gcc.gnu.org/PR8067
   15868  148. https://gcc.gnu.org/PR8134
   15869  149. https://gcc.gnu.org/PR8149
   15870  150. https://gcc.gnu.org/PR8160
   15871  151. https://gcc.gnu.org/PR5607
   15872  152. https://gcc.gnu.org/PR6579
   15873  153. https://gcc.gnu.org/PR6803
   15874  154. https://gcc.gnu.org/PR7176
   15875  155. https://gcc.gnu.org/PR7188
   15876  156. https://gcc.gnu.org/PR7306
   15877  157. https://gcc.gnu.org/PR7461
   15878  158. https://gcc.gnu.org/PR7524
   15879  159. https://gcc.gnu.org/PR7584
   15880  160. https://gcc.gnu.org/PR7676
   15881  161. https://gcc.gnu.org/PR7679
   15882  162. https://gcc.gnu.org/PR7811
   15883  163. https://gcc.gnu.org/PR7961
   15884  164. https://gcc.gnu.org/PR8071
   15885  165. https://gcc.gnu.org/PR8127
   15886  166. https://gcc.gnu.org/PR6745
   15887  167. https://gcc.gnu.org/PR8096
   15888  168. https://gcc.gnu.org/PR8127
   15889  169. https://gcc.gnu.org/PR8218
   15890  170. https://gcc.gnu.org/PR8287
   15891  171. https://gcc.gnu.org/PR8347
   15892  172. https://gcc.gnu.org/PR8348
   15893  173. https://gcc.gnu.org/PR8391
   15894  174. https://gcc.gnu.org/PR6627
   15895  175. https://gcc.gnu.org/PR6631
   15896  176. https://gcc.gnu.org/PR7102
   15897  177. https://gcc.gnu.org/PR7120
   15898  178. https://gcc.gnu.org/PR7209
   15899  179. https://gcc.gnu.org/PR7515
   15900  180. https://gcc.gnu.org/PR7814
   15901  181. https://gcc.gnu.org/PR8467
   15902  182. https://gcc.gnu.org/PR4890
   15903  183. https://gcc.gnu.org/PR7357
   15904  184. https://gcc.gnu.org/PR7358
   15905  185. https://gcc.gnu.org/PR7602
   15906  186. https://gcc.gnu.org/PR7862
   15907  187. https://gcc.gnu.org/PR8190
   15908  188. https://gcc.gnu.org/PR8524
   15909  189. https://gcc.gnu.org/PR5351
   15910  190. https://gcc.gnu.org/PR7591
   15911  191. https://gcc.gnu.org/PR6845
   15912  192. https://gcc.gnu.org/PR7034
   15913  193. https://gcc.gnu.org/PR7124
   15914  194. https://gcc.gnu.org/PR7174
   15915  195. https://gcc.gnu.org/PR7134
   15916  196. https://gcc.gnu.org/PR7375
   15917  197. https://gcc.gnu.org/PR7390
   15918  198. https://gcc.gnu.org/PR6890
   15919  199. https://gcc.gnu.org/PR6981
   15920  200. https://gcc.gnu.org/PR7242
   15921  201. https://gcc.gnu.org/PR7396
   15922  202. https://gcc.gnu.org/PR7630
   15923  203. https://gcc.gnu.org/PR7693
   15924  204. https://gcc.gnu.org/PR7723
   15925  205. https://gcc.gnu.org/PR7951
   15926  206. https://gcc.gnu.org/PR8146
   15927  207. https://gcc.gnu.org/PR5967
   15928  208. https://gcc.gnu.org/PR6984
   15929  209. https://gcc.gnu.org/PR7114
   15930  210. https://gcc.gnu.org/PR7130
   15931  211. https://gcc.gnu.org/PR7133
   15932  212. https://gcc.gnu.org/PR7380
   15933  213. https://gcc.gnu.org/PR8252
   15934  214. https://gcc.gnu.org/PR8451
   15935  215. https://gcc.gnu.org/PR7250
   15936  216. https://gcc.gnu.org/PR6668
   15937  217. https://gcc.gnu.org/PR7151
   15938  218. https://gcc.gnu.org/PR7335
   15939  219. https://gcc.gnu.org/PR7842
   15940  220. https://gcc.gnu.org/PR7856
   15941  221. https://gcc.gnu.org/PR7967
   15942  222. https://gcc.gnu.org/PR7374
   15943  223. https://gcc.gnu.org/PR7370
   15944  224. https://gcc.gnu.org/PR7409
   15945  225. https://gcc.gnu.org/PR8232
   15946  226. https://gcc.gnu.org/PR7623
   15947  227. https://gcc.gnu.org/PR8314
   15948  228. https://gcc.gnu.org/PR761
   15949  229. https://gcc.gnu.org/PR5610
   15950  230. https://gcc.gnu.org/PR7484
   15951  231. https://gcc.gnu.org/PR7531
   15952  232. https://gcc.gnu.org/PR8120
   15953  233. https://gcc.gnu.org/PR7320
   15954  234. https://gcc.gnu.org/PR7470
   15955  235. https://gcc.gnu.org/PR6410
   15956  236. https://gcc.gnu.org/PR6503
   15957  237. https://gcc.gnu.org/PR6642
   15958  238. https://gcc.gnu.org/PR7186
   15959  239. https://gcc.gnu.org/PR7216
   15960  240. https://gcc.gnu.org/PR7220
   15961  241. https://gcc.gnu.org/PR7222
   15962  242. https://gcc.gnu.org/PR7286
   15963  243. https://gcc.gnu.org/PR7442
   15964  244. https://gcc.gnu.org/PR7445
   15965  245. https://gcc.gnu.org/PR7291
   15966  246. https://gcc.gnu.org/onlinedocs/
   15967  247. mailto:gcc-help (a] gcc.gnu.org
   15968  248. mailto:gcc (a] gcc.gnu.org
   15969  249. https://gcc.gnu.org/lists.html
   15970  250. https://www.fsf.org/
   15971  251. https://gcc.gnu.org/about.html
   15972  252. http://validator.w3.org/check/referer
   15973 ======================================================================
   15974 http://gcc.gnu.org/gcc-3.1/index.html
   15975 
   15976                                     GCC 3.1
   15977 
   15978    July 27, 2002
   15979 
   15980    The [1]GNU project and the GCC developers are pleased to announce the
   15981    release of GCC 3.1.1.
   15982 
   15983    The links below still apply to GCC 3.1.1.
   15984 
   15985    This release series is no longer maintained.
   15986 
   15987    May 15, 2002
   15988 
   15989    The [2]GNU project and the GCC developers are pleased to announce the
   15990    release of GCC 3.1.
   15991 
   15992    GCC used to stand for the GNU C Compiler, but since the compiler
   15993    supports several other languages aside from C, it now stands for the
   15994    GNU Compiler Collection.
   15995 
   15996    A list of [3]successful builds is updated as new information becomes
   15997    available.
   15998 
   15999    The GCC developers would like to thank the numerous people that have
   16000    contributed [4]new features, improvements, bug fixes, and other changes
   16001    as well as test results to GCC. This [5]amazing group of volunteers is
   16002    what makes GCC successful.
   16003 
   16004    For additional information about GCC please refer to the [6]GCC project
   16005    web site or contact the [7]GCC development mailing list.
   16006 
   16007    To obtain GCC please use [8]our mirror sites, or our CVS server.
   16008      __________________________________________________________________
   16009 
   16010 
   16011     For questions related to the use of GCC, please consult these web
   16012     pages and the [9]GCC manuals. If that fails, the
   16013     [10]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   16014     web pages and the development of GCC are welcome on our developer
   16015     list at [11]gcc (a] gcc.gnu.org. All of [12]our lists have public
   16016     archives.
   16017 
   16018    Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and
   16019    distribution of this entire article is permitted in any medium,
   16020    provided this notice is preserved.
   16021 
   16022    These pages are [14]maintained by the GCC team. Last modified
   16023    2018-09-30[15].
   16024 
   16025 References
   16026 
   16027    1. http://www.gnu.org/
   16028    2. http://www.gnu.org/
   16029    3. http://gcc.gnu.org/gcc-3.1/buildstat.html
   16030    4. http://gcc.gnu.org/gcc-3.1/changes.html
   16031    5. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   16032    6. http://gcc.gnu.org/index.html
   16033    7. mailto:gcc (a] gcc.gnu.org
   16034    8. http://gcc.gnu.org/mirrors.html
   16035    9. https://gcc.gnu.org/onlinedocs/
   16036   10. mailto:gcc-help (a] gcc.gnu.org
   16037   11. mailto:gcc (a] gcc.gnu.org
   16038   12. https://gcc.gnu.org/lists.html
   16039   13. https://www.fsf.org/
   16040   14. https://gcc.gnu.org/about.html
   16041   15. http://validator.w3.org/check/referer
   16042 ======================================================================
   16043 http://gcc.gnu.org/gcc-3.1/changes.html
   16044 
   16045                              GCC 3.1 Release Series
   16046                         Changes, New Features, and Fixes
   16047 
   16048 Additional changes in GCC 3.1.1
   16049 
   16050      * A bug related to how structures and unions are returned has been
   16051        fixed for powerpc-*-netbsd*.
   16052      * An important bug in the implementation of -fprefetch-loop-arrays
   16053        has been fixed. Previously the optimization prefetched random
   16054        blocks of memory for most targets except for i386.
   16055      * The Java compiler now compiles Java programs much faster and also
   16056        works with parallel make.
   16057      * Nested functions have been fixed for mips*-*-netbsd*.
   16058      * Some missing floating point support routines have beed added for
   16059        mips*-*-netbsd*.
   16060      * This [1]message gives additional information about the bugs fixed
   16061        in this release.
   16062 
   16063 Caveats
   16064 
   16065      * The -traditional C compiler option has been deprecated and will be
   16066        removed in GCC 3.3. (It remains possible to preprocess non-C code
   16067        with the traditional preprocessor.)
   16068      * The default debugging format for most ELF platforms (including
   16069        GNU/Linux and FreeBSD; notable exception is Solaris) has changed
   16070        from stabs to DWARF2. This requires GDB 5.1.1 or later.
   16071 
   16072 General Optimizer Improvements
   16073 
   16074      * Jan Hubicka, SuSE Labs, together with Richard Henderson, Red Hat,
   16075        and Andreas Jaeger, SuSE Labs, has contributed [2]infrastructure
   16076        for profile driven optimizations.
   16077        Options -fprofile-arcs and -fbranch-probabilities can now be used
   16078        to improve speed of the generated code by profiling the actual
   16079        program behaviour on typical runs. In the absence of profile info
   16080        the compiler attempts to guess the profile statically.
   16081      * [3]SPEC2000 and SPEC95 benchmark suites are now used daily to
   16082        monitor performance of the generated code.
   16083        According to the SPECInt2000 results on an AMD Athlon CPU, the code
   16084        generated by GCC 3.1 is 6% faster on the average (8.2% faster with
   16085        profile feedback) compared to GCC 3.0. The code produced by GCC 3.0
   16086        is about 2.1% faster compared to 2.95.3. Tests were done using the
   16087        -O2 -march=athlon command-line options.
   16088      * Alexandre Oliva, of Red Hat, has generalized the tree inlining
   16089        infrastructure developed by CodeSourcery, LLC for the C++ front
   16090        end, so that it is now used in the C front end too. Inlining
   16091        functions as trees exposes them earlier to the compiler, giving it
   16092        more opportunities for optimization.
   16093      * Support for data prefetching instructions has been added to the GCC
   16094        back end and several targets. A new __builtin_prefetch intrinsic is
   16095        available to explicitly insert prefetch instructions and
   16096        experimental support for loop array prefetching has been added (see
   16097        -fprefetch-loop-array documentation).
   16098      * Support for emitting debugging information for macros has been
   16099        added for DWARF2. It is activated using -g3.
   16100 
   16101 New Languages and Language specific improvements
   16102 
   16103   C/C++
   16104 
   16105      * A few more [4]ISO C99 features.
   16106      * The preprocessor is 10-50% faster than the preprocessor in GCC 3.0.
   16107      * The preprocessor's symbol table has been merged with the symbol
   16108        table of the C, C++ and Objective-C front ends.
   16109      * The preprocessor consumes less memory than the preprocessor in GCC
   16110        3.0, often significantly so. On normal input files, it typically
   16111        consumes less memory than pre-3.0 cccp-based GCC, too.
   16112 
   16113   C++
   16114 
   16115      * -fhonor-std and -fno-honor-std have been removed. -fno-honor-std
   16116        was a workaround to allow std compliant code to work with the
   16117        non-std compliant libstdc++-v2. libstdc++-v3 is std compliant.
   16118      * The C++ ABI has been fixed so that void (A::*)() const is mangled
   16119        as "M1AKFvvE", rather than "MK1AFvvE" as before. This change only
   16120        affects pointer to cv-qualified member function types.
   16121      * The C++ ABI has been changed to correctly handle this code:
   16122     struct A {
   16123       void operator delete[] (void *, size_t);
   16124     };
   16125 
   16126     struct B : public A {
   16127     };
   16128 
   16129     new B[10];
   16130 
   16131        The amount of storage allocated for the array will be greater than
   16132        it was in 3.0, in order to store the number of elements in the
   16133        array, so that the correct size can be passed to operator delete[]
   16134        when the array is deleted. Previously, the value passed to operator
   16135        delete[] was unpredictable.
   16136        This change will only affect code that declares a two-argument
   16137        operator delete[] with a second parameter of type size_t in a base
   16138        class, and does not override that definition in a derived class.
   16139      * The C++ ABI has been changed so that:
   16140     struct A {
   16141       void operator delete[] (void *, size_t);
   16142       void operator delete[] (void *);
   16143     };
   16144 
   16145        does not cause unnecessary storage to be allocated when an array of
   16146        A objects is allocated.
   16147        This change will only affect code that declares both of these forms
   16148        of operator delete[], and declared the two-argument form before the
   16149        one-argument form.
   16150      * The C++ ABI has been changed so that when a parameter is passed by
   16151        value, any cleanup for that parameter is performed in the caller,
   16152        as specified by the ia64 C++ ABI, rather than the called function
   16153        as before. As a result, classes with a non-trivial destructor but a
   16154        trivial copy constructor will be passed and returned by invisible
   16155        reference, rather than by bitwise copy as before.
   16156      * G++ now supports the "named return value optimization": for code
   16157        like
   16158     A f () {
   16159       A a;
   16160       ...
   16161       return a;
   16162     }
   16163 
   16164        G++ will allocate a in the return value slot, so that the return
   16165        becomes a no-op. For this to work, all return statements in the
   16166        function must return the same variable.
   16167      * Improvements to the C++ library are listed in [5]the libstdc++-v3
   16168        FAQ.
   16169 
   16170   Objective-C
   16171 
   16172      * Annoying linker warnings (due to incorrect code being generated)
   16173        have been fixed.
   16174      * If a class method cannot be found, the compiler no longer issues a
   16175        warning if a corresponding instance method exists in the root
   16176        class.
   16177      * Forward @protocol declarations have been fixed.
   16178      * Loading of categories has been fixed in certain situations (GNU run
   16179        time only).
   16180      * The class lookup in the run-time library has been rewritten so that
   16181        class method dispatch is more than twice as fast as it used to be
   16182        (GNU run time only).
   16183 
   16184   Java
   16185 
   16186      * libgcj now includes RMI, java.lang.ref.*, javax.naming, and
   16187        javax.transaction.
   16188      * Property files and other system resources can be compiled into
   16189        executables which use libgcj using the new gcj --resource feature.
   16190      * libgcj has been ported to more platforms. In particular there is
   16191        now a mostly-functional mingw32 (Windows) target port.
   16192      * JNI and CNI invocation interfaces were implemented, so gcj-compiled
   16193        Java code can now be called from a C/C++ application.
   16194      * gcj can now use builtin functions for certain known methods, for
   16195        instance Math.cos.
   16196      * gcj can now automatically remove redundant array-store checks in
   16197        some common cases.
   16198      * The --no-store-checks optimization option was added. This can be
   16199        used to omit runtime store checks for code which is known not to
   16200        throw ArrayStoreException
   16201      * The following third party interface standards were added to libgcj:
   16202        org.w3c.dom and org.xml.sax.
   16203      * java.security has been merged with GNU Classpath. The new package
   16204        is now JDK 1.2 compliant, and much more complete.
   16205      * A bytecode verifier was added to the libgcj interpreter.
   16206      * java.lang.Character was rewritten to comply with the Unicode 3.0
   16207        standard, and improve performance.
   16208      * Partial support for many more locales was added to libgcj.
   16209      * Socket timeouts have been implemented.
   16210      * libgcj has been merged into a single shared library. There are no
   16211        longer separate shared libraries for the garbage collector and
   16212        zlib.
   16213      * Several performance improvements were made to gcj and libgcj:
   16214           + Hash synchronization (thin locks)
   16215           + A special allocation path for finalizer-free objects
   16216           + Thread-local allocation
   16217           + Parallel GC, and other GC tweaks
   16218 
   16219   Fortran
   16220 
   16221    Fortran improvements are listed in [6]the Fortran documentation.
   16222 
   16223   Ada
   16224 
   16225    [7]AdaCore, has contributed its GNAT Ada 95 front end and associated
   16226    tools. The GNAT compiler fully implements the Ada language as defined
   16227    by the ISO/IEC 8652 standard.
   16228 
   16229    Please note that the integration of the Ada front end is still work in
   16230    progress.
   16231 
   16232 New Targets and Target Specific Improvements
   16233 
   16234      * Hans-Peter Nilsson has contributed a port to MMIX, the CPU
   16235        architecture used in new editions of Donald E. Knuth's The Art of
   16236        Computer Programming.
   16237      * Axis Communications has contributed its port to the CRIS CPU
   16238        architecture, used in the ETRAX system-on-a-chip series.
   16239      * Alexandre Oliva, of Red Hat, has contributed a port to the SuperH
   16240        SH5 64-bit RISC microprocessor architecture, extending the existing
   16241        SH port.
   16242      * UltraSPARC is fully supported in 64-bit mode. The option -m64
   16243        enables it.
   16244      * For compatibility with the Sun compiler #pragma redefine_extname
   16245        has been implemented on Solaris.
   16246      * The x86 back end has had some noticeable work done to it.
   16247           + SuSE Labs developers Jan Hubicka, Bo Thorsen and Andreas
   16248             Jaeger have contributed a port to the AMD x86-64 architecture.
   16249             For more information on x86-64 see http://www.x86-64.org.
   16250           + The compiler now supports MMX, 3DNow!, SSE, and SSE2
   16251             instructions. Options -mmmx, -m3dnow, -msse, and -msse2 will
   16252             enable the respective instruction sets. Intel C++ compatible
   16253             MMX/3DNow!/SSE intrinsics are implemented. SSE2 intrinsics
   16254             will be added in next major release.
   16255           + Following those improvements, targets for Pentium MMX, K6-2,
   16256             K6-3, Pentium III, Pentium 4, and Athlon 4 Mobile/XP/MP were
   16257             added. Refer to the documentation on -march= and -mcpu=
   16258             options for details.
   16259           + For those targets that support it, -mfpmath=sse will cause the
   16260             compiler to generate SSE/SSE2 instructions for floating point
   16261             math instead of x87 instructions. Usually, this will lead to
   16262             quicker code -- especially on the Pentium 4. Note that only
   16263             scalar floating point instructions are used and GCC does not
   16264             exploit SIMD features yet.
   16265           + Prefetch support has been added to the Pentium III, Pentium 4,
   16266             K6-2, K6-3, and Athlon series.
   16267           + Code generated for floating point to integer conversions has
   16268             been improved leading to better performance of many 3D
   16269             applications.
   16270      * The PowerPC back end has added 64-bit PowerPC GNU/Linux support.
   16271      * C++ support for AIX has been improved.
   16272      * Aldy Hernandez, of Red Hat, Inc, has contributed extensions to the
   16273        PowerPC port supporting the AltiVec programming model (SIMD). The
   16274        support, though presently useful, is experimental and is expected
   16275        to stabilize for 3.2. The support is written to conform to
   16276        Motorola's AltiVec specs. See -maltivec.
   16277 
   16278 Obsolete Systems
   16279 
   16280    Support for a number of older systems has been declared obsolete in GCC
   16281    3.1. Unless there is activity to revive them, the next release of GCC
   16282    will have their sources permanently removed.
   16283 
   16284    All configurations of the following processor architectures have been
   16285    declared obsolete:
   16286      * MIL-STD-1750A, 1750a-*-*
   16287      * AMD A29k, a29k-*-*
   16288      * Convex, c*-convex-*
   16289      * Clipper, clipper-*-*
   16290      * Elxsi, elxsi-*-*
   16291      * Intel i860, i860-*-*
   16292      * Sun picoJava, pj-*-* and pjl-*-*
   16293      * Western Electric 32000, we32k-*-*
   16294 
   16295    Most configurations of the following processor architectures have been
   16296    declared obsolete, but we are preserving a few systems which may have
   16297    active developers. It is unlikely that the remaining systems will
   16298    survive much longer unless we see definite signs of port activity.
   16299      * Motorola 88000 except
   16300           + Generic a.out, m88k-*-aout*
   16301           + Generic SVR4, m88k-*-sysv4
   16302           + OpenBSD, m88k-*-openbsd*
   16303      * NS32k except
   16304           + NetBSD, ns32k-*-netbsd*
   16305           + OpenBSD, ns32k-*-openbsd*.
   16306      * ROMP except
   16307           + OpenBSD, romp-*-openbsd*.
   16308 
   16309    Finally, only some configurations of these processor architectures are
   16310    being obsoleted.
   16311      * Alpha:
   16312           + OSF/1, alpha*-*-osf[123]*. (Digital Unix and Tru64 Unix, aka
   16313             alpha*-*-osf[45], are still supported.)
   16314      * ARM:
   16315           + RISCiX, arm-*-riscix*.
   16316      * i386:
   16317           + 386BSD, i?86-*-bsd*
   16318           + Chorus, i?86-*-chorusos*
   16319           + DG/UX, i?86-*-dgux*
   16320           + FreeBSD 1.x, i?86-*-freebsd1.*
   16321           + IBM AIX, i?86-*-aix*
   16322           + ISC UNIX, i?86-*-isc*
   16323           + GNU/Linux with pre-BFD linker, i?86-*-linux*oldld*
   16324           + NEXTstep, i?86-next-*
   16325           + OSF UNIX, i?86-*-osf1* and i?86-*-osfrose*
   16326           + RTEMS/coff, i?86-*-rtemscoff*
   16327           + RTEMS/go32, i?86-go32-rtems*
   16328           + Sequent/BSD, i?86-sequent-bsd*
   16329           + Sequent/ptx before version 3, i?86-sequent-ptx[12]* and
   16330             i?86-sequent-sysv3*
   16331           + SunOS, i?86-*-sunos*
   16332      * Motorola 68000:
   16333           + Altos, m68[k0]*-altos-*
   16334           + Apollo, m68[k0]*-apollo-*
   16335           + Apple A/UX, m68[k0]*-apple-*
   16336           + Bull, m68[k0]*-bull-*
   16337           + Convergent, m68[k0]*-convergent-*
   16338           + Generic SVR3, m68[k0]*-*-sysv3*
   16339           + ISI, m68[k0]*-isi-*
   16340           + LynxOS, m68[k0]*-*-lynxos*
   16341           + NEXT, m68[k0]*-next-*
   16342           + RTEMS/coff, m68[k0]*-*-rtemscoff*
   16343           + Sony, m68[k0]*-sony-*
   16344      * MIPS:
   16345           + DEC Ultrix, mips-*-ultrix* and mips-dec-*
   16346           + Generic BSD, mips-*-bsd*
   16347           + Generic System V, mips-*-sysv*
   16348           + IRIX before version 5, mips-sgi-irix[1234]*
   16349           + RiscOS, mips-*-riscos*
   16350           + Sony, mips-sony-*
   16351           + Tandem, mips-tandem-*
   16352      * SPARC:
   16353           + RTEMS/a.out, sparc-*-rtemsaout*.
   16354 
   16355 Documentation improvements
   16356 
   16357      * The old manual ("Using and Porting the GNU Compiler Collection")
   16358        has been replaced by a users manual ("Using the GNU Compiler
   16359        Collection") and a separate internals reference manual ("GNU
   16360        Compiler Collection Internals").
   16361      * More complete and much improved documentation about GCC's internal
   16362        representation used by the C and C++ front ends.
   16363      * Many cleanups and improvements in general.
   16364 
   16365 
   16366     For questions related to the use of GCC, please consult these web
   16367     pages and the [8]GCC manuals. If that fails, the
   16368     [9]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   16369     web pages and the development of GCC are welcome on our developer
   16370     list at [10]gcc (a] gcc.gnu.org. All of [11]our lists have public
   16371     archives.
   16372 
   16373    Copyright (C) [12]Free Software Foundation, Inc. Verbatim copying and
   16374    distribution of this entire article is permitted in any medium,
   16375    provided this notice is preserved.
   16376 
   16377    These pages are [13]maintained by the GCC team. Last modified
   16378    2018-09-30[14].
   16379 
   16380 References
   16381 
   16382    1. https://gcc.gnu.org/ml/gcc/2002-07/msg01208.html
   16383    2. http://gcc.gnu.org/news/profiledriven.html
   16384    3. http://gcc.gnu.org/benchmarks/
   16385    4. http://gcc.gnu.org/c99status.html
   16386    5. https://gcc.gnu.org/onlinedocs/libstdc++/faq.html
   16387    6. https://gcc.gnu.org/onlinedocs/gcc-3.1.1/g77/News.html
   16388    7. https://www.adacore.com/
   16389    8. https://gcc.gnu.org/onlinedocs/
   16390    9. mailto:gcc-help (a] gcc.gnu.org
   16391   10. mailto:gcc (a] gcc.gnu.org
   16392   11. https://gcc.gnu.org/lists.html
   16393   12. https://www.fsf.org/
   16394   13. https://gcc.gnu.org/about.html
   16395   14. http://validator.w3.org/check/referer
   16396 ======================================================================
   16397 http://gcc.gnu.org/gcc-3.0/index.html
   16398 
   16399                                    GCC 3.0.4
   16400 
   16401    February 20, 2002
   16402 
   16403    The [1]GNU project and the GCC developers are pleased to announce the
   16404    release of GCC 3.0.4, which is a bug-fix release for the GCC 3.0
   16405    series.
   16406 
   16407    This release series is no longer maintained.
   16408 
   16409    GCC used to stand for the GNU C Compiler, but since the compiler
   16410    supports several other languages aside from C, it now stands for the
   16411    GNU Compiler Collection.
   16412 
   16413    GCC 3.0.x has several new optimizations, new targets, new languages and
   16414    many other new features, relative to GCC 2.95.x. See the [2]new
   16415    features page for a more complete list.
   16416 
   16417    A list of [3]successful builds is updated as new information becomes
   16418    available.
   16419 
   16420    The GCC developers would like to thank the numerous people that have
   16421    contributed new features, test results, bug fixes, etc to GCC. This
   16422    [4]amazing group of volunteers is what makes GCC successful.
   16423 
   16424    And finally, we can't in good conscience fail to mention some
   16425    [5]caveats to using GCC 3.0.x.
   16426 
   16427    For additional information about GCC please refer to the [6]GCC project
   16428    web site or contact the [7]GCC development mailing list.
   16429 
   16430    To obtain GCC please use [8]our mirror sites, or our CVS server.
   16431      __________________________________________________________________
   16432 
   16433 Previous 3.0.x Releases
   16434 
   16435    December 20, 2001: GCC 3.0.3 has been released.
   16436    October 25, 2001: GCC 3.0.2 has been released.
   16437    August 20, 2001: GCC 3.0.1 has been released.
   16438    June 18, 2001: GCC 3.0 has been released.
   16439 
   16440 
   16441     For questions related to the use of GCC, please consult these web
   16442     pages and the [9]GCC manuals. If that fails, the
   16443     [10]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   16444     web pages and the development of GCC are welcome on our developer
   16445     list at [11]gcc (a] gcc.gnu.org. All of [12]our lists have public
   16446     archives.
   16447 
   16448    Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and
   16449    distribution of this entire article is permitted in any medium,
   16450    provided this notice is preserved.
   16451 
   16452    These pages are [14]maintained by the GCC team. Last modified
   16453    2018-09-30[15].
   16454 
   16455 References
   16456 
   16457    1. http://www.gnu.org/
   16458    2. http://gcc.gnu.org/gcc-3.0/features.html
   16459    3. http://gcc.gnu.org/gcc-3.0/buildstat.html
   16460    4. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   16461    5. http://gcc.gnu.org/gcc-3.0/caveats.html
   16462    6. http://gcc.gnu.org/index.html
   16463    7. mailto:gcc (a] gcc.gnu.org
   16464    8. http://gcc.gnu.org/mirrors.html
   16465    9. https://gcc.gnu.org/onlinedocs/
   16466   10. mailto:gcc-help (a] gcc.gnu.org
   16467   11. mailto:gcc (a] gcc.gnu.org
   16468   12. https://gcc.gnu.org/lists.html
   16469   13. https://www.fsf.org/
   16470   14. https://gcc.gnu.org/about.html
   16471   15. http://validator.w3.org/check/referer
   16472 ======================================================================
   16473 http://gcc.gnu.org/gcc-3.0/features.html
   16474 
   16475                               GCC 3.0 New Features
   16476 
   16477 Additional changes in GCC 3.0.4
   16478 
   16479      * GCC 3.0 now supports newer versions of the [1]NetBSD operating
   16480        system, which use the ELF object file format, on x86 processors.
   16481      * Correct debugging information is generated from functions that have
   16482        lines from multiple files (e.g. yacc output).
   16483      * A fix for whitespace handling in the -traditional preprocessor,
   16484        which can affect Fortran.
   16485      * Fixes to the exception handling runtime.
   16486      * More fixes for bad code generation in C++.
   16487      * A fix for shared library generation under AIX 4.3.
   16488      * Documentation updates.
   16489      * Port of GCC to Tensilica's Xtensa processor contributed.
   16490      * A fix for compiling the PPC Linux kernel (FAT fs wouldn't link).
   16491 
   16492 Additional changes in GCC 3.0.3
   16493 
   16494      * A fix to correct an accidental change to the PowerPC ABI.
   16495      * Fixes for bad code generation on a variety of architectures.
   16496      * Improvements to the debugging information generated for C++
   16497        classes.
   16498      * Fixes for bad code generation in C++.
   16499      * A fix to avoid crashes in the C++ demangler.
   16500      * A fix to the C++ standard library to avoid buffer overflows.
   16501      * Miscellaneous improvements for a variety of architectures.
   16502 
   16503 Additional changes in GCC 3.0.2
   16504 
   16505      * Fixes for bad code generation during loop unrolling.
   16506      * Fixes for bad code generation by the sibling call optimization.
   16507      * Minor improvements to x86 code generation.
   16508      * Implementation of function descriptors in C++ vtables for IA64.
   16509      * Numerous minor bug-fixes.
   16510 
   16511 Additional changes in GCC 3.0.1
   16512 
   16513      * C++ fixes for incorrect code-generation.
   16514      * Improved cross-compiling support for the C++ standard library.
   16515      * Fixes for some embedded targets that worked in GCC 2.95.3, but not
   16516        in GCC 3.0.
   16517      * Fixes for various exception-handling bugs.
   16518      * A port to the S/390 architecture.
   16519 
   16520 General Optimizer Improvements
   16521 
   16522      * [2]Basic block reordering pass.
   16523      * New if-conversion pass with support for conditional (predicated)
   16524        execution.
   16525      * New tail call and sibling call elimination optimizations.
   16526      * New register renaming pass.
   16527      * New (experimental) [3]static single assignment (SSA) representation
   16528        support.
   16529      * New dead-code elimination pass implemented using the SSA
   16530        representation.
   16531      * [4]Global null pointer test elimination.
   16532      * [5]Global code hoisting/unification.
   16533      * More builtins and optimizations for stdio.h, string.h and old BSD
   16534        functions, as well as for ISO C99 functions.
   16535      * New builtin __builtin_expect for giving hints to the branch
   16536        predictor.
   16537 
   16538 New Languages and Language specific improvements
   16539 
   16540      * The GNU Compiler for the Java(TM) language (GCJ) is now integrated
   16541        and supported, including the run-time library containing most
   16542        common non-GUI Java classes, a bytecode interpreter, and the Boehm
   16543        conservative garbage collector. Many bugs have been fixed. GCJ can
   16544        compile Java source or Java bytecodes to either native code or Java
   16545        class files, and supports native methods written in either the
   16546        standard JNI or the more efficient and convenient CNI.
   16547      * Here is a [6]partial list of C++ improvements, both new features
   16548        and those no longer supported.
   16549      * New C++ ABI. On the IA-64 platform GCC is capable of
   16550        inter-operating with other IA-64 compilers.
   16551      * The new ABI also significantly reduces the size of symbol and debug
   16552        information.
   16553      * New C++ support library and many C++ bug fixes, vastly improving
   16554        our conformance to the ISO C++ standard.
   16555      * New [7]inliner for C++.
   16556      * Rewritten C preprocessor, integrated into the C, C++ and Objective
   16557        C compilers, with very many improvements including ISO C99 support
   16558        and [8]improvements to dependency generation.
   16559      * Support for more [9]ISO C99 features.
   16560      * Many improvements to support for checking calls to format functions
   16561        such as printf and scanf, including support for ISO C99 format
   16562        features, extensions from the Single Unix Specification and GNU
   16563        libc 2.2, checking of strfmon formats and features to assist in
   16564        auditing for format string security bugs.
   16565      * New warnings for C code that may have undefined semantics because
   16566        of violations of sequence point rules in the C standard (such as a
   16567        = a++;, a[n] = b[n++]; and a[i++] = i;), included in -Wall.
   16568      * Additional warning option -Wfloat-equal.
   16569      * Improvements to -Wtraditional.
   16570      * Fortran improvements are listed in [10]the Fortran documentation.
   16571 
   16572 New Targets and Target Specific Improvements
   16573 
   16574      * New x86 back end, generating much improved code.
   16575      * Support for a generic i386-elf target contributed.
   16576      * New option to emit x86 assembly code using Intel style syntax
   16577        (-mintel-syntax).
   16578      * HPUX 11 support contributed.
   16579      * Improved PowerPC code generation, including scheduled prologue and
   16580        epilogue.
   16581      * Port of GCC to Intel's IA-64 processor contributed.
   16582      * Port of GCC to Motorola's MCore 210 and 340 contributed.
   16583      * New unified back-end for Arm, Thumb and StrongArm contributed.
   16584      * Port of GCC to Intel's XScale processor contributed.
   16585      * Port of GCC to Atmel's AVR microcontrollers contributed.
   16586      * Port of GCC to Mitsubishi's D30V processor contributed.
   16587      * Port of GCC to Matsushita's AM33 processor (a member of the MN10300
   16588        processor family) contributed.
   16589      * Port of GCC to Fujitsu's FR30 processor contributed.
   16590      * Port of GCC to Motorola's 68HC11 and 68HC12 processors contributed.
   16591      * Port of GCC to Sun's picoJava processor core contributed.
   16592 
   16593 Documentation improvements
   16594 
   16595      * Substantially rewritten and improved C preprocessor manual.
   16596      * Many improvements to other documentation.
   16597      * Manpages for gcc, cpp and gcov are now generated automatically from
   16598        the master Texinfo manual, eliminating the problem of manpages
   16599        being out of date. (The generated manpages are only extracts from
   16600        the full manual, which is provided in Texinfo form, from which
   16601        info, HTML, other formats and a printed manual can be generated.)
   16602      * Generated info files are included in the release tarballs alongside
   16603        their Texinfo sources, avoiding problems on some platforms with
   16604        building makeinfo as part of the GCC distribution.
   16605 
   16606 Other significant improvements
   16607 
   16608      * Garbage collection used internally by the compiler for most memory
   16609        allocation instead of obstacks.
   16610      * Lengauer and Tarjan algorithm used for computing dominators in the
   16611        CFG. This algorithm can be significantly faster and more space
   16612        efficient than our older algorithm.
   16613      * gccbug script provided to assist in submitting bug reports to our
   16614        bug tracking system. (Bug reports previously submitted directly to
   16615        our mailing lists, for which you received no bug tracking number,
   16616        should be submitted again using gccbug if you can reproduce the
   16617        problem with GCC 3.0.)
   16618      * The internal libgcc library is [11]built as a shared library on
   16619        systems that support it.
   16620      * Extensive testsuite included with GCC, with many new tests. In
   16621        addition to tests for GCC bugs that have been fixed, many tests
   16622        have been added for language features, compiler warnings and
   16623        builtin functions.
   16624      * Additional language-independent warning options -Wpacked, -Wpadded,
   16625        -Wunreachable-code and -Wdisabled-optimization.
   16626      * Target-independent options -falign-functions, -falign-loops and
   16627        -falign-jumps.
   16628 
   16629    Plus a great many bug fixes and almost all the [12]features found in
   16630    GCC 2.95.
   16631 
   16632 
   16633     For questions related to the use of GCC, please consult these web
   16634     pages and the [13]GCC manuals. If that fails, the
   16635     [14]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   16636     web pages and the development of GCC are welcome on our developer
   16637     list at [15]gcc (a] gcc.gnu.org. All of [16]our lists have public
   16638     archives.
   16639 
   16640    Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
   16641    distribution of this entire article is permitted in any medium,
   16642    provided this notice is preserved.
   16643 
   16644    These pages are [18]maintained by the GCC team. Last modified
   16645    2018-09-30[19].
   16646 
   16647 References
   16648 
   16649    1. http://www.netbsd.org/
   16650    2. http://gcc.gnu.org/news/reorder.html
   16651    3. http://gcc.gnu.org/news/ssa.html
   16652    4. http://gcc.gnu.org/news/null.html
   16653    5. http://gcc.gnu.org/news/unify.html
   16654    6. http://gcc.gnu.org/gcc-3.0/c++features.html
   16655    7. http://gcc.gnu.org/news/inlining.html
   16656    8. http://gcc.gnu.org/news/dependencies.html
   16657    9. http://gcc.gnu.org/c99status.html
   16658   10. https://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html
   16659   11. http://gcc.gnu.org/gcc-3.0/libgcc.html
   16660   12. http://gcc.gnu.org/gcc-2.95/features.html
   16661   13. https://gcc.gnu.org/onlinedocs/
   16662   14. mailto:gcc-help (a] gcc.gnu.org
   16663   15. mailto:gcc (a] gcc.gnu.org
   16664   16. https://gcc.gnu.org/lists.html
   16665   17. https://www.fsf.org/
   16666   18. https://gcc.gnu.org/about.html
   16667   19. http://validator.w3.org/check/referer
   16668 ======================================================================
   16669 http://gcc.gnu.org/gcc-3.0/caveats.html
   16670 
   16671                                 GCC 3.0 Caveats
   16672 
   16673      * -fstrict-aliasing is now part of -O2 and higher optimization
   16674        levels. This allows the compiler to assume the strictest aliasing
   16675        rules applicable to the language being compiled. For C and C++,
   16676        this activates optimizations based on the type of expressions. This
   16677        optimization may thus break old, non-compliant code.
   16678      * Enumerations are now properly promoted to int in function
   16679        parameters and function returns. Normally this change is not
   16680        visible, but when using -fshort-enums this is an ABI change.
   16681      * The undocumented extension that allowed C programs to have a label
   16682        at the end of a compound statement has been deprecated and may be
   16683        removed in a future version. Programs that now generate a warning
   16684        about this may be fixed by adding a null statement (a single
   16685        semicolon) after the label.
   16686      * The poorly documented extension that allowed string constants in C,
   16687        C++ and Objective C to contain unescaped newlines has been
   16688        deprecated and may be removed in a future version. Programs using
   16689        this extension may be fixed in several ways: the bare newline may
   16690        be replaced by \n, or preceded by \n\, or string concatenation may
   16691        be used with the bare newline preceded by \n" and " placed at the
   16692        start of the next line.
   16693      * The Chill compiler is not included in GCC 3.0, because of the lack
   16694        of a volunteer to convert it to use garbage collection.
   16695      * Certain non-standard iostream methods from earlier versions of
   16696        libstdc++ are not included in libstdc++ v3, i.e. filebuf::attach,
   16697        ostream::form, and istream::gets.
   16698      * The new C++ ABI is not yet fully supported by current (as of
   16699        2001-07-01) releases and development versions of GDB, or any
   16700        earlier versions. There is a problem setting breakpoints by line
   16701        number, and other related issues that have been fixed in GCC 3.0
   16702        but not yet handled in GDB:
   16703        [1]https://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
   16704 
   16705 
   16706     For questions related to the use of GCC, please consult these web
   16707     pages and the [2]GCC manuals. If that fails, the
   16708     [3]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   16709     web pages and the development of GCC are welcome on our developer
   16710     list at [4]gcc (a] gcc.gnu.org. All of [5]our lists have public archives.
   16711 
   16712    Copyright (C) [6]Free Software Foundation, Inc. Verbatim copying and
   16713    distribution of this entire article is permitted in any medium,
   16714    provided this notice is preserved.
   16715 
   16716    These pages are [7]maintained by the GCC team. Last modified
   16717    2018-09-30[8].
   16718 
   16719 References
   16720 
   16721    1. https://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
   16722    2. https://gcc.gnu.org/onlinedocs/
   16723    3. mailto:gcc-help (a] gcc.gnu.org
   16724    4. mailto:gcc (a] gcc.gnu.org
   16725    5. https://gcc.gnu.org/lists.html
   16726    6. https://www.fsf.org/
   16727    7. https://gcc.gnu.org/about.html
   16728    8. http://validator.w3.org/check/referer
   16729 ======================================================================
   16730 http://gcc.gnu.org/gcc-2.95/index.html
   16731 
   16732                                     GCC 2.95
   16733 
   16734    March 16, 2001: The GNU project and the GCC developers are pleased to
   16735    announce the release of GCC version 2.95.3.
   16736 
   16737    This release is no longer maintained.
   16738 
   16739 Release History
   16740 
   16741    GCC 2.95.3
   16742           March 16, 2001
   16743 
   16744    GCC 2.95.2
   16745           October 27, 1999
   16746 
   16747    GCC 2.95.1
   16748           August 19, 1999
   16749 
   16750    GCC 2.95
   16751           July 31, 1999. This is the first release of GCC since the April
   16752           1999 GCC/EGCS reunification and includes nearly a year's worth
   16753           of new development and bugfixes.
   16754 
   16755 References and Acknowledgements
   16756 
   16757    GCC used to stand for the GNU C Compiler, but since the compiler
   16758    supports several other languages aside from C, it now stands for the
   16759    GNU Compiler Collection.
   16760 
   16761    The whole suite has been extensively [1]regression tested and
   16762    [2]package tested. It should be reliable and suitable for widespread
   16763    use.
   16764 
   16765    The compiler has several new optimizations, new targets, new languages
   16766    and other new features. See the [3]new features page for a more
   16767    complete list of new features found in the GCC 2.95 releases.
   16768 
   16769    The sources include installation instructions in both HTML and
   16770    plaintext forms in the install directory in the distribution. However,
   16771    the most up to date installation instructions and [4]build/test status
   16772    are on the web pages. We will update those pages as new information
   16773    becomes available.
   16774 
   16775    The GCC developers would like to thank the numerous people that have
   16776    contributed new features, test results, bugfixes, etc to GCC. This
   16777    [5]amazing group of volunteers is what makes GCC successful.
   16778 
   16779    And finally, we can't in good conscience fail to mention some
   16780    [6]caveats to using GCC 2.95.
   16781 
   16782    Download GCC 2.95 from one of our many [7]mirror sites.
   16783 
   16784    For additional information about GCC please see the [8]GCC project web
   16785    server or contact the [9]GCC development mailing list.
   16786 
   16787 
   16788     For questions related to the use of GCC, please consult these web
   16789     pages and the [10]GCC manuals. If that fails, the
   16790     [11]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   16791     web pages and the development of GCC are welcome on our developer
   16792     list at [12]gcc (a] gcc.gnu.org. All of [13]our lists have public
   16793     archives.
   16794 
   16795    Copyright (C) [14]Free Software Foundation, Inc. Verbatim copying and
   16796    distribution of this entire article is permitted in any medium,
   16797    provided this notice is preserved.
   16798 
   16799    These pages are [15]maintained by the GCC team. Last modified
   16800    2018-09-30[16].
   16801 
   16802 References
   16803 
   16804    1. http://gcc.gnu.org/gcc-2.95/regress.html
   16805    2. http://gcc.gnu.org/gcc-2.95/othertest.html
   16806    3. http://gcc.gnu.org/gcc-2.95/features.html
   16807    4. http://gcc.gnu.org/gcc-2.95/buildstat.html
   16808    5. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   16809    6. http://gcc.gnu.org/gcc-2.95/caveats.html
   16810    7. http://gcc.gnu.org/mirrors.html
   16811    8. http://gcc.gnu.org/index.html
   16812    9. mailto:gcc (a] gcc.gnu.org
   16813   10. https://gcc.gnu.org/onlinedocs/
   16814   11. mailto:gcc-help (a] gcc.gnu.org
   16815   12. mailto:gcc (a] gcc.gnu.org
   16816   13. https://gcc.gnu.org/lists.html
   16817   14. https://www.fsf.org/
   16818   15. https://gcc.gnu.org/about.html
   16819   16. http://validator.w3.org/check/referer
   16820 ======================================================================
   16821 http://gcc.gnu.org/gcc-2.95/features.html
   16822 
   16823                              GCC 2.95 New Features
   16824 
   16825      * General Optimizer Improvements:
   16826           + [1]Localized register spilling to improve speed and code
   16827             density especially on small register class machines.
   16828           + [2]Global CSE using lazy code motion algorithms.
   16829           + [3]Improved global constant/copy propagation.
   16830           + [4]Improved control flow graph analysis and manipulation.
   16831           + [5]Local dead store elimination.
   16832           + [6]Memory Load hoisting/store sinking in loops.
   16833           + [7]Type based alias analysis is enabled by default. Note this
   16834             feature will expose bugs in the Linux kernel. Please refer to
   16835             the FAQ (as shipped with GCC 2.95) for additional information
   16836             on this issue.
   16837           + Major revamp of GIV detection, combination and simplification
   16838             to improve loop performance.
   16839           + Major improvements to register allocation and reloading.
   16840      * New Languages and Language specific improvements
   16841           + [8]Many C++ improvements.
   16842           + [9]Many Fortran improvements.
   16843           + [10]Java front-end has been integrated. A [11]runtime library
   16844             is available separately.
   16845           + [12]ISO C99 support
   16846           + [13]Chill front-end and runtime has been integrated.
   16847           + Boehm garbage collector support in libobjc.
   16848           + More support for various pragmas which appear in vendor
   16849             include files
   16850      * New Targets and Target Specific Improvements
   16851           + [14]SPARC backend rewrite.
   16852           + -mschedule=8000 will optimize code for PA8000 class
   16853             processors; -mpa-risc-2-0 will generate code for PA2.0
   16854             processors
   16855           + Various micro-optimizations for the ia32 port. K6
   16856             optimizations
   16857           + Compiler will attempt to align doubles in the stack on the
   16858             ia32 port
   16859           + Alpha EV6 support
   16860           + PowerPC 750
   16861           + RS6000/PowerPC: -mcpu=401 was added as an alias for -mcpu=403.
   16862             -mcpu=e603e was added to do -mcpu=603e and -msoft-float.
   16863           + c3x, c4x
   16864           + HyperSPARC
   16865           + SparcLite86x
   16866           + sh4
   16867           + Support for new systems (OpenBSD, FreeBSD, UWIN, Interix,
   16868             arm-linux)
   16869           + vxWorks targets include support for vxWorks threads
   16870           + StrongARM 110 and ARM9 support added. ARM Scheduling
   16871             parameters rewritten.
   16872           + Various changes to the MIPS port to avoid assembler macros,
   16873             which in turn improves performance
   16874           + Various performance improvements to the i960 port.
   16875           + Major rewrite of ns32k port
   16876      * Other significant improvements
   16877           + [15]Ability to dump cfg information and display it using vcg.
   16878           + The new faster scheme for fixing vendor header files is
   16879             enabled by default.
   16880           + Experimental internationalization support.
   16881           + multibyte character support
   16882           + Some compile-time speedups for pathological problems
   16883           + Better support for complex types
   16884      * Plus the usual mountain of bugfixes
   16885      * Core compiler is based on the gcc2 development tree from Sept 30,
   16886        1998, so we have all of the [16]features found in GCC 2.8.
   16887 
   16888 Additional Changes in GCC 2.95.1
   16889 
   16890      * Generic bugfixes and improvements
   16891           + Various documentation fixes related to the GCC/EGCS merger.
   16892           + Fix memory management bug which could lead to spurious aborts,
   16893             core dumps or random parsing errors in the compiler.
   16894           + Fix a couple bugs in the dwarf1 and dwarf2 debug record
   16895             support.
   16896           + Fix infinite loop in the CSE optimizer.
   16897           + Avoid undefined behavior in compiler FP emulation code
   16898           + Fix install problem when prefix is overridden on the make
   16899             install command.
   16900           + Fix problem with unwanted installation of assert.h on some
   16901             systems.
   16902           + Fix problem with finding the wrong assembler in a single tree
   16903             build.
   16904           + Avoid increasing the known alignment of a register that is
   16905             already known to be a pointer.
   16906      * Platform specific bugfixes and improvements
   16907           + Codegen bugfix for prologue/epilogue for cpu32 target.
   16908           + Fix long long code generation bug for the Coldfire target.
   16909           + Fix various aborts in the SH compiler.
   16910           + Fix bugs in libgcc support library for the SH.
   16911           + Fix alpha ev6 code generation bug.
   16912           + Fix problems with EXIT_SUCCESS/EXIT_FAILURE redefinitions on
   16913             AIX platforms.
   16914           + Fix -fpic code generation bug for rs6000/ppc svr4 targets.
   16915           + Fix varargs/stdarg code generation bug for rs6000/ppc svr4
   16916             targets.
   16917           + Fix weak symbol handling for rs6000/ppc svr4 targets.
   16918           + Fix various problems with 64bit code generation for the
   16919             rs6000/ppc port.
   16920           + Fix codegen bug which caused tetex to be mis-compiled on the
   16921             x86.
   16922           + Fix compiler abort in new cfg code exposed by x86 port.
   16923           + Fix out of range array reference in code convert flat
   16924             registers to the x87 stacked FP register file.
   16925           + Fix minor vxworks configuration bug.
   16926           + Fix return type of bsearch for SunOS 4.x.
   16927      * Language & Runtime specific fixes.
   16928           + The G++ signature extension has been deprecated. It will be
   16929             removed in the next major release of G++. Use of signatures
   16930             will result in a warning from the compiler.
   16931           + Several bugs relating to templates and namespaces were fixed.
   16932           + A bug that caused crashes when combining templates with -g on
   16933             DWARF1 platforms was fixed.
   16934           + Pointers-to-members, virtual functions, and multiple
   16935             inheritance should now work together correctly.
   16936           + Some code-generation bugs relating to function try blocks were
   16937             fixed.
   16938           + G++ is a little bit more lenient with certain archaic
   16939             constructs than in GCC 2.95.
   16940           + Fix to prevent shared library version #s from bring truncated
   16941             to 1 digit
   16942           + Fix missing std:: in the libstdc++ library.
   16943           + Fix stream locking problems in libio.
   16944           + Fix problem in java compiler driver.
   16945 
   16946 Additional Changes in GCC 2.95.2
   16947 
   16948    The -fstrict-aliasing is not enabled by default for GCC 2.95.2. While
   16949    the optimizations performed by -fstrict-aliasing are valid according to
   16950    the C and C++ standards, the optimization have caused some problems,
   16951    particularly with old non-conforming code.
   16952 
   16953    The GCC developers are experimenting with ways to warn users about code
   16954    which violates the C/C++ standards, but those warnings are not ready
   16955    for widespread use at this time. Rather than wait for those warnings
   16956    the GCC developers have chosen to disable -fstrict-aliasing by default
   16957    for the GCC 2.95.2 release.
   16958 
   16959    We strongly encourage developers to find and fix code which violates
   16960    the C/C++ standards as -fstrict-aliasing may be enabled by default in
   16961    future releases. Use the option -fstrict-aliasing to re-enable these
   16962    optimizations.
   16963      * Generic bugfixes and improvements
   16964           + Fix incorrectly optimized memory reference in global common
   16965             subexpression elimination (GCSE) optimization pass.
   16966           + Fix code generation bug in regmove.c in which it could
   16967             incorrectly change a "const" value.
   16968           + Fix bug in optimization of conditionals involving volatile
   16969             memory references.
   16970           + Avoid over-allocation of stack space for some procedures.
   16971           + Fixed bug in the compiler which caused incorrect optimization
   16972             of an obscure series of bit manipulations, shifts and
   16973             arithmetic.
   16974           + Fixed register allocator bug which caused teTeX to be
   16975             mis-compiled on SPARC targets.
   16976           + Avoid incorrect optimization of degenerate case statements for
   16977             certain targets such as the ARM.
   16978           + Fix out of range memory reference in the jump optimizer.
   16979           + Avoid dereferencing null pointer in fix-header.
   16980           + Fix test for GCC specific features so that it is possible to
   16981             bootstrap with gcc-2.6.2 and older versions of GCC.
   16982           + Fix typo in scheduler which could potentially cause out of
   16983             range memory accesses.
   16984           + Avoid incorrect loop reversal which caused incorrect code for
   16985             certain loops on PowerPC targets.
   16986           + Avoid incorrect optimization of switch statements on certain
   16987             targets (for example the ARM).
   16988      * Platform specific bugfixes and improvements
   16989           + Work around bug in Sun V5.0 compilers which caused bootstrap
   16990             comparison failures on SPARC targets.
   16991           + Fix SPARC backend bug which caused aborts in final.c.
   16992           + Fix sparc-hal-solaris2* configuration fragments.
   16993           + Fix bug in sparc block profiling.
   16994           + Fix obscure code generation bug for the PARISC targets.
   16995           + Define __STDC_EXT__ for HPUX configurations.
   16996           + Various POWERPC64 code generation bugfixes.
   16997           + Fix abort for PPC targets using ELF (ex GNU/Linux).
   16998           + Fix collect2 problems for AIX targets.
   16999           + Correct handling of .file directive for PPC targets.
   17000           + Fix bug in fix_trunc x86 patterns.
   17001           + Fix x86 port to correctly pop the FP stack for functions that
   17002             return structures in memory.
   17003           + Fix minor bug in strlen x86 pattern.
   17004           + Use stabs debugging instead of dwarf1 for x86-solaris targets.
   17005           + Fix template repository code to handle leading underscore in
   17006             mangled names.
   17007           + Fix weak/weak alias support for OpenBSD.
   17008           + GNU/Linux for the ARM has C++ compatible include files.
   17009      * Language & Runtime specific fixes.
   17010           + Fix handling of constructor attribute in the C front-end which
   17011             caused problems building the Chill runtime library on some
   17012             targets.
   17013           + Fix minor problem merging type qualifiers in the C front-end.
   17014           + Fix aliasing bug for pointers and references (C/C++).
   17015           + Fix incorrect "non-constant initializer bug" when -traditional
   17016             or -fwritable-strings is enabled.
   17017           + Fix build error for Chill front-end on SunOS.
   17018           + Do not complain about duplicate instantiations when using
   17019             -frepo (C++).
   17020           + Fix array bounds handling in C++ front-end which caused
   17021             problems with dwarf debugging information in some
   17022             circumstances.
   17023           + Fix minor namespace problem.
   17024           + Fix problem linking java programs.
   17025 
   17026 Additional Changes in GCC 2.95.3
   17027 
   17028      * Generic bugfixes and improvements
   17029           + Fix numerous problems that caused incorrect optimization in
   17030             the register reloading code.
   17031           + Fix numerous problems that caused incorrect optimization in
   17032             the loop optimizer.
   17033           + Fix aborts in the functions build_insn_chain and scan_loops
   17034             under some circumstances.
   17035           + Fix an alias analysis bug.
   17036           + Fix an infinite compilation bug in the combiner.
   17037           + A few problems with complex number support have been fixed.
   17038           + It is no longer possible for gcc to act as a fork bomb when
   17039             installed incorrectly.
   17040           + The -fpack-struct option should be recognized now.
   17041           + Fixed a bug that caused incorrect code to be generated due to
   17042             a lost stack adjustment.
   17043      * Platform specific bugfixes and improvements
   17044           + Support building ARM toolchains hosted on Windows.
   17045           + Fix attribute calculations in ARM toolchains.
   17046           + arm-linux support has been improved.
   17047           + Fix a PIC failure on sparc targets.
   17048           + On ix86 targets, the regparm attribute should now work
   17049             reliably.
   17050           + Several updates for the h8300 port.
   17051           + Fix problem building libio with glibc 2.2.
   17052 
   17053 
   17054     For questions related to the use of GCC, please consult these web
   17055     pages and the [17]GCC manuals. If that fails, the
   17056     [18]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   17057     web pages and the development of GCC are welcome on our developer
   17058     list at [19]gcc (a] gcc.gnu.org. All of [20]our lists have public
   17059     archives.
   17060 
   17061    Copyright (C) [21]Free Software Foundation, Inc. Verbatim copying and
   17062    distribution of this entire article is permitted in any medium,
   17063    provided this notice is preserved.
   17064 
   17065    These pages are [22]maintained by the GCC team. Last modified
   17066    2018-09-30[23].
   17067 
   17068 References
   17069 
   17070    1. http://gcc.gnu.org/news/spill.html
   17071    2. http://gcc.gnu.org/news/lcm.html
   17072    3. http://gcc.gnu.org/news/cprop.html
   17073    4. http://gcc.gnu.org/news/cfg.html
   17074    5. http://gcc.gnu.org/news/dse.html
   17075    6. http://gcc.gnu.org/news/hoist.html
   17076    7. http://gcc.gnu.org/news/alias.html
   17077    8. http://gcc.gnu.org/gcc-2.95/c++features.html
   17078    9. https://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html
   17079   10. http://gcc.gnu.org/news/gcj-announce.txt
   17080   11. http://gcc.gnu.org/news/javaannounce.html
   17081   12. http://gcc.gnu.org/c99status.html
   17082   13. http://gcc.gnu.org/news/chill.html
   17083   14. http://gcc.gnu.org/news/sparc.html
   17084   15. http://gcc.gnu.org/news/egcs-vcg.html
   17085   16. http://gcc.gnu.org/egcs-1.0/features-2.8.html
   17086   17. https://gcc.gnu.org/onlinedocs/
   17087   18. mailto:gcc-help (a] gcc.gnu.org
   17088   19. mailto:gcc (a] gcc.gnu.org
   17089   20. https://gcc.gnu.org/lists.html
   17090   21. https://www.fsf.org/
   17091   22. https://gcc.gnu.org/about.html
   17092   23. http://validator.w3.org/check/referer
   17093 ======================================================================
   17094 http://gcc.gnu.org/gcc-2.95/caveats.html
   17095 
   17096                                 GCC 2.95 Caveats
   17097 
   17098      * GCC 2.95 will issue an error for invalid asm statements that had
   17099        been silently accepted by earlier versions of the compiler. This is
   17100        particularly noticeable when compiling older versions of the Linux
   17101        kernel (2.0.xx). Please refer to the FAQ (as shipped with GCC 2.95)
   17102        for more information on this issue.
   17103      * GCC 2.95 implements type based alias analysis to disambiguate
   17104        memory references. Some programs, particularly the Linux kernel
   17105        violate ANSI/ISO aliasing rules and therefore may not operate
   17106        correctly when compiled with GCC 2.95. Please refer to the FAQ (as
   17107        shipped with GCC 2.95) for more information on this issue.
   17108      * GCC 2.95 has a known bug in its handling of complex variables for
   17109        64bit targets. Instead of silently generating incorrect code, GCC
   17110        2.95 will issue a fatal error for situations it can not handle.
   17111        This primarily affects the Fortran community as Fortran makes more
   17112        use of complex variables than C or C++.
   17113      * GCC 2.95 has an integrated libstdc++, but does not have an
   17114        integrated libg++. Furthermore old libg++ releases will not work
   17115        with GCC 2.95. You can retrieve a recent copy of libg++ from the
   17116        [1]GCC ftp server.
   17117        Note most C++ programs only need libstdc++.
   17118      * Exception handling may not work with shared libraries, particularly
   17119        on alphas, hppas, rs6000/powerpc and mips based platforms.
   17120        Exception handling is known to work on x86 GNU/Linux platforms with
   17121        shared libraries.
   17122      * In general, GCC 2.95 is more rigorous about rejecting invalid C++
   17123        code or deprecated C++ constructs than G++ 2.7, G++ 2.8, EGCS 1.0,
   17124        or EGCS 1.1. As a result it may be necessary to fix C++ code before
   17125        it will compile with GCC 2.95.
   17126      * G++ is also converting toward the ISO C++ standard; as a result
   17127        code which was previously valid (and thus accepted by other
   17128        compilers and older versions of g++) may no longer be accepted. The
   17129        flag -fpermissive may allow some non-conforming code to compile
   17130        with GCC 2.95.
   17131      * GCC 2.95 compiled C++ code is not binary compatible with EGCS
   17132        1.1.x, EGCS 1.0.x or GCC 2.8.x.
   17133      * GCC 2.95 does not have changes from the GCC 2.8 tree that were made
   17134        between Sept 30, 1998 and April 30, 1999 (the official end of the
   17135        GCC 2.8 project). Future GCC releases will include all the changes
   17136        from the defunct GCC 2.8 sources.
   17137 
   17138 
   17139     For questions related to the use of GCC, please consult these web
   17140     pages and the [2]GCC manuals. If that fails, the
   17141     [3]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   17142     web pages and the development of GCC are welcome on our developer
   17143     list at [4]gcc (a] gcc.gnu.org. All of [5]our lists have public archives.
   17144 
   17145    Copyright (C) [6]Free Software Foundation, Inc. Verbatim copying and
   17146    distribution of this entire article is permitted in any medium,
   17147    provided this notice is preserved.
   17148 
   17149    These pages are [7]maintained by the GCC team. Last modified
   17150    2018-09-30[8].
   17151 
   17152 References
   17153 
   17154    1. ftp://gcc.gnu.org/pub/gcc/infrastructure/libg++-2.8.1.3.tar.gz
   17155    2. https://gcc.gnu.org/onlinedocs/
   17156    3. mailto:gcc-help (a] gcc.gnu.org
   17157    4. mailto:gcc (a] gcc.gnu.org
   17158    5. https://gcc.gnu.org/lists.html
   17159    6. https://www.fsf.org/
   17160    7. https://gcc.gnu.org/about.html
   17161    8. http://validator.w3.org/check/referer
   17162 ======================================================================
   17163 http://gcc.gnu.org/egcs-1.1/index.html
   17164 
   17165                                     EGCS 1.1
   17166 
   17167    September 3, 1998: We are pleased to announce the release of EGCS 1.1.
   17168    December 1, 1998: We are pleased to announce the release of EGCS 1.1.1.
   17169    March 15, 1999: We are pleased to announce the release of EGCS 1.1.2.
   17170 
   17171    EGCS is a free software project to further the development of the GNU
   17172    compilers using an open development environment.
   17173 
   17174    EGCS 1.1 is a major new release of the EGCS compiler system. It has
   17175    been [1]extensively tested and is believed to be stable and suitable
   17176    for widespread use.
   17177 
   17178    EGCS 1.1 is based on an June 6, 1998 snapshot of the GCC 2.8
   17179    development sources; it contains all of the new features found in GCC
   17180    2.8.1 as well as all new development from GCC up to June 6, 1998.
   17181 
   17182    EGCS 1.1 also contains many improvements and features not found in GCC
   17183    or in older versions of EGCS:
   17184      * Global common subexpression elimination and global constant/copy
   17185        propagation (aka [2]gcse)
   17186      * Ongoing improvements to the [3]alias analysis support to allow for
   17187        better optimizations throughout the compiler.
   17188      * Vastly improved [4]C++ compiler and integrated C++ runtime
   17189        libraries.
   17190      * Fixes for the /tmp symlink race security problems.
   17191      * New targets including mips16, arm-thumb and 64 bit PowerPC.
   17192      * Improvements to GNU Fortran (g77) compiler and runtime library made
   17193        since g77 version 0.5.23.
   17194 
   17195    See the [5]new features page for a more complete list of new features
   17196    found in EGCS 1.1 releases.
   17197 
   17198    EGCS 1.1.1 is a minor update to fix several serious problems in EGCS
   17199    1.1:
   17200      * General improvements and fixes
   17201           + Avoid some stack overflows when compiling large functions.
   17202           + Avoid incorrect loop invariant code motions.
   17203           + Fix some core dumps on Linux kernel code.
   17204           + Bring back the imake -Di386 and friends fix from EGCS 1.0.2.
   17205           + Fix code generation problem in gcse.
   17206           + Various documentation related fixes.
   17207      * g++/libstdc++ improvements and fixes
   17208           + MT safe EH fix for setjmp/longjmp based exception handling.
   17209           + Fix a few bad interactions between optimization and exception
   17210             handling.
   17211           + Fixes for demangling of template names starting with "__".
   17212           + Fix a bug that would fail to run destructors in some cases
   17213             with -O2.
   17214           + Fix 'new' of classes with virtual bases.
   17215           + Fix crash building Qt on the Alpha.
   17216           + Fix failure compiling WIFEXITED macro on GNU/Linux.
   17217           + Fix some -frepo failures.
   17218      * g77 and libf2c improvements and fixes
   17219           + Various documentation fixes.
   17220           + Avoid compiler crash on RAND intrinsic.
   17221           + Fix minor bugs in makefiles exposed by BSD make programs.
   17222           + Define _XOPEN_SOURCE for libI77 build to avoid potential
   17223             problems on some 64-bit systems.
   17224           + Fix problem with implicit endfile on rewind.
   17225           + Fix spurious recursive I/O errors.
   17226      * platform specific improvements and fixes
   17227           + Match all versions of UnixWare7.
   17228           + Do not assume x86 SVR4 or UnixWare targets can handle stabs.
   17229           + Fix PPC/RS6000 LEGITIMIZE_ADDRESS macro and bug in conversion
   17230             from unsigned ints to double precision floats.
   17231           + Fix ARM ABI issue with NetBSD.
   17232           + Fix a few arm code generation bugs.
   17233           + Fixincludes will fix additional broken SCO OpenServer header
   17234             files.
   17235           + Fix a m68k backend bug which caused invalid offsets in reg+d
   17236             addresses.
   17237           + Fix problems with 64bit AIX 4.3 support.
   17238           + Fix handling of long longs for varargs/stdarg functions on the
   17239             ppc.
   17240           + Minor fixes to CPP predefines for Windows.
   17241           + Fix code generation problems with gpr<->fpr copies for 64bit
   17242             ppc.
   17243           + Fix a few coldfire code generation bugs.
   17244           + Fix some more header file problems on SunOS 4.x.
   17245           + Fix assert.h handling for RTEMS.
   17246           + Fix Windows handling of TREE_SYMBOL_REFERENCED.
   17247           + Fix x86 compiler abort in reg-stack pass.
   17248           + Fix cygwin/windows problem with section attributes.
   17249           + Fix Alpha code generation problem exposed by SMP Linux
   17250             kernels.
   17251           + Fix typo in m68k 32->64bit integer conversion.
   17252           + Make sure target libraries build with -fPIC for PPC & Alpha
   17253             targets.
   17254 
   17255    EGCS 1.1.2 is a minor update to fix several serious problems in EGCS
   17256    1.1.1:
   17257      * General improvements and fixes
   17258           + Fix bug in loop optimizer which caused the SPARC (and
   17259             potentially other) ports to segfault.
   17260           + Fix infinite recursion in alias analysis and combiner code.
   17261           + Fix bug in regclass preferencing.
   17262           + Fix incorrect loop reversal which caused incorrect code to be
   17263             generated for several targets.
   17264           + Fix return value for builtin memcpy.
   17265           + Reduce compile time for certain loops which exposed quadratic
   17266             behavior in the loop optimizer.
   17267           + Fix bug which caused volatile memory to be written multiple
   17268             times when only one write was needed/desired.
   17269           + Fix compiler abort in caller-save.c
   17270           + Fix combiner bug which caused incorrect code generation for
   17271             certain division by constant operations.
   17272           + Fix incorrect code generation due to a bug in range check
   17273             optimizations.
   17274           + Fix incorrect code generation due to mis-handling of clobbered
   17275             values in CSE.
   17276           + Fix compiler abort/segfault due to incorrect register
   17277             splitting when unrolling loops.
   17278           + Fix code generation involving autoincremented addresses with
   17279             ternary operators.
   17280           + Work around bug in the scheduler which caused qt to be
   17281             mis-compiled on some platforms.
   17282           + Fix code generation problems with -fshort-enums.
   17283           + Tighten security for temporary files.
   17284           + Improve compile time for codes which make heavy use of
   17285             overloaded functions.
   17286           + Fix multiply defined constructor/destructor symbol problems.
   17287           + Avoid setting bogus RPATH environment variable during
   17288             bootstrap.
   17289           + Avoid GNU-make dependencies in the texinfo subdir.
   17290           + Install CPP wrapper script in $(prefix)/bin if --enable-cpp.
   17291             --enable-cpp=<dirname> can be used to specify an additional
   17292             install directory for the cpp wrapper script.
   17293           + Fix CSE bug which caused incorrect label-label refs to appear
   17294             on some platforms.
   17295           + Avoid linking in EH routines from libgcc if they are not
   17296             needed.
   17297           + Avoid obscure bug in aliasing code.
   17298           + Fix bug in weak symbol handling.
   17299      * Platform-specific improvements and fixes
   17300           + Fix detection of PPro/PII on Unixware 7.
   17301           + Fix compiler segfault when building spec99 and other programs
   17302             for SPARC targets.
   17303           + Fix code-generation bugs for integer and floating point
   17304             conditional move instructions on the PPro/PII.
   17305           + Use fixincludes to fix byteorder problems on i?86-*-sysv.
   17306           + Fix build failure for the arc port.
   17307           + Fix floating point format configuration for i?86-gnu port.
   17308           + Fix problems with hppa1.0-hp-hpux10.20 configuration when
   17309             threads are enabled.
   17310           + Fix coldfire code generation bugs.
   17311           + Fix "unrecognized insn" problems for Alpha and PPC ports.
   17312           + Fix h8/300 code generation problem with floating point values
   17313             in memory.
   17314           + Fix unrecognized insn problems for the m68k port.
   17315           + Fix namespace-pollution problem for the x86 port.
   17316           + Fix problems with old assembler on x86 NeXT systems.
   17317           + Fix PIC code-generation problems for the SPARC port.
   17318           + Fix minor bug with LONG_CALLS in PowerPC SVR4 support.
   17319           + Fix minor ISO namespace violation in Alpha varargs/stdarg
   17320             support.
   17321           + Fix incorrect "braf" instruction usage for the SH port.
   17322           + Fix minor bug in va-sh which prevented its use with -ansi.
   17323           + Fix problems recognizing and supporting FreeBSD.
   17324           + Handle OpenBSD systems correctly.
   17325           + Minor fixincludes fix for Digital UNIX 4.0B.
   17326           + Fix problems with ctors/dtors in SCO shared libraries.
   17327           + Abort instead of generating incorrect code for PPro/PII
   17328             floating point conditional moves.
   17329           + Avoid multiply defined symbols on GNU/Linux systems using
   17330             libc-5.4.xx.
   17331           + Fix abort in alpha compiler.
   17332      * Fortran-specific fixes
   17333           + Fix the IDate intrinsic (VXT) (in libg2c) so the returned year
   17334             is in the documented, non-Y2K-compliant range of 0-99, instead
   17335             of being returned as 100 in the year 2000.
   17336           + Fix the `Date_and_Time' intrinsic (in libg2c) to return the
   17337             milliseconds value properly in Values(8).
   17338           + Fix the `LStat' intrinsic (in libg2c) to return device-ID
   17339             information properly in SArray(7).
   17340 
   17341    Each release includes installation instructions in both HTML and
   17342    plaintext forms (see the INSTALL directory in the toplevel directory of
   17343    the distribution). However, we also keep the most up to date
   17344    installation instructions and [6]build/test status on our web page. We
   17345    will update those pages as new information becomes available.
   17346 
   17347    The EGCS project would like to thank the numerous people that have
   17348    contributed new features, test results, bugfixes, etc. This [7]amazing
   17349    group of volunteers is what makes EGCS successful.
   17350 
   17351    And finally, we can't in good conscience fail to mention some
   17352    [8]caveats to using EGCS 1.1.
   17353 
   17354    Download EGCS from egcs.cygnus.com (USA California).
   17355 
   17356    The EGCS 1.1 release is also available on many mirror sites.
   17357    [9]Goto mirror list to find a closer site.
   17358 
   17359 
   17360     For questions related to the use of GCC, please consult these web
   17361     pages and the [10]GCC manuals. If that fails, the
   17362     [11]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   17363     web pages and the development of GCC are welcome on our developer
   17364     list at [12]gcc (a] gcc.gnu.org. All of [13]our lists have public
   17365     archives.
   17366 
   17367    Copyright (C) [14]Free Software Foundation, Inc. Verbatim copying and
   17368    distribution of this entire article is permitted in any medium,
   17369    provided this notice is preserved.
   17370 
   17371    These pages are [15]maintained by the GCC team. Last modified
   17372    2018-09-30[16].
   17373 
   17374 References
   17375 
   17376    1. http://gcc.gnu.org/egcs-1.1/egcs-1.1-test.html
   17377    2. http://gcc.gnu.org/news/gcse.html
   17378    3. http://gcc.gnu.org/news/alias.html
   17379    4. http://gcc.gnu.org/egcs-1.1/c++features.html
   17380    5. http://gcc.gnu.org/egcs-1.1/features.html
   17381    6. http://gcc.gnu.org/egcs-1.1/buildstat.html
   17382    7. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   17383    8. http://gcc.gnu.org/egcs-1.1/caveats.html
   17384    9. http://gcc.gnu.org/mirrors.html
   17385   10. https://gcc.gnu.org/onlinedocs/
   17386   11. mailto:gcc-help (a] gcc.gnu.org
   17387   12. mailto:gcc (a] gcc.gnu.org
   17388   13. https://gcc.gnu.org/lists.html
   17389   14. https://www.fsf.org/
   17390   15. https://gcc.gnu.org/about.html
   17391   16. http://validator.w3.org/check/referer
   17392 ======================================================================
   17393 http://gcc.gnu.org/egcs-1.1/features.html
   17394 
   17395                              EGCS 1.1 new features
   17396 
   17397      * Integrated GNU Fortran (g77) compiler and runtime library with
   17398        improvements, based on g77 version 0.5.23.
   17399      * Vast improvements in the C++ compiler; so many they have [1]page of
   17400        their own!
   17401      * Compiler implements [2]global common subexpression elimination and
   17402        global copy/constant propagation.
   17403      * More major improvements in the [3]alias analysis code.
   17404      * More major improvements in the exception handling code to improve
   17405        performance, lower static overhead and provide the infrastructure
   17406        for future improvements.
   17407      * The infamous /tmp symlink race security problems have been fixed.
   17408      * The regmove optimization pass has been nearly completely rewritten
   17409        to improve performance of generated code.
   17410      * The compiler now recomputes register usage information before local
   17411        register allocation. By providing more accurate information to the
   17412        priority based allocator, we get better register allocation.
   17413      * The register reloading phase of the compiler optimizes spill code
   17414        much better than in previous releases.
   17415      * Some bad interactions between the register allocator and
   17416        instruction scheduler have been fixed, resulting in much better
   17417        code for certain programs. Additionally, we have tuned the
   17418        scheduler in various ways to improve performance of generated code
   17419        for some architectures.
   17420      * The compiler's branch shortening algorithms have been significantly
   17421        improved to work better on targets which align jump targets.
   17422      * The compiler now supports -Os to prefer optimizing for code space
   17423        over optimizing for code speed.
   17424      * The compiler will now totally eliminate library calls which compute
   17425        constant values. This primarily helps targets with no integer
   17426        div/mul support and targets without floating point support.
   17427      * The compiler now supports an extensive "--help" option.
   17428      * cpplib has been greatly improved and may be suitable for limited
   17429        use.
   17430      * Memory footprint for the compiler has been significantly reduced
   17431        for some pathological cases.
   17432      * The time to build EGCS has been improved for certain targets
   17433        (particularly the alpha and mips platforms).
   17434      * Many infrastructure improvements throughout the compiler, plus the
   17435        usual mountain of bugfixes and minor improvements.
   17436      * Target dependent improvements:
   17437           + SPARC port now includes V8 plus and V9 support as well as
   17438             performance tuning for Ultra class machines. The SPARC port
   17439             now uses the Haifa scheduler.
   17440           + Alpha port has been tuned for the EV6 processor and has an
   17441             optimized expansion of memcpy/bzero. The Alpha port now uses
   17442             the Haifa scheduler.
   17443           + RS6000/PowerPC: support for the Power64 architecture and AIX
   17444             4.3. The RS6000/PowerPC port now uses the Haifa scheduler.
   17445           + x86: Alignment of static store data and jump targets is per
   17446             Intel recommendations now. Various improvements throughout the
   17447             x86 port to improve performance on Pentium processors
   17448             (including improved epilogue sequences for Pentium chips and
   17449             backend improvements which should help register allocation on
   17450             all x86 variants. Conditional move support has been fixed and
   17451             enabled for PPro processors. The x86 port also better supports
   17452             64bit operations now. Unixware 7, a System V Release 5 target,
   17453             is now supported and SCO OpenServer targets can support GAS.
   17454           + MIPS has improved multiply/multiply-add support and now
   17455             includes mips16 ISA support.
   17456           + M68k has many micro-optimizations and Coldfire fixes.
   17457      * Core compiler is based on the GCC development tree from June 9,
   17458        1998, so we have all of the [4]features found in GCC 2.8.
   17459 
   17460 
   17461     For questions related to the use of GCC, please consult these web
   17462     pages and the [5]GCC manuals. If that fails, the
   17463     [6]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   17464     web pages and the development of GCC are welcome on our developer
   17465     list at [7]gcc (a] gcc.gnu.org. All of [8]our lists have public archives.
   17466 
   17467    Copyright (C) [9]Free Software Foundation, Inc. Verbatim copying and
   17468    distribution of this entire article is permitted in any medium,
   17469    provided this notice is preserved.
   17470 
   17471    These pages are [10]maintained by the GCC team. Last modified
   17472    2018-09-30[11].
   17473 
   17474 References
   17475 
   17476    1. http://gcc.gnu.org/egcs-1.1/c++features.html
   17477    2. http://gcc.gnu.org/news/gcse.html
   17478    3. http://gcc.gnu.org/news/alias.html
   17479    4. http://gcc.gnu.org/egcs-1.0/features-2.8.html
   17480    5. https://gcc.gnu.org/onlinedocs/
   17481    6. mailto:gcc-help (a] gcc.gnu.org
   17482    7. mailto:gcc (a] gcc.gnu.org
   17483    8. https://gcc.gnu.org/lists.html
   17484    9. https://www.fsf.org/
   17485   10. https://gcc.gnu.org/about.html
   17486   11. http://validator.w3.org/check/referer
   17487 ======================================================================
   17488 http://gcc.gnu.org/egcs-1.1/caveats.html
   17489 
   17490                                 EGCS 1.1 Caveats
   17491 
   17492      * EGCS has an integrated libstdc++, but does not have an integrated
   17493        libg++. Furthermore old libg++ releases will not work with EGCS; HJ
   17494        Lu has made a libg++-2.8.1.2 snapshot available which may work with
   17495        EGCS.
   17496        Note most C++ programs only need libstdc++.
   17497      * Exception handling may not work with shared libraries, particularly
   17498        on alphas, hppas, rs6000/powerpc and mips based platforms.
   17499        Exception handling is known to work on x86-linux platforms with
   17500        shared libraries.
   17501      * Some versions of the Linux kernel have bugs which prevent them from
   17502        being compiled or from running when compiled by EGCS. See the FAQ
   17503        (as shipped with EGCS 1.1) for additional information.
   17504      * In general, EGCS is more rigorous about rejecting invalid C++ code
   17505        or deprecated C++ constructs than g++-2.7, g++-2.8 or EGCS 1.0. As
   17506        a result it may be necessary to fix C++ code before it will compile
   17507        with EGCS.
   17508      * G++ is also converting toward the ISO C++ standard; as a result
   17509        code which was previously valid (and thus accepted by other
   17510        compilers and older versions of g++) may no longer be accepted.
   17511      * EGCS 1.1 compiled C++ code is not binary compatible with EGCS 1.0.x
   17512        or GCC 2.8.x due to changes necessary to support thread safe
   17513        exception handling.
   17514 
   17515 
   17516     For questions related to the use of GCC, please consult these web
   17517     pages and the [1]GCC manuals. If that fails, the
   17518     [2]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   17519     web pages and the development of GCC are welcome on our developer
   17520     list at [3]gcc (a] gcc.gnu.org. All of [4]our lists have public archives.
   17521 
   17522    Copyright (C) [5]Free Software Foundation, Inc. Verbatim copying and
   17523    distribution of this entire article is permitted in any medium,
   17524    provided this notice is preserved.
   17525 
   17526    These pages are [6]maintained by the GCC team. Last modified
   17527    2018-09-30[7].
   17528 
   17529 References
   17530 
   17531    1. https://gcc.gnu.org/onlinedocs/
   17532    2. mailto:gcc-help (a] gcc.gnu.org
   17533    3. mailto:gcc (a] gcc.gnu.org
   17534    4. https://gcc.gnu.org/lists.html
   17535    5. https://www.fsf.org/
   17536    6. https://gcc.gnu.org/about.html
   17537    7. http://validator.w3.org/check/referer
   17538 ======================================================================
   17539 http://gcc.gnu.org/egcs-1.0/index.html
   17540 
   17541                                     EGCS 1.0
   17542 
   17543    December 3, 1997: We are pleased to announce the release of EGCS 1.0.
   17544    January 6, 1998: We are pleased to announce the release of EGCS 1.0.1.
   17545    March 16, 1998: We are pleased to announce the release of EGCS 1.0.2.
   17546    May 15, 1998 We are pleased to announce the release of EGCS 1.0.3.
   17547 
   17548    EGCS is a collaborative effort involving several groups of hackers
   17549    using an open development model to accelerate development and testing
   17550    of GNU compilers and runtime libraries.
   17551 
   17552    An important goal of EGCS is to allow wide scale testing of
   17553    experimental features and optimizations; therefore, EGCS contains some
   17554    features and optimizations which are still under development. However,
   17555    EGCS has been carefully tested and should be comparable in quality to
   17556    most GCC releases.
   17557 
   17558    EGCS 1.0 is based on an August 2, 1997 snapshot of the GCC 2.8
   17559    development sources; it contains nearly all of the new features found
   17560    in GCC 2.8.
   17561 
   17562    EGCS 1.0 also contains many improvements and features not found in GCC
   17563    2.7 and even the GCC 2.8 series (which was released after the original
   17564    EGCS 1.0 release).
   17565      * Integrated C++ runtime libraries, including support for most major
   17566        GNU/Linux systems!
   17567      * The integrated libstdc++ library includes a verbatim copy of SGI's
   17568        STL release.
   17569      * Integrated GNU Fortran compiler.
   17570      * New instruction scheduler.
   17571      * New alias analysis code.
   17572 
   17573    See the [1]new features page for a more complete list of new features.
   17574 
   17575    EGCS 1.0.1 is a minor update to the EGCS 1.0 compiler to fix a few
   17576    critical bugs and add support for Red Hat 5.0 Linux. Changes since the
   17577    EGCS 1.0 release:
   17578      * Add support for Red Hat 5.0 Linux and better support for Linux
   17579        systems using glibc2.
   17580        Many programs failed to link when compiled with EGCS 1.0 on Red Hat
   17581        5.0 or on systems with newer versions of glibc2. EGCS 1.0.1 should
   17582        fix these problems.
   17583      * Compatibility with both EGCS 1.0 and GCC 2.8 libgcc exception
   17584        handling interfaces.
   17585        To avoid future compatibility problems, we strongly urge anyone who
   17586        is planning on distributing shared libraries that contain C++ code
   17587        to upgrade to EGCS 1.0.1 first.
   17588        Soon after EGCS 1.0 was released, the GCC developers made some
   17589        incompatible changes in libgcc's exception handling interfaces.
   17590        These changes were needed to solve problems on some platforms. This
   17591        means that GCC 2.8.0, when released, will not be seamlessly
   17592        compatible with shared libraries built by EGCS 1.0. The reason is
   17593        that the libgcc.a in GCC 2.8.0 will not contain a function needed
   17594        by the old interface.
   17595        The result of this is that there may be compatibility problems with
   17596        shared libraries built by EGCS 1.0 when used with GCC 2.8.0.
   17597        With EGCS 1.0.1, generated code uses the new (GCC 2.8.0) interface,
   17598        and libgcc.a has the support routines for both the old and the new
   17599        interfaces (so EGCS 1.0.1 and EGCS 1.0 code can be freely mixed,
   17600        and EGCS 1.0.1 and GCC 2.8.0 code can be freely mixed).
   17601        The maintainers of GCC 2.x have decided against including seamless
   17602        support for the old interface in 2.8.0, since it was never
   17603        "official", so to avoid future compatibility problems we recommend
   17604        against distributing any shared libraries built by EGCS 1.0 that
   17605        contain C++ code (upgrade to 1.0.1 and use that).
   17606      * Various bugfixes in the x86, hppa, mips, and rs6000/ppc back ends.
   17607        The x86 changes fix code generation errors exposed when building
   17608        glibc2 and the usual GNU/Linux dynamic linker (ld.so).
   17609        The hppa change fixes a compiler abort when configured for use with
   17610        RTEMS.
   17611        The MIPS changes fix problems with the definition of LONG_MAX on
   17612        newer systems, allow for command line selection of the target ABI,
   17613        and fix one code generation problem.
   17614        The rs6000/ppc change fixes some problems with passing structures
   17615        to varargs/stdarg functions.
   17616      * A few machine independent bugfixes, mostly to fix code generation
   17617        errors when building Linux kernels or glibc.
   17618      * Fix a few critical exception handling and template bugs in the C++
   17619        compiler.
   17620      * Fix Fortran namelist bug on alphas.
   17621      * Fix build problems on x86-solaris systems.
   17622 
   17623    EGCS 1.0.2 is a minor update to the EGCS 1.0.1 compiler to fix several
   17624    serious problems in EGCS 1.0.1.
   17625      * General improvements and fixes
   17626           + Memory consumption significantly reduced, especially for
   17627             templates and inline functions.
   17628           + Fix various problems with glibc2.1.
   17629           + Fix loop optimization bug exposed by rs6000/ppc port.
   17630           + Fix to avoid potential code generation problems in jump.c.
   17631           + Fix some undefined symbol problems in dwarf1 debug support.
   17632      * g++/libstdc++ improvements and fixes
   17633           + libstdc++ in the EGCS release has been updated and should be
   17634             link compatible with libstdc++-2.8.
   17635           + Various fixes in libio/libstdc++ to work better on GNU/Linux
   17636             systems.
   17637           + Fix problems with duplicate symbols on systems that do not
   17638             support weak symbols.
   17639           + Memory corruption bug and undefined symbols in bastring have
   17640             been fixed.
   17641           + Various exception handling fixes.
   17642           + Fix compiler abort for very long thunk names.
   17643      * g77 improvements and fixes
   17644           + Fix compiler crash for omitted bound in Fortran CASE
   17645             statement.
   17646           + Add missing entries to g77 lang-options.
   17647           + Fix problem with -fpedantic in the g77 compiler.
   17648           + Fix "backspace" problem with g77 on alphas.
   17649           + Fix x86 backend problem with Fortran literals and -fpic.
   17650           + Fix some of the problems with negative subscripts for g77 on
   17651             alphas.
   17652           + Fixes for Fortran builds on cygwin32/mingw32.
   17653      * platform specific improvements and fixes
   17654           + Fix long double problems on x86 (exposed by glibc).
   17655           + x86 ports define i386 again to keep imake happy.
   17656           + Fix exception handling support on NetBSD ports.
   17657           + Several changes to collect2 to fix many problems with AIX.
   17658           + Define __ELF__ for GNU/Linux on rs6000.
   17659           + Fix -mcall-linux problem on GNU/Linux on rs6000.
   17660           + Fix stdarg/vararg problem for GNU/Linux on rs6000.
   17661           + Allow autoconf to select a proper install problem on AIX 3.1.
   17662           + m68k port support includes -mcpu32 option as well as cpu32
   17663             multilibs.
   17664           + Fix stdarg bug for irix6.
   17665           + Allow EGCS to build on irix5 without the gnu assembler.
   17666           + Fix problem with static linking on sco5.
   17667           + Fix bootstrap on sco5 with native compiler.
   17668           + Fix for abort building newlib on H8 target.
   17669           + Fix fixincludes handling of math.h on SunOS.
   17670           + Minor fix for Motorola 3300 m68k systems.
   17671 
   17672    EGCS 1.0.3 is a minor update to the EGCS 1.0.2 compiler to fix a few
   17673    problems reported by Red Hat for builds of Red Hat 5.1.
   17674      * Generic bugfixes:
   17675           + Fix a typo in the libio library which resulted in incorrect
   17676             behavior of istream::get.
   17677           + Fix the Fortran negative array index problem.
   17678           + Fix a major problem with the ObjC runtime thread support
   17679             exposed by glibc2.
   17680           + Reduce memory consumption of the Haifa scheduler.
   17681      * Target specific bugfixes:
   17682           + Fix one x86 floating point code generation bug exposed by
   17683             glibc2 builds.
   17684           + Fix one x86 internal compiler error exposed by glibc2 builds.
   17685           + Fix profiling bugs on the Alpha.
   17686           + Fix ImageMagick & emacs 20.2 build problems on the Alpha.
   17687           + Fix rs6000/ppc bug when converting values from integer types
   17688             to floating point types.
   17689 
   17690    The EGCS 1.0 releases include installation instructions in both HTML
   17691    and plaintext forms (see the INSTALL directory in the toplevel
   17692    directory of the distribution). However, we also keep the most up to
   17693    date installation instructions and [2]build/test status on our web
   17694    page. We will update those pages as new information becomes available.
   17695 
   17696    And, we can't in good conscience fail to mention some [3]caveats to
   17697    using EGCS.
   17698 
   17699    Update: Big thanks to Stanford for providing a high speed link for
   17700    downloading EGCS (go.cygnus.com)!
   17701 
   17702    Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
   17703    (USA California -- High speed link provided by Stanford).
   17704 
   17705    The EGCS 1.0 release is also available many mirror sites.
   17706    [4]Goto mirror list to find a closer site
   17707 
   17708    We'd like to thank the numerous people that have contributed new
   17709    features, test results, bugfixes, etc. Unfortunately, they're far too
   17710    numerous to mention by name.
   17711 
   17712 
   17713     For questions related to the use of GCC, please consult these web
   17714     pages and the [5]GCC manuals. If that fails, the
   17715     [6]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   17716     web pages and the development of GCC are welcome on our developer
   17717     list at [7]gcc (a] gcc.gnu.org. All of [8]our lists have public archives.
   17718 
   17719    Copyright (C) [9]Free Software Foundation, Inc. Verbatim copying and
   17720    distribution of this entire article is permitted in any medium,
   17721    provided this notice is preserved.
   17722 
   17723    These pages are [10]maintained by the GCC team. Last modified
   17724    2018-09-30[11].
   17725 
   17726 References
   17727 
   17728    1. http://gcc.gnu.org/egcs-1.0/features.html
   17729    2. http://gcc.gnu.org/egcs-1.0/buildstat.html
   17730    3. http://gcc.gnu.org/egcs-1.0/caveats.html
   17731    4. http://gcc.gnu.org/mirrors.html
   17732    5. https://gcc.gnu.org/onlinedocs/
   17733    6. mailto:gcc-help (a] gcc.gnu.org
   17734    7. mailto:gcc (a] gcc.gnu.org
   17735    8. https://gcc.gnu.org/lists.html
   17736    9. https://www.fsf.org/
   17737   10. https://gcc.gnu.org/about.html
   17738   11. http://validator.w3.org/check/referer
   17739 ======================================================================
   17740 http://gcc.gnu.org/egcs-1.0/features.html
   17741 
   17742                                EGCS 1.0 features
   17743 
   17744      * Core compiler is based on the gcc2 development tree from Aug 2,
   17745        1997, so we have most of the [1]features found in GCC 2.8.
   17746      * Integrated GNU Fortran compiler based on g77-0.5.22-19970929.
   17747      * Vast improvements in the C++ compiler; so many they have [2]page of
   17748        their own!
   17749      * Integrated C++ runtime libraries, including support for most major
   17750        GNU/Linux systems!
   17751      * New instruction scheduler from IBM Haifa which includes support for
   17752        function wide instruction scheduling as well as superscalar
   17753        scheduling.
   17754      * Significantly improved alias analysis code.
   17755      * Improved register allocation for two address machines.
   17756      * Significant code generation improvements for Fortran code on
   17757        Alphas.
   17758      * Various optimizations from the g77 project as well as improved loop
   17759        optimizations.
   17760      * Dwarf2 debug format support for some targets.
   17761      * egcs libstdc++ includes the SGI STL implementation without changes.
   17762      * As a result of these and other changes, egcs libstc++ is not binary
   17763        compatible with previous releases of libstdc++.
   17764      * Various new ports -- UltraSPARC, Irix6.2 & Irix6.3 support, The SCO
   17765        Openserver 5 family (5.0.{0,2,4} and Internet FastStart 1.0 and
   17766        1.1), Support for RTEMS on several embedded targets, Support for
   17767        arm-linux, Mitsubishi M32R, Hitachi H8/S, Matsushita MN102 and
   17768        MN103, NEC V850, Sparclet, Solaris & GNU/Linux on PowerPCs, etc.
   17769      * Integrated testsuites for gcc, g++, g77, libstdc++ and libio.
   17770      * RS6000/PowerPC ports generate code which can run on all
   17771        RS6000/PowerPC variants by default.
   17772      * -mcpu= and -march= switches for the x86 port to allow better
   17773        control over how the x86 port generates code.
   17774      * Includes the template repository patch (aka repo patch); note the
   17775        new template code makes repo obsolete for ELF systems using gnu-ld
   17776        such as GNU/Linux.
   17777      * Plus the usual assortment of bugfixes and improvements.
   17778 
   17779 
   17780     For questions related to the use of GCC, please consult these web
   17781     pages and the [3]GCC manuals. If that fails, the
   17782     [4]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   17783     web pages and the development of GCC are welcome on our developer
   17784     list at [5]gcc (a] gcc.gnu.org. All of [6]our lists have public archives.
   17785 
   17786    Copyright (C) [7]Free Software Foundation, Inc. Verbatim copying and
   17787    distribution of this entire article is permitted in any medium,
   17788    provided this notice is preserved.
   17789 
   17790    These pages are [8]maintained by the GCC team. Last modified
   17791    2018-09-30[9].
   17792 
   17793 References
   17794 
   17795    1. http://gcc.gnu.org/egcs-1.0/features-2.8.html
   17796    2. http://gcc.gnu.org/egcs-1.0/c++features.html
   17797    3. https://gcc.gnu.org/onlinedocs/
   17798    4. mailto:gcc-help (a] gcc.gnu.org
   17799    5. mailto:gcc (a] gcc.gnu.org
   17800    6. https://gcc.gnu.org/lists.html
   17801    7. https://www.fsf.org/
   17802    8. https://gcc.gnu.org/about.html
   17803    9. http://validator.w3.org/check/referer
   17804 ======================================================================
   17805 http://gcc.gnu.org/egcs-1.0/caveats.html
   17806 
   17807                                 EGCS 1.0 Caveats
   17808 
   17809      * EGCS has an integrated libstdc++, but does not have an integrated
   17810        libg++. Furthermore old libg++ releases will not work with egc; HJ
   17811        Lu has made a libg++-2.8.1.2 available which may work with EGCS.
   17812        Note most C++ programs only need libstdc++.
   17813      * Note that using -pedantic or -Wreturn-type can cause an explosion
   17814        in the amount of memory needed for template-heavy C++ code, such as
   17815        code that uses STL. Also note that -Wall includes -Wreturn-type, so
   17816        if you use -Wall you will need to specify -Wno-return-type to turn
   17817        it off.
   17818      * Exception handling may not work with shared libraries, particularly
   17819        on alphas, hppas, and mips based platforms. Exception handling is
   17820        known to work on x86-linux platforms with shared libraries.
   17821      * Some versions of the Linux kernel have bugs which prevent them from
   17822        being compiled or from running when compiled by EGCS. See the FAQ
   17823        (as shipped with EGCS 1.0) for additional information.
   17824      * In general, EGCS is more rigorous about rejecting invalid C++ code
   17825        or deprecated C++ constructs than G++ 2.7. As a result it may be
   17826        necessary to fix C++ code before it will compile with EGCS.
   17827      * G++ is also aggressively tracking the C++ standard; as a result
   17828        code which was previously valid (and thus accepted by other
   17829        compilers and older versions of G++) may no longer be accepted.
   17830      * EGCS 1.0 may not work with Red Hat Linux 5.0 on all targets. EGCS
   17831        1.0.x and later releases should work with Red Hat Linux 5.0.
   17832 
   17833 
   17834     For questions related to the use of GCC, please consult these web
   17835     pages and the [1]GCC manuals. If that fails, the
   17836     [2]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   17837     web pages and the development of GCC are welcome on our developer
   17838     list at [3]gcc (a] gcc.gnu.org. All of [4]our lists have public archives.
   17839 
   17840    Copyright (C) [5]Free Software Foundation, Inc. Verbatim copying and
   17841    distribution of this entire article is permitted in any medium,
   17842    provided this notice is preserved.
   17843 
   17844    These pages are [6]maintained by the GCC team. Last modified
   17845    2018-09-30[7].
   17846 
   17847 References
   17848 
   17849    1. https://gcc.gnu.org/onlinedocs/
   17850    2. mailto:gcc-help (a] gcc.gnu.org
   17851    3. mailto:gcc (a] gcc.gnu.org
   17852    4. https://gcc.gnu.org/lists.html
   17853    5. https://www.fsf.org/
   17854    6. https://gcc.gnu.org/about.html
   17855    7. http://validator.w3.org/check/referer
   17856 ======================================================================
   17857