(linenum→info "unix/slp.c:2238")

gcc/4.2.2/NEWS

    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-4.2/index.html
    9: 
   10:                            GCC 4.2 Release Series
   11: 
   12:    October 7, 2007
   13: 
   14:    The  [1]GNU project and the GCC developers are pleased to announce the
   15:    release of GCC 4.2.2.
   16: 
   17:    This release is a bug-fix release, containing fixes for regressions in GCC
   18:    4.2.1 relative to previous releases of GCC.
   19: 
   20: Release History
   21: 
   22:    GCC 4.2.2
   23:           October 7, 2007 ([2]changes)
   24: 
   25:    GCC 4.2.1
   26:           July 18, 2007 ([3]changes)
   27: 
   28:    GCC 4.2.0
   29:           May 13, 2007 ([4]changes)
   30: 
   31: References and Acknowledgements
   32: 
   33:    GCC used to stand for the GNU C Compiler, but since the compiler supports
   34:    several other languages aside from C, it now stands for the GNU Compiler
   35:    Collection.
   36: 
   37:    A  list  of [5]successful builds is updated as new information becomes
   38:    available.
   39: 
   40:    The  GCC  developers would like to thank the numerous people that have
   41:    contributed new features, improvements, bug fixes, and other changes as well
   42:    as test results to GCC. This [6]amazing group of volunteers is what makes
   43:    GCC successful.
   44: 
   45:    For additional information about GCC please refer to the [7]GCC project web
   46:    site or contact the [8]GCC development mailing list.
   47: 
   48:    To obtain GCC please use [9]our mirror sites, one of the [10]GNU mirror
   49:    sites, or [11]our SVN server.
   50: 
   51:    Please send FSF & GNU inquiries & questions to [12]gnu@gnu.org. There are
   52:    also [13]other ways to contact the FSF.
   53: 
   54:    These pages are maintained by [14]the GCC team.
   55: 
   56: 
   57:     For questions related to the use of GCC, please consult these web pages and
   58:     the [15]GCC manuals. If that fails, the [16]gcc-help@gcc.gnu.org mailing
   59:     list might help.
   60:     Please send comments on these web pages and the development of GCC to our
   61:     developer mailing list at [17]gcc@gnu.org or [18]gcc@gcc.gnu.org. All of
   62:     our lists have [19]public archives.
   63: 
   64:    Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
   65:    Boston, MA 02110, USA.
   66: 
   67:    Verbatim copying and distribution of this entire article is permitted in any
   68:    medium, provided this notice is preserved.
   69:    Last modified 2007-10-07 [20]Valid XHTML 1.0 
   70: 
   71: References
   72: 
   73:    1. http://www.gnu.org/
   74:    2. http://gcc.gnu.org/gcc-4.2/changes.html
   75:    3. http://gcc.gnu.org/gcc-4.2/changes.html
   76:    4. http://gcc.gnu.org/gcc-4.2/changes.html
   77:    5. http://gcc.gnu.org/gcc-4.2/buildstat.html
   78:    6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   79:    7. http://gcc.gnu.org/index.html
   80:    8. mailto:gcc@gcc.gnu.org
   81:    9. http://gcc.gnu.org/mirrors.html
   82:   10. http://www.gnu.org/order/ftp.html
   83:   11. http://gcc.gnu.org/svn.html
   84:   12. mailto:gnu@gnu.org
   85:   13. http://www.gnu.org/home.html#ContactInfo
   86:   14. http://gcc.gnu.org/about.html
   87:   15. http://gcc.gnu.org/onlinedocs/
   88:   16. mailto:gcc-help@gcc.gnu.org
   89:   17. mailto:gcc@gnu.org
   90:   18. mailto:gcc@gcc.gnu.org
   91:   19. http://gcc.gnu.org/lists.html
   92:   20. http://validator.w3.org/check/referer
   93: ======================================================================
   94: http://gcc.gnu.org/gcc-4.2/changes.html
   95: 
   96:                            GCC 4.2 Release Series
   97:                       Changes, New Features, and Fixes
   98: 
   99: Caveats
  100: 
  101:      * GCC no longer accepts the -fshared-data option. This option has had no
  102:        effect in any GCC 4 release; the targets to which the option used to
  103:        apply had been removed before GCC 4.0.
  104: 
  105: General Optimizer Improvements
  106: 
  107:      * New  command-line options specify the possible relationships among
  108:        parameters  and  between  parameters and global data. For example,
  109:        -fargument-noalias-anything specifies that arguments do not alias any
  110:        other storage.
  111:        Each language will automatically use whatever option is required by the
  112:        language standard. You should not need to use these options yourself.
  113: 
  114: New Languages and Language specific improvements
  115: 
  116:      * [1]OpenMP is now supported for the C, C++ and Fortran compilers.
  117:      * New command-line options -fstrict-overflow and -Wstrict-overflow have
  118:        been added. -fstrict-overflow tells the compiler that it may assume that
  119:        the program follows the strict signed overflow semantics permitted for
  120:        the language: for C and C++ this means that the compiler may assume that
  121:        signed overflow does not occur. For example, a loop like
  122:       for (i = 1; i > 0; i *= 2)
  123: 
  124:        is presumably intended to continue looping until i overflows. With
  125:        -fstrict-overflow, the compiler may assume that signed overflow will not
  126:        occur, and transform this into an infinite loop. -fstrict-overflow is
  127:        turned   on   by   default   at  -O2,  and  may  be  disabled  via
  128:        -fno-strict-overflow. The -Wstrict-overflow option may be used to warn
  129:        about cases where the compiler assumes that signed overflow will not
  130:        occur. It takes five different levels: -Wstrict-overflow=1 to 5. See the
  131:        [2]documentation for details. -Wstrict-overflow=1 is enabled by -Wall.
  132:      * The new command-line option -fno-toplevel-reorder directs GCC to emit
  133:        top-level functions, variables, and asm statements in the same order
  134:        that they appear in the input file. This is intended to support existing
  135:        code which relies on a particular ordering (for example, code which uses
  136:        top-level  asm statements to switch sections). For new code, it is
  137:        generally  better  to  use  function  and variable attributes. The
  138:        -fno-toplevel-reorder option may be used for most cases which currently
  139:        use -fno-unit-at-a-time. The -fno-unit-at-a-time option will be removed
  140:        in some future version of GCC. If you know of a case which requires
  141:        -fno-unit-at-a-time which is not fixed by -fno-toplevel-reorder, please
  142:        [3]open a bug report.
  143: 
  144:   C family
  145: 
  146:      * The  pragma  redefine_extname will now macro expand its tokens for
  147:        compatibility with SunPRO.
  148:      * In the next release of GCC, 4.3, -std=c99 or -std=gnu99 will direct GCC
  149:        to  handle  inline  functions as specified in the C99 standard. In
  150:        preparation for this, GCC 4.2 will warn about any use of non-static
  151:        inline functions in gnu99 or c99 mode. This new warning may be disabled
  152:        with the new gnu_inline function attribute or the new -fgnu89-inline
  153:        command-line option. Also, GCC 4.2 and later will define one of the
  154:        preprocessor macros __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__ to
  155:        indicate the semantics of inline functions in the current compilation.
  156:      * A  new  command-line option -Waddress has been added to warn about
  157:        suspicious uses of memory addresses as, for example, using the address
  158:        of a function in a conditional expression, and comparisons against the
  159:        memory address of a string literal. This warning is enabled by -Wall.
  160: 
  161:   C++
  162: 
  163:      * C++ visibility handling has been overhauled.
  164:        Restricted  visiblity  is propagated from classes to members, from
  165:        functions to local statics, and from templates and template arguments to
  166:        instantiations, unless the latter has explicitly declared visibility.
  167:        The visibility attribute for a class must come between the class-key and
  168:        the name, not after the closing brace.
  169:        Attributes are now allowed for enums and elaborated-type-specifiers that
  170:        only declare a type.
  171:        Members  of  the anonymous namespace are now local to a particular
  172:        translation unit, along with any other declarations which use them,
  173:        though they are still treated as having external linkage for language
  174:        semantics.
  175:      * The (undocumented) extension which permitted templates with default
  176:        arguments  to  be bound to template template parameters with fewer
  177:        parameters has been removed. For example:
  178:         template <template <typename> class C>
  179:         void f(C<double>) {}
  180: 
  181:         template <typename T, typename U = int>
  182:         struct S {};
  183: 
  184:         template void f(S<double>);
  185: 
  186:        is no longer accepted by G++. The reason this code is not accepted is
  187:        that S is a template with two parameters; therefore, it cannot be bound
  188:        to C which has only one parameter.
  189:      * The <?, >?, <?=, and >?= operators, deprecated in previous GCC releases,
  190:        have been removed.
  191:      * The command-line option -fconst-strings, deprecated in previous GCC
  192:        releases, has been removed.
  193:      * The configure variable enable-__cxa_atexit is now enabled by default for
  194:        more targets. Enabling this variable is necessary in order for static
  195:        destructors to be executed in the correct order, but it depends upon the
  196:        presence of a non-standard C library in the target library in order to
  197:        work. The variable is now enabled for more targets which are known to
  198:        have suitable C libraries.
  199:      * -Wextra will produce warnings for if statements with a semicolon as the
  200:        only body, to catch code like:
  201:          if (a);
  202:             return 1;
  203:          return 0;
  204: 
  205:        To suppress the warning in valid cases, use { } instead.
  206:      * The  C++  frontend now also produces strict aliasing warnings when
  207:        -fstrict-aliasing -Wstrict-aliasing is in effect.
  208: 
  209:     Runtime Library (libstdc++)
  210: 
  211:      * Added support for TR1 <random>, <complex>, and C compatibility headers.
  212:        In addition, a lock-free version of shared_ptr was contributed as part
  213:        of  Phillip  Jordan's  Google  Summer of Code project on lock-free
  214:        containers.  The  implementation  status for TR1 can be tracked in
  215:        [4]tr1.html
  216:      * In association with the Summer of Code work on lock-free containers, the
  217:        interface  for  atomic  builtins  was  adjusted,  creating simpler
  218:        alternatives for non-threaded code paths. Also, usage was consolidated
  219:        and all elements were moved from namespace std to namespace__gnu_cxx.
  220:        Affected interfaces are the functions __exchange_and_add, __atomic_add,
  221:        and the objects __mutex, __recursive_mutex, and __scoped_lock.
  222:      * Support for versioning weak symbol names via namespace association was
  223:        added. However, as this changes the names of exported symbols, this is
  224:        turned off by default in the current ABI. Intrepid users can enable this
  225:        feature  by  using --enable-symvers=gnu-versioned-namespace during
  226:        configuration.
  227:      * Revised, simplified, and expanded policy-based associative containers,
  228:        including data types for tree and trie forms (basic_tree, tree, trie),
  229:        lists (list_update), and both collision-chaining and probing hash-based
  230:        containers  (basic_hash_table, cc_hash_table, gp_hash_table). More
  231:        details per the [5]documentation.
  232:      * The implementation of the debug mode was modified, whereby the debug
  233:        namespaces were nested inside of namespace std and namespace __gnu_cxx
  234:        in order to resolve some long standing corner cases involving name
  235:        lookup. Debug functionality from the policy-based data structures was
  236:        consolidated and enabled with the single macro, _GLIBCXX_DEBUG. See PR
  237:        26142 for more information.
  238:      * Added extensions for type traits: __conditional_type, __numeric_traits,
  239:        __add_unsigned, __removed_unsigned, __enable_if.
  240:      * Added a typelist implementation for compile-time meta-programming.
  241:        Elements for typelist construction and operation can be found within
  242:        namespace __gnu_cxx::typelist.
  243:      * Added  a  new  allocator,  __gnu_cxx::throw_allocator, for testing
  244:        exception-safety.
  245:      * Enabled library-wide visibility control, allowing -fvisibility to be
  246:        used.
  247:      * Consolidated all nested namespaces and the conversion of __gnu_internal
  248:        implementation-private  details  to  anonymous namespaces whenever
  249:        possible.
  250:      * Implemented LWG resolutions DR 431 and DR 538.
  251: 
  252:   Fortran
  253: 
  254:      * Support for allocatable components has been added (TR 15581 and Fortran
  255:        2003).
  256:      * Support for the Fortran 2003 streaming IO extension has been added.
  257:      * The GNU Fortran compiler now uses 4-byte record markers by default for
  258:        unformatted files to be compatible with g77 and most other compilers.
  259:        The  implementation  allows  for  records greater than 2 GB and is
  260:        compatible with several other compilers. Older versions of gfortran used
  261:        8-byte record markers by default (on most systems). In order to change
  262:        the length of the record markers, e.g. to read unformatted files created
  263:        by older gfortran versions, the [6]-frecord-marker=8 option can be used.
  264: 
  265:   Java (GCJ)
  266: 
  267:      * A new command-line option -static-libgcj has been added for targets that
  268:        use a linker compatible with GNU Binutils. As its name implies, this
  269:        causes libgcj to be linked statically. In some cases this causes the
  270:        resulting executable to start faster and use less memory than if the
  271:        shared version of libgcj were used. However caution should be used as it
  272:        can also cause essential parts of the library to be omitted. Some of
  273:        these issues are discussed in:
  274:        [7]http://gcc.gnu.org/wiki/Statically%20linking%20libgcj 
  275:      * fastjar is no longer bundled with GCC. To build libgcj, you will need
  276:        either InfoZIP (both zip and unzip) or an external jar program. In the
  277:        former case, the GCC build will install a jar shell script that is based
  278:        on InfoZIP and provides the same functionality as fastjar.
  279: 
  280: New Targets and Target Specific Improvements
  281: 
  282:   IA-32/x86-64
  283: 
  284:      * -mtune=generic can now be used to generate code running well on common
  285:        x86 chips. This includes AMD Athlon, AMD Opteron, Intel Pentium-M, Intel
  286:        Pentium 4 and Intel Core 2.
  287:      * -mtune=native and -march=native will produce code optimized for the host
  288:        architecture as detected using the cpuid instruction.
  289:      * Added a new command-line option -fstackrealign and and __attribute__
  290:        ((force_align_arg_pointer)) to realign the stack at runtime. This allows
  291:        functions compiled with a vector-aligned stack to be invoked from legacy
  292:        objects that keep only word-alignment.
  293: 
  294:   SPARC
  295: 
  296:      * The default CPU setting has been changed from V7 to V9 in 32-bit mode on
  297:        Solaris 7 and above. This is already the case in 64-bit mode. It can be
  298:        overridden by specifying --with-cpu at configure time.
  299:      * Back-end support of built-in functions for atomic memory access has been
  300:        implemented.
  301:      * Support for the Sun UltraSPARC T1 (Niagara) processor has been added.
  302: 
  303:   M32C
  304: 
  305:      * Various bug fixes have made some functions (notably, functions returning
  306:        structures)  incompatible  with previous releases. Recompiling all
  307:        libraries  is recommended. Note that code quality has considerably
  308:        improved since 4.1, making a recompile even more beneficial.
  309: 
  310:   MIPS
  311: 
  312:      * Added support for the Broadcom SB-1A core.
  313: 
  314:   IA-64
  315: 
  316:      * Added  support  for IA-64 data and control speculation. By default
  317:        speculation is enabled only during second scheduler pass. A number of
  318:        machine flags was introduced to control the usage of speculation for
  319:        both scheduler passes.
  320: 
  321:   HPPA
  322: 
  323:      * Added Java language support (libffi and libjava) for 32-bit HP-UX 11
  324:        target.
  325: 
  326: Obsolete Systems
  327: 
  328: Documentation improvements
  329: 
  330:   PDF Documentation
  331: 
  332:      * A make pdf target has been added to the top-level makefile, enabling
  333:        automated production of PDF documentation files. (Front-ends external to
  334:        GCC should modify their Make-lang.in file to add a lang.pdf: target.)
  335: 
  336: Other significant improvements
  337: 
  338:   Build system improvements
  339: 
  340:      * All the components of the compiler are now bootstrapped by default. This
  341:        improves  the  resilience to bugs in the system compiler or binary
  342:        compatibility problems, as well as providing better testing of GCC 4.2
  343:        itself. In addition, if you build the compiler from a combined tree, the
  344:        assembler, linker, etc. will also be bootstrapped (i.e. built with
  345:        themselves).
  346:        You can disable this behavior, and go back to the pre-GCC 4.2 set up, by
  347:        configuring GCC with --disable-bootstrap.
  348:      * The rules that configure follows to find target tools resemble more
  349:        closely the locations that the built compiler will search. In addition,
  350:        you can use the new configure option --with-target-tools to specify
  351:        where to find the target tools used during the build, without affecting
  352:        what the built compiler will use.
  353:        This  can  be especially useful when building packages of GCC. For
  354:        example,  you may want to build GCC with GNU as or ld, even if the
  355:        resulting compiler to work with the native assembler and linker. To do
  356:        so, you can use --with-target-tools to point to the native tools.
  357: 
  358:   Incompatible changes to the build system
  359: 
  360:      * Front-ends external to GCC should modify their Make-lang.in file to
  361:        replace  double-colon  rules  (e.g. dvi::) with normal rules (like
  362:        lang.dvi:). Front-end makefile hooks do not use double-colon rules
  363:        anymore.
  364:      * Up to GCC 4.1, a popular way to specify the target tools used during the
  365:        build was to create directories named gas, binutils, etc. in the build
  366:        tree, and create links to the tools from there. This does not work any
  367:        more  when  the compiler is bootstrapped. The new configure option
  368:        --with-target-tools provides a better way to achieve the same effect,
  369:        and works for all native and cross settings.
  370: 
  371:    Please send FSF & GNU inquiries & questions to [8]gnu@gnu.org. There are
  372:    also [9]other ways to contact the FSF.
  373: 
  374:    These pages are maintained by [10]the GCC team.
  375: 
  376: 
  377:     For questions related to the use of GCC, please consult these web pages and
  378:     the [11]GCC manuals. If that fails, the [12]gcc-help@gcc.gnu.org mailing
  379:     list might help.
  380:     Please send comments on these web pages and the development of GCC to our
  381:     developer mailing list at [13]gcc@gnu.org or [14]gcc@gcc.gnu.org. All of
  382:     our lists have [15]public archives.
  383: 
  384:    Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
  385:    Boston, MA 02110, USA.
  386: 
  387:    Verbatim copying and distribution of this entire article is permitted in any
  388:    medium, provided this notice is preserved.
  389:    Last modified 2007-09-19 [16]Valid XHTML 1.0 
  390: 
  391: References
  392: 
  393:    1. http://gcc.gnu.org/projects/gomp/
  394:    2. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
  395:    3. http://gcc.gnu.org/bugs.html
  396:    4. http://gcc.gnu.org/onlinedocs/libstdc++/ext/tr1.html
  397:    5. http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html
  398:    6. http://gcc.gnu.org/onlinedocs/gfortran/Runtime-Options.html
  399:    7. http://gcc.gnu.org/wiki/Statically%20linking%20libgcj
  400:    8. mailto:gnu@gnu.org
  401:    9. http://www.gnu.org/home.html#ContactInfo
  402:   10. http://gcc.gnu.org/about.html
  403:   11. http://gcc.gnu.org/onlinedocs/
  404:   12. mailto:gcc-help@gcc.gnu.org
  405:   13. mailto:gcc@gnu.org
  406:   14. mailto:gcc@gcc.gnu.org
  407:   15. http://gcc.gnu.org/lists.html
  408:   16. http://validator.w3.org/check/referer
  409: ======================================================================
  410: http://gcc.gnu.org/gcc-4.1/index.html
  411: 
  412:                            GCC 4.1 Release Series
  413: 
  414:    February 13, 2007
  415: 
  416:    The  [1]GNU project and the GCC developers are pleased to announce the
  417:    release of GCC 4.1.2.
  418: 
  419:    This release is a bug-fix release, containing fixes for regressions in GCC
  420:    4.1.1 relative to previous releases of GCC.
  421: 
  422: Release History
  423: 
  424:    GCC 4.1.2
  425:           February 13, 2007 ([2]changes)
  426: 
  427:    GCC 4.1.1
  428:           May 24, 2006 ([3]changes)
  429: 
  430:    GCC 4.1.0
  431:           February 28, 2006 ([4]changes)
  432: 
  433: References and Acknowledgements
  434: 
  435:    GCC used to stand for the GNU C Compiler, but since the compiler supports
  436:    several other languages aside from C, it now stands for the GNU Compiler
  437:    Collection.
  438: 
  439:    A  list  of [5]successful builds is updated as new information becomes
  440:    available.
  441: 
  442:    The  GCC  developers would like to thank the numerous people that have
  443:    contributed new features, improvements, bug fixes, and other changes as well
  444:    as test results to GCC. This [6]amazing group of volunteers is what makes
  445:    GCC successful.
  446: 
  447:    For additional information about GCC please refer to the [7]GCC project web
  448:    site or contact the [8]GCC development mailing list.
  449: 
  450:    To obtain GCC please use [9]our mirror sites, one of the [10]GNU mirror
  451:    sites, or [11]our SVN server.
  452: 
  453:    Please send FSF & GNU inquiries & questions to [12]gnu@gnu.org. There are
  454:    also [13]other ways to contact the FSF.
  455: 
  456:    These pages are maintained by [14]the GCC team.
  457: 
  458: 
  459:     For questions related to the use of GCC, please consult these web pages and
  460:     the [15]GCC manuals. If that fails, the [16]gcc-help@gcc.gnu.org mailing
  461:     list might help.
  462:     Please send comments on these web pages and the development of GCC to our
  463:     developer mailing list at [17]gcc@gnu.org or [18]gcc@gcc.gnu.org. All of
  464:     our lists have [19]public archives.
  465: 
  466:    Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
  467:    Boston, MA 02110, USA.
  468: 
  469:    Verbatim copying and distribution of this entire article is permitted in any
  470:    medium, provided this notice is preserved.
  471:    Last modified 2007-07-25 [20]Valid XHTML 1.0 
  472: 
  473: References
  474: 
  475:    1. http://www.gnu.org/
  476:    2. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2
  477:    3. http://gcc.gnu.org/gcc-4.1/changes.html
  478:    4. http://gcc.gnu.org/gcc-4.1/changes.html
  479:    5. http://gcc.gnu.org/gcc-4.1/buildstat.html
  480:    6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
  481:    7. http://gcc.gnu.org/index.html
  482:    8. mailto:gcc@gcc.gnu.org
  483:    9. http://gcc.gnu.org/mirrors.html
  484:   10. http://www.gnu.org/order/ftp.html
  485:   11. http://gcc.gnu.org/svn.html
  486:   12. mailto:gnu@gnu.org
  487:   13. http://www.gnu.org/home.html#ContactInfo
  488:   14. http://gcc.gnu.org/about.html
  489:   15. http://gcc.gnu.org/onlinedocs/
  490:   16. mailto:gcc-help@gcc.gnu.org
  491:   17. mailto:gcc@gnu.org
  492:   18. mailto:gcc@gcc.gnu.org
  493:   19. http://gcc.gnu.org/lists.html
  494:   20. http://validator.w3.org/check/referer
  495: ======================================================================
  496: http://gcc.gnu.org/gcc-4.1/changes.html
  497: 
  498:                            GCC 4.1 Release Series
  499:                       Changes, New Features, and Fixes
  500: 
  501:    The latest release in the 4.1 release series is [1]GCC 4.1.2.
  502: 
  503: Caveats
  504: 
  505: General Optimizer Improvements
  506: 
  507:      * GCC now has infrastructure for inter-procedural optimizations and the
  508:        following inter-procedural optimizations are implemented:
  509:           + Profile  guided  inlining. When doing profile feedback guided
  510:             optimization, GCC can now use the profile to make better informed
  511:             decisions on whether inlining of a function is profitable or not.
  512:             This means that GCC will no longer inline functions at call sites
  513:             that are not executed very often, and that functions at hot call
  514:             sites are more likely to be inlined.
  515:             A  new parameter min-inline-recursive-probability is also now
  516:             available to throttle recursive inlining of functions with small
  517:             average recursive depths.
  518:           + Discovery of pure and const functions, a form of side-effects
  519:             analysis. While older GCC releases could also discover such special
  520:             functions, the new IPA-based pass runs earlier so that the results
  521:             are available to more optimizers. The pass is also simply more
  522:             powerful than the old one.
  523:           + Analysis  of  references  to static variables and type escape
  524:             analysis, also forms of side-effects analysis. The results of these
  525:             passes  allow  the  compiler  to  be  less conservative about
  526:             call-clobbered variables and references. This results in more
  527:             redundant loads being eliminated and in making static variables
  528:             candidates for register promotion.
  529:           + Improvement of RTL-based alias analysis. The results of type escape
  530:             analysis are fed to the RTL type-based alias analyzer, allowing it
  531:             to disambiguate more memory references.
  532:           + Interprocedural constant propagation and function versioning. This
  533:             pass looks for functions that are always called with the same
  534:             constant value for one or more of the function arguments, and
  535:             propagates those constants into those functions.
  536:           + GCC will now eliminate static variables whose usage was optimized
  537:             out.
  538:           + -fwhole-program --combine can now be used to make all functions in
  539:             program  static  allowing  whole  program optimization. As an
  540:             exception, the main function and all functions marked with the new
  541:             externally_visible attribute are kept global so that programs can
  542:             link with runtime libraries.
  543:      * GCC can now do a form of partial dead code elimination (PDCE) that
  544:        allows code motion of expressions to the paths where the result of the
  545:        expression is actually needed. This is not always a win, so the pass has
  546:        been limited to only consider profitable cases. Here is an example:
  547:     int foo (int *, int *);
  548:     int
  549:     bar (int d)
  550:     {
  551:       int a, b, c;
  552:       b = d + 1;
  553:       c = d + 2;
  554:       a = b + c;
  555:       if (d)
  556:         {
  557:           foo (&b, &c);
  558:           a = b + c;
  559:         }
  560:       printf ("%d\n", a);
  561:     }
  562:                The  a  =  b  +  c  can be sunk to right before the printf. Normal
  563:        code sinking will not do this, it will sink the first one above into the
  564:        else-branch of the conditional jump, which still gives you two copies of
  565:        the code.
  566:      * GCC now has a value range propagation pass. This allows the compiler to
  567:        eliminate bounds checks and branches. The results of the pass can also
  568:        be used to accurately compute branch probabilities.
  569:      * The  pass  to  convert  PHI nodes to straight-line code (a form of
  570:        if-conversion for GIMPLE) has been improved significantly. The two most
  571:        significant improvements are an improved algorithm to determine the
  572:        order in which the PHI nodes are considered, and an improvement that
  573:        allow the pass to consider if-conversions of basic blocks with more than
  574:        two predecessors.
  575:      * Alias analysis improvements. GCC can now differentiate between different
  576:        fields of structures in Tree-SSA's virtual operands form. This lets
  577:        stores/loads from non-overlapping structure fields not conflict. A new
  578:        algorithm to compute points-to sets was contributed that can allows GCC
  579:        to see now that p->a and p->b, where p is a pointer to a structure, can
  580:        never point to the same field.
  581:      * Various enhancements to auto-vectorization:
  582:           + Incrementally preserve SSA form when vectorizing.
  583:           + Incrementally preserve loop-closed form when vectorizing.
  584:           + Improvements to peeling for alignment: generate better code when
  585:             the misalignment of an access is known at compile time, or when
  586:             different accesses are known to have the same misalignment, even if
  587:             the misalignment amount itself is unknown.
  588:           + Consider dependence distance in the vectorizer.
  589:           + Externalize generic parts of data reference analysis to make this
  590:             analysis available to other passes.
  591:           + Vectorization of conditional code.
  592:           + Reduction support.
  593:      * GCC can now partition functions in sections of hot and cold code. This
  594:        can significantly improve performance due to better instruction cache
  595:        locality. This feature works best together with profile feedback driven
  596:        optimization.
  597:      * A new pass to avoid saving of unneeded arguments to the stack in vararg
  598:        functions if the compiler can prove that they will not be needed.
  599:      * Transition of basic block profiling to tree level implementation has
  600:        been completed. The new implementation should be considerably more
  601:        reliable  (hopefully  avoiding  profile mismatch errors when using
  602:        -fprofile-use or -fbranch-probabilities) and can be used to drive higher
  603:        level optimizations, such as inlining.
  604:        The  -ftree-based-profiling  command-line  option  was removed and
  605:        -fprofile-use  now  implies disabling old RTL level loop optimizer
  606:        (-fno-loop-optimize). Speculative prefetching optimization (originally
  607:        enabled by -fspeculative-prefetching) was removed.
  608: 
  609: New Languages and Language specific improvements
  610: 
  611:   C and Objective-C
  612: 
  613:      * The old Bison-based C and Objective-C parser has been replaced by a new,
  614:        faster hand-written recursive-descent parser.
  615: 
  616:   Ada
  617: 
  618:      * The build infrastructure for the Ada runtime library and tools has been
  619:        changed  to  be  better  integrated  with  the  rest  of the build
  620:        infrastructure of GCC. This should make doing cross builds of Ada a bit
  621:        easier.
  622: 
  623:   C++
  624: 
  625:      * ARM-style  name-injection  of friend declarations is no longer the
  626:        default. For example:
  627:           struct S {
  628:             friend void f();
  629:           };
  630: 
  631:           void g() { f(); }
  632:        will not be accepted; instead a declaration of f will need to be present
  633:        outside of the scope of S. The new -ffriend-injection option will enable
  634:        the old behavior.
  635:      * The (undocumented) extension which permitted templates with default
  636:        arguments  to  be bound to template template parameters with fewer
  637:        parameters has been deprecated, and will be removed in the next major
  638:        release of G++. For example:
  639:        template <template <typename> class C>
  640:        void f(C<double>) {}
  641: 
  642:        template <typename T, typename U = int>
  643:        struct S {};
  644: 
  645:        template void f(S<double>);
  646: 
  647:        makes use of the deprecated extension. The reason this code is not valid
  648:        ISO C++ is that S is a template with two parameters; therefore, it
  649:        cannot be bound to C which has only one parameter.
  650: 
  651:     Runtime Library (libstdc++)
  652: 
  653:      * Optimization work:
  654:           + A  new  implementation  of  std::search_n is provided, better
  655:             performing in case of random access iterators.
  656:           + Added further efficient specializations of istream functions, i.e.,
  657:             character array and string extractors.
  658:           + Other smaller improvements throughout.
  659:      * Policy-based associative containers, designed for high-performance,
  660:        flexibility and semantic safety are delivered in ext/pb_assoc.
  661:      * A  versatile  string  class,  __gnu_cxx::__versa_string, providing
  662:        facilities conforming to the standard requirements for basic_string, is
  663:        delivered in <ext/vstring.h>. In particular:
  664:           + Two base classes are provided: the default one avoids reference
  665:             counting and is optimized for short strings; the alternate one,
  666:             still uses it while improving in a few low level areas (e.g.,
  667:             alignment). See vstring_fwd.h for some useful typedefs.
  668:           + Various algorithms have been rewritten (e.g., replace), the code
  669:             streamlined and simple optimizations added.
  670:           + Option 3 of DR 431 is implemented for both available bases, thus
  671:             improving the support for stateful allocators.
  672:      * As  usual,  many  bugs  have  been  fixed  (e.g., libstdc++/13583,
  673:        libstdc++/23953) and LWG resolutions put into effect for the first time
  674:        (e.g., DR 280, DR 464, N1780 recommendations for DR 233, TR1 Issue
  675:        6.19). The implementation status of TR1 is now tracked in the docs in
  676:        tr1.html.
  677: 
  678:   Objective-C++
  679: 
  680:      * A new language front end for Objective-C++ has been added. This language
  681:        allows users to mix the object oriented features of Objective-C with
  682:        those of C++.
  683: 
  684:   Java (GCJ)
  685: 
  686:      * Core  library  (libgcj) updates based on GNU Classpath 0.15 - 0.19
  687:        features (plus some 0.20 bug-fixes)
  688:           + Networking
  689:                o The  java.net.HttpURLConnection implementation no longer
  690:                  buffers the entire response body in memory. This means that
  691:                  response  bodies larger than available memory can now be
  692:                  handled.
  693:           + (N)IO
  694:                o NIO   FileChannel.map   implementation,  fast  bulk  put
  695:                  implementation for DirectByteBuffer (speeds up this method
  696:                  10x).
  697:                o FileChannel.lock() and FileChannel.force() implemented.
  698:           + XML
  699:                o gnu.xml fix for nodes created outside a namespace context.
  700:                o Add support for output indenting and cdata-section-elements
  701:                  output instruction in xml.transform.
  702:                o xml.xpath corrections for cases where elements/attributes
  703:                  might  have  been  created  in non-namespace-aware mode.
  704:                  Corrections to handling of XSL variables and minor conformance
  705:                  updates.
  706:           + AWT
  707:                o GNU JAWT implementation, the AWT Native Interface, which
  708:                  allows direct access to native screen resources from within a
  709:                  Canvas's paint method. GNU Classpath Examples comes with a
  710:                  Demo, see libjava/classpath/examples/README.
  711:                o awt.datatransfer updated to 1.5 with support for FlavorEvents.
  712:                  The gtk+ awt peers now allow copy/paste of text, images,
  713:                  URIs/files and serialized objects with other applications and
  714:                  tracking clipboard change events with gtk+ 2.6 (for gtk+ 2.4
  715:                  only  text  and serialized objects are supported). A GNU
  716:                  Classpath Examples datatransfer Demo was added to show the new
  717:                  functionality.
  718:                o Split gtk+ awt peers event handling in two threads and improve
  719:                  gdk lock handling (solves several awt lock ups).
  720:                o Speed up awt Image loading.
  721:                o Better gtk+ scrollbar peer implementation when using gtk+ >=
  722:                  2.6.
  723:                o Handle  image loading errors correctly for gdkpixbuf and
  724:                  MediaTracker.
  725:                o Better  handle  GDK lock. Properly prefix gtkpeer native
  726:                  functions (cp_gtk).
  727:                o GdkGraphics2D has been updated to use Cairo 0.5.x or higher.
  728:                o BufferedImage  and  GtkImage rewrites. All image drawing
  729:                  operations should now work correctly (flipping requires gtk+
  730:                  >= 2.6)
  731:                o Future Graphics2D, image and text work is documented at:
  732:                  [2]http://developer.classpath.org/mediation/ClasspathGraphicsI
  733:                  magesText 
  734:                o When gtk+ 2.6 or higher is installed the default log handler
  735:                  will produce stack traces whenever a WARNING, CRITICAL or
  736:                  ERROR message is produced.
  737:           + Free Swing
  738:                o The  RepaintManager has been reworked for more efficient
  739:                  painting, especially for large GUIs.
  740:                o The layout manager OverlayLayout has been implemented, the
  741:                  BoxLayout   has  been  rewritten  to  make  use  of  the
  742:                  SizeRequirements utility class and caching for more efficient
  743:                  layout.
  744:                o Improved accessibility support.
  745:                o Significant progress has been made in the implementation of
  746:                  the javax.swing.plaf.metal package, with most UI delegates in
  747:                  a  working  state  now.  Please  test this with your own
  748:                  applications and provide feedback that will help us to improve
  749:                  this package.
  750:                o The GUI demo (gnu.classpath.examples.swing.Demo) has been
  751:                  extended to highlight various features in our Free Swing
  752:                  implementation. And it includes a look and feel switcher for
  753:                  Metal (default), Ocean and GNU themes.
  754:                o The javax.swing.plaf.multi package is now implemented.
  755:                o Editing and several key actions for JTree and JTable were
  756:                  implemented.
  757:                o Lots of icons and look and feel improvements for Free Swing
  758:                  basic  and  metal themes were added. Try running the GNU
  759:                  Classpath Swing Demo in examples
  760:                  (gnu.classpath.examples.swing.Demo)                with:
  761:                  -Dswing.defaultlaf=javax.swing.plaf.basic.BasicLookAndFeelor
  762:                  -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel
  763:                o Start of styled text capabilites for java.swing.text.
  764:                o DefaultMutableTreeNode pre-order, post-order, depth-first and
  765:                  breadth-first traversal enumerations implemented.
  766:                o JInternalFrame colors and titlebar draw properly.
  767:                o JTree is working up to par (icons, selection and keyboard
  768:                  traversal).
  769:                o JMenus were made more compatible in visual and programmatic
  770:                  behavior.
  771:                o JTable changeSelection and multiple selections implemented.
  772:                o JButton and JToggleButton change states work properly now.
  773:                o JFileChooser fixes.
  774:                o revalidate() and repaint() fixes which make Free Swing much
  775:                  more responsive.