
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.