1This file contains information about GCC releases which has been generated 2automatically 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 4that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2, 5see ONEWS. 6 7====================================================================== 8http://gcc.gnu.org/gcc-4.5/index.html 9 10 GCC 4.5 Release Series 11 12 Jul 2, 2012 13 14 The [1]GNU project and the GCC developers are pleased to announce the 15 release of GCC 4.5.4. 16 17 This release is a bug-fix release, containing fixes for regressions in 18 GCC 4.5.3 relative to previous releases of GCC. 19 20Release History 21 22 GCC 4.5.4 23 Jul 2, 2012 ([2]changes) 24 25 GCC 4.5.3 26 Apr 28, 2011 ([3]changes) 27 28 GCC 4.5.2 29 Dec 16, 2010 ([4]changes) 30 31 GCC 4.5.1 32 Jul 31, 2010 ([5]changes) 33 34 GCC 4.5.0 35 April 14, 2010 ([6]changes) 36 37References and Acknowledgements 38 39 GCC used to stand for the GNU C Compiler, but since the compiler 40 supports several other languages aside from C, it now stands for the 41 GNU Compiler Collection. 42 43 A list of [7]successful builds is updated as new information becomes 44 available. 45 46 The GCC developers would like to thank the numerous people that have 47 contributed new features, improvements, bug fixes, and other changes as 48 well as test results to GCC. This [8]amazing group of volunteers is 49 what makes GCC successful. 50 51 For additional information about GCC please refer to the [9]GCC project 52 web site or contact the [10]GCC development mailing list. 53 54 To obtain GCC please use [11]our mirror sites or [12]our SVN server. 55 56 57 For questions related to the use of GCC, please consult these web 58 pages and the [13]GCC manuals. If that fails, the 59 [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these 60 web pages and the development of GCC are welcome on our developer 61 list at [15]gcc@gcc.gnu.org. All of [16]our lists have public 62 archives. 63 64 Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and 65 distribution of this entire article is permitted in any medium, 66 provided this notice is preserved. 67 68 These pages are [18]maintained by the GCC team. Last modified 69 2012-07-02[19]. 70 71References 72 73 1. http://www.gnu.org/ 74 2. http://gcc.gnu.org/gcc-4.5/changes.html 75 3. http://gcc.gnu.org/gcc-4.5/changes.html 76 4. http://gcc.gnu.org/gcc-4.5/changes.html 77 5. http://gcc.gnu.org/gcc-4.5/changes.html 78 6. http://gcc.gnu.org/gcc-4.5/changes.html 79 7. http://gcc.gnu.org/gcc-4.5/buildstat.html 80 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 81 9. http://gcc.gnu.org/index.html 82 10. mailto:gcc@gcc.gnu.org 83 11. http://gcc.gnu.org/mirrors.html 84 12. http://gcc.gnu.org/svn.html 85 13. http://gcc.gnu.org/onlinedocs/ 86 14. mailto:gcc-help@gcc.gnu.org 87 15. mailto:gcc@gcc.gnu.org 88 16. http://gcc.gnu.org/lists.html 89 17. http://www.fsf.org/ 90 18. http://gcc.gnu.org/about.html 91 19. http://validator.w3.org/check/referer 92====================================================================== 93http://gcc.gnu.org/gcc-4.5/changes.html 94 95 GCC 4.5 Release Series 96 Changes, New Features, and Fixes 97 98Caveats 99 100 * GCC now requires the [1]MPC library in order to build. See the 101 [2]prerequisites page for version requirements. 102 * Support for a number of older systems and recently unmaintained or 103 untested target ports of GCC has been declared obsolete in GCC 4.5. 104 Unless there is activity to revive them, the next release of GCC 105 will have their sources permanently removed. 106 The following ports for individual systems on particular 107 architectures have been obsoleted: 108 + IRIX releases before 6.5 (mips-sgi-irix5*, 109 mips-sgi-irix6.[0-4]) 110 + Solaris 7 (*-*-solaris2.7) 111 + Tru64 UNIX releases before V5.1 (alpha*-dec-osf4*, 112 alpha-dec-osf5.0*) 113 + Details for the IRIX, Solaris 7, and Tru64 UNIX obsoletions 114 can be found in the [3]announcement. 115 Support for the classic POWER architecture implemented in the 116 original RIOS and RIOS2 processors of the old IBM RS/6000 product 117 line has been obsoleted in the rs6000 port. This does not affect 118 the new generation Power and PowerPC architectures. 119 * Support has been removed for all the [4]configurations obsoleted in 120 GCC 4.4. 121 * Support has been removed for the protoize and unprotoize utilities, 122 obsoleted in GCC 4.4. 123 * Support has been removed for tuning for Itanium1 (Merced) variants. 124 Note that code tuned for Itanium2 should also run correctly on 125 Itanium1. 126 * GCC now generates unwind info also for epilogues. DWARF debuginfo 127 generated by GCC now uses more features of DWARF3 than before, and 128 also some DWARF4 features. GDB older than 7.0 is not able to handle 129 either of these, so to debug GCC 4.5 generated binaries or 130 libraries GDB 7.0 or later is needed. You can disable use of DWARF4 131 features with the -gdwarf-3 -gstrict-dwarf options, or use 132 -gdwarf-2 -gstrict-dwarf to restrict GCC to just DWARF2, but 133 epilogue unwind info is emitted unconditionally whenever unwind 134 info is emitted. 135 * On x86 targets, code containing floating-point calculations may run 136 significantly slower when compiled with GCC 4.5 in strict C99 137 conformance mode than they did with earlier GCC versions. This is 138 due to stricter standard conformance of the compiler and can be 139 avoided by using the option -fexcess-precision=fast; also see 140 [5]below. 141 * The function attribute noinline no longer prevents GCC from cloning 142 the function. A new attribute noclone has been introduced for this 143 purpose. Cloning a function means that it is duplicated and the new 144 copy is specialized for certain contexts (for example when a 145 parameter is a known constant). 146 147General Optimizer Improvements 148 149 * The -save-temps now takes an optional argument. The -save-temps and 150 -save-temps=cwd switches write the temporary files in the current 151 working directory based on the original source file. The 152 -save-temps=obj switch will write files into the directory 153 specified with the -o option, and the intermediate filenames are 154 based on the output file. This will allow the user to get the 155 compiler intermediate files when doing parallel builds without two 156 builds of the same filename located in different directories from 157 interfering with each other. 158 * Debugging dumps are now created in the same directory as the object 159 file rather than in the current working directory. This allows the 160 user to get debugging dumps when doing parallel builds without two 161 builds of the same filename interfering with each other. 162 * GCC has been integrated with the [6]MPC library. This allows GCC to 163 evaluate complex arithmetic at compile time [7]more accurately. It 164 also allows GCC to evaluate calls to complex built-in math 165 functions having constant arguments and replace them at compile 166 time with their mathematically equivalent results. In doing so, GCC 167 can generate correct results regardless of the math library 168 implementation or floating point precision of the host platform. 169 This also allows GCC to generate identical results regardless of 170 whether one compiles in native or cross-compile configurations to a 171 particular target. The following built-in functions take advantage 172 of this new capability: cacos, cacosh, casin, casinh, catan, 173 catanh, ccos, ccosh, cexp, clog, cpow, csin, csinh, csqrt, ctan, 174 and ctanh. The float and long double variants of these functions 175 (e.g. csinf and csinl) are also handled. 176 * A new link-time optimizer has been added ([8]-flto). When this 177 option is used, GCC generates a bytecode representation of each 178 input file and writes it to specially-named sections in each object 179 file. When the object files are linked together, all the function 180 bodies are read from these named sections and instantiated as if 181 they had been part of the same translation unit. This enables 182 interprocedural optimizations to work across different files (and 183 even different languages), potentially improving the performance of 184 the generated code. To use the link-timer optimizer, -flto needs to 185 be specified at compile time and during the final link. If the 186 program does not require any symbols to be exported, it is possible 187 to combine -flto and the experimental [9]-fwhopr with 188 [10]-fwhole-program to allow the interprocedural optimizers to use 189 more aggressive assumptions. 190 * The automatic parallelization pass was enhanced to support 191 parallelization of outer loops. 192 * Automatic parallelization can be enabled as part of Graphite. In 193 addition to -ftree-parallelize-loops=, specify 194 -floop-parallelize-all to enable the Graphite-based optimization. 195 * The infrastructure for optimizing based on [11]restrict qualified 196 pointers has been rewritten and should result in code generation 197 improvements. Optimizations based on restrict qualified pointers 198 are now also available when using -fno-strict-aliasing. 199 * There is a new optimization pass that attempts to change prototype 200 of functions to avoid unused parameters, pass only relevant parts 201 of structures and turn arguments passed by reference to arguments 202 passed by value when possible. It is enabled by -O2 and above as 203 well as -Os and can be manually invoked using the new command-line 204 switch -fipa-sra. 205 * GCC now optimize exception handling code. In particular cleanup 206 regions that are proved to not have any effect are optimized out. 207 208New Languages and Language specific improvements 209 210 All languages 211 212 * The -fshow-column option is now on by default. This means error 213 messages now have a column associated with them. 214 215 Ada 216 217 * Compilation of programs heavily using discriminated record types 218 with variant parts has been sped up and generates more compact 219 code. 220 * Stack checking now works reasonably well on most plaforms. In some 221 specific cases, stack overflows may still fail to be detected, but 222 a compile-time warning will be issued for these cases. 223 224 C family 225 226 * If a header named in a #include directive is not found, the 227 compiler exits immediately. This avoids a cascade of errors arising 228 from declarations expected to be found in that header being 229 missing. 230 * A new built-in function __builtin_unreachable() has been added that 231 tells the compiler that control will never reach that point. It may 232 be used after asm statements that terminate by transferring control 233 elsewhere, and in other places that are known to be unreachable. 234 * The -Wlogical-op option now warns for logical expressions such as 235 (c == 1 && c == 2) and (c != 1 || c != 2), which are likely to be 236 mistakes. This option is disabled by default. 237 * An asm goto feature has been added to allow asm statements that 238 jump to C labels. 239 * C++0x raw strings are supported for C++ and for C with -std=gnu99. 240 * The deprecated attribute now takes an optional string argument, for 241 example, __attribute__((deprecated("text string"))), that will be 242 printed together with the deprecation warning. 243 244 C 245 246 * The -Wenum-compare option, which warns when comparing values of 247 different enum types, now works for C. It formerly only worked for 248 C++. This warning is enabled by -Wall. It may be avoided by using a 249 type cast. 250 * The -Wcast-qual option now warns about casts which are unsafe in 251 that they permit const-correctness to be violated without further 252 warnings. Specifically, it warns about cases where a qualifier is 253 added when all the lower types are not const. For example, it warns 254 about a cast from char ** to const char **. 255 * The -Wc++-compat option is significantly improved. It issues new 256 warnings for: 257 + Using C++ reserved operator names as identifiers. 258 + Conversions to enum types without explicit casts. 259 + Using va_arg with an enum type. 260 + Using different enum types in the two branches of ?:. 261 + Using ++ or -- on a variable of enum type. 262 + Using the same name as both a struct, union or enum tag and a 263 typedef, unless the typedef refers to the tagged type itself. 264 + Using a struct, union, or enum which is defined within another 265 struct or union. 266 + A struct field defined using a typedef if there is a field in 267 the struct, or an enclosing struct, whose name is the typedef 268 name. 269 + Duplicate definitions at file scope. 270 + Uninitialized const variables. 271 + A global variable with an anonymous struct, union, or enum 272 type. 273 + Using a string constant to initialize a char array whose size 274 is the length of the string. 275 * The new -Wjump-misses-init option warns about cases where a goto or 276 switch skips the initialization of a variable. This sort of branch 277 is an error in C++ but not in C. This warning is enabled by 278 -Wc++-compat. 279 * GCC now ensures that a C99-conforming <stdint.h> is present on most 280 targets, and uses information about the types in this header to 281 implement the Fortran bindings to those types. GCC does not ensure 282 the presence of such a header, and does not implement the Fortran 283 bindings, on the following targets: NetBSD, VxWorks, VMS, 284 SymbianOS, WinCE, LynxOS, Netware, QNX, Interix, TPF. 285 * GCC now implements C90- and C99-conforming rules for constant 286 expressions. This may cause warnings or errors for some code using 287 expressions that can be folded to a constant but are not constant 288 expressions as defined by ISO C. 289 * All known target-independent C90 and C90 Amendment 1 conformance 290 bugs, and all known target-independent C99 conformance bugs not 291 related to floating point or extended identifiers, have been fixed. 292 * The C decimal floating point support now includes support for the 293 FLOAT_CONST_DECIMAL64 pragma. 294 * The named address space feature from ISO/IEC TR 18037 is now 295 supported. This is currently only implemented for the SPU 296 processor. 297 298 C++ 299 300 * Improved [12]experimental support for the upcoming C++0x ISO C++ 301 standard, including support for raw strings, lambda expressions and 302 explicit type conversion operators. 303 * When printing the name of a class template specialization, G++ will 304 now omit any template arguments which come from default template 305 arguments. This behavior (and the pretty-printing of function 306 template specializations as template signature and arguments) can 307 be disabled with the -fno-pretty-templates option. 308 * Access control is now applied to typedef names used in a template, 309 which may cause G++ to reject some ill-formed code that was 310 accepted by earlier releases. The -fno-access-control option can be 311 used as a temporary workaround until the code is corrected. 312 * Compilation time for code that uses templates should now scale 313 linearly with the number of instantiations rather than 314 quadratically, as template instantiations are now looked up using 315 hash tables. 316 * Declarations of functions that look like builtin declarations of 317 library functions are only considered to be redeclarations if they 318 are declared with extern "C". This may cause problems with code 319 that omits extern "C" on hand-written declarations of C library 320 functions such as abort or memcpy. Such code is ill-formed, but was 321 accepted by earlier releases. 322 * Diagnostics that used to complain about passing non-POD types to 323 ... or jumping past the declaration of a non-POD variable now check 324 for triviality rather than PODness, as per C++0x. 325 * In C++0x mode local and anonymous classes are now allowed as 326 template arguments, and in declarations of variables and functions 327 with linkage, so long as any such declaration that is used is also 328 defined ([13]DR 757). 329 * Labels may now have attributes, as has been permitted for a while 330 in C. This is only permitted when the label definition and the 331 attribute specifier is followed by a semicolon--i.e., the label 332 applies to an empty statement. The only useful attribute for a 333 label is unused. 334 * G++ now implements [14]DR 176. Previously G++ did not support using 335 the injected-class-name of a template base class as a type name, 336 and lookup of the name found the declaration of the template in the 337 enclosing scope. Now lookup of the name finds the 338 injected-class-name, which can be used either as a type or as a 339 template, depending on whether or not the name is followed by a 340 template argument list. As a result of this change, some code that 341 was previously accepted may be ill-formed because 342 1. The injected-class-name is not accessible because it's from a 343 private base, or 344 2. The injected-class-name cannot be used as an argument for a 345 template template parameter. 346 In either of these cases, the code can be fixed by adding a 347 nested-name-specifier to explicitly name the template. The first 348 can be worked around with -fno-access-control; the second is only 349 rejected with -pedantic. 350 * A new standard mangling for SIMD vector types has been added, to 351 avoid name clashes on systems with vectors of varying length. By 352 default the compiler still uses the old mangling, but emits aliases 353 with the new mangling on targets that support strong aliases. Users 354 can switch over entirely to the new mangling with -fabi-version=4 355 or -fabi-version=0. -Wabi will now warn about code that uses the 356 old mangling. 357 * The command-line option -ftemplate-depth-N is now written as 358 -ftemplate-depth=N and the old form is deprecated. 359 * Conversions between NULL and non-pointer types are now warned by 360 default. The new option -Wno-conversion-null disables these 361 warnings. Previously these warnings were only available when using 362 -Wconversion explicitly. 363 364 Runtime Library (libstdc++) 365 366 * [15]Improved experimental support for the upcoming ISO C++ 367 standard, C++0x, including: 368 + Support for <future>, <functional>, and <random>. 369 + Existing facilities now exploit explicit operators and the 370 newly implemented core C++0x features. 371 * An experimental [16]profile mode has been added. This is an 372 implementation of many C++ standard library constructs with an 373 additional analysis layer that gives performance improvement advice 374 based on recognition of suboptimal usage patterns. For example, 375#include <vector> 376int main() 377{ 378 std::vector<int> v; 379 for (int k = 0; k < 1024; ++k) 380 v.insert(v.begin(), k); 381} 382 383 When instrumented via the profile mode, can return suggestions 384 about the initial size and choice of the container used as follows: 385vector-to-list: improvement = 5: call stack = 0x804842c ... 386 : advice = change std::vector to std::list 387vector-size: improvement = 3: call stack = 0x804842c ... 388 : advice = change initial container size from 0 to 1024 389 390 These constructs can be substituted for the normal libstdc++ 391 constructs on a piecemeal basis, or all existing components can be 392 transformed via the -D_GLIBCXX_PROFILE macro. 393 * [17]Support for decimal floating-point arithmetic (aka ISO C++ TR 394 24733) has been added. This support is in header file 395 <decimal/decimal>, uses namespace std::decimal, and includes 396 classes decimal32, decimal64, and decimal128. 397 * Sources have been audited for application of function attributes 398 nothrow, const, pure, and noreturn. 399 * Python pretty-printers have been added for many standard library 400 components that simplify the internal representation and present a 401 more intuitive view of components when used with 402 appropriately-advanced versions of GDB. For more information, 403 please consult the more [18]detailed description. 404 * The default behavior for comparing typeinfo names has changed, so 405 in <typeinfo>, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero. 406 * The new -static-libstdc++ option directs g++ to link the C++ 407 library statically, even if the default would normally be to link 408 it dynamically. 409 410 Fortran 411 412 * The COMMON default padding has been changed - instead of adding the 413 padding before a variable it is now added afterwards, which 414 increases the compatibility with other vendors and helps to obtain 415 the correct output in some cases. Cf. also the -falign-commons 416 option ([19]added in 4.4). 417 * The -finit-real= option now also supports the value snan for 418 signalling not-a-number; to be effective, one additionally needs to 419 enable trapping (e.g. via -ffpe-trap=). Note: Compile-time 420 optimizations can turn a signalling NaN into a quiet one. 421 * The new option -fcheck= has been added with the options bounds, 422 array-temps, do, pointer, and recursive. The bounds and array-temps 423 options are equivalent to -fbounds-check and 424 -fcheck-array-temporaries. The do option checks for invalid 425 modification of loop iteration variables, and the recursive option 426 tests for recursive calls to subroutines/functions which are not 427 marked as recursive. With pointer pointer association checks in 428 calls are performed; however, neither undefined pointers nor 429 pointers in expressions are handled. Using -fcheck=all enables all 430 these run-time checks. 431 * The run-time checking -fcheck=bounds now warns about invalid string 432 lengths of character dummy arguments. Additionally, more 433 compile-time checks have been added. 434 * The new option [20]-fno-protect-parens has been added; if set, the 435 compiler may reorder REAL and COMPLEX expressions without regard to 436 parentheses. 437 * GNU Fortran no longer links against libgfortranbegin. As before, 438 MAIN__ (assembler symbol name) is the actual Fortran main program, 439 which is invoked by the main function. However, main is now 440 generated and put in the same object file as MAIN__. For the time 441 being, libgfortranbegin still exists for backward compatibility. 442 For details see the new [21]Mixed-Language Programming chapter in 443 the manual. 444 * The I/O library was restructured for performance and cleaner code. 445 * Array assignments and WHERE are now run in parallel when OpenMP's 446 WORKSHARE is used. 447 * The experimental option -fwhole-file was added. The option allows 448 whole-file checking of procedure arguments and allows for better 449 optimizations. It can also be used with -fwhole-program, which is 450 now also supported in gfortran. 451 * More Fortran 2003 and Fortran 2008 mathematical functions can now 452 be used as initialization expressions. 453 * Some extended attributes such as STDCALL are now supported via the 454 [22]GCC$ compiler directive. 455 * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN 456 intrinsic behaves now as if zero were always positive. 457 * For legacy compatibiliy: On Cygwin and MinGW, the special files 458 CONOUT$ and CONIN$ (and CONERR$ which maps to CONOUT$) are now 459 supported. 460 * Fortran 2003 support has been extended: 461 + Procedure-pointer function results and procedure-pointer 462 components (including PASS), 463 + allocatable scalars (experimental), 464 + DEFERRED type-bound procedures, 465 + the ERRMSG= argument of the ALLOCATE and DEALLOCATE statements 466 have been implemented. 467 + The ALLOCATE statement supports type-specs and the SOURCE= 468 argument. 469 + OPERATOR(*) and ASSIGNMENT(=) are now allowed as GENERIC 470 type-bound procedure (i.e. as type-bound operators). 471 + Rounding (ROUND=, RZ, ...) for output is now supported. 472 + The INT_FAST{8,16,32,64,128}_T kind type parameters of the 473 intrinsic module ISO_C_BINDING are now supported, except for 474 the targets listed above as ones where GCC does not have 475 <stdint.h> type information. 476 + Extensible derived types with type-bound procedure or 477 procedure pointer with PASS attribute now have to use CLASS in 478 line with the Fortran 2003 standard; the workaround to use 479 TYPE is no longer supported. 480 + [23]Experimental, incomplete support for polymorphism, 481 including CLASS, SELECT TYPE and dynamic dispatch of 482 type-bound procedure calls. Some features do not work yet such 483 as unlimited polymorphism (CLASS(*)). 484 * Fortran 2008 support has been extended: 485 + The OPEN statement now supports the NEWUNIT= option, which 486 returns a unique file unit, thus preventing inadvertent use of 487 the same unit in different parts of the program. 488 + Support for unlimited format items has been added. 489 + The INT{8,16,32} and REAL{32,64,128} kind type parameters of 490 the intrinsic module ISO_FORTRAN_ENV are now supported. 491 + Using complex arguments with TAN, SINH, COSH, TANH, ASIN, 492 ACOS, and ATAN is now possible; the functions ASINH, ACOSH, 493 and ATANH have been added (for real and complex arguments) and 494 ATAN(Y,X) is now an alias for ATAN2(Y,X). 495 + The BLOCK construct has been implemented. 496 497New Targets and Target Specific Improvements 498 499 AIX 500 501 * Full cross-toolchain support now available with GNU Binutils 502 503 ARM 504 505 * GCC now supports the Cortex-M0 and Cortex-A5 processors. 506 * GCC now supports the ARM v7E-M architecture. 507 * GCC now supports VFPv4-based FPUs and FPUs with 508 single-precision-only VFP. 509 * GCC has many improvements to optimization for other ARM processors, 510 including scheduling support for the integer pipeline on Cortex-A9. 511 * GCC now supports the IEEE 754-2008 half-precision floating-point 512 type, and a variant ARM-specific half-precision type. This type is 513 specified using __fp16, with the layout determined by 514 -mfp16-format. With appropriate -mfpu options, the Cortex-A9 and 515 VFPv4 half-precision instructions will be used. 516 * GCC now supports the variant of AAPCS that uses VFP registers for 517 parameter passing and return values. 518 519 AVR 520 521 * The -mno-tablejump option has been removed because it has the same 522 effect as the -fno-jump-tables option. 523 * Added support for these new AVR devices: 524 + ATmega8U2 525 + ATmega16U2 526 + ATmega32U2 527 528 IA-32/x86-64 529 530 * GCC now will set the default for -march= based on the configure 531 target. 532 * GCC now supports handling floating-point excess precision arising 533 from use of the x87 floating-point unit in a way that conforms to 534 ISO C99. This is enabled with -fexcess-precision=standard and with 535 standards conformance options such as -std=c99, and may be disabled 536 using -fexcess-precision=fast. 537 * Support for the Intel Atom processor is now available through the 538 -march=atom and -mtune=atom options. 539 * A new -mcrc32 option is now available to enable crc32 intrinsics. 540 * A new -mmovbe option is now available to enable GCC to use the 541 movbe instruction to implement __builtin_bswap32 and 542 __builtin_bswap64. 543 * SSE math now can be enabled by default at configure time with the 544 new --with-fpmath=sse option. 545 * There is a new intrinsic header file, <x86intrin.h>. It should be 546 included before using any IA-32/x86-64 intrinsics. 547 * Support for the XOP, FMA4, and LWP instruction sets for the AMD 548 Orochi processors are now available with the -mxop, -mfma4, and 549 -mlwp options. 550 * The -mabm option enables GCC to use the popcnt and lzcnt 551 instructions on AMD processors. 552 * The -mpopcnt option enables GCC to use the popcnt instructions on 553 both AMD and Intel processors. 554 555 M68K/ColdFire 556 557 * GCC now supports ColdFire 51xx, 5221x, 5225x, 52274, 52277, 5301x 558 and 5441x devices. 559 * GCC now supports thread-local storage (TLS) on M68K and ColdFire 560 processors. 561 562 MeP 563 564 Support has been added for the Toshiba Media embedded Processor (MeP, 565 or mep-elf) embedded target. 566 567 MIPS 568 569 * GCC now supports MIPS 1004K processors. 570 * GCC can now be configured with options --with-arch-32, 571 --with-arch-64, --with-tune-32 and --with-tune-64 to control the 572 default optimization separately for 32-bit and 64-bit modes. 573 * MIPS targets now support an alternative _mcount interface, in which 574 register $12 points to the function's save slot for register $31. 575 This interface is selected by the -mcount-ra-address option; see 576 the documentation for more details. 577 * GNU/Linux targets can now generate read-only .eh_frame sections. 578 This optimization requires GNU binutils 2.20 or above, and is only 579 available if GCC is configured with a suitable version of binutils. 580 * GNU/Linux targets can now attach special relocations to indirect 581 calls, so that the linker can turn them into direct jumps or 582 branches. This optimization requires GNU binutils 2.20 or later, 583 and is automatically selected if GCC is configured with an 584 appropriate version of binutils. It can be explicitly enabled or 585 disabled using the -mrelax-pic-calls command-line option. 586 * GCC now generates more heavily-optimized atomic operations on 587 Octeon processors. 588 * MIPS targets now support the -fstack-protector option. 589 * GCC now supports an -msynci option, which specifies that synci is 590 enough to flush the instruction cache, without help from the 591 operating system. GCC uses this information to optimize 592 automatically-generated cache flush operations, such as those used 593 for nested functions in C. There is also a --with-synci 594 configure-time option, which makes -msynci the default. 595 * GCC supports four new function attributes for interrupt handlers: 596 interrupt, use_shadow_register_set, keep_interrupts_masked and 597 use_debug_exception_return. See the documentation for more details 598 about these attributes. 599 600 RS/6000 (POWER/PowerPC) 601 602 * GCC now supports the Power ISA 2.06, which includes the VSX 603 instructions that add vector 64-bit floating point support, new 604 population count instructions, and conversions between floating 605 point and unsigned types. 606 * Support for the power7 processor is now available through the 607 -mcpu=power7 and -mtune=power7. 608 * GCC will now vectorize loops that contain simple math functions 609 like copysign when generating code for altivec or VSX targets. 610 * Support for the A2 processor is now available through the -mcpu=a2 611 and -mtune=a2 options. 612 * Support for the 476 processor is now available through the 613 -mcpu={476,476fp} and -mtune={476,476fp} options. 614 * Support for the e500mc64 processor is now available through the 615 -mcpu=e500mc64 and -mtune=e500mc64 options. 616 * GCC can now be configured with options --with-cpu-32, 617 --with-cpu-64, --with-tune-32 and --with-tune-64 to control the 618 default optimization separately for 32-bit and 64-bit modes. 619 * Starting with GCC 4.5.4, vectors of type vector long long or vector 620 long are passed and returned in the same method as other vectors 621 with the VSX instruction set. Previously the GCC compiler did not 622 adhere to the ABI for 128-bit vectors with 64-bit integer base 623 types (PR 48857). This is also fixed in the GCC 4.6.1 release. 624 625 RX 626 627 Support has been added for the Renesas RX Processor (rx-elf) target. 628 629Operating Systems 630 631 Windows (Cygwin and MinGW) 632 633 * GCC now installs all the major language runtime libraries as DLLs 634 when configured with the --enable-shared option. 635 * GCC now makes use of the new support for aligned common variables 636 in versions of binutils >= 2.20 to fix bugs in the support for SSE 637 data types. 638 * Improvements to the libffi support library increase the reliability 639 of code generated by GCJ on all Windows platforms. Libgcj is 640 enabled by default for the first time. 641 * Libtool improvements simplify installation by placing the generated 642 DLLs in the correct binaries directory. 643 * Numerous other minor bugfixes and improvements, and substantial 644 enhancements to the Fortran language support library. 645 646 > 647 648Other significant improvements 649 650 Plugins 651 652 * It is now possible to extend the compiler without having to modify 653 its source code. A new option -fplugin=file.so tells GCC to load 654 the shared object file.so and execute it as part of the compiler. 655 The internal documentation describes the details on how plugins can 656 interact with the compiler. 657 658 Installation changes 659 660 * The move to newer autotools changed default installation 661 directories and switches to control them: The --with-datarootdir, 662 --with-docdir, --with-pdfdir, and --with-htmldir switches are not 663 used any more. Instead, you can now use --datarootdir, --docdir, 664 --htmldir, and --pdfdir. The default installation directories have 665 changed as follows according to the GNU Coding Standards: 666 667 datarootdir read-only architecture-independent data root [PREFIX/share] 668 localedir locale-specific message catalogs [DATAROOTDIR/locale] 669 docdir documentation root [DATAROOTDIR/doc/PACKAGE] 670 htmldir html documentation [DOCDIR] 671 dvidir dvi documentation [DOCDIR] 672 pdfdir pdf documentation [DOCDIR] 673 psdir ps documentation [DOCDIR] 674 The following variables have new default values: 675 676 datadir read-only architecture-independent data [DATAROOTDIR] 677 infodir info documentation [DATAROOTDIR/info] 678 mandir man documentation [DATAROOTDIR/man] 679 680GCC 4.5.1 681 682 This is the [24]list of problem reports (PRs) from GCC's bug tracking 683 system that are known to be fixed in the 4.5.1 release. This list might 684 not be complete (that is, it is possible that some PRs that have been 685 fixed are not listed here). 686 687 All languages 688 689 * GCC's new link-time optimizer ([25]-flto) now also works on a few 690 non-ELF targets: 691 + Cygwin (*-cygwin*) 692 + MinGW (*-mingw*) 693 + Darwin on x86-64 (x86_64-apple-darwin*) 694 LTO is not enabled by default for these targets. To enable LTO, you 695 should configure with the --enable-lto option. 696 697GCC 4.5.2 698 699 This is the [26]list of problem reports (PRs) from GCC's bug tracking 700 system that are known to be fixed in the 4.5.2 release. This list might 701 not be complete (that is, it is possible that some PRs that have been 702 fixed are not listed here). 703 704GCC 4.5.3 705 706 This is the [27]list of problem reports (PRs) from GCC's bug tracking 707 system that are known to be fixed in the 4.5.3 release. This list might 708 not be complete (that is, it is possible that some PRs that have been 709 fixed are not listed here). 710 711 On the PowerPC compiler, the Altivec builtin functions vec_ld and 712 vec_st have been modified to generate the Altivec memory instructions 713 LVX and STVX, even if the -mvsx option is used. In the initial GCC 4.5 714 release, these builtin functions were changed to generate VSX memory 715 reference instructions instead of Altivec memory instructions, but 716 there are differences between the two instructions. If the VSX 717 instruction set is available, you can now use the new builtin functions 718 vec_vsx_ld and vec_vsx_st which always generates the VSX memory 719 instructions. 720 721GCC 4.5.4 722 723 This is the [28]list of problem reports (PRs) from GCC's bug tracking 724 system that are known to be fixed in the 4.5.4 release. This list might 725 not be complete (that is, it is possible that some PRs that have been 726 fixed are not listed here). 727 728 729 For questions related to the use of GCC, please consult these web 730 pages and the [29]GCC manuals. If that fails, the 731 [30]gcc-help@gcc.gnu.org mailing list might help. Comments on these 732 web pages and the development of GCC are welcome on our developer 733 list at [31]gcc@gcc.gnu.org. All of [32]our lists have public 734 archives. 735 736 Copyright (C) [33]Free Software Foundation, Inc. Verbatim copying and 737 distribution of this entire article is permitted in any medium, 738 provided this notice is preserved. 739 740 These pages are [34]maintained by the GCC team. Last modified 741 2012-07-02[35]. 742 743References 744 745 1. http://www.multiprecision.org/ 746 2. http://gcc.gnu.org/install/prerequisites.html 747 3. http://gcc.gnu.org/ml/gcc/2010-01/msg00510.html 748 4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted 749 5. http://gcc.gnu.org/gcc-4.5/changes.html#x86 750 6. http://www.multiprecision.org/ 751 7. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30789 752 8. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801 753 9. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhopr-802 754 10. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800 755 11. http://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html 756 12. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html 757 13. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757 758 14. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176 759 15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x 760 16. http://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html 761 17. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733 762 18. http://sourceware.org/gdb/wiki/STLSupport 763 19. http://gcc.gnu.org/gcc-4.4/changes.html 764 20. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html 765 21. http://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html 766 22. http://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html 767 23. http://gcc.gnu.org/wiki/OOP 768 24. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1 769 25. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801 770 26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2 771 27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3 772 28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4 773 29. http://gcc.gnu.org/onlinedocs/ 774 30. mailto:gcc-help@gcc.gnu.org 775 31. mailto:gcc@gcc.gnu.org 776 32. http://gcc.gnu.org/lists.html 777 33. http://www.fsf.org/ 778 34. http://gcc.gnu.org/about.html 779 35. http://validator.w3.org/check/referer 780====================================================================== 781http://gcc.gnu.org/gcc-4.4/index.html 782 783 GCC 4.4 Release Series 784 785 March 13, 2012 786 787 The [1]GNU project and the GCC developers are pleased to announce the 788 release of GCC 4.4.7. 789 790 This release is a bug-fix release, containing fixes for regressions in 791 GCC 4.4.6 relative to previous releases of GCC. 792 793Release History 794 795 GCC 4.4.7 796 March 13, 2012 ([2]changes) 797 798 GCC 4.4.6 799 April 16, 2011 ([3]changes) 800 801 GCC 4.4.5 802 October 1, 2010 ([4]changes) 803 804 GCC 4.4.4 805 April 29, 2010 ([5]changes) 806 807 GCC 4.4.3 808 January 21, 2010 ([6]changes) 809 810 GCC 4.4.2 811 October 15, 2009 ([7]changes) 812 813 GCC 4.4.1 814 July 22, 2009 ([8]changes) 815 816 GCC 4.4.0 817 April 21, 2009 ([9]changes) 818 819References and Acknowledgements 820 821 GCC used to stand for the GNU C Compiler, but since the compiler 822 supports several other languages aside from C, it now stands for the 823 GNU Compiler Collection. 824 825 A list of [10]successful builds is updated as new information becomes 826 available. 827 828 The GCC developers would like to thank the numerous people that have 829 contributed new features, improvements, bug fixes, and other changes as 830 well as test results to GCC. This [11]amazing group of volunteers is 831 what makes GCC successful. 832 833 For additional information about GCC please refer to the [12]GCC 834 project web site or contact the [13]GCC development mailing list. 835 836 To obtain GCC please use [14]our mirror sites or [15]our SVN server. 837 838 839 For questions related to the use of GCC, please consult these web 840 pages and the [16]GCC manuals. If that fails, the 841 [17]gcc-help@gcc.gnu.org mailing list might help. Comments on these 842 web pages and the development of GCC are welcome on our developer 843 list at [18]gcc@gcc.gnu.org. All of [19]our lists have public 844 archives. 845 846 Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and 847 distribution of this entire article is permitted in any medium, 848 provided this notice is preserved. 849 850 These pages are [21]maintained by the GCC team. Last modified 851 2012-03-13[22]. 852 853References 854 855 1. http://www.gnu.org/ 856 2. http://gcc.gnu.org/gcc-4.4/changes.html 857 3. http://gcc.gnu.org/gcc-4.4/changes.html 858 4. http://gcc.gnu.org/gcc-4.4/changes.html 859 5. http://gcc.gnu.org/gcc-4.4/changes.html 860 6. http://gcc.gnu.org/gcc-4.4/changes.html 861 7. http://gcc.gnu.org/gcc-4.4/changes.html 862 8. http://gcc.gnu.org/gcc-4.4/changes.html 863 9. http://gcc.gnu.org/gcc-4.4/changes.html 864 10. http://gcc.gnu.org/gcc-4.4/buildstat.html 865 11. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 866 12. http://gcc.gnu.org/index.html 867 13. mailto:gcc@gcc.gnu.org 868 14. http://gcc.gnu.org/mirrors.html 869 15. http://gcc.gnu.org/svn.html 870 16. http://gcc.gnu.org/onlinedocs/ 871 17. mailto:gcc-help@gcc.gnu.org 872 18. mailto:gcc@gcc.gnu.org 873 19. http://gcc.gnu.org/lists.html 874 20. http://www.fsf.org/ 875 21. http://gcc.gnu.org/about.html 876 22. http://validator.w3.org/check/referer 877====================================================================== 878http://gcc.gnu.org/gcc-4.4/changes.html 879 880 GCC 4.4 Release Series 881 Changes, New Features, and Fixes 882 883 The latest release in the 4.4 release series is [1]GCC 4.4.7. 884 885Caveats 886 887 * __builtin_stdarg_start has been completely removed from GCC. 888 Support for <varargs.h> had been deprecated since GCC 4.0. Use 889 __builtin_va_start as a replacement. 890 * Some of the errors issued by the C++ front end that could be 891 downgraded to warnings in previous releases by using -fpermissive 892 are now warnings by default. They can be converted into errors by 893 using -pedantic-errors. 894 * Use of the cpp assertion extension will now emit a warning when 895 -Wdeprecated or -pedantic is used. This extension has been 896 deprecated for many years, but never warned about. 897 * Packed bit-fields of type char were not properly bit-packed on many 898 targets prior to GCC 4.4. On these targets, the fix in GCC 4.4 899 causes an ABI change. For example there is no longer a 4-bit 900 padding between field a and b in this structure: 901 struct foo 902 { 903 char a:4; 904 char b:8; 905 } __attribute__ ((packed)); 906 There is a new warning to help identify fields that are affected: 907 foo.c:5: note: Offset of packed bit-field 'b' has changed in GCC 4.4 908 The warning can be disabled with -Wno-packed-bitfield-compat. 909 * On ARM EABI targets, the C++ mangling of the va_list type has been 910 changed to conform to the current revision of the EABI. This does 911 not affect the libstdc++ library included with GCC. 912 * The SCOUNT and POS bits of the MIPS DSP control register are now 913 treated as global. Previous versions of GCC treated these fields as 914 call-clobbered instead. 915 * The MIPS port no longer recognizes the h asm constraint. It was 916 necessary to remove this constraint in order to avoid generating 917 unpredictable code sequences. 918 One of the main uses of the h constraint was to extract the high 919 part of a multiplication on 64-bit targets. For example: 920 asm ("dmultu\t%1,%2" : "=h" (result) : "r" (x), "r" (y)); 921 You can now achieve the same effect using 128-bit types: 922 typedef unsigned int uint128_t __attribute__((mode(TI))); 923 result = ((uint128_t) x * y) >> 64; 924 The second sequence is better in many ways. For example, if x and y 925 are constants, the compiler can perform the multiplication at 926 compile time. If x and y are not constants, the compiler can 927 schedule the runtime multiplication better than it can schedule an 928 asm statement. 929 * Support for a number of older systems and recently unmaintained or 930 untested target ports of GCC has been declared obsolete in GCC 4.4. 931 Unless there is activity to revive them, the next release of GCC 932 will have their sources permanently removed. 933 The following ports for individual systems on particular 934 architectures have been obsoleted: 935 + Generic a.out on IA32 and m68k (i[34567]86-*-aout*, 936 m68k-*-aout*) 937 + Generic COFF on ARM, H8300, IA32, m68k and SH (arm-*-coff*, 938 armel-*-coff*, h8300-*-*, i[34567]86-*-coff*, m68k-*-coff*, 939 sh-*-*). This does not affect other more specific targets 940 using the COFF object format on those architectures, or the 941 more specific H8300 and SH targets (h8300-*-rtems*, 942 h8300-*-elf*, sh-*-elf*, sh-*-symbianelf*, sh-*-linux*, 943 sh-*-netbsdelf*, sh-*-rtems*, sh-wrs-vxworks). 944 + 2BSD on PDP-11 (pdp11-*-bsd) 945 + AIX 4.1 and 4.2 on PowerPC (rs6000-ibm-aix4.[12]*, 946 powerpc-ibm-aix4.[12]*) 947 + Tuning support for Itanium1 (Merced) variants. Note that code 948 tuned for Itanium2 should also run correctly on Itanium1. 949 * The protoize and unprotoize utilities have been obsoleted and will 950 be removed in GCC 4.5. These utilities have not been installed by 951 default since GCC 3.0. 952 * Support has been removed for all the [2]configurations obsoleted in 953 GCC 4.3. 954 * Unknown -Wno-* options are now silently ignored by GCC if no other 955 diagnostics are issued. If other diagnostics are issued, then GCC 956 warns about the unknown options. 957 * More information on porting to GCC 4.4 from previous versions of 958 GCC can be found in the [3]porting guide for this release. 959 960General Optimizer Improvements 961 962 * A new command-line switch -findirect-inlining has been added. When 963 turned on it allows the inliner to also inline indirect calls that 964 are discovered to have known targets at compile time thanks to 965 previous inlining. 966 * A new command-line switch -ftree-switch-conversion has been added. 967 This new pass turns simple initializations of scalar variables in 968 switch statements into initializations from a static array, given 969 that all the values are known at compile time and the ratio between 970 the new array size and the original switch branches does not exceed 971 the parameter --param switch-conversion-max-branch-ratio (default 972 is eight). 973 * A new command-line switch -ftree-builtin-call-dce has been added. 974 This optimization eliminates unnecessary calls to certain builtin 975 functions when the return value is not used, in cases where the 976 calls can not be eliminated entirely because the function may set 977 errno. This optimization is on by default at -O2 and above. 978 * A new command-line switch -fconserve-stack directs the compiler to 979 minimize stack usage even if it makes the generated code slower. 980 This affects inlining decisions. 981 * When the assembler supports it, the compiler will now emit unwind 982 information using assembler .cfi directives. This makes it possible 983 to use such directives in inline assembler code. The new option 984 -fno-dwarf2-cfi-asm directs the compiler to not use .cfi 985 directives. 986 * The [4]Graphite branch has been merged. This merge has brought in a 987 new framework for loop optimizations based on a polyhedral 988 intermediate representation. These optimizations apply to all the 989 languages supported by GCC. The following new code transformations 990 are available in GCC 4.4: 991 + -floop-interchange performs loop interchange transformations 992 on loops. Interchanging two nested loops switches the inner 993 and outer loops. For example, given a loop like: 994 DO J = 1, M 995 DO I = 1, N 996 A(J, I) = A(J, I) * C 997 ENDDO 998 ENDDO 999 1000 loop interchange will transform the loop as if the user had 1001 written: 1002 DO I = 1, N 1003 DO J = 1, M 1004 A(J, I) = A(J, I) * C 1005 ENDDO 1006 ENDDO 1007 1008 which can be beneficial when N is larger than the caches, 1009 because in Fortran, the elements of an array are stored in 1010 memory contiguously by column, and the original loop iterates 1011 over rows, potentially creating at each access a cache miss. 1012 + -floop-strip-mine performs loop strip mining transformations 1013 on loops. Strip mining splits a loop into two nested loops. 1014 The outer loop has strides equal to the strip size and the 1015 inner loop has strides of the original loop within a strip. 1016 For example, given a loop like: 1017 DO I = 1, N 1018 A(I) = A(I) + C 1019 ENDDO 1020 1021 loop strip mining will transform the loop as if the user had 1022 written: 1023 DO II = 1, N, 4 1024 DO I = II, min (II + 3, N) 1025 A(I) = A(I) + C 1026 ENDDO 1027 ENDDO 1028 1029 + -floop-block performs loop blocking transformations on loops. 1030 Blocking strip mines each loop in the loop nest such that the 1031 memory accesses of the element loops fit inside caches. For 1032 example, given a loop like: 1033 DO I = 1, N 1034 DO J = 1, M 1035 A(J, I) = B(I) + C(J) 1036 ENDDO 1037 ENDDO 1038 1039 loop blocking will transform the loop as if the user had 1040 written: 1041 DO II = 1, N, 64 1042 DO JJ = 1, M, 64 1043 DO I = II, min (II + 63, N) 1044 DO J = JJ, min (JJ + 63, M) 1045 A(J, I) = B(I) + C(J) 1046 ENDDO 1047 ENDDO 1048 ENDDO 1049 ENDDO 1050 1051 which can be beneficial when M is larger than the caches, 1052 because the innermost loop will iterate over a smaller amount 1053 of data that can be kept in the caches. 1054 * A new register allocator has replaced the old one. It is called 1055 integrated register allocator (IRA) because coalescing, register 1056 live range splitting, and hard register preferencing are done 1057 on-the-fly during coloring. It also has better integration with the 1058 reload pass. IRA is a regional register allocator which uses modern 1059 Chaitin-Briggs coloring instead of Chow's priority coloring used in 1060 the old register allocator. More info about IRA internals and 1061 options can be found in the GCC manuals. 1062 * A new instruction scheduler and software pipeliner, based on the 1063 selective scheduling approach, has been added. The new pass 1064 performs instruction unification, register renaming, substitution 1065 through register copies, and speculation during scheduling. The 1066 software pipeliner is able to pipeline non-countable loops. The new 1067 pass is targeted at scheduling-eager in-order platforms. In GCC 4.4 1068 it is available for the Intel Itanium platform working by default 1069 as the second scheduling pass (after register allocation) at the 1070 -O3 optimization level. 1071 * When using -fprofile-generate with a multi-threaded program, the 1072 profile counts may be slightly wrong due to race conditions. The 1073 new -fprofile-correction option directs the compiler to apply 1074 heuristics to smooth out the inconsistencies. By default the 1075 compiler will give an error message when it finds an inconsistent 1076 profile. 1077 * The new -fprofile-dir=PATH option permits setting the directory 1078 where profile data files are stored when using -fprofile-generate 1079 and friends, and the directory used when reading profile data files 1080 using -fprofile-use and friends. 1081 1082New warning options 1083 1084 * The new -Wframe-larger-than=NUMBER option directs GCC to emit a 1085 warning if any stack frame is larger than NUMBER bytes. This may be 1086 used to help ensure that code fits within a limited amount of stack 1087 space. 1088 * The command-line option -Wlarger-than-N is now written as 1089 -Wlarger-than=N and the old form is deprecated. 1090 * The new -Wno-mudflap option disables warnings about constructs 1091 which can not be instrumented when using -fmudflap. 1092 1093New Languages and Language specific improvements 1094 1095 * Version 3.0 of the [5]OpenMP specification is now supported for the 1096 C, C++, and Fortran compilers. 1097 * New character data types, per [6]TR 19769: New character types in 1098 C, are now supported for the C compiler in -std=gnu99 mode, as 1099 __CHAR16_TYPE__ and __CHAR32_TYPE__, and for the C++ compiler in 1100 -std=c++0x and -std=gnu++0x modes, as char16_t and char32_t too. 1101 1102 C family 1103 1104 * A new optimize attribute was added to allow programmers to change 1105 the optimization level and particular optimization options for an 1106 individual function. You can also change the optimization options 1107 via the GCC optimize pragma for functions defined after the pragma. 1108 The GCC push_options pragma and the GCC pop_options pragma allow 1109 you temporarily save and restore the options used. The GCC 1110 reset_options pragma restores the options to what was specified on 1111 the command line. 1112 * Uninitialized warnings do not require enabling optimization 1113 anymore, that is, -Wuninitialized can be used together with -O0. 1114 Nonetheless, the warnings given by -Wuninitialized will probably be 1115 more accurate if optimization is enabled. 1116 * -Wparentheses now warns about expressions such as (!x | y) and (!x 1117 & y). Using explicit parentheses, such as in ((!x) | y), silences 1118 this warning. 1119 * -Wsequence-point now warns within if, while,do while and for 1120 conditions, and within for begin/end expressions. 1121 * A new option -dU is available to dump definitions of preprocessor 1122 macros that are tested or expanded. 1123 1124 C++ 1125 1126 * [7]Improved experimental support for the upcoming ISO C++ standard, 1127 C++0x. Including support for auto, inline namespaces, generalized 1128 initializer lists, defaulted and deleted functions, new character 1129 types, and scoped enums. 1130 * Those errors that may be downgraded to warnings to build legacy 1131 code now mention -fpermissive when -fdiagnostics-show-option is 1132 enabled. 1133 * -Wconversion now warns if the result of a static_cast to enumeral 1134 type is unspecified because the value is outside the range of the 1135 enumeral type. 1136 * -Wuninitialized now warns if a non-static reference or non-static 1137 const member appears in a class without constructors. 1138 * G++ now properly implements value-initialization, so objects with 1139 an initializer of () and an implicitly defined default constructor 1140 will be zero-initialized before the default constructor is called. 1141 1142 Runtime Library (libstdc++) 1143 1144 * [8]Improved experimental support for the upcoming ISO C++ standard, 1145 C++0x, including: 1146 + Support for <chrono>, <condition_variable>, <cstdatomic>, 1147 <forward_list>, <initializer_list>, <mutex>, <ratio>, 1148 <system_error>, and <thread>. 1149 + unique_ptr, <algorithm> additions, exception propagation, and 1150 support for the new character types in <string> and <limits>. 1151 + Existing facilities now exploit initializer lists, defaulted 1152 and deleted functions, and the newly implemented core C++0x 1153 features. 1154 + Some standard containers are more efficient together with 1155 stateful allocators, i.e., no allocator is constructed on the 1156 fly at element construction time. 1157 * Experimental support for non-standard pointer types in containers. 1158 * The long standing libstdc++/30928 has been fixed for targets 1159 running glibc 2.10 or later. 1160 * As usual, many small and larger bug fixes, in particular quite a 1161 few corner cases in <locale>. 1162 1163 Fortran 1164 1165 * GNU Fortran now employs libcpp directly instead of using cc1 as an 1166 external preprocessor. The [9]-cpp option was added to allow manual 1167 invocation of the preprocessor without relying on filename 1168 extensions. 1169 * The [10]-Warray-temporaries option warns about array temporaries 1170 generated by the compiler, as an aid to optimization. 1171 * The [11]-fcheck-array-temporaries option has been added, printing a 1172 notification at run time, when an array temporary had to be created 1173 for an function argument. Contrary to -Warray-temporaries the 1174 warning is only printed if the array is noncontiguous. 1175 * Improved generation of DWARF debugging symbols 1176 * If using an intrinsic not part of the selected standard (via -std= 1177 and -fall-intrinsics) gfortran will now treat it as if this 1178 procedure were declared EXTERNAL and try to link to a user-supplied 1179 procedure. -Wintrinsics-std will warn whenever this happens. The 1180 now-useless option -Wnonstd-intrinsic was removed. 1181 * The flag -falign-commons has been added to control the alignment of 1182 variables in COMMON blocks, which is enabled by default in line 1183 with previous GCC version. Using -fno-align-commons one can force 1184 commons to be contiguous in memory as required by the Fortran 1185 standard, however, this slows down the memory access. The option 1186 -Walign-commons, which is enabled by default, warns when padding 1187 bytes were added for alignment. The proper solution is to sort the 1188 common objects by decreasing storage size, which avoids the 1189 alignment problems. 1190 * Fortran 2003 support has been extended: 1191 + Wide characters (ISO 10646, UCS-4, kind=4) and UTF-8 I/O is 1192 now supported (except internal reads from/writes to wide 1193 strings). [12]-fbackslash now supports also \unnnn and 1194 \Unnnnnnnn to enter Unicode characters. 1195 + Asynchronous I/O (implemented as synchronous I/O) and the 1196 decimal=, size=, sign=, pad=, blank=, and delim= specifiers 1197 are now supported in I/O statements. 1198 + Support for Fortran 2003 structure constructors and for array 1199 constructor with typespec has been added. 1200 + Procedure Pointers (but not yet as component in derived types 1201 and as function results) are now supported. 1202 + Abstract types, type extension, and type-bound procedures 1203 (both PROCEDURE and GENERIC but not as operators). Note: As 1204 CLASS/polymorphyic types are not implemented, type-bound 1205 procedures with PASS accept as non-standard extension TYPE 1206 arguments. 1207 * Fortran 2008 support has been added: 1208 + The -std=f2008 option and support for the file extensions 1209 .f2008 and .F2008 has been added. 1210 + The g0 format descriptor is now supported. 1211 + The Fortran 2008 mathematical intrinsics ASINH, ACOSH, ATANH, 1212 ERF, ERFC, GAMMA, LOG_GAMMA, BESSEL_*, HYPOT, and ERFC_SCALED 1213 are now available (some of them existed as GNU extension 1214 before). Note: The hyperbolic functions are not yet supporting 1215 complex arguments and the three- argument version of BESSEL_*N 1216 is not available. 1217 + The bit intrinsics LEADZ and TRAILZ have been added. 1218 1219 Java (GCJ) 1220 1221 Ada 1222 1223 * The Ada runtime now supports multilibs on many platforms including 1224 x86_64, SPARC and PowerPC. Their build is enabled by default. 1225 1226New Targets and Target Specific Improvements 1227 1228 ARM 1229 1230 * GCC now supports optimizing for the Cortex-A9, Cortex-R4 and 1231 Cortex-R4F processors and has many other improvements to 1232 optimization for ARM processors. 1233 * GCC now supports the VFPv3 variant with 16 double-precision 1234 registers with -mfpu=vfpv3-d16. The option -mfpu=vfp3 has been 1235 renamed to -mfpu=vfpv3. 1236 * GCC now supports the -mfix-cortex-m3-ldrd option to work around an 1237 erratum on Cortex-M3 processors. 1238 * GCC now supports the __sync_* atomic operations for ARM EABI 1239 GNU/Linux. 1240 * The section anchors optimization is now enabled by default when 1241 optimizing for ARM. 1242 * GCC now uses a new EABI-compatible profiling interface for EABI 1243 targets. This requires a function __gnu_mcount_nc, which is 1244 provided by GNU libc versions 2.8 and later. 1245 1246 AVR 1247 1248 * The -mno-tablejump option has been deprecated because it has the 1249 same effect as the -fno-jump-tables option. 1250 * Added support for these new AVR devices: 1251 + ATA6289 1252 + ATtiny13A 1253 + ATtiny87 1254 + ATtiny167 1255 + ATtiny327 1256 + ATmega8C1 1257 + ATmega16C1 1258 + ATmega32C1 1259 + ATmega8M1 1260 + ATmega16M1 1261 + ATmega32M1 1262 + ATmega32U4 1263 + ATmega16HVB 1264 + ATmega4HVD 1265 + ATmega8HVD 1266 + ATmega64C1 1267 + ATmega64M1 1268 + ATmega16U4 1269 + ATmega32U6 1270 + ATmega128RFA1 1271 + AT90PWM81 1272 + AT90SCR100 1273 + M3000F 1274 + M3000S 1275 + M3001B 1276 1277 IA-32/x86-64 1278 1279 * Support for Intel AES built-in functions and code generation is 1280 available via -maes. 1281 * Support for Intel PCLMUL built-in function and code generation is 1282 available via -mpclmul. 1283 * Support for Intel AVX built-in functions and code generation is 1284 available via -mavx. 1285 * Automatically align the stack for local variables with alignment 1286 requirement. 1287 * GCC can now utilize the SVML library for vectorizing calls to a set 1288 of C99 functions if -mveclibabi=svml is specified and you link to 1289 an SVML ABI compatible library. 1290 * On x86-64, the ABI has been changed in the following cases to 1291 conform to the x86-64 ABI: 1292 + Passing/returning structures with flexible array member: 1293 struct foo 1294 { 1295 int i; 1296 int flex[]; 1297 }; 1298 + Passing/returning structures with complex float member: 1299 struct foo 1300 { 1301 int i; 1302 __complex__ float f; 1303 }; 1304 + Passing/returning unions with long double member: 1305 union foo 1306 { 1307 int x; 1308 long double ld; 1309 }; 1310 Code built with previous versions of GCC that uses any of these is 1311 not compatible with code built with GCC 4.4.0 or later. 1312 * A new target attribute was added to allow programmers to change the 1313 target options like -msse2 or -march=k8 for an individual function. 1314 You can also change the target options via the GCC target pragma 1315 for functions defined after the pragma. 1316 * GCC can now be configured with options --with-arch-32, 1317 --with-arch-64, --with-cpu-32, --with-cpu-64, --with-tune-32 and 1318 --with-tune-64 to control the default optimization separately for 1319 32-bit and 64-bit modes. 1320 1321 IA-32/IA64 1322 1323 * Support for __float128 (TFmode) IEEE quad type and corresponding 1324 TCmode IEEE complex quad type is available via the soft-fp library 1325 on IA-32/IA64 targets. This includes basic arithmetic operations 1326 (addition, subtraction, negation, multiplication and division) on 1327 __float128 real and TCmode complex values, the full set of IEEE 1328 comparisons between __float128 values, conversions to and from 1329 float, double and long double floating point types, as well as 1330 conversions to and from signed or unsigned integer, signed or 1331 unsigned long integer and signed or unsigned quad (TImode, IA64 1332 only) integer types. Additionally, all operations generate the full 1333 set of IEEE exceptions and support the full set of IEEE rounding 1334 modes. 1335 1336 M68K/ColdFire 1337 1338 * GCC now supports instruction scheduling for ColdFire V1, V3 and V4 1339 processors. (Scheduling support for ColdFire V2 processors was 1340 added in GCC 4.3.) 1341 * GCC now supports the -mxgot option to support programs requiring 1342 many GOT entries on ColdFire. 1343 * The m68k-*-linux-gnu target now builds multilibs by default. 1344 1345 MIPS 1346 1347 * MIPS Technologies have extended the original MIPS SVR4 ABI to 1348 include support for procedure linkage tables (PLTs) and copy 1349 relocations. These extensions allow GNU/Linux executables to use a 1350 significantly more efficient code model than the one defined by the 1351 original ABI. 1352 GCC support for this code model is available via a new command-line 1353 option, -mplt. There is also a new configure-time option, 1354 --with-mips-plt, to make -mplt the default. 1355 The new code model requires support from the assembler, the linker, 1356 and the runtime C library. This support is available in binutils 1357 2.19 and GLIBC 2.9. 1358 * GCC can now generate MIPS16 code for 32-bit GNU/Linux executables 1359 and 32-bit GNU/Linux shared libraries. This feature requires GNU 1360 binutils 2.19 or above. 1361 * Support for RMI's XLR processor is now available through the 1362 -march=xlr and -mtune=xlr options. 1363 * 64-bit targets can now perform 128-bit multiplications inline, 1364 instead of relying on a libgcc function. 1365 * Native GNU/Linux toolchains now support -march=native and 1366 -mtune=native, which select the host processor. 1367 * GCC now supports the R10K, R12K, R14K and R16K processors. The 1368 canonical -march= and -mtune= names for these processors are 1369 r10000, r12000, r14000 and r16000 respectively. 1370 * GCC can now work around the side effects of speculative execution 1371 on R10K processors. Please see the documentation of the 1372 -mr10k-cache-barrier option for details. 1373 * Support for the MIPS64 Release 2 instruction set has been added. 1374 The option -march=mips64r2 enables generation of these 1375 instructions. 1376 * GCC now supports Cavium Networks' Octeon processor. This support is 1377 available through the -march=octeon and -mtune=octeon options. 1378 * GCC now supports STMicroelectronics' Loongson 2E/2F processors. The 1379 canonical -march= and -mtune= names for these processors are 1380 loongson2e and loongson2f. 1381 1382 picochip 1383 1384 Picochip is a 16-bit processor. A typical picoChip contains over 250 1385 small cores, each with small amounts of memory. There are three 1386 processor variants (STAN, MEM and CTRL) with different instruction sets 1387 and memory configurations and they can be chosen using the -mae option. 1388 1389 This port is intended to be a "C" only port. 1390 1391 Power Architecture and PowerPC 1392 1393 * GCC now supports the e300c2, e300c3 and e500mc processors. 1394 * GCC now supports Xilinx processors with a single-precision FPU. 1395 * Decimal floating point is now supported for e500 processors. 1396 1397 S/390, zSeries and System z9/z10 1398 1399 * Support for the IBM System z10 EC/BC processor has been added. When 1400 using the -march=z10 option, the compiler will generate code making 1401 use of instructions provided by the General-Instruction-Extension 1402 Facility and the Execute-Extension Facility. 1403 1404 VxWorks 1405 1406 * GCC now supports the thread-local storage mechanism used on 1407 VxWorks. 1408 1409 Xtensa 1410 1411 * GCC now supports thread-local storage (TLS) for Xtensa processor 1412 configurations that include the Thread Pointer option. TLS also 1413 requires support from the assembler and linker; this support is 1414 provided in the GNU binutils beginning with version 2.19. 1415 1416Documentation improvements 1417 1418Other significant improvements 1419 1420GCC 4.4.1 1421 1422 This is the [13]list of problem reports (PRs) from GCC's bug tracking 1423 system that are known to be fixed in the 4.4.1 release. This list might 1424 not be complete (that is, it is possible that some PRs that have been 1425 fixed are not listed here). 1426 1427GCC 4.4.2 1428 1429 This is the [14]list of problem reports (PRs) from GCC's bug tracking 1430 system that are known to be fixed in the 4.4.2 release. This list might 1431 not be complete (that is, it is possible that some PRs that have been 1432 fixed are not listed here). 1433 1434GCC 4.4.3 1435 1436 This is the [15]list of problem reports (PRs) from GCC's bug tracking 1437 system that are known to be fixed in the 4.4.3 release. This list might 1438 not be complete (that is, it is possible that some PRs that have been 1439 fixed are not listed here). 1440 1441GCC 4.4.4 1442 1443 This is the [16]list of problem reports (PRs) from GCC's bug tracking 1444 system that are known to be fixed in the 4.4.4 release. This list might 1445 not be complete (that is, it is possible that some PRs that have been 1446 fixed are not listed here). 1447 1448GCC 4.4.5 1449 1450 This is the [17]list of problem reports (PRs) from GCC's bug tracking 1451 system that are known to be fixed in the 4.4.5 release. This list might 1452 not be complete (that is, it is possible that some PRs that have been 1453 fixed are not listed here). 1454 1455GCC 4.4.6 1456 1457 This is the [18]list of problem reports (PRs) from GCC's bug tracking 1458 system that are known to be fixed in the 4.4.6 release. This list might 1459 not be complete (that is, it is possible that some PRs that have been 1460 fixed are not listed here). 1461 1462GCC 4.4.7 1463 1464 This is the [19]list of problem reports (PRs) from GCC's bug tracking 1465 system that are known to be fixed in the 4.4.7 release. This list might 1466 not be complete (that is, it is possible that some PRs that have been 1467 fixed are not listed here). 1468 1469 1470 For questions related to the use of GCC, please consult these web 1471 pages and the [20]GCC manuals. If that fails, the 1472 [21]gcc-help@gcc.gnu.org mailing list might help. Comments on these 1473 web pages and the development of GCC are welcome on our developer 1474 list at [22]gcc@gcc.gnu.org. All of [23]our lists have public 1475 archives. 1476 1477 Copyright (C) [24]Free Software Foundation, Inc. Verbatim copying and 1478 distribution of this entire article is permitted in any medium, 1479 provided this notice is preserved. 1480 1481 These pages are [25]maintained by the GCC team. Last modified 1482 2012-03-13[26]. 1483 1484References 1485 1486 1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.7 1487 2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted 1488 3. http://gcc.gnu.org/gcc-4.4/porting_to.html 1489 4. http://gcc.gnu.org/wiki/Graphite 1490 5. http://openmp.org/wp/openmp-specifications/ 1491 6. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf 1492 7. http://gcc.gnu.org/gcc-4.4/cxx0x_status.html 1493 8. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#id476343 1494 9. http://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html 1495 10. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWarray-temporaries_007d-125 1496 11. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcheck-array-temporaries_007d-221 1497 12. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bbackslash_007d-34 1498 13. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.1 1499 14. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.2 1500 15. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.3 1501 16. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.4 1502 17. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.5 1503 18. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.6 1504 19. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.7 1505 20. http://gcc.gnu.org/onlinedocs/ 1506 21. mailto:gcc-help@gcc.gnu.org 1507 22. mailto:gcc@gcc.gnu.org 1508 23. http://gcc.gnu.org/lists.html 1509 24. http://www.fsf.org/ 1510 25. http://gcc.gnu.org/about.html 1511 26. http://validator.w3.org/check/referer 1512====================================================================== 1513http://gcc.gnu.org/gcc-4.3/index.html 1514 1515 GCC 4.3 Release Series 1516 1517 Jun 27, 2011 1518 1519 The [1]GNU project and the GCC developers are pleased to announce the 1520 release of GCC 4.3.6. 1521 1522 This release is a bug-fix release, containing fixes for regressions in 1523 GCC 4.3.5 relative to previous releases of GCC. 1524 1525Release History 1526 1527 GCC 4.3.6 1528 Jun 27, 2011 ([2]changes) 1529 1530 GCC 4.3.5 1531 May 22, 2010 ([3]changes) 1532 1533 GCC 4.3.4 1534 August 4, 2009 ([4]changes) 1535 1536 GCC 4.3.3 1537 January 24, 2009 ([5]changes) 1538 1539 GCC 4.3.2 1540 August 27, 2008 ([6]changes) 1541 1542 GCC 4.3.1 1543 June 6, 2008 ([7]changes) 1544 1545 GCC 4.3.0 1546 March 5, 2008 ([8]changes) 1547 1548References and Acknowledgements 1549 1550 GCC used to stand for the GNU C Compiler, but since the compiler 1551 supports several other languages aside from C, it now stands for the 1552 GNU Compiler Collection. 1553 1554 A list of [9]successful builds is updated as new information becomes 1555 available. 1556 1557 The GCC developers would like to thank the numerous people that have 1558 contributed new features, improvements, bug fixes, and other changes as 1559 well as test results to GCC. This [10]amazing group of volunteers is 1560 what makes GCC successful. 1561 1562 For additional information about GCC please refer to the [11]GCC 1563 project web site or contact the [12]GCC development mailing list. 1564 1565 To obtain GCC please use [13]our mirror sites or [14]our SVN server. 1566 1567 1568 For questions related to the use of GCC, please consult these web 1569 pages and the [15]GCC manuals. If that fails, the 1570 [16]gcc-help@gcc.gnu.org mailing list might help. Comments on these 1571 web pages and the development of GCC are welcome on our developer 1572 list at [17]gcc@gcc.gnu.org. All of [18]our lists have public 1573 archives. 1574 1575 Copyright (C) [19]Free Software Foundation, Inc. Verbatim copying and 1576 distribution of this entire article is permitted in any medium, 1577 provided this notice is preserved. 1578 1579 These pages are [20]maintained by the GCC team. Last modified 1580 2011-06-27[21]. 1581 1582References 1583 1584 1. http://www.gnu.org/ 1585 2. http://gcc.gnu.org/gcc-4.3/changes.html 1586 3. http://gcc.gnu.org/gcc-4.3/changes.html 1587 4. http://gcc.gnu.org/gcc-4.3/changes.html 1588 5. http://gcc.gnu.org/gcc-4.3/changes.html 1589 6. http://gcc.gnu.org/gcc-4.3/changes.html 1590 7. http://gcc.gnu.org/gcc-4.3/changes.html 1591 8. http://gcc.gnu.org/gcc-4.3/changes.html 1592 9. http://gcc.gnu.org/gcc-4.3/buildstat.html 1593 10. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 1594 11. http://gcc.gnu.org/index.html 1595 12. mailto:gcc@gcc.gnu.org 1596 13. http://gcc.gnu.org/mirrors.html 1597 14. http://gcc.gnu.org/svn.html 1598 15. http://gcc.gnu.org/onlinedocs/ 1599 16. mailto:gcc-help@gcc.gnu.org 1600 17. mailto:gcc@gcc.gnu.org 1601 18. http://gcc.gnu.org/lists.html 1602 19. http://www.fsf.org/ 1603 20. http://gcc.gnu.org/about.html 1604 21. http://validator.w3.org/check/referer 1605====================================================================== 1606http://gcc.gnu.org/gcc-4.3/changes.html 1607 1608 GCC 4.3 Release Series 1609 Changes, New Features, and Fixes 1610 1611 The latest release in the 4.3 release series is [1]GCC 4.3.5. 1612 1613Caveats 1614 1615 * GCC requires the [2]GMP and [3]MPFR libraries for building all the 1616 various front-end languages it supports. See the [4]prerequisites 1617 page for version requirements. 1618 * ColdFire targets now treat long double as having the same format as 1619 double. In earlier versions of GCC, they used the 68881 long double 1620 format instead. 1621 * The m68k-uclinux target now uses the same calling conventions as 1622 m68k-linux-gnu. You can select the original calling conventions by 1623 configuring for m68k-uclinuxoldabi instead. Note that 1624 m68k-uclinuxoldabi also retains the original 80-bit long double on 1625 ColdFire targets. 1626 * The -fforce-mem option has been removed because it has had no 1627 effect in the last few GCC releases. 1628 * The i386 -msvr3-shlib option has been removed since it is no longer 1629 used. 1630 * Fastcall for i386 has been changed not to pass aggregate arguments 1631 in registers, following Microsoft compilers. 1632 * Support for the AOF assembler has been removed from the ARM back 1633 end; this affects only the targets arm-semi-aof and armel-semi-aof, 1634 which are no longer recognized. We removed these targets without a 1635 deprecation period because we discovered that they have been 1636 unusable since GCC 4.0.0. 1637 * Support for the TMS320C3x/C4x processor (targets c4x-* and tic4x-*) 1638 has been removed. This support had been deprecated since GCC 4.0.0. 1639 * Support for a number of older systems and recently unmaintained or 1640 untested target ports of GCC has been declared obsolete in GCC 4.3. 1641 Unless there is activity to revive them, the next release of GCC 1642 will have their sources permanently removed. 1643 All GCC ports for the following processor architectures have been 1644 declared obsolete: 1645 + Morpho MT (mt-*) 1646 The following aliases for processor architectures have been 1647 declared obsolete. Users should use the indicated generic target 1648 names instead, with compile-time options such as -mcpu or 1649 configure-time options such as --with-cpu to control the 1650 configuration more precisely. 1651 + strongarm*-*-*, ep9312*-*-*, xscale*-*-* (use arm*-*-* 1652 instead). 1653 + parisc*-*-* (use hppa*-*-* instead). 1654 + m680[012]0-*-* (use m68k-*-* instead). 1655 All GCC ports for the following operating systems have been 1656 declared obsolete: 1657 + BeOS (*-*-beos*) 1658 + kaOS (*-*-kaos*) 1659 + GNU/Linux using the a.out object format (*-*-linux*aout*) 1660 + GNU/Linux using version 1 of the GNU C Library 1661 (*-*-linux*libc1*) 1662 + Solaris versions before Solaris 7 (*-*-solaris2.[0-6], 1663 *-*-solaris2.[0-6].*) 1664 + Miscellaneous System V (*-*-sysv*) 1665 + WindISS (*-*-windiss*) 1666 Also, those for some individual systems on particular architectures 1667 have been obsoleted: 1668 + UNICOS/mk on DEC Alpha (alpha*-*-unicosmk*) 1669 + CRIS with a.out object format (cris-*-aout) 1670 + BSD 4.3 on PA-RISC (hppa1.1-*-bsd*) 1671 + OSF/1 on PA-RISC (hppa1.1-*-osf*) 1672 + PRO on PA-RISC (hppa1.1-*-pro*) 1673 + Sequent PTX on IA32 (i[34567]86-sequent-ptx4*, 1674 i[34567]86-sequent-sysv4*) 1675 + SCO Open Server 5 on IA32 (i[34567]86-*-sco3.2v5*) 1676 + UWIN on IA32 (i[34567]86-*-uwin*) (support for UWIN as a host 1677 was previously [5]removed in 2001, leaving only the support 1678 for UWIN as a target now being deprecated) 1679 + ChorusOS on PowerPC (powerpc-*-chorusos*) 1680 + All VAX configurations apart from NetBSD and OpenBSD 1681 (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*) 1682 * The [6]-Wconversion option has been modified. Its purpose now is to 1683 warn for implicit conversions that may alter a value. This new 1684 behavior is available for both C and C++. Warnings about 1685 conversions between signed and unsigned integers can be disabled by 1686 using -Wno-sign-conversion. In C++, they are disabled by default 1687 unless -Wsign-conversion is explicitly requested. The old behavior 1688 of -Wconversion, that is, warn for prototypes causing a type 1689 conversion that is different from what would happen to the same 1690 argument in the absence of a prototype, has been moved to a new 1691 option -Wtraditional-conversion, which is only available for C. 1692 * The -m386, -m486, -mpentium and -mpentiumpro tuning options have 1693 been removed because they were deprecated for more than 3 GCC major 1694 releases. Use -mtune=i386, -mtune=i486, -mtune=pentium or 1695 -mtune=pentiumpro as a replacement. 1696 * The -funsafe-math-optimizations option now automatically turns on 1697 -fno-trapping-math in addition to -fno-signed-zeros, as it enables 1698 reassociation and thus may introduce or remove traps. 1699 * The -ftree-vectorize option is now on by default under -O3. In 1700 order to generate code for a SIMD extension, it has to be enabled 1701 as well: use -maltivec for PowerPC platforms and -msse/-msse2 for 1702 i?86 and x86_64. 1703 * More information on porting to GCC 4.3 from previous versions of 1704 GCC can be found in the [7]porting guide for this release. 1705 1706General Optimizer Improvements 1707 1708 * The GCC middle-end has been integrated with the [8]MPFR library. 1709 This allows GCC to evaluate and replace at compile-time calls to 1710 built-in math functions having constant arguments with their 1711 mathematically equivalent results. In making use of [9]MPFR, GCC 1712 can generate correct results regardless of the math library 1713 implementation or floating point precision of the host platform. 1714 This also allows GCC to generate identical results regardless of 1715 whether one compiles in native or cross-compile configurations to a 1716 particular target. The following built-in functions take advantage 1717 of this new capability: acos, acosh, asin, asinh, atan2, atan, 1718 atanh, cbrt, cos, cosh, drem, erf, erfc, exp10, exp2, exp, expm1, 1719 fdim, fma, fmax, fmin, gamma_r, hypot, j0, j1, jn, lgamma_r, log10, 1720 log1p, log2, log, pow10, pow, remainder, remquo, sin, sincos, sinh, 1721 tan, tanh, tgamma, y0, y1 and yn. The float and long double 1722 variants of these functions (e.g. sinf and sinl) are also handled. 1723 The sqrt and cabs functions with constant arguments were already 1724 optimized in prior GCC releases. Now they also use [10]MPFR. 1725 * A new forward propagation pass on RTL was added. The new pass 1726 replaces several slower transformations, resulting in compile-time 1727 improvements as well as better code generation in some cases. 1728 * A new command-line switch -frecord-gcc-switches has been added to 1729 GCC, although it is only enabled for some targets. The switch 1730 causes the command line that was used to invoke the compiler to be 1731 recorded into the object file that is being created. The exact 1732 format of this recording is target and binary file format 1733 dependent, but it usually takes the form of a note section 1734 containing ASCII text. The switch is related to the -fverbose-asm 1735 switch, but that one only records the information in the assembler 1736 output file as comments, so the information never reaches the 1737 object file. 1738 * The inliner heuristic is now aware of stack frame consumption. New 1739 command-line parameters --param large-stack-frame and --param 1740 large-stack-frame-growth can be used to limit stack frame size 1741 growth caused by inlining. 1742 * During feedback directed optimizations, the expected block size the 1743 memcpy, memset and bzero functions operate on is discovered and for 1744 cases of commonly used small sizes, specialized inline code is 1745 generated. 1746 * __builtin_expect no longer requires its argument to be a compile 1747 time constant. 1748 * Interprocedural optimization was reorganized to work on functions 1749 in SSA form. This enables more precise and cheaper dataflow 1750 analysis and makes writing interprocedural optimizations easier. 1751 The following improvements have been implemented on top of this 1752 framework: 1753 + Pre-inline optimization: Selected local optimization passes 1754 are run before the inliner (and other interprocedural passes) 1755 are executed. This significantly improves the accuracy of code 1756 growth estimates used by the inliner and reduces the overall 1757 memory footprint for large compilation units. 1758 + Early inlining (a simple bottom-up inliner pass inlining only 1759 functions whose body is smaller than the expected call 1760 overhead) is now executed with the early optimization passes, 1761 thus inlining already optimized function bodies into an 1762 unoptimized function that is subsequently optimized by early 1763 optimizers. This enables the compiler to quickly eliminate 1764 abstraction penalty in C++ programs. 1765 + Interprocedural constant propagation now operate on SSA form 1766 increasing accuracy of the analysis. 1767 * A new internal representation for GIMPLE statements has been 1768 contributed, resulting in compile-time memory savings. 1769 * The vectorizer was enhanced to support vectorization of outer 1770 loops, intra-iteration parallelism (loop-aware SLP), vectorization 1771 of strided accesses and loops with multiple data-types. Run-time 1772 dependency testing using loop versioning was added. The cost model, 1773 turned on by -fvect-cost-model, was developed. 1774 1775New Languages and Language specific improvements 1776 1777 * We have added new command-line options 1778 -finstrument-functions-exclude-function-list and 1779 -finstrument-functions-exclude-file-list. They provide more control 1780 over which functions are annotated by the -finstrument-functions 1781 option. 1782 1783 C family 1784 1785 * Implicit conversions between generic vector types are now only 1786 permitted when the two vectors in question have the same number of 1787 elements and compatible element types. (Note that the restriction 1788 involves compatible element types, not implicitly-convertible 1789 element types: thus, a vector type with element type int may not be 1790 implicitly converted to a vector type with element type unsigned 1791 int.) This restriction, which is in line with specifications for 1792 SIMD architectures such as AltiVec, may be relaxed using the flag 1793 -flax-vector-conversions. This flag is intended only as a 1794 compatibility measure and should not be used for new code. 1795 * -Warray-bounds has been added and is now enabled by default for 1796 -Wall . It produces warnings for array subscripts that can be 1797 determined at compile time to be always out of bounds. 1798 -Wno-array-bounds will disable the warning. 1799 * The constructor and destructor function attributes now accept 1800 optional priority arguments which control the order in which the 1801 constructor and destructor functions are run. 1802 * New [11]command-line options -Wtype-limits, 1803 -Wold-style-declaration, -Wmissing-parameter-type, -Wempty-body, 1804 -Wclobbered and -Wignored-qualifiers have been added for finer 1805 control of the diverse warnings enabled by -Wextra. 1806 * A new function attribute alloc_size has been added to mark up 1807 malloc style functions. For constant sized allocations this can be 1808 used to find out the size of the returned pointer using the 1809 __builtin_object_size() function for buffer overflow checking and 1810 similar. This supplements the already built-in malloc and calloc 1811 constant size handling. 1812 * Integer constants written in binary are now supported as a GCC 1813 extension. They consist of a prefix 0b or 0B, followed by a 1814 sequence of 0 and 1 digits. 1815 * A new predefined macro __COUNTER__ has been added. It expands to 1816 sequential integral values starting from 0. In conjunction with the 1817 ## operator, this provides a convenient means to generate unique 1818 identifiers. 1819 * A new command-line option -fdirectives-only has been added. It 1820 enables a special preprocessing mode which improves the performance 1821 of applications like distcc and ccache. 1822 * Fixed-point data types and operators have been added. They are 1823 based on Chapter 4 of the Embedded-C specification (n1169.pdf). 1824 Currently, only MIPS targets are supported. 1825 * Decimal floating-point arithmetic based on draft ISO/IEC TR 24732, 1826 N1241, is now supported as a GCC extension to C for targets 1827 i[34567]86-*-linux-gnu, powerpc*-*-linux-gnu, s390*-ibm-linux-gnu, 1828 and x86_64-*-linux-gnu. The feature introduces new data types 1829 _Decimal32, _Decimal64, and _Decimal128 with constant suffixes DF, 1830 DD, and DL. 1831 1832 C++ 1833 1834 * [12]Experimental support for the upcoming ISO C++ standard, C++0x. 1835 * -Wc++0x-compat has been added and is now enabled by default for 1836 -Wall. It produces warnings for constructs whose meaning differs 1837 between ISO C++ 1998 and C++0x. 1838 * The -Wparentheses option now works for C++ as it does for C. It 1839 warns if parentheses are omitted when operators with confusing 1840 precedence are nested. It also warns about ambiguous else 1841 statements. Since -Wparentheses is enabled by -Wall, this may cause 1842 additional warnings with existing C++ code which uses -Wall. These 1843 new warnings may be disabled by using -Wall -Wno-parentheses. 1844 * The -Wmissing-declarations now works for C++ as it does for C. 1845 * The -fvisibility-ms-compat flag was added, to make it easier to 1846 port larger projects using shared libraries from Microsoft's Visual 1847 Studio to ELF and Mach-O systems. 1848 * C++ attribute handling has been overhauled for template arguments 1849 (ie dependent types). In particular, __attribute__((aligned(T))); 1850 works for C++ types. 1851 1852 Runtime Library (libstdc++) 1853 1854 * [13]Experimental support for the upcoming ISO C++ standard, C++0x. 1855 * Support for TR1 mathematical special functions and regular 1856 expressions. ([14]Implementation status of TR1) 1857 * Default what implementations give more elaborate exception strings 1858 for bad_cast, bad_typeid, bad_exception, and bad_alloc. 1859 * Header dependencies have been streamlined, reducing unnecessary 1860 includes and pre-processed bloat. 1861 * Variadic template implementations of items in <tuple> and 1862 <functional>. 1863 * An experimental [15]parallel mode has been added. This is a 1864 parallel implementation of many C++ Standard library algorithms, 1865 like std::accumulate, std::for_each, std::transform, or std::sort, 1866 to give but four examples. These algorithms can be substituted for 1867 the normal (sequential) libstdc++ algorithms on a piecemeal basis, 1868 or all existing algorithms can be transformed via the 1869 -D_GLIBCXX_PARALLEL macro. 1870 * Debug mode versions of classes in <unordered_set> and 1871 <unordered_map>. 1872 * Formal deprecation of <ext/hash_set> and <ext/hash_map>, which are 1873 now <backward/hash_set> and <backward/hash_map>. This code: 1874 #include <ext/hash_set> 1875 __gnu_cxx::hash_set<int> s; 1876 1877 Can be transformed (in order of preference) to: 1878 #include <tr1/unordered_set> 1879 std::tr1::unordered_set<int> s; 1880 1881 or 1882 #include <backward/hash_set> 1883 __gnu_cxx::hash_set<int> s; 1884 1885 Similar transformations apply to __gnu_cxx::hash_map, 1886 __gnu_cxx::hash_multimap, __gnu_cxx::hash_set, 1887 __gnu_cxx::hash_multiset. 1888 1889 Fortran 1890 1891 * Due to the fact that the [16]GMP and [17]MPFR libraries are 1892 required for all languages, Fortran is no longer special in this 1893 regard and is available by default. 1894 * The [18]-fexternal-blas option has been added, which generates 1895 calls to BLAS routines for intrinsic matrix operations such as 1896 matmul rather than using the built-in algorithms. 1897 * Support to give a backtrace (compiler flag -fbacktrace or 1898 environment variable GFORTRAN_ERROR_BACKTRACE; on glibc systems 1899 only) or a core dump (-fdump-core, GFORTRAN_ERROR_DUMPCORE) when a 1900 run-time error occured. 1901 * GNU Fortran now defines __GFORTRAN__ when it runs the C 1902 preprocessor (CPP). 1903 * The [19]-finit-local-zero, -finit-real, -finit-integer, 1904 -finit-character, and -finit-logical options have been added, which 1905 can be used to initialize local variables. 1906 * The intrinsic procedures [20]GAMMA and [21]LGAMMA have been added, 1907 which calculate the Gamma function and its logarithm. Use EXTERNAL 1908 gamma if you want to use your own gamma function. 1909 * GNU Fortran now regards the backslash character as literal (as 1910 required by the Fortran 2003 standard); using [22]-fbackslash GNU 1911 Fortran interprets backslashes as C-style escape characters. 1912 * The [23]interpretation of binary, octal and hexadecimal (BOZ) 1913 literal constants has been changed. Before they were always 1914 interpreted as integer; now they are bit-wise transferred as 1915 argument of INT, REAL, DBLE and CMPLX as required by the Fortran 1916 2003 standard, and for real and complex variables in DATA 1917 statements or when directly assigned to real and complex variables. 1918 Everywhere else and especially in expressions they are still 1919 regarded as integer constants. 1920 * Fortran 2003 support has been extended: 1921 + Intrinsic statements IMPORT, PROTECTED, VALUE and VOLATILE 1922 + Pointer intent 1923 + Intrinsic module ISO_ENV_FORTRAN 1924 + Interoperability with C (ISO C Bindings) 1925 + ABSTRACT INTERFACES and PROCEDURE statements (without POINTER 1926 attribute) 1927 + Fortran 2003 BOZ 1928 1929 Java (GCJ) 1930 1931 * GCJ now uses the Eclipse Java compiler for its Java parsing needs. 1932 This enables the use of all 1.5 language features, and fixes most 1933 existing front end bugs. 1934 * libgcj now supports all 1.5 language features which require runtime 1935 support: foreach, enum, annotations, generics, and auto-boxing. 1936 * We've made many changes to the tools shipped with gcj. 1937 + The old jv-scan tool has been removed. This tool never really 1938 worked properly. There is no replacement. 1939 + gcjh has been rewritten. Some of its more obscure options no 1940 longer work, but are still recognized in an attempt at 1941 compatibility. gjavah is a new program with similar 1942 functionality but different command-line options. 1943 + grmic and grmiregistry have been rewritten. grmid has been 1944 added. 1945 + gjar replaces the old fastjar. 1946 + gjarsigner (used for signing jars), gkeytool (used for key 1947 management), gorbd (for CORBA), gserialver (computes 1948 serialization UIDs), and gtnameserv (also for CORBA) are now 1949 installed. 1950 * The ability to dump the contents of the java run time heap to a 1951 file for off-line analysis has been added. The heap dumps may be 1952 analyzed with the new gc-analyze tool. They may be generated on 1953 out-of-memory conditions or on demand and are controlled by the new 1954 run time class gnu.gcj.util.GCInfo. 1955 * java.util.TimeZone can now read files from /usr/share/zoneinfo to 1956 provide correct, updated, timezone information. This means that 1957 packagers no longer have to update libgcj when a time zone change 1958 is published. 1959 1960New Targets and Target Specific Improvements 1961 1962 IA-32/x86-64 1963 1964 * Tuning for Intel Core 2 processors is available via -mtune=core2 1965 and -march=core2. 1966 * Tuning for AMD Geode processors is available via -mtune=geode and 1967 -march=geode. 1968 * Code generation of block move (memcpy) and block set (memset) was 1969 rewritten. GCC can now pick the best algorithm (loop, unrolled 1970 loop, instruction with rep prefix or a library call) based on the 1971 size of the block being copied and the CPU being optimized for. A 1972 new option -minline-stringops-dynamically has been added. With this 1973 option string operations of unknown size are expanded such that 1974 small blocks are copied by in-line code, while for large blocks a 1975 library call is used. This results in faster code than 1976 -minline-all-stringops when the library implementation is capable 1977 of using cache hierarchy hints. The heuristic choosing the 1978 particular algorithm can be overwritten via -mstringop-strategy. 1979 Newly also memset of values different from 0 is inlined. 1980 * GCC no longer places the cld instruction before string operations. 1981 Both i386 and x86-64 ABI documents mandate the direction flag to be 1982 clear at the entry of a function. It is now invalid to set the flag 1983 in asm statement without reseting it afterward. 1984 * Support for SSSE3 built-in functions and code generation are 1985 available via -mssse3. 1986 * Support for SSE4.1 built-in functions and code generation are 1987 available via -msse4.1. 1988 * Support for SSE4.2 built-in functions and code generation are 1989 available via -msse4.2. 1990 * Both SSE4.1 and SSE4.2 support can be enabled via -msse4. 1991 * A new set of options -mpc32, -mpc64 and -mpc80 have been added to 1992 allow explicit control of x87 floating point precision. 1993 * Support for __float128 (TFmode) IEEE quad type and corresponding 1994 TCmode IEEE complex quad type is available via the soft-fp library 1995 on x86_64 targets. This includes basic arithmetic operations 1996 (addition, subtraction, negation, multiplication and division) on 1997 __float128 real and TCmode complex values, the full set of IEEE 1998 comparisons between __float128 values, conversions to and from 1999 float, double and long double floating point types, as well as 2000 conversions to and from signed or unsigned integer, signed or 2001 unsigned long integer and signed or unsigned quad (TImode) integer 2002 types. Additionally, all operations generate the full set of IEEE 2003 exceptions and support the full set of IEEE rounding modes. 2004 * GCC can now utilize the ACML library for vectorizing calls to a set 2005 of C99 functions on x86_64 if -mveclibabi=acml is specified and you 2006 link to an ACML ABI compatible library. 2007 2008 ARM 2009 2010 * Compiler and Library support for Thumb-2 and the ARMv7 architecture 2011 has been added. 2012 2013 CRIS 2014 2015 New features 2016 2017 * Compiler and Library support for the CRIS v32 architecture, as 2018 found in Axis Communications ETRAX FS and ARTPEC-3 chips, has been 2019 added. 2020 2021 Configuration changes 2022 2023 * The cris-*-elf target now includes support for CRIS v32, including 2024 libraries, through the -march=v32 option. 2025 * A new crisv32-*-elf target defaults to generate code for CRIS v32. 2026 * A new crisv32-*-linux* target defaults to generate code for CRIS 2027 v32. 2028 * The cris-*-aout target has been obsoleted. 2029 2030 Improved support for built-in functions 2031 2032 * GCC can now use the lz and swapwbr instructions to implement the 2033 __builtin_clz, __builtin_ctz and __builtin_ffs family of functions. 2034 * __builtin_bswap32 is now implemented using the swapwb instruction, 2035 when available. 2036 2037 m68k and ColdFire 2038 2039 New features 2040 2041 * Support for several new ColdFire processors has been added. You can 2042 generate code for them using the new -mcpu option. 2043 * All targets now support ColdFire processors. 2044 * m68k-uclinux targets have improved support for C++ constructors and 2045 destructors, and for shared libraries. 2046 * It is now possible to set breakpoints on the first or last line of 2047 a function, even if there are no statements on that line. 2048 2049 Optimizations 2050 2051 * Support for sibling calls has been added. 2052 * More use is now made of the ColdFire mov3q instruction. 2053 * __builtin_clz is now implemented using the ff1 ColdFire 2054 instruction, when available. 2055 * GCC now honors the -m68010 option. 68010 code now uses clr rather 2056 than move to zero volatile memory. 2057 * 68020 targets and above can now use symbol(index.size*scale) 2058 addresses for indexed array accesses. Earlier compilers would 2059 always load the symbol into a base register first. 2060 2061 Configuration changes 2062 2063 * All m68k and ColdFire targets now allow the default processor to be 2064 set at configure time using --with-cpu. 2065 * A --with-arch configuration option has been added. This option 2066 allows you to restrict a target to ColdFire or non-ColdFire 2067 processors. 2068 2069 Preprocessor macros 2070 2071 * An __mcfv*__ macro is now defined for all ColdFire targets. 2072 (Earlier versions of GCC only defined __mcfv4e__.) 2073 * __mcf_cpu_*, __mcf_family_* and __mcffpu__ macros have been added. 2074 * All targets now define __mc68010 and __mc68010__ when generating 2075 68010 code. 2076 2077 Command-line changes 2078 2079 * New command-line options -march, -mcpu, -mtune and -mhard-float 2080 have been added. These options apply to both m68k and ColdFire 2081 targets. 2082 * -mno-short, -mno-bitfield and -mno-rtd are now accepted as negative 2083 versions of -mshort, etc. 2084 * -fforce-addr has been removed. It is now ignored by the compiler. 2085 2086 Other improvements 2087 2088 * ColdFire targets now try to maintain a 4-byte-aligned stack where 2089 possible. 2090 * m68k-uclinux targets now try to avoid situations that lead to the 2091 load-time error: BINFMT_FLAT: reloc outside program. 2092 2093 MIPS 2094 2095 Changes to existing configurations 2096 2097 * libffi and libjava now support all three GNU/Linux ABIs: o32, n32 2098 and n64. Every GNU/Linux configuration now builds these libraries 2099 by default. 2100 * GNU/Linux configurations now generate -mno-shared code unless 2101 overridden by -fpic, -fPIC, -fpie or -fPIE. 2102 * mipsisa32*-linux-gnu configurations now generate hard-float code by 2103 default, just like other mipsisa32* and mips*-linux-gnu 2104 configurations. You can build a soft-float version of any 2105 mips*-linux-gnu configuration by passing --with-float=soft to 2106 configure. 2107 * mips-wrs-vxworks now supports run-time processes (RTPs). 2108 2109 Changes to existing command-line options 2110 2111 * The -march and -mtune options no longer accept 24k as a processor 2112 name. Please use 24kc, 24kf2_1 or 24kf1_1 instead. 2113 * The -march and -mtune options now accept 24kf2_1, 24kef2_1 and 2114 34kf2_1 as synonyms for 24kf, 24kef and 34kf respectively. The 2115 options also accept 24kf1_1, 24kef1_1 and 34kf1_1 as synonyms for 2116 24kx, 24kex and 34kx. 2117 2118 New configurations 2119 2120 GCC now supports the following configurations: 2121 * mipsisa32r2*-linux-gnu*, which generates MIPS32 revision 2 code by 2122 default. Earlier releases also recognized this configuration, but 2123 they treated it in the same way as mipsisa32*-linux-gnu*. Note that 2124 you can customize any mips*-linux-gnu* configuration to a 2125 particular ISA or processor by passing an appropriate --with-arch 2126 option to configure. 2127 * mipsisa*-sde-elf*, which provides compatibility with MIPS 2128 Technologies' SDE toolchains. The configuration uses the SDE 2129 libraries by default, but you can use it like other newlib-based 2130 ELF configurations by passing --with-newlib to configure. It is the 2131 only configuration besides mips64vr*-elf* to build MIPS16 as well 2132 as non-MIPS16 libraries. 2133 * mipsisa*-elfoabi*, which is similar to the general mipsisa*-elf* 2134 configuration, but uses the o32 and o64 ABIs instead of the 32-bit 2135 and 64-bit forms of the EABI. 2136 2137 New processors and application-specific extensions 2138 2139 * Support for the SmartMIPS ASE is available through the new 2140 -msmartmips option. 2141 * Support for revision 2 of the DSP ASE is available through the new 2142 -mdspr2 option. A new preprocessor macro called __mips_dsp_rev 2143 indicates the revision of the ASE in use. 2144 * Support for the 4KS and 74K families of processors is available 2145 through the -march and -mtune options. 2146 2147 Improved support for built-in functions 2148 2149 * GCC can now use load-linked, store-conditional and sync 2150 instructions to implement atomic built-in functions such as 2151 __sync_fetch_and_add. The memory reference must be 4 bytes wide for 2152 32-bit targets and either 4 or 8 bytes wide for 64-bit targets. 2153 * GCC can now use the clz and dclz instructions to implement the 2154 __builtin_ctz and __builtin_ffs families of functions. 2155 * There is a new __builtin___clear_cache function for flushing the 2156 instruction cache. GCC expands this function inline on MIPS32 2157 revision 2 targets, otherwise it calls the function specified by 2158 -mcache-flush-func. 2159 2160 MIPS16 improvements 2161 2162 * GCC can now compile objects that contain a mixture of MIPS16 and 2163 non-MIPS16 code. There are two new attributes, mips16 and nomips16, 2164 for specifying which mode a function should use. 2165 * A new option called -minterlink-mips16 makes non-MIPS16 code 2166 link-compatible with MIPS16 code. 2167 * After many bug fixes, the long-standing MIPS16 -mhard-float support 2168 should now work fairly reliably. 2169 * GCC can now use the MIPS16e save and restore instructions. 2170 * -fsection-anchors now works in MIPS16 mode. MIPS16 code compiled 2171 with -G0 -fsection-anchors is often smaller than code compiled with 2172 -G8. However, please note that you must usually compile all objects 2173 in your application with the same -G option; see the documentation 2174 of -G for details. 2175 * A new option called-mcode-readable specifies which instructions are 2176 allowed to load from the code segment. -mcode-readable=yes is the 2177 default and says that any instruction may load from the code 2178 segment. The other alternatives are -mcode-readable=pcrel, which 2179 says that only PC-relative MIPS16 instructions may load from the 2180 code segment, and -mcode-readable=no, which says that no 2181 instruction may do so. Please see the documentation for more 2182 details, including example uses. 2183 2184 Small-data improvements 2185 2186 There are three new options for controlling small data: 2187 * -mno-extern-sdata, which disables small-data accesses for 2188 externally-defined variables. Code compiled with -Gn 2189 -mno-extern-sdata will be link-compatible with any -G setting 2190 between -G0 and -Gn inclusive. 2191 * -mno-local-sdata, which disables the use of small-data sections for 2192 data that is not externally visible. This option can be a useful 2193 way of reducing small-data usage in less performance-critical parts 2194 of an application. 2195 * -mno-gpopt, which disables the use of the $gp register while still 2196 honoring the -G limit when placing externally-visible data. This 2197 option implies -mno-extern-sdata and -mno-local-sdata and it can be 2198 useful in situations where $gp does not necessarily hold the 2199 expected value. 2200 2201 Miscellaneous improvements 2202 2203 * There is a new option called -mbranch-cost for tweaking the 2204 perceived cost of branches. 2205 * If GCC is configured to use a version of GAS that supports the 2206 .gnu_attribute directive, it will use that directive to record 2207 certain properties of the output code. .gnu_attribute is new to GAS 2208 2.18. 2209 * There are two new function attributes, near and far, for overriding 2210 the command-line setting of -mlong-calls on a function-by-function 2211 basis. 2212 * -mfp64, which previously required a 64-bit target, now works with 2213 MIPS32 revision 2 targets as well. The mipsisa*-elfoabi* and 2214 mipsisa*-sde-elf* configurations provide suitable library support. 2215 * GCC now recognizes the -mdmx and -mmt options and passes them down 2216 to the assembler. It does nothing else with the options at present. 2217 2218 SPU (Synergistic Processor Unit) of the Cell Broadband Engine Architecture 2219 (BEA) 2220 2221 * Support has been added for this new architecture. 2222 2223 RS6000 (POWER/PowerPC) 2224 2225 * Support for the PowerPC 750CL paired-single instructions has been 2226 added with a new powerpc-*-linux*paired* target configuration. It 2227 is enabled by an associated -mpaired option and can be accessed 2228 using new built-in functions. 2229 * Support for auto-detecting architecture and system configuration to 2230 auto-select processor optimization tuning. 2231 * Support for VMX on AIX 5.3 has been added. 2232 * Support for AIX Version 6.1 has been added. 2233 2234 S/390, zSeries and System z9 2235 2236 * Support for the IBM System z9 EC/BC processor (z9 GA3) has been 2237 added. When using the -march=z9-ec option, the compiler will 2238 generate code making use of instructions provided by the decimal 2239 floating point facility and the floating point conversion facility 2240 (pfpo). Besides the instructions used to implement decimal floating 2241 point operations these facilities also contain instructions to move 2242 between general purpose and floating point registers and to modify 2243 and copy the sign-bit of floating point values. 2244 * When the -march=z9-ec option is used the new 2245 -mhard-dfp/-mno-hard-dfp options can be used to specify whether the 2246 decimal floating point hardware instructions will be used or not. 2247 If none of them is given the hardware support is enabled by 2248 default. 2249 * The -mstack-guard option can now be omitted when using stack 2250 checking via -mstack-size in order to let GCC choose a sensible 2251 stack guard value according to the frame size of each function. 2252 * Various changes to improve performance of generated code have been 2253 implemented, including: 2254 + The condition code set by an add logical with carry 2255 instruction is now available for overflow checks like: a + b + 2256 carry < b. 2257 + The test data class instruction is now used to implement 2258 sign-bit and infinity checks of binary and decimal floating 2259 point numbers. 2260 2261 SPARC 2262 2263 * Support for the Sun UltraSPARC T2 (Niagara 2) processor has been 2264 added. 2265 2266 Xtensa 2267 2268 * Stack unwinding for exception handling now uses by default a 2269 specialized version of DWARF unwinding. This is not 2270 binary-compatible with the setjmp/longjmp (sjlj) unwinding used for 2271 Xtensa with previous versions of GCC. 2272 * For Xtensa processors that include the Conditional Store option, 2273 the built-in functions for atomic memory access are now implemented 2274 using S32C1I instructions. 2275 * If the Xtensa NSA option is available, GCC will use it to implement 2276 the __builtin_ctz and __builtin_clz functions. 2277 2278Documentation improvements 2279 2280 * Existing libstdc++ documentation has been edited and restructured 2281 into a single DocBook XML manual. The results can be viewed online 2282 [24]here. 2283 2284Other significant improvements 2285 2286 * The compiler's --help command-line option has been extended so that 2287 it now takes an optional set of arguments. These arguments restrict 2288 the information displayed to specific classes of command-line 2289 options, and possibly only a subset of those options. It is also 2290 now possible to replace the descriptive text associated with each 2291 displayed option with an indication of its current value, or for 2292 binary options, whether it has been enabled or disabled. 2293 Here are some examples. The following will display all the options 2294 controlling warning messages: 2295 --help=warnings 2296 2297 Whereas this will display all the undocumented, target specific 2298 options: 2299 --help=target,undocumented 2300 2301 This sequence of commands will display the binary optimizations 2302 that are enabled by -O3: 2303 gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts 2304 gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts 2305 diff /tmp/O2-opts /tmp/O3-opts | grep enabled 2306 2307 * The configure options --with-pkgversion and --with-bugurl have been 2308 added. These allow distributors of GCC to include a 2309 distributor-specific string in manuals and --version output and to 2310 specify the URL for reporting bugs in their versions of GCC. 2311 2312GCC 4.3.1 2313 2314 This is the [25]list of problem reports (PRs) from GCC's bug tracking 2315 system that are known to be fixed in the 4.3.1 release. This list might 2316 not be complete (that is, it is possible that some PRs that have been 2317 fixed are not listed here). 2318 2319Target Specific Changes 2320 2321 IA-32/x86-64 2322 2323 ABI changes 2324 2325 * Starting with GCC 4.3.1, decimal floating point variables are 2326 aligned to their natural boundaries when they are passed on the 2327 stack for i386. 2328 2329 Command-line changes 2330 2331 * Starting with GCC 4.3.1, the -mcld option has been added to 2332 automatically generate a cld instruction in the prologue of 2333 functions that use string instructions. This option is used for 2334 backward compatibility on some operating systems and can be enabled 2335 by default for 32-bit x86 targets by configuring GCC with the 2336 --enable-cld configure option. 2337 2338GCC 4.3.2 2339 2340 This is the [26]list of problem reports (PRs) from GCC's bug tracking 2341 system that are known to be fixed in the 4.3.2 release. This list might 2342 not be complete (that is, it is possible that some PRs that have been 2343 fixed are not listed here). 2344 2345GCC 4.3.3 2346 2347 This is the [27]list of problem reports (PRs) from GCC's bug tracking 2348 system that are known to be fixed in the 4.3.3 release. This list might 2349 not be complete (that is, it is possible that some PRs that have been 2350 fixed are not listed here). 2351 2352GCC 4.3.4 2353 2354 This is the [28]list of problem reports (PRs) from GCC's bug tracking 2355 system that are known to be fixed in the 4.3.4 release. This list might 2356 not be complete (that is, it is possible that some PRs that have been 2357 fixed are not listed here). 2358 2359GCC 4.3.5 2360 2361 This is the [29]list of problem reports (PRs) from GCC's bug tracking 2362 system that are known to be fixed in the 4.3.5 release. This list might 2363 not be complete (that is, it is possible that some PRs that have been 2364 fixed are not listed here). 2365 2366GCC 4.3.6 2367 2368 This is the [30]list of problem reports (PRs) from GCC's bug tracking 2369 system that are known to be fixed in the 4.3.6 release. This list might 2370 not be complete (that is, it is possible that some PRs that have been 2371 fixed are not listed here). 2372 2373 2374 For questions related to the use of GCC, please consult these web 2375 pages and the [31]GCC manuals. If that fails, the 2376 [32]gcc-help@gcc.gnu.org mailing list might help. Comments on these 2377 web pages and the development of GCC are welcome on our developer 2378 list at [33]gcc@gcc.gnu.org. All of [34]our lists have public 2379 archives. 2380 2381 Copyright (C) [35]Free Software Foundation, Inc. Verbatim copying and 2382 distribution of this entire article is permitted in any medium, 2383 provided this notice is preserved. 2384 2385 These pages are [36]maintained by the GCC team. Last modified 2386 2011-09-12[37]. 2387 2388References 2389 2390 1. http://gcc.gnu.org/gcc-4.3/changes.html#4.3.5 2391 2. http://gmplib.org/ 2392 3. http://www.mpfr.org/ 2393 4. http://gcc.gnu.org/install/prerequisites.html 2394 5. http://gcc.gnu.org/ml/gcc-announce/2001/msg00000.html 2395 6. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options 2396 7. http://gcc.gnu.org/gcc-4.3/porting_to.html 2397 8. http://www.mpfr.org/ 2398 9. http://www.mpfr.org/ 2399 10. http://www.mpfr.org/ 2400 11. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html 2401 12. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html 2402 13. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html 2403 14. http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#m anual.intro.status.standard.tr1 2404 15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html 2405 16. http://gmplib.org/ 2406 17. http://www.mpfr.org/ 2407 18. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#Code-Gen-Options 2408 19. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167 2409 20. http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/GAMMA.html 2410 21. http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/LGAMMA.html 2411 22. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html 2412 23. http://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html 2413 24. http://gcc.gnu.org/onlinedocs/libstdc++/ 2414 25. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.1 2415 26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.2 2416 27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.3 2417 28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4 2418 29. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5 2419 30. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.6 2420 31. http://gcc.gnu.org/onlinedocs/ 2421 32. mailto:gcc-help@gcc.gnu.org 2422 33. mailto:gcc@gcc.gnu.org 2423 34. http://gcc.gnu.org/lists.html 2424 35. http://www.fsf.org/ 2425 36. http://gcc.gnu.org/about.html 2426 37. http://validator.w3.org/check/referer 2427====================================================================== 2428http://gcc.gnu.org/gcc-4.2/index.html 2429 2430 GCC 4.2 Release Series 2431 2432 May 19, 2008 2433 2434 The [1]GNU project and the GCC developers are pleased to announce the 2435 release of GCC 4.2.4. 2436 2437 This release is a bug-fix release, containing fixes for regressions in 2438 GCC 4.2.3 relative to previous releases of GCC. 2439 2440Release History 2441 2442 GCC 4.2.4 2443 May 19, 2008 ([2]changes) 2444 2445 GCC 4.2.3 2446 February 1, 2008 ([3]changes) 2447 2448 GCC 4.2.2 2449 October 7, 2007 ([4]changes) 2450 2451 GCC 4.2.1 2452 July 18, 2007 ([5]changes) 2453 2454 GCC 4.2.0 2455 May 13, 2007 ([6]changes) 2456 2457References and Acknowledgements 2458 2459 GCC used to stand for the GNU C Compiler, but since the compiler 2460 supports several other languages aside from C, it now stands for the 2461 GNU Compiler Collection. 2462 2463 A list of [7]successful builds is updated as new information becomes 2464 available. 2465 2466 The GCC developers would like to thank the numerous people that have 2467 contributed new features, improvements, bug fixes, and other changes as 2468 well as test results to GCC. This [8]amazing group of volunteers is 2469 what makes GCC successful. 2470 2471 For additional information about GCC please refer to the [9]GCC project 2472 web site or contact the [10]GCC development mailing list. 2473 2474 To obtain GCC please use [11]our mirror sites or [12]our SVN server. 2475 2476 2477 For questions related to the use of GCC, please consult these web 2478 pages and the [13]GCC manuals. If that fails, the 2479 [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these 2480 web pages and the development of GCC are welcome on our developer 2481 list at [15]gcc@gcc.gnu.org. All of [16]our lists have public 2482 archives. 2483 2484 Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and 2485 distribution of this entire article is permitted in any medium, 2486 provided this notice is preserved. 2487 2488 These pages are [18]maintained by the GCC team. Last modified 2489 2011-04-25[19]. 2490 2491References 2492 2493 1. http://www.gnu.org/ 2494 2. http://gcc.gnu.org/gcc-4.2/changes.html 2495 3. http://gcc.gnu.org/gcc-4.2/changes.html 2496 4. http://gcc.gnu.org/gcc-4.2/changes.html 2497 5. http://gcc.gnu.org/gcc-4.2/changes.html 2498 6. http://gcc.gnu.org/gcc-4.2/changes.html 2499 7. http://gcc.gnu.org/gcc-4.2/buildstat.html 2500 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 2501 9. http://gcc.gnu.org/index.html 2502 10. mailto:gcc@gcc.gnu.org 2503 11. http://gcc.gnu.org/mirrors.html 2504 12. http://gcc.gnu.org/svn.html 2505 13. http://gcc.gnu.org/onlinedocs/ 2506 14. mailto:gcc-help@gcc.gnu.org 2507 15. mailto:gcc@gcc.gnu.org 2508 16. http://gcc.gnu.org/lists.html 2509 17. http://www.fsf.org/ 2510 18. http://gcc.gnu.org/about.html 2511 19. http://validator.w3.org/check/referer 2512====================================================================== 2513http://gcc.gnu.org/gcc-4.2/changes.html 2514 2515 GCC 4.2 Release Series 2516 Changes, New Features, and Fixes 2517 2518Caveats 2519 2520 * GCC no longer accepts the -fshared-data option. This option has had 2521 no effect in any GCC 4 release; the targets to which the option 2522 used to apply had been removed before GCC 4.0. 2523 2524General Optimizer Improvements 2525 2526 * New command-line options specify the possible relationships among 2527 parameters and between parameters and global data. For example, 2528 -fargument-noalias-anything specifies that arguments do not alias 2529 any other storage. 2530 Each language will automatically use whatever option is required by 2531 the language standard. You should not need to use these options 2532 yourself. 2533 2534New Languages and Language specific improvements 2535 2536 * [1]OpenMP is now supported for the C, C++ and Fortran compilers. 2537 * New command-line options -fstrict-overflow and -Wstrict-overflow 2538 have been added. -fstrict-overflow tells the compiler that it may 2539 assume that the program follows the strict signed overflow 2540 semantics permitted for the language: for C and C++ this means that 2541 the compiler may assume that signed overflow does not occur. For 2542 example, a loop like 2543 for (i = 1; i > 0; i *= 2) 2544 2545 is presumably intended to continue looping until i overflows. With 2546 -fstrict-overflow, the compiler may assume that signed overflow 2547 will not occur, and transform this into an infinite loop. 2548 -fstrict-overflow is turned on by default at -O2, and may be 2549 disabled via -fno-strict-overflow. The -Wstrict-overflow option may 2550 be used to warn about cases where the compiler assumes that signed 2551 overflow will not occur. It takes five different levels: 2552 -Wstrict-overflow=1 to 5. See the [2]documentation for details. 2553 -Wstrict-overflow=1 is enabled by -Wall. 2554 * The new command-line option -fno-toplevel-reorder directs GCC to 2555 emit top-level functions, variables, and asm statements in the same 2556 order that they appear in the input file. This is intended to 2557 support existing code which relies on a particular ordering (for 2558 example, code which uses top-level asm statements to switch 2559 sections). For new code, it is generally better to use function and 2560 variable attributes. The -fno-toplevel-reorder option may be used 2561 for most cases which currently use -fno-unit-at-a-time. The 2562 -fno-unit-at-a-time option will be removed in some future version 2563 of GCC. If you know of a case which requires -fno-unit-at-a-time 2564 which is not fixed by -fno-toplevel-reorder, please open a bug 2565 report. 2566 2567 C family 2568 2569 * The pragma redefine_extname will now macro expand its tokens for 2570 compatibility with SunPRO. 2571 * In the next release of GCC, 4.3, -std=c99 or -std=gnu99 will direct 2572 GCC to handle inline functions as specified in the C99 standard. In 2573 preparation for this, GCC 4.2 will warn about any use of non-static 2574 inline functions in gnu99 or c99 mode. This new warning may be 2575 disabled with the new gnu_inline function attribute or the new 2576 -fgnu89-inline command-line option. Also, GCC 4.2 and later will 2577 define one of the preprocessor macros __GNUC_GNU_INLINE__ or 2578 __GNUC_STDC_INLINE__ to indicate the semantics of inline functions 2579 in the current compilation. 2580 * A new command-line option -Waddress has been added to warn about 2581 suspicious uses of memory addresses as, for example, using the 2582 address of a function in a conditional expression, and comparisons 2583 against the memory address of a string literal. This warning is 2584 enabled by -Wall. 2585 2586 C++ 2587 2588 * C++ visibility handling has been overhauled. 2589 Restricted visiblity is propagated from classes to members, from 2590 functions to local statics, and from templates and template 2591 arguments to instantiations, unless the latter has explicitly 2592 declared visibility. 2593 The visibility attribute for a class must come between the 2594 class-key and the name, not after the closing brace. 2595 Attributes are now allowed for enums and elaborated-type-specifiers 2596 that only declare a type. 2597 Members of the anonymous namespace are now local to a particular 2598 translation unit, along with any other declarations which use them, 2599 though they are still treated as having external linkage for 2600 language semantics. 2601 * The (undocumented) extension which permitted templates with default 2602 arguments to be bound to template template parameters with fewer 2603 parameters has been removed. For example: 2604 template <template <typename> class C> 2605 void f(C<double>) {} 2606 2607 template <typename T, typename U = int> 2608 struct S {}; 2609 2610 template void f(S<double>); 2611 2612 is no longer accepted by G++. The reason this code is not accepted 2613 is that S is a template with two parameters; therefore, it cannot 2614 be bound to C which has only one parameter. 2615 * The <?, >?, <?=, and >?= operators, deprecated in previous GCC 2616 releases, have been removed. 2617 * The command-line option -fconst-strings, deprecated in previous GCC 2618 releases, has been removed. 2619 * The configure variable enable-__cxa_atexit is now enabled by 2620 default for more targets. Enabling this variable is necessary in 2621 order for static destructors to be executed in the correct order, 2622 but it depends upon the presence of a non-standard C library in the 2623 target library in order to work. The variable is now enabled for 2624 more targets which are known to have suitable C libraries. 2625 * -Wextra will produce warnings for if statements with a semicolon as 2626 the only body, to catch code like: 2627 if (a); 2628 return 1; 2629 return 0; 2630 2631 To suppress the warning in valid cases, use { } instead. 2632 * The C++ frontend now also produces strict aliasing warnings when 2633 -fstrict-aliasing -Wstrict-aliasing is in effect. 2634 2635 Runtime Library (libstdc++) 2636 2637 * Added support for TR1 <random>, <complex>, and C compatibility 2638 headers. In addition, a lock-free version of shared_ptr was 2639 contributed as part of Phillip Jordan's Google Summer of Code 2640 project on lock-free containers. ([3]Implementation status of TR1) 2641 * In association with the Summer of Code work on lock-free 2642 containers, the interface for atomic builtins was adjusted, 2643 creating simpler alternatives for non-threaded code paths. Also, 2644 usage was consolidated and all elements were moved from namespace 2645 std to namespace__gnu_cxx. Affected interfaces are the functions 2646 __exchange_and_add, __atomic_add, and the objects __mutex, 2647 __recursive_mutex, and __scoped_lock. 2648 * Support for versioning weak symbol names via namespace association 2649 was added. However, as this changes the names of exported symbols, 2650 this is turned off by default in the current ABI. Intrepid users 2651 can enable this feature by using 2652 --enable-symvers=gnu-versioned-namespace during configuration. 2653 * Revised, simplified, and expanded policy-based associative 2654 containers, including data types for tree and trie forms 2655 (basic_tree, tree, trie), lists (list_update), and both 2656 collision-chaining and probing hash-based containers 2657 (basic_hash_table, cc_hash_table, gp_hash_table). More details per 2658 the [4]documentation. 2659 * The implementation of the debug mode was modified, whereby the 2660 debug namespaces were nested inside of namespace std and namespace 2661 __gnu_cxx in order to resolve some long standing corner cases 2662 involving name lookup. Debug functionality from the policy-based 2663 data structures was consolidated and enabled with the single macro, 2664 _GLIBCXX_DEBUG. See PR 26142 for more information. 2665 * Added extensions for type traits: __conditional_type, 2666 __numeric_traits, __add_unsigned, __removed_unsigned, __enable_if. 2667 * Added a typelist implementation for compile-time meta-programming. 2668 Elements for typelist construction and operation can be found 2669 within namespace __gnu_cxx::typelist. 2670 * Added a new allocator, __gnu_cxx::throw_allocator, for testing 2671 exception-safety. 2672 * Enabled library-wide visibility control, allowing -fvisibility to 2673 be used. 2674 * Consolidated all nested namespaces and the conversion of 2675 __gnu_internal implementation-private details to anonymous 2676 namespaces whenever possible. 2677 * Implemented LWG resolutions DR 431 and DR 538. 2678 2679 Fortran 2680 2681 * Support for allocatable components has been added (TR 15581 and 2682 Fortran 2003). 2683 * Support for the Fortran 2003 streaming IO extension has been added. 2684 * The GNU Fortran compiler now uses 4-byte record markers by default 2685 for unformatted files to be compatible with g77 and most other 2686 compilers. The implementation allows for records greater than 2 GB 2687 and is compatible with several other compilers. Older versions of 2688 gfortran used 8-byte record markers by default (on most systems). 2689 In order to change the length of the record markers, e.g. to read 2690 unformatted files created by older gfortran versions, the 2691 [5]-frecord-marker=8 option can be used. 2692 2693 Java (GCJ) 2694 2695 * A new command-line option -static-libgcj has been added for targets 2696 that use a linker compatible with GNU Binutils. As its name 2697 implies, this causes libgcj to be linked statically. In some cases 2698 this causes the resulting executable to start faster and use less 2699 memory than if the shared version of libgcj were used. However 2700 caution should be used as it can also cause essential parts of the 2701 library to be omitted. Some of these issues are discussed in: 2702 [6]http://gcc.gnu.org/wiki/Statically_linking_libgcj 2703 * fastjar is no longer bundled with GCC. To build libgcj, you will 2704 need either InfoZIP (both zip and unzip) or an external jar 2705 program. In the former case, the GCC build will install a jar shell 2706 script that is based on InfoZIP and provides the same functionality 2707 as fastjar. 2708 2709New Targets and Target Specific Improvements 2710 2711 IA-32/x86-64 2712 2713 * -mtune=generic can now be used to generate code running well on 2714 common x86 chips. This includes AMD Athlon, AMD Opteron, Intel 2715 Pentium-M, Intel Pentium 4 and Intel Core 2. 2716 * -mtune=native and -march=native will produce code optimized for the 2717 host architecture as detected using the cpuid instruction. 2718 * Added a new command-line option -fstackrealign and and 2719 __attribute__ ((force_align_arg_pointer)) to realign the stack at 2720 runtime. This allows functions compiled with a vector-aligned stack 2721 to be invoked from legacy objects that keep only word-alignment. 2722 2723 SPARC 2724 2725 * The default CPU setting has been changed from V7 to V9 in 32-bit 2726 mode on Solaris 7 and above. This is already the case in 64-bit 2727 mode. It can be overridden by specifying --with-cpu at configure 2728 time. 2729 * Back-end support of built-in functions for atomic memory access has 2730 been implemented. 2731 * Support for the Sun UltraSPARC T1 (Niagara) processor has been 2732 added. 2733 2734 M32C 2735 2736 * Various bug fixes have made some functions (notably, functions 2737 returning structures) incompatible with previous releases. 2738 Recompiling all libraries is recommended. Note that code quality 2739 has considerably improved since 4.1, making a recompile even more 2740 beneficial. 2741 2742 MIPS 2743 2744 * Added support for the Broadcom SB-1A core. 2745 2746 IA-64 2747 2748 * Added support for IA-64 data and control speculation. By default 2749 speculation is enabled only during second scheduler pass. A number 2750 of machine flags was introduced to control the usage of speculation 2751 for both scheduler passes. 2752 2753 HPPA 2754 2755 * Added Java language support (libffi and libjava) for 32-bit HP-UX 2756 11 target. 2757 2758Obsolete Systems 2759 2760Documentation improvements 2761 2762 PDF Documentation 2763 2764 * A make pdf target has been added to the top-level makefile, 2765 enabling automated production of PDF documentation files. 2766 (Front-ends external to GCC should modify their Make-lang.in file 2767 to add a lang.pdf: target.) 2768 2769Other significant improvements 2770 2771 Build system improvements 2772 2773 * All the components of the compiler are now bootstrapped by default. 2774 This improves the resilience to bugs in the system compiler or 2775 binary compatibility problems, as well as providing better testing 2776 of GCC 4.2 itself. In addition, if you build the compiler from a 2777 combined tree, the assembler, linker, etc. will also be 2778 bootstrapped (i.e. built with themselves). 2779 You can disable this behavior, and go back to the pre-GCC 4.2 set 2780 up, by configuring GCC with --disable-bootstrap. 2781 * The rules that configure follows to find target tools resemble more 2782 closely the locations that the built compiler will search. In 2783 addition, you can use the new configure option --with-target-tools 2784 to specify where to find the target tools used during the build, 2785 without affecting what the built compiler will use. 2786 This can be especially useful when building packages of GCC. For 2787 example, you may want to build GCC with GNU as or ld, even if the 2788 resulting compiler to work with the native assembler and linker. To 2789 do so, you can use --with-target-tools to point to the native 2790 tools. 2791 2792 Incompatible changes to the build system 2793 2794 * Front-ends external to GCC should modify their Make-lang.in file to 2795 replace double-colon rules (e.g. dvi::) with normal rules (like 2796 lang.dvi:). Front-end makefile hooks do not use double-colon rules 2797 anymore. 2798 * Up to GCC 4.1, a popular way to specify the target tools used 2799 during the build was to create directories named gas, binutils, 2800 etc. in the build tree, and create links to the tools from there. 2801 This does not work any more when the compiler is bootstrapped. The 2802 new configure option --with-target-tools provides a better way to 2803 achieve the same effect, and works for all native and cross 2804 settings. 2805 2806 2807 For questions related to the use of GCC, please consult these web 2808 pages and the [7]GCC manuals. If that fails, the 2809 [8]gcc-help@gcc.gnu.org mailing list might help. Comments on these 2810 web pages and the development of GCC are welcome on our developer 2811 list at [9]gcc@gcc.gnu.org. All of [10]our lists have public 2812 archives. 2813 2814 Copyright (C) [11]Free Software Foundation, Inc. Verbatim copying and 2815 distribution of this entire article is permitted in any medium, 2816 provided this notice is preserved. 2817 2818 These pages are [12]maintained by the GCC team. Last modified 2819 2011-04-25[13]. 2820 2821References 2822 2823 1. http://gcc.gnu.org/projects/gomp/ 2824 2. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html 2825 3. http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#manual.intro.status.standard.tr1 2826 4. http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html 2827 5. http://gcc.gnu.org/onlinedocs/gfortran/Runtime-Options.html 2828 6. http://gcc.gnu.org/wiki/Statically_linking_libgcj 2829 7. http://gcc.gnu.org/onlinedocs/ 2830 8. mailto:gcc-help@gcc.gnu.org 2831 9. mailto:gcc@gcc.gnu.org 2832 10. http://gcc.gnu.org/lists.html 2833 11. http://www.fsf.org/ 2834 12. http://gcc.gnu.org/about.html 2835 13. http://validator.w3.org/check/referer 2836====================================================================== 2837http://gcc.gnu.org/gcc-4.1/index.html 2838 2839 GCC 4.1 Release Series 2840 2841 February 13, 2007 2842 2843 The [1]GNU project and the GCC developers are pleased to announce the 2844 release of GCC 4.1.2. 2845 2846 This release is a bug-fix release, containing fixes for regressions in 2847 GCC 4.1.1 relative to previous releases of GCC. 2848 2849Release History 2850 2851 GCC 4.1.2 2852 February 13, 2007 ([2]changes) 2853 2854 GCC 4.1.1 2855 May 24, 2006 ([3]changes) 2856 2857 GCC 4.1.0 2858 February 28, 2006 ([4]changes) 2859 2860References and Acknowledgements 2861 2862 GCC used to stand for the GNU C Compiler, but since the compiler 2863 supports several other languages aside from C, it now stands for the 2864 GNU Compiler Collection. 2865 2866 A list of [5]successful builds is updated as new information becomes 2867 available. 2868 2869 The GCC developers would like to thank the numerous people that have 2870 contributed new features, improvements, bug fixes, and other changes as 2871 well as test results to GCC. This [6]amazing group of volunteers is 2872 what makes GCC successful. 2873 2874 For additional information about GCC please refer to the [7]GCC project 2875 web site or contact the [8]GCC development mailing list. 2876 2877 To obtain GCC please use [9]our mirror sites or [10]our SVN server. 2878 2879 2880 For questions related to the use of GCC, please consult these web 2881 pages and the [11]GCC manuals. If that fails, the 2882 [12]gcc-help@gcc.gnu.org mailing list might help. Comments on these 2883 web pages and the development of GCC are welcome on our developer 2884 list at [13]gcc@gcc.gnu.org. All of [14]our lists have public 2885 archives. 2886 2887 Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and 2888 distribution of this entire article is permitted in any medium, 2889 provided this notice is preserved. 2890 2891 These pages are [16]maintained by the GCC team. Last modified 2892 2011-04-25[17]. 2893 2894References 2895 2896 1. http://www.gnu.org/ 2897 2. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2 2898 3. http://gcc.gnu.org/gcc-4.1/changes.html 2899 4. http://gcc.gnu.org/gcc-4.1/changes.html 2900 5. http://gcc.gnu.org/gcc-4.1/buildstat.html 2901 6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 2902 7. http://gcc.gnu.org/index.html 2903 8. mailto:gcc@gcc.gnu.org 2904 9. http://gcc.gnu.org/mirrors.html 2905 10. http://gcc.gnu.org/svn.html 2906 11. http://gcc.gnu.org/onlinedocs/ 2907 12. mailto:gcc-help@gcc.gnu.org 2908 13. mailto:gcc@gcc.gnu.org 2909 14. http://gcc.gnu.org/lists.html 2910 15. http://www.fsf.org/ 2911 16. http://gcc.gnu.org/about.html 2912 17. http://validator.w3.org/check/referer 2913====================================================================== 2914http://gcc.gnu.org/gcc-4.1/changes.html 2915 2916 GCC 4.1 Release Series 2917 Changes, New Features, and Fixes 2918 2919 The latest release in the 4.1 release series is [1]GCC 4.1.2. 2920 2921Caveats 2922 2923General Optimizer Improvements 2924 2925 * GCC now has infrastructure for inter-procedural optimizations and 2926 the following inter-procedural optimizations are implemented: 2927 + Profile guided inlining. When doing profile feedback guided 2928 optimization, GCC can now use the profile to make better 2929 informed decisions on whether inlining of a function is 2930 profitable or not. This means that GCC will no longer inline 2931 functions at call sites that are not executed very often, and 2932 that functions at hot call sites are more likely to be 2933 inlined. 2934 A new parameter min-inline-recursive-probability is also now 2935 available to throttle recursive inlining of functions with 2936 small average recursive depths. 2937 + Discovery of pure and const functions, a form of side-effects 2938 analysis. While older GCC releases could also discover such 2939 special functions, the new IPA-based pass runs earlier so that 2940 the results are available to more optimizers. The pass is also 2941 simply more powerful than the old one. 2942 + Analysis of references to static variables and type escape 2943 analysis, also forms of side-effects analysis. The results of 2944 these passes allow the compiler to be less conservative about 2945 call-clobbered variables and references. This results in more 2946 redundant loads being eliminated and in making static 2947 variables candidates for register promotion. 2948 + Improvement of RTL-based alias analysis. The results of type 2949 escape analysis are fed to the RTL type-based alias analyzer, 2950 allowing it to disambiguate more memory references. 2951 + Interprocedural constant propagation and function versioning. 2952 This pass looks for functions that are always called with the 2953 same constant value for one or more of the function arguments, 2954 and propagates those constants into those functions. 2955 + GCC will now eliminate static variables whose usage was 2956 optimized out. 2957 + -fwhole-program --combine can now be used to make all 2958 functions in program static allowing whole program 2959 optimization. As an exception, the main function and all 2960 functions marked with the new externally_visible attribute are 2961 kept global so that programs can link with runtime libraries. 2962 * GCC can now do a form of partial dead code elimination (PDCE) that 2963 allows code motion of expressions to the paths where the result of 2964 the expression is actually needed. This is not always a win, so the 2965 pass has been limited to only consider profitable cases. Here is an 2966 example: 2967 int foo (int *, int *); 2968 int 2969 bar (int d) 2970 { 2971 int a, b, c; 2972 b = d + 1; 2973 c = d + 2; 2974 a = b + c; 2975 if (d) 2976 { 2977 foo (&b, &c); 2978 a = b + c; 2979 } 2980 printf ("%d\n", a); 2981 } 2982 2983 The a = b + c can be sunk to right before the printf. Normal code 2984 sinking will not do this, it will sink the first one above into the 2985 else-branch of the conditional jump, which still gives you two 2986 copies of the code. 2987 * GCC now has a value range propagation pass. This allows the 2988 compiler to eliminate bounds checks and branches. The results of 2989 the pass can also be used to accurately compute branch 2990 probabilities. 2991 * The pass to convert PHI nodes to straight-line code (a form of 2992 if-conversion for GIMPLE) has been improved significantly. The two 2993 most significant improvements are an improved algorithm to 2994 determine the order in which the PHI nodes are considered, and an 2995 improvement that allow the pass to consider if-conversions of basic 2996 blocks with more than two predecessors. 2997 * Alias analysis improvements. GCC can now differentiate between 2998 different fields of structures in Tree-SSA's virtual operands form. 2999 This lets stores/loads from non-overlapping structure fields not 3000 conflict. A new algorithm to compute points-to sets was contributed 3001 that can allows GCC to see now that p->a and p->b, where p is a 3002 pointer to a structure, can never point to the same field. 3003 * Various enhancements to auto-vectorization: 3004 + Incrementally preserve SSA form when vectorizing. 3005 + Incrementally preserve loop-closed form when vectorizing. 3006 + Improvements to peeling for alignment: generate better code 3007 when the misalignment of an access is known at compile time, 3008 or when different accesses are known to have the same 3009 misalignment, even if the misalignment amount itself is 3010 unknown. 3011 + Consider dependence distance in the vectorizer. 3012 + Externalize generic parts of data reference analysis to make 3013 this analysis available to other passes. 3014 + Vectorization of conditional code. 3015 + Reduction support. 3016 * GCC can now partition functions in sections of hot and cold code. 3017 This can significantly improve performance due to better 3018 instruction cache locality. This feature works best together with 3019 profile feedback driven optimization. 3020 * A new pass to avoid saving of unneeded arguments to the stack in 3021 vararg functions if the compiler can prove that they will not be 3022 needed. 3023 * Transition of basic block profiling to tree level implementation 3024 has been completed. The new implementation should be considerably 3025 more reliable (hopefully avoiding profile mismatch errors when 3026 using -fprofile-use or -fbranch-probabilities) and can be used to 3027 drive higher level optimizations, such as inlining. 3028 The -ftree-based-profiling command-line option was removed and 3029 -fprofile-use now implies disabling old RTL level loop optimizer 3030 (-fno-loop-optimize). Speculative prefetching optimization 3031 (originally enabled by -fspeculative-prefetching) was removed. 3032 3033New Languages and Language specific improvements 3034 3035 C and Objective-C 3036 3037 * The old Bison-based C and Objective-C parser has been replaced by a 3038 new, faster hand-written recursive-descent parser. 3039 3040 Ada 3041 3042 * The build infrastructure for the Ada runtime library and tools has 3043 been changed to be better integrated with the rest of the build 3044 infrastructure of GCC. This should make doing cross builds of Ada a 3045 bit easier. 3046 3047 C++ 3048 3049 * ARM-style name-injection of friend declarations is no longer the 3050 default. For example: 3051 struct S { 3052 friend void f(); 3053 }; 3054 3055 void g() { f(); } 3056 will not be accepted; instead a declaration of f will need to be 3057 present outside of the scope of S. The new -ffriend-injection 3058 option will enable the old behavior. 3059 * The (undocumented) extension which permitted templates with default 3060 arguments to be bound to template template parameters with fewer 3061 parameters has been deprecated, and will be removed in the next 3062 major release of G++. For example: 3063 template <template <typename> class C> 3064 void f(C<double>) {} 3065 3066 template <typename T, typename U = int> 3067 struct S {}; 3068 3069 template void f(S<double>); 3070 3071 makes use of the deprecated extension. The reason this code is not 3072 valid ISO C++ is that S is a template with two parameters; 3073 therefore, it cannot be bound to C which has only one parameter. 3074 3075 Runtime Library (libstdc++) 3076 3077 * Optimization work: 3078 + A new implementation of std::search_n is provided, better 3079 performing in case of random access iterators. 3080 + Added further efficient specializations of istream functions, 3081 i.e., character array and string extractors. 3082 + Other smaller improvements throughout. 3083 * Policy-based associative containers, designed for high-performance, 3084 flexibility and semantic safety are delivered in ext/pb_assoc. 3085 * A versatile string class, __gnu_cxx::__versa_string, providing 3086 facilities conforming to the standard requirements for 3087 basic_string, is delivered in <ext/vstring.h>. In particular: 3088 + Two base classes are provided: the default one avoids 3089 reference counting and is optimized for short strings; the 3090 alternate one, still uses it while improving in a few low 3091 level areas (e.g., alignment). See vstring_fwd.h for some 3092 useful typedefs. 3093 + Various algorithms have been rewritten (e.g., replace), the 3094 code streamlined and simple optimizations added. 3095 + Option 3 of DR 431 is implemented for both available bases, 3096 thus improving the support for stateful allocators. 3097 * As usual, many bugs have been fixed (e.g., libstdc++/13583, 3098 libstdc++/23953) and LWG resolutions put into effect for the first 3099 time (e.g., DR 280, DR 464, N1780 recommendations for DR 233, TR1 3100 Issue 6.19). The implementation status of TR1 is now tracked in the 3101 docs in tr1.html. 3102 3103 Objective-C++ 3104 3105 * A new language front end for Objective-C++ has been added. This 3106 language allows users to mix the object oriented features of 3107 Objective-C with those of C++. 3108 3109 Java (GCJ) 3110 3111 * Core library (libgcj) updates based on GNU Classpath 0.15 - 0.19 3112 features (plus some 0.20 bug-fixes) 3113 + Networking 3114 o The java.net.HttpURLConnection implementation no longer 3115 buffers the entire response body in memory. This means 3116 that response bodies larger than available memory can now 3117 be handled. 3118 + (N)IO 3119 o NIO FileChannel.map implementation, fast bulk put 3120 implementation for DirectByteBuffer (speeds up this 3121 method 10x). 3122 o FileChannel.lock() and FileChannel.force() implemented. 3123 + XML 3124 o gnu.xml fix for nodes created outside a namespace 3125 context. 3126 o Add support for output indenting and 3127 cdata-section-elements output instruction in 3128 xml.transform. 3129 o xml.xpath corrections for cases where elements/attributes 3130 might have been created in non-namespace-aware mode. 3131 Corrections to handling of XSL variables and minor 3132 conformance updates. 3133 + AWT 3134 o GNU JAWT implementation, the AWT Native Interface, which 3135 allows direct access to native screen resources from 3136 within a Canvas's paint method. GNU Classpath Examples 3137 comes with a Demo, see libjava/classpath/examples/README. 3138 o awt.datatransfer updated to 1.5 with support for 3139 FlavorEvents. The gtk+ awt peers now allow copy/paste of 3140 text, images, URIs/files and serialized objects with 3141 other applications and tracking clipboard change events 3142 with gtk+ 2.6 (for gtk+ 2.4 only text and serialized 3143 objects are supported). A GNU Classpath Examples 3144 datatransfer Demo was added to show the new 3145 functionality. 3146 o Split gtk+ awt peers event handling in two threads and 3147 improve gdk lock handling (solves several awt lock ups). 3148 o Speed up awt Image loading. 3149 o Better gtk+ scrollbar peer implementation when using gtk+ 3150 >= 2.6. 3151 o Handle image loading errors correctly for gdkpixbuf and 3152 MediaTracker. 3153 o Better handle GDK lock. Properly prefix gtkpeer native 3154 functions (cp_gtk). 3155 o GdkGraphics2D has been updated to use Cairo 0.5.x or 3156 higher. 3157 o BufferedImage and GtkImage rewrites. All image drawing 3158 operations should now work correctly (flipping requires 3159 gtk+ >= 2.6) 3160 o Future Graphics2D, image and text work is documented at: 3161 [2]http://developer.classpath.org/mediation/ClasspathGrap 3162 hicsImagesText 3163 o When gtk+ 2.6 or higher is installed the default log 3164 handler will produce stack traces whenever a WARNING, 3165 CRITICAL or ERROR message is produced. 3166 + Free Swing 3167 o The RepaintManager has been reworked for more efficient 3168 painting, especially for large GUIs. 3169 o The layout manager OverlayLayout has been implemented, 3170 the BoxLayout has been rewritten to make use of the 3171 SizeRequirements utility class and caching for more 3172 efficient layout. 3173 o Improved accessibility support. 3174 o Significant progress has been made in the implementation 3175 of the javax.swing.plaf.metal package, with most UI 3176 delegates in a working state now. Please test this with 3177 your own applications and provide feedback that will help 3178 us to improve this package. 3179 o The GUI demo (gnu.classpath.examples.swing.Demo) has been 3180 extended to highlight various features in our Free Swing 3181 implementation. And it includes a look and feel switcher 3182 for Metal (default), Ocean and GNU themes. 3183 o The javax.swing.plaf.multi package is now implemented. 3184 o Editing and several key actions for JTree and JTable were 3185 implemented. 3186 o Lots of icons and look and feel improvements for Free 3187 Swing basic and metal themes were added. Try running the 3188 GNU Classpath Swing Demo in examples 3189 (gnu.classpath.examples.swing.Demo) with: 3190 -Dswing.defaultlaf=javax.swing.plaf.basic.BasicLookAndFee 3191 l or 3192 -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFee 3193 l 3194 o Start of styled text capabilites for java.swing.text. 3195 o DefaultMutableTreeNode pre-order, post-order, depth-first 3196 and breadth-first traversal enumerations implemented. 3197 o JInternalFrame colors and titlebar draw properly. 3198 o JTree is working up to par (icons, selection and keyboard 3199 traversal). 3200 o JMenus were made more compatible in visual and 3201 programmatic behavior. 3202 o JTable changeSelection and multiple selections 3203 implemented. 3204 o JButton and JToggleButton change states work properly 3205 now. 3206 o JFileChooser fixes. 3207 o revalidate() and repaint() fixes which make Free Swing 3208 much more responsive. 3209 o MetalIconFactory implemented. 3210 o Free Swing Top-Level Compatibility. JFrame, JDialog, 3211 JApplet, JInternalFrame, and JWindow are now 1.5 3212 compatible in the sense that you can call add() and 3213 setLayout() directly on them, which will have the same 3214 effect as calling getContentPane().add() and 3215 getContentPane().setLayout(). 3216 o The JTree interface has been completed. JTrees now 3217 recognizes mouse clicks and selections work. 3218 o BoxLayout works properly now. 3219 o Fixed GrayFilter to actually work. 3220 o Metal SplitPane implemented. 3221 o Lots of Free Swing text and editor stuff work now. 3222 + Free RMI and Corba 3223 o Andrew Watson, Vice President and Technical Director of 3224 the Object Management Group, has officially assigned us 3225 20 bit Vendor Minor Code Id: 0x47430 ("GC") that will 3226 mark remote classpath-specific system exceptions. 3227 Obtaining the VMCID means that GNU Classpath now is a 3228 recogniseable type of node in a highly interoperable 3229 CORBA world. 3230 o GNU Classpath now includes the first working draft to 3231 support the RMI over IIOP protocol. The current 3232 implementation is capable of remote invocations, 3233 transferring various Serializables and Externalizables 3234 via RMI-IIOP protocol. It can flatten graphs and, at 3235 least for the simple cases, is interoperable with 1.5 3236 JDKs. 3237 o org.omg.PortableInterceptor and related functionality in 3238 other packages is now implemented: 3239 # The sever and client interceptors work as required 3240 since 1.4. 3241 # The IOR interceptor works as needed for 1.5. 3242 o The org.omg.DynamicAny package is completed and passes 3243 the prepared tests. 3244 o The Portable Object Adapter should now support the output 3245 of the recent IDL to java compilers. These compilers now 3246 generate servants and not CORBA objects as before, making 3247 the output depend on the existing POA implementation. 3248 Completing POA means that such code can already be tried 3249 to run on Classpath. Our POA is tested for the following 3250 usager scenarios: 3251 # POA converts servant to the CORBA object. 3252 # Servant provides to the CORBA object. 3253 # POA activates new CORBA object with the given Object 3254 Id (byte array) that is later accessible for the 3255 servant. 3256 # During the first call, the ServantActivator provides 3257 servant for this and all subsequent calls on the 3258 current object. 3259 # During each call, the ServantLocator provides 3260 servant for this call only. 3261 # ServantLocator or ServantActivator forwards call to 3262 another server. 3263 # POA has a single servant, responsible for all 3264 objects. 3265 # POA has a default servant, but some objects are 3266 explicitly connected to they specific servants. 3267 The POA is verified using tests from the former 3268 cost.omg.org. 3269 o The CORBA implementation is now a working prototype that 3270 should support features up to 1.3 inclusive. We invite 3271 groups writing CORBA dependent applications to try 3272 Classpath implementation, reporting any possible bugs. 3273 The CORBA prototype is interoperable with Sun's 3274 implementation v 1.4, transferring object references, 3275 primitive types, narrow and wide strings, arrays, 3276 structures, trees, abstract interfaces and value types 3277 (feature of CORBA 2.3) between these two platforms. 3278 Remote exceptions are transferred and handled correctly. 3279 The stringified object references (IORs) from various 3280 sources are parsed as required. The transient (for 3281 current session) and permanent (till jre restart) 3282 redirections work. Both Little and Big Endian encoded 3283 messages are accepted. The implementation is verified 3284 using tests from the former cost.omg.org. The current 3285 release includes working examples (see the examples 3286 directory), demonstrating the client-server 3287 communication, using either CORBA Request or IDL-based 3288 stub (usually generated by a IDL to java compiler). These 3289 examples also show how to use the Classpath CORBA naming 3290 service. The IDL to java compiler is not yet written, but 3291 as our library must be compatible, it naturally accepts 3292 the output of other idlj implementations. 3293 + Misc 3294 o Updated TimeZone data against Olson tzdata2005l. 3295 o Make zip and jar packages UTF-8 clean. 3296 o "native" code builds and compiles (warning free) on 3297 Darwin and Solaris. 3298 o java.util.logging.FileHandler now rotates files. 3299 o Start of a generic JDWP framework in gnu/classpath/jdwp. 3300 This is unfinished, but feedback (at classpath@gnu.org) 3301 from runtime hackers is greatly appreciated. Although 3302 most of the work is currently being done around gcj/gij 3303 we want this framework to be as VM neutral as possible. 3304 Early design is described in: 3305 [3]http://gcc.gnu.org/ml/java/2005-05/msg00260.html 3306 o QT4 AWT peers, enable by giving configure 3307 --enable-qt-peer. Included, but not ready for production 3308 yet. They are explicitly disabled and not supported. But 3309 if you want to help with the development of these new 3310 features we are interested in feedback. You will have to 3311 explicitly enable them to try them out (and they will 3312 most likely contain bugs). 3313 o Documentation fixes all over the place. See 3314 [4]http://developer.classpath.org/doc/ 3315 3316New Targets and Target Specific Improvements 3317 3318 IA-32/x86-64 3319 3320 * The x86-64 medium model (that allows building applications whose 3321 data segment exceeds 4GB) was redesigned to match latest ABI draft. 3322 New implementation split large datastructures into separate segment 3323 improving performance of accesses to small datastructures and also 3324 allows linking of small model libraries into medium model programs 3325 as long as the libraries are not accessing the large datastructures 3326 directly. Medium model is also supported in position independent 3327 code now. 3328 The ABI change results in partial incompatibility among medium 3329 model objects. Linking medium model libraries (or objects) compiled 3330 with new compiler into medium model program compiled with older 3331 will likely result in exceeding ranges of relocations. 3332 Binutils 2.16.91 or newer are required for compiling medium model 3333 now. 3334 3335 RS6000 (POWER/PowerPC) 3336 3337 * The AltiVec vector primitives in <altivec.h> are now implemented in 3338 a way that puts a smaller burden on the preprocessor, instead 3339 processing the "overloading" in the front ends. This should benefit 3340 compilation speed on AltiVec vector code. 3341 * AltiVec initializers now are generated more efficiently. 3342 * The popcountb instruction available on POWER5 now is generated. 3343 * The floating point round to integer instructions available on 3344 POWER5+ now is generated. 3345 * Floating point divides can be synthesized using the floating point 3346 reciprocal estimate instructions. 3347 * Double precision floating point constants are initialized as single 3348 precision values if they can be represented exactly. 3349 3350 S/390, zSeries and System z9 3351 3352 * Support for the IBM System z9 109 processor has been added. When 3353 using the -march=z9-109 option, the compiler will generate code 3354 making use of instructions provided by the extended immediate 3355 facility. 3356 * Support for 128-bit IEEE floating point has been added. When using 3357 the -mlong-double-128 option, the compiler will map the long double 3358 data type to 128-bit IEEE floating point. Using this option 3359 constitutes an ABI change, and requires glibc support. 3360 * Various changes to improve performance of generated code have been 3361 implemented, including: 3362 + In functions that do not require a literal pool, register %r13 3363 (which is traditionally reserved as literal pool pointer), can 3364 now be freely used for other purposes by the compiler. 3365 + More precise tracking of register use allows the compiler to 3366 generate more efficient function prolog and epilog code in 3367 certain cases. 3368 + The SEARCH STRING, COMPARE LOGICAL STRING, and MOVE STRING 3369 instructions are now used to implement C string functions. 3370 + The MOVE CHARACTER instruction with single byte overlap is now 3371 used to implement the memset function with non-zero fill byte. 3372 + The LOAD ZERO instructions are now used where appropriate. 3373 + The INSERT CHARACTERS UNDER MASK, STORE CHARACTERS UNDER MASK, 3374 and INSERT IMMEDIATE instructions are now used more frequently 3375 to optimize bitfield operations. 3376 + The BRANCH ON COUNT instruction is now used more frequently. 3377 In particular, the fact that a loop contains a subroutine call 3378 no longer prevents the compiler from using this instruction. 3379 + The compiler is now aware that all shift and rotate 3380 instructions implicitly truncate the shift count to six bits. 3381 * Back-end support for the following generic features has been 3382 implemented: 3383 + The full set of [5]built-in functions for atomic memory 3384 access. 3385 + The -fstack-protector feature. 3386 + The optimization pass avoiding unnecessary stores of incoming 3387 argument registers in functions with variable argument list. 3388 3389 SPARC 3390 3391 * The default code model in 64-bit mode has been changed from 3392 Medium/Anywhere to Medium/Middle on Solaris. 3393 * TLS support is disabled by default on Solaris prior to release 10. 3394 It can be enabled on TLS-capable Solaris 9 versions (4/04 release 3395 and later) by specifying --enable-tls at configure time. 3396 3397 MorphoSys 3398 3399 * Support has been added for this new architecture. 3400 3401Obsolete Systems 3402 3403Documentation improvements 3404 3405Other significant improvements 3406 3407 * GCC can now emit code for protecting applications from 3408 stack-smashing attacks. The protection is realized by buffer 3409 overflow detection and reordering of stack variables to avoid 3410 pointer corruption. 3411 * Some built-in functions have been fortified to protect them against 3412 various buffer overflow (and format string) vulnerabilities. 3413 Compared to the mudflap bounds checking feature, the safe builtins 3414 have far smaller overhead. This means that programs built using 3415 safe builtins should not experience any measurable slowdown. 3416 3417GCC 4.1.2 3418 3419 This is the [6]list of problem reports (PRs) from GCC's bug tracking 3420 system that are known to be fixed in the 4.1.2 release. This list might 3421 not be complete (that is, it is possible that some PRs that have been 3422 fixed are not listed here). 3423 3424 When generating code for a shared library, GCC now recognizes that 3425 global functions may be replaced when the program runs. Therefore, it 3426 is now more conservative in deducing information from the bodies of 3427 functions. For example, in this example: 3428 void f() {} 3429 void g() { 3430 try { f(); } 3431 catch (...) { 3432 cout << "Exception"; 3433 } 3434 } 3435 3436 G++ would previously have optimized away the catch clause, since it 3437 would have concluded that f cannot throw exceptions. Because users may 3438 replace f with another function in the main body of the program, this 3439 optimization is unsafe, and is no longer performed. If you wish G++ to 3440 continue to optimize as before, you must add a throw() clause to the 3441 declaration of f to make clear that it does not throw exceptions. 3442 3443 3444 For questions related to the use of GCC, please consult these web 3445 pages and the [7]GCC manuals. If that fails, the 3446 [8]gcc-help@gcc.gnu.org mailing list might help. Comments on these 3447 web pages and the development of GCC are welcome on our developer 3448 list at [9]gcc@gcc.gnu.org. All of [10]our lists have public 3449 archives. 3450 3451 Copyright (C) [11]Free Software Foundation, Inc. Verbatim copying and 3452 distribution of this entire article is permitted in any medium, 3453 provided this notice is preserved. 3454 3455 These pages are [12]maintained by the GCC team. Last modified 3456 2011-04-25[13]. 3457 3458References 3459 3460 1. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2 3461 2. http://developer.classpath.org/mediation/ClasspathGraphicsImagesText 3462 3. http://gcc.gnu.org/ml/java/2005-05/msg00260.html 3463 4. http://developer.classpath.org/doc/ 3464 5. http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html 3465 6. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.1.2 3466 7. http://gcc.gnu.org/onlinedocs/ 3467 8. mailto:gcc-help@gcc.gnu.org 3468 9. mailto:gcc@gcc.gnu.org 3469 10. http://gcc.gnu.org/lists.html 3470 11. http://www.fsf.org/ 3471 12. http://gcc.gnu.org/about.html 3472 13. http://validator.w3.org/check/referer 3473====================================================================== 3474http://gcc.gnu.org/gcc-4.0/index.html 3475 3476 GCC 4.0 Release Series 3477 3478 January 31, 2007 3479 3480 The [1]GNU project and the GCC developers are pleased to announce the 3481 release of GCC 4.0.4. 3482 3483 This release is a bug-fix release, containing fixes for regressions in 3484 GCC 4.0.3 relative to previous releases of GCC. 3485 3486Release History 3487 3488 GCC 4.0.4 3489 January 31, 2007 ([2]changes) 3490 3491 GCC 4.0.3 3492 March 10, 2006 ([3]changes) 3493 3494 GCC 4.0.2 3495 September 28, 2005 ([4]changes) 3496 3497 GCC 4.0.1 3498 July 7, 2005 ([5]changes) 3499 3500 GCC 4.0.0 3501 April 20, 2005 ([6]changes) 3502 3503References and Acknowledgements 3504 3505 GCC used to stand for the GNU C Compiler, but since the compiler 3506 supports several other languages aside from C, it now stands for the 3507 GNU Compiler Collection. 3508 3509 A list of [7]successful builds is updated as new information becomes 3510 available. 3511 3512 The GCC developers would like to thank the numerous people that have 3513 contributed new features, improvements, bug fixes, and other changes as 3514 well as test results to GCC. This [8]amazing group of volunteers is 3515 what makes GCC successful. 3516 3517 For additional information about GCC please refer to the [9]GCC project 3518 web site or contact the [10]GCC development mailing list. 3519 3520 To obtain GCC please use [11]our mirror sites, or [12]our SVN server. 3521 3522 3523 For questions related to the use of GCC, please consult these web 3524 pages and the [13]GCC manuals. If that fails, the 3525 [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these 3526 web pages and the development of GCC are welcome on our developer 3527 list at [15]gcc@gcc.gnu.org. All of [16]our lists have public 3528 archives. 3529 3530 Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and 3531 distribution of this entire article is permitted in any medium, 3532 provided this notice is preserved. 3533 3534 These pages are [18]maintained by the GCC team. Last modified 3535 2011-04-25[19]. 3536 3537References 3538 3539 1. http://www.gnu.org/ 3540 2. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4 3541 3. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.3 3542 4. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.2 3543 5. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.1 3544 6. http://gcc.gnu.org/gcc-4.0/changes.html 3545 7. http://gcc.gnu.org/gcc-4.0/buildstat.html 3546 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 3547 9. http://gcc.gnu.org/index.html 3548 10. mailto:gcc@gcc.gnu.org 3549 11. http://gcc.gnu.org/mirrors.html 3550 12. http://gcc.gnu.org/svn.html 3551 13. http://gcc.gnu.org/onlinedocs/ 3552 14. mailto:gcc-help@gcc.gnu.org 3553 15. mailto:gcc@gcc.gnu.org 3554 16. http://gcc.gnu.org/lists.html 3555 17. http://www.fsf.org/ 3556 18. http://gcc.gnu.org/about.html 3557 19. http://validator.w3.org/check/referer 3558====================================================================== 3559http://gcc.gnu.org/gcc-4.0/changes.html 3560 3561 GCC 4.0 Release Series 3562 Changes, New Features, and Fixes 3563 3564 The latest release in the 4.0 release series is [1]GCC 4.0.4. 3565 3566Caveats 3567 3568 * GCC now generates location lists by default when compiling with 3569 debug info and optimization. 3570 + GDB 6.0 and older crashes when it sees location lists. GDB 6.1 3571 or later is needed to debug binaries containing location 3572 lists. 3573 + When you are trying to view a value of a variable in a part of 3574 a function where it has no location (for example when the 3575 variable is no longer used and thus its location was used for 3576 something else) GDB will say that it is not available. 3577 You can disable generating location lists by -fno-var-tracking. 3578 * GCC no longer accepts the -fwritable-strings option. Use named 3579 character arrays when you need a writable string. 3580 * The options -freduce-all-givs and -fmove-all-movables have been 3581 discontinued. They were used to circumvent a shortcoming in the 3582 heuristics of the old loop optimization code with respect to common 3583 Fortran constructs. The new (tree) loop optimizer works differently 3584 and doesn't need those work-arounds. 3585 * The graph-coloring register allocator, formerly enabled by the 3586 option -fnew-ra, has been discontinued. 3587 * -I- has been deprecated. -iquote is meant to replace the need for 3588 this option. 3589 * The MIPS -membedded-pic and -mrnames options have been removed. 3590 * All MIPS targets now require the GNU assembler. In particular, IRIX 3591 configurations can no longer use the MIPSpro assemblers, although 3592 they do still support the MIPSpro linkers. 3593 * The SPARC option -mflat has been removed. 3594 * English-language diagnostic messages will now use Unicode quotation 3595 marks in UTF-8 locales. (Non-English messages already used the 3596 quotes appropriate for the language in previous releases.) If your 3597 terminal does not support UTF-8 but you are using a UTF-8 locale 3598 (such locales are the default on many GNU/Linux systems) then you 3599 should set LC_CTYPE=C in the environment to disable that locale. 3600 Programs that parse diagnostics and expect plain ASCII 3601 English-language messages should set LC_ALL=C. See [2]Markus Kuhn's 3602 explanation of Unicode quotation marks for more information. 3603 * The specs file is no longer installed on most platforms. Most users 3604 will be totally unaffected. However, if you are accustomed to 3605 editing the specs file yourself, you will now have to use the 3606 -dumpspecs option to generate the specs file, and then edit the 3607 resulting file. 3608 3609General Optimizer Improvements 3610 3611 * The [3]tree ssa branch has been merged. This merge has brought in a 3612 completely new optimization framework based on a higher level 3613 intermediate representation than the existing RTL representation. 3614 Numerous new code transformations based on the new framework are 3615 available in GCC 4.0, including: 3616 + Scalar replacement of aggregates 3617 + Constant propagation 3618 + Value range propagation 3619 + Partial redundancy elimination 3620 + Load and store motion 3621 + Strength reduction 3622 + Dead store elimination 3623 + Dead and unreachable code elimination 3624 + [4]Autovectorization 3625 + Loop interchange 3626 + Tail recursion by accumulation 3627 Many of these passes outperform their counterparts from previous 3628 GCC releases. 3629 * [5]Swing Modulo Scheduling (SMS). An RTL level instruction 3630 scheduling optimization intended for loops that perform heavy 3631 computations. 3632 3633New Languages and Language specific improvements 3634 3635 C family 3636 3637 * The sentinel attribute has been added to GCC. This function 3638 attribute allows GCC to warn when variadic functions such as execl 3639 are not NULL terminated. See the GCC manual for a complete 3640 description of its behavior. 3641 * Given __attribute__((alias("target"))) it is now an error if target 3642 is not a symbol, defined in the same translation unit. This also 3643 applies to aliases created by #pragma weak alias=target. This is 3644 because it's meaningless to define an alias to an undefined symbol. 3645 On Solaris, the native assembler would have caught this error, but 3646 GNU as does not. 3647 3648 C and Objective-C 3649 3650 * The -Wstrict-aliasing=2 option has been added. This warning catches 3651 all unsafe cases, but it may also give a warning for some cases 3652 that are safe. 3653 * The cast-as-lvalue, conditional-expression-as-lvalue and 3654 compound-expression-as-lvalue extensions, which were deprecated in 3655 3.3.4 and 3.4, have been removed. 3656 * The -fwritable-strings option, which was deprecated in 3.4, has 3657 been removed. 3658 * #pragma pack() semantics have been brought closer to those used by 3659 other compilers. This also applies to C++. 3660 * Taking the address of a variable with register storage is invalid 3661 in C. GCC now issues an error instead of a warning. 3662 * Arrays of incomplete element type are invalid in C. GCC now issues 3663 an error for such arrays. Declarations such as extern struct s x[]; 3664 (where struct s has not been defined) can be moved after the 3665 definition of struct s. Function parameters declared as arrays of 3666 incomplete type can instead be declared as pointers. 3667 3668 C++ 3669 3670 * When compiling without optimizations (-O0), the C++ frontend is 3671 much faster than in any previous versions of GCC. Independent 3672 testers have measured speed-ups up to 25% in real-world production 3673 code, compared to the 3.4 family (which was already the fastest 3674 version to date). Upgrading from older versions might show even 3675 bigger improvements. 3676 * ELF visibility attributes can now be applied to a class type, so 3677 that it affects every member function of a class at once, without 3678 having to specify each individually: 3679class __attribute__ ((visibility("hidden"))) Foo 3680{ 3681 int foo1(); 3682 void foo2(); 3683}; 3684 The syntax is deliberately similar to the __declspec() system used 3685 by Microsoft Windows based compilers, allowing cross-platform 3686 projects to easily reuse their existing macro system for denoting 3687 exports and imports. By explicitly marking internal classes never 3688 used outside a binary as hidden, one can completely avoid PLT 3689 indirection overheads during their usage by the compiler. You can 3690 find out more about the advantages of this at 3691 [6]http://www.akkadia.org/drepper/dsohowto.pdf 3692 * The -fvisibility-inlines-hidden option has been added which marks 3693 all inlineable functions as having hidden ELF visibility, thus 3694 removing their symbol and typeinfo from the exported symbol table 3695 of the output ELF binary. Using this option can reduce the exported 3696 symbol count of template-heavy code by up to 40% with no code 3697 change at all, thus notably improving link and load times for the 3698 binary as well as a reduction in size of up to 10%. Also, check the 3699 new [7]-fvisibility option. 3700 * The compiler now uses the library interface specified by the [8]C++ 3701 ABI for thread-safe initialization of function-scope static 3702 variables. Most users should leave this alone, but embedded 3703 programmers may want to disable this by specifying 3704 -fno-threadsafe-statics for a small savings in code size. 3705 * Taking the address of an explicit register variable is no longer 3706 supported. Note that C++ allows taking the address of variables 3707 with register storage so this will continue to compile with a 3708 warning. For example, assuming that r0 is a machine register: 3709register int foo asm ("r0"); 3710register int bar; 3711&foo; // error, no longer accepted 3712&bar; // OK, with a warning 3713 * G++ has an undocumented extension to virtual function covariancy 3714 rules that allowed the overrider to return a type that was 3715 implicitly convertable to the overridden function's return type. 3716 For instance a function returning void * could be overridden by a 3717 function returning T *. This is now deprecated and will be removed 3718 in a future release. 3719 * The G++ minimum and maximum operators (<? and >?) and their 3720 compound forms (<?=) and >?=) have been deprecated and will be 3721 removed in a future version. Code using these operators should be 3722 modified to use std::min and std::max instead. 3723 * Declaration of nested classes of class templates as friends are 3724 supported: 3725template <typename T> struct A { 3726 class B {}; 3727}; 3728class C { 3729 template <typename T> friend class A<T>::B; 3730}; 3731 This complements the feature member functions of class templates as 3732 friends introduced in GCC 3.4.0. 3733 * When declaring a friend class using an unqualified name, classes 3734 outside the innermost non-class scope are not searched: 3735class A; 3736namespace N { 3737 class B { 3738 friend class A; // Refer to N::A which has not been declared yet 3739 // because name outside namespace N are not searched 3740 friend class ::A; // Refer to ::A 3741 }; 3742} 3743 Hiding the friend name until declaration is still not implemented. 3744 * Friends of classes defined outside their namespace are correctly 3745 handled: 3746namespace N { 3747 class A; 3748} 3749class N::A { 3750 friend class B; // Refer to N::B in GCC 4.0.0 3751 // but ::B in earlier versions of GCC 3752}; 3753 3754 Runtime Library (libstdc++) 3755 3756 * Optimization work: 3757 + Added efficient specializations of istream functions for char 3758 and wchar_t. 3759 + Further performance tuning of strings, in particular wrt 3760 single-char append and getline. 3761 + iter_swap - and therefore most of the mutating algorithms - 3762 now makes an unqualified call to swap when the value_type of 3763 the two iterators is the same. 3764 * A large subset of the features in Technical Report 1 (TR1 for 3765 short) is experimentally delivered (i.e., no guarantees about the 3766 implementation are provided. In particular it is not promised that 3767 the library will remain link-compatible when code using TR1 is 3768 used): 3769 + General utilities such as reference_wrapper and shared_ptr. 3770 + Function objects, i.e., result_of, mem_fn, bind, function. 3771 + Support for metaprogramming. 3772 + New containers such as tuple, array, unordered_set, 3773 unordered_map, unordered_multiset, unordered_multimap. 3774 * As usual, many bugs have been fixed and LWG resolutions implemented 3775 for the first time (e.g., DR 409). 3776 3777 Java 3778 3779 * In order to prevent naming conflicts with other implementations of 3780 these tools, some GCJ binaries have been renamed: 3781 + rmic is now grmic, 3782 + rmiregistry is now grmiregistry, and 3783 + jar is now fastjar. 3784 In particular, these names were problematic for the jpackage.org 3785 packaging conventions which install symlinks in /usr/bin that point 3786 to the preferred versions of these tools. 3787 * The -findirect-dispatch argument to the compiler now works and 3788 generates code following a new "binary compatibility" ABI. Code 3789 compiled this way follows the binary compatibility rules of the 3790 Java Language Specification. 3791 * libgcj now has support for using GCJ as a JIT, using the 3792 gnu.gcj.jit family of system properties. 3793 * libgcj can now find a shared library corresponding to the bytecode 3794 representation of a class. See the documentation for the new 3795 gcj-dbtool program, and the new gnu.gcj.precompiled.db.path system 3796 property. 3797 * There have been many improvements to the class library. Here are 3798 some highlights: 3799 + Much more of AWT and Swing exist. 3800 + Many new packages and classes were added, including 3801 java.util.regex, java.net.URI, javax.crypto, 3802 javax.crypto.interfaces, javax.crypto.spec, javax.net, 3803 javax.net.ssl, javax.security.auth, 3804 javax.security.auth.callback, javax.security.auth.login, 3805 javax.security.auth.x500, javax.security.sasl, org.ietf.jgss, 3806 javax.imageio, javax.imageio.event, javax.imageio.spi, 3807 javax.print, javax.print.attribute, 3808 javax.print.attribute.standard, javax.print.event, and 3809 javax.xml 3810 + Updated SAX and DOM, and imported GNU JAXP 3811 3812 Fortran 3813 3814 * A new [9]Fortran front end has replaced the aging GNU Fortran 77 3815 front end. The new front end supports Fortran 90 and Fortran 95. It 3816 may not yet be as stable as the old Fortran front end. 3817 3818 Ada 3819 3820 * Ada (with tasking and Zero Cost Exceptions) is now available on 3821 many more targets, including but not limited to: alpha-linux, 3822 hppa-hpux, hppa-linux, powerpc-darwin, powerpc-linux, s390-linux, 3823 s390x-linux, sparc-linux. 3824 * Some of the new Ada 2005 features are now implemented like 3825 Wide_Wide_Character and Ada.Containers. 3826 * Many bugs have been fixed, tools and documentation improved. 3827 * To compile Ada from the sources, install an older working Ada 3828 compiler and then use --enable-languages=ada at configuration time, 3829 since the Ada frontend is not currently activated by default. See 3830 the [10]Installing GCC for details. 3831 3832New Targets and Target Specific Improvements 3833 3834 H8/300 3835 3836 * The frame layout has changed. In the new layout, the prologue of a 3837 function first saves registers and then allocate space for locals, 3838 resulting in an 1% improvement on code size. 3839 3840 IA-32/x86-64 (AMD64) 3841 3842 * The acos, asin, drem, exp10, exp2, expm1, fmod, ilogb, log10, 3843 log1p, log2, logb and tan mathematical builtins (and their float 3844 and long double variants) are now implemented as inline x87 3845 intrinsics when using -ffast-math. 3846 * The ceil, floor, nearbyint, rint and trunc mathematical builtins 3847 (and their float and long double variants) are now implemented as 3848 inline x87 intrinsics when using -ffast-math. 3849 * The x87's fsincos instruction is now used automatically with 3850 -ffast-math when calculating both the sin and cos of the same 3851 argument. 3852 * Instruction selection for multiplication and division by constants 3853 has been improved. 3854 3855 IA-64 3856 3857 * Floating point division, integer division and sqrt are now inlined, 3858 resulting in significant performance improvements on some codes. 3859 3860 MIPS 3861 3862 * Division by zero checks now use conditional traps if the target 3863 processor supports them. This decreases code size by one word per 3864 division operation. The old behavior (branch and break) can be 3865 obtained either at configure time by passing --with-divide=breaks 3866 to configure or at runtime by passing -mdivide-breaks to GCC. 3867 * Support for MIPS64 paired-single instructions has been added. It is 3868 enabled by -mpaired-single and can be accessed using both the 3869 target-independent vector extensions and new MIPS-specific built-in 3870 functions. 3871 * Support for the MIPS-3D ASE has been added. It is enabled by 3872 -mips3d and provides new MIPS-3D-specific built-in functions. 3873 * The -mexplicit-relocs option now supports static n64 code (as is 3874 used, for example, in 64-bit linux kernels). -mexplicit-relocs 3875 should now be feature-complete and is enabled by default when GCC 3876 is configured to use a compatible assembler. 3877 * Support for the NEC VR4130 series has been added. This support 3878 includes the use of VR-specific instructions and a new VR4130 3879 scheduler. Full VR4130 support can be selected with -march=vr4130 3880 while code for any ISA can be tuned for the VR4130 using 3881 -mtune=vr4130. There is also a new -mvr4130-align option that 3882 produces better schedules at the cost of increased code size. 3883 * Support for the Broadcom SB-1 has been extended. There is now an 3884 SB-1 scheduler as well as support for the SB-1-specific 3885 paired-single instructions. Full SB-1 support can be selected with 3886 -march=sb1 while code for any ISA can be optimized for the SB-1 3887 using -mtune=sb1. 3888 * The compiler can now work around errata in R4000, R4400, VR4120 and 3889 VR4130 processors. These workarounds are enabled by -mfix-r4000, 3890 -mfix-r4400, -mfix-vr4120 and -mfix-vr4130 respectively. The VR4120 3891 and VR4130 workarounds need binutils 2.16 or above. 3892 * IRIX shared libraries are now installed into the standard library 3893 directories: o32 libraries go into lib/, n32 libraries go into 3894 lib32/ and n64 libraries go into lib64/. 3895 * The compiler supports a new -msym32 option. It can be used to 3896 optimize n64 code in which all symbols are known to have 32-bit 3897 values. 3898 3899 S/390 and zSeries 3900 3901 * New command-line options help to generate code intended to run in 3902 an environment where stack space is restricted, e.g. Linux kernel 3903 code: 3904 + -mwarn-framesize and -mwarn-dynamicstack trigger compile-time 3905 warnings for single functions that require large or dynamic 3906 stack frames. 3907 + -mstack-size and -mstack-guard generate code that checks for 3908 stack overflow at run time. 3909 + -mpacked-stack generates code that reduces the stack frame 3910 size of many functions by reusing unneeded parts of the stack 3911 bias area. 3912 * The -msoft-float option now ensures that generated code never 3913 accesses floating point registers. 3914 * The s390x-ibm-tpf target now fully supports C++, including 3915 exceptions and threads. 3916 * Various changes to improve performance of the generated code have 3917 been implemented, including: 3918 + GCC now uses sibling calls where possible. 3919 + Condition code handling has been optimized, allowing GCC to 3920 omit redundant comparisons in certain cases. 3921 + The cost function guiding many optimizations has been refined 3922 to more accurately represent the z900 and z990 processors. 3923 + The ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL WITH BORROW 3924 instructions are now used to avoid conditional branches in 3925 certain cases. 3926 + The back end now uses the LEGITIMIZE_RELOAD_ADDRESS feature to 3927 optimize address arithmetic required to access large stack 3928 frames. 3929 + GCC now makes more efficient use of memory-to-memory type 3930 instructions (MVC, CLC, ...). 3931 + More precise tracking of special register use allows better 3932 instruction scheduling, in particular of the function prologue 3933 and epilogue sequences. 3934 + The Java front end now generates inline code to implement 3935 integer division, instead of calling library routines. 3936 3937 SPARC 3938 3939 * The options -mv8, -msparclite, -mcypress, -msupersparc, -mf930 and 3940 -mf934 have been removed. They have been replaced with -mcpu=xxx. 3941 * The internal model used to estimate the relative cost of each 3942 instruction has been updated. It is expected to give better results 3943 on recent UltraSPARC processors. 3944 * Code generation for function prologues and epilogues has been 3945 improved, resulting in better scheduling and allowing multiple exit 3946 points in functions. 3947 * Support for Sun's Visual Instruction Set (VIS) has been enhanced. 3948 It is enabled by -mvis and provides new built-in functions for VIS 3949 instructions on UltraSPARC processors. 3950 * The option -mapp-regs has been turned on by default on Solaris too. 3951 3952 NetWare 3953 3954 * Novell NetWare (on ix86, no other hardware platform was ever really 3955 supported by this OS) has been re-enabled and the ABI supported by 3956 GCC has been brought into sync with that of MetroWerks CodeWarrior 3957 (the ABI previously supported was that of some Unix systems, which 3958 NetWare never tried to support). 3959 3960Obsolete Systems 3961 3962 Support for a number of older systems has been declared obsolete in GCC 3963 4.0. Unless there is activity to revive them, the next release of GCC 3964 will have their sources permanently removed. 3965 3966 All GCC ports for the following processor architectures have been 3967 declared obsolete: 3968 * Intel i860 3969 * Ubicom IP2022 3970 * National Semiconductor NS32K 3971 * Texas Instruments TMS320C[34]x 3972 3973 Also, those for some individual systems have been obsoleted: 3974 * SPARC family 3975 + SPARClite-based systems (sparclite-*-coff, sparclite-*-elf, 3976 sparc86x-*-elf) 3977 + OpenBSD 32-bit (sparc-*-openbsd*) 3978 3979Documentation improvements 3980 3981Other significant improvements 3982 3983 * Location lists are now generated by default when compiling with 3984 debug info and optimization. Location lists provide more accurate 3985 debug info about locations of variables and they allow debugging 3986 code compiled with -fomit-frame-pointer. 3987 * The -fvisibility option has been added which allows the default ELF 3988 visibility of all symbols to be set per compilation and the new 3989 #pragma GCC visibility preprocessor command allows the setting of 3990 default ELF visibility for a region of code. Using 3991 -fvisibility=hidden especially in combination with the new 3992 -fvisibility-inlines-hidden can yield substantial improvements in 3993 output binary quality including avoiding PLT indirection overheads, 3994 reduction of the exported symbol count by up to 60% (with resultant 3995 improvements to link and load times), better scope for the 3996 optimizer to improve code and up to a 20% reduction in binary size. 3997 Using these options correctly yields a binary with a similar symbol 3998 count to a Windows DLL. 3999 Perhaps more importantly, this new feature finally allows (with 4000 careful planning) complete avoidance of symbol clashes when 4001 manually loading shared objects with RTLD_GLOBAL, thus finally 4002 solving problems many projects such as python were forced to use 4003 RTLD_LOCAL for (with its resulting issues for C++ correctness). You 4004 can find more information about using these options at 4005 [11]http://gcc.gnu.org/wiki/Visibility. 4006 __________________________________________________________________ 4007 4008GCC 4.0.1 4009 4010 This is the [12]list of problem reports (PRs) from GCC's bug tracking 4011 system that are known to be fixed in the 4.0.1 release. This list might 4012 not be complete (that is, it is possible that some PRs that have been 4013 fixed are not listed here). 4014 4015GCC 4.0.2 4016 4017 This is the [13]list of problem reports (PRs) from GCC's bug tracking 4018 system that are known to be fixed in the 4.0.2 release. This list might 4019 not be complete (that is, it is possible that some PRs that have been 4020 fixed are not listed here). 4021 4022 Unfortunately, due to a release engineering failure, this release has a 4023 regression on Solaris that will affect some C++ programs. We suggest 4024 that Solaris users apply a [14]patch that corrects the problem. Users 4025 who do not wish to apply the patch should explicitly link C++ programs 4026 with the -pthreads option, even if they do not use threads. This 4027 problem has been corrected in the current 4.0 branch sources and will 4028 not be present in GCC 4.0.3. 4029 4030GCC 4.0.3 4031 4032 Starting with this release, the function getcontext is recognized by 4033 the compiler as having the same semantics as the setjmp function. In 4034 particular, the compiler will ensure that all registers are dead before 4035 calling such a function and will emit a warning about the variables 4036 that may be clobbered after the second return from the function. 4037 4038GCC 4.0.4 4039 4040 This is the [15]list of problem reports (PRs) from GCC's bug tracking 4041 system that are known to be fixed in the 4.0.4 release. This list might 4042 not be complete (that is, it is possible that some PRs that have been 4043 fixed are not listed here). 4044 4045 The 4.0.4 release is provided for those that require a high degree of 4046 binary compatibility with previous 4.0.x releases. For most users, the 4047 GCC team recommends that version 4.1.1 or later be used instead." 4048 4049 4050 For questions related to the use of GCC, please consult these web 4051 pages and the [16]GCC manuals. If that fails, the 4052 [17]gcc-help@gcc.gnu.org mailing list might help. Comments on these 4053 web pages and the development of GCC are welcome on our developer 4054 list at [18]gcc@gcc.gnu.org. All of [19]our lists have public 4055 archives. 4056 4057 Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and 4058 distribution of this entire article is permitted in any medium, 4059 provided this notice is preserved. 4060 4061 These pages are [21]maintained by the GCC team. Last modified 4062 2012-02-20[22]. 4063 4064References 4065 4066 1. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4 4067 2. http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html 4068 3. http://gcc.gnu.org/projects/tree-ssa/ 4069 4. http://gcc.gnu.org/projects/tree-ssa/vectorization.html 4070 5. http://gcc.gnu.org/news/sms.html 4071 6. http://www.akkadia.org/drepper/dsohowto.pdf 4072 7. http://gcc.gnu.org/gcc-4.0/changes.html#visibility 4073 8. http://sourcery.mentor.com/public/cxx-abi/ 4074 9. http://gcc.gnu.org/fortran/ 4075 10. http://gcc.gnu.org/install/ 4076 11. http://gcc.gnu.org/wiki/Visibility 4077 12. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.1 4078 13. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.2 4079 14. http://gcc.gnu.org/ml/gcc-cvs/2005-09/msg00984.html 4080 15. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.4 4081 16. http://gcc.gnu.org/onlinedocs/ 4082 17. mailto:gcc-help@gcc.gnu.org 4083 18. mailto:gcc@gcc.gnu.org 4084 19. http://gcc.gnu.org/lists.html 4085 20. http://www.fsf.org/ 4086 21. http://gcc.gnu.org/about.html 4087 22. http://validator.w3.org/check/referer 4088====================================================================== 4089http://gcc.gnu.org/gcc-3.4/index.html 4090 4091 GCC 3.4 Release Series 4092 4093 May 26, 2006 4094 4095 The [1]GNU project and the GCC developers are pleased to announce the 4096 release of GCC 3.4.6. 4097 4098 This release is a bug-fix release, containing fixes for regressions in 4099 GCC 3.4.4 relative to previous releases of GCC. This is the last of the 4100 3.4.x series. 4101 4102 The GCC 3.4 release series includes numerous [2]new features, 4103 improvements, bug fixes, and other changes, thanks to an [3]amazing 4104 group of volunteers. 4105 4106Release History 4107 4108 GCC 3.4.6 4109 March 6, 2006 ([4]changes) 4110 4111 GCC 3.4.5 4112 November 30, 2005 ([5]changes) 4113 4114 GCC 3.4.4 4115 May 18, 2005 ([6]changes) 4116 4117 GCC 3.4.3 4118 November 4, 2004 ([7]changes) 4119 4120 GCC 3.4.2 4121 September 6, 2004 ([8]changes) 4122 4123 GCC 3.4.1 4124 July 1, 2004 ([9]changes) 4125 4126 GCC 3.4.0 4127 April 18, 2004 ([10]changes) 4128 4129References and Acknowledgements 4130 4131 GCC used to stand for the GNU C Compiler, but since the compiler 4132 supports several other languages aside from C, it now stands for the 4133 GNU Compiler Collection. 4134 4135 A list of [11]successful builds is updated as new information becomes 4136 available. 4137 4138 The GCC developers would like to thank the numerous people that have 4139 contributed new features, improvements, bug fixes, and other changes as 4140 well as test results to GCC. This [12]amazing group of volunteers is 4141 what makes GCC successful. 4142 4143 For additional information about GCC please refer to the [13]GCC 4144 project web site or contact the [14]GCC development mailing list. 4145 4146 To obtain GCC please use [15]our mirror sites, or [16]our SVN server. 4147 4148 4149 For questions related to the use of GCC, please consult these web 4150 pages and the [17]GCC manuals. If that fails, the 4151 [18]gcc-help@gcc.gnu.org mailing list might help. Comments on these 4152 web pages and the development of GCC are welcome on our developer 4153 list at [19]gcc@gcc.gnu.org. All of [20]our lists have public 4154 archives. 4155 4156 Copyright (C) [21]Free Software Foundation, Inc. Verbatim copying and 4157 distribution of this entire article is permitted in any medium, 4158 provided this notice is preserved. 4159 4160 These pages are [22]maintained by the GCC team. Last modified 4161 2011-04-25[23]. 4162 4163References 4164 4165 1. http://www.gnu.org/ 4166 2. http://gcc.gnu.org/gcc-3.4/changes.html 4167 3. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 4168 4. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6 4169 5. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.5 4170 6. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.4 4171 7. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.3 4172 8. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.2 4173 9. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.1 4174 10. http://gcc.gnu.org/gcc-3.4/changes.html 4175 11. http://gcc.gnu.org/gcc-3.4/buildstat.html 4176 12. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 4177 13. http://gcc.gnu.org/index.html 4178 14. mailto:gcc@gcc.gnu.org 4179 15. http://gcc.gnu.org/mirrors.html 4180 16. http://gcc.gnu.org/svn.html 4181 17. http://gcc.gnu.org/onlinedocs/ 4182 18. mailto:gcc-help@gcc.gnu.org 4183 19. mailto:gcc@gcc.gnu.org 4184 20. http://gcc.gnu.org/lists.html 4185 21. http://www.fsf.org/ 4186 22. http://gcc.gnu.org/about.html 4187 23. http://validator.w3.org/check/referer 4188====================================================================== 4189http://gcc.gnu.org/gcc-3.4/changes.html 4190 4191 GCC 3.4 Release Series 4192 Changes, New Features, and Fixes 4193 4194 The final release in the 3.4 release series is [1]GCC 3.4.6. The series 4195 is now closed. 4196 4197 GCC 3.4 has [2]many improvements in the C++ frontend. Before reporting 4198 a bug, please make sure it's really GCC, and not your code, that is 4199 broken. 4200 4201Caveats 4202 4203 * GNU Make is now required to build GCC. 4204 * With -nostdinc the preprocessor used to ignore both standard 4205 include paths and include paths contained in environment variables. 4206 It was neither documented nor intended that environment variable 4207 paths be ignored, so this has been corrected. 4208 * GCC no longer accepts the options -fvolatile, -fvolatile-global and 4209 -fvolatile-static. It is unlikely that they worked correctly in any 4210 3.x release. 4211 * GCC no longer ships <varargs.h>. Use <stdarg.h> instead. 4212 * Support for all the systems [3]obsoleted in GCC 3.3 has been 4213 removed from GCC 3.4. See below for a [4]list of systems which are 4214 obsoleted in this release. 4215 * GCC now requires an ISO C90 (ANSI C89) C compiler to build. K&R C 4216 compilers will not work. 4217 * The implementation of the [5]MIPS ABIs has changed. As a result, 4218 the code generated for certain MIPS targets will not be binary 4219 compatible with earlier releases. 4220 * In previous releases, the MIPS port had a fake "hilo" register with 4221 the user-visible name accum. This register has been removed. 4222 * The implementation of the [6]SPARC ABIs has changed. As a result, 4223 the code generated will not be binary compatible with earlier 4224 releases in certain cases. 4225 * The configure option --enable-threads=pthreads has been removed; 4226 use --enable-threads=posix instead, which should have the same 4227 effect. 4228 * Code size estimates used by inlining heuristics for C, Objective-C, 4229 C++ and Java have been redesigned significantly. As a result the 4230 parameters of -finline-insns, --param max-inline-insns-single and 4231 --param max-inline-insns-auto need to be reconsidered. 4232 * --param max-inline-slope and --param min-inline-insns have been 4233 removed; they are not needed for the new bottom-up inlining 4234 heuristics. 4235 * The new unit-at-a-time compilation scheme has several compatibility 4236 issues: 4237 + The order in which functions, variables, and top-level asm 4238 statements are emitted may have changed. Code relying on some 4239 particular ordering needs to be updated. The majority of such 4240 top-level asm statements can be replaced by section 4241 attributes. 4242 + Unreferenced static variables and functions are removed. This 4243 may result in undefined references when an asm statement 4244 refers to the variable/function directly. In that case either 4245 the variable/function shall be listed in asm statement operand 4246 or in the case of top-level asm statements the attribute used 4247 shall be used to force function/variable to be always output 4248 and considered as a possibly used by unknown code. 4249 For variables the attribute is accepted only by GCC 3.4 and 4250 newer, while for earlier versions it is sufficient to use 4251 unused to silence warnings about the variables not being 4252 referenced. To keep code portable across different GCC 4253 versions, you can use appropriate preprocessor conditionals. 4254 + Static functions now can use non-standard passing conventions 4255 that may break asm statements calling functions directly. 4256 Again the attribute used shall be used to prevent this 4257 behavior. 4258 As a temporary workaround, -fno-unit-at-a-time can be used, but 4259 this scheme may not be supported by future releases of GCC. 4260 * GCC 3.4 automatically places zero-initialized variables in the .bss 4261 section on some operating systems. Versions of GNU Emacs up to (and 4262 including) 21.3 will not work correctly when using this 4263 optimization; you can use -fno-zero-initialized-in-bss to disable 4264 it. 4265 * If GCC 3.4 is configured with --enable-threads=posix (the default 4266 on most targets that support pthreads) then _REENTRANT will be 4267 defined unconditionally by some libstdc++ headers. C++ code which 4268 relies on that macro to detect whether multi-threaded code is being 4269 compiled might change in meaning, possibly resulting in linker 4270 errors for single-threaded programs. Affected users of [7]Boost 4271 should compile single-threaded code with -DBOOST_DISABLE_THREADS. 4272 See Bugzilla for [8]more information. 4273 4274General Optimizer Improvements 4275 4276 * Usability of the profile feedback and coverage testing has been 4277 improved. 4278 + Performance of profiled programs has been improved by faster 4279 profile merging code. 4280 + Better use of the profile feedback for optimization (loop 4281 unrolling and loop peeling). 4282 + File locking support allowing fork() calls and parallel runs 4283 of profiled programs. 4284 + Coverage file format has been redesigned. 4285 + gcov coverage tool has been improved. 4286 + make profiledbootstrap available to build a faster compiler. 4287 Experiments made on i386 hardware showed an 11% speedup on -O0 4288 and a 7.5% speedup on -O2 compilation of a [9]large C++ 4289 testcase. 4290 + New value profiling pass enabled via -fprofile-values 4291 + New value profile transformations pass enabled via -fvpt aims 4292 to optimize some code sequences by exploiting knowledge about 4293 value ranges or other properties of the operands. At the 4294 moment a conversion of expensive divisions into cheaper 4295 operations has been implemented. 4296 + New -fprofile-generate and -fprofile-use command-line options 4297 to simplify the use of profile feedback. 4298 * A new unit-at-a-time compilation scheme for C, Objective-C, C++ and 4299 Java which is enabled via -funit-at-a-time (and implied by -O2). In 4300 this scheme a whole file is parsed first and optimized later. The 4301 following basic inter-procedural optimizations are implemented: 4302 + Removal of unreachable functions and variables 4303 + Discovery of local functions (functions with static linkage 4304 whose address is never taken) 4305 + On i386, these local functions use register parameter passing 4306 conventions. 4307 + Reordering of functions in topological order of the call graph 4308 to enable better propagation of optimizing hints (such as the 4309 stack alignments needed by functions) in the back end. 4310 + Call graph based out-of-order inlining heuristics which allows 4311 to limit overall compilation unit growth (--param 4312 inline-unit-growth). 4313 Overall, the unit-at-a-time scheme produces a 1.3% improvement for 4314 the SPECint2000 benchmark on the i386 architecture (AMD Athlon 4315 CPU). 4316 * More realistic code size estimates used by inlining for C, 4317 Objective-C, C++ and Java. The growth of large functions can now be 4318 limited via --param large-function-insns and --param 4319 large-function-growth. 4320 * A new cfg-level loop optimizer pass replaces the old loop unrolling 4321 pass and adds two other loop transformations -- loop peeling and 4322 loop unswitching -- and also uses the profile feedback to limit 4323 code growth. (The three optimizations are enabled by 4324 -funroll-loops, -fpeel-loops and -funswitch-loops flags, 4325 respectively). 4326 The old loop unroller still can be enabled by -fold-unroll-loops 4327 and may produce better code in some cases, especially when the 4328 webizer optimization pass is not run. 4329 * A new web construction pass enabled via -fweb (and implied by -O3) 4330 improves the quality of register allocation, CSE, first scheduling 4331 pass and some other optimization passes by avoiding re-use of 4332 pseudo registers with non-overlapping live ranges. The pass almost 4333 always improves code quality but does make debugging difficult and 4334 thus is not enabled by default by -O2 4335 The pass is especially effective as cleanup after code duplication 4336 passes, such as the loop unroller or the tracer. 4337 * Experimental implementations of superblock or trace scheduling in 4338 the second scheduling pass can be enabled via 4339 -fsched2-use-superblocks and -fsched2-use-traces, respectively. 4340 4341New Languages and Language specific improvements 4342 4343 Ada 4344 4345 * The Ada front end has been updated to include numerous bug fixes 4346 and enhancements. These include: 4347 + Improved project file support 4348 + Additional set of warnings about potential wrong code 4349 + Improved error messages 4350 + Improved code generation 4351 + Improved cross reference information 4352 + Improved inlining 4353 + Better run-time check elimination 4354 + Better error recovery 4355 + More efficient implementation of unbounded strings 4356 + Added features in GNAT.Sockets, GNAT.OS_Lib, GNAT.Debug_Pools, 4357 ... 4358 + New GNAT.xxxx packages (e.g. GNAT.Strings, 4359 GNAT.Exception_Action) 4360 + New pragmas 4361 + New -gnatS switch replacing gnatpsta 4362 + Implementation of new Ada features (in particular limited 4363 with, limited aggregates) 4364 4365 C/Objective-C/C++ 4366 4367 * Precompiled headers are now supported. Precompiled headers can 4368 dramatically speed up compilation of some projects. There are some 4369 known defects in the current precompiled header implementation that 4370 will result in compiler crashes in relatively rare situations. 4371 Therefore, precompiled headers should be considered a "technology 4372 preview" in this release. Read the manual for details about how to 4373 use precompiled headers. 4374 * File handling in the preprocessor has been rewritten. GCC no longer 4375 gets confused by symlinks and hardlinks, and now has a correct 4376 implementation of #import and #pragma once. These two directives 4377 have therefore been un-deprecated. 4378 * The undocumented extension that allowed C programs to have a label 4379 at the end of a compound statement, which has been deprecated since 4380 GCC 3.0, has been removed. 4381 * The cast-as-lvalue extension has been removed for C++ and 4382 deprecated for C and Objective-C. In particular, code like this: 4383 int i; 4384 (char) i = 5; 4385 4386 or this: 4387 char *p; 4388 ((int *) p)++; 4389 4390 is no longer accepted for C++ and will not be accepted for C and 4391 Objective-C in a future version. 4392 * The conditional-expression-as-lvalue extension has been deprecated 4393 for C and Objective-C. In particular, code like this: 4394 int a, b, c; 4395 (a ? b : c) = 2; 4396 4397 will not be accepted for C and Objective-C in a future version. 4398 * The compound-expression-as-lvalue extension has been deprecated for 4399 C and Objective-C. In particular, code like this: 4400 int a, b; 4401 (a, b) = 2; 4402 4403 will not be accepted for C and Objective-C in a future version. A 4404 possible non-intrusive workaround is the following: 4405 (*(a, &b)) = 2; 4406 4407 * Several [10]built-in functions such as __builtin_popcount for 4408 counting bits, finding the highest and lowest bit in a word, and 4409 parity have been added. 4410 * The -fwritable-strings option has been deprecated and will be 4411 removed. 4412 * Many C math library functions are now recognized as built-ins and 4413 optimized. 4414 * The C, C++, and Objective-C compilers can now handle source files 4415 written in any character encoding supported by the host C library. 4416 The default input character set is taken from the current locale, 4417 and may be overridden with the -finput-charset command line option. 4418 In the future we will add support for inline encoding markers. 4419 4420 C++ 4421 4422 * G++ is now much closer to full conformance to the ISO/ANSI C++ 4423 standard. This means, among other things, that a lot of invalid 4424 constructs which used to be accepted in previous versions will now 4425 be rejected. It is very likely that existing C++ code will need to 4426 be fixed. This document lists some of the most common issues. 4427 * A hand-written recursive-descent C++ parser has replaced the 4428 YACC-derived C++ parser from previous GCC releases. The new parser 4429 contains much improved infrastructure needed for better parsing of 4430 C++ source codes, handling of extensions, and clean separation 4431 (where possible) between proper semantics analysis and parsing. The 4432 new parser fixes many bugs that were found in the old parser. 4433 * You must now use the typename and template keywords to disambiguate 4434 dependent names, as required by the C++ standard. 4435 struct K { 4436 typedef int mytype_t; 4437 }; 4438 4439 template <class T1> struct A { 4440 template <class T2> struct B { 4441 void callme(void); 4442 }; 4443 4444 template <int N> void bar(void) 4445 { 4446 // Use 'typename' to tell the parser that T1::mytype_t names 4447 // a type. This is needed because the name is dependent (in 4448 // this case, on template parameter T1). 4449 typename T1::mytype_t x; 4450 x = 0; 4451 } 4452 }; 4453 4454 template <class T> void template_func(void) 4455 { 4456 // Use 'template' to prefix member templates within 4457 // dependent types (a has type A<T>, which depends on 4458 // the template parameter T). 4459 A<T> a; 4460 a.template bar<0>(); 4461 4462 // Use 'template' to tell the parser that B is a nested 4463 // template class (dependent on template parameter T), and 4464 // 'typename' because the whole A<T>::B<int> is 4465 // the name of a type (again, dependent). 4466 typename A<T>::template B<int> b; 4467 b.callme(); 4468 } 4469 4470 void non_template_func(void) 4471 { 4472 // Outside of any template class or function, no names can be 4473 // dependent, so the use of the keyword 'typename' and 'template' 4474 // is not needed (and actually forbidden). 4475 A<K> a; 4476 a.bar<0>(); 4477 A<K>::B<float> b; 4478 b.callme(); 4479 } 4480 * In a template definition, unqualified names will no longer find 4481 members of a dependent base (as specified by [temp.dep]/3 in the 4482 C++ standard). For example, 4483 template <typename T> struct B { 4484 int m; 4485 int n; 4486 int f (); 4487 int g (); 4488 }; 4489 int n; 4490 int g (); 4491 template <typename T> struct C : B<T> { 4492 void h () 4493 { 4494 m = 0; // error 4495 f (); // error 4496 n = 0; // ::n is modified 4497 g (); // ::g is called 4498 } 4499 }; 4500 You must make the names dependent, e.g. by prefixing them with 4501 this->. Here is the corrected definition of C<T>::h, 4502 template <typename T> void C<T>::h () 4503 { 4504 this->m = 0; 4505 this->f (); 4506 this->n = 0 4507 this->g (); 4508 } 4509 As an alternative solution (unfortunately not backwards compatible 4510 with GCC 3.3), you may use using declarations instead of this->: 4511 template <typename T> struct C : B<T> { 4512 using B<T>::m; 4513 using B<T>::f; 4514 using B<T>::n; 4515 using B<T>::g; 4516 void h () 4517 { 4518 m = 0; 4519 f (); 4520 n = 0; 4521 g (); 4522 } 4523 }; 4524 * In templates, all non-dependent names are now looked up and bound 4525 at definition time (while parsing the code), instead of later when 4526 the template is instantiated. For instance: 4527 void foo(int); 4528 4529 template <int> struct A { 4530 static void bar(void){ 4531 foo('a'); 4532 } 4533 }; 4534 4535 void foo(char); 4536 4537 int main() 4538 { 4539 A<0>::bar(); // Calls foo(int), used to call foo(char). 4540 } 4541 4542 * In an explicit instantiation of a class template, you must use 4543 class or struct before the template-id: 4544 template <int N> 4545 class A {}; 4546 4547 template A<0>; // error, not accepted anymore 4548 template class A<0>; // OK 4549 * The "named return value" and "implicit typename" extensions have 4550 been removed. 4551 * Default arguments in function types have been deprecated and will 4552 be removed. 4553 * ARM-style name-injection of friend declarations has been deprecated 4554 and will be removed. For example: struct S { friend void f(); }; 4555 void g() { f(); } will not be accepted by future versions of G++; 4556 instead a declaration of "f" will need to be present outside of the 4557 scope of "S". 4558 * Covariant returns are implemented for all but varadic functions 4559 that require an adjustment. 4560 * When -pedantic is used, G++ now issues errors about spurious 4561 semicolons. For example, 4562 namespace N {}; // Invalid semicolon. 4563 void f() {}; // Invalid semicolon. 4564 * G++ no longer accepts attributes for a declarator after the 4565 initializer associated with that declarator. For example, 4566 X x(1) __attribute__((...)); 4567 is no longer accepted. Instead, use: 4568 X x __attribute__((...)) (1); 4569 * Inside the scope of a template class, the name of the class itself 4570 can be treated as either a class or a template. So GCC used to 4571 accept the class name as argument of type template, and template 4572 template parameter. However this is not C++ standard compliant. Now 4573 the name is not treated as a valid template template argument 4574 unless you qualify the name by its scope. For example, the code 4575 below no longer compiles. 4576 template <template <class> class TT> class X {}; 4577 template <class T> class Y { 4578 X<Y> x; // Invalid, Y is always a type template parameter. 4579 }; 4580 The valid code for the above example is 4581 X< ::Y> x; // Valid. 4582 (Notice the space between < and : to prevent GCC to interpret this 4583 as a digraph for [.) 4584 * Friend declarations that refer to template specializations are 4585 rejected if the template has not already been declared. For 4586 example, 4587 template <typename T> 4588 class C { 4589 friend void f<> (C&); 4590 }; 4591 is rejected. You must first declare f as a template, 4592 template <typename T> 4593 void f(T); 4594 * In case of friend declarations, every name used in the friend 4595 declaration must be accessible at the point of that declaration. 4596 Previous versions of G++ used to be less strict about this and 4597 allowed friend declarations for private class members, for example. 4598 See the ISO C++ Standard Committee's [11]defect report #209 for 4599 details. 4600 * Declaration of member functions of class templates as friends are 4601 supported. For example, 4602 template <typename T> struct A { 4603 void f(); 4604 }; 4605 class C { 4606 template <typename T> friend void A<T>::f(); 4607 }; 4608 * You must use template <> to introduce template specializations, as 4609 required by the standard. For example, 4610 template <typename T> 4611 struct S; 4612 4613 struct S<int> { }; 4614 is rejected. You must write, 4615 template <> struct S<int> {}; 4616 * G++ used to accept code like this, 4617 struct S { 4618 int h(); 4619 void f(int i = g()); 4620 int g(int i = h()); 4621 }; 4622 This behavior is not mandated by the standard. Now G++ issues an 4623 error about this code. To avoid the error, you must move the 4624 declaration of g before the declaration of f. The default arguments 4625 for g must be visible at the point where it is called. 4626 * The C++ ABI Section 3.3.3 specifications for the array construction 4627 routines __cxa_vec_new2 and __cxa_vec_new3 were changed to return 4628 NULL when the allocator argument returns NULL. These changes are 4629 incorporated into the libstdc++ runtime library. 4630 * Using a name introduced by a typedef in a friend declaration or in 4631 an explicit instantiation is now rejected, as specified by the ISO 4632 C++ standard. 4633 class A; 4634 typedef A B; 4635 class C { 4636 friend class B; // error, no typedef name here 4637 friend B; // error, friend always needs class/struct/enum 4638 friend class A; // OK 4639 }; 4640 4641 template <int> class Q {}; 4642 typedef Q<0> R; 4643 template class R; // error, no typedef name here 4644 template class Q<0>; // OK 4645 * When allocating an array with a new expression, GCC used to allow 4646 parentheses around the type name. This is actually ill-formed and 4647 it is now rejected: 4648 int* a = new (int)[10]; // error, not accepted anymore 4649 int* a = new int[10]; // OK 4650 * When binding an rvalue of class type to a reference, the copy 4651 constructor of the class must be accessible. For instance, consider 4652 the following code: 4653 class A 4654 { 4655 public: 4656 A(); 4657 4658 private: 4659 A(const A&); // private copy ctor 4660 }; 4661 4662 A makeA(void); 4663 void foo(const A&); 4664 4665 void bar(void) 4666 { 4667 foo(A()); // error, copy ctor is not accessible 4668 foo(makeA()); // error, copy ctor is not accessible 4669 4670 A a1; 4671 foo(a1); // OK, a1 is a lvalue 4672 } 4673 This might be surprising at first sight, especially since most 4674 popular compilers do not correctly implement this rule ([12]further 4675 details). 4676 * When forming a pointer to member or a pointer to member function, 4677 access checks for class visibility (public, protected, private) are 4678 now performed using the qualifying scope of the name itself. This 4679 is better explained with an example: 4680 class A 4681 { 4682 public: 4683 void pub_func(); 4684 protected: 4685 void prot_func(); 4686 private: 4687 void priv_func(); 4688 }; 4689 4690 class B : public A 4691 { 4692 public: 4693 void foo() 4694 { 4695 &A::pub_func; // OK, pub_func is accessible through A 4696 &A::prot_func; // error, cannot access prot_func through A 4697 &A::priv_func; // error, cannot access priv_func through A 4698 4699 &B::pub_func; // OK, pub_func is accessible through B 4700 &B::prot_func; // OK, can access prot_func through B (within B) 4701 &B::priv_func; // error, cannot access priv_func through B 4702 } 4703 }; 4704 4705 Runtime Library (libstdc++) 4706 4707 * Optimization work: 4708 + Streamlined streambuf, filebuf, separate synched with C 4709 Standard I/O streambuf. 4710 + All formatted I/O now uses cached locale information. 4711 + STL optimizations (memory/speed for list, red-black trees as 4712 used by sets and maps). 4713 + More use of GCC builtins. 4714 + String optimizations (avoid contention on 4715 increment/decrement-and-test of the reference count in the 4716 empty-string object, constructor from input_iterators 4717 speedup). 4718 * Static linkage size reductions. 4719 * Large File Support (files larger than 2 GB on 32-bit systems). 4720 * Wide character and variable encoding filebuf work (UTF-8, Unicode). 4721 * Generic character traits. 4722 * Also support wchar_t specializations on Mac OS 10.3.x, FreeBSD 5.x, 4723 Solaris 2.7 and above, AIX 5.x, Irix 6.5. 4724 * The allocator class is now standard-conformant, and two additional 4725 extension allocators have been added, mt_alloc and 4726 bitmap_allocator. 4727 * PCH support: -include bits/stdc++.h (2x compile speedup). 4728 * Rewrote __cxa_demangle with support for C++ style allocators. 4729 * New debug modes for STL containers and iterators. 4730 * Testsuite rewrite: five times as many tests, plus increasingly 4731 sophisticated tests, including I/O, MT, multi-locale, wide and 4732 narrow characters. 4733 * Use current versions of GNU "autotools" for build/configuration. 4734 4735 Objective-C 4736 4737 * The Objective-C front end has been updated to include the numerous 4738 bug fixes and enhancements previously available only in Apple's 4739 version of GCC. These include: 4740 + Structured exception (@try... @catch... @finally, @throw) and 4741 synchronization (@synchronized) support. These are accessible 4742 via the -fobjc-exceptions switch; as of this writing, they may 4743 only be used in conjunction with -fnext-runtime on Mac OS X 4744 10.3 and later. See [13]Options Controlling Objective-C 4745 Dialect for more information. 4746 + An overhaul of @encode logic. The C99 _Bool and C++ bool type 4747 may now be encoded as 'B'. In addition, the back-end/codegen 4748 dependencies have been removed. 4749 + An overhaul of message dispatch construction, ensuring that 4750 the various receiver types (and casts thereof) are handled 4751 properly, and that correct diagnostics are issued. 4752 + Support for "Zero-Link" (-fzero-link) and "Fix-and-Continue" 4753 (-freplace-objc-classes) debugging modes, currently available 4754 on Mac OS X 10.3 and later. See [14]Options Controlling 4755 Objective-C Dialect for more information. 4756 + Access to optimized runtime entry points (-fno-nil-receivers ) 4757 on the assumption that message receivers are never nil. This 4758 is currently available on Mac OS X 10.3 and later. See 4759 [15]Options Controlling Objective-C Dialect for more 4760 information. 4761 4762 Java 4763 4764 * Compiling a .jar file will now cause non-.class entries to be 4765 automatically compiled as resources. 4766 * libgcj has been ported to Darwin. 4767 * Jeff Sturm has adapted Jan Hubicka's call graph optimization code 4768 to gcj. 4769 * libgcj has a new gcjlib URL type; this lets URLClassLoader load 4770 code from shared libraries. 4771 * libgcj has been much more completely merged with [16]GNU Classpath. 4772 * Class loading is now much more correct; in particular the caller's 4773 class loader is now used when that is required. 4774 * [17]Eclipse 2.x will run out of the box using gij. 4775 * Parts of java.nio have been implemented. Direct and indirect 4776 buffers work, as do fundamental file and socket operations. 4777 * java.awt has been improved, though it is still not ready for 4778 general use. 4779 * The HTTP protocol handler now uses HTTP/1.1 and can handle the POST 4780 method. 4781 * The MinGW port has matured. Enhancements include socket timeout 4782 support, thread interruption, improved Runtime.exec() handling and 4783 support for accented characters in filenames. 4784 4785 Fortran 4786 4787 * Fortran improvements are listed in the [18]Fortran documentation. 4788 4789New Targets and Target Specific Improvements 4790 4791 Alpha 4792 4793 * Several [19]built-in functions have been added such as 4794 __builtin_alpha_zap to allow utilizing the more obscure 4795 instructions of the CPU. 4796 * Parameter passing of complex arguments has changed to match the 4797 [20]ABI. This change is incompatible with previous GCC versions, 4798 but does fix compatibility with the Tru64 compiler and several 4799 corner cases where GCC was incompatible with itself. 4800 4801 ARM 4802 4803 * Nicolas Pitre has contributed his hand-coded floating-point support 4804 code for ARM. It is both significantly smaller and faster than the 4805 existing C-based implementation, even when building applications 4806 for Thumb. The arm-elf configuration has been converted to use the 4807 new code. 4808 * Support for the Intel's iWMMXt architecture, a second generation 4809 XScale processor, has been added. Enabled at run time with the 4810 -mcpu=iwmmxt command line switch. 4811 * A new ARM target has been added: arm-wince-pe. This is similar to 4812 the arm-pe target, but it defaults to using the APCS32 ABI. 4813 * The existing ARM pipeline description has been converted to the use 4814 the [21]DFA processor pipeline model. There is not much change in 4815 code performance, but the description is now [22]easier to 4816 understand. 4817 * Support for the Cirrus EP9312 Maverick floating point co-processor 4818 added. Enabled at run time with the -mcpu=ep9312 command line 4819 switch. Note however that the multilibs to support this chip are 4820 currently disabled in gcc/config/arm/t-arm-elf, so if you want to 4821 enable their production you will have to uncomment the entries in 4822 that file. 4823 4824 H8/300 4825 4826 * Support for long long has been added. 4827 * Support for saveall attribute has been added. 4828 * Pavel Pisa contributed hand-written 32-bit-by-32-bit division code 4829 for H8/300H and H8S, which is much faster than the previous 4830 implementation. 4831 * A lot of small performance improvements. 4832 4833 IA-32/AMD64 (x86-64) 4834 4835 * Tuning for K8 (AMD Opteron/Athlon64) core is available via 4836 -march=k8 and -mcpu=k8. 4837 * Scalar SSE code generation carefully avoids reformatting penalties, 4838 hidden dependencies and minimizes the number of uops generated on 4839 both Intel and AMD CPUs. 4840 * Vector MMX and SSE operands are now passed in registers to improve 4841 performance and match the argument passing convention used by the 4842 Intel C++ Compiler. As a result it is not possible to call 4843 functions accepting vector arguments compiled by older GCC version. 4844 * Conditional jump elimination is now more aggressive on modern CPUs. 4845 * The Athlon ports has been converted to use the DFA processor 4846 pipeline description. 4847 * Optimization of indirect tail calls is now possible in a similar 4848 fashion as direct sibcall optimization. 4849 * Further small performance improvements. 4850 * -m128bit-long-double is now less buggy. 4851 * __float128 support in 64-bit compilation. 4852 * Support for data structures exceeding 2GB in 64-bit mode. 4853 * -mcpu has been renamed to -mtune. 4854 4855 IA-64 4856 4857 * Tuning code for the Itanium 2 processor has been added. The 4858 generation of code tuned for Itanium 2 (option -mtune=itanium2) is 4859 enabled by default now. To generate code tuned for Itanium 1 the 4860 option -mtune=itanium1 should be used. 4861 * [23]DFA processor pipeline descriptions for the IA-64 processors 4862 have been added. This resulted in about 3% improvement on the 4863 SPECInt2000 benchmark for Itanium 2. 4864 * Instruction bundling for the IA-64 processors has been rewritten 4865 using the DFA pipeline hazard recognizer. It resulted in about 60% 4866 compiler speedup on the SPECInt2000 C programs. 4867 4868 M32R 4869 4870 * Support for the M32R/2 processor has been added by Renesas. 4871 * Support for an M32R GNU/Linux target and PIC code generation has 4872 been added by Renesas. 4873 4874 M68000 4875 4876 * Bernardo Innocenti (Develer S.r.l.) has contributed the 4877 m68k-uclinux target, based on former work done by Paul Dale 4878 (SnapGear Inc.). Code generation for the ColdFire processors family 4879 has been enhanced and extended to support the MCF 53xx and MCF 54xx 4880 cores, integrating former work done by Peter Barada (Motorola). 4881 4882 MIPS 4883 4884 Processor-specific changes 4885 4886 * Support for the RM7000 and RM9000 processors has been added. It can 4887 be selected using the -march compiler option and should work with 4888 any MIPS I (mips-*) or MIPS III (mips64-*) configuration. 4889 * Support for revision 2 of the MIPS32 ISA has been added. It can be 4890 selected with the command-line option -march=mips32r2. 4891 * There is a new option, -mfix-sb1, to work around certain SB-1 4892 errata. 4893 4894 Configuration 4895 4896 * It is possible to customize GCC using the following configure-time 4897 options: 4898 + --with-arch, which specifies the default value of the -march 4899 option. 4900 + --with-tune, which specifies the default value of the -mtune 4901 option. 4902 + --with-abi, which specifies the default ABI. 4903 + --with-float=soft, which tells GCC to use software floating 4904 point by default. 4905 + --with-float=hard, which tells GCC to use hardware floating 4906 point by default. 4907 * A 64-bit GNU/Linux port has been added. The associated 4908 configurations are mips64-linux-gnu and mips64el-linux-gnu. 4909 * The 32-bit GNU/Linux port now supports Java. 4910 * The IRIX 6 configuration now supports the o32 ABI and will build 4911 o32 multilibs by default. This support is compatible with both 4912 binutils and the SGI tools, but note that several features, 4913 including debugging information and DWARF2 exception handling, are 4914 only available when using the GNU assembler. Use of the GNU 4915 assembler and linker (version 2.15 or above) is strongly 4916 recommended. 4917 * The IRIX 6 configuration now supports 128-bit long doubles. 4918 * There are two new RTEMS-specific configurations, mips-rtems and 4919 mipsel-rtems. 4920 * There are two new *-elf configurations, mipsisa32r2-elf and 4921 mipsisa32r2el-elf. 4922 4923 General 4924 4925 * Several [24]ABI bugs have been fixed. Unfortunately, these changes 4926 will break binary compatibility with earlier releases. 4927 * GCC can now use explicit relocation operators when generating 4928 -mabicalls code. This behavior is controlled by -mexplicit-relocs 4929 and can have several performance benefits. For example: 4930 + It allows for more optimization of GOT accesses, including 4931 better scheduling and redundancy elimination. 4932 + It allows sibling calls to be implemented as jumps. 4933 + n32 and n64 leaf functions can use a call-clobbered global 4934 pointer instead of $28. 4935 + The code to set up $gp can be removed from functions that 4936 don't need it. 4937 * A new option, -mxgot, allows the GOT to be bigger than 64k. This 4938 option is equivalent to the assembler's -xgot option and should be 4939 used instead of -Wa,-xgot. 4940 * Frame pointer elimination is now supported when generating 64-bit 4941 MIPS16 code. 4942 * Inline block moves have been optimized to take more account of 4943 alignment information. 4944 * Many internal changes have been made to the MIPS port, mostly aimed 4945 at reducing the reliance on assembler macros. 4946 4947 PowerPC 4948 4949 * GCC 3.4 releases have a number of fixes for PowerPC and PowerPC64 4950 [25]ABI incompatibilities regarding the way parameters are passed 4951 during functions calls. These changes may result in incompatibility 4952 between code compiled with GCC 3.3 and GCC 3.4. 4953 4954 PowerPC Darwin 4955 4956 * Support for shared/dylib gcc libraries has been added. It is 4957 enabled by default on powerpc-apple-darwin7.0.0 and up. 4958 * Libgcj is enabled by default. On systems older than 4959 powerpc-apple-darwin7.0.0 you need to install dlcompat. 4960 * 128-bit IBM extended precision format support added for long 4961 double. 4962 4963 PowerPC64 GNU/Linux 4964 4965 * By default, PowerPC64 GNU/Linux now uses natural alignment of 4966 structure elements. The old four byte alignment for double, with 4967 special rules for a struct starting with a double, can be chosen 4968 with -malign-power. This change may result in incompatibility 4969 between code compiled with GCC 3.3 and GCC 3.4. 4970 * -mabi=altivec is now the default rather than -mabi=no-altivec. 4971 * 128-bit IBM extended precision format support added for long 4972 double. 4973 4974 S/390 and zSeries 4975 4976 * New command-line options allow to specify the intended execution 4977 environment for generated code: 4978 + -mesa/-mzarch allows to specify whether to generate code 4979 running in ESA/390 mode or in z/Architecture mode (this is 4980 applicable to 31-bit code only). 4981 + -march allows to specify a minimum processor architecture 4982 level (g5, g6, z900, or z990). 4983 + -mtune allows to specify which processor to tune for. 4984 * It is possible to customize GCC using the following configure-time 4985 options: 4986 + --with-mode, which specifies whether to default to assuming 4987 ESA/390 or z/Architecture mode. 4988 + --with-arch, which specifies the default value of the -march 4989 option. 4990 + --with-tune, which specifies the default value of the -mtune 4991 option. 4992 * Support for the z990 processor has been added, and can be selected 4993 using -march=z990 or -mtune=z990. This includes instruction 4994 scheduling tuned for the superscalar instruction pipeline of the 4995 z990 processor as well as support for all new instructions provided 4996 by the long-displacement facility. 4997 * Support to generate 31-bit code optimized for zSeries processors 4998 (running in ESA/390 or in z/Architecture mode) has been added. This 4999 can be selected using -march=z900 and -mzarch respectively. 5000 * Instruction scheduling for the z900 and z990 processors now uses 5001 the DFA pipeline hazard recognizer. 5002 * GCC no longer generates code to maintain a stack backchain, 5003 previously used to generate stack backtraces for debugging 5004 purposes. As replacement that does not incur runtime overhead, 5005 DWARF-2 call frame information is provided by GCC; this is 5006 supported by GDB 6.1. The old behavior can be restored using the 5007 -mbackchain option. 5008 * The stack frame size of functions may now exceed 2 GB in 64-bit 5009 code. 5010 * A port for the 64-bit IBM TPF operating system has been added; the 5011 configuration is s390x-ibm-tpf. This configuration is supported as 5012 cross-compilation target only. 5013 * Various changes to improve the generated code have been 5014 implemented, including: 5015 + GCC now uses the MULTIPLY AND ADD and MULTIPLY AND SUBTRACT 5016 instructions to significantly speed up many floating-point 5017 applications. 5018 + GCC now uses the ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL 5019 WITH BORROW instructions to speed up long long arithmetic. 5020 + GCC now uses the SEARCH STRING instruction to implement 5021 strlen(). 5022 + In many cases, function call overhead for 31-bit code has been 5023 reduced by placing the literal pool after the function code 5024 instead of after the function prolog. 5025 + Register 14 is no longer reserved in 64-bit code. 5026 + Handling of global register variables has been improved. 5027 5028 SPARC 5029 5030 * The option -mflat is deprecated. 5031 * Support for large (> 2GB) frames has been added to the 64-bit port. 5032 * Several [26]ABI bugs have been fixed. Unfortunately, these changes 5033 will break binary compatibility with earlier releases. 5034 * The default debugging format has been switched from STABS to 5035 DWARF-2 for 32-bit code on Solaris 7 and later. DWARF-2 is already 5036 the default debugging format for 64-bit code on Solaris. 5037 5038 SuperH 5039 5040 * Support for the SH2E processor has been added. Enabled at run time 5041 with the -m2e command line switch, or at configure time by 5042 specifying sh2e as the machine part of the target triple. 5043 5044 V850 5045 5046 * Support for the Mitsubishi V850E1 processor has been added. This is 5047 a variant of the V850E processor with some additional debugging 5048 instructions. 5049 5050 Xtensa 5051 5052 * Several ABI bugs have been fixed. Unfortunately, these changes 5053 break binary compatibility with earlier releases. 5054 + For big-endian processors, the padding of aggregate return 5055 values larger than a word has changed. If the size of an 5056 aggregate return value is not a multiple of 32 bits, previous 5057 versions of GCC inserted padding in the most-significant bytes 5058 of the first return value register. Aggregates larger than a 5059 word are now padded in the least-significant bytes of the last 5060 return value register used. Aggregates smaller than a word are 5061 still padded in the most-significant bytes. The return value 5062 padding has not changed for little-endian processors. 5063 + Function arguments with 16-byte alignment are now properly 5064 aligned. 5065 + The implementation of the va_list type has changed. A va_list 5066 value created by va_start from a previous release cannot be 5067 used with va_arg from this release, or vice versa. 5068 * More processor configuration options for Xtensa processors are 5069 supported: 5070 + the ABS instruction is now optional; 5071 + the ADDX* and SUBX* instructions are now optional; 5072 + an experimental CONST16 instruction can be used to synthesize 5073 constants instead of loading them from constant pools. 5074 These and other Xtensa processor configuration options can no 5075 longer be enabled or disabled by command-line options; the 5076 processor configuration must be specified by the xtensa-config.h 5077 header file when building GCC. Additionally, the 5078 -mno-serialize-volatile option is no longer supported. 5079 5080Obsolete Systems 5081 5082 Support for a number of older systems has been declared obsolete in GCC 5083 3.4. Unless there is activity to revive them, the next release of GCC 5084 will have their sources permanently removed. 5085 5086 All configurations of the following processor architectures have been 5087 declared obsolete: 5088 * Mitsubishi D30V, d30v-* 5089 * AT&T DSP1600 and DSP1610, dsp16xx-* 5090 * Intel 80960, i960 5091 5092 Also, some individual systems have been obsoleted: 5093 * ARM Family 5094 + Support for generating code for operation in APCS/26 mode 5095 (-mapcs-26). 5096 * IBM ESA/390 5097 + "Bigfoot" port, i370-*. (The other port, s390-*, is actively 5098 maintained and supported.) 5099 * Intel 386 family 5100 + MOSS, i?86-moss-msdos and i?86-*-moss* 5101 + NCR 3000 running System V r.4, i?86-ncr-sysv4* 5102 + FreeBSD with a.out object format, i?86-*-freebsd*aout* and 5103 i?86-*-freebsd2* 5104 + GNU/Linux with a.out object format, i?86-linux*aout* 5105 + GNU/Linux with libc5, a.k.a. glibc1, i?86-linux*libc1* 5106 + Interix versions before Interix 3, i?86-*-interix 5107 + Mach microkernel, i?86-mach* 5108 + SCO UnixWare with UDK, i?86-*-udk* 5109 + Generic System V releases 1, 2, and 3, i?86-*-sysv[123]* 5110 + VSTa microkernel, i386-*-vsta 5111 * Motorola M68000 family 5112 + HPUX, m68k-hp-hpux* and m68000-hp-hpux* 5113 + NetBSD with a.out object format (before NetBSD 1.4), 5114 m68k-*-*-netbsd* except m68k-*-*-netbsdelf* 5115 + Generic System V r.4, m68k-*-sysv4* 5116 * VAX 5117 + Generic VAX, vax-*-* (This is generic VAX only; we have not 5118 obsoleted any VAX triples for specific operating systems.) 5119 5120Documentation improvements 5121 5122Other significant improvements 5123 5124 * The build system has undergone several significant cleanups. 5125 Subdirectories will only be configured if they are being built, and 5126 all subdirectory configures are run from the make command. The top 5127 level has been autoconfiscated. 5128 * Building GCC no longer writes to its source directory. This should 5129 help those wishing to share a read-only source directory over NFS 5130 or build from a CD. The exceptions to this feature are if you 5131 configure with either --enable-maintainer-mode or 5132 --enable-generated-files-in-srcdir. 5133 * The -W warning option has been renamed to -Wextra, which is more 5134 easily understood. The older spelling will be retained for 5135 backwards compatibility. 5136 * Substantial improvements in compile time have been made, 5137 particularly for non-optimizing compilations. 5138 __________________________________________________________________ 5139 5140GCC 3.4.0 5141 5142 Bug Fixes 5143 5144 A vast number of bugs have been fixed in 3.4.0, too many to publish a 5145 complete list here. [27]Follow this link to query the Bugzilla database 5146 for the list of over 900 bugs fixed in 3.4.0. This is the list of all 5147 bugs marked as resolved and fixed in 3.4.0 that are not flagged as 3.4 5148 regressions. 5149 __________________________________________________________________ 5150 5151GCC 3.4.1 5152 5153 Bug Fixes 5154 5155 This section lists the problem reports (PRs) from GCC's bug tracking 5156 system that are known to be fixed in the 3.4.1 release. This list might 5157 not be complete (that is, it is possible that some PRs that have been 5158 fixed are not listed here). 5159 5160 Bootstrap failures 5161 5162 * [28]10129 Ada bootstrap fails on PPC-Darwin - invalid assembler 5163 emitted - PIC related 5164 * [29]14576 [ARM] ICE in libiberty when building gcc-3.4 for arm-elf 5165 * [30]14760 A bug in configure.in prevents using both 5166 --program-suffix and --program-prefix 5167 * [31]14671 [hppa64] bootstrap fails: ICE in 5168 save_call_clobbered_regs, in caller_save.c 5169 * [32]15093 [alpha][Java] make bootstrap fails to configure libffi on 5170 Alpha 5171 * [33]15178 Solaris 9/x86 fails linking after stage 3 5172 5173 Multi-platform internal compiler errors (ICEs) 5174 5175 * [34]12753 (preprocessor) Memory corruption in preprocessor on bad 5176 input 5177 * [35]13985 ICE in gcc.c-torture/compile/930621-1.c 5178 * [36]14810 (c++) tree check failures with invalid code involving 5179 templates 5180 * [37]14883 (c++) ICE on invalid code, in cp_parser_lookup_name, in 5181 cp/parser.c 5182 * [38]15044 (c++) ICE on syntax error, template header 5183 * [39]15057 (c++) Compiling of conditional value throw constructs 5184 cause a segmentation violation 5185 * [40]15064 (c++) typeid of template parameter gives ICE 5186 * [41]15142 (c++) ICE when passing a string where a char* is expected 5187 in a throw statement 5188 * [42]15159 ICE in rtl_verify_flow_info_1 5189 * [43]15165 (c++) ICE in instantiate_template 5190 * [44]15193 Unary minus using pointer to V4SF vector causes 5191 -fforce-mem to exhaust all memory 5192 * [45]15209 (c++) Runs out of memory with packed structs 5193 * [46]15227 (c++) Trouble with invalid function definition 5194 * [47]15285 (c++) instantiate_type ICE when forming pointer to 5195 template function 5196 * [48]15299 (c++) ICE in resolve_overloaded_unification 5197 * [49]15329 (c++) ICE on constructor of member template 5198 * [50]15550 ICE in extract_insn, in recog.c 5199 * [51]15554 (c++) ICE in tsubst_copy, in cp/pt.c 5200 * [52]15640 (c++) ICE on invalid code in arg_assoc, in 5201 cp/name-lookup.c 5202 * [53]15666 [unit-at-a-time] Gcc abort on valid code 5203 * [54]15696 (c++) ICE with bad pointer-to-member code 5204 * [55]15701 (c++) ICE with friends and template template parameter 5205 * [56]15761 ICE in do_SUBST, in combine.c 5206 * [57]15829 (c++) ICE on Botan-1.3.13 due to -funroll-loops 5207 5208 Ada 5209 5210 * [58]14538 All RTEMS targets broken for gnat 5211 5212 C front end 5213 5214 * [59]12391 missing warning about assigning to an incomplete type 5215 * [60]14649 atan(1.0) should not be a constant expression 5216 * [61]15004 [unit-at-a-time] no warning for unused paramater in 5217 static function 5218 * [62]15749 --pedantic-errors behaves differently from --pedantic 5219 with C-compiler on GNU/Linux 5220 5221 C++ compiler and library 5222 5223 * [63]10646 non-const reference is incorrectly matched in a "const T" 5224 partial specialization 5225 * [64]12077 wcin.rdbuf()->in_avail() return value too high 5226 * [65]13598 enc_filebuf doesn't work 5227 * [66]14211 const_cast returns lvalue but should be rvalue 5228 * [67]14220 num_put::do_put() undesired float/double behavior 5229 * [68]14245 problem with user-defined allocators in std::basic_string 5230 * [69]14340 libstdc++ Debug mode: failure to convert iterator to 5231 const_iterator 5232 * [70]14600 __gnu_cxx::stdio_sync_filebuf should expose internal 5233 FILE* 5234 * [71]14668 no warning anymore for reevaluation of declaration 5235 * [72]14775 LFS (large file support) tests missing 5236 * [73]14821 Duplicate namespace alias declaration should not conflict 5237 * [74]14930 Friend declaration ignored 5238 * [75]14932 cannot use offsetof to get offsets of array elements in 5239 g++ 3.4.0 5240 * [76]14950 [non unit-at-a-time] always_inline does not mix with 5241 templates and -O0 5242 * [77]14962 g++ ignores #pragma redefine_extname 5243 * [78]14975 Segfault on low-level write error during imbue 5244 * [79]15002 Linewise stream input is unusably slow (std::string slow) 5245 * [80]15025 compiler accepts redeclaration of template as 5246 non-template 5247 * [81]15046 [arm] Math functions misdetected by cross configuration 5248 * [82]15069 a bit test on a variable of enum type is miscompiled 5249 * [83]15074 g++ -lsupc++ still links against libstdc++ 5250 * [84]15083 spurious "statement has no effect" warning 5251 * [85]15096 parse error with templates and pointer to const member 5252 * [86]15287 combination of operator[] and operator .* fails in 5253 templates 5254 * [87]15317 __attribute__ unused in first parameter of constructor 5255 gives error 5256 * [88]15337 sizeof on incomplete type diagnostic 5257 * [89]15361 bitset<>::_Find_next fails 5258 * [90]15412 _GLIBCXX_ symbols symbols defined and used in different 5259 namespaces 5260 * [91]15427 valid code results in incomplete type error 5261 * [92]15471 Incorrect member pointer offsets in anonymous 5262 structs/unions 5263 * [93]15503 nested template problem 5264 * [94]15507 compiler hangs while laying out union 5265 * [95]15542 operator & and template definitions 5266 * [96]15565 SLES9: leading + sign for unsigned int with showpos 5267 * [97]15625 friend defined inside a template fails to find static 5268 function 5269 * [98]15629 Function templates, overloads, and friend name injection 5270 * [99]15742 'noreturn' attribute ignored in method of template 5271 functions. 5272 * [100]15775 Allocator::pointer consistently ignored 5273 * [101]15821 Duplicate namespace alias within namespace rejected 5274 * [102]15862 'enum yn' fails (confict with undeclared builtin) 5275 * [103]15875 rejects pointer to member in template 5276 * [104]15877 valid code using templates and anonymous enums is 5277 rejected 5278 * [105]15947 Puzzling error message for wrong destructor declaration 5279 in template class 5280 * [106]16020 cannot copy __gnu_debug::bitset 5281 * [107]16154 input iterator concept too restrictive 5282 * [108]16174 deducing top-level consts 5283 5284 Java 5285 5286 * [109]14315 Java compiler is not parallel make safe 5287 5288 Fortran 5289 5290 * [110]15151 [g77] incorrect logical i/o in 64-bit mode 5291 5292 Objective-C 5293 5294 * [111]7993 private variables cannot be shadowed in subclasses 5295 5296 Optimization bugs 5297 5298 * [112]15228 useless copies of floating point operands 5299 * [113]15345 [non-unit-at-a-time] unreferenced nested inline 5300 functions not optimized away 5301 * [114]15945 Incorrect floating point optimization 5302 * [115]15526 ftrapv aborts on 0 * (-1) 5303 * [116]14690 Miscompiled POOMA tests 5304 * [117]15112 GCC generates code to write to unchanging memory 5305 5306 Preprocessor 5307 5308 * [118]15067 Minor glitch in the source of cpp 5309 5310 Main driver program bugs 5311 5312 * [119]1963 collect2 interprets -oldstyle_liblookup as -o 5313 ldstyle_liblookup 5314 5315 x86-specific (Intel/AMD) 5316 5317 * [120]15717 Error: can't resolve `L0' {*ABS* section} - `xx' {*UND* 5318 section} 5319 5320 HPPA-specific 5321 5322 * [121]14782 GCC produces an unaligned data access at -O2 5323 * [122]14828 FAIL: gcc.c-torture/execute/20030408-1.c execution, -O2 5324 * [123]15202 ICE in reload_cse_simplify_operands, in postreload.c 5325 5326 IA64-specific 5327 5328 * [124]14610 __float80 constants incorrectly emitted 5329 * [125]14813 init_array sections are initialized in the wrong order 5330 * [126]14857 GCC segfault on duplicated asm statement 5331 * [127]15598 Gcc 3.4 ICE on valid code 5332 * [128]15653 Gcc 3.4 ICE on valid code 5333 5334 MIPS-specific 5335 5336 * [129]15189 wrong filling of delay slot with -march=mips1 -G0 5337 -mno-split-addresses -mno-explicit-relocs 5338 * [130]15331 Assembler error building gnatlib on IRIX 6.5 with GNU as 5339 2.14.91 5340 * [131]16144 Bogus reference to __divdf3 when -O1 5341 * [132]16176 Miscompilation of unaligned data in MIPS backend 5342 5343 PowerPC-specific 5344 5345 * [133]11591 ICE in gcc.dg/altivec-5.c 5346 * [134]12028 powerpc-eabispe produces bad sCOND operation 5347 * [135]14478 rs6000 geu/ltu patterns generate incorrect code 5348 * [136]14567 long double and va_arg complex args 5349 * [137]14715 Altivec stack layout may overlap gpr save with stack 5350 temps 5351 * [138]14902 (libstdc++) Stream checking functions fail when -pthread 5352 option is used. 5353 * [139]14924 Compiler ICE on valid code 5354 * [140]14960 -maltivec affects vector return with -mabi=no-altivec 5355 * [141]15106 vector varargs failure passing from altivec to 5356 non-altivec code for -m32 5357 * [142]16026 ICE in function.c:4804, assign_parms, when -mpowerpc64 & 5358 half-word operation 5359 * [143]15191 -maltivec -mabi=no-altivec results in mis-aligned lvx 5360 and stvx 5361 * [144]15662 Segmentation fault when an exception is thrown - even if 5362 try and catch are specified 5363 5364 s390-specific 5365 5366 * [145]15054 Bad code due to overlapping stack temporaries 5367 5368 SPARC-specific 5369 5370 * [146]15783 ICE with union assignment in 64-bit mode 5371 * [147]15626 GCC 3.4 emits "ld: warning: relocation error: 5372 R_SPARC_UA32" 5373 5374 x86-64-specific 5375 5376 * [148]14326 boehm-gc hardcodes to 3DNow! prefetch for x86_64 5377 * [149]14723 Backported -march=nocona from mainline 5378 * [150]15290 __float128 failed to pass to function properly 5379 5380 Cygwin/Mingw32-specific 5381 5382 * [151]15250 Option -mms-bitfields support on GCC 3.4 is not 5383 conformant to MS layout 5384 * [152]15551 -mtune=pentium4 -O2 with sjlj EH breaks stack probe 5385 worker on windows32 targets 5386 5387 Bugs specific to embedded processors 5388 5389 * [153]8309 [m68k] -m5200 produces erroneous SImode set of short 5390 varaible on stack 5391 * [154]13250 [SH] Gcc code for rotation clobbers the register, but 5392 gcc continues to use the register as if it was not clobbered 5393 * [155]13803 [coldfire] movqi operand constraints too restrictivefor 5394 TARGET_COLDFIRE 5395 * [156]14093 [SH] ICE for code when using -mhitachi option in SH 5396 * [157]14457 [m6811hc] ICE with simple c++ source 5397 * [158]14542 [m6811hc] ICE on simple source 5398 * [159]15100 [SH] cc1plus got hang-up on 5399 libstdc++-v3/testsuite/abi_check.cc 5400 * [160]15296 [CRIS] Delayed branch scheduling causing invalid code on 5401 cris-* 5402 * [161]15396 [SH] ICE with -O2 -fPIC 5403 * [162]15782 [coldfire] m68k_output_mi_thunk emits wrong code for 5404 ColdFire 5405 5406 Testsuite problems (compiler not affected) 5407 5408 * [163]11610 libstdc++ testcases 27_io/* don't work properly remotely 5409 * [164]15488 (libstdc++) possibly insufficient file permissions for 5410 executing test suite 5411 * [165]15489 (libstdc++) testsuite_files determined incorrectly 5412 5413 Documentation bugs 5414 5415 * [166]13928 (libstdc++) no whatis info in some man pages generated 5416 by doxygen 5417 * [167]14150 Ada documentation out of date 5418 * [168]14949 (c++) Need to document method visibility changes 5419 * [169]15123 libstdc++-doc: Allocators.3 manpage is empty 5420 __________________________________________________________________ 5421 5422GCC 3.4.2 5423 5424 Bug Fixes 5425 5426 This section lists the problem reports (PRs) from GCC's bug tracking 5427 system that are known to be fixed in the 3.4.2 release. This list might 5428 not be complete (that is, it is possible that some PRs that have been 5429 fixed are not listed here). 5430 5431 Bootstrap failures and issues 5432 5433 * [170]16469 [mips-sgi-irix5.3] bootstrap fails in 5434 libstdc++-v3/testsuite 5435 * [171]16344 [hppa-linux-gnu] libstdc++'s PCH built by 5436 profiledbootstrap does not work with the built compiler 5437 * [172]16842 [Solaris/x86] mkheaders can not find mkheaders.conf 5438 5439 Multi-platform internal compiler errors (ICEs) 5440 5441 * [173]12608 (c++) ICE: expected class 't', have 'x' (error_mark) in 5442 cp_parser_class_specifier, in cp/parser.c 5443 * [174]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c 5444 * [175]15461 (c++) ICE due to NRV and inlining 5445 * [176]15890 (c++) ICE in c_expand_expr, in c-common.c 5446 * [177]16180 ICE: segmentation fault in RTL optimization 5447 * [178]16224 (c++) ICE in write_unscoped_name (template/namespace) 5448 * [179]16408 ICE: in delete_insn, in cfgrtl.c 5449 * [180]16529 (c++) ICE for: namespace-alias shall not be declared as 5450 the name of any other entity 5451 * [181]16698 (c++) ICE with exceptions and declaration of __cxa_throw 5452 * [182]16706 (c++) ICE in finish_member_declaration, in 5453 cp/semantics.c 5454 * [183]16810 (c++) Legal C++ program with cast gives ICE in 5455 build_ptrmemfunc 5456 * [184]16851 (c++) ICE when throwing a comma expression 5457 * [185]16870 (c++) Boost.Spirit causes ICE in tsubst, in cp/pt.c 5458 * [186]16904 (c++) ICE in finish_class_member_access_expr, in 5459 cp/typeck.c 5460 * [187]16905 (c++) ICE (segfault) with exceptions 5461 * [188]16964 (c++) ICE in cp_parser_class_specifier due to 5462 redefinition 5463 * [189]17068 (c++) ICE: tree check: expected class 'd', have 'x' 5464 (identifier_node) in dependent_template_p, in cp/pt.c 5465 5466 Preprocessor bugs 5467 5468 * [190]16366 Preprocessor option -remap causes memory corruption 5469 5470 Optimization 5471 5472 * [191]15345 unreferenced nested inline functions not optimized away 5473 * [192]16590 Incorrect execution when compiling with -O2 5474 * [193]16693 Bitwise AND is lost when used within a cast to an enum 5475 of the same precision 5476 * [194]17078 Jump into if(0) substatement fails 5477 5478 Problems in generated debug information 5479 5480 * [195]13956 incorrect stabs for nested local variables 5481 5482 C front end bugs 5483 5484 * [196]16684 GCC should not warn about redundant redeclarations of 5485 built-ins 5486 5487 C++ compiler and library 5488 5489 * [197]12658 Thread safety problems in locale::global() and 5490 locale::locale() 5491 * [198]13092 g++ accepts invalid pointer-to-member conversion 5492 * [199]15320 Excessive memory consumption 5493 * [200]16246 Incorrect template argument deduction 5494 * [201]16273 Memory exhausted when using nested classes and virtual 5495 functions 5496 * [202]16401 ostringstream in gcc 3.4.x very slow for big data 5497 * [203]16411 undefined reference to 5498 __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char> 5499 >::file() 5500 * [204]16489 G++ incorrectly rejects use of a null constant integral 5501 expression as a null constant pointer 5502 * [205]16618 offsetof fails with constant member 5503 * [206]16637 syntax error reported for valid input code 5504 * [207]16717 __attribute__((constructor)) broken in C++ 5505 * [208]16813 compiler error in DEBUG version of range insertion 5506 std::map::insert 5507 * [209]16853 pointer-to-member initialization from incompatible one 5508 accepted 5509 * [210]16889 ambiguity is not detected 5510 * [211]16959 Segmentation fault in ios_base::sync_with_stdio 5511 5512 Java compiler and library 5513 5514 * [212]7587 direct threaded interpreter not thread-safe 5515 * [213]16473 ServerSocket accept() leaks file descriptors 5516 * [214]16478 Hash synchronization deadlock with finalizers 5517 5518 Alpha-specific 5519 5520 * [215]10695 ICE in dwarf2out_frame_debug_expr, in dwarf2out.c 5521 * [216]16974 could not split insn (ice in final_scan_insn, in 5522 final.c) 5523 5524 x86-specific 5525 5526 * [217]16298 ICE in output_operand 5527 * [218]17113 ICE with SSE2 intrinsics 5528 5529 x86-64 specific 5530 5531 * [219]14697 libstdc++ couldn't find 32bit libgcc_s 5532 5533 MIPS-specific 5534 5535 * [220]15869 [mips64] No NOP after LW (with -mips1 -O0) 5536 * [221]16325 [mips64] value profiling clobbers gp on mips 5537 * [222]16357 [mipsisa64-elf] ICE copying 7 bytes between extern 5538 char[]s 5539 * [223]16380 [mips64] Use of uninitialised register after dbra 5540 conversion 5541 * [224]16407 [mips64] Unaligned access to local variables 5542 * [225]16643 [mips64] verify_local_live_at_start ICE after 5543 crossjumping & cfgcleanup 5544 5545 ARM-specific 5546 5547 * [226]15927 THUMB -O2: strength-reduced iteration variable ends up 5548 off by 1 5549 * [227]15948 THUMB: ICE with non-commutative cbranch 5550 * [228]17019 THUMB: bad switch statement in md code for 5551 addsi3_cbranch_scratch 5552 5553 IA64-specific 5554 5555 * [229]16130 ICE on valid code: in bundling, in config/ia64/ia64.c 5556 (-mtune=merced) 5557 * [230]16142 ICE on valid code: in bundling, in config/ia64/ia64.c 5558 (-mtune=itanium) 5559 * [231]16278 Gcc failed to build Linux kernel with -mtune=merced 5560 * [232]16414 ICE on valid code: typo in comparison of asm_noperands 5561 result 5562 * [233]16445 ICE on valid code: don't count ignored insns 5563 * [234]16490 ICE (segfault) while compiling with -fprofile-use 5564 * [235]16683 ia64 does not honor SUBTARGET_EXTRA_SPECS 5565 5566 PowerPC-specific 5567 5568 * [236]16195 (ppc64): Miscompilation of GCC 3.3.x by 3.4.x 5569 * [237]16239 ICE on ppc64 (mozilla 1.7 compile, -O1 -fno-exceptions 5570 issue) 5571 5572 SPARC-specific 5573 5574 * [238]16199 ICE while compiling apache 2.0.49 5575 * [239]16416 -m64 doesn't imply -mcpu=v9 anymore 5576 * [240]16430 ICE when returning non-C aggregates larger than 16 bytes 5577 5578 Bugs specific to embedded processors 5579 5580 * [241]16379 [m32r] can't output large model function call of memcpy 5581 * [242]17093 [m32r] ICE with -msdata=use -O0 5582 * [243]17119 [m32r] ICE at switch case 0x8000 5583 5584 DJGPP-specific 5585 5586 * [244]15928 libstdc++ in 3.4.x doesn't cross-compile for djgpp 5587 5588 Alpha Tru64-specific 5589 5590 * [245]16210 libstdc++ gratuitously omits "long long" I/O 5591 5592 Testsuite, documentation issues (compiler is not affected): 5593 5594 * [246]15488 (libstdc++) possibly insufficient file permissions for 5595 executing test suite 5596 * [247]16250 ada/doctools runs makeinfo even in release tarball 5597 __________________________________________________________________ 5598 5599GCC 3.4.3 5600 5601 This is the [248]list of problem reports (PRs) from GCC's bug tracking 5602 system that are known to be fixed in the 3.4.3 release. This list might 5603 not be complete (that is, it is possible that some PRs that have been 5604 fixed are not listed here). 5605 5606 Bootstrap failures 5607 5608 * [249]17369 [ia64] Bootstrap failure with binutils-2.15.90.0.1.1 5609 * [250]17850 [arm-elf] bootstrap failure - libstdc++ uses strtold 5610 when undeclared 5611 5612 Internal compiler errors (ICEs) affecting multiple platforms 5613 5614 * [251]13948 (java) GCJ segmentation fault while compiling GL4Java 5615 .class files 5616 * [252]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c 5617 * [253]16301 (c++) ICE when "strong" attribute is attached to a using 5618 directive 5619 * [254]16566 ICE with flexible arrays 5620 * [255]17023 ICE with nested functions in parameter declaration 5621 * [256]17027 ICE with noreturn function in loop at -O2 5622 * [257]17524 ICE in grokdeclarator, in cp/decl.c 5623 * [258]17826 (c++) ICE in cp_tree_equal 5624 5625 C and optimization bugs 5626 5627 * [259]15526 -ftrapv aborts on 0 * (-1) 5628 * [260]16999 #ident stopped working 5629 * [261]17503 quadratic behaviour in invalid_mode_change_p 5630 * [262]17581 Long long arithmetic fails inside a switch/case 5631 statement when compiled with -O2 5632 * [263]18129 -fwritable-strings doesn't work 5633 5634 C++ compiler and library bugs 5635 5636 * [264]10975 incorrect initial ostringstream::tellp() 5637 * [265]11722 Unbuffered filebuf::sgetn is slow 5638 * [266]14534 Unrecognizing static function as a template parameter 5639 when its return value is also templated 5640 * [267]15172 Copy constructor optimization in aggregate 5641 initialization 5642 * [268]15786 Bad error message for frequently occuring error. 5643 * [269]16162 Rejects valid member-template-definition 5644 * [270]16612 empty basic_strings can't live in shared memory 5645 * [271]16715 std::basic_iostream is instantiated when used, even 5646 though instantiations are already contained in libstdc++ 5647 * [272]16848 code in /ext/demangle.h appears broken 5648 * [273]17132 GCC fails to eliminate function template specialization 5649 when argument deduction fails 5650 * [274]17259 One more _S_leaf incorrectly qualified with _RopeRep:: 5651 in ropeimpl.h 5652 * [275]17327 use of `enumeral_type' in template type unification 5653 * [276]17393 "unused variable '._0'" warning with -Wall 5654 * [277]17501 Confusion with member templates 5655 * [278]17537 g++ not passing -lstdc++ to linker when all command line 5656 arguments are libraries 5657 * [279]17585 usage of unqualified name of static member from within 5658 class not allowed 5659 * [280]17821 Poor diagnostic for using "." instead of "->" 5660 * [281]17829 wrong error: call of overloaded function is ambiguous 5661 * [282]17851 Misleading diagnostic for invalid function declarations 5662 with undeclared types 5663 * [283]17976 Destructor is called twice 5664 * [284]18020 rejects valid definition of enum value in template 5665 * [285]18093 bogus conflict in namespace aliasing 5666 * [286]18140 C++ parser bug when using >> in templates 5667 5668 Fortran 5669 5670 * [287]17541 data statements with double precision constants fail 5671 5672 x86-specific 5673 5674 * [288]17853 -O2 ICE for MMX testcase 5675 5676 SPARC-specific 5677 5678 * [289]17245 ICE compiling gsl-1.5 statistics/lag1.c 5679 5680 Darwin-specific 5681 5682 * [290]17167 FATAL:Symbol L_foo$stub already defined. 5683 5684 AIX-specific 5685 5686 * [291]17277 could not catch an exception when specified -maix64 5687 5688 Solaris-specific 5689 5690 * [292]17505 <cmath> calls acosf(), ceilf(), and other functions 5691 missing from system libraries 5692 5693 HP/UX specific: 5694 5695 * [293]17684 /usr/ccs/bin/ld: Can't create libgcc_s.sl 5696 5697 ARM-specific 5698 5699 * [294]17384 ICE with mode attribute on structures 5700 5701 MIPS-specific 5702 5703 * [295]17770 No NOP after LWL with -mips1 5704 5705 Other embedded target specific 5706 5707 * [296]11476 [arc-elf] gcc ICE on newlib's vfprintf.c 5708 * [297]14064 [avr-elf] -fdata-sections triggers ICE 5709 * [298]14678 [m68hc11-elf] gcc ICE 5710 * [299]15583 [powerpc-rtems] powerpc-rtems lacks __USE_INIT_FINI__ 5711 * [300]15790 [i686-coff] Alignment error building gcc with i686-coff 5712 target 5713 * [301]15886 [SH] Miscompilation with -O2 -fPIC 5714 * [302]16884 [avr-elf] [fweb related] bug while initializing 5715 variables 5716 5717 Bugs relating to debugger support 5718 5719 * [303]13841 missing debug info for _Complex function arguments 5720 * [304]15860 [big-endian targets] No DW_AT_location debug info is 5721 emitted for formal arguments to a function that uses "register" 5722 qualifiers 5723 5724 Testsuite issues (compiler not affected) 5725 5726 * [305]17465 Testsuite in libffi overrides LD_LIBRARY_PATH 5727 * [306]17469 Testsuite in libstdc++ overrides LD_LIBRARY_PATH 5728 * [307]18138 [mips-sgi-irix6.5] libgcc_s.so.1 not found by 64-bit 5729 testsuite 5730 5731 Documentation 5732 5733 * [308]15498 typo in gcc manual: non-existing locale example en_UK, 5734 should be en_GB 5735 * [309]15747 [mips-sgi-irix5.3] /bin/sh hangs during bootstrap: 5736 document broken shell 5737 * [310]16406 USE_LD_AS_NEEDED undocumented 5738 __________________________________________________________________ 5739 5740GCC 3.4.4 5741 5742 This is the [311]list of problem reports (PRs) from GCC's bug tracking 5743 system that are known to be fixed in the 3.4.4 release. This list might 5744 not be complete (that is, it is possible that some PRs that have been 5745 fixed are not listed here). 5746 __________________________________________________________________ 5747 5748GCC 3.4.5 5749 5750 This is the [312]list of problem reports (PRs) from GCC's bug tracking 5751 system that are known to be fixed in the 3.4.5 release. This list might 5752 not be complete (that is, it is possible that some PRs that have been 5753 fixed are not listed here). 5754 5755 Bootstrap issues 5756 5757 * [313]24688 sco_math fixincl breaks math.h 5758 5759 C compiler bugs 5760 5761 * [314]17188 struct Foo { } redefinition 5762 * [315]20187 wrong code for ((unsigned char)(unsigned long 5763 long)((a?a:1)&(a*b)))?0:1) 5764 * [316]21873 infinite warning loop on bad array initializer 5765 * [317]21899 enum definition accepts values to be overriden 5766 * [318]22061 ICE in find_function_data, in function.c 5767 * [319]22308 Failure to diagnose violation of constraint 6.516p2 5768 * [320]22458 ICE on missing brace 5769 * [321]22589 ICE casting to long long 5770 * [322]24101 Segfault with preprocessed source 5771 5772 C++ compiler and library bugs 5773 5774 * [323]10611 operations on vector mode not recognized in C++ 5775 * [324]13377 unexpected behavior of namespace usage directive 5776 * [325]16002 Strange error message with new parser 5777 * [326]17413 local classes as template argument 5778 * [327]17609 spurious error message after using keyword 5779 * [328]17618 ICE in cp_convert_to_pointer, in cp/cvt.c 5780 * [329]18124 ICE with invalid template template parameter 5781 * [330]18155 typedef in template declaration not rejected 5782 * [331]18177 ICE with const_cast for undeclared variable 5783 * [332]18368 C++ error message regression 5784 * [333]16378 ICE when returning a copy of a packed member 5785 * [334]18466 int ::i; accepted 5786 * [335]18512 ICE on invalid usage of template base class 5787 * [336]18454 ICE when returning undefined type 5788 * [337]18738 typename not allowed with non-dependent qualified name 5789 * [338]18803 rejects access to operator() in template 5790 * [339]19004 ICE in uses_template_parms, in cp/pt.c 5791 * [340]19208 Spurious error about variably modified type 5792 * [341]18253 bad error message / ICE for invalid template parameter 5793 * [342]19608 ICE after friend function definition in local class 5794 * [343]19884 ICE on explicit instantiation of a non-template 5795 constructor 5796 * [344]20153 ICE when C++ template function contains anonymous union 5797 * [345]20563 Infinite loop in diagnostic (and ice after error 5798 message) 5799 * [346]20789 ICE with incomplete type in template 5800 * [347]21336 Internal compiler error when using custom new operators 5801 * [348]21768 ICE in error message due to violation of coding 5802 conventions 5803 * [349]21853 constness of pointer to data member ignored 5804 * [350]21903 Default argument of template function causes a 5805 compile-time error 5806 * [351]21983 multiple diagnostics 5807 * [352]21987 New testsuite failure 5808 g++.dg/warn/conversion-function-1.C 5809 * [353]22153 ICE on invalid template specialization 5810 * [354]22172 Internal compiler error, seg fault. 5811 * [355]21286 filebuf::xsgetn vs pipes 5812 * [356]22233 ICE with wrong number of template parameters 5813 * [357]22508 ICE after invalid operator new 5814 * [358]22545 ICE with pointer to class member & user defined 5815 conversion operator 5816 * [359]23528 Wrong default allocator in ext/hash_map 5817 * [360]23550 char_traits requirements/1.cc test bad math 5818 * [361]23586 Bad diagnostic for invalid namespace-name 5819 * [362]23624 ICE in invert_truthvalue, in fold-const.c 5820 * [363]23639 Bad error message: not a member of '<declaration error>' 5821 * [364]23797 ICE on typename outside template 5822 * [365]23965 Bogus error message: no matching function for call to 5823 'foo(<type error>)' 5824 * [366]24052 &#`label_decl' not supported by dump_expr#<expression 5825 error> 5826 * [367]24580 virtual base class cause exception not to be caught 5827 5828 Problems in generated debug information 5829 5830 * [368]24267 Bad DWARF for altivec vectors 5831 5832 Optimizations issues 5833 5834 * [369]17810 ICE in verify_local_live_at_start 5835 * [370]17860 Wrong generated code for loop with varying bound 5836 * [371]21709 ICE on compile-time complex NaN 5837 * [372]21964 broken tail call at -O2 or more 5838 * [373]22167 Strange optimization bug when using -Os 5839 * [374]22619 Compilation failure for real_const_1.f and 5840 real_const_2.f90 5841 * [375]23241 Invalid code generated for comparison of uchar to 255 5842 * [376]23478 Miscompilation due to reloading of a var that is also 5843 used in EH pad 5844 * [377]24470 segmentation fault in cc1plus when compiling with -O 5845 * [378]24950 ICE in operand_subword_force 5846 5847 Precompiled headers problems 5848 5849 * [379]14400 Cannot compile qt-x11-free-3.3.0 5850 * [380]14940 PCH largefile test fails on various platforms 5851 5852 Preprocessor bugs 5853 5854 * [381]20239 ICE on empty preprocessed input 5855 * [382]15220 "gcc -E -MM -MG" reports missing system headers in 5856 source directory 5857 5858 Testsuite issues 5859 5860 * [383]19275 gcc.dg/20020919-1.c fails with -fpic/-fPIC on 5861 i686-pc-linux-gnu 5862 5863 Alpha specific 5864 5865 * [384]21888 bootstrap failure with linker relaxation enabled 5866 5867 ARM specific 5868 5869 * [385]15342 [arm-linux]: ICE in verify_local_live_at_start 5870 * [386]23985 Memory aliasing information incorrect in inlined memcpy 5871 5872 ColdFile specific 5873 5874 * [387]16719 Illegal move of byte into address register causes 5875 compiler to ICE 5876 5877 HPPA specific 5878 5879 * [388]21723 ICE while building libgfortran 5880 * [389]21841 -mhp-ld/-mgnu-ld documentation 5881 5882 IA-64 specific 5883 5884 * [390]23644 IA-64 hardware models and configuration options 5885 documentation error 5886 * [391]24718 Shared libgcc not used for linking by default 5887 5888 M68000 specific 5889 5890 * [392]18421 ICE in reload_cse_simplify_operands, in postreload.c 5891 5892 MIPS specific 5893 5894 * [393]20621 ICE in change_address_1, in emit-rtl.c 5895 5896 PowerPC and PowerPC64 specific 5897 5898 * [394]18583 error on valid code: const 5899 __attribute__((altivec(vector__))) doesn't work in arrays 5900 * [395]20191 ICE in reload_cse_simplify_operands 5901 * [396]22083 AIX: TARGET_C99_FUNCTIONS is wrongly defined 5902 * [397]23070 CALL_V4_CLEAR_FP_ARGS flag not properly set 5903 * [398]23404 gij trashes args of functions with more than 8 fp args 5904 * [399]23539 C & C++ compiler generating misaligned references 5905 regardless of compiler flags 5906 * [400]24102 floatdisf2_internal2 broken 5907 * [401]24465 -mminimal-toc miscompilation of __thread vars 5908 5909 Solaris specific 5910 5911 * [402]19933 Problem with define of HUGE_VAL in math_c99 5912 * [403]21889 Native Solaris assembler cannot grok DTP-relative debug 5913 symbols 5914 5915 SPARC specific 5916 5917 * [404]19300 PCH failures on sparc-linux 5918 * [405]20301 Assembler labels have a leading "-" 5919 * [406]20673 C PCH testsuite assembly comparison failure 5920 5921 x86 and x86_64 specific 5922 5923 * [407]18582 ICE with arrays of type V2DF 5924 * [408]19340 Compilation SEGFAULTs with -O1 -fschedule-insns2 5925 -fsched2-use-traces 5926 * [409]21716 ICE in reg-stack.c's swap_rtx_condition 5927 * [410]24315 amd64 fails -fpeephole2 5928 __________________________________________________________________ 5929 5930GCC 3.4.6 5931 5932 This is the [411]list of problem reports (PRs) from GCC's bug tracking 5933 system that are known to be fixed in the 3.4.6 release. This list might 5934 not be complete (that is, it is possible that some PRs that have been 5935 fixed are not listed here). 5936 5937 5938 For questions related to the use of GCC, please consult these web 5939 pages and the [412]GCC manuals. If that fails, the 5940 [413]gcc-help@gcc.gnu.org mailing list might help. Comments on these 5941 web pages and the development of GCC are welcome on our developer 5942 list at [414]gcc@gcc.gnu.org. All of [415]our lists have public 5943 archives. 5944 5945 Copyright (C) [416]Free Software Foundation, Inc. Verbatim copying and 5946 distribution of this entire article is permitted in any medium, 5947 provided this notice is preserved. 5948 5949 These pages are [417]maintained by the GCC team. Last modified 5950 2012-04-24[418]. 5951 5952References 5953 5954 1. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6 5955 2. http://gcc.gnu.org/gcc-3.4/changes.html#cplusplus 5956 3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems 5957 4. http://gcc.gnu.org/gcc-3.4/changes.html#obsolete_systems 5958 5. http://gcc.gnu.org/gcc-3.4/mips-abi.html 5959 6. http://gcc.gnu.org/gcc-3.4/sparc-abi.html 5960 7. http://www.boost.org/ 5961 8. http://gcc.gnu.org/PR11953 5962 9. http://gcc.gnu.org/PR8361 5963 10. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other%20Builtins 5964 11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#209 5965 12. http://gcc.gnu.org/bugs/#cxx_rvalbind 5966 13. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html 5967 14. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html 5968 15. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html 5969 16. http://www.gnu.org/software/classpath/ 5970 17. http://www.eclipse.org/ 5971 18. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/g77/News.html 5972 19. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Alpha-Built-in-Functions.html 5973 20. http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51A_HTML/ARH9MBTE/DTMNPLTN.HTM#normal-argument-list-structure 5974 21. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html 5975 22. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Comparison-of-the-two-descriptions.html 5976 23. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html 5977 24. http://gcc.gnu.org/gcc-3.4/mips-abi.html 5978 25. http://gcc.gnu.org/gcc-3.4/powerpc-abi.html 5979 26. http://gcc.gnu.org/gcc-3.4/sparc-abi.html 5980 27. http://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 5981 28. http://gcc.gnu.org/PR10129 5982 29. http://gcc.gnu.org/PR14576 5983 30. http://gcc.gnu.org/PR14760 5984 31. http://gcc.gnu.org/PR14671 5985 32. http://gcc.gnu.org/PR15093 5986 33. http://gcc.gnu.org/PR15178 5987 34. http://gcc.gnu.org/PR12753 5988 35. http://gcc.gnu.org/PR13985 5989 36. http://gcc.gnu.org/PR14810 5990 37. http://gcc.gnu.org/PR14883 5991 38. http://gcc.gnu.org/PR15044 5992 39. http://gcc.gnu.org/PR15057 5993 40. http://gcc.gnu.org/PR15064 5994 41. http://gcc.gnu.org/PR15142 5995 42. http://gcc.gnu.org/PR15159 5996 43. http://gcc.gnu.org/PR15165 5997 44. http://gcc.gnu.org/PR15193 5998 45. http://gcc.gnu.org/PR15209 5999 46. http://gcc.gnu.org/PR15227 6000 47. http://gcc.gnu.org/PR15285 6001 48. http://gcc.gnu.org/PR15299 6002 49. http://gcc.gnu.org/PR15329 6003 50. http://gcc.gnu.org/PR15550 6004 51. http://gcc.gnu.org/PR15554 6005 52. http://gcc.gnu.org/PR15640 6006 53. http://gcc.gnu.org/PR15666 6007 54. http://gcc.gnu.org/PR15696 6008 55. http://gcc.gnu.org/PR15701 6009 56. http://gcc.gnu.org/PR15761 6010 57. http://gcc.gnu.org/PR15829 6011 58. http://gcc.gnu.org/PR14538 6012 59. http://gcc.gnu.org/PR12391 6013 60. http://gcc.gnu.org/PR14649 6014 61. http://gcc.gnu.org/PR15004 6015 62. http://gcc.gnu.org/PR15749 6016 63. http://gcc.gnu.org/PR10646 6017 64. http://gcc.gnu.org/PR12077 6018 65. http://gcc.gnu.org/PR13598 6019 66. http://gcc.gnu.org/PR14211 6020 67. http://gcc.gnu.org/PR14220 6021 68. http://gcc.gnu.org/PR14245 6022 69. http://gcc.gnu.org/PR14340 6023 70. http://gcc.gnu.org/PR14600 6024 71. http://gcc.gnu.org/PR14668 6025 72. http://gcc.gnu.org/PR14775 6026 73. http://gcc.gnu.org/PR14821 6027 74. http://gcc.gnu.org/PR14930 6028 75. http://gcc.gnu.org/PR14932 6029 76. http://gcc.gnu.org/PR14950 6030 77. http://gcc.gnu.org/PR14962 6031 78. http://gcc.gnu.org/PR14975 6032 79. http://gcc.gnu.org/PR15002 6033 80. http://gcc.gnu.org/PR15025 6034 81. http://gcc.gnu.org/PR15046 6035 82. http://gcc.gnu.org/PR15069 6036 83. http://gcc.gnu.org/PR15074 6037 84. http://gcc.gnu.org/PR15083 6038 85. http://gcc.gnu.org/PR15096 6039 86. http://gcc.gnu.org/PR15287 6040 87. http://gcc.gnu.org/PR15317 6041 88. http://gcc.gnu.org/PR15337 6042 89. http://gcc.gnu.org/PR15361 6043 90. http://gcc.gnu.org/PR15412 6044 91. http://gcc.gnu.org/PR15427 6045 92. http://gcc.gnu.org/PR15471 6046 93. http://gcc.gnu.org/PR15503 6047 94. http://gcc.gnu.org/PR15507 6048 95. http://gcc.gnu.org/PR15542 6049 96. http://gcc.gnu.org/PR15565 6050 97. http://gcc.gnu.org/PR15625 6051 98. http://gcc.gnu.org/PR15629 6052 99. http://gcc.gnu.org/PR15742 6053 100. http://gcc.gnu.org/PR15775 6054 101. http://gcc.gnu.org/PR15821 6055 102. http://gcc.gnu.org/PR15862 6056 103. http://gcc.gnu.org/PR15875 6057 104. http://gcc.gnu.org/PR15877 6058 105. http://gcc.gnu.org/PR15947 6059 106. http://gcc.gnu.org/PR16020 6060 107. http://gcc.gnu.org/PR16154 6061 108. http://gcc.gnu.org/PR16174 6062 109. http://gcc.gnu.org/PR14315 6063 110. http://gcc.gnu.org/PR15151 6064 111. http://gcc.gnu.org/PR7993 6065 112. http://gcc.gnu.org/PR15228 6066 113. http://gcc.gnu.org/PR15345 6067 114. http://gcc.gnu.org/PR15945 6068 115. http://gcc.gnu.org/PR15526 6069 116. http://gcc.gnu.org/PR14690 6070 117. http://gcc.gnu.org/PR15112 6071 118. http://gcc.gnu.org/PR15067 6072 119. http://gcc.gnu.org/PR1963 6073 120. http://gcc.gnu.org/PR15717 6074 121. http://gcc.gnu.org/PR14782 6075 122. http://gcc.gnu.org/PR14828 6076 123. http://gcc.gnu.org/PR15202 6077 124. http://gcc.gnu.org/PR14610 6078 125. http://gcc.gnu.org/PR14813 6079 126. http://gcc.gnu.org/PR14857 6080 127. http://gcc.gnu.org/PR15598 6081 128. http://gcc.gnu.org/PR15653 6082 129. http://gcc.gnu.org/PR15189 6083 130. http://gcc.gnu.org/PR15331 6084 131. http://gcc.gnu.org/PR16144 6085 132. http://gcc.gnu.org/PR16176 6086 133. http://gcc.gnu.org/PR11591 6087 134. http://gcc.gnu.org/PR12028 6088 135. http://gcc.gnu.org/PR14478 6089 136. http://gcc.gnu.org/PR14567 6090 137. http://gcc.gnu.org/PR14715 6091 138. http://gcc.gnu.org/PR14902 6092 139. http://gcc.gnu.org/PR14924 6093 140. http://gcc.gnu.org/PR14960 6094 141. http://gcc.gnu.org/PR15106 6095 142. http://gcc.gnu.org/PR16026 6096 143. http://gcc.gnu.org/PR15191 6097 144. http://gcc.gnu.org/PR15662 6098 145. http://gcc.gnu.org/PR15054 6099 146. http://gcc.gnu.org/PR15783 6100 147. http://gcc.gnu.org/PR15626 6101 148. http://gcc.gnu.org/PR14326 6102 149. http://gcc.gnu.org/PR14723 6103 150. http://gcc.gnu.org/PR15290 6104 151. http://gcc.gnu.org/PR15250 6105 152. http://gcc.gnu.org/PR15551 6106 153. http://gcc.gnu.org/PR8309 6107 154. http://gcc.gnu.org/PR13250 6108 155. http://gcc.gnu.org/PR13803 6109 156. http://gcc.gnu.org/PR14093 6110 157. http://gcc.gnu.org/PR14457 6111 158. http://gcc.gnu.org/PR14542 6112 159. http://gcc.gnu.org/PR15100 6113 160. http://gcc.gnu.org/PR15296 6114 161. http://gcc.gnu.org/PR15396 6115 162. http://gcc.gnu.org/PR15782 6116 163. http://gcc.gnu.org/PR11610 6117 164. http://gcc.gnu.org/PR15488 6118 165. http://gcc.gnu.org/PR15489 6119 166. http://gcc.gnu.org/PR13928 6120 167. http://gcc.gnu.org/PR14150 6121 168. http://gcc.gnu.org/PR14949 6122 169. http://gcc.gnu.org/PR15123 6123 170. http://gcc.gnu.org/PR16469 6124 171. http://gcc.gnu.org/PR16344 6125 172. http://gcc.gnu.org/PR16842 6126 173. http://gcc.gnu.org/PR12608 6127 174. http://gcc.gnu.org/PR14492 6128 175. http://gcc.gnu.org/PR15461 6129 176. http://gcc.gnu.org/PR15890 6130 177. http://gcc.gnu.org/PR16180 6131 178. http://gcc.gnu.org/PR16224 6132 179. http://gcc.gnu.org/PR16408 6133 180. http://gcc.gnu.org/PR16529 6134 181. http://gcc.gnu.org/PR16698 6135 182. http://gcc.gnu.org/PR16706 6136 183. http://gcc.gnu.org/PR16810 6137 184. http://gcc.gnu.org/PR16851 6138 185. http://gcc.gnu.org/PR16870 6139 186. http://gcc.gnu.org/PR16904 6140 187. http://gcc.gnu.org/PR16905 6141 188. http://gcc.gnu.org/PR16964 6142 189. http://gcc.gnu.org/PR17068 6143 190. http://gcc.gnu.org/PR16366 6144 191. http://gcc.gnu.org/PR15345 6145 192. http://gcc.gnu.org/PR16590 6146 193. http://gcc.gnu.org/PR16693 6147 194. http://gcc.gnu.org/PR17078 6148 195. http://gcc.gnu.org/PR13956 6149 196. http://gcc.gnu.org/PR16684 6150 197. http://gcc.gnu.org/PR12658 6151 198. http://gcc.gnu.org/PR13092 6152 199. http://gcc.gnu.org/PR15320 6153 200. http://gcc.gnu.org/PR16246 6154 201. http://gcc.gnu.org/PR16273 6155 202. http://gcc.gnu.org/PR16401 6156 203. http://gcc.gnu.org/PR16411 6157 204. http://gcc.gnu.org/PR16489 6158 205. http://gcc.gnu.org/PR16618 6159 206. http://gcc.gnu.org/PR16637 6160 207. http://gcc.gnu.org/PR16717 6161 208. http://gcc.gnu.org/PR16813 6162 209. http://gcc.gnu.org/PR16853 6163 210. http://gcc.gnu.org/PR16889 6164 211. http://gcc.gnu.org/PR16959 6165 212. http://gcc.gnu.org/PR7587 6166 213. http://gcc.gnu.org/PR16473 6167 214. http://gcc.gnu.org/PR16478 6168 215. http://gcc.gnu.org/PR10695 6169 216. http://gcc.gnu.org/PR16974 6170 217. http://gcc.gnu.org/PR16298 6171 218. http://gcc.gnu.org/PR17113 6172 219. http://gcc.gnu.org/PR14697 6173 220. http://gcc.gnu.org/PR15869 6174 221. http://gcc.gnu.org/PR16325 6175 222. http://gcc.gnu.org/PR16357 6176 223. http://gcc.gnu.org/PR16380 6177 224. http://gcc.gnu.org/PR16407 6178 225. http://gcc.gnu.org/PR16643 6179 226. http://gcc.gnu.org/PR15927 6180 227. http://gcc.gnu.org/PR15948 6181 228. http://gcc.gnu.org/PR17019 6182 229. http://gcc.gnu.org/PR16130 6183 230. http://gcc.gnu.org/PR16142 6184 231. http://gcc.gnu.org/PR16278 6185 232. http://gcc.gnu.org/PR16414 6186 233. http://gcc.gnu.org/PR16445 6187 234. http://gcc.gnu.org/PR16490 6188 235. http://gcc.gnu.org/PR16683 6189 236. http://gcc.gnu.org/PR16195 6190 237. http://gcc.gnu.org/PR16239 6191 238. http://gcc.gnu.org/PR16199 6192 239. http://gcc.gnu.org/PR16416 6193 240. http://gcc.gnu.org/PR16430 6194 241. http://gcc.gnu.org/PR16379 6195 242. http://gcc.gnu.org/PR17093 6196 243. http://gcc.gnu.org/PR17119 6197 244. http://gcc.gnu.org/PR15928 6198 245. http://gcc.gnu.org/PR16210 6199 246. http://gcc.gnu.org/PR15488 6200 247. http://gcc.gnu.org/PR16250 6201 248. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.3 6202 249. http://gcc.gnu.org/PR17369 6203 250. http://gcc.gnu.org/PR17850 6204 251. http://gcc.gnu.org/PR13948 6205 252. http://gcc.gnu.org/PR14492 6206 253. http://gcc.gnu.org/PR16301 6207 254. http://gcc.gnu.org/PR16566 6208 255. http://gcc.gnu.org/PR17023 6209 256. http://gcc.gnu.org/PR17027 6210 257. http://gcc.gnu.org/PR17524 6211 258. http://gcc.gnu.org/PR17826 6212 259. http://gcc.gnu.org/PR15526 6213 260. http://gcc.gnu.org/PR16999 6214 261. http://gcc.gnu.org/PR17503 6215 262. http://gcc.gnu.org/PR17581 6216 263. http://gcc.gnu.org/PR18129 6217 264. http://gcc.gnu.org/PR10975 6218 265. http://gcc.gnu.org/PR11722 6219 266. http://gcc.gnu.org/PR14534 6220 267. http://gcc.gnu.org/PR15172 6221 268. http://gcc.gnu.org/PR15786 6222 269. http://gcc.gnu.org/PR16162 6223 270. http://gcc.gnu.org/PR16612 6224 271. http://gcc.gnu.org/PR16715 6225 272. http://gcc.gnu.org/PR16848 6226 273. http://gcc.gnu.org/PR17132 6227 274. http://gcc.gnu.org/PR17259 6228 275. http://gcc.gnu.org/PR17327 6229 276. http://gcc.gnu.org/PR17393 6230 277. http://gcc.gnu.org/PR17501 6231 278. http://gcc.gnu.org/PR17537 6232 279. http://gcc.gnu.org/PR17585 6233 280. http://gcc.gnu.org/PR17821 6234 281. http://gcc.gnu.org/PR17829 6235 282. http://gcc.gnu.org/PR17851 6236 283. http://gcc.gnu.org/PR17976 6237 284. http://gcc.gnu.org/PR18020 6238 285. http://gcc.gnu.org/PR18093 6239 286. http://gcc.gnu.org/PR18140 6240 287. http://gcc.gnu.org/PR17541 6241 288. http://gcc.gnu.org/PR17853 6242 289. http://gcc.gnu.org/PR17245 6243 290. http://gcc.gnu.org/PR17167 6244 291. http://gcc.gnu.org/PR17277 6245 292. http://gcc.gnu.org/PR17505 6246 293. http://gcc.gnu.org/PR17684 6247 294. http://gcc.gnu.org/PR17384 6248 295. http://gcc.gnu.org/PR17770 6249 296. http://gcc.gnu.org/PR11476 6250 297. http://gcc.gnu.org/PR14064 6251 298. http://gcc.gnu.org/PR14678 6252 299. http://gcc.gnu.org/PR15583 6253 300. http://gcc.gnu.org/PR15790 6254 301. http://gcc.gnu.org/PR15886 6255 302. http://gcc.gnu.org/PR16884 6256 303. http://gcc.gnu.org/PR13841 6257 304. http://gcc.gnu.org/PR15860 6258 305. http://gcc.gnu.org/PR17465 6259 306. http://gcc.gnu.org/PR17469 6260 307. http://gcc.gnu.org/PR18138 6261 308. http://gcc.gnu.org/PR15498 6262 309. http://gcc.gnu.org/PR15747 6263 310. http://gcc.gnu.org/PR16406 6264 311. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.4 6265 312. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.5 6266 313. http://gcc.gnu.org/PR24688 6267 314. http://gcc.gnu.org/PR17188 6268 315. http://gcc.gnu.org/PR20187 6269 316. http://gcc.gnu.org/PR21873 6270 317. http://gcc.gnu.org/PR21899 6271 318. http://gcc.gnu.org/PR22061 6272 319. http://gcc.gnu.org/PR22208 6273 320. http://gcc.gnu.org/PR22458 6274 321. http://gcc.gnu.org/PR22589 6275 322. http://gcc.gnu.org/PR24101 6276 323. http://gcc.gnu.org/PR10611 6277 324. http://gcc.gnu.org/PR13377 6278 325. http://gcc.gnu.org/PR16002 6279 326. http://gcc.gnu.org/PR17413 6280 327. http://gcc.gnu.org/PR17609 6281 328. http://gcc.gnu.org/PR17618 6282 329. http://gcc.gnu.org/PR18124 6283 330. http://gcc.gnu.org/PR18155 6284 331. http://gcc.gnu.org/PR18177 6285 332. http://gcc.gnu.org/PR18368 6286 333. http://gcc.gnu.org/PR18378 6287 334. http://gcc.gnu.org/PR18466 6288 335. http://gcc.gnu.org/PR18512 6289 336. http://gcc.gnu.org/PR18545 6290 337. http://gcc.gnu.org/PR18738 6291 338. http://gcc.gnu.org/PR18803 6292 339. http://gcc.gnu.org/PR19004 6293 340. http://gcc.gnu.org/PR19208 6294 341. http://gcc.gnu.org/PR19253 6295 342. http://gcc.gnu.org/PR19608 6296 343. http://gcc.gnu.org/PR19884 6297 344. http://gcc.gnu.org/PR20153 6298 345. http://gcc.gnu.org/PR20563 6299 346. http://gcc.gnu.org/PR20789 6300 347. http://gcc.gnu.org/PR21336 6301 348. http://gcc.gnu.org/PR21768 6302 349. http://gcc.gnu.org/PR21853 6303 350. http://gcc.gnu.org/PR21903 6304 351. http://gcc.gnu.org/PR21983 6305 352. http://gcc.gnu.org/PR21987 6306 353. http://gcc.gnu.org/PR22153 6307 354. http://gcc.gnu.org/PR22172 6308 355. http://gcc.gnu.org/PR21286 6309 356. http://gcc.gnu.org/PR22233 6310 357. http://gcc.gnu.org/PR22508 6311 358. http://gcc.gnu.org/PR22545 6312 359. http://gcc.gnu.org/PR23528 6313 360. http://gcc.gnu.org/PR23550 6314 361. http://gcc.gnu.org/PR23586 6315 362. http://gcc.gnu.org/PR23624 6316 363. http://gcc.gnu.org/PR23639 6317 364. http://gcc.gnu.org/PR23797 6318 365. http://gcc.gnu.org/PR23965 6319 366. http://gcc.gnu.org/PR24052 6320 367. http://gcc.gnu.org/PR24580 6321 368. http://gcc.gnu.org/PR24267 6322 369. http://gcc.gnu.org/PR17810 6323 370. http://gcc.gnu.org/PR17860 6324 371. http://gcc/gnu.org/PR21709 6325 372. http://gcc.gnu.org/PR21964 6326 373. http://gcc.gnu.org/PR22167 6327 374. http://gcc.gnu.org/PR22619 6328 375. http://gcc.gnu.org/PR23241 6329 376. http://gcc.gnu.org/PR23478 6330 377. http://gcc.gnu.org/PR24470 6331 378. http://gcc.gnu.org/PR24950 6332 379. http://gcc.gnu.org/PR14400 6333 380. http://gcc.gnu.org/PR14940 6334 381. http://gcc.gnu.org/PR20239 6335 382. http://gcc.gnu.org/PR15220 6336 383. http://gcc.gnu.org/PR19275 6337 384. http://gcc.gnu.org/PR21888 6338 385. http://gcc.gnu.org/PR15342 6339 386. http://gcc.gnu.org/PR23985 6340 387. http://gcc.gnu.org/PR16719 6341 388. http://gcc.gnu.org/PR21723 6342 389. http://gcc.gnu.org/PR21841 6343 390. http://gcc.gnu.org/PR23644 6344 391. http://gcc.gnu.org/PR24718 6345 392. http://gcc.gnu.org/PR18421 6346 393. http://gcc.gnu.org/PR20621 6347 394. http://gcc.gnu.org/PR18583 6348 395. http://gcc.gnu.org/PR20191 6349 396. http://gcc.gnu.org/PR22083 6350 397. http://gcc.gnu.org/PR23070 6351 398. http://gcc.gnu.org/PR23404 6352 399. http://gcc.gnu.org/PR23539 6353 400. http://gcc.gnu.org/PR24102 6354 401. http://gcc.gnu.org/PR24465 6355 402. http://gcc.gnu.org/PR19933 6356 403. http://gcc.gnu.org/PR21889 6357 404. http://gcc.gnu.org/PR19300 6358 405. http://gcc.gnu.org/PR20301 6359 406. http://gcc.gnu.org/PR20673 6360 407. http://gcc.gnu.org/PR18582 6361 408. http://gcc.gnu.org/PR19340 6362 409. http://gcc.gnu.org/PR21716 6363 410. http://gcc.gnu.org/PR24315 6364 411. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.6 6365 412. http://gcc.gnu.org/onlinedocs/ 6366 413. mailto:gcc-help@gcc.gnu.org 6367 414. mailto:gcc@gcc.gnu.org 6368 415. http://gcc.gnu.org/lists.html 6369 416. http://www.fsf.org/ 6370 417. http://gcc.gnu.org/about.html 6371 418. http://validator.w3.org/check/referer 6372====================================================================== 6373http://gcc.gnu.org/gcc-3.3/index.html 6374 6375 GCC 3.3 Release Series 6376 6377 May 03, 2005 6378 6379 The [1]GNU project and the GCC developers are pleased to announce the 6380 release of GCC 3.3.6. 6381 6382 This release is a bug-fix release, containing fixes for regressions in 6383 GCC 3.3.5 relative to previous releases of GCC. 6384 6385 This release is the last of the series 3.3.x. 6386 6387 The GCC 3.3 release series includes numerous [2]new features, 6388 improvements, bug fixes, and other changes, thanks to an [3]amazing 6389 group of volunteers. 6390 6391Release History 6392 6393 GCC 3.3.6 6394 May 3, 2005 ([4]changes) 6395 6396 GCC 3.3.5 6397 September 30, 2004 ([5]changes) 6398 6399 GCC 3.3.4 6400 May 31, 2004 ([6]changes) 6401 6402 GCC 3.3.3 6403 February 14, 2004 ([7]changes) 6404 6405 GCC 3.3.2 6406 October 16, 2003 ([8]changes) 6407 6408 GCC 3.3.1 6409 August 8, 2003 ([9]changes) 6410 6411 GCC 3.3 6412 May 14, 2003 ([10]changes) 6413 6414References and Acknowledgements 6415 6416 GCC used to stand for the GNU C Compiler, but since the compiler 6417 supports several other languages aside from C, it now stands for the 6418 GNU Compiler Collection. 6419 6420 A list of [11]successful builds is updated as new information becomes 6421 available. 6422 6423 The GCC developers would like to thank the numerous people that have 6424 contributed new features, improvements, bug fixes, and other changes as 6425 well as test results to GCC. This [12]amazing group of volunteers is 6426 what makes GCC successful. 6427 6428 For additional information about GCC please refer to the [13]GCC 6429 project web site or contact the [14]GCC development mailing list. 6430 6431 To obtain GCC please use [15]our mirror sites, or our CVS server. 6432 6433 6434 For questions related to the use of GCC, please consult these web 6435 pages and the [16]GCC manuals. If that fails, the 6436 [17]gcc-help@gcc.gnu.org mailing list might help. Comments on these 6437 web pages and the development of GCC are welcome on our developer 6438 list at [18]gcc@gcc.gnu.org. All of [19]our lists have public 6439 archives. 6440 6441 Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and 6442 distribution of this entire article is permitted in any medium, 6443 provided this notice is preserved. 6444 6445 These pages are [21]maintained by the GCC team. Last modified 6446 2011-04-25[22]. 6447 6448References 6449 6450 1. http://www.gnu.org/ 6451 2. http://gcc.gnu.org/gcc-3.3/changes.html 6452 3. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 6453 4. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.6 6454 5. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.5 6455 6. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.4 6456 7. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.3 6457 8. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.2 6458 9. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.1 6459 10. http://gcc.gnu.org/gcc-3.3/changes.html 6460 11. http://gcc.gnu.org/gcc-3.3/buildstat.html 6461 12. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 6462 13. http://gcc.gnu.org/index.html 6463 14. mailto:gcc@gcc.gnu.org 6464 15. http://gcc.gnu.org/mirrors.html 6465 16. http://gcc.gnu.org/onlinedocs/ 6466 17. mailto:gcc-help@gcc.gnu.org 6467 18. mailto:gcc@gcc.gnu.org 6468 19. http://gcc.gnu.org/lists.html 6469 20. http://www.fsf.org/ 6470 21. http://gcc.gnu.org/about.html 6471 22. http://validator.w3.org/check/referer 6472====================================================================== 6473http://gcc.gnu.org/gcc-3.3/changes.html 6474 6475 GCC 3.3 Release Series 6476 Changes, New Features, and Fixes 6477 6478 The latest release in the 3.3 release series is [1]GCC 3.3.6. 6479 6480Caveats 6481 6482 * The preprocessor no longer accepts multi-line string literals. They 6483 were deprecated in 3.0, 3.1, and 3.2. 6484 * The preprocessor no longer supports the -A- switch when appearing 6485 alone. -A- followed by an assertion is still supported. 6486 * Support for all the systems [2]obsoleted in GCC 3.1 has been 6487 removed from GCC 3.3. See below for a [3]list of systems which are 6488 obsoleted in this release. 6489 * Checking for null format arguments has been decoupled from the rest 6490 of the format checking mechanism. Programs which use the format 6491 attribute may regain this functionality by using the new [4]nonnull 6492 function attribute. Note that all functions for which GCC has a 6493 built-in format attribute, an appropriate built-in nonnull 6494 attribute is also applied. 6495 * The DWARF (version 1) debugging format has been deprecated and will 6496 be removed in a future version of GCC. Version 2 of the DWARF 6497 debugging format will continue to be supported for the foreseeable 6498 future. 6499 * The C and Objective-C compilers no longer accept the "Naming Types" 6500 extension (typedef foo = bar); it was already unavailable in C++. 6501 Code which uses it will need to be changed to use the "typeof" 6502 extension instead: typedef typeof(bar) foo. (We have removed this 6503 extension without a period of deprecation because it has caused the 6504 compiler to crash since version 3.0 and no one noticed until very 6505 recently. Thus we conclude it is not in widespread use.) 6506 * The -traditional C compiler option has been removed. It was 6507 deprecated in 3.1 and 3.2. (Traditional preprocessing remains 6508 available.) The <varargs.h> header, used for writing variadic 6509 functions in traditional C, still exists but will produce an error 6510 message if used. 6511 * GCC 3.3.1 automatically places zero-initialized variables in the 6512 .bss section on some operating systems. Versions of GNU Emacs up to 6513 (and including) 21.3 will not work correctly when using this 6514 optimization; you can use -fno-zero-initialized-in-bss to disable 6515 it. 6516 6517General Optimizer Improvements 6518 6519 * A new scheme for accurately describing processor pipelines, the 6520 [5]DFA scheduler, has been added. 6521 * Pavel Nejedly, Charles University Prague, has contributed new file 6522 format used by the edge coverage profiler (-fprofile-arcs). 6523 The new format is robust and diagnoses common mistakes where 6524 profiles from different versions (or compilations) of the program 6525 are combined resulting in nonsensical profiles and slow code to 6526 produced with profile feedback. Additionally this format allows 6527 extra data to be gathered. Currently, overall statistics are 6528 produced helping optimizers to identify hot spots of a program 6529 globally replacing the old intra-procedural scheme and resulting in 6530 better code. Note that the gcov tool from older GCC versions will 6531 not be able to parse the profiles generated by GCC 3.3 and vice 6532 versa. 6533 * Jan Hubicka, SuSE Labs, has contributed a new superblock formation 6534 pass enabled using -ftracer. This pass simplifies the control flow 6535 of functions allowing other optimizations to do better job. 6536 He also contributed the function reordering pass 6537 (-freorder-functions) to optimize function placement using profile 6538 feedback. 6539 6540New Languages and Language specific improvements 6541 6542 C/ObjC/C++ 6543 6544 * The preprocessor now accepts directives within macro arguments. It 6545 processes them just as if they had not been within macro arguments. 6546 * The separate ISO and traditional preprocessors have been completely 6547 removed. The front end handles either type of preprocessed output 6548 if necessary. 6549 * In C99 mode preprocessor arithmetic is done in the precision of the 6550 target's intmax_t, as required by that standard. 6551 * The preprocessor can now copy comments inside macros to the output 6552 file when the macro is expanded. This feature, enabled using the 6553 -CC option, is intended for use by applications which place 6554 metadata or directives inside comments, such as lint. 6555 * The method of constructing the list of directories to be searched 6556 for header files has been revised. If a directory named by a -I 6557 option is a standard system include directory, the option is 6558 ignored to ensure that the default search order for system 6559 directories and the special treatment of system header files are 6560 not defeated. 6561 * A few more [6]ISO C99 features now work correctly. 6562 * A new function attribute, nonnull, has been added which allows 6563 pointer arguments to functions to be specified as requiring a 6564 non-null value. The compiler currently uses this information to 6565 issue a warning when it detects a null value passed in such an 6566 argument slot. 6567 * A new type attribute, may_alias, has been added. Accesses to 6568 objects with types with this attribute are not subjected to 6569 type-based alias analysis, but are instead assumed to be able to 6570 alias any other type of objects, just like the char type. 6571 6572 C++ 6573 6574 * Type based alias analysis has been implemented for C++ aggregate 6575 types. 6576 6577 Objective-C 6578 6579 * Generate an error if Objective-C objects are passed by value in 6580 function and method calls. 6581 * When -Wselector is used, check the whole list of selectors at the 6582 end of compilation, and emit a warning if a @selector() is not 6583 known. 6584 * Define __NEXT_RUNTIME__ when compiling for the NeXT runtime. 6585 * No longer need to include objc/objc-class.h to compile self calls 6586 in class methods (NeXT runtime only). 6587 * New -Wundeclared-selector option. 6588 * Removed selector bloating which was causing object files to be 10% 6589 bigger on average (GNU runtime only). 6590 * Using at run time @protocol() objects has been fixed in certain 6591 situations (GNU runtime only). 6592 * Type checking has been fixed and improved in many situations 6593 involving protocols. 6594 6595 Java 6596 6597 * The java.sql and javax.sql packages now implement the JDBC 3.0 (JDK 6598 1.4) API. 6599 * The JDK 1.4 assert facility has been implemented. 6600 * The bytecode interpreter is now direct threaded and thus faster. 6601 6602 Fortran 6603 6604 * Fortran improvements are listed in [7]the Fortran documentation. 6605 6606 Ada 6607 6608 * Ada tasking now works with glibc 2.3.x threading libraries. 6609 6610New Targets and Target Specific Improvements 6611 6612 * The following changes have been made to the HP-PA port: 6613 + The port now defaults to scheduling for the PA8000 series of 6614 processors. 6615 + Scheduling support for the PA7300 processor has been added. 6616 + The 32-bit port now supports weak symbols under HP-UX 11. 6617 + The handling of initializers and finalizers has been improved 6618 under HP-UX 11. The 64-bit port no longer uses collect2. 6619 + Dwarf2 EH support has been added to the 32-bit GNU/Linux port. 6620 + ABI fixes to correct the passing of small structures by value. 6621 * The SPARC, HP-PA, SH4, and x86/pentium ports have been converted to 6622 use the DFA processor pipeline description. 6623 * The following NetBSD configurations for the SuperH processor family 6624 have been added: 6625 + SH3, big-endian, sh-*-netbsdelf* 6626 + SH3, little-endian, shle-*-netbsdelf* 6627 + SH5, SHmedia, big-endian, 32-bit default, sh5-*-netbsd* 6628 + SH5, SHmedia, little-endian, 32-bit default, sh5le-*-netbsd* 6629 + SH5, SHmedia, big-endian, 64-bit default, sh64-*-netbsd* 6630 + SH5, SHmedia, little-endian, 64-bit default, sh64le-*-netbsd* 6631 * The following changes have been made to the IA-32/x86-64 port: 6632 + SSE2 and 3dNOW! intrinsics are now supported. 6633 + Support for thread local storage has been added to the IA-32 6634 and x86-64 ports. 6635 + The x86-64 port has been significantly improved. 6636 * The following changes have been made to the MIPS port: 6637 + All configurations now accept the -mabi switch. Note that you 6638 will need appropriate multilibs for this option to work 6639 properly. 6640 + ELF configurations will always pass an ABI flag to the 6641 assembler, except when the MIPS EABI is selected. 6642 + -mabi=64 no longer selects MIPS IV code. 6643 + The -mcpu option, which was deprecated in 3.1 and 3.2, has 6644 been removed from this release. 6645 + -march now changes the core ISA level. In previous releases, 6646 it would change the use of processor-specific extensions, but 6647 would leave the core ISA unchanged. For example, mips64-elf 6648 -march=r8000 will now generate MIPS IV code. 6649 + Under most configurations, -mipsN now acts as a synonym for 6650 -march. 6651 + There are some new preprocessor macros to describe the -march 6652 and -mtune settings. See the documentation of those options 6653 for details. 6654 + Support for the NEC VR-Series processors has been added. This 6655 includes the 54xx, 5500, and 41xx series. 6656 + Support for the Sandcraft sr71k processor has been added. 6657 * The following changes have been made to the S/390 port: 6658 + Support to build the Java runtime libraries has been added. 6659 Java is now enabled by default on s390-*-linux* and 6660 s390x-*-linux* targets. 6661 + Multilib support for the s390x-*-linux* target has been added; 6662 this allows to build 31-bit binaries using the -m31 option. 6663 + Support for thread local storage has been added. 6664 + Inline assembler code may now use the 'Q' constraint to 6665 specify memory operands without index register. 6666 + Various platform-specific performance improvements have been 6667 implemented; in particular, the compiler now uses the BRANCH 6668 ON COUNT family of instructions and makes more frequent use of 6669 the TEST UNDER MASK family of instructions. 6670 * The following changes have been made to the PowerPC port: 6671 + Support for IBM Power4 processor added. 6672 + Support for Motorola e500 SPE added. 6673 + Support for AIX 5.2 added. 6674 + Function and Data sections now supported on AIX. 6675 + Sibcall optimizations added. 6676 * The support for H8 Tiny is added to the H8/300 port with -mn. 6677 6678Obsolete Systems 6679 6680 Support for a number of older systems has been declared obsolete in GCC 6681 3.3. Unless there is activity to revive them, the next release of GCC 6682 will have their sources permanently removed. 6683 6684 All configurations of the following processor architectures have been 6685 declared obsolete: 6686 * Matsushita MN10200, mn10200-*-* 6687 * Motorola 88000, m88k-*-* 6688 * IBM ROMP, romp-*-* 6689 6690 Also, some individual systems have been obsoleted: 6691 * Alpha 6692 + Interix, alpha*-*-interix* 6693 + Linux libc1, alpha*-*-linux*libc1* 6694 + Linux ECOFF, alpha*-*-linux*ecoff* 6695 * ARM 6696 + Generic a.out, arm*-*-aout* 6697 + Conix, arm*-*-conix* 6698 + "Old ABI," arm*-*-oabi 6699 + StrongARM/COFF, strongarm-*-coff* 6700 * HPPA (PA-RISC) 6701 + Generic OSF, hppa1.0-*-osf* 6702 + Generic BSD, hppa1.0-*-bsd* 6703 + HP/UX versions 7, 8, and 9, hppa1.[01]-*-hpux[789]* 6704 + HiUX, hppa*-*-hiux* 6705 + Mach Lites, hppa*-*-lites* 6706 * Intel 386 family 6707 + Windows NT 3.x, i?86-*-win32 6708 * MC68000 family 6709 + HP systems, m68000-hp-bsd* and m68k-hp-bsd* 6710 + Sun systems, m68000-sun-sunos*, m68k-sun-sunos*, and 6711 m68k-sun-mach* 6712 + AT&T systems, m68000-att-sysv* 6713 + Atari systems, m68k-atari-sysv* 6714 + Motorola systems, m68k-motorola-sysv* 6715 + NCR systems, m68k-ncr-sysv* 6716 + Plexus systems, m68k-plexus-sysv* 6717 + Commodore systems, m68k-cbm-sysv* 6718 + Citicorp TTI, m68k-tti-* 6719 + Unos, m68k-crds-unos* 6720 + Concurrent RTU, m68k-ccur-rtu* 6721 + Linux a.out, m68k-*-linux*aout* 6722 + Linux libc1, m68k-*-linux*libc1* 6723 + pSOS, m68k-*-psos* 6724 * MIPS 6725 + Generic ECOFF, mips*-*-ecoff* 6726 + SINIX, mips-sni-sysv4 6727 + Orion RTEMS, mips64orion-*-rtems* 6728 * National Semiconductor 32000 6729 + OpenBSD, ns32k-*-openbsd* 6730 * POWER (aka RS/6000) and PowerPC 6731 + AIX versions 1, 2, and 3, rs6000-ibm-aix[123]* 6732 + Bull BOSX, rs6000-bull-bosx 6733 + Generic Mach, rs6000-*-mach* 6734 + Generic SysV, powerpc*-*-sysv* 6735 + Linux libc1, powerpc*-*-linux*libc1* 6736 * Sun SPARC 6737 + Generic a.out, sparc-*-aout*, sparclet-*-aout*, 6738 sparclite-*-aout*, and sparc86x-*-aout* 6739 + NetBSD a.out, sparc-*-netbsd*aout* 6740 + Generic BSD, sparc-*-bsd* 6741 + ChorusOS, sparc-*-chorusos* 6742 + Linux a.out, sparc-*-linux*aout* 6743 + Linux libc1, sparc-*-linux*libc1* 6744 + LynxOS, sparc-*-lynxos* 6745 + Solaris on HAL hardware, sparc-hal-solaris2* 6746 + SunOS versions 3 and 4, sparc-*-sunos[34]* 6747 * NEC V850 6748 + RTEMS, v850-*-rtems* 6749 * VAX 6750 + VMS, vax-*-vms* 6751 6752Documentation improvements 6753 6754Other significant improvements 6755 6756 * Almost all front-end dependencies in the compiler have been 6757 separated out into a set of language hooks. This should make adding 6758 a new front end clearer and easier. 6759 * One effect of removing the separate preprocessor is a small 6760 increase in the robustness of the compiler in general, and the 6761 maintainability of target descriptions. Previously target-specific 6762 built-in macros and others, such as __FAST_MATH__, had to be 6763 handled with so-called specs that were hard to maintain. Often they 6764 would fail to behave properly when conflicting options were 6765 supplied on the command line, and define macros in the user's 6766 namespace even when strict ISO compliance was requested. 6767 Integrating the preprocessor has cleanly solved these issues. 6768 * The Makefile suite now supports redirection of make install by 6769 means of the variable DESTDIR. 6770 __________________________________________________________________ 6771 6772GCC 3.3 6773 6774 Detailed release notes for the GCC 3.3 release follow. 6775 6776 Bug Fixes 6777 6778 bootstrap failures 6779 6780 * [8]10140 cross compiler build failures: missing __mempcpy (DUP: 6781 [9]10198,[10]10338) 6782 6783 Internal compiler errors (multi-platform) 6784 6785 * [11]3581 large string causes segmentation fault in cc1 6786 * [12]4382 __builtin_{set,long}jmp with -O3 can crash the compiler 6787 * [13]5533 (c++) ICE when processing std::accumulate(begin, end, 6788 init, invalid_op) 6789 * [14]6387 -fpic -gdwarf-2 -g1 combination gives ICE in dwarf2out 6790 * [15]6412 (c++) ICE in retrieve_specialization 6791 * [16]6620 (c++) partial template specialization causes an ICE 6792 (segmentation fault) 6793 * [17]6663 (c++) ICE with attribute aligned 6794 * [18]7068 ICE with incomplete types 6795 * [19]7083 (c++) ICE using -gstabs with dodgy class derivation 6796 * [20]7647 (c++) ICE when data member has the name of the enclosing 6797 class 6798 * [21]7675 ICE in fixup_var_refs_1 6799 * [22]7718 'complex' template instantiation causes ICE 6800 * [23]8116 (c++) ICE in member template function 6801 * [24]8358 (ada) Ada compiler accesses freed memory, crashes 6802 * [25]8511 (c++) ICE: (hopefully) reproducible cc1plus segmentation 6803 fault 6804 * [26]8564 (c++) ICE in find_function_data, in function.c 6805 * [27]8660 (c++) template overloading ICE in tsubst_expr, in cp/pt.c 6806 * [28]8766 (c++) ICE after failed initialization of static template 6807 variable 6808 * [29]8803 ICE in instantiate_virtual_regs_1, in function.c 6809 * [30]8846 (c++) ICE after diagnostic if fr_FR@euro locale is set 6810 * [31]8906 (c++) ICE (Segmentation fault) when parsing nested-class 6811 definition 6812 * [32]9216 (c++) ICE on missing template parameter 6813 * [33]9261 (c++) ICE in arg_assoc, in cp/decl2.c 6814 * [34]9263 (fortran) ICE caused by invalid PARAMETER in implied DO 6815 loop 6816 * [35]9429 (c++) ICE in template instantiation with a pointered new 6817 operator 6818 * [36]9516 Internal error when using a big array 6819 * [37]9600 (c++) ICE with typedefs in template class 6820 * [38]9629 (c++) virtual inheritance segfault 6821 * [39]9672 (c++) ICE: Error reporting routines re-entered 6822 * [40]9749 (c++) ICE in write_expression on invalid function 6823 prototype 6824 * [41]9794 (fortran) ICE: floating point exception during constant 6825 folding 6826 * [42]9829 (c++) Missing colon in nested namespace usage causes ICE 6827 * [43]9916 (c++) ICE with noreturn function in ?: statement 6828 * [44]9936 ICE with local function and variable-length 2d array 6829 * [45]10262 (c++) cc1plus crashes with large generated code 6830 * [46]10278 (c++) ICE in parser for invalid code 6831 * [47]10446 (c++) ICE on definition of nonexistent member function of 6832 nested class in a class template 6833 * [48]10451 (c++) ICE in grokdeclarator on spurious mutable 6834 declaration 6835 * [49]10506 (c++) ICE in build_new at cp/init.c with 6836 -fkeep-inline-functions and multiple inheritance 6837 * [50]10549 (c++) ICE in store_bit_field on bitfields that exceed the 6838 precision of the declared type 6839 6840 Optimization bugs 6841 6842 * [51]2001 Inordinately long compile times in reload CSE regs 6843 * [52]2391 Exponential compilation time explosion in combine 6844 * [53]2960 Duplicate loop conditions even with -Os 6845 * [54]4046 redundant conditional branch 6846 * [55]6405 Loop-unrolling related performance regressions 6847 * [56]6798 very long compile time with large case-statement 6848 * [57]6871 const objects shouldn't be moved to .bss 6849 * [58]6909 problem w/ -Os on modified loop-2c.c test case 6850 * [59]7189 gcc -O2 -Wall does not print ``control reaches end of 6851 non-void function'' warning 6852 * [60]7642 optimization problem with signbit() 6853 * [61]8634 incorrect code for inlining of memcpy under -O2 6854 * [62]8750 Cygwin prolog generation erroneously emitting __alloca as 6855 regular function call 6856 6857 C front end 6858 6859 * [63]2161 long if-else cascade overflows parser stack 6860 * [64]4319 short accepted on typedef'd char 6861 * [65]8602 incorrect line numbers in warning messages when using 6862 inline functions 6863 * [66]9177 -fdump-translation-unit: C front end deletes function_decl 6864 AST nodes and breaks debugging dumps 6865 * [67]9853 miscompilation of non-constant structure initializer 6866 6867 c++ compiler and library 6868 6869 * [68]45 legal template specialization code is rejected (DUP: 6870 [69]3784) 6871 * [70]764 lookup failure: friend operator and dereferencing a pointer 6872 and templates (DUP: [71]5116) 6873 * [72]2862 gcc accepts invalid explicit instantiation syntax (DUP: 6874 2863) 6875 * [73]3663 G++ doesn't check access control during template 6876 instantiation 6877 * [74]3797 gcc fails to emit explicit specialization of a template 6878 member 6879 * [75]3948 Two destructors are called when no copy destructor is 6880 defined (ABI change) 6881 * [76]4137 Conversion operator within template is not accepted 6882 * [77]4361 bogus ambiguity taking the address of a member template 6883 * [78]4802 g++ accepts illegal template code (access to private 6884 member; DUP: [79]5837) 6885 * [80]4803 inline function is used but never defined, and g++ does 6886 not object 6887 * [81]5094 Partial specialization cannot be friend? 6888 * [82]5730 complex<double>::norm() -- huge slowdown from egcs-2.91.66 6889 * [83]6713 Regression wrt 3.0.4: g++ -O2 leads to seg fault at run 6890 time 6891 * [84]7015 certain __asm__ constructs rejected 6892 * [85]7086 compile time regression (quadratic behavior in 6893 fixup_var_refs) 6894 * [86]7099 G++ doesn't set the noreturn attribute on std::exit and 6895 std::abort 6896 * [87]7247 copy constructor missing when inlining enabled (invalid 6897 optimization?) 6898 * [88]7441 string array initialization compilation time regression 6899 from seconds to minutes 6900 * [89]7768 __PRETTY_FUNCTION__ for template destructor is wrong 6901 * [90]7804 bad printing of floating point constant in warning message 6902 * [91]8099 Friend classes and template specializations 6903 * [92]8117 member function pointers and multiple inheritance 6904 * [93]8205 using declaration and multiple inheritance 6905 * [94]8645 unnecessary non-zero checks in stl_tree.h 6906 * [95]8724 explicit destructor call for incomplete class allowed 6907 * [96]8805 compile time regression with many member variables 6908 * [97]8691 -O3 and -fno-implicit-templates are incompatible 6909 * [98]8700 unhelpful error message for binding temp to reference 6910 * [99]8724 explicit destructor call for incomplete class allowed 6911 * [100]8949 numeric_limits<>::denorm_min() and is_iec559 problems 6912 * [101]9016 Failure to consistently constant fold "constant" C++ 6913 objects 6914 * [102]9053 g++ confused about ambiguity of overloaded function 6915 templates 6916 * [103]9152 undefined virtual thunks 6917 * [104]9182 basic_filebuf<> does not report errors in codecvt<>::out 6918 * [105]9297 data corruption due to codegen bug (when copying.) 6919 * [106]9318 i/ostream::operator>>/<<(streambuf*) broken 6920 * [107]9320 Incorrect usage of traits_type::int_type in stdio_filebuf 6921 * [108]9400 bogus -Wshadow warning: shadowed declaration of this in 6922 local classes 6923 * [109]9424 i/ostream::operator>>/<<(streambuf*) drops characters 6924 * [110]9425 filebuf::pbackfail broken (DUP: [111]9439) 6925 * [112]9474 GCC freezes in compiling a weird code mixing <iostream> 6926 and <iostream.h> 6927 * [113]9548 Incorrect results from setf(ios::fixed) and precision(-1) 6928 [114][DR 231] 6929 * [115]9555 ostream inserters fail to set badbit on exception 6930 * [116]9561 ostream inserters rethrow exception of wrong type 6931 * [117]9563 ostream::sentry returns true after a failed preparation 6932 * [118]9582 one-definition rule violation in std::allocator 6933 * [119]9622 __PRETTY_FUNCTION__ incorrect in template destructors 6934 * [120]9683 bug in initialization chains for static const variables 6935 from template classes 6936 * [121]9791 -Woverloaded-virtual reports hiding of destructor 6937 * [122]9817 collate::compare doesn't handle nul characters 6938 * [123]9825 filebuf::sputbackc breaks sbumpc 6939 * [124]9826 operator>>(basic_istream, basic_string) fails to compile 6940 with custom traits 6941 * [125]9924 Multiple using statements for builtin functions not 6942 allowed 6943 * [126]9946 destructor is not called for temporary object 6944 * [127]9964 filebuf::close() sometimes fails to close file 6945 * [128]9988 filebuf::overflow writes EOF to file 6946 * [129]10033 optimization breaks polymorphic references w/ typeid 6947 operator 6948 * [130]10097 filebuf::underflow drops characters 6949 * [131]10132 filebuf destructor can throw exceptions 6950 * [132]10180 gcc fails to warn about non-inlined function 6951 * [133]10199 method parametrized by template does not work everywhere 6952 * [134]10300 use of array-new (nothrow) in segfaults on NULL return 6953 * [135]10427 Stack corruption with variable-length automatic arrays 6954 and virtual destructors 6955 * [136]10503 Compilation never stops in fixed_type_or_null 6956 6957 Objective-C 6958 6959 * [137]5956 selectors aren't matched properly when added to the 6960 selector table 6961 6962 Fortran compiler and library 6963 6964 * [138]1832 list directed i/o overflow hangs, -fbounds-check doesn't 6965 detect 6966 * [139]3924 g77 generates code that is rejected by GAS if COFF debug 6967 info requested 6968 * [140]5634 doc: explain that configure --prefix=~/... does not work 6969 * [141]6367 multiple repeat counts confuse namelist read into array 6970 * [142]6491 Logical operations error on logicals when using 6971 -fugly-logint 6972 * [143]6742 Generation of C++ Prototype for FORTRAN and extern "C" 6973 * [144]7113 Failure of g77.f-torture/execute/f90-intrinsic-bit.f -Os 6974 on irix6.5 6975 * [145]7236 OPEN(...,RECL=nnn,...) without ACCESS='DIRECT' should 6976 assume a direct access file 6977 * [146]7278 g77 "bug"; the executable misbehaves (with -O2 6978 -fno-automatic) 6979 * [147]7384 DATE_AND_TIME milliseconds field inactive on Windows 6980 * [148]7388 Incorrect output with 0-based array of characters 6981 * [149]8587 Double complex zero ** double precision number -> NaN 6982 instead of zero 6983 * [150]9038 -ffixed-line-length-none -x f77-cpp-input gives: Warning: 6984 unknown register name line-length-none 6985 * [151]10197 Direct access files not unformatted by default 6986 6987 Java compiler and library 6988 6989 * [152]6005 gcj fails to build rhug on alpha 6990 * [153]6389 System.getProperty("") should always throw an 6991 IllegalArgumentException 6992 * [154]6576 java.util.ResourceBundle.getResource ignores locale 6993 * [155]6652 new java.io.File("").getCanonicalFile() throws exception 6994 * [156]7060 getMethod() doesn't search super interface 6995 * [157]7073 bytecode interpreter gives wrong answer for interface 6996 getSuperclass() 6997 * [158]7180 possible bug in 6998 javax.naming.spi.NamingManager.getPlusPath() 6999 * [159]7416 java.security startup refs "GNU libgcj.security" 7000 * [160]7570 Runtime.exec with null envp: child doesn't inherit parent 7001 env (DUP: [161]7578) 7002 * [162]7611 Internal error while compiling libjava with -O 7003 * [163]7709 NullPointerException in _Jv_ResolvePoolEntry 7004 * [164]7766 ZipInputStream.available returns 0 immediately after 7005 construction 7006 * [165]7785 Calendar.getTimeInMillis/setTimeInMillis should be public 7007 * [166]7786 TimeZone.getDSTSavings() from JDK1.4 not implemented 7008 * [167]8142 '$' in class names vs. dlopen 'dynamic string tokens' 7009 * [168]8234 ZipInputStream chokes when InputStream.read() returns 7010 small chunks 7011 * [169]8415 reflection bug: exception info for Method 7012 * [170]8481 java.Random.nextInt(int) may return negative 7013 * [171]8593 Error reading GZIPped files with BufferedReader 7014 * [172]8759 java.beans.Introspector has no flushCaches() or 7015 flushFromCaches() methods 7016 * [173]8997 spin() calls Thread.sleep 7017 * [174]9253 on win32, java.io.File.listFiles("C:\\") returns pwd 7018 instead of the root content of C: 7019 * [175]9254 java::lang::Object::wait(), threads-win32.cc returns 7020 wrong return codes 7021 * [176]9271 Severe bias in java.security.SecureRandom 7022 7023 Ada compiler and library 7024 7025 * [177]6767 make gnatlib-shared fails on -laddr2line 7026 * [178]9911 gnatmake fails to link when GCC configured with 7027 --with-sjlj-exceptions=yes 7028 * [179]10020 Can't bootstrap gcc on AIX with Ada enabled 7029 * [180]10546 Ada tasking not working on Red Hat 9 7030 7031 preprocessor 7032 7033 * [181]7029 preprocessor should ignore #warning with -M 7034 7035 ARM-specific 7036 7037 * [182]2903 [arm] Optimization bug with long long arithmetic 7038 * [183]7873 arm-linux-gcc fails when assigning address to a bit field 7039 7040 FreeBSD-specific 7041 7042 * [184]7680 float functions undefined in math.h/cmath with #define 7043 _XOPEN_SOURCE 7044 7045 HP-UX or HP-PA-specific 7046 7047 * [185]8705 [HP-PA] ICE in emit_move_insn_1, in expr.c 7048 * [186]9986 [HP-UX] Incorrect transformation of fputs_unlocked to 7049 fputc_unlocked 7050 * [187]10056 [HP-PA] ICE at -O2 when building c++ code from doxygen 7051 7052 m68hc11-specific 7053 7054 * [188]6744 Bad assembler code generated: reference to pseudo 7055 register z 7056 * [189]7361 Internal compiler error in reload_cse_simplify_operands, 7057 in reload1.c 7058 7059 MIPS-specific 7060 7061 * [190]9496 [mips-linux] bug in optimizer? 7062 7063 PowerPC-specific 7064 7065 * [191]7067 -Os with -mcpu=powerpc optimizes for speed (?) instead of 7066 space 7067 * [192]8480 reload ICEs for LAPACK code on powerpc64-linux 7068 * [193]8784 [AIX] Internal compiler error in simplify_gen_subreg 7069 * [194]10315 [powerpc] ICE: in extract_insn, in recog.c 7070 7071 SPARC-specific 7072 7073 * [195]10267 (documentation) Wrong build instructions for 7074 *-*-solaris2* 7075 7076 x86-specific (Intel/AMD) 7077 7078 * [196]7916 ICE in instantiate_virtual_register_1 7079 * [197]7926 (c++) i486 instructions in header files make c++ programs 7080 crash on i386 7081 * [198]8555 ICE in gen_split_1231 7082 * [199]8994 ICE with -O -march=pentium4 7083 * [200]9426 ICE with -fssa -funroll-loops -fprofile-arcs 7084 * [201]9806 ICE in inline assembly with -fPIC flag 7085 * [202]10077 gcc -msse2 generates movd to move dwords between xmm 7086 regs 7087 * [203]10233 64-bit comparison only comparing bottom 32-bits 7088 * [204]10286 type-punning doesn't work with __m64 and -O 7089 * [205]10308 [x86] ICE with -O -fgcse or -O2 7090 __________________________________________________________________ 7091 7092GCC 3.3.1 7093 7094 Bug Fixes 7095 7096 This section lists the problem reports (PRs) from GCC's bug tracking 7097 system that are known to be fixed in the 3.3.1 release. This list might 7098 not be complete (that is, it is possible that some PRs that have been 7099 fixed are not listed here). 7100 7101 Bootstrap failures 7102 7103 * [206]11272 [Solaris] make bootstrap fails while building libstdc++ 7104 7105 Internal compiler errors (multi-platform) 7106 7107 * [207]5754 ICE on invalid nested template class 7108 * [208]6597 ICE in set_mem_alias_set compiling Qt with -O2 on ia64 7109 and --enable-checking 7110 * [209]6949 (c++) ICE in tsubst_decl, in cp/pt.c 7111 * [210]7053 (c++) ICE when declaring a function already defined as a 7112 friend method of a template class 7113 * [211]8164 (c++) ICE when using different const expressions as 7114 template parameter 7115 * [212]8384 (c++) ICE in is_base_type, in dwarf2out.c 7116 * [213]9559 (c++) ICE with invalid initialization of a static const 7117 * [214]9649 (c++) ICE in finish_member_declaration, in cp/semantics.c 7118 when redeclaring a static member variable 7119 * [215]9864 (fortran) ICE in add_abstract_origin_attribute, in 7120 dwarfout.c with -g -O -finline-functions 7121 * [216]10432 (c++) ICE in poplevel, in cp/decl.c 7122 * [217]10475 ICE in subreg_highpart_offset for code with long long 7123 * [218]10635 (c++) ICE when dereferencing an incomplete type casted 7124 from a void pointer 7125 * [219]10661 (c++) ICE in instantiate_decl, in cp/pt.c while 7126 instantiating static member variables 7127 * [220]10700 ICE in copy_to_mode_reg on 64-bit targets 7128 * [221]10712 (c++) ICE in constructor_name_full, in cp/decl2.c 7129 * [222]10796 (c++) ICE when defining an enum with two values: -1 and 7130 MAX_INT_64BIT 7131 * [223]10890 ICE in merge_assigned_reloads building Linux 2.4.2x 7132 sched.c 7133 * [224]10939 (c++) ICE with template code 7134 * [225]10956 (c++) ICE when specializing a template member function 7135 of a template class, in tsubst, in cp/pt.c 7136 * [226]11041 (c++) ICE: const myclass &x = *x; (when operator*() 7137 defined) 7138 * [227]11059 (c++) ICE with empty union 7139 * [228]11083 (c++) ICE in commit_one_edge_insertion, in cfgrtl.c with 7140 -O2 -fnon-call-exceptions 7141 * [229]11105 (c++) ICE in mangle_conv_op_name_for_type 7142 * [230]11149 (c++) ICE on error when instantiation with call function 7143 of a base type 7144 * [231]11228 (c++) ICE on new-expression using array operator new and 7145 default-initialization 7146 * [232]11282 (c++) Infinite memory usage after syntax error 7147 * [233]11301 (fortran) ICE with -fno-globals 7148 * [234]11308 (c++) ICE when using an enum type name as if it were a 7149 class or namespace 7150 * [235]11473 (c++) ICE with -gstabs when empty struct inherits from 7151 an empty struct 7152 * [236]11503 (c++) ICE when instantiating template with ADDR_EXPR 7153 * [237]11513 (c++) ICE in push_template_decl_real, in cp/pt.c: 7154 template member functions 7155 7156 Optimization bugs 7157 7158 * [238]11198 -O2 -frename-registers generates wrong code (aliasing 7159 problem) 7160 * [239]11304 Wrong code production with -fomit-frame-pointer 7161 * [240]11381 volatile memory access optimized away 7162 * [241]11536 [strength-reduce] -O2 optimization produces wrong code 7163 * [242]11557 constant folding bug generates wrong code 7164 7165 C front end 7166 7167 * [243]5897 No warning for statement after return 7168 * [244]11279 DWARF-2 output mishandles large enums 7169 7170 Preprocessor bugs 7171 7172 * [245]11022 no warning for non-compatible macro redefinition 7173 7174 C++ compiler and library 7175 7176 * [246]2330 static_cast<>() to a private base is allowed 7177 * [247]5388 Incorrect message "operands to ?: have different types" 7178 * [248]5390 Libiberty fails to demangle multi-digit template 7179 parameters 7180 * [249]7877 Incorrect parameter passing to specializations of member 7181 function templates 7182 * [250]9393 Anonymous namespaces and compiling the same file twice 7183 * [251]10032 -pedantic converts some errors to warnings 7184 * [252]10468 const typeof(x) is non-const, but only in templates 7185 * [253]10527 confused error message with "new int()" parameter 7186 initializer 7187 * [254]10679 parameter MIN_INLINE_INSNS is not honored 7188 * [255]10682 gcc chokes on a typedef for an enum inside a class 7189 template 7190 * [256]10689 pow(std::complex(0),1/3) returns (nan, nan) instead of 7191 0. 7192 * [257]10845 template member function (with nested template as 7193 parameter) cannot be called anymore if another unrelated template 7194 member function is defined 7195 * [258]10849 Cannot define an out-of-class specialization of a 7196 private nested template class 7197 * [259]10888 Suppress -Winline warnings for system headers 7198 * [260]10929 -Winline warns about functions for which no definition 7199 is visible 7200 * [261]10931 valid conversion static_cast<const unsigned 7201 int&>(lvalue-of-type-int) is rejected 7202 * [262]10940 Bad code with explicit specialization 7203 * [263]10968 If member function implicitly instantiated, explicit 7204 instantiation of class fails to instantiate it 7205 * [264]10990 Cannot convert with dynamic_cast<> to a private base 7206 class from within a member function 7207 * [265]11039 Bad interaction between implicit typename deprecation 7208 and friendship 7209 * [266]11062 (libstdc++) avoid __attribute__ ((unused)); say 7210 "__unused__" instead 7211 * [267]11095 C++ iostream manipulator causes segfault when called 7212 with negative argument 7213 * [268]11098 g++ doesn't emit complete debugging information for 7214 local variables in destructors 7215 * [269]11137 GNU/Linux shared library constructors not called unless 7216 there's one global object 7217 * [270]11154 spurious ambiguity report for template class 7218 specialization 7219 * [271]11329 Compiler cannot find user defined implicit typecast 7220 * [272]11332 Spurious error with casts in ?: expression 7221 * [273]11431 static_cast behavior with subclasses when default 7222 constructor available 7223 * [274]11528 money_get facet does not accept "$.00" as valid 7224 * [275]11546 Type lookup problems in out-of-line definition of a 7225 class doubly nested from a template class 7226 * [276]11567 C++ code containing templated member function with same 7227 name as pure virtual member function results in linking failure 7228 * [277]11645 Failure to deal with using and private inheritance 7229 7230 Java compiler and library 7231 7232 * [278]5179 Qualified static field access doesn't initialize its 7233 class 7234 * [279]8204 gcj -O2 to native reorders certain instructions 7235 improperly 7236 * [280]10838 java.io.ObjectInputStream syntax error 7237 * [281]10886 The RMI registry that comes with GCJ does not work 7238 correctly 7239 * [282]11349 JNDI URL context factories not located correctly 7240 7241 x86-specific (Intel/AMD) 7242 7243 * [283]4823 ICE on inline assembly code 7244 * [284]8878 miscompilation with -O and SSE 7245 * [285]9815 (c++ library) atomicity.h - fails to compile with -O3 7246 -masm=intel 7247 * [286]10402 (inline assembly) [x86] ICE in merge_assigned_reloads, 7248 in reload1.c 7249 * [287]10504 ICE with SSE2 code and -O3 -mcpu=pentium4 -msse2 7250 * [288]10673 ICE for x86-64 on freebsd libc vfprintf.c source 7251 * [289]11044 [x86] out of range loop instructions for FP code on K6 7252 * [290]11089 ICE: instantiate_virtual_regs_lossage while using SSE 7253 built-ins 7254 * [291]11420 [x86_64] gcc generates invalid asm code when "-O -fPIC" 7255 is used 7256 7257 SPARC- or Solaris- specific 7258 7259 * [292]9362 solaris 'as' dies when fed .s and "-gstabs" 7260 * [293]10142 [SPARC64] gcc produces wrong code when passing 7261 structures by value 7262 * [294]10663 New configure check aborts with Sun tools. 7263 * [295]10835 combinatorial explosion in scheduler on HyperSPARC 7264 * [296]10876 ICE in calculate_giv_inc when building KDE 7265 * [297]10955 wrong code at -O3 for structure argument in context of 7266 structure return 7267 * [298]11018 -mcpu=ultrasparc busts tar-1.13.25 7268 * [299]11556 [sparc64] ICE in gen_reg_rtx() while compiling 2.6.x 7269 Linux kernel 7270 7271 ia64 specific 7272 7273 * [300]10907 gcc violates the ia64 ABI (GP must be preserved) 7274 * [301]11320 scheduler bug (in machine depended reorganization pass) 7275 * [302]11599 bug with conditional and __builtin_prefetch 7276 7277 PowerPC specific 7278 7279 * [303]9745 [powerpc] gcc mis-compiles libmcrypt (alias problem 7280 during loop) 7281 * [304]10871 error in rs6000_stack_info save_size computation 7282 * [305]11440 gcc mis-compiles c++ code (libkhtml) with -O2, -fno-gcse 7283 cures it 7284 7285 m68k-specific 7286 7287 * [306]7594 [m68k] ICE on legal code associated with simplify-rtx 7288 * [307]10557 [m68k] ICE in subreg_offset_representable_p 7289 * [308]11054 [m68k] ICE in reg_overlap_mentioned_p 7290 7291 ARM-specific 7292 7293 * [309]10834 [arm] GCC 3.3 still generates incorrect instructions for 7294 functions with __attribute__ ((interrupt ("IRQ"))) 7295 * [310]10842 [arm] Clobbered link register is copied to pc under 7296 certain circumstances 7297 * [311]11052 [arm] noce_process_if_block() can lose REG_INC notes 7298 * [312]11183 [arm] ICE in change_address_1 (3.3) / subreg_hard_regno 7299 (3.4) 7300 7301 MIPS-specific 7302 7303 * [313]11084 ICE in propagate_one_insn, in flow.c 7304 7305 SH-specific 7306 7307 * [314]10331 can't compile c++ part of gcc cross compiler for sh-elf 7308 * [315]10413 [SH] ICE in reload_cse_simplify_operands, in reload1.c 7309 * [316]11096 i686-linux to sh-linux cross compiler fails to compile 7310 C++ files 7311 7312 GNU/Linux (or Hurd?) specific 7313 7314 * [317]2873 Bogus fixinclude of stdio.h from glibc 2.2.3 7315 7316 UnixWare specific 7317 7318 * [318]3163 configure bug: gcc/aclocal.m4 mmap test fails on UnixWare 7319 7.1.1 7320 7321 Cygwin (or mingw) specific 7322 7323 * [319]5287 ICE with dllimport attribute 7324 * [320]10148 [MingW/CygWin] Compiler dumps core 7325 7326 DJGPP specific 7327 7328 * [321]8787 GCC fails to emit .intel_syntax when invoked with 7329 -masm=intel on DJGPP 7330 7331 Darwin (and MacOS X) specific 7332 7333 * [322]10900 trampolines crash 7334 7335 Documentation 7336 7337 * [323]1607 (c++) Format attributes on methods undocumented 7338 * [324]4252 Invalid option `-fdump-translation-unit' 7339 * [325]4490 Clarify restrictions on -m96bit-long-double, 7340 -m128bit-long-double 7341 * [326]10355 document an issue with regparm attribute on some systems 7342 (e.g. Solaris) 7343 * [327]10726 (fortran) Documentation for function "IDate Intrinsic 7344 (Unix)" is wrong 7345 * [328]10805 document bug in old version of Sun assembler 7346 * [329]10815 warn against GNU binutils on AIX 7347 * [330]10877 document need for newer binutils on i?86-*-linux-gnu 7348 * [331]11280 Manual incorrect with respect to -freorder-blocks 7349 * [332]11466 Document -mlittle-endian and its restrictions for the 7350 sparc64 port 7351 7352 Testsuite bugs (compiler itself is not affected) 7353 7354 * [333]10737 newer bison causes g++.dg/parse/crash2.C to incorrectly 7355 report failure 7356 * [334]10810 gcc-3.3 fails make check: buffer overrun in 7357 test_demangle.c 7358 __________________________________________________________________ 7359 7360GCC 3.3.2 7361 7362 Bug Fixes 7363 7364 This section lists the problem reports (PRs) from [335]GCC's bug 7365 tracking system that are known to be fixed in the 3.3.2 release. This 7366 list might not be complete (that is, it is possible that some PRs that 7367 have been fixed are not listed here). 7368 7369 Bootstrap failures and problems 7370 7371 * [336]8336 [SCO5] bootstrap config still tries to use COFF options 7372 * [337]9330 [alpha-osf] Bootstrap failure on Compaq Tru64 with 7373 --enable-threads=posix 7374 * [338]9631 [hppa64-linux] gcc-3.3 fails to bootstrap 7375 * [339]9877 fixincludes makes a bad sys/byteorder.h on svr5 (UnixWare 7376 7.1.1) 7377 * [340]11687 xstormy16-elf build fails in libf2c 7378 * [341]12263 [SGI IRIX] bootstrap fails during compile of 7379 libf2c/libI77/backspace.c 7380 * [342]12490 buffer overflow in scan-decls.c (during Solaris 9 7381 fix-header processing) 7382 7383 Internal compiler errors (multi-platform) 7384 7385 * [343]7277 Casting integers to vector types causes ICE 7386 * [344]7939 (c++) ICE on invalid function template specialization 7387 * [345]11063 (c++) ICE on parsing initialization list of const array 7388 member 7389 * [346]11207 ICE with negative index in array element designator 7390 * [347]11522 (fortran) g77 dwarf-2 ICE in 7391 add_abstract_origin_attribute 7392 * [348]11595 (c++) ICE on duplicate label definition 7393 * [349]11646 (c++) ICE in commit_one_edge_insertion with 7394 -fnon-call-exceptions -fgcse -O 7395 * [350]11665 ICE in struct initializer when taking address 7396 * [351]11852 (c++) ICE with bad struct initializer. 7397 * [352]11878 (c++) ICE in cp_expr_size 7398 * [353]11883 ICE with any -O on mercury-generated C code 7399 * [354]11991 (c++) ICE in cxx_incomplete_type_diagnostic, in 7400 cp/typeck2.c when applying typeid operator to template template 7401 parameter 7402 * [355]12146 ICE in lookup_template_function, in cp/pt.c 7403 * [356]12215 ICE in make_label_edge with -fnon-call-exceptions 7404 -fno-gcse -O2 7405 * [357]12369 (c++) ICE with templates and friends 7406 * [358]12446 ICE in emit_move_insn on complicated array reference 7407 * [359]12510 ICE in final_scan_insn 7408 * [360]12544 ICE with large parameters used in nested functions 7409 7410 C and optimization bugs 7411 7412 * [361]9862 spurious warnings with -W -finline-functions 7413 * [362]10962 lookup_field is a linear search on a linked list (can be 7414 slow if large struct) 7415 * [363]11370 -Wunreachable-code gives false complaints 7416 * [364]11637 invalid assembly with -fnon-call-exceptions 7417 * [365]11885 Problem with bitfields in packed structs 7418 * [366]12082 Inappropriate unreachable code warnings 7419 * [367]12180 Inline optimization fails for variadic function 7420 * [368]12340 loop unroller + gcse produces wrong code 7421 7422 C++ compiler and library 7423 7424 * [369]3907 nested template parameter collides with member name 7425 * [370]5293 confusing message when binding a temporary to a reference 7426 * [371]5296 [DR115] Pointers to functions and to template functions 7427 behave differently in deduction 7428 * [372]7939 ICE on function template specialization 7429 * [373]8656 Unable to assign function with __attribute__ and pointer 7430 return type to an appropriate variable 7431 * [374]10147 Confusing error message for invalid template function 7432 argument 7433 * [375]11400 std::search_n() makes assumptions about Size parameter 7434 * [376]11409 issues with using declarations, overloading, and 7435 built-in functions 7436 * [377]11740 ctype<wchar_t>::do_is(mask, wchar_t) doesn't handle 7437 multiple bits in mask 7438 * [378]11786 operator() call on variable in other namespace not 7439 recognized 7440 * [379]11867 static_cast ignores ambiguity 7441 * [380]11928 bug with conversion operators that are typedefs 7442 * [381]12114 Uninitialized memory accessed in dtor 7443 * [382]12163 static_cast + explicit constructor regression 7444 * [383]12181 Wrong code with comma operator and c++ 7445 * [384]12236 regparm and fastcall messes up parameters 7446 * [385]12266 incorrect instantiation of unneeded template during 7447 overload resolution 7448 * [386]12296 istream::peek() doesn't set eofbit 7449 * [387]12298 [sjlj exceptions] Stack unwind destroys 7450 not-yet-constructed object 7451 * [388]12369 ICE with templates and friends 7452 * [389]12337 apparently infinite loop in g++ 7453 * [390]12344 stdcall attribute ignored if function returns a pointer 7454 * [391]12451 missing(late) class forward declaration in cxxabi.h 7455 * [392]12486 g++ accepts invalid use of a qualified name 7456 7457 x86 specific (Intel/AMD) 7458 7459 * [393]8869 [x86 MMX] ICE with const variable optimization and MMX 7460 builtins 7461 * [394]9786 ICE in fixup_abnormal_edges with -fnon-call-exceptions 7462 -O2 7463 * [395]11689 g++3.3 emits un-assembleable code for k6 architecture 7464 * [396]12116 [k6] Invalid assembly output values with X-MAME code 7465 * [397]12070 ICE converting between double and long double with 7466 -msoft-float 7467 7468 ia64-specific 7469 7470 * [398]11184 [ia64 hpux] ICE on __builtin_apply building libobjc 7471 * [399]11535 __builtin_return_address may not work on ia64 7472 * [400]11693 [ia64] ICE in gen_nop_type 7473 * [401]12224 [ia64] Thread-local storage doesn't work 7474 7475 PowerPC-specific 7476 7477 * [402]11087 [powerpc64-linux] GCC miscompiles raid1.c from linux 7478 kernel 7479 * [403]11319 loop miscompiled on ppc32 7480 * [404]11949 ICE Compiler segfault with ffmpeg -maltivec code 7481 7482 SPARC-specific 7483 7484 * [405]11662 wrong code for expr. with cast to long long and 7485 exclusive or 7486 * [406]11965 invalid assembler code for a shift < 32 operation 7487 * [407]12301 (c++) stack corruption when a returned expression throws 7488 an exception 7489 7490 Alpha-specific 7491 7492 * [408]11717 [alpha-linux] unrecognizable insn compiling for.c of 7493 kernel 2.4.22-pre8 7494 7495 HPUX-specific 7496 7497 * [409]11313 problem with #pragma weak and static inline functions 7498 * [410]11712 __STDC_EXT__ not defined for C++ by default anymore? 7499 7500 Solaris specific 7501 7502 * [411]12166 Profiled programs crash if PROFDIR is set 7503 7504 Solaris-x86 specific 7505 7506 * [412]12101 i386 Solaris no longer works with GNU as? 7507 7508 Miscellaneous embedded target-specific bugs 7509 7510 * [413]10988 [m32r-elf] wrong blockmove code with -O3 7511 * [414]11805 [h8300-unknown-coff] [H8300] ICE for simple code with 7512 -O2 7513 * [415]11902 [sh4] spec file improperly inserts rpath even when none 7514 needed 7515 * [416]11903 [sh4] -pthread fails to link due to error in spec file 7516 on sh4 7517 __________________________________________________________________ 7518 7519GCC 3.3.3 7520 7521 Minor features 7522 7523 In addition to the bug fixes documented below, this release contains 7524 few minor features such as: 7525 * Support for --with-sysroot 7526 * Support for automatic detection of executable stacks 7527 * Support for SSE3 instructions 7528 * Support for thread local storage debugging under GDB on S390 7529 7530 Bug Fixes 7531 7532 This section lists the problem reports (PRs) from [417]GCC's bug 7533 tracking system that are known to be fixed in the 3.3.3 release. This 7534 list might not be complete (that is, it is possible that some PRs that 7535 have been fixed are not listed here). 7536 7537 Bootstrap failures and issues 7538 7539 * [418]11890 Building cross gcc-3.3.1 for sparc-sun-solaris2.6 fails 7540 * [419]12399 boehm-gc fails (when building a cross compiler): libtool 7541 unable to infer tagged configuration 7542 * [420]13068 mklibgcc.in doesn't handle multi-level multilib 7543 subdirectories properly 7544 7545 Internal compiler errors (multi-platform) 7546 7547 * [421]10060 ICE (stack overflow) on huge file (300k lines) due to 7548 recursive behaviour of copy_rtx_if_shared, in emit_rtl.c 7549 * [422]10555 (c++) ICE on undefined template argument 7550 * [423]10706 (c++) ICE in mangle_class_name_for_template 7551 * [424]11496 (fortran) error in flow_loops_find when -funroll-loops 7552 active 7553 * [425]11741 ICE in pre_insert_copy_insn, in gcse.c 7554 * [426]12440 GCC crashes during compilation of quicktime4linux 2.0.0 7555 * [427]12632 (fortran) -fbounds-check ICE 7556 * [428]12712 (c++) ICE on short legit C++ code fragment with gcc 7557 3.3.2 7558 * [429]12726 (c++) ICE (segfault) on trivial code 7559 * [430]12890 (c++) ICE on compilation of class with throwing method 7560 * [431]12900 (c++) ICE in rtl_verify_flow_info_1 7561 * [432]13060 (fortran) ICE in fixup_var_refs_1, in function.c on 7562 correct code with -O2 -fno-force-mem 7563 * [433]13289 (c++) ICE in regenerate_decl_from_template on recursive 7564 template 7565 * [434]13318 ICE: floating point exception in the loop optimizer 7566 * [435]13392 (c++) ICE in convert_from_eh_region_ranges_1, in 7567 except.c 7568 * [436]13574 (c++) invalid array default initializer in class lets 7569 gcc consume all memory and die 7570 * [437]13475 ICE on SIMD variables with partial value initialization 7571 * [438]13797 (c++) ICE on invalid template parameter 7572 * [439]13824 (java) gcj SEGV with simple .java program 7573 7574 C and optimization bugs 7575 7576 * [440]8776 loop invariants are not removed (most likely) 7577 * [441]10339 [sparc,ppc,ppc64] Invalid optimization: replacing 7578 strncmp by memcmp 7579 * [442]11350 undefined labels with -Os -fPIC 7580 * [443]12826 Optimizer removes reference through volatile pointer 7581 * [444]12500 stabs debug info: void no longer a predefined / builtin 7582 type 7583 * [445]12941 builtin-bitops-1.c miscompilation (latent bug) 7584 * [446]12953 tree inliner bug (in inline_forbidden_p) and fix 7585 * [447]13041 linux-2.6/sound/core/oss/rate.c miscompiled 7586 * [448]13507 spurious printf format warning 7587 * [449]13382 Type information for const pointer disappears during 7588 optimization. 7589 * [450]13394 noreturn attribute ignored on recursive invokation 7590 * [451]13400 Compiled code crashes storing to read-only location 7591 * [452]13521 Endless loop in calculate_global_regs_live 7592 7593 C++ compiler and library 7594 7595 Some of the bug fixes in this list were made to implement decisions 7596 that the ISO C++ standards committee has made concerning several defect 7597 reports (DRs). Links in the list below point to detailed discussion of 7598 the relevant defect report. 7599 * [453]2094 unimplemented: use of `ptrmem_cst' in template type 7600 unification 7601 * [454]2294 using declaration confusion 7602 * [455]5050 template instantiation depth exceeds limit: recursion 7603 problem? 7604 * [456]9371 Bad exception handling in 7605 i/ostream::operator>>/<<(streambuf*) 7606 * [457]9546 bad exception handling in ostream members 7607 * [458]10081 basic_ios::_M_cache_locale leaves NULL members in the 7608 face of unknown locales 7609 * [459]10093 [460][DR 61] Setting failbit in exceptions doesn't work 7610 * [461]10095 istream::operator>>(int&) sets ios::badbit when 7611 ios::failbit is set. 7612 * [462]11554 Warning about reordering of initializers doesn't mention 7613 location of constructor 7614 * [463]12297 istream::sentry::sentry() handles eof() incorrectly. 7615 * [464]12352 Exception safety problems in src/localename.cc 7616 * [465]12438 Memory leak in locale::combine() 7617 * [466]12540 Memory leak in locale::locale(const char*) 7618 * [467]12594 DRs [468]60 [TC] and [469]63 [TC] not implemented 7619 * [470]12657 Resolution of [471]DR 292 (WP) still unimplemented 7620 * [472]12696 memory eating infinite loop in diagnostics (error 7621 recovery problem) 7622 * [473]12815 Code compiled with optimization behaves unexpectedly 7623 * [474]12862 Conflicts between typedefs/enums and namespace member 7624 declarations 7625 * [475]12926 Wrong value after assignment in initialize list using 7626 bit-fields 7627 * [476]12967 Resolution of [477]DR 300 [WP] still unimplemented 7628 * [478]12971 Resolution of [479]DR 328 [WP] still unimplemented 7629 * [480]13007 basic_streambuf::pubimbue, imbue wrong 7630 * [481]13009 Implicitly-defined assignment operator writes to wrong 7631 memory 7632 * [482]13057 regparm attribute not applied to destructor 7633 * [483]13070 -Wformat option ignored in g++ 7634 * [484]13081 forward template declarations in <complex> let inlining 7635 fail 7636 * [485]13239 Assertion does not seem to work correctly anymore 7637 * [486]13262 "xxx is private within this context" when initializing a 7638 self-contained template class 7639 * [487]13290 simple typo in concept checking for std::generate_n 7640 * [488]13323 Template code does not compile in presence of typedef 7641 * [489]13369 __verify_grouping (and __add_grouping?) not correct 7642 * [490]13371 infinite loop with packed struct and inlining 7643 * [491]13445 Template argument replacement "dereferences" a typedef 7644 * [492]13461 Fails to access protected-ctor from public constant 7645 * [493]13462 Non-standard-conforming type set::pointer 7646 * [494]13478 gcc uses wrong constructor to initialize a const 7647 reference 7648 * [495]13544 "conflicting types" for enums in different scopes 7649 * [496]13650 string::compare should not (always) use 7650 traits_type::length() 7651 * [497]13683 bogus warning about passing non-PODs through ellipsis 7652 * [498]13688 Derived class is denied access to protected base class 7653 member class 7654 * [499]13774 Member variable cleared in virtual multiple inheritance 7655 class 7656 * [500]13884 Protect sstream.tcc from extern template use 7657 7658 Java compiler and library 7659 7660 * [501]10746 [win32] garbage collection crash in GCJ 7661 7662 Objective-C compiler and library 7663 7664 * [502]11433 Crash due to dereferencing null pointer when querying 7665 protocol 7666 7667 Fortran compiler and library 7668 7669 * [503]12633 logical expression gives incorrect result with 7670 -fugly-logint option 7671 * [504]13037 [gcse-lm] g77 generates incorrect code 7672 * [505]13213 Hex constant problem when compiling with -fugly-logint 7673 and -ftypeless-boz 7674 7675 x86-specific (Intel/AMD) 7676 7677 * [506]4490 ICE with -m128bit-long-double 7678 * [507]12292 [x86_64] ICE: RTL check: expected code `const_int', have 7679 `reg' in make_field_assignment, in combine.c 7680 * [508]12441 ICE: can't find a register to spill 7681 * [509]12943 array static-init failure under -fpic, -fPIC 7682 * [510]13608 Incorrect code with -O3 -ffast-math 7683 7684 PowerPC-specific 7685 7686 * [511]11598 testcase gcc.dg/20020118-1.c fails runtime check of 7687 __attribute__((aligned(16))) 7688 * [512]11793 ICE in extract_insn, in recog.c (const_vector's) 7689 * [513]12467 vmsumubm emitted when vmsummbm appropriate (typo in 7690 altivec.md) 7691 * [514]12537 g++ generates writeable text sections 7692 7693 SPARC-specific 7694 7695 * [515]12496 wrong result for __atomic_add(&value, -1) when using -O0 7696 -m64 7697 * [516]12865 mprotect call to make trampoline executable may fail 7698 * [517]13354 ICE in sparc_emit_set_const32 7699 7700 ARM-specific 7701 7702 * [518]10467 [arm] ICE in pre_insert_copy_insn, 7703 7704 ia64-specific 7705 7706 * [519]11226 ICE passing struct arg with two floats 7707 * [520]11227 ICE for _Complex float, _Complex long double args 7708 * [521]12644 GCC 3.3.2 fails to compile glibc on ia64 7709 * [522]13149 build gcc-3.3.2 1305 error:unrecognizable insn 7710 * Various fixes for libunwind 7711 7712 Alpha-specific 7713 7714 * [523]12654 Incorrect comparison code generated for Alpha 7715 * [524]12965 SEGV+ICE in cc1plus on alpha-linux with -O2 7716 * [525]13031 ICE (unrecognizable insn) when building gnome-libs-1.4.2 7717 7718 HPPA-specific 7719 7720 * [526]11634 [hppa] ICE in verify_local_live_at_start, in flow.c 7721 * [527]12158 [hppa] compilation does not terminate at -O1 7722 7723 S390-specific 7724 7725 * [528]11992 Wrong built-in code for memcmp with length 1<<24: only 7726 (1<<24)-1 possible for CLCL-Instruction 7727 7728 SH-specific 7729 7730 * [529]9365 segfault in gen_far_branch (config/sh/sh.c) 7731 * [530]10392 optimizer generates faulty array indexing 7732 * [531]11322 SH profiler outputs multiple definitions of symbol 7733 * [532]13069 gcc/config/sh/rtems.h broken 7734 * [533]13302 Putting a va_list in a struct causes seg fault 7735 * [534]13585 Incorrect optimization of call to sfunc 7736 * Fix inappropriately exported libgcc functions from the shared 7737 library 7738 7739 Other embedded target specific 7740 7741 * [535]8916 [mcore] unsigned char assign gets hosed. 7742 * [536]11576 [h8300] ICE in change_address_1, in emit-rtl.c 7743 * [537]13122 [h8300] local variable gets corrupted by function call 7744 when -fomit-frame-pointer is given 7745 * [538]13256 [cris] strict_low_part mistreated in delay slots 7746 * [539]13373 [mcore] optimization with -frerun-cse-after-loop 7747 -fexpensive-optimizations produces wrong code on mcore 7748 7749 GNU HURD-specific 7750 7751 * [540]12561 gcc/config/t-gnu needs updating to work with 7752 --with-sysroot 7753 7754 Tru64 Unix specific 7755 7756 * [541]6243 testsuite fails almost all tests due to no libintl in 7757 LD_LIBRARY_PATH during test. 7758 * [542]11397 weak aliases broken on Tru64 UNIX 7759 7760 AIX-specific 7761 7762 * [543]12505 build failure due to defines of uchar in cpphash.h and 7763 sys/types.h 7764 * [544]13150 WEAK symbols not exported by collect2 7765 7766 IRIX-specific 7767 7768 * [545]12666 fixincludes problem on IRIX 6.5.19m 7769 7770 Solaris-specific 7771 7772 * [546]12969 Including sys/byteorder.h breaks configure checks 7773 7774 Testsuite problems (compiler is not affected) 7775 7776 * [547]10819 testsuite creates CR+LF on compiler version lines in 7777 test summary files 7778 * [548]11612 abi_check not finding correct libgcc_s.so.1 7779 7780 Miscellaneous 7781 7782 * [549]13211 using -###, incorrect warnings about unused linker file 7783 are produced 7784 __________________________________________________________________ 7785 7786GCC 3.3.4 7787 7788 This is the [550]list of problem reports (PRs) from GCC's bug tracking 7789 system that are known to be fixed in the 3.3.4 release. This list might 7790 not be complete (that is, it is possible that some PRs that have been 7791 fixed are not listed here). 7792 __________________________________________________________________ 7793 7794GCC 3.3.5 7795 7796 This is the [551]list of problem reports (PRs) from GCC's bug tracking 7797 system that are known to be fixed in the 3.3.5 release. This list might 7798 not be complete (that is, it is possible that some PRs that have been 7799 fixed are not listed here). 7800 __________________________________________________________________ 7801 7802GCC 3.3.6 7803 7804 This is the [552]list of problem reports (PRs) from GCC's bug tracking 7805 system that are known to be fixed in the 3.3.6 release. This list might 7806 not be complete (that is, it is possible that some PRs that have been 7807 fixed are not listed here). 7808 7809 7810 For questions related to the use of GCC, please consult these web 7811 pages and the [553]GCC manuals. If that fails, the 7812 [554]gcc-help@gcc.gnu.org mailing list might help. Comments on these 7813 web pages and the development of GCC are welcome on our developer 7814 list at [555]gcc@gcc.gnu.org. All of [556]our lists have public 7815 archives. 7816 7817 Copyright (C) [557]Free Software Foundation, Inc. Verbatim copying and 7818 distribution of this entire article is permitted in any medium, 7819 provided this notice is preserved. 7820 7821 These pages are [558]maintained by the GCC team. Last modified 7822 2011-10-24[559]. 7823 7824References 7825 7826 1. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.6 7827 2. http://gcc.gnu.org/gcc-3.1/changes.html#obsolete_systems 7828 3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems 7829 4. http://gcc.gnu.org/gcc-3.3/changes.html#nonnull_attribute 7830 5. http://gcc.gnu.org/news/dfa.html 7831 6. http://gcc.gnu.org/gcc-3.3/c99status.html 7832 7. http://gcc.gnu.org/onlinedocs/gcc-3.3.6/g77/News.html 7833 8. http://gcc.gnu.org/PR10140 7834 9. http://gcc.gnu.org/PR10198 7835 10. http://gcc.gnu.org/PR10338 7836 11. http://gcc.gnu.org/PR3581 7837 12. http://gcc.gnu.org/PR4382 7838 13. http://gcc.gnu.org/PR5533 7839 14. http://gcc.gnu.org/PR6387 7840 15. http://gcc.gnu.org/PR6412 7841 16. http://gcc.gnu.org/PR6620 7842 17. http://gcc.gnu.org/PR6663 7843 18. http://gcc.gnu.org/PR7068 7844 19. http://gcc.gnu.org/PR7083 7845 20. http://gcc.gnu.org/PR7647 7846 21. http://gcc.gnu.org/PR7675 7847 22. http://gcc.gnu.org/PR7718 7848 23. http://gcc.gnu.org/PR8116 7849 24. http://gcc.gnu.org/PR8358 7850 25. http://gcc.gnu.org/PR8511 7851 26. http://gcc.gnu.org/PR8564 7852 27. http://gcc.gnu.org/PR8660 7853 28. http://gcc.gnu.org/PR8766 7854 29. http://gcc.gnu.org/PR8803 7855 30. http://gcc.gnu.org/PR8846 7856 31. http://gcc.gnu.org/PR8906 7857 32. http://gcc.gnu.org/PR9216 7858 33. http://gcc.gnu.org/PR9261 7859 34. http://gcc.gnu.org/PR9263 7860 35. http://gcc.gnu.org/PR9429 7861 36. http://gcc.gnu.org/PR9516 7862 37. http://gcc.gnu.org/PR9600 7863 38. http://gcc.gnu.org/PR9629 7864 39. http://gcc.gnu.org/PR9672 7865 40. http://gcc.gnu.org/PR9749 7866 41. http://gcc.gnu.org/PR9794 7867 42. http://gcc.gnu.org/PR9829 7868 43. http://gcc.gnu.org/PR9916 7869 44. http://gcc.gnu.org/PR9936 7870 45. http://gcc.gnu.org/PR10262 7871 46. http://gcc.gnu.org/PR10278 7872 47. http://gcc.gnu.org/PR10446 7873 48. http://gcc.gnu.org/PR10451 7874 49. http://gcc.gnu.org/PR10506 7875 50. http://gcc.gnu.org/PR10549 7876 51. http://gcc.gnu.org/PR2001 7877 52. http://gcc.gnu.org/PR2391 7878 53. http://gcc.gnu.org/PR2960 7879 54. http://gcc.gnu.org/PR4046 7880 55. http://gcc.gnu.org/PR6405 7881 56. http://gcc.gnu.org/PR6798 7882 57. http://gcc.gnu.org/PR6871 7883 58. http://gcc.gnu.org/PR6909 7884 59. http://gcc.gnu.org/PR7189 7885 60. http://gcc.gnu.org/PR7642 7886 61. http://gcc.gnu.org/PR8634 7887 62. http://gcc.gnu.org/PR8750 7888 63. http://gcc.gnu.org/PR2161 7889 64. http://gcc.gnu.org/PR4319 7890 65. http://gcc.gnu.org/PR8602 7891 66. http://gcc.gnu.org/PR9177 7892 67. http://gcc.gnu.org/PR9853 7893 68. http://gcc.gnu.org/PR45 7894 69. http://gcc.gnu.org/PR3784 7895 70. http://gcc.gnu.org/PR764 7896 71. http://gcc.gnu.org/PR5116 7897 72. http://gcc.gnu.org/PR2862 7898 73. http://gcc.gnu.org/PR3663 7899 74. http://gcc.gnu.org/PR3797 7900 75. http://gcc.gnu.org/PR3948 7901 76. http://gcc.gnu.org/PR4137 7902 77. http://gcc.gnu.org/PR4361 7903 78. http://gcc.gnu.org/PR4802 7904 79. http://gcc.gnu.org/PR5837 7905 80. http://gcc.gnu.org/PR4803 7906 81. http://gcc.gnu.org/PR5094 7907 82. http://gcc.gnu.org/PR5730 7908 83. http://gcc.gnu.org/PR6713 7909 84. http://gcc.gnu.org/PR7015 7910 85. http://gcc.gnu.org/PR7086 7911 86. http://gcc.gnu.org/PR7099 7912 87. http://gcc.gnu.org/PR7247 7913 88. http://gcc.gnu.org/PR7441 7914 89. http://gcc.gnu.org/PR7768 7915 90. http://gcc.gnu.org/PR7804 7916 91. http://gcc.gnu.org/PR8099 7917 92. http://gcc.gnu.org/PR8117 7918 93. http://gcc.gnu.org/PR8205 7919 94. http://gcc.gnu.org/PR8645 7920 95. http://gcc.gnu.org/PR8724 7921 96. http://gcc.gnu.org/PR8805 7922 97. http://gcc.gnu.org/PR8691 7923 98. http://gcc.gnu.org/PR8700 7924 99. http://gcc.gnu.org/PR8724 7925 100. http://gcc.gnu.org/PR8949 7926 101. http://gcc.gnu.org/PR9016 7927 102. http://gcc.gnu.org/PR9053 7928 103. http://gcc.gnu.org/PR9152 7929 104. http://gcc.gnu.org/PR9182 7930 105. http://gcc.gnu.org/PR9297 7931 106. http://gcc.gnu.org/PR9318 7932 107. http://gcc.gnu.org/PR9320 7933 108. http://gcc.gnu.org/PR9400 7934 109. http://gcc.gnu.org/PR9424 7935 110. http://gcc.gnu.org/PR9425 7936 111. http://gcc.gnu.org/PR9439 7937 112. http://gcc.gnu.org/PR9474 7938 113. http://gcc.gnu.org/PR9548 7939 114. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#231 7940 115. http://gcc.gnu.org/PR9555 7941 116. http://gcc.gnu.org/PR9561 7942 117. http://gcc.gnu.org/PR9563 7943 118. http://gcc.gnu.org/PR9582 7944 119. http://gcc.gnu.org/PR9622 7945 120. http://gcc.gnu.org/PR9683 7946 121. http://gcc.gnu.org/PR9791 7947 122. http://gcc.gnu.org/PR9817 7948 123. http://gcc.gnu.org/PR9825 7949 124. http://gcc.gnu.org/PR9826 7950 125. http://gcc.gnu.org/PR9924 7951 126. http://gcc.gnu.org/PR9946 7952 127. http://gcc.gnu.org/PR9964 7953 128. http://gcc.gnu.org/PR9988 7954 129. http://gcc.gnu.org/PR10033 7955 130. http://gcc.gnu.org/PR10097 7956 131. http://gcc.gnu.org/PR10132 7957 132. http://gcc.gnu.org/PR10180 7958 133. http://gcc.gnu.org/PR10199 7959 134. http://gcc.gnu.org/PR10300 7960 135. http://gcc.gnu.org/PR10427 7961 136. http://gcc.gnu.org/PR10503 7962 137. http://gcc.gnu.org/PR5956 7963 138. http://gcc.gnu.org/PR1832 7964 139. http://gcc.gnu.org/PR3924 7965 140. http://gcc.gnu.org/PR5634 7966 141. http://gcc.gnu.org/PR6367 7967 142. http://gcc.gnu.org/PR6491 7968 143. http://gcc.gnu.org/PR6742 7969 144. http://gcc.gnu.org/PR7113 7970 145. http://gcc.gnu.org/PR7236 7971 146. http://gcc.gnu.org/PR7278 7972 147. http://gcc.gnu.org/PR7384 7973 148. http://gcc.gnu.org/PR7388 7974 149. http://gcc.gnu.org/PR8587 7975 150. http://gcc.gnu.org/PR9038 7976 151. http://gcc.gnu.org/PR10197 7977 152. http://gcc.gnu.org/PR6005 7978 153. http://gcc.gnu.org/PR6389 7979 154. http://gcc.gnu.org/PR6576 7980 155. http://gcc.gnu.org/PR6652 7981 156. http://gcc.gnu.org/PR7060 7982 157. http://gcc.gnu.org/PR7073 7983 158. http://gcc.gnu.org/PR7180 7984 159. http://gcc.gnu.org/PR7416 7985 160. http://gcc.gnu.org/PR7570 7986 161. http://gcc.gnu.org/PR7578 7987 162. http://gcc.gnu.org/PR7611 7988 163. http://gcc.gnu.org/PR7709 7989 164. http://gcc.gnu.org/PR7766 7990 165. http://gcc.gnu.org/PR7785 7991 166. http://gcc.gnu.org/PR7786 7992 167. http://gcc.gnu.org/PR8142 7993 168. http://gcc.gnu.org/PR8234 7994 169. http://gcc.gnu.org/PR8415 7995 170. http://gcc.gnu.org/PR8481 7996 171. http://gcc.gnu.org/PR8593 7997 172. http://gcc.gnu.org/PR8759 7998 173. http://gcc.gnu.org/PR8997 7999 174. http://gcc.gnu.org/PR9253 8000 175. http://gcc.gnu.org/PR9254 8001 176. http://gcc.gnu.org/PR9271 8002 177. http://gcc.gnu.org/PR6767 8003 178. http://gcc.gnu.org/PR9911 8004 179. http://gcc.gnu.org/PR10020 8005 180. http://gcc.gnu.org/PR10546 8006 181. http://gcc.gnu.org/PR7029 8007 182. http://gcc.gnu.org/PR2903 8008 183. http://gcc.gnu.org/PR7873 8009 184. http://gcc.gnu.org/PR7680 8010 185. http://gcc.gnu.org/PR8705 8011 186. http://gcc.gnu.org/PR9986 8012 187. http://gcc.gnu.org/PR10056 8013 188. http://gcc.gnu.org/PR6744 8014 189. http://gcc.gnu.org/PR7361 8015 190. http://gcc.gnu.org/PR9496 8016 191. http://gcc.gnu.org/PR7067 8017 192. http://gcc.gnu.org/PR8480 8018 193. http://gcc.gnu.org/PR8784 8019 194. http://gcc.gnu.org/PR10315 8020 195. http://gcc.gnu.org/PR10267 8021 196. http://gcc.gnu.org/PR7916 8022 197. http://gcc.gnu.org/PR7926 8023 198. http://gcc.gnu.org/PR8555 8024 199. http://gcc.gnu.org/PR8994 8025 200. http://gcc.gnu.org/PR9426 8026 201. http://gcc.gnu.org/PR9806 8027 202. http://gcc.gnu.org/PR10077 8028 203. http://gcc.gnu.org/PR10233 8029 204. http://gcc.gnu.org/PR10286 8030 205. http://gcc.gnu.org/PR10308 8031 206. http://gcc.gnu.org/PR11272 8032 207. http://gcc.gnu.org/PR5754 8033 208. http://gcc.gnu.org/PR6597 8034 209. http://gcc.gnu.org/PR6949 8035 210. http://gcc.gnu.org/PR7053 8036 211. http://gcc.gnu.org/PR8164 8037 212. http://gcc.gnu.org/PR8384 8038 213. http://gcc.gnu.org/PR9559 8039 214. http://gcc.gnu.org/PR9649 8040 215. http://gcc.gnu.org/PR9864 8041 216. http://gcc.gnu.org/PR10432 8042 217. http://gcc.gnu.org/PR10475 8043 218. http://gcc.gnu.org/PR10635 8044 219. http://gcc.gnu.org/PR10661 8045 220. http://gcc.gnu.org/PR10700 8046 221. http://gcc.gnu.org/PR10712 8047 222. http://gcc.gnu.org/PR10796 8048 223. http://gcc.gnu.org/PR10890 8049 224. http://gcc.gnu.org/PR10939 8050 225. http://gcc.gnu.org/PR10956 8051 226. http://gcc.gnu.org/PR11041 8052 227. http://gcc.gnu.org/PR11059 8053 228. http://gcc.gnu.org/PR11083 8054 229. http://gcc.gnu.org/PR11105 8055 230. http://gcc.gnu.org/PR11149 8056 231. http://gcc.gnu.org/PR11228 8057 232. http://gcc.gnu.org/PR11282 8058 233. http://gcc.gnu.org/PR11301 8059 234. http://gcc.gnu.org/PR11308 8060 235. http://gcc.gnu.org/PR11473 8061 236. http://gcc.gnu.org/PR11503 8062 237. http://gcc.gnu.org/PR11513 8063 238. http://gcc.gnu.org/PR11198 8064 239. http://gcc.gnu.org/PR11304 8065 240. http://gcc.gnu.org/PR11381 8066 241. http://gcc.gnu.org/PR11536 8067 242. http://gcc.gnu.org/PR11557 8068 243. http://gcc.gnu.org/PR5897 8069 244. http://gcc.gnu.org/PR11279 8070 245. http://gcc.gnu.org/PR11022 8071 246. http://gcc.gnu.org/PR2330 8072 247. http://gcc.gnu.org/PR5388 8073 248. http://gcc.gnu.org/PR5390 8074 249. http://gcc.gnu.org/PR7877 8075 250. http://gcc.gnu.org/PR9393 8076 251. http://gcc.gnu.org/PR10032 8077 252. http://gcc.gnu.org/PR10468 8078 253. http://gcc.gnu.org/PR10527 8079 254. http://gcc.gnu.org/PR10679 8080 255. http://gcc.gnu.org/PR10682 8081 256. http://gcc.gnu.org/PR10689 8082 257. http://gcc.gnu.org/PR10845 8083 258. http://gcc.gnu.org/PR10849 8084 259. http://gcc.gnu.org/PR10888 8085 260. http://gcc.gnu.org/PR10929 8086 261. http://gcc.gnu.org/PR10931 8087 262. http://gcc.gnu.org/PR10940 8088 263. http://gcc.gnu.org/PR10968 8089 264. http://gcc.gnu.org/PR10990 8090 265. http://gcc.gnu.org/PR11039 8091 266. http://gcc.gnu.org/PR11062 8092 267. http://gcc.gnu.org/PR11095 8093 268. http://gcc.gnu.org/PR11098 8094 269. http://gcc.gnu.org/PR11137 8095 270. http://gcc.gnu.org/PR11154 8096 271. http://gcc.gnu.org/PR11329 8097 272. http://gcc.gnu.org/PR11332 8098 273. http://gcc.gnu.org/PR11431 8099 274. http://gcc.gnu.org/PR11528 8100 275. http://gcc.gnu.org/PR11546 8101 276. http://gcc.gnu.org/PR11567 8102 277. http://gcc.gnu.org/PR11645 8103 278. http://gcc.gnu.org/PR5179 8104 279. http://gcc.gnu.org/PR8204 8105 280. http://gcc.gnu.org/PR10838 8106 281. http://gcc.gnu.org/PR10886 8107 282. http://gcc.gnu.org/PR11349 8108 283. http://gcc.gnu.org/PR4823 8109 284. http://gcc.gnu.org/PR8878 8110 285. http://gcc.gnu.org/PR9815 8111 286. http://gcc.gnu.org/PR10402 8112 287. http://gcc.gnu.org/PR10504 8113 288. http://gcc.gnu.org/PR10673 8114 289. http://gcc.gnu.org/PR11044 8115 290. http://gcc.gnu.org/PR11089 8116 291. http://gcc.gnu.org/PR11420 8117 292. http://gcc.gnu.org/PR9362 8118 293. http://gcc.gnu.org/PR10142 8119 294. http://gcc.gnu.org/PR10663 8120 295. http://gcc.gnu.org/PR10835 8121 296. http://gcc.gnu.org/PR10876 8122 297. http://gcc.gnu.org/PR10955 8123 298. http://gcc.gnu.org/PR11018 8124 299. http://gcc.gnu.org/PR11556 8125 300. http://gcc.gnu.org/PR10907 8126 301. http://gcc.gnu.org/PR11320 8127 302. http://gcc.gnu.org/PR11599 8128 303. http://gcc.gnu.org/PR9745 8129 304. http://gcc.gnu.org/PR10871 8130 305. http://gcc.gnu.org/PR11440 8131 306. http://gcc.gnu.org/PR7594 8132 307. http://gcc.gnu.org/PR10557 8133 308. http://gcc.gnu.org/PR11054 8134 309. http://gcc.gnu.org/PR10834 8135 310. http://gcc.gnu.org/PR10842 8136 311. http://gcc.gnu.org/PR11052 8137 312. http://gcc.gnu.org/PR11183 8138 313. http://gcc.gnu.org/PR11084 8139 314. http://gcc.gnu.org/PR10331 8140 315. http://gcc.gnu.org/PR10413 8141 316. http://gcc.gnu.org/PR11096 8142 317. http://gcc.gnu.org/PR2873 8143 318. http://gcc.gnu.org/PR3163 8144 319. http://gcc.gnu.org/PR5287 8145 320. http://gcc.gnu.org/PR10148 8146 321. http://gcc.gnu.org/PR8787 8147 322. http://gcc.gnu.org/PR10900 8148 323. http://gcc.gnu.org/PR1607 8149 324. http://gcc.gnu.org/PR4252 8150 325. http://gcc.gnu.org/PR4490 8151 326. http://gcc.gnu.org/PR10355 8152 327. http://gcc.gnu.org/PR10726 8153 328. http://gcc.gnu.org/PR10805 8154 329. http://gcc.gnu.org/PR10815 8155 330. http://gcc.gnu.org/PR10877 8156 331. http://gcc.gnu.org/PR11280 8157 332. http://gcc.gnu.org/PR11466 8158 333. http://gcc.gnu.org/PR10737 8159 334. http://gcc.gnu.org/PR10810 8160 335. http://gcc.gnu.org/bugzilla/ 8161 336. http://gcc.gnu.org/PR8336 8162 337. http://gcc.gnu.org/PR9330 8163 338. http://gcc.gnu.org/PR9631 8164 339. http://gcc.gnu.org/PR9877 8165 340. http://gcc.gnu.org/PR11687 8166 341. http://gcc.gnu.org/PR12263 8167 342. http://gcc.gnu.org/PR12490 8168 343. http://gcc.gnu.org/PR7277 8169 344. http://gcc.gnu.org/PR7939 8170 345. http://gcc.gnu.org/PR11063 8171 346. http://gcc.gnu.org/PR11207 8172 347. http://gcc.gnu.org/PR11522 8173 348. http://gcc.gnu.org/PR11595 8174 349. http://gcc.gnu.org/PR11646 8175 350. http://gcc.gnu.org/PR11665 8176 351. http://gcc.gnu.org/PR11852 8177 352. http://gcc.gnu.org/PR11878 8178 353. http://gcc.gnu.org/PR11883 8179 354. http://gcc.gnu.org/PR11991 8180 355. http://gcc.gnu.org/PR12146 8181 356. http://gcc.gnu.org/PR12215 8182 357. http://gcc.gnu.org/PR12369 8183 358. http://gcc.gnu.org/PR12446 8184 359. http://gcc.gnu.org/PR12510 8185 360. http://gcc.gnu.org/PR12544 8186 361. http://gcc.gnu.org/PR9862 8187 362. http://gcc.gnu.org/PR10962 8188 363. http://gcc.gnu.org/PR11370 8189 364. http://gcc.gnu.org/PR11637 8190 365. http://gcc.gnu.org/PR11885 8191 366. http://gcc.gnu.org/PR12082 8192 367. http://gcc.gnu.org/PR12180 8193 368. http://gcc.gnu.org/PR12340 8194 369. http://gcc.gnu.org/PR3907 8195 370. http://gcc.gnu.org/PR5293 8196 371. http://gcc.gnu.org/PR5296 8197 372. http://gcc.gnu.org/PR7939 8198 373. http://gcc.gnu.org/PR8656 8199 374. http://gcc.gnu.org/PR10147 8200 375. http://gcc.gnu.org/PR11400 8201 376. http://gcc.gnu.org/PR11409 8202 377. http://gcc.gnu.org/PR11740 8203 378. http://gcc.gnu.org/PR11786 8204 379. http://gcc.gnu.org/PR11867 8205 380. http://gcc.gnu.org/PR11928 8206 381. http://gcc.gnu.org/PR12114 8207 382. http://gcc.gnu.org/PR12163 8208 383. http://gcc.gnu.org/PR12181 8209 384. http://gcc.gnu.org/PR12236 8210 385. http://gcc.gnu.org/PR12266 8211 386. http://gcc.gnu.org/PR12296 8212 387. http://gcc.gnu.org/PR12298 8213 388. http://gcc.gnu.org/PR12369 8214 389. http://gcc.gnu.org/PR12337 8215 390. http://gcc.gnu.org/PR12344 8216 391. http://gcc.gnu.org/PR12451 8217 392. http://gcc.gnu.org/PR12486 8218 393. http://gcc.gnu.org/PR8869 8219 394. http://gcc.gnu.org/PR9786 8220 395. http://gcc.gnu.org/PR11689 8221 396. http://gcc.gnu.org/PR12116 8222 397. http://gcc.gnu.org/PR12070 8223 398. http://gcc.gnu.org/PR11184 8224 399. http://gcc.gnu.org/PR11535 8225 400. http://gcc.gnu.org/PR11693 8226 401. http://gcc.gnu.org/PR12224 8227 402. http://gcc.gnu.org/PR11087 8228 403. http://gcc.gnu.org/PR11319 8229 404. http://gcc.gnu.org/PR11949 8230 405. http://gcc.gnu.org/PR11662 8231 406. http://gcc.gnu.org/PR11965 8232 407. http://gcc.gnu.org/PR12301 8233 408. http://gcc.gnu.org/PR11717 8234 409. http://gcc.gnu.org/PR11313 8235 410. http://gcc.gnu.org/PR11712 8236 411. http://gcc.gnu.org/PR12166 8237 412. http://gcc.gnu.org/PR12101 8238 413. http://gcc.gnu.org/PR10988 8239 414. http://gcc.gnu.org/PR11805 8240 415. http://gcc.gnu.org/PR11902 8241 416. http://gcc.gnu.org/PR11903 8242 417. http://gcc.gnu.org/bugzilla/ 8243 418. http://gcc.gnu.org/PR11890 8244 419. http://gcc.gnu.org/PR12399 8245 420. http://gcc.gnu.org/PR13068 8246 421. http://gcc.gnu.org/PR10060 8247 422. http://gcc.gnu.org/PR10555 8248 423. http://gcc.gnu.org/PR10706 8249 424. http://gcc.gnu.org/PR11496 8250 425. http://gcc.gnu.org/PR11741 8251 426. http://gcc.gnu.org/PR12440 8252 427. http://gcc.gnu.org/PR12632 8253 428. http://gcc.gnu.org/PR12712 8254 429. http://gcc.gnu.org/PR12726 8255 430. http://gcc.gnu.org/PR12890 8256 431. http://gcc.gnu.org/PR12900 8257 432. http://gcc.gnu.org/PR13060 8258 433. http://gcc.gnu.org/PR13289 8259 434. http://gcc.gnu.org/PR13318 8260 435. http://gcc.gnu.org/PR13392 8261 436. http://gcc.gnu.org/PR13574 8262 437. http://gcc.gnu.org/PR13475 8263 438. http://gcc.gnu.org/PR13797 8264 439. http://gcc.gnu.org/PR13824 8265 440. http://gcc.gnu.org/PR8776 8266 441. http://gcc.gnu.org/PR10339 8267 442. http://gcc.gnu.org/PR11350 8268 443. http://gcc.gnu.org/PR12826 8269 444. http://gcc.gnu.org/PR12500 8270 445. http://gcc.gnu.org/PR12941 8271 446. http://gcc.gnu.org/PR12953 8272 447. http://gcc.gnu.org/PR13041 8273 448. http://gcc.gnu.org/PR13507 8274 449. http://gcc.gnu.org/PR13382 8275 450. http://gcc.gnu.org/PR13394 8276 451. http://gcc.gnu.org/PR13400 8277 452. http://gcc.gnu.org/PR13521 8278 453. http://gcc.gnu.org/PR2094 8279 454. http://gcc.gnu.org/PR2294 8280 455. http://gcc.gnu.org/PR5050 8281 456. http://gcc.gnu.org/PR9371 8282 457. http://gcc.gnu.org/PR9546 8283 458. http://gcc.gnu.org/PR10081 8284 459. http://gcc.gnu.org/PR10093 8285 460. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#61 8286 461. http://gcc.gnu.org/PR10095 8287 462. http://gcc.gnu.org/PR11554 8288 463. http://gcc.gnu.org/PR12297 8289 464. http://gcc.gnu.org/PR12352 8290 465. http://gcc.gnu.org/PR12438 8291 466. http://gcc.gnu.org/PR12540 8292 467. http://gcc.gnu.org/PR12594 8293 468. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#60 8294 469. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#63 8295 470. http://gcc.gnu.org/PR12657 8296 471. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#292 8297 472. http://gcc.gnu.org/PR12696 8298 473. http://gcc.gnu.org/PR12815 8299 474. http://gcc.gnu.org/PR12862 8300 475. http://gcc.gnu.org/PR12926 8301 476. http://gcc.gnu.org/PR12967 8302 477. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html 8303 478. http://gcc.gnu.org/PR12971 8304 479. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#328 8305 480. http://gcc.gnu.org/PR13007 8306 481. http://gcc.gnu.org/PR13009 8307 482. http://gcc.gnu.org/PR13057 8308 483. http://gcc.gnu.org/PR13070 8309 484. http://gcc.gnu.org/PR13081 8310 485. http://gcc.gnu.org/PR13239 8311 486. http://gcc.gnu.org/PR13262 8312 487. http://gcc.gnu.org/PR13290 8313 488. http://gcc.gnu.org/PR13323 8314 489. http://gcc.gnu.org/PR13369 8315 490. http://gcc.gnu.org/PR13371 8316 491. http://gcc.gnu.org/PR13445 8317 492. http://gcc.gnu.org/PR13461 8318 493. http://gcc.gnu.org/PR13462 8319 494. http://gcc.gnu.org/PR13478 8320 495. http://gcc.gnu.org/PR13544 8321 496. http://gcc.gnu.org/PR13650 8322 497. http://gcc.gnu.org/PR13683 8323 498. http://gcc.gnu.org/PR13688 8324 499. http://gcc.gnu.org/PR13774 8325 500. http://gcc.gnu.org/PR13884 8326 501. http://gcc.gnu.org/PR10746 8327 502. http://gcc.gnu.org/PR11433 8328 503. http://gcc.gnu.org/PR12633 8329 504. http://gcc.gnu.org/PR13037 8330 505. http://gcc.gnu.org/PR13213 8331 506. http://gcc.gnu.org/PR4490 8332 507. http://gcc.gnu.org/PR12292 8333 508. http://gcc.gnu.org/PR12441 8334 509. http://gcc.gnu.org/PR12943 8335 510. http://gcc.gnu.org/PR13608 8336 511. http://gcc.gnu.org/PR11598 8337 512. http://gcc.gnu.org/PR11793 8338 513. http://gcc.gnu.org/PR12467 8339 514. http://gcc.gnu.org/PR12537 8340 515. http://gcc.gnu.org/PR12496 8341 516. http://gcc.gnu.org/PR12865 8342 517. http://gcc.gnu.org/PR13354 8343 518. http://gcc.gnu.org/PR10467 8344 519. http://gcc.gnu.org/PR11226 8345 520. http://gcc.gnu.org/PR11227 8346 521. http://gcc.gnu.org/PR12644 8347 522. http://gcc.gnu.org/PR13149 8348 523. http://gcc.gnu.org/PR12654 8349 524. http://gcc.gnu.org/PR12965 8350 525. http://gcc.gnu.org/PR13031 8351 526. http://gcc.gnu.org/PR11634 8352 527. http://gcc.gnu.org/PR12158 8353 528. http://gcc.gnu.org/PR11992 8354 529. http://gcc.gnu.org/PR9365 8355 530. http://gcc.gnu.org/PR10392 8356 531. http://gcc.gnu.org/PR11322 8357 532. http://gcc.gnu.org/PR13069 8358 533. http://gcc.gnu.org/PR13302 8359 534. http://gcc.gnu.org/PR13585 8360 535. http://gcc.gnu.org/PR8916 8361 536. http://gcc.gnu.org/PR11576 8362 537. http://gcc.gnu.org/PR13122 8363 538. http://gcc.gnu.org/PR13256 8364 539. http://gcc.gnu.org/PR13373 8365 540. http://gcc.gnu.org/PR12561 8366 541. http://gcc.gnu.org/PR6243 8367 542. http://gcc.gnu.org/PR11397 8368 543. http://gcc.gnu.org/PR12505 8369 544. http://gcc.gnu.org/PR13150 8370 545. http://gcc.gnu.org/PR12666 8371 546. http://gcc.gnu.org/PR12969 8372 547. http://gcc.gnu.org/PR10819 8373 548. http://gcc.gnu.org/PR11612 8374 549. http://gcc.gnu.org/PR13211 8375 550. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.4 8376 551. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.5 8377 552. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.6 8378 553. http://gcc.gnu.org/onlinedocs/ 8379 554. mailto:gcc-help@gcc.gnu.org 8380 555. mailto:gcc@gcc.gnu.org 8381 556. http://gcc.gnu.org/lists.html 8382 557. http://www.fsf.org/ 8383 558. http://gcc.gnu.org/about.html 8384 559. http://validator.w3.org/check/referer 8385====================================================================== 8386http://gcc.gnu.org/gcc-3.2/index.html 8387 8388 GCC 3.2 Release Series 8389 8390 April 25, 2003 8391 8392 The [1]GNU project and the GCC developers are pleased to announce the 8393 release of GCC 3.2.3. 8394 8395 The purpose of the GCC 3.2 release series is to provide a stable 8396 platform for OS distributors to use building their next releases. A 8397 primary objective was to stabilize the C++ ABI; we believe that the 8398 interface to the compiler and the C++ standard library are now 8399 relatively stable. 8400 8401 Be aware that C++ code compiled by GCC 3.2.x will (in general) not 8402 interoperate with code compiled by GCC 3.1.1 or earlier. 8403 8404 Please refer to our [2]detailed list of news, caveats, and bug-fixes 8405 for further information. 8406 8407Release History 8408 8409 GCC 3.2.3 8410 April 25, 2003 ([3]changes) 8411 8412 GCC 3.2.2 8413 February 5, 2003 ([4]changes) 8414 8415 GCC 3.2.1 8416 November 19, 2002 ([5]changes) 8417 8418 GCC 3.2 8419 August 14, 2002 ([6]changes) 8420 8421References and Acknowledgements 8422 8423 GCC used to stand for the GNU C Compiler, but since the compiler 8424 supports several other languages aside from C, it now stands for the 8425 GNU Compiler Collection. 8426 8427 A list of [7]successful builds is updated as new information becomes 8428 available. 8429 8430 The GCC developers would like to thank the numerous people that have 8431 contributed new features, improvements, bug fixes, and other changes as 8432 well as test results to GCC. This [8]amazing group of volunteers is 8433 what makes GCC successful. 8434 8435 For additional information about GCC please refer to the [9]GCC project 8436 web site or contact the [10]GCC development mailing list. 8437 8438 To obtain GCC please use [11]our mirror sites, or our CVS server. 8439 8440 8441 For questions related to the use of GCC, please consult these web 8442 pages and the [12]GCC manuals. If that fails, the 8443 [13]gcc-help@gcc.gnu.org mailing list might help. Comments on these 8444 web pages and the development of GCC are welcome on our developer 8445 list at [14]gcc@gcc.gnu.org. All of [15]our lists have public 8446 archives. 8447 8448 Copyright (C) [16]Free Software Foundation, Inc. Verbatim copying and 8449 distribution of this entire article is permitted in any medium, 8450 provided this notice is preserved. 8451 8452 These pages are [17]maintained by the GCC team. Last modified 8453 2011-04-25[18]. 8454 8455References 8456 8457 1. http://www.gnu.org/ 8458 2. http://gcc.gnu.org/gcc-3.2/changes.html 8459 3. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3 8460 4. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.2 8461 5. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.1 8462 6. http://gcc.gnu.org/gcc-3.2/changes.html#3.2 8463 7. http://gcc.gnu.org/gcc-3.2/buildstat.html 8464 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 8465 9. http://gcc.gnu.org/index.html 8466 10. mailto:gcc@gcc.gnu.org 8467 11. http://gcc.gnu.org/mirrors.html 8468 12. http://gcc.gnu.org/onlinedocs/ 8469 13. mailto:gcc-help@gcc.gnu.org 8470 14. mailto:gcc@gcc.gnu.org 8471 15. http://gcc.gnu.org/lists.html 8472 16. http://www.fsf.org/ 8473 17. http://gcc.gnu.org/about.html 8474 18. http://validator.w3.org/check/referer 8475====================================================================== 8476http://gcc.gnu.org/gcc-3.2/changes.html 8477 8478 GCC 3.2 Release Series 8479 Changes, New Features, and Fixes 8480 8481 The latest release in the 3.2 release series is [1]GCC 3.2.3. 8482 8483Caveats and New Features 8484 8485 Caveats 8486 8487 * The C++ compiler does not correctly zero-initialize 8488 pointers-to-data members. You must explicitly initialize them. For 8489 example: int S::*m(0); will work, but depending on 8490 default-initialization to zero will not work. This bug cannot be 8491 fixed in GCC 3.2 without inducing unacceptable risks. It will be 8492 fixed in GCC 3.3. 8493 * This GCC release is based on the GCC 3.1 sourcebase, and thus has 8494 all the [2]changes in the GCC 3.1 series. In addition, GCC 3.2 has 8495 a number of C++ ABI fixes which make its C++ compiler generate 8496 binary code which is incompatible with the C++ compilers found in 8497 earlier GCC releases, including GCC 3.1 and GCC 3.1.1. 8498 8499 Frontend Enhancements 8500 8501 C/C++/Objective-C 8502 8503 * The method of constructing the list of directories to be searched 8504 for header files has been revised. If a directory named by a -I 8505 option is a standard system include directory, the option is 8506 ignored to ensure that the default search order for system 8507 directories and the special treatment of system header files are 8508 not defeated. 8509 * The C and Objective-C compilers no longer accept the "Naming Types" 8510 extension (typedef foo = bar); it was already unavailable in C++. 8511 Code which uses it will need to be changed to use the "typeof" 8512 extension instead: typedef typeof(bar) foo. (We have removed this 8513 extension without a period of deprecation because it has caused the 8514 compiler to crash since version 3.0 and no one noticed until very 8515 recently. Thus we conclude it is not in widespread use.) 8516 8517 C++ 8518 8519 * GCC 3.2 fixed serveral differences between the C++ ABI implemented 8520 in GCC and the multi-vendor standard, but more have been found 8521 since the release. 3.2.1 adds a new warning, -Wabi, to warn about 8522 code which is affected by these bugs. We will fix these bugs in 8523 some future release, once we are confident that all have been 8524 found; until then, it is our intention to make changes to the ABI 8525 only if they are necessary for correct compilation of C++, as 8526 opposed to conformance to the ABI documents. 8527 * For details on how to build an ABI compliant compiler for GNU/Linux 8528 systems, check the [3]common C++ ABI page. 8529 8530 New Targets and Target Specific Improvements 8531 8532 IA-32 8533 8534 * Fixed a number of bugs in SSE and MMX intrinsics. 8535 * Fixed common compiler crashes with SSE instruction set enabled 8536 (implied by -march=pentium3, pentium4, athlon-xp) 8537 * __m128 and __m128i is not 128bit aligned when used in structures. 8538 8539 x86-64 8540 8541 * A bug whereby the compiler could generate bad code for bzero has 8542 been fixed. 8543 * ABI fixes (implying ABI incompatibilities with previous version in 8544 some corner cases) 8545 * Fixed prefetch code generation 8546 __________________________________________________________________ 8547 8548GCC 3.2.3 8549 8550 3.2.3 is a bug fix release only; there are no new features that were 8551 not present in GCC 3.2.2. 8552 8553 Bug Fixes 8554 8555 This section lists the problem reports (PRs) from GCC's bug tracking 8556 system that are known to be fixed in the 3.2.3 release. This list might 8557 not be complete (that is, it is possible that some PRs that have been 8558 fixed are not listed here), and some of the titles have been changed to 8559 make them more clear. 8560 8561 Internal Compiler Errors (multi-platform) 8562 8563 * [4]3782: (c++) -quiet -fstats produces a segmentation fault in 8564 cc1plus 8565 * [5]6440: (c++) template specializations cause ICE 8566 * [6]7050: (c++) ICE on: (i ? get_string() : throw) 8567 * [7]7741: ICE on conflicting types (make_decl_rtl in varasm.c) 8568 * [8]7982: (c++) ICE due to infinite recursion (using STL set) 8569 * [9]8068: exceedingly high (infinite) memory usage 8570 * [10]8178: ICE with __builtin_ffs 8571 * [11]8396: ICE in copy_to_mode_reg, in explow.c 8572 * [12]8674: (c++) ICE in cp_expr_size, in cp/cp-lang.c 8573 * [13]9768: ICE when optimizing inline code at -O2 8574 * [14]9798: (c++) Infinite recursion (segfault) in 8575 cp/decl.c:push_using_directive with recursive using directives 8576 * [15]9799: mismatching structure initializer with nested flexible 8577 array member: ICE 8578 * [16]9928: ICE on duplicate enum declaration 8579 * [17]10114: ICE in mem_loc_descriptor, in dwarf2out.c (affects 8580 sparc, alpha) 8581 * [18]10352: ICE in find_reloads_toplev 8582 * [19]10336: ICE with -Wunreachable-code 8583 8584 C/optimizer bugs: 8585 8586 * [20]8224: Incorrect joining of signed and unsigned division 8587 * [21]8613: -O2 produces wrong code with builtin strlen and 8588 postincrements 8589 * [22]8828: gcc reports some code is unreachable when it is not 8590 * [23]9226: GCSE breaking argument passing 8591 * [24]9853: miscompilation of non-constant structure initializer 8592 * [25]9797: C99-style struct initializers are miscompiled 8593 * [26]9967: Some standard C function calls should not be replaced 8594 when optimizing for size 8595 * [27]10116: ce2: invalid merge of join_bb in the context of switch 8596 statements 8597 * [28]10171: wrong code for inlined function 8598 * [29]10175: -Wunreachable-code doesn't work for single lines 8599 8600 C++ compiler and library: 8601 8602 * [30]8316: Confusing diagnostic for code that misuses conversion 8603 operators 8604 * [31]9169: filebuf output fails if codecvt<>::out returns noconv 8605 * [32]9420: incomplete type incorrectly reported 8606 * [33]9459: typeof in return type specification of template not 8607 supported 8608 * [34]9507: filebuf::open handles ios_base::ate incorrectly 8609 * [35]9538: Out-of-bounds memory access in streambuf::sputbackc 8610 * [36]9602: Total confusion about template/friend/virtual/abstract 8611 * [37]9993: destructor not called for local object created within and 8612 returned from infinite loop 8613 * [38]10167: ieee_1003.1-2001 locale specialisations on a glibc-2.3.2 8614 system 8615 8616 Java compiler and library: 8617 8618 * [39]9652: libgcj build fails on irix6.5.1[78] 8619 * [40]10144: gas on solaris complains about bad .stabs lines for 8620 java, native as unaffected 8621 8622 x86-specific (Intel/AMD): 8623 8624 * [41]8746: gcc miscompiles Linux kernel ppa driver on x86 8625 * [42]9888: -mcpu=k6 -Os produces out of range loop instructions 8626 * [43]9638: Cross-build for target i386-elf and i586-pc-linux-gnu 8627 failed 8628 * [44]9954: Cross-build for target i586-pc-linux-gnu (--with-newlib) 8629 failed 8630 8631 SPARC-specific: 8632 8633 * [45]7784: [Sparc] ICE in extract_insn, in recog.c 8634 * [46]7796: sparc extra failure with -m64 on execute/930921-1.c in 8635 unroll.c 8636 * [47]8281: ICE when compiling with -O2 -fPIC for Ultrasparc 8637 * [48]8366: [Sparc] C testsuite failure with -m64 -fpic -O in 8638 execute/loop-2d.c 8639 * [49]8726: gcc -O2 miscompiles Samba 2.2.7 on 32-bit sparc 8640 * [50]9414: Scheduling bug on Ultrasparc 8641 * [51]10067: GCC-3.2.2 outputs invalid asm on sparc64 8642 8643 m68k-specific: 8644 8645 * [52]7248: broken "inclusive or" code 8646 * [53]8343: m68k-elf/rtems ICE at instantiate_virtual_regs_1 8647 8648 PowerPC-specific: 8649 8650 * [54]9732: Wrong code with -O2 -fPIC 8651 * [55]10073: ICE: powerpc cannot split insn 8652 8653 Alpha-specific: 8654 8655 * [56]7702: optimization problem on a DEC alpha under OSF1 8656 * [57]9671: gcc.3.2.2 does not build on a HP Tru64 Unix v5.1B system 8657 8658 HP-specific: 8659 8660 * [58]8694: <string> breaks <ctype.h> on HP-UX 10.20 (DUP: 9275) 8661 * [59]9953: (ada) gcc 3.2.x can't build 3.3-branch ada on HP-UX 10 8662 (missing symbol) 8663 * [60]10271: Floating point args don't get reloaded across function 8664 calls with -O2 8665 8666 MIPS specific: 8667 8668 * [61]6362: mips-irix6 gcc-3.1 C testsuite failure with -mips4 in 8669 compile/920501-4.c 8670 8671 CRIS specific: 8672 8673 * [62]10377: gcc-3.2.2 creates bad assembler code for cris 8674 8675 Miscellaneous and minor bugs: 8676 8677 * [63]6955: collect2 says "core dumped" when there is no core 8678 __________________________________________________________________ 8679 8680GCC 3.2.2 8681 8682 Beginning with 3.2.2, GCC's Makefile suite supports redirection of make 8683 install by means of the DESTDIR variable. Parts of the GCC tree have 8684 featured that support long before, but now it is available even from 8685 the top level. 8686 8687 Other than that, GCC 3.2.2 is a bug fix release only; there are no new 8688 features that were not present in GCC 3.2.1. 8689 8690 Bug Fixes 8691 8692 On the following i386-based systems GCC 3.2.1 broke the C ABI wrt. 8693 functions returning structures: Cygwin, FreeBSD (GCC 3.2.1 as shipped 8694 with FreeBSD 5.0 does not have this problem), Interix, a.out-based 8695 GNU/Linux and NetBSD, OpenBSD, and Darwin. GCC 3.2.2 reverts this ABI 8696 change, and thus restores ABI-compatibility with previous releases 8697 (except GCC 3.2.1) on these platforms. 8698 8699 This section lists the problem reports (PRs) from GCC's bug tracking 8700 system that are known to be fixed in the 3.2.2 release. This list might 8701 not be complete (that is, it is possible that some PRs that have been 8702 fixed are not listed here) and some of the titles have been changed to 8703 make them more clear. 8704 8705 Internal Compiler Errors (multi-platform) 8706 8707 * [64]5919: (c++) ICE when passing variable array to template 8708 function 8709 * [65]7129: (c++) ICE with min/max assignment operators (<?= and >?=) 8710 * [66]7507: ICE with -O2 when address of called function is a 8711 complicated expression 8712 * [67]7622: ICE with nested inline functions if function's address is 8713 taken 8714 * [68]7681: (fortran) ICE in compensate_edge, in reg-stack.c (also PR 8715 [69]9258) 8716 * [70]8031: (c++) ICE in code comparing typeids and casting from 8717 virtual base 8718 * [71]8275: ICE in simplify_subreg 8719 * [72]8332: (c++) builtin strlen/template interaction causes ICE 8720 * [73]8372: (c++) ICE on explicit call of destructor 8721 * [74]8439: (c, not c++) empty struct causes ICE 8722 * [75]8442: (c++) ICE with nested template classes 8723 * [76]8518: ICE when compiling mplayer ("extern inline" issue) 8724 * [77]8615: (c++) ICE with out-of-range character constant template 8725 argument 8726 * [78]8663: (c++) ICE in cp_expr_size, at cp-lang.c:307 8727 * [79]8799: (c++) ICE: error reporting routines re-entered 8728 * [80]9328: (c++) ICE with typeof(X) for overloaded X 8729 * [81]9465: (preprocessor) cpp -traditional ICE on null bytes 8730 8731 C++ (compiler and library) bugs 8732 8733 * [82]47: scoping in nested classes is broken 8734 * [83]6745: problems with iostream rdbuf() member function 8735 * [84]8214: conversion from const char* const to char* sometimes 8736 accepted illegally 8737 * [85]8493: builtin strlen and overload resolution (same bug as 8738 [86]8332) 8739 * [87]8503: strange behaviour of function types 8740 * [88]8727: compiler confused by inheritance from an anonymous struct 8741 * [89]7445: poor performance of std::locale::classic() in 8742 multi-threaded applications 8743 * [90]8230: mishandling of overflow in vector<T>::resize 8744 * [91]8399: sync_with_stdio(false) breaks unformatted input 8745 * [92]8662: illegal access of private member of unnamed class is 8746 accepted 8747 * [93]8707: "make distclean" fails in libstdc++-v3 directory 8748 * [94]8708: __USE_MALLOC doesn't work 8749 * [95]8790: Use of non-thread-safe strtok in src/localename.cc 8750 * [96]8887: Bug in date formats with --enable-clocale=generic 8751 * [97]9076: Call Frame Instructions are not handled correctly during 8752 unwind operation 8753 * [98]9151: std::setprecision limited to 16 digits when outputting a 8754 double to a stream 8755 * [99]9168: codecvt<char, char, mbstate_t> overwrites output buffers 8756 * [100]9269: libstdc++ headers: explicit specialization of function 8757 must precede its first use 8758 * [101]9322: return value of basic_streambuf<>::getloc affected by 8759 locale::global 8760 * [102]9433: segfault in runtime support for dynamic_cast 8761 8762 C and optimizer bugs 8763 8764 * [103]8032: GCC incorrectly initializes static structs that have 8765 flexible arrays 8766 * [104]8639: simple arithmetic expression broken 8767 * [105]8794: optimization improperly eliminates certain expressions 8768 * [106]8832: traditional "asm volatile" code is illegally optimized 8769 * [107]8988: loop optimizer bug: with -O2, code is generated that 8770 segfaults (found on i386, bug present for all platforms) 8771 * [108]9492: structure copy clobbers subsequent stores to structure 8772 8773 Objective-C bugs 8774 8775 * [109]9267: Objective-C parser won't build with newer bison versions 8776 (e.g. 1.875) 8777 8778 Ada bugs 8779 8780 * [110]8344: Ada build problem due to conflict between gcc/final.o, 8781 gcc/ada/final.o 8782 8783 Preprocessor bugs 8784 8785 * [111]8524: _Pragma within macros is improperly expanded 8786 * [112]8880: __WCHAR_TYPE__ macro incorrectly set to "long int" with 8787 -fshort-wchar 8788 8789 ARM-specific 8790 8791 * [113]9090: arm ICE with >= -O2; regression from gcc-2.95 8792 8793 x86-specific (Intel/AMD) 8794 8795 * [114]8588: ICE in extract_insn, at recog.c:NNNN (shift instruction) 8796 * [115]8599: loop unroll bug with -march=k6-3 8797 * [116]9506: ABI breakage in structure return (affects BSD and 8798 Cygwin, but not GNU/Linux) 8799 8800 FreeBSD 5.0 specific 8801 8802 * [117]9484: GCC 3.2.1 Bootstrap failure on FreeBSD 5.0 8803 8804 RTEMS-specific 8805 8806 * [118]9292: hppa1.1-rtems configurery problems 8807 * [119]9293: [m68k-elf/rtems] config/m68k/t-crtstuff bug 8808 * [120]9295: [mips-rtems] config/mips/rtems.h init/fini issue 8809 * [121]9296: gthr-rtems regression 8810 * [122]9316: powerpc-rtems: extending multilibs 8811 8812 HP-PA specific 8813 8814 * [123]9493: ICE with -O2 when building a simple function 8815 8816 Documentation 8817 8818 * [124]7341: hyperlink to gcov in GCC documentation doesn't work 8819 * [125]8947: Please add a warning about "-malign-double" in docs 8820 * [126]7448, [127]8882: typo cleanups 8821 __________________________________________________________________ 8822 8823GCC 3.2.1 8824 8825 3.2.1 adds a new warning, -Wabi. This option warns when GNU C++ 8826 generates code that is known not to be binary-compatible with the 8827 vendor-neutral ia32/ia64 ABI. Please consult the GCC manual, included 8828 in the distribution, for details. 8829 8830 This release also removes an old GCC extension, "naming types", and the 8831 documentation now directs users to use a different GCC extension, 8832 __typeof__, instead. The feature had evidently been broken for a while. 8833 8834 Otherwise, 3.2.1 is a bug fix release only; other than bug fixes and 8835 the new warning there are no new features that were not present in GCC 8836 3.2. 8837 8838 In addition, the previous fix for [128]PR 7445 (poor performance of 8839 std::locale::classic() in multi-threaded applications) was reverted 8840 ("unfixed"), because the "fix" was not thread-safe. 8841 8842 Bug Fixes 8843 8844 This section lists the problem reports (PRs) from GCC's bug tracking 8845 system that are known to be fixed in the 3.2.1 release. This list might 8846 not be complete (that is, it is possible that some PRs that have been 8847 fixed are not listed here). As you can see, the number of bug fixes is 8848 quite large, so it is strongly recommended that users of earlier GCC 8849 3.x releases upgrade to GCC 3.2.1. 8850 8851 Internal Compiler Errors (multi-platform) 8852 8853 * [129]2521: (c++) ICE in build_ptrmemfunc, in cp/typeck.c 8854 * [130]5661: (c++) ICE instantiating template on array of unknown 8855 size (bad code) 8856 * [131]6419: (c++) ICE in make_decl_rtl for "longest" attribute on 8857 64-bit platforms 8858 * [132]6994: (c++) ICE in find_function_data 8859 * [133]7150: preprocessor: GCC -dM -E gives an ICE 8860 * [134]7160: ICE when optimizing branches without a return value 8861 * [135]7228: (c++) ICE when using member template and template 8862 function 8863 * [136]7266: (c++) ICE with -pedantic on missing typename 8864 * [137]7353: ICE from use of "Naming Types" extension, see above 8865 * [138]7411: ICE in instantiate_virtual_regs_1, in function.c 8866 * [139]7478: (c++) ICE on static_cast inside template 8867 * [140]7526: preprocessor core dump when _Pragma implies #pragma 8868 dependency 8869 * [141]7721: (c++) ICE on simple (but incorrect) template ([142]7803 8870 is a duplicate) 8871 * [143]7754: (c++) ICE on union with template parameter 8872 * [144]7788: (c++) redeclaring a definition as an incomplete class 8873 causes ICE 8874 * [145]8031: (c++) ICE in comptypes, in cp/typeck.c 8875 * [146]8055: preprocessor dies with SIG11 when building FreeBSD 8876 kernel 8877 * [147]8067: (c++) ICE due to mishandling of __FUNCTION__ and related 8878 variables 8879 * [148]8134: (c++) ICE in force_store_init_value on legal code 8880 * [149]8149: (c++) ICE on incomplete type 8881 * [150]8160: (c++) ICE in build_modify_expr, in cp/typeck.c: array 8882 initialization 8883 8884 C++ (compiler and library) bugs 8885 8886 * [151]5607: No pointer adjustment in covariant return types 8887 * [152]6579: Infinite loop with statement expressions in member 8888 initialization 8889 * [153]6803: Default copy constructor bug in GCC 3.1 8890 * [154]7176: g++ confused by friend and static member with same name 8891 * [155]7188: Segfault with template class and recursive (incorrect) 8892 initializer list 8893 * [156]7306: Regression: GCC 3.x fails to compile code with virtual 8894 inheritance if a method has a variable number of arguments 8895 * [157]7461: ctype<char>::classic_table() returns offset array on 8896 Cygwin 8897 * [158]7524: f(const float arg[3]) fails 8898 * [159]7584: Erroneous ambiguous base error on using declaration 8899 * [160]7676: Member template overloading problem 8900 * [161]7679: infinite loop when a right parenthesis is missing 8901 * [162]7811: default locale not taken from environment 8902 * [163]7961: compare( char *) implemented incorrectly in 8903 basic_string<> 8904 * [164]8071: basic_ostream::operator<<(streambuf*) loops forever if 8905 streambuf::underflow() leaves gptr() NULL (dups: [165]8127, 8906 [166]6745) 8907 * [167]8096: deque::at() throws std::range_error instead of 8908 std::out_of_range 8909 * [168]8127: cout << cin.rdbuf() infinite loop 8910 * [169]8218: Excessively large memory consumed for classes with large 8911 array members 8912 * [170]8287: GCC 3.2: Destructor called for non-constructed local 8913 object 8914 * [171]8347: empty vector range used in string construction causes 8915 core dump 8916 * [172]8348: fail() flag is set in istringstream when eof() flag is 8917 set 8918 * [173]8391: regression: infinite loop in cp/decl2.c(finish_file) 8919 8920 C and optimizer bugs 8921 8922 * [174]6627: -fno-align-functions doesn't seem to disable function 8923 alignment 8924 * [175]6631: life_analysis misoptimizes code to initialize fields of 8925 a structure 8926 * [176]7102: unsigned char division results in floating exception 8927 * [177]7120: Run once loop should *always* be unrolled 8928 (pessimization) 8929 * [178]7209: Bug involving array referencing and ?: operator 8930 * [179]7515: invalid inlining of global function with -O3 8931 * [180]7814: incorrect scheduling for glibc-2.2.92 strcpy test 8932 * [181]8467: bug in sibling call optimization 8933 8934 Preprocessor bugs 8935 8936 * [182]4890: incorrect line markers from the traditional preprocessor 8937 * [183]7357: -M option omits system headers files (making it the same 8938 as -MM) 8939 * [184]7358: Changes to Sun's make Dependencies 8940 * [185]7602: C++ header files found in CPLUS_INCLUDE_PATH treated as 8941 C headers 8942 * [186]7862: Interrupting GCC -MD removes .d file but not .o 8943 * [187]8190: Failed compilation deletes -MD dependency file 8944 * [188]8524: _Pragma within macro is improperly expanded 8945 8946 x86 specific (Intel/AMD) 8947 8948 * [189]5351: (i686-only) function pass-by-value structure copy 8949 corrupts stack ([190]7591 is a duplicate) 8950 * [191]6845, [192]7034, [193]7124, [194]7174: ICE's with 8951 -march=pentium3/pentium2/athlon (these are all the same underlying 8952 bug, in MMX register use) 8953 * [195]7134, [196]7375, [197]7390: ICE with -march=athlon (maybe same 8954 as above?) 8955 * [198]6890: xmmintrin.h, _MM_TRANSPOSE4_PS is broken 8956 * [199]6981: wrong code in 64-bit manipulation on x86 8957 * [200]7242: GCC -mcpu=pentium[23] doesn't define __tune_pentiumpro__ 8958 macro 8959 * [201]7396: ix86: cmpgt_ss, cmpge_ss, cmpngt_ss, and cmpnge_ss SSE 8960 intrinsics are broken 8961 * [202]7630: GCC 3.2 breaks on Mozilla 1.0's JS sources with 8962 -march=pentium4 8963 * [203]7693: Typo in i386 mmintrin.h header 8964 * [204]7723: ICE - Pentium3 sse - GCC 3.2 8965 * [205]7951: ICE on -march=pentium4 -O2 -mfpmath=sse 8966 * [206]8146: (i686 only) gcc 3.2 miscompiles gcc 2.95.3 8967 8968 PowerPC specific 8969 8970 * [207]5967: GCC bug when profiling nested functions on powerpc 8971 * [208]6984: wrong code generated with -O2, -O3, -Os for do-while 8972 loop on PowerPC 8973 * [209]7114: PowerPC: ICE building strcoll.op from glibc-2.2.5 8974 * [210]7130: miscompiled code for GCC-3.1 on 8975 powerpc-unknown-linux-gnu with -funroll-all-loops 8976 * [211]7133: PowerPC ICE: unrecognizable insn 8977 * [212]7380: ICE in extract_insn, at recog.c:2148 8978 * [213]8252: ICE on Altivec code with optimization turned on 8979 * [214]8451: Altivec ICE in GCC 3.2 8980 8981 HP/PA specific 8982 8983 * [215]7250: __ashrdi3 returns wrong value on 32 bit hppa 8984 8985 SPARC specific 8986 8987 * [216]6668: when using --disable-multilib, libgcc_s.so is installed 8988 in the wrong place on sparc-solaris 8989 * [217]7151: ICE when compiling for UltraSPARC 8990 * [218]7335: SPARC: ICE in verify_wide_reg (flow.c:557) with long 8991 double and -O1 8992 * [219]7842: [REGRESSION] SPARC code gen bug 8993 8994 ARM specific 8995 8996 * [220]7856: [arm] invalid offset in constant pool reference 8997 * [221]7967: optimization produces wrong code (ARM) 8998 8999 Alpha specific 9000 9001 * [222]7374: __builtin_fabsl broken on alpha 9002 9003 IBM s390 specific 9004 9005 * [223]7370: ICE in fixup_var_refs_1 on s390x 9006 * [224]7409: loop optimization bug on s390x-linux-gnu 9007 * [225]8232: s390x: ICE when using bcmp with int length argument 9008 9009 SCO specific 9010 9011 * [226]7623: SCO OpenServer build fails with machmode.def: undefined 9012 symbol: BITS_PER_UNIT 9013 9014 m68k/Coldfire specific 9015 9016 * [227]8314: crtbegin, crtend need to be multilib'ed for this 9017 platform 9018 9019 Documentation 9020 9021 * [228]761: Document some undocumented options 9022 * [229]5610: Fix documentation about invoking SSE instructions 9023 (-mfpmath=sse) 9024 * [230]7484: List -Wmissing-declarations as C-only option 9025 * [231]7531: -mcmodel not documented for x86-64 9026 * [232]8120: Update documentation of bad use of ## 9027 __________________________________________________________________ 9028 9029GCC 3.2 9030 9031 3.2 is a small bug fix release, but there is a change to the 9032 application binary interface (ABI), hence the change to the second part 9033 of the version number. 9034 9035 The main purpose of the 3.2 release is to correct a couple of problems 9036 in the C++ ABI, with the intention of providing a stable interface 9037 going forward. Accordingly, 3.2 is only a small change to 3.1.1. 9038 9039 Bug Fixes 9040 9041 C++ 9042 9043 * [233]7320: g++ 3.2 relocation problem 9044 * [234]7470: vtable: virtual function pointers not in declaration 9045 order 9046 9047 libstdc++ 9048 9049 * [235]6410: Trouble with non-ASCII monetary symbols and wchar_t 9050 * [236]6503, [237]6642, [238]7186: Problems with comparing or 9051 subtracting various types of const and non-const iterators 9052 * [239]7216: ambiguity with basic_iostream::traits_type 9053 * [240]7220: problem with basic_istream::ignore(0,delimiter) 9054 * [241]7222: locale::operator==() doesn't work on std::locale("") 9055 * [242]7286: placement operator delete issue 9056 * [243]7442: cxxabi.h does not match the C++ ABI 9057 * [244]7445: poor performance of std::locale::classic() in 9058 multi-threaded applications 9059 9060 x86-64 specific 9061 9062 * [245]7291: off-by-one in generated inline bzero code for x86-64 9063 9064 9065 For questions related to the use of GCC, please consult these web 9066 pages and the [246]GCC manuals. If that fails, the 9067 [247]gcc-help@gcc.gnu.org mailing list might help. Comments on these 9068 web pages and the development of GCC are welcome on our developer 9069 list at [248]gcc@gcc.gnu.org. All of [249]our lists have public 9070 archives. 9071 9072 Copyright (C) [250]Free Software Foundation, Inc. Verbatim copying and 9073 distribution of this entire article is permitted in any medium, 9074 provided this notice is preserved. 9075 9076 These pages are [251]maintained by the GCC team. Last modified 9077 2011-10-24[252]. 9078 9079References 9080 9081 1. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3 9082 2. http://gcc.gnu.org/gcc-3.1/changes.html 9083 3. http://gcc.gnu.org/gcc-3.2/c++-abi.html 9084 4. http://gcc.gnu.org/PR3782 9085 5. http://gcc.gnu.org/PR6440 9086 6. http://gcc.gnu.org/PR7050 9087 7. http://gcc.gnu.org/PR7741 9088 8. http://gcc.gnu.org/PR7982 9089 9. http://gcc.gnu.org/PR8068 9090 10. http://gcc.gnu.org/PR8178 9091 11. http://gcc.gnu.org/PR8396 9092 12. http://gcc.gnu.org/PR8674 9093 13. http://gcc.gnu.org/PR9768 9094 14. http://gcc.gnu.org/PR9798 9095 15. http://gcc.gnu.org/PR9799 9096 16. http://gcc.gnu.org/PR9928 9097 17. http://gcc.gnu.org/PR10114 9098 18. http://gcc.gnu.org/PR10352 9099 19. http://gcc.gnu.org/PR10336 9100 20. http://gcc.gnu.org/PR8224 9101 21. http://gcc.gnu.org/PR8613 9102 22. http://gcc.gnu.org/PR8828 9103 23. http://gcc.gnu.org/PR9226 9104 24. http://gcc.gnu.org/PR9853 9105 25. http://gcc.gnu.org/PR9797 9106 26. http://gcc.gnu.org/PR9967 9107 27. http://gcc.gnu.org/PR10116 9108 28. http://gcc.gnu.org/PR10171 9109 29. http://gcc.gnu.org/PR10175 9110 30. http://gcc.gnu.org/PR8316 9111 31. http://gcc.gnu.org/PR9169 9112 32. http://gcc.gnu.org/PR9420 9113 33. http://gcc.gnu.org/PR9459 9114 34. http://gcc.gnu.org/PR9507 9115 35. http://gcc.gnu.org/PR9538 9116 36. http://gcc.gnu.org/PR9602 9117 37. http://gcc.gnu.org/PR9993 9118 38. http://gcc.gnu.org/PR10167 9119 39. http://gcc.gnu.org/PR9652 9120 40. http://gcc.gnu.org/PR10144 9121 41. http://gcc.gnu.org/PR8746 9122 42. http://gcc.gnu.org/PR9888 9123 43. http://gcc.gnu.org/PR9638 9124 44. http://gcc.gnu.org/PR9954 9125 45. http://gcc.gnu.org/PR7784 9126 46. http://gcc.gnu.org/PR7796 9127 47. http://gcc.gnu.org/PR8281 9128 48. http://gcc.gnu.org/PR8366 9129 49. http://gcc.gnu.org/PR8726 9130 50. http://gcc.gnu.org/PR9414 9131 51. http://gcc.gnu.org/PR10067 9132 52. http://gcc.gnu.org/PR7248 9133 53. http://gcc.gnu.org/PR8343 9134 54. http://gcc.gnu.org/PR9732 9135 55. http://gcc.gnu.org/PR10073 9136 56. http://gcc.gnu.org/PR7702 9137 57. http://gcc.gnu.org/PR9671 9138 58. http://gcc.gnu.org/PR8694 9139 59. http://gcc.gnu.org/PR9953 9140 60. http://gcc.gnu.org/PR10271 9141 61. http://gcc.gnu.org/PR6362 9142 62. http://gcc.gnu.org/PR10377 9143 63. http://gcc.gnu.org/PR6955 9144 64. http://gcc.gnu.org/PR5919 9145 65. http://gcc.gnu.org/PR7129 9146 66. http://gcc.gnu.org/PR7507 9147 67. http://gcc.gnu.org/PR7622 9148 68. http://gcc.gnu.org/PR7681 9149 69. http://gcc.gnu.org/PR9528 9150 70. http://gcc.gnu.org/PR8031 9151 71. http://gcc.gnu.org/PR8275 9152 72. http://gcc.gnu.org/PR8332 9153 73. http://gcc.gnu.org/PR8372 9154 74. http://gcc.gnu.org/PR8439 9155 75. http://gcc.gnu.org/PR8442 9156 76. http://gcc.gnu.org/PR8518 9157 77. http://gcc.gnu.org/PR8615 9158 78. http://gcc.gnu.org/PR8663 9159 79. http://gcc.gnu.org/PR8799 9160 80. http://gcc.gnu.org/PR9328 9161 81. http://gcc.gnu.org/PR9465 9162 82. http://gcc.gnu.org/PR47 9163 83. http://gcc.gnu.org/PR6745 9164 84. http://gcc.gnu.org/PR8214 9165 85. http://gcc.gnu.org/PR8493 9166 86. http://gcc.gnu.org/PR8332 9167 87. http://gcc.gnu.org/PR8503 9168 88. http://gcc.gnu.org/PR8727 9169 89. http://gcc.gnu.org/PR7445 9170 90. http://gcc.gnu.org/PR8230 9171 91. http://gcc.gnu.org/PR8399 9172 92. http://gcc.gnu.org/PR8662 9173 93. http://gcc.gnu.org/PR8707 9174 94. http://gcc.gnu.org/PR8708 9175 95. http://gcc.gnu.org/PR8790 9176 96. http://gcc.gnu.org/PR8887 9177 97. http://gcc.gnu.org/PR9076 9178 98. http://gcc.gnu.org/PR9151 9179 99. http://gcc.gnu.org/PR9168 9180 100. http://gcc.gnu.org/PR9269 9181 101. http://gcc.gnu.org/PR9322 9182 102. http://gcc.gnu.org/PR9433 9183 103. http://gcc.gnu.org/PR8032 9184 104. http://gcc.gnu.org/PR8639 9185 105. http://gcc.gnu.org/PR8794 9186 106. http://gcc.gnu.org/PR8832 9187 107. http://gcc.gnu.org/PR8988 9188 108. http://gcc.gnu.org/PR9492 9189 109. http://gcc.gnu.org/PR9267 9190 110. http://gcc.gnu.org/PR8344 9191 111. http://gcc.gnu.org/PR8524 9192 112. http://gcc.gnu.org/PR8880 9193 113. http://gcc.gnu.org/PR9090 9194 114. http://gcc.gnu.org/PR8588 9195 115. http://gcc.gnu.org/PR8599 9196 116. http://gcc.gnu.org/PR9506 9197 117. http://gcc.gnu.org/PR9484 9198 118. http://gcc.gnu.org/PR9292 9199 119. http://gcc.gnu.org/PR9293 9200 120. http://gcc.gnu.org/PR9295 9201 121. http://gcc.gnu.org/PR9296 9202 122. http://gcc.gnu.org/PR9316 9203 123. http://gcc.gnu.org/PR9493 9204 124. http://gcc.gnu.org/PR7341 9205 125. http://gcc.gnu.org/PR8947 9206 126. http://gcc.gnu.org/PR7448 9207 127. http://gcc.gnu.org/PR8882 9208 128. http://gcc.gnu.org/PR7445 9209 129. http://gcc.gnu.org/PR2521 9210 130. http://gcc.gnu.org/PR5661 9211 131. http://gcc.gnu.org/PR6419 9212 132. http://gcc.gnu.org/PR6994 9213 133. http://gcc.gnu.org/PR7150 9214 134. http://gcc.gnu.org/PR7160 9215 135. http://gcc.gnu.org/PR7228 9216 136. http://gcc.gnu.org/PR7266 9217 137. http://gcc.gnu.org/PR7353 9218 138. http://gcc.gnu.org/PR7411 9219 139. http://gcc.gnu.org/PR7478 9220 140. http://gcc.gnu.org/PR7526 9221 141. http://gcc.gnu.org/PR7721 9222 142. http://gcc.gnu.org/PR7803 9223 143. http://gcc.gnu.org/PR7754 9224 144. http://gcc.gnu.org/PR7788 9225 145. http://gcc.gnu.org/PR8031 9226 146. http://gcc.gnu.org/PR8055 9227 147. http://gcc.gnu.org/PR8067 9228 148. http://gcc.gnu.org/PR8134 9229 149. http://gcc.gnu.org/PR8149 9230 150. http://gcc.gnu.org/PR8160 9231 151. http://gcc.gnu.org/PR5607 9232 152. http://gcc.gnu.org/PR6579 9233 153. http://gcc.gnu.org/PR6803 9234 154. http://gcc.gnu.org/PR7176 9235 155. http://gcc.gnu.org/PR7188 9236 156. http://gcc.gnu.org/PR7306 9237 157. http://gcc.gnu.org/PR7461 9238 158. http://gcc.gnu.org/PR7524 9239 159. http://gcc.gnu.org/PR7584 9240 160. http://gcc.gnu.org/PR7676 9241 161. http://gcc.gnu.org/PR7679 9242 162. http://gcc.gnu.org/PR7811 9243 163. http://gcc.gnu.org/PR7961 9244 164. http://gcc.gnu.org/PR8071 9245 165. http://gcc.gnu.org/PR8127 9246 166. http://gcc.gnu.org/PR6745 9247 167. http://gcc.gnu.org/PR8096 9248 168. http://gcc.gnu.org/PR8127 9249 169. http://gcc.gnu.org/PR8218 9250 170. http://gcc.gnu.org/PR8287 9251 171. http://gcc.gnu.org/PR8347 9252 172. http://gcc.gnu.org/PR8348 9253 173. http://gcc.gnu.org/PR8391 9254 174. http://gcc.gnu.org/PR6627 9255 175. http://gcc.gnu.org/PR6631 9256 176. http://gcc.gnu.org/PR7102 9257 177. http://gcc.gnu.org/PR7120 9258 178. http://gcc.gnu.org/PR7209 9259 179. http://gcc.gnu.org/PR7515 9260 180. http://gcc.gnu.org/PR7814 9261 181. http://gcc.gnu.org/PR8467 9262 182. http://gcc.gnu.org/PR4890 9263 183. http://gcc.gnu.org/PR7357 9264 184. http://gcc.gnu.org/PR7358 9265 185. http://gcc.gnu.org/PR7602 9266 186. http://gcc.gnu.org/PR7862 9267 187. http://gcc.gnu.org/PR8190 9268 188. http://gcc.gnu.org/PR8524 9269 189. http://gcc.gnu.org/PR5351 9270 190. http://gcc.gnu.org/PR7591 9271 191. http://gcc.gnu.org/PR6845 9272 192. http://gcc.gnu.org/PR7034 9273 193. http://gcc.gnu.org/PR7124 9274 194. http://gcc.gnu.org/PR7174 9275 195. http://gcc.gnu.org/PR7134 9276 196. http://gcc.gnu.org/PR7375 9277 197. http://gcc.gnu.org/PR7390 9278 198. http://gcc.gnu.org/PR6890 9279 199. http://gcc.gnu.org/PR6981 9280 200. http://gcc.gnu.org/PR7242 9281 201. http://gcc.gnu.org/PR7396 9282 202. http://gcc.gnu.org/PR7630 9283 203. http://gcc.gnu.org/PR7693 9284 204. http://gcc.gnu.org/PR7723 9285 205. http://gcc.gnu.org/PR7951 9286 206. http://gcc.gnu.org/PR8146 9287 207. http://gcc.gnu.org/PR5967 9288 208. http://gcc.gnu.org/PR6984 9289 209. http://gcc.gnu.org/PR7114 9290 210. http://gcc.gnu.org/PR7130 9291 211. http://gcc.gnu.org/PR7133 9292 212. http://gcc.gnu.org/PR7380 9293 213. http://gcc.gnu.org/PR8252 9294 214. http://gcc.gnu.org/PR8451 9295 215. http://gcc.gnu.org/PR7250 9296 216. http://gcc.gnu.org/PR6668 9297 217. http://gcc.gnu.org/PR7151 9298 218. http://gcc.gnu.org/PR7335 9299 219. http://gcc.gnu.org/PR7842 9300 220. http://gcc.gnu.org/PR7856 9301 221. http://gcc.gnu.org/PR7967 9302 222. http://gcc.gnu.org/PR7374 9303 223. http://gcc.gnu.org/PR7370 9304 224. http://gcc.gnu.org/PR7409 9305 225. http://gcc.gnu.org/PR8232 9306 226. http://gcc.gnu.org/PR7623 9307 227. http://gcc.gnu.org/PR8314 9308 228. http://gcc.gnu.org/PR761 9309 229. http://gcc.gnu.org/PR5610 9310 230. http://gcc.gnu.org/PR7484 9311 231. http://gcc.gnu.org/PR7531 9312 232. http://gcc.gnu.org/PR8120 9313 233. http://gcc.gnu.org/PR7320 9314 234. http://gcc.gnu.org/PR7470 9315 235. http://gcc.gnu.org/PR6410 9316 236. http://gcc.gnu.org/PR6503 9317 237. http://gcc.gnu.org/PR6642 9318 238. http://gcc.gnu.org/PR7186 9319 239. http://gcc.gnu.org/PR7216 9320 240. http://gcc.gnu.org/PR7220 9321 241. http://gcc.gnu.org/PR7222 9322 242. http://gcc.gnu.org/PR7286 9323 243. http://gcc.gnu.org/PR7442 9324 244. http://gcc.gnu.org/PR7445 9325 245. http://gcc.gnu.org/PR7291 9326 246. http://gcc.gnu.org/onlinedocs/ 9327 247. mailto:gcc-help@gcc.gnu.org 9328 248. mailto:gcc@gcc.gnu.org 9329 249. http://gcc.gnu.org/lists.html 9330 250. http://www.fsf.org/ 9331 251. http://gcc.gnu.org/about.html 9332 252. http://validator.w3.org/check/referer 9333====================================================================== 9334http://gcc.gnu.org/gcc-3.1/index.html 9335 9336 GCC 3.1 9337 9338 July 27, 2002 9339 9340 The [1]GNU project and the GCC developers are pleased to announce the 9341 release of GCC 3.1.1. 9342 9343 The links below still apply to GCC 3.1.1. 9344 9345 May 15, 2002 9346 9347 The [2]GNU project and the GCC developers are pleased to announce the 9348 release of GCC 3.1. 9349 9350 GCC used to stand for the GNU C Compiler, but since the compiler 9351 supports several other languages aside from C, it now stands for the 9352 GNU Compiler Collection. 9353 9354 A list of [3]successful builds is updated as new information becomes 9355 available. 9356 9357 The GCC developers would like to thank the numerous people that have 9358 contributed [4]new features, improvements, bug fixes, and other changes 9359 as well as test results to GCC. This [5]amazing group of volunteers is 9360 what makes GCC successful. 9361 9362 For additional information about GCC please refer to the [6]GCC project 9363 web site or contact the [7]GCC development mailing list. 9364 9365 To obtain GCC please use [8]our mirror sites, or our CVS server. 9366 __________________________________________________________________ 9367 9368 9369 For questions related to the use of GCC, please consult these web 9370 pages and the [9]GCC manuals. If that fails, the 9371 [10]gcc-help@gcc.gnu.org mailing list might help. Comments on these 9372 web pages and the development of GCC are welcome on our developer 9373 list at [11]gcc@gcc.gnu.org. All of [12]our lists have public 9374 archives. 9375 9376 Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and 9377 distribution of this entire article is permitted in any medium, 9378 provided this notice is preserved. 9379 9380 These pages are [14]maintained by the GCC team. Last modified 9381 2011-04-25[15]. 9382 9383References 9384 9385 1. http://www.gnu.org/ 9386 2. http://www.gnu.org/ 9387 3. http://gcc.gnu.org/gcc-3.1/buildstat.html 9388 4. http://gcc.gnu.org/gcc-3.1/changes.html 9389 5. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 9390 6. http://gcc.gnu.org/index.html 9391 7. mailto:gcc@gcc.gnu.org 9392 8. http://gcc.gnu.org/mirrors.html 9393 9. http://gcc.gnu.org/onlinedocs/ 9394 10. mailto:gcc-help@gcc.gnu.org 9395 11. mailto:gcc@gcc.gnu.org 9396 12. http://gcc.gnu.org/lists.html 9397 13. http://www.fsf.org/ 9398 14. http://gcc.gnu.org/about.html 9399 15. http://validator.w3.org/check/referer 9400====================================================================== 9401http://gcc.gnu.org/gcc-3.1/changes.html 9402 9403 GCC 3.1 Release Series 9404 Changes, New Features, and Fixes 9405 9406Additional changes in GCC 3.1.1 9407 9408 * A bug related to how structures and unions are returned has been 9409 fixed for powerpc-*-netbsd*. 9410 * An important bug in the implementation of -fprefetch-loop-arrays 9411 has been fixed. Previously the optimization prefetched random 9412 blocks of memory for most targets except for i386. 9413 * The Java compiler now compiles Java programs much faster and also 9414 works with parallel make. 9415 * Nested functions have been fixed for mips*-*-netbsd*. 9416 * Some missing floating point support routines have beed added for 9417 mips*-*-netbsd*. 9418 * This [1]message gives additional information about the bugs fixed 9419 in this release. 9420 9421Caveats 9422 9423 * The -traditional C compiler option has been deprecated and will be 9424 removed in GCC 3.3. (It remains possible to preprocess non-C code 9425 with the traditional preprocessor.) 9426 * The default debugging format for most ELF platforms (including 9427 GNU/Linux and FreeBSD; notable exception is Solaris) has changed 9428 from stabs to DWARF2. This requires GDB 5.1.1 or later. 9429 9430General Optimizer Improvements 9431 9432 * Jan Hubicka, SuSE Labs, together with Richard Henderson, Red Hat, 9433 and Andreas Jaeger, SuSE Labs, has contributed [2]infrastructure 9434 for profile driven optimizations. 9435 Options -fprofile-arcs and -fbranch-probabilities can now be used 9436 to improve speed of the generated code by profiling the actual 9437 program behaviour on typical runs. In the absence of profile info 9438 the compiler attempts to guess the profile statically. 9439 * [3]SPEC2000 and SPEC95 benchmark suites are now used daily to 9440 monitor performance of the generated code. 9441 According to the SPECInt2000 results on an AMD Athlon CPU, the code 9442 generated by GCC 3.1 is 6% faster on the average (8.2% faster with 9443 profile feedback) compared to GCC 3.0. The code produced by GCC 3.0 9444 is about 2.1% faster compared to 2.95.3. Tests were done using the 9445 -O2 -march=athlon command-line options. 9446 * Alexandre Oliva, of Red Hat, has generalized the tree inlining 9447 infrastructure developed by CodeSourcery, LLC for the C++ front 9448 end, so that it is now used in the C front end too. Inlining 9449 functions as trees exposes them earlier to the compiler, giving it 9450 more opportunities for optimization. 9451 * Support for data prefetching instructions has been added to the GCC 9452 back end and several targets. A new __builtin_prefetch intrinsic is 9453 available to explicitly insert prefetch instructions and 9454 experimental support for loop array prefetching has been added (see 9455 -fprefetch-loop-array documentation). 9456 * Support for emitting debugging information for macros has been 9457 added for DWARF2. It is activated using -g3. 9458 9459New Languages and Language specific improvements 9460 9461 C/C++ 9462 9463 * A few more [4]ISO C99 features. 9464 * The preprocessor is 10-50% faster than the preprocessor in GCC 3.0. 9465 * The preprocessor's symbol table has been merged with the symbol 9466 table of the C, C++ and Objective-C front ends. 9467 * The preprocessor consumes less memory than the preprocessor in GCC 9468 3.0, often significantly so. On normal input files, it typically 9469 consumes less memory than pre-3.0 cccp-based GCC, too. 9470 9471 C++ 9472 9473 * -fhonor-std and -fno-honor-std have been removed. -fno-honor-std 9474 was a workaround to allow std compliant code to work with the 9475 non-std compliant libstdc++-v2. libstdc++-v3 is std compliant. 9476 * The C++ ABI has been fixed so that void (A::*)() const is mangled 9477 as "M1AKFvvE", rather than "MK1AFvvE" as before. This change only 9478 affects pointer to cv-qualified member function types. 9479 * The C++ ABI has been changed to correctly handle this code: 9480 struct A { 9481 void operator delete[] (void *, size_t); 9482 }; 9483 9484 struct B : public A { 9485 }; 9486 9487 new B[10]; 9488 9489 The amount of storage allocated for the array will be greater than 9490 it was in 3.0, in order to store the number of elements in the 9491 array, so that the correct size can be passed to operator delete[] 9492 when the array is deleted. Previously, the value passed to operator 9493 delete[] was unpredictable. 9494 This change will only affect code that declares a two-argument 9495 operator delete[] with a second parameter of type size_t in a base 9496 class, and does not override that definition in a derived class. 9497 * The C++ ABI has been changed so that: 9498 struct A { 9499 void operator delete[] (void *, size_t); 9500 void operator delete[] (void *); 9501 }; 9502 9503 does not cause unnecessary storage to be allocated when an array of 9504 A objects is allocated. 9505 This change will only affect code that declares both of these forms 9506 of operator delete[], and declared the two-argument form before the 9507 one-argument form. 9508 * The C++ ABI has been changed so that when a parameter is passed by 9509 value, any cleanup for that parameter is performed in the caller, 9510 as specified by the ia64 C++ ABI, rather than the called function 9511 as before. As a result, classes with a non-trivial destructor but a 9512 trivial copy constructor will be passed and returned by invisible 9513 reference, rather than by bitwise copy as before. 9514 * G++ now supports the "named return value optimization": for code 9515 like 9516 A f () { 9517 A a; 9518 ... 9519 return a; 9520 } 9521 9522 G++ will allocate a in the return value slot, so that the return 9523 becomes a no-op. For this to work, all return statements in the 9524 function must return the same variable. 9525 * Improvements to the C++ library are listed in [5]the libstdc++-v3 9526 FAQ. 9527 9528 Objective-C 9529 9530 * Annoying linker warnings (due to incorrect code being generated) 9531 have been fixed. 9532 * If a class method cannot be found, the compiler no longer issues a 9533 warning if a corresponding instance method exists in the root 9534 class. 9535 * Forward @protocol declarations have been fixed. 9536 * Loading of categories has been fixed in certain situations (GNU run 9537 time only). 9538 * The class lookup in the run-time library has been rewritten so that 9539 class method dispatch is more than twice as fast as it used to be 9540 (GNU run time only). 9541 9542 Java 9543 9544 * libgcj now includes RMI, java.lang.ref.*, javax.naming, and 9545 javax.transaction. 9546 * Property files and other system resources can be compiled into 9547 executables which use libgcj using the new gcj --resource feature. 9548 * libgcj has been ported to more platforms. In particular there is 9549 now a mostly-functional mingw32 (Windows) target port. 9550 * JNI and CNI invocation interfaces were implemented, so gcj-compiled 9551 Java code can now be called from a C/C++ application. 9552 * gcj can now use builtin functions for certain known methods, for 9553 instance Math.cos. 9554 * gcj can now automatically remove redundant array-store checks in 9555 some common cases. 9556 * The --no-store-checks optimization option was added. This can be 9557 used to omit runtime store checks for code which is known not to 9558 throw ArrayStoreException 9559 * The following third party interface standards were added to libgcj: 9560 org.w3c.dom and org.xml.sax. 9561 * java.security has been merged with GNU Classpath. The new package 9562 is now JDK 1.2 compliant, and much more complete. 9563 * A bytecode verifier was added to the libgcj interpreter. 9564 * java.lang.Character was rewritten to comply with the Unicode 3.0 9565 standard, and improve performance. 9566 * Partial support for many more locales was added to libgcj. 9567 * Socket timeouts have been implemented. 9568 * libgcj has been merged into a single shared library. There are no 9569 longer separate shared libraries for the garbage collector and 9570 zlib. 9571 * Several performance improvements were made to gcj and libgcj: 9572 + Hash synchronization (thin locks) 9573 + A special allocation path for finalizer-free objects 9574 + Thread-local allocation 9575 + Parallel GC, and other GC tweaks 9576 9577 Fortran 9578 9579 Fortran improvements are listed in [6]the Fortran documentation. 9580 9581 Ada 9582 9583 [7]Ada Core Technologies, Inc, has contributed its GNAT Ada 95 front 9584 end and associated tools. The GNAT compiler fully implements the Ada 9585 language as defined by the ISO/IEC 8652 standard. 9586 9587 Please note that the integration of the Ada front end is still work in 9588 progress. 9589 9590New Targets and Target Specific Improvements 9591 9592 * Hans-Peter Nilsson has contributed a port to [8]MMIX, the CPU 9593 architecture used in new editions of Donald E. Knuth's The Art of 9594 Computer Programming. 9595 * [9]Axis Communications has contributed its port to the CRIS CPU 9596 architecture, used in the ETRAX system-on-a-chip series. See 9597 [10]Axis' developer site for technical information. 9598 * Alexandre Oliva, of Red Hat, has contributed a port to the 9599 [11]SuperH SH5 64-bit RISC microprocessor architecture, extending 9600 the existing SH port. 9601 * UltraSPARC is fully supported in 64-bit mode. The option -m64 9602 enables it. 9603 * For compatibility with the Sun compiler #pragma redefine_extname 9604 has been implemented on Solaris. 9605 * The x86 back end has had some noticeable work done to it. 9606 + SuSE Labs developers Jan Hubicka, Bo Thorsen and Andreas 9607 Jaeger have contributed a port to the AMD x86-64 architecture. 9608 For more information on x86-64 see [12]http://www.x86-64.org. 9609 + The compiler now supports MMX, 3DNow!, SSE, and SSE2 9610 instructions. Options -mmmx, -m3dnow, -msse, and -msse2 will 9611 enable the respective instruction sets. Intel C++ compatible 9612 MMX/3DNow!/SSE intrinsics are implemented. SSE2 intrinsics 9613 will be added in next major release. 9614 + Following those improvements, targets for Pentium MMX, K6-2, 9615 K6-3, Pentium III, Pentium 4, and Athlon 4 Mobile/XP/MP were 9616 added. Refer to the documentation on -march= and -mcpu= 9617 options for details. 9618 + For those targets that support it, -mfpmath=sse will cause the 9619 compiler to generate SSE/SSE2 instructions for floating point 9620 math instead of x87 instructions. Usually, this will lead to 9621 quicker code -- especially on the Pentium 4. Note that only 9622 scalar floating point instructions are used and GCC does not 9623 exploit SIMD features yet. 9624 + Prefetch support has been added to the Pentium III, Pentium 4, 9625 K6-2, K6-3, and Athlon series. 9626 + Code generated for floating point to integer conversions has 9627 been improved leading to better performance of many 3D 9628 applications. 9629 * The PowerPC back end has added 64-bit PowerPC GNU/Linux support. 9630 * C++ support for AIX has been improved. 9631 * Aldy Hernandez, of Red Hat, Inc, has contributed extensions to the 9632 PowerPC port supporting the AltiVec programming model (SIMD). The 9633 support, though presently useful, is experimental and is expected 9634 to stabilize for 3.2. The support is written to conform to 9635 Motorola's AltiVec specs. See -maltivec. 9636 9637Obsolete Systems 9638 9639 Support for a number of older systems has been declared obsolete in GCC 9640 3.1. Unless there is activity to revive them, the next release of GCC 9641 will have their sources permanently removed. 9642 9643 All configurations of the following processor architectures have been 9644 declared obsolete: 9645 * MIL-STD-1750A, 1750a-*-* 9646 * AMD A29k, a29k-*-* 9647 * Convex, c*-convex-* 9648 * Clipper, clipper-*-* 9649 * Elxsi, elxsi-*-* 9650 * Intel i860, i860-*-* 9651 * Sun picoJava, pj-*-* and pjl-*-* 9652 * Western Electric 32000, we32k-*-* 9653 9654 Most configurations of the following processor architectures have been 9655 declared obsolete, but we are preserving a few systems which may have 9656 active developers. It is unlikely that the remaining systems will 9657 survive much longer unless we see definite signs of port activity. 9658 * Motorola 88000 except 9659 + Generic a.out, m88k-*-aout* 9660 + Generic SVR4, m88k-*-sysv4 9661 + OpenBSD, m88k-*-openbsd* 9662 * NS32k except 9663 + NetBSD, ns32k-*-netbsd* 9664 + OpenBSD, ns32k-*-openbsd*. 9665 * ROMP except 9666 + OpenBSD, romp-*-openbsd*. 9667 9668 Finally, only some configurations of these processor architectures are 9669 being obsoleted. 9670 * Alpha: 9671 + OSF/1, alpha*-*-osf[123]*. (Digital Unix and Tru64 Unix, aka 9672 alpha*-*-osf[45], are still supported.) 9673 * ARM: 9674 + RISCiX, arm-*-riscix*. 9675 * i386: 9676 + 386BSD, i?86-*-bsd* 9677 + Chorus, i?86-*-chorusos* 9678 + DG/UX, i?86-*-dgux* 9679 + FreeBSD 1.x, i?86-*-freebsd1.* 9680 + IBM AIX, i?86-*-aix* 9681 + ISC UNIX, i?86-*-isc* 9682 + GNU/Linux with pre-BFD linker, i?86-*-linux*oldld* 9683 + NEXTstep, i?86-next-* 9684 + OSF UNIX, i?86-*-osf1* and i?86-*-osfrose* 9685 + RTEMS/coff, i?86-*-rtemscoff* 9686 + RTEMS/go32, i?86-go32-rtems* 9687 + Sequent/BSD, i?86-sequent-bsd* 9688 + Sequent/ptx before version 3, i?86-sequent-ptx[12]* and 9689 i?86-sequent-sysv3* 9690 + SunOS, i?86-*-sunos* 9691 * Motorola 68000: 9692 + Altos, m68[k0]*-altos-* 9693 + Apollo, m68[k0]*-apollo-* 9694 + Apple A/UX, m68[k0]*-apple-* 9695 + Bull, m68[k0]*-bull-* 9696 + Convergent, m68[k0]*-convergent-* 9697 + Generic SVR3, m68[k0]*-*-sysv3* 9698 + ISI, m68[k0]*-isi-* 9699 + LynxOS, m68[k0]*-*-lynxos* 9700 + NEXT, m68[k0]*-next-* 9701 + RTEMS/coff, m68[k0]*-*-rtemscoff* 9702 + Sony, m68[k0]*-sony-* 9703 * MIPS: 9704 + DEC Ultrix, mips-*-ultrix* and mips-dec-* 9705 + Generic BSD, mips-*-bsd* 9706 + Generic System V, mips-*-sysv* 9707 + IRIX before version 5, mips-sgi-irix[1234]* 9708 + RiscOS, mips-*-riscos* 9709 + Sony, mips-sony-* 9710 + Tandem, mips-tandem-* 9711 * SPARC: 9712 + RTEMS/a.out, sparc-*-rtemsaout*. 9713 9714Documentation improvements 9715 9716 * The old manual ("Using and Porting the GNU Compiler Collection") 9717 has been replaced by a users manual ("Using the GNU Compiler 9718 Collection") and a separate internals reference manual ("GNU 9719 Compiler Collection Internals"). 9720 * More complete and much improved documentation about GCC's internal 9721 representation used by the C and C++ front ends. 9722 * Many cleanups and improvements in general. 9723 9724 9725 For questions related to the use of GCC, please consult these web 9726 pages and the [13]GCC manuals. If that fails, the 9727 [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these 9728 web pages and the development of GCC are welcome on our developer 9729 list at [15]gcc@gcc.gnu.org. All of [16]our lists have public 9730 archives. 9731 9732 Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and 9733 distribution of this entire article is permitted in any medium, 9734 provided this notice is preserved. 9735 9736 These pages are [18]maintained by the GCC team. Last modified 9737 2011-04-25[19]. 9738 9739References 9740 9741 1. http://gcc.gnu.org/ml/gcc/2002-07/msg01208.html 9742 2. http://gcc.gnu.org/news/profiledriven.html 9743 3. http://gcc.gnu.org/benchmarks/ 9744 4. http://gcc.gnu.org/gcc-3.1/c99status.html 9745 5. http://gcc.gnu.org/onlinedocs/libstdc++/faq.html 9746 6. http://gcc.gnu.org/onlinedocs/gcc-3.1.1/g77/News.html 9747 7. http://www.adacore.com/home/ 9748 8. http://www-cs-faculty.stanford.edu/~knuth/mmix.html 9749 9. http://www.axis.com/ 9750 10. http://developer.axis.com/ 9751 11. http://www.superh.com/ 9752 12. http://www.x86-64.org/ 9753 13. http://gcc.gnu.org/onlinedocs/ 9754 14. mailto:gcc-help@gcc.gnu.org 9755 15. mailto:gcc@gcc.gnu.org 9756 16. http://gcc.gnu.org/lists.html 9757 17. http://www.fsf.org/ 9758 18. http://gcc.gnu.org/about.html 9759 19. http://validator.w3.org/check/referer 9760====================================================================== 9761http://gcc.gnu.org/gcc-3.0/gcc-3.0.html 9762 9763 GCC 3.0.4 9764 9765 February 20, 2002 9766 9767 The [1]GNU project and the GCC developers are pleased to announce the 9768 release of GCC 3.0.4, which is a bug-fix release for the GCC 3.0 9769 series. 9770 9771 GCC used to stand for the GNU C Compiler, but since the compiler 9772 supports several other languages aside from C, it now stands for the 9773 GNU Compiler Collection. 9774 9775 GCC 3.0.x has several new optimizations, new targets, new languages and 9776 many other new features, relative to GCC 2.95.x. See the [2]new 9777 features page for a more complete list. 9778 9779 A list of [3]successful builds is updated as new information becomes 9780 available. 9781 9782 The GCC developers would like to thank the numerous people that have 9783 contributed new features, test results, bug fixes, etc to GCC. This 9784 [4]amazing group of volunteers is what makes GCC successful. 9785 9786 And finally, we can't in good conscience fail to mention some 9787 [5]caveats to using GCC 3.0.x. 9788 9789 For additional information about GCC please refer to the [6]GCC project 9790 web site or contact the [7]GCC development mailing list. 9791 9792 To obtain GCC please use [8]our mirror sites, or our CVS server. 9793 __________________________________________________________________ 9794 9795Previous 3.0.x Releases 9796 9797 December 20, 2001: GCC 3.0.3 has been released. 9798 October 25, 2001: GCC 3.0.2 has been released. 9799 August 20, 2001: GCC 3.0.1 has been released. 9800 June 18, 2001: GCC 3.0 has been released. 9801 9802 9803 For questions related to the use of GCC, please consult these web 9804 pages and the [9]GCC manuals. If that fails, the 9805 [10]gcc-help@gcc.gnu.org mailing list might help. Comments on these 9806 web pages and the development of GCC are welcome on our developer 9807 list at [11]gcc@gcc.gnu.org. All of [12]our lists have public 9808 archives. 9809 9810 Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and 9811 distribution of this entire article is permitted in any medium, 9812 provided this notice is preserved. 9813 9814 These pages are [14]maintained by the GCC team. Last modified 9815 2011-04-25[15]. 9816 9817References 9818 9819 1. http://www.gnu.org/ 9820 2. http://gcc.gnu.org/gcc-3.0/features.html 9821 3. http://gcc.gnu.org/gcc-3.0/buildstat.html 9822 4. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 9823 5. http://gcc.gnu.org/gcc-3.0/caveats.html 9824 6. http://gcc.gnu.org/index.html 9825 7. mailto:gcc@gcc.gnu.org 9826 8. http://gcc.gnu.org/mirrors.html 9827 9. http://gcc.gnu.org/onlinedocs/ 9828 10. mailto:gcc-help@gcc.gnu.org 9829 11. mailto:gcc@gcc.gnu.org 9830 12. http://gcc.gnu.org/lists.html 9831 13. http://www.fsf.org/ 9832 14. http://gcc.gnu.org/about.html 9833 15. http://validator.w3.org/check/referer 9834====================================================================== 9835http://gcc.gnu.org/gcc-3.0/features.html 9836 9837 GCC 3.0 New Features 9838 9839Additional changes in GCC 3.0.4 9840 9841 * GCC 3.0 now supports newer versions of the [1]NetBSD operating 9842 system, which use the ELF object file format, on x86 processors. 9843 * Correct debugging information is generated from functions that have 9844 lines from multiple files (e.g. yacc output). 9845 * A fix for whitespace handling in the -traditional preprocessor, 9846 which can affect Fortran. 9847 * Fixes to the exception handling runtime. 9848 * More fixes for bad code generation in C++. 9849 * A fix for shared library generation under AIX 4.3. 9850 * Documentation updates. 9851 * Port of GCC to Tensilica's Xtensa processor contributed. 9852 * A fix for compiling the PPC Linux kernel (FAT fs wouldn't link). 9853 9854Additional changes in GCC 3.0.3 9855 9856 * A fix to correct an accidental change to the PowerPC ABI. 9857 * Fixes for bad code generation on a variety of architectures. 9858 * Improvements to the debugging information generated for C++ 9859 classes. 9860 * Fixes for bad code generation in C++. 9861 * A fix to avoid crashes in the C++ demangler. 9862 * A fix to the C++ standard library to avoid buffer overflows. 9863 * Miscellaneous improvements for a variety of architectures. 9864 9865Additional changes in GCC 3.0.2 9866 9867 * Fixes for bad code generation during loop unrolling. 9868 * Fixes for bad code generation by the sibling call optimization. 9869 * Minor improvements to x86 code generation. 9870 * Implementation of function descriptors in C++ vtables for IA64. 9871 * Numerous minor bug-fixes. 9872 9873Additional changes in GCC 3.0.1 9874 9875 * C++ fixes for incorrect code-generation. 9876 * Improved cross-compiling support for the C++ standard library. 9877 * Fixes for some embedded targets that worked in GCC 2.95.3, but not 9878 in GCC 3.0. 9879 * Fixes for various exception-handling bugs. 9880 * A port to the S/390 architecture. 9881 9882General Optimizer Improvements 9883 9884 * [2]Basic block reordering pass. 9885 * New if-conversion pass with support for conditional (predicated) 9886 execution. 9887 * New tail call and sibling call elimination optimizations. 9888 * New register renaming pass. 9889 * New (experimental) [3]static single assignment (SSA) representation 9890 support. 9891 * New dead-code elimination pass implemented using the SSA 9892 representation. 9893 * [4]Global null pointer test elimination. 9894 * [5]Global code hoisting/unification. 9895 * More builtins and optimizations for stdio.h, string.h and old BSD 9896 functions, as well as for ISO C99 functions. 9897 * New builtin __builtin_expect for giving hints to the branch 9898 predictor. 9899 9900New Languages and Language specific improvements 9901 9902 * The GNU Compiler for the Java(TM) language (GCJ) is now integrated 9903 and supported, including the run-time library containing most 9904 common non-GUI Java classes, a bytecode interpreter, and the Boehm 9905 conservative garbage collector. Many bugs have been fixed. GCJ can 9906 compile Java source or Java bytecodes to either native code or Java 9907 class files, and supports native methods written in either the 9908 standard JNI or the more efficient and convenient CNI. 9909 * Here is a [6]partial list of C++ improvements, both new features 9910 and those no longer supported. 9911 * New C++ ABI. On the IA-64 platform GCC is capable of 9912 inter-operating with other IA-64 compilers. 9913 * The new ABI also significantly reduces the size of symbol and debug 9914 information. 9915 * New [7]C++ support library and many C++ bug fixes, vastly improving 9916 our conformance to the ISO C++ standard. 9917 * New [8]inliner for C++. 9918 * Rewritten C preprocessor, integrated into the C, C++ and Objective 9919 C compilers, with very many improvements including ISO C99 support 9920 and [9]improvements to dependency generation. 9921 * Support for more [10]ISO C99 features. 9922 * Many improvements to support for checking calls to format functions 9923 such as printf and scanf, including support for ISO C99 format 9924 features, extensions from the Single Unix Specification and GNU 9925 libc 2.2, checking of strfmon formats and features to assist in 9926 auditing for format string security bugs. 9927 * New warnings for C code that may have undefined semantics because 9928 of violations of sequence point rules in the C standard (such as a 9929 = a++;, a[n] = b[n++]; and a[i++] = i;), included in -Wall. 9930 * Additional warning option -Wfloat-equal. 9931 * Improvements to -Wtraditional. 9932 * Fortran improvements are listed in [11]the Fortran documentation. 9933 9934New Targets and Target Specific Improvements 9935 9936 * New x86 back-end, generating much improved code. 9937 * Support for a generic i386-elf target contributed. 9938 * New option to emit x86 assembly code using Intel style syntax 9939 (-mintel-syntax). 9940 * HPUX 11 support contributed. 9941 * Improved PowerPC code generation, including scheduled prologue and 9942 epilogue. 9943 * Port of GCC to Intel's IA-64 processor contributed. 9944 * Port of GCC to Motorola's MCore 210 and 340 contributed. 9945 * New unified back-end for Arm, Thumb and StrongArm contributed. 9946 * Port of GCC to Intel's XScale processor contributed. 9947 * Port of GCC to Atmel's AVR microcontrollers contributed. 9948 * Port of GCC to Mitsubishi's D30V processor contributed. 9949 * Port of GCC to Matsushita's AM33 processor (a member of the MN10300 9950 processor family) contributed. 9951 * Port of GCC to Fujitsu's FR30 processor contributed. 9952 * Port of GCC to Motorola's 68HC11 and 68HC12 processors contributed. 9953 * Port of GCC to Sun's picoJava processor core contributed. 9954 9955Documentation improvements 9956 9957 * Substantially rewritten and improved C preprocessor manual. 9958 * Many improvements to other documentation. 9959 * Manpages for gcc, cpp and gcov are now generated automatically from 9960 the master Texinfo manual, eliminating the problem of manpages 9961 being out of date. (The generated manpages are only extracts from 9962 the full manual, which is provided in Texinfo form, from which 9963 info, HTML, other formats and a printed manual can be generated.) 9964 * Generated info files are included in the release tarballs alongside 9965 their Texinfo sources, avoiding problems on some platforms with 9966 building makeinfo as part of the GCC distribution. 9967 9968Other significant improvements 9969 9970 * Garbage collection used internally by the compiler for most memory 9971 allocation instead of obstacks. 9972 * Lengauer and Tarjan algorithm used for computing dominators in the 9973 CFG. This algorithm can be significantly faster and more space 9974 efficient than our older algorithm. 9975 * gccbug script provided to assist in submitting bug reports to our 9976 bug tracking system. (Bug reports previously submitted directly to 9977 our mailing lists, for which you received no bug tracking number, 9978 should be submitted again using gccbug if you can reproduce the 9979 problem with GCC 3.0.) 9980 * The internal libgcc library is [12]built as a shared library on 9981 systems that support it. 9982 * Extensive testsuite included with GCC, with many new tests. In 9983 addition to tests for GCC bugs that have been fixed, many tests 9984 have been added for language features, compiler warnings and 9985 builtin functions. 9986 * Additional language-independent warning options -Wpacked, -Wpadded, 9987 -Wunreachable-code and -Wdisabled-optimization. 9988 * Target-independent options -falign-functions, -falign-loops and 9989 -falign-jumps. 9990 9991 Plus a great many bug fixes and almost all the [13]features found in 9992 GCC 2.95. 9993 9994 9995 For questions related to the use of GCC, please consult these web 9996 pages and the [14]GCC manuals. If that fails, the 9997 [15]gcc-help@gcc.gnu.org mailing list might help. Comments on these 9998 web pages and the development of GCC are welcome on our developer 9999 list at [16]gcc@gcc.gnu.org. All of [17]our lists have public 10000 archives. 10001 10002 Copyright (C) [18]Free Software Foundation, Inc. Verbatim copying and 10003 distribution of this entire article is permitted in any medium, 10004 provided this notice is preserved. 10005 10006 These pages are [19]maintained by the GCC team. Last modified 10007 2011-04-25[20]. 10008 10009References 10010 10011 1. http://www.netbsd.org/ 10012 2. http://gcc.gnu.org/news/reorder.html 10013 3. http://gcc.gnu.org/news/ssa.html 10014 4. http://gcc.gnu.org/news/null.html 10015 5. http://gcc.gnu.org/news/unify.html 10016 6. http://gcc.gnu.org/gcc-3.0/c++features.html 10017 7. http://gcc.gnu.org/libstdc++/ 10018 8. http://gcc.gnu.org/news/inlining.html 10019 9. http://gcc.gnu.org/news/dependencies.html 10020 10. http://gcc.gnu.org/gcc-3.0/c99status.html 10021 11. http://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html 10022 12. http://gcc.gnu.org/gcc-3.0/libgcc.html 10023 13. http://gcc.gnu.org/gcc-2.95/features.html 10024 14. http://gcc.gnu.org/onlinedocs/ 10025 15. mailto:gcc-help@gcc.gnu.org 10026 16. mailto:gcc@gcc.gnu.org 10027 17. http://gcc.gnu.org/lists.html 10028 18. http://www.fsf.org/ 10029 19. http://gcc.gnu.org/about.html 10030 20. http://validator.w3.org/check/referer 10031====================================================================== 10032http://gcc.gnu.org/gcc-3.0/caveats.html 10033 10034 GCC 3.0 Caveats 10035 10036 * -fstrict-aliasing is now part of -O2 and higher optimization 10037 levels. This allows the compiler to assume the strictest aliasing 10038 rules applicable to the language being compiled. For C and C++, 10039 this activates optimizations based on the type of expressions. This 10040 optimization may thus break old, non-compliant code. 10041 * Enumerations are now properly promoted to int in function 10042 parameters and function returns. Normally this change is not 10043 visible, but when using -fshort-enums this is an ABI change. 10044 * The undocumented extension that allowed C programs to have a label 10045 at the end of a compound statement has been deprecated and may be 10046 removed in a future version. Programs that now generate a warning 10047 about this may be fixed by adding a null statement (a single 10048 semicolon) after the label. 10049 * The poorly documented extension that allowed string constants in C, 10050 C++ and Objective C to contain unescaped newlines has been 10051 deprecated and may be removed in a future version. Programs using 10052 this extension may be fixed in several ways: the bare newline may 10053 be replaced by \n, or preceded by \n\, or string concatenation may 10054 be used with the bare newline preceded by \n" and " placed at the 10055 start of the next line. 10056 * The Chill compiler is not included in GCC 3.0, because of the lack 10057 of a volunteer to convert it to use garbage collection. 10058 * Certain non-standard iostream methods from earlier versions of 10059 libstdc++ are not included in libstdc++ v3, i.e. filebuf::attach, 10060 ostream::form, and istream::gets. 10061 * The new C++ ABI is not yet fully supported by current (as of 10062 2001-07-01) releases and development versions of GDB, or any 10063 earlier versions. There is a problem setting breakpoints by line 10064 number, and other related issues that have been fixed in GCC 3.0 10065 but not yet handled in GDB: 10066 [1]http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html 10067 10068 10069 For questions related to the use of GCC, please consult these web 10070 pages and the [2]GCC manuals. If that fails, the 10071 [3]gcc-help@gcc.gnu.org mailing list might help. Comments on these 10072 web pages and the development of GCC are welcome on our developer 10073 list at [4]gcc@gcc.gnu.org. All of [5]our lists have public archives. 10074 10075 Copyright (C) [6]Free Software Foundation, Inc. Verbatim copying and 10076 distribution of this entire article is permitted in any medium, 10077 provided this notice is preserved. 10078 10079 These pages are [7]maintained by the GCC team. Last modified 10080 2011-04-25[8]. 10081 10082References 10083 10084 1. http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html 10085 2. http://gcc.gnu.org/onlinedocs/ 10086 3. mailto:gcc-help@gcc.gnu.org 10087 4. mailto:gcc@gcc.gnu.org 10088 5. http://gcc.gnu.org/lists.html 10089 6. http://www.fsf.org/ 10090 7. http://gcc.gnu.org/about.html 10091 8. http://validator.w3.org/check/referer 10092====================================================================== 10093http://gcc.gnu.org/gcc-2.95/index.html 10094 10095 GCC 2.95 10096 10097 March 16, 2001: The GNU project and the GCC developers are pleased to 10098 announce the release of GCC version 2.95.3. 10099 10100Release History 10101 10102 GCC 2.95.3 10103 March 16, 2001 10104 10105 GCC 2.95.2 10106 October 27, 1999 10107 10108 GCC 2.95.1 10109 August 19, 1999 10110 10111 GCC 2.95 10112 July 31, 1999. This is the first release of GCC since the April 10113 1999 GCC/EGCS reunification and includes nearly a year's worth 10114 of new development and bugfixes. 10115 10116References and Acknowledgements 10117 10118 GCC used to stand for the GNU C Compiler, but since the compiler 10119 supports several other languages aside from C, it now stands for the 10120 GNU Compiler Collection. 10121 10122 The whole suite has been extensively [1]regression tested and 10123 [2]package tested. It should be reliable and suitable for widespread 10124 use. 10125 10126 The compiler has several new optimizations, new targets, new languages 10127 and other new features. See the [3]new features page for a more 10128 complete list of new features found in the GCC 2.95 releases. 10129 10130 The sources include installation instructions in both HTML and 10131 plaintext forms in the install directory in the distribution. However, 10132 the most up to date [4]installation instructions and [5]build/test 10133 status are on the web pages. We will update those pages as new 10134 information becomes available. 10135 10136 The GCC developers would like to thank the numerous people that have 10137 contributed new features, test results, bugfixes, etc to GCC. This 10138 [6]amazing group of volunteers is what makes GCC successful. 10139 10140 And finally, we can't in good conscience fail to mention some 10141 [7]caveats to using GCC 2.95. 10142 10143 Download GCC 2.95 from one of our many [8]mirror sites. 10144 10145 For additional information about GCC please see the [9]GCC project web 10146 server or contact the [10]GCC development mailing list. 10147 10148 10149 For questions related to the use of GCC, please consult these web 10150 pages and the [11]GCC manuals. If that fails, the 10151 [12]gcc-help@gcc.gnu.org mailing list might help. Comments on these 10152 web pages and the development of GCC are welcome on our developer 10153 list at [13]gcc@gcc.gnu.org. All of [14]our lists have public 10154 archives. 10155 10156 Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and 10157 distribution of this entire article is permitted in any medium, 10158 provided this notice is preserved. 10159 10160 These pages are [16]maintained by the GCC team. Last modified 10161 2011-04-25[17]. 10162 10163References 10164 10165 1. http://gcc.gnu.org/gcc-2.95/regress.html 10166 2. http://gcc.gnu.org/gcc-2.95/othertest.html 10167 3. http://gcc.gnu.org/gcc-2.95/features.html 10168 4. http://gcc.gnu.org/install/ 10169 5. http://gcc.gnu.org/gcc-2.95/buildstat.html 10170 6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 10171 7. http://gcc.gnu.org/gcc-2.95/caveats.html 10172 8. http://gcc.gnu.org/mirrors.html 10173 9. http://gcc.gnu.org/index.html 10174 10. mailto:gcc@gcc.gnu.org 10175 11. http://gcc.gnu.org/onlinedocs/ 10176 12. mailto:gcc-help@gcc.gnu.org 10177 13. mailto:gcc@gcc.gnu.org 10178 14. http://gcc.gnu.org/lists.html 10179 15. http://www.fsf.org/ 10180 16. http://gcc.gnu.org/about.html 10181 17. http://validator.w3.org/check/referer 10182====================================================================== 10183http://gcc.gnu.org/gcc-2.95/features.html 10184 10185 GCC 2.95 New Features 10186 10187 * General Optimizer Improvements: 10188 + [1]Localized register spilling to improve speed and code 10189 density especially on small register class machines. 10190 + [2]Global CSE using lazy code motion algorithms. 10191 + [3]Improved global constant/copy propagation. 10192 + [4]Improved control flow graph analysis and manipulation. 10193 + [5]Local dead store elimination. 10194 + [6]Memory Load hoisting/store sinking in loops. 10195 + [7]Type based alias analysis is enabled by default. Note this 10196 feature will expose bugs in the Linux kernel. Please refer to 10197 the FAQ (as shipped with GCC 2.95) for additional information 10198 on this issue. 10199 + Major revamp of GIV detection, combination and simplification 10200 to improve loop performance. 10201 + Major improvements to register allocation and reloading. 10202 * New Languages and Language specific improvements 10203 + [8]Many C++ improvements. 10204 + [9]Many Fortran improvements. 10205 + [10]Java front-end has been integrated. [11]runtime library is 10206 available separately. 10207 + [12]ISO C99 support 10208 + [13]Chill front-end and runtime has been integrated. 10209 + Boehm garbage collector support in libobjc. 10210 + More support for various pragmas which appear in vendor 10211 include files 10212 * New Targets and Target Specific Improvements 10213 + [14]SPARC backend rewrite. 10214 + -mschedule=8000 will optimize code for PA8000 class 10215 processors; -mpa-risc-2-0 will generate code for PA2.0 10216 processors 10217 + Various micro-optimizations for the ia32 port. K6 10218 optimizations 10219 + Compiler will attempt to align doubles in the stack on the 10220 ia32 port 10221 + Alpha EV6 support 10222 + PowerPC 750 10223 + RS6000/PowerPC: -mcpu=401 was added as an alias for -mcpu=403. 10224 -mcpu=e603e was added to do -mcpu=603e and -msoft-float. 10225 + c3x, c4x 10226 + HyperSPARC 10227 + SparcLite86x 10228 + sh4 10229 + Support for new systems (OpenBSD, FreeBSD, UWIN, Interix, 10230 arm-linux) 10231 + vxWorks targets include support for vxWorks threads 10232 + StrongARM 110 and ARM9 support added. ARM Scheduling 10233 parameters rewritten. 10234 + Various changes to the MIPS port to avoid assembler macros, 10235 which in turn improves performance 10236 + Various performance improvements to the i960 port. 10237 + Major rewrite of ns32k port 10238 * Other significant improvements 10239 + [15]Ability to dump cfg information and display it using vcg. 10240 + The new faster scheme for fixing vendor header files is 10241 enabled by default. 10242 + Experimental internationalization support. 10243 + multibyte character support 10244 + Some compile-time speedups for pathological problems 10245 + Better support for complex types 10246 * Plus the usual mountain of bugfixes 10247 * Core compiler is based on the gcc2 development tree from Sept 30, 10248 1998, so we have all of the [16]features found in GCC 2.8. 10249 10250Additional Changes in GCC 2.95.1 10251 10252 * Generic bugfixes and improvements 10253 + Various documentation fixes related to the GCC/EGCS merger. 10254 + Fix memory management bug which could lead to spurious aborts, 10255 core dumps or random parsing errors in the compiler. 10256 + Fix a couple bugs in the dwarf1 and dwarf2 debug record 10257 support. 10258 + Fix infinite loop in the CSE optimizer. 10259 + Avoid undefined behavior in compiler FP emulation code 10260 + Fix install problem when prefix is overridden on the make 10261 install command. 10262 + Fix problem with unwanted installation of assert.h on some 10263 systems. 10264 + Fix problem with finding the wrong assembler in a single tree 10265 build. 10266 + Avoid increasing the known alignment of a register that is 10267 already known to be a pointer. 10268 * Platform specific bugfixes and improvements 10269 + Codegen bugfix for prologue/epilogue for cpu32 target. 10270 + Fix long long code generation bug for the Coldfire target. 10271 + Fix various aborts in the SH compiler. 10272 + Fix bugs in libgcc support library for the SH. 10273 + Fix alpha ev6 code generation bug. 10274 + Fix problems with EXIT_SUCCESS/EXIT_FAILURE redefinitions on 10275 AIX platforms. 10276 + Fix -fpic code generation bug for rs6000/ppc svr4 targets. 10277 + Fix varargs/stdarg code generation bug for rs6000/ppc svr4 10278 targets. 10279 + Fix weak symbol handling for rs6000/ppc svr4 targets. 10280 + Fix various problems with 64bit code generation for the 10281 rs6000/ppc port. 10282 + Fix codegen bug which caused tetex to be mis-compiled on the 10283 x86. 10284 + Fix compiler abort in new cfg code exposed by x86 port. 10285 + Fix out of range array reference in code convert flat 10286 registers to the x87 stacked FP register file. 10287 + Fix minor vxworks configuration bug. 10288 + Fix return type of bsearch for SunOS 4.x. 10289 * Language & Runtime specific fixes. 10290 + The G++ signature extension has been deprecated. It will be 10291 removed in the next major release of G++. Use of signatures 10292 will result in a warning from the compiler. 10293 + Several bugs relating to templates and namespaces were fixed. 10294 + A bug that caused crashes when combining templates with -g on 10295 DWARF1 platforms was fixed. 10296 + Pointers-to-members, virtual functions, and multiple 10297 inheritance should now work together correctly. 10298 + Some code-generation bugs relating to function try blocks were 10299 fixed. 10300 + G++ is a little bit more lenient with certain archaic 10301 constructs than in GCC 2.95. 10302 + Fix to prevent shared library version #s from bring truncated 10303 to 1 digit 10304 + Fix missing std:: in the libstdc++ library. 10305 + Fix stream locking problems in libio. 10306 + Fix problem in java compiler driver. 10307 10308Additional Changes in GCC 2.95.2 10309 10310 The -fstrict-aliasing is not enabled by default for GCC 2.95.2. While 10311 the optimizations performed by -fstrict-aliasing are valid according to 10312 the C and C++ standards, the optimization have caused some problems, 10313 particularly with old non-conforming code. 10314 10315 The GCC developers are experimenting with ways to warn users about code 10316 which violates the C/C++ standards, but those warnings are not ready 10317 for widespread use at this time. Rather than wait for those warnings 10318 the GCC developers have chosen to disable -fstrict-aliasing by default 10319 for the GCC 2.95.2 release. 10320 10321 We strongly encourage developers to find and fix code which violates 10322 the C/C++ standards as -fstrict-aliasing may be enabled by default in 10323 future releases. Use the option -fstrict-aliasing to re-enable these 10324 optimizations. 10325 * Generic bugfixes and improvements 10326 + Fix incorrectly optimized memory reference in global common 10327 subexpression elimination (GCSE) optimization pass. 10328 + Fix code generation bug in regmove.c in which it could 10329 incorrectly change a "const" value. 10330 + Fix bug in optimization of conditionals involving volatile 10331 memory references. 10332 + Avoid over-allocation of stack space for some procedures. 10333 + Fixed bug in the compiler which caused incorrect optimization 10334 of an obscure series of bit manipulations, shifts and 10335 arithmetic. 10336 + Fixed register allocator bug which caused teTeX to be 10337 mis-compiled on SPARC targets. 10338 + Avoid incorrect optimization of degenerate case statements for 10339 certain targets such as the ARM. 10340 + Fix out of range memory reference in the jump optimizer. 10341 + Avoid dereferencing null pointer in fix-header. 10342 + Fix test for GCC specific features so that it is possible to 10343 bootstrap with gcc-2.6.2 and older versions of GCC. 10344 + Fix typo in scheduler which could potentially cause out of 10345 range memory accesses. 10346 + Avoid incorrect loop reversal which caused incorrect code for 10347 certain loops on PowerPC targets. 10348 + Avoid incorrect optimization of switch statements on certain 10349 targets (for example the ARM). 10350 * Platform specific bugfixes and improvements 10351 + Work around bug in Sun V5.0 compilers which caused bootstrap 10352 comparison failures on SPARC targets. 10353 + Fix SPARC backend bug which caused aborts in final.c. 10354 + Fix sparc-hal-solaris2* configuration fragments. 10355 + Fix bug in sparc block profiling. 10356 + Fix obscure code generation bug for the PARISC targets. 10357 + Define __STDC_EXT__ for HPUX configurations. 10358 + Various POWERPC64 code generation bugfixes. 10359 + Fix abort for PPC targets using ELF (ex GNU/Linux). 10360 + Fix collect2 problems for AIX targets. 10361 + Correct handling of .file directive for PPC targets. 10362 + Fix bug in fix_trunc x86 patterns. 10363 + Fix x86 port to correctly pop the FP stack for functions that 10364 return structures in memory. 10365 + Fix minor bug in strlen x86 pattern. 10366 + Use stabs debugging instead of dwarf1 for x86-solaris targets. 10367 + Fix template repository code to handle leading underscore in 10368 mangled names. 10369 + Fix weak/weak alias support for OpenBSD. 10370 + GNU/Linux for the ARM has C++ compatible include files. 10371 * Language & Runtime specific fixes. 10372 + Fix handling of constructor attribute in the C front-end which 10373 caused problems building the Chill runtime library on some 10374 targets. 10375 + Fix minor problem merging type qualifiers in the C front-end. 10376 + Fix aliasing bug for pointers and references (C/C++). 10377 + Fix incorrect "non-constant initializer bug" when -traditional 10378 or -fwritable-strings is enabled. 10379 + Fix build error for Chill front-end on SunOS. 10380 + Do not complain about duplicate instantiations when using 10381 -frepo (C++). 10382 + Fix array bounds handling in C++ front-end which caused 10383 problems with dwarf debugging information in some 10384 circumstances. 10385 + Fix minor namespace problem. 10386 + Fix problem linking java programs. 10387 10388Additional Changes in GCC 2.95.3 10389 10390 * Generic bugfixes and improvements 10391 + Fix numerous problems that caused incorrect optimization in 10392 the register reloading code. 10393 + Fix numerous problems that caused incorrect optimization in 10394 the loop optimizer. 10395 + Fix aborts in the functions build_insn_chain and scan_loops 10396 under some circumstances. 10397 + Fix an alias analysis bug. 10398 + Fix an infinite compilation bug in the combiner. 10399 + A few problems with complex number support have been fixed. 10400 + It is no longer possible for gcc to act as a fork bomb when 10401 installed incorrectly. 10402 + The -fpack-struct option should be recognized now. 10403 + Fixed a bug that caused incorrect code to be generated due to 10404 a lost stack adjustment. 10405 * Platform specific bugfixes and improvements 10406 + Support building ARM toolchains hosted on Windows. 10407 + Fix attribute calculations in ARM toolchains. 10408 + arm-linux support has been improved. 10409 + Fix a PIC failure on sparc targets. 10410 + On ix86 targets, the regparm attribute should now work 10411 reliably. 10412 + Several updates for the h8300 port. 10413 + Fix problem building libio with glibc 2.2. 10414 10415 10416 For questions related to the use of GCC, please consult these web 10417 pages and the [17]GCC manuals. If that fails, the 10418 [18]gcc-help@gcc.gnu.org mailing list might help. Comments on these 10419 web pages and the development of GCC are welcome on our developer 10420 list at [19]gcc@gcc.gnu.org. All of [20]our lists have public 10421 archives. 10422 10423 Copyright (C) [21]Free Software Foundation, Inc. Verbatim copying and 10424 distribution of this entire article is permitted in any medium, 10425 provided this notice is preserved. 10426 10427 These pages are [22]maintained by the GCC team. Last modified 10428 2011-04-25[23]. 10429 10430References 10431 10432 1. http://gcc.gnu.org/news/spill.html 10433 2. http://gcc.gnu.org/news/lcm.html 10434 3. http://gcc.gnu.org/news/cprop.html 10435 4. http://gcc.gnu.org/news/cfg.html 10436 5. http://gcc.gnu.org/news/dse.html 10437 6. http://gcc.gnu.org/news/hoist.html 10438 7. http://gcc.gnu.org/news/alias.html 10439 8. http://gcc.gnu.org/gcc-2.95/c++features.html 10440 9. http://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html 10441 10. http://gcc.gnu.org/java/gcj-announce.txt 10442 11. http://gcc.gnu.org/news/javaannounce.html 10443 12. http://gcc.gnu.org/c99status.html 10444 13. http://gcc.gnu.org/news/chill.html 10445 14. http://gcc.gnu.org/news/sparc.html 10446 15. http://gcc.gnu.org/news/egcs-vcg.html 10447 16. http://gcc.gnu.org/egcs-1.0/features-2.8.html 10448 17. http://gcc.gnu.org/onlinedocs/ 10449 18. mailto:gcc-help@gcc.gnu.org 10450 19. mailto:gcc@gcc.gnu.org 10451 20. http://gcc.gnu.org/lists.html 10452 21. http://www.fsf.org/ 10453 22. http://gcc.gnu.org/about.html 10454 23. http://validator.w3.org/check/referer 10455====================================================================== 10456http://gcc.gnu.org/gcc-2.95/caveats.html 10457 10458 GCC 2.95 Caveats 10459 10460 * GCC 2.95 will issue an error for invalid asm statements that had 10461 been silently accepted by earlier versions of the compiler. This is 10462 particularly noticeable when compiling older versions of the Linux 10463 kernel (2.0.xx). Please refer to the FAQ (as shipped with GCC 2.95) 10464 for more information on this issue. 10465 * GCC 2.95 implements type based alias analysis to disambiguate 10466 memory references. Some programs, particularly the Linux kernel 10467 violate ANSI/ISO aliasing rules and therefore may not operate 10468 correctly when compiled with GCC 2.95. Please refer to the FAQ (as 10469 shipped with GCC 2.95) for more information on this issue. 10470 * GCC 2.95 has a known bug in its handling of complex variables for 10471 64bit targets. Instead of silently generating incorrect code, GCC 10472 2.95 will issue a fatal error for situations it can not handle. 10473 This primarily affects the Fortran community as Fortran makes more 10474 use of complex variables than C or C++. 10475 * GCC 2.95 has an integrated libstdc++, but does not have an 10476 integrated libg++. Furthermore old libg++ releases will not work 10477 with GCC 2.95. You can retrieve a recent copy of libg++ from the 10478 [1]GCC ftp server. 10479 Note most C++ programs only need libstdc++. 10480 * Exception handling may not work with shared libraries, particularly 10481 on alphas, hppas, rs6000/powerpc and mips based platforms. 10482 Exception handling is known to work on x86 GNU/Linux platforms with 10483 shared libraries. 10484 * In general, GCC 2.95 is more rigorous about rejecting invalid C++ 10485 code or deprecated C++ constructs than G++ 2.7, G++ 2.8, EGCS 1.0, 10486 or EGCS 1.1. As a result it may be necessary to fix C++ code before 10487 it will compile with GCC 2.95. 10488 * G++ is also converting toward the ISO C++ standard; as a result 10489 code which was previously valid (and thus accepted by other 10490 compilers and older versions of g++) may no longer be accepted. The 10491 flag -fpermissive may allow some non-conforming code to compile 10492 with GCC 2.95. 10493 * GCC 2.95 compiled C++ code is not binary compatible with EGCS 10494 1.1.x, EGCS 1.0.x or GCC 2.8.x. 10495 * GCC 2.95 does not have changes from the GCC 2.8 tree that were made 10496 between Sept 30, 1998 and April 30, 1999 (the official end of the 10497 GCC 2.8 project). Future GCC releases will include all the changes 10498 from the defunct GCC 2.8 sources. 10499 10500 10501 For questions related to the use of GCC, please consult these web 10502 pages and the [2]GCC manuals. If that fails, the 10503 [3]gcc-help@gcc.gnu.org mailing list might help. Comments on these 10504 web pages and the development of GCC are welcome on our developer 10505 list at [4]gcc@gcc.gnu.org. All of [5]our lists have public archives. 10506 10507 Copyright (C) [6]Free Software Foundation, Inc. Verbatim copying and 10508 distribution of this entire article is permitted in any medium, 10509 provided this notice is preserved. 10510 10511 These pages are [7]maintained by the GCC team. Last modified 10512 2011-04-25[8]. 10513 10514References 10515 10516 1. ftp://gcc.gnu.org/pub/gcc/infrastructure/libg++-2.8.1.3.tar.gz 10517 2. http://gcc.gnu.org/onlinedocs/ 10518 3. mailto:gcc-help@gcc.gnu.org 10519 4. mailto:gcc@gcc.gnu.org 10520 5. http://gcc.gnu.org/lists.html 10521 6. http://www.fsf.org/ 10522 7. http://gcc.gnu.org/about.html 10523 8. http://validator.w3.org/check/referer 10524====================================================================== 10525http://gcc.gnu.org/egcs-1.1/index.html 10526 10527 EGCS 1.1 10528 10529 September 3, 1998: We are pleased to announce the release of EGCS 1.1. 10530 December 1, 1998: We are pleased to announce the release of EGCS 1.1.1. 10531 March 15, 1999: We are pleased to announce the release of EGCS 1.1.2. 10532 10533 EGCS is a free software project to further the development of the GNU 10534 compilers using an open development environment. 10535 10536 EGCS 1.1 is a major new release of the EGCS compiler system. It has 10537 been [1]extensively tested and is believed to be stable and suitable 10538 for widespread use. 10539 10540 EGCS 1.1 is based on an June 6, 1998 snapshot of the GCC 2.8 10541 development sources; it contains all of the new features found in GCC 10542 2.8.1 as well as all new development from GCC up to June 6, 1998. 10543 10544 EGCS 1.1 also contains many improvements and features not found in GCC 10545 or in older versions of EGCS: 10546 * Global common subexpression elimination and global constant/copy 10547 propagation (aka [2]gcse) 10548 * Ongoing improvements to the [3]alias analysis support to allow for 10549 better optimizations throughout the compiler. 10550 * Vastly improved [4]C++ compiler and integrated C++ runtime 10551 libraries. 10552 * Fixes for the /tmp symlink race security problems. 10553 * New targets including mips16, arm-thumb and 64 bit PowerPC. 10554 * Improvements to GNU Fortran (g77) compiler and runtime library made 10555 since g77 version 0.5.23. 10556 10557 See the [5]new features page for a more complete list of new features 10558 found in EGCS 1.1 releases. 10559 10560 EGCS 1.1.1 is a minor update to fix several serious problems in EGCS 10561 1.1: 10562 * General improvements and fixes 10563 + Avoid some stack overflows when compiling large functions. 10564 + Avoid incorrect loop invariant code motions. 10565 + Fix some core dumps on Linux kernel code. 10566 + Bring back the imake -Di386 and friends fix from EGCS 1.0.2. 10567 + Fix code generation problem in gcse. 10568 + Various documentation related fixes. 10569 * g++/libstdc++ improvements and fixes 10570 + MT safe EH fix for setjmp/longjmp based exception handling. 10571 + Fix a few bad interactions between optimization and exception 10572 handling. 10573 + Fixes for demangling of template names starting with "__". 10574 + Fix a bug that would fail to run destructors in some cases 10575 with -O2. 10576 + Fix 'new' of classes with virtual bases. 10577 + Fix crash building Qt on the Alpha. 10578 + Fix failure compiling WIFEXITED macro on GNU/Linux. 10579 + Fix some -frepo failures. 10580 * g77 and libf2c improvements and fixes 10581 + Various documentation fixes. 10582 + Avoid compiler crash on RAND intrinsic. 10583 + Fix minor bugs in makefiles exposed by BSD make programs. 10584 + Define _XOPEN_SOURCE for libI77 build to avoid potential 10585 problems on some 64-bit systems. 10586 + Fix problem with implicit endfile on rewind. 10587 + Fix spurious recursive I/O errors. 10588 * platform specific improvements and fixes 10589 + Match all versions of UnixWare7. 10590 + Do not assume x86 SVR4 or UnixWare targets can handle stabs. 10591 + Fix PPC/RS6000 LEGITIMIZE_ADDRESS macro and bug in conversion 10592 from unsigned ints to double precision floats. 10593 + Fix ARM ABI issue with NetBSD. 10594 + Fix a few arm code generation bugs. 10595 + Fixincludes will fix additional broken SCO OpenServer header 10596 files. 10597 + Fix a m68k backend bug which caused invalid offsets in reg+d 10598 addresses. 10599 + Fix problems with 64bit AIX 4.3 support. 10600 + Fix handling of long longs for varargs/stdarg functions on the 10601 ppc. 10602 + Minor fixes to CPP predefines for Windows. 10603 + Fix code generation problems with gpr<->fpr copies for 64bit 10604 ppc. 10605 + Fix a few coldfire code generation bugs. 10606 + Fix some more header file problems on SunOS 4.x. 10607 + Fix assert.h handling for RTEMS. 10608 + Fix Windows handling of TREE_SYMBOL_REFERENCED. 10609 + Fix x86 compiler abort in reg-stack pass. 10610 + Fix cygwin/windows problem with section attributes. 10611 + Fix Alpha code generation problem exposed by SMP Linux 10612 kernels. 10613 + Fix typo in m68k 32->64bit integer conversion. 10614 + Make sure target libraries build with -fPIC for PPC & Alpha 10615 targets. 10616 10617 EGCS 1.1.2 is a minor update to fix several serious problems in EGCS 10618 1.1.1: 10619 * General improvements and fixes 10620 + Fix bug in loop optimizer which caused the SPARC (and 10621 potentially other) ports to segfault. 10622 + Fix infinite recursion in alias analysis and combiner code. 10623 + Fix bug in regclass preferencing. 10624 + Fix incorrect loop reversal which caused incorrect code to be 10625 generated for several targets. 10626 + Fix return value for builtin memcpy. 10627 + Reduce compile time for certain loops which exposed quadratic 10628 behavior in the loop optimizer. 10629 + Fix bug which caused volatile memory to be written multiple 10630 times when only one write was needed/desired. 10631 + Fix compiler abort in caller-save.c 10632 + Fix combiner bug which caused incorrect code generation for 10633 certain division by constant operations. 10634 + Fix incorrect code generation due to a bug in range check 10635 optimizations. 10636 + Fix incorrect code generation due to mis-handling of clobbered 10637 values in CSE. 10638 + Fix compiler abort/segfault due to incorrect register 10639 splitting when unrolling loops. 10640 + Fix code generation involving autoincremented addresses with 10641 ternary operators. 10642 + Work around bug in the scheduler which caused qt to be 10643 mis-compiled on some platforms. 10644 + Fix code generation problems with -fshort-enums. 10645 + Tighten security for temporary files. 10646 + Improve compile time for codes which make heavy use of 10647 overloaded functions. 10648 + Fix multiply defined constructor/destructor symbol problems. 10649 + Avoid setting bogus RPATH environment variable during 10650 bootstrap. 10651 + Avoid GNU-make dependencies in the texinfo subdir. 10652 + Install CPP wrapper script in $(prefix)/bin if --enable-cpp. 10653 --enable-cpp=<dirname> can be used to specify an additional 10654 install directory for the cpp wrapper script. 10655 + Fix CSE bug which caused incorrect label-label refs to appear 10656 on some platforms. 10657 + Avoid linking in EH routines from libgcc if they are not 10658 needed. 10659 + Avoid obscure bug in aliasing code. 10660 + Fix bug in weak symbol handling. 10661 * Platform-specific improvements and fixes 10662 + Fix detection of PPro/PII on Unixware 7. 10663 + Fix compiler segfault when building spec99 and other programs 10664 for SPARC targets. 10665 + Fix code-generation bugs for integer and floating point 10666 conditional move instructions on the PPro/PII. 10667 + Use fixincludes to fix byteorder problems on i?86-*-sysv. 10668 + Fix build failure for the arc port. 10669 + Fix floating point format configuration for i?86-gnu port. 10670 + Fix problems with hppa1.0-hp-hpux10.20 configuration when 10671 threads are enabled. 10672 + Fix coldfire code generation bugs. 10673 + Fix "unrecognized insn" problems for Alpha and PPC ports. 10674 + Fix h8/300 code generation problem with floating point values 10675 in memory. 10676 + Fix unrecognized insn problems for the m68k port. 10677 + Fix namespace-pollution problem for the x86 port. 10678 + Fix problems with old assembler on x86 NeXT systems. 10679 + Fix PIC code-generation problems for the SPARC port. 10680 + Fix minor bug with LONG_CALLS in PowerPC SVR4 support. 10681 + Fix minor ISO namespace violation in Alpha varargs/stdarg 10682 support. 10683 + Fix incorrect "braf" instruction usage for the SH port. 10684 + Fix minor bug in va-sh which prevented its use with -ansi. 10685 + Fix problems recognizing and supporting FreeBSD. 10686 + Handle OpenBSD systems correctly. 10687 + Minor fixincludes fix for Digital UNIX 4.0B. 10688 + Fix problems with ctors/dtors in SCO shared libraries. 10689 + Abort instead of generating incorrect code for PPro/PII 10690 floating point conditional moves. 10691 + Avoid multiply defined symbols on GNU/Linux systems using 10692 libc-5.4.xx. 10693 + Fix abort in alpha compiler. 10694 * Fortran-specific fixes 10695 + Fix the IDate intrinsic (VXT) (in libg2c) so the returned year 10696 is in the documented, non-Y2K-compliant range of 0-99, instead 10697 of being returned as 100 in the year 2000. 10698 + Fix the `Date_and_Time' intrinsic (in libg2c) to return the 10699 milliseconds value properly in Values(8). 10700 + Fix the `LStat' intrinsic (in libg2c) to return device-ID 10701 information properly in SArray(7). 10702 10703 Each release includes installation instructions in both HTML and 10704 plaintext forms (see the INSTALL directory in the toplevel directory of 10705 the distribution). However, we also keep the most up to date 10706 [6]installation instructions and [7]build/test status on our web page. 10707 We will update those pages as new information becomes available. 10708 10709 The EGCS project would like to thank the numerous people that have 10710 contributed new features, test results, bugfixes, etc. This [8]amazing 10711 group of volunteers is what makes EGCS successful. 10712 10713 And finally, we can't in good conscience fail to mention some 10714 [9]caveats to using EGCS 1.1. 10715 10716 Download EGCS from egcs.cygnus.com (USA California). 10717 10718 The EGCS 1.1 release is also available on many mirror sites. 10719 [10]Goto mirror list to find a closer site. 10720 10721 10722 For questions related to the use of GCC, please consult these web 10723 pages and the [11]GCC manuals. If that fails, the 10724 [12]gcc-help@gcc.gnu.org mailing list might help. Comments on these 10725 web pages and the development of GCC are welcome on our developer 10726 list at [13]gcc@gcc.gnu.org. All of [14]our lists have public 10727 archives. 10728 10729 Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and 10730 distribution of this entire article is permitted in any medium, 10731 provided this notice is preserved. 10732 10733 These pages are [16]maintained by the GCC team. Last modified 10734 2011-10-24[17]. 10735 10736References 10737 10738 1. http://gcc.gnu.org/egcs-1.1/egcs-1.1-test.html 10739 2. http://gcc.gnu.org/news/gcse.html 10740 3. http://gcc.gnu.org/news/alias.html 10741 4. http://gcc.gnu.org/egcs-1.1/c++features.html 10742 5. http://gcc.gnu.org/egcs-1.1/features.html 10743 6. http://gcc.gnu.org/install/ 10744 7. http://gcc.gnu.org/egcs-1.1/buildstat.html 10745 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 10746 9. http://gcc.gnu.org/egcs-1.1/caveats.html 10747 10. http://gcc.gnu.org/mirrors.html 10748 11. http://gcc.gnu.org/onlinedocs/ 10749 12. mailto:gcc-help@gcc.gnu.org 10750 13. mailto:gcc@gcc.gnu.org 10751 14. http://gcc.gnu.org/lists.html 10752 15. http://www.fsf.org/ 10753 16. http://gcc.gnu.org/about.html 10754 17. http://validator.w3.org/check/referer 10755====================================================================== 10756http://gcc.gnu.org/egcs-1.1/features.html 10757 10758 EGCS 1.1 new features 10759 10760 * Integrated GNU Fortran (g77) compiler and runtime library with 10761 improvements, based on g77 version 0.5.23. 10762 * Vast improvements in the C++ compiler; so many they have [1]page of 10763 their own! 10764 * Compiler implements [2]global common subexpression elimination and 10765 global copy/constant propagation. 10766 * More major improvements in the [3]alias analysis code. 10767 * More major improvements in the exception handling code to improve 10768 performance, lower static overhead and provide the infrastructure 10769 for future improvements. 10770 * The infamous /tmp symlink race security problems have been fixed. 10771 * The regmove optimization pass has been nearly completely rewritten 10772 to improve performance of generated code. 10773 * The compiler now recomputes register usage information before local 10774 register allocation. By providing more accurate information to the 10775 priority based allocator, we get better register allocation. 10776 * The register reloading phase of the compiler optimizes spill code 10777 much better than in previous releases. 10778 * Some bad interactions between the register allocator and 10779 instruction scheduler have been fixed, resulting in much better 10780 code for certain programs. Additionally, we have tuned the 10781 scheduler in various ways to improve performance of generated code 10782 for some architectures. 10783 * The compiler's branch shortening algorithms have been significantly 10784 improved to work better on targets which align jump targets. 10785 * The compiler now supports -Os to prefer optimizing for code space 10786 over optimizing for code speed. 10787 * The compiler will now totally eliminate library calls which compute 10788 constant values. This primarily helps targets with no integer 10789 div/mul support and targets without floating point support. 10790 * The compiler now supports an extensive "--help" option. 10791 * cpplib has been greatly improved and may be suitable for limited 10792 use. 10793 * Memory footprint for the compiler has been significantly reduced 10794 for some pathological cases. 10795 * The time to build EGCS has been improved for certain targets 10796 (particularly the alpha and mips platforms). 10797 * Many infrastructure improvements throughout the compiler, plus the 10798 usual mountain of bugfixes and minor improvements. 10799 * Target dependent improvements: 10800 + SPARC port now includes V8 plus and V9 support as well as 10801 performance tuning for Ultra class machines. The SPARC port 10802 now uses the Haifa scheduler. 10803 + Alpha port has been tuned for the EV6 processor and has an 10804 optimized expansion of memcpy/bzero. The Alpha port now uses 10805 the Haifa scheduler. 10806 + RS6000/PowerPC: support for the Power64 architecture and AIX 10807 4.3. The RS6000/PowerPC port now uses the Haifa scheduler. 10808 + x86: Alignment of static store data and jump targets is per 10809 Intel recommendations now. Various improvements throughout the 10810 x86 port to improve performance on Pentium processors 10811 (including improved epilogue sequences for Pentium chips and 10812 backend improvements which should help register allocation on 10813 all x86 variants. Conditional move support has been fixed and 10814 enabled for PPro processors. The x86 port also better supports 10815 64bit operations now. Unixware 7, a System V Release 5 target, 10816 is now supported and SCO OpenServer targets can support GAS. 10817 + MIPS has improved multiply/multiply-add support and now 10818 includes mips16 ISA support. 10819 + M68k has many micro-optimizations and Coldfire fixes. 10820 * Core compiler is based on the GCC development tree from June 9, 10821 1998, so we have all of the [4]features found in GCC 2.8. 10822 10823 10824 For questions related to the use of GCC, please consult these web 10825 pages and the [5]GCC manuals. If that fails, the 10826 [6]gcc-help@gcc.gnu.org mailing list might help. Comments on these 10827 web pages and the development of GCC are welcome on our developer 10828 list at [7]gcc@gcc.gnu.org. All of [8]our lists have public archives. 10829 10830 Copyright (C) [9]Free Software Foundation, Inc. Verbatim copying and 10831 distribution of this entire article is permitted in any medium, 10832 provided this notice is preserved. 10833 10834 These pages are [10]maintained by the GCC team. Last modified 10835 2011-04-25[11]. 10836 10837References 10838 10839 1. http://gcc.gnu.org/egcs-1.1/c++features.html 10840 2. http://gcc.gnu.org/news/gcse.html 10841 3. http://gcc.gnu.org/news/alias.html 10842 4. http://gcc.gnu.org/egcs-1.0/features-2.8.html 10843 5. http://gcc.gnu.org/onlinedocs/ 10844 6. mailto:gcc-help@gcc.gnu.org 10845 7. mailto:gcc@gcc.gnu.org 10846 8. http://gcc.gnu.org/lists.html 10847 9. http://www.fsf.org/ 10848 10. http://gcc.gnu.org/about.html 10849 11. http://validator.w3.org/check/referer 10850====================================================================== 10851http://gcc.gnu.org/egcs-1.1/caveats.html 10852 10853 EGCS 1.1 Caveats 10854 10855 * EGCS has an integrated libstdc++, but does not have an integrated 10856 libg++. Furthermore old libg++ releases will not work with EGCS; HJ 10857 Lu has made a libg++-2.8.1.2 snapshot available which may work with 10858 EGCS. 10859 Note most C++ programs only need libstdc++. 10860 * Exception handling may not work with shared libraries, particularly 10861 on alphas, hppas, rs6000/powerpc and mips based platforms. 10862 Exception handling is known to work on x86-linux platforms with 10863 shared libraries. 10864 * Some versions of the Linux kernel have bugs which prevent them from 10865 being compiled or from running when compiled by EGCS. See the FAQ 10866 (as shipped with EGCS 1.1) for additional information. 10867 * In general, EGCS is more rigorous about rejecting invalid C++ code 10868 or deprecated C++ constructs than g++-2.7, g++-2.8 or EGCS 1.0. As 10869 a result it may be necessary to fix C++ code before it will compile 10870 with EGCS. 10871 * G++ is also converting toward the ISO C++ standard; as a result 10872 code which was previously valid (and thus accepted by other 10873 compilers and older versions of g++) may no longer be accepted. 10874 * EGCS 1.1 compiled C++ code is not binary compatible with EGCS 1.0.x 10875 or GCC 2.8.x due to changes necessary to support thread safe 10876 exception handling. 10877 10878 10879 For questions related to the use of GCC, please consult these web 10880 pages and the [1]GCC manuals. If that fails, the 10881 [2]gcc-help@gcc.gnu.org mailing list might help. Comments on these 10882 web pages and the development of GCC are welcome on our developer 10883 list at [3]gcc@gcc.gnu.org. All of [4]our lists have public archives. 10884 10885 Copyright (C) [5]Free Software Foundation, Inc. Verbatim copying and 10886 distribution of this entire article is permitted in any medium, 10887 provided this notice is preserved. 10888 10889 These pages are [6]maintained by the GCC team. Last modified 10890 2011-04-25[7]. 10891 10892References 10893 10894 1. http://gcc.gnu.org/onlinedocs/ 10895 2. mailto:gcc-help@gcc.gnu.org 10896 3. mailto:gcc@gcc.gnu.org 10897 4. http://gcc.gnu.org/lists.html 10898 5. http://www.fsf.org/ 10899 6. http://gcc.gnu.org/about.html 10900 7. http://validator.w3.org/check/referer 10901====================================================================== 10902http://gcc.gnu.org/egcs-1.0/index.html 10903 10904 EGCS 1.0 10905 10906 December 3, 1997: We are pleased to announce the release of EGCS 1.0. 10907 January 6, 1998: We are pleased to announce the release of EGCS 1.0.1. 10908 March 16, 1998: We are pleased to announce the release of EGCS 1.0.2. 10909 May 15, 1998 We are pleased to announce the release of EGCS 1.0.3. 10910 10911 EGCS is a collaborative effort involving several groups of hackers 10912 using an open development model to accelerate development and testing 10913 of GNU compilers and runtime libraries. 10914 10915 An important goal of EGCS is to allow wide scale testing of 10916 experimental features and optimizations; therefore, EGCS contains some 10917 features and optimizations which are still under development. However, 10918 EGCS has been carefully tested and should be comparable in quality to 10919 most GCC releases. 10920 10921 EGCS 1.0 is based on an August 2, 1997 snapshot of the GCC 2.8 10922 development sources; it contains nearly all of the new features found 10923 in GCC 2.8. 10924 10925 EGCS 1.0 also contains many improvements and features not found in GCC 10926 2.7 and even the GCC 2.8 series (which was released after the original 10927 EGCS 1.0 release). 10928 * Integrated C++ runtime libraries, including support for most major 10929 GNU/Linux systems! 10930 * The integrated libstdc++ library includes a verbatim copy of SGI's 10931 STL release. 10932 * Integrated GNU Fortran compiler. 10933 * New instruction scheduler. 10934 * New alias analysis code. 10935 10936 See the [1]new features page for a more complete list of new features. 10937 10938 EGCS 1.0.1 is a minor update to the EGCS 1.0 compiler to fix a few 10939 critical bugs and add support for Red Hat 5.0 Linux. Changes since the 10940 EGCS 1.0 release: 10941 * Add support for Red Hat 5.0 Linux and better support for Linux 10942 systems using glibc2. 10943 Many programs failed to link when compiled with EGCS 1.0 on Red Hat 10944 5.0 or on systems with newer versions of glibc2. EGCS 1.0.1 should 10945 fix these problems. 10946 * Compatibility with both EGCS 1.0 and GCC 2.8 libgcc exception 10947 handling interfaces. 10948 To avoid future compatibility problems, we strongly urge anyone who 10949 is planning on distributing shared libraries that contain C++ code 10950 to upgrade to EGCS 1.0.1 first. 10951 Soon after EGCS 1.0 was released, the GCC developers made some 10952 incompatible changes in libgcc's exception handling interfaces. 10953 These changes were needed to solve problems on some platforms. This 10954 means that GCC 2.8.0, when released, will not be seamlessly 10955 compatible with shared libraries built by EGCS 1.0. The reason is 10956 that the libgcc.a in GCC 2.8.0 will not contain a function needed 10957 by the old interface. 10958 The result of this is that there may be compatibility problems with 10959 shared libraries built by EGCS 1.0 when used with GCC 2.8.0. 10960 With EGCS 1.0.1, generated code uses the new (GCC 2.8.0) interface, 10961 and libgcc.a has the support routines for both the old and the new 10962 interfaces (so EGCS 1.0.1 and EGCS 1.0 code can be freely mixed, 10963 and EGCS 1.0.1 and GCC 2.8.0 code can be freely mixed). 10964 The maintainers of GCC 2.x have decided against including seamless 10965 support for the old interface in 2.8.0, since it was never 10966 "official", so to avoid future compatibility problems we recommend 10967 against distributing any shared libraries built by EGCS 1.0 that 10968 contain C++ code (upgrade to 1.0.1 and use that). 10969 * Various bugfixes in the x86, hppa, mips, and rs6000/ppc backends. 10970 The x86 changes fix code generation errors exposed when building 10971 glibc2 and the usual GNU/Linux dynamic linker (ld.so). 10972 The hppa change fixes a compiler abort when configured for use with 10973 RTEMS. 10974 The MIPS changes fix problems with the definition of LONG_MAX on 10975 newer systems, allow for command line selection of the target ABI, 10976 and fix one code generation problem. 10977 The rs6000/ppc change fixes some problems with passing structures 10978 to varargs/stdarg functions. 10979 * A few machine independent bugfixes, mostly to fix code generation 10980 errors when building Linux kernels or glibc. 10981 * Fix a few critical exception handling and template bugs in the C++ 10982 compiler. 10983 * Fix Fortran namelist bug on alphas. 10984 * Fix build problems on x86-solaris systems. 10985 10986 EGCS 1.0.2 is a minor update to the EGCS 1.0.1 compiler to fix several 10987 serious problems in EGCS 1.0.1. 10988 * General improvements and fixes 10989 + Memory consumption significantly reduced, especially for 10990 templates and inline functions. 10991 + Fix various problems with glibc2.1. 10992 + Fix loop optimization bug exposed by rs6000/ppc port. 10993 + Fix to avoid potential code generation problems in jump.c. 10994 + Fix some undefined symbol problems in dwarf1 debug support. 10995 * g++/libstdc++ improvements and fixes 10996 + libstdc++ in the EGCS release has been updated and should be 10997 link compatible with libstdc++-2.8. 10998 + Various fixes in libio/libstdc++ to work better on GNU/Linux 10999 systems. 11000 + Fix problems with duplicate symbols on systems that do not 11001 support weak symbols. 11002 + Memory corruption bug and undefined symbols in bastring have 11003 been fixed. 11004 + Various exception handling fixes. 11005 + Fix compiler abort for very long thunk names. 11006 * g77 improvements and fixes 11007 + Fix compiler crash for omitted bound in Fortran CASE 11008 statement. 11009 + Add missing entries to g77 lang-options. 11010 + Fix problem with -fpedantic in the g77 compiler. 11011 + Fix "backspace" problem with g77 on alphas. 11012 + Fix x86 backend problem with Fortran literals and -fpic. 11013 + Fix some of the problems with negative subscripts for g77 on 11014 alphas. 11015 + Fixes for Fortran builds on cygwin32/mingw32. 11016 * platform specific improvements and fixes 11017 + Fix long double problems on x86 (exposed by glibc). 11018 + x86 ports define i386 again to keep imake happy. 11019 + Fix exception handling support on NetBSD ports. 11020 + Several changes to collect2 to fix many problems with AIX. 11021 + Define __ELF__ for GNU/Linux on rs6000. 11022 + Fix -mcall-linux problem on GNU/Linux on rs6000. 11023 + Fix stdarg/vararg problem for GNU/Linux on rs6000. 11024 + Allow autoconf to select a proper install problem on AIX 3.1. 11025 + m68k port support includes -mcpu32 option as well as cpu32 11026 multilibs. 11027 + Fix stdarg bug for irix6. 11028 + Allow EGCS to build on irix5 without the gnu assembler. 11029 + Fix problem with static linking on sco5. 11030 + Fix bootstrap on sco5 with native compiler. 11031 + Fix for abort building newlib on H8 target. 11032 + Fix fixincludes handling of math.h on SunOS. 11033 + Minor fix for Motorola 3300 m68k systems. 11034 11035 EGCS 1.0.3 is a minor update to the EGCS 1.0.2 compiler to fix a few 11036 problems reported by Red Hat for builds of Red Hat 5.1. 11037 * Generic bugfixes: 11038 + Fix a typo in the libio library which resulted in incorrect 11039 behavior of istream::get. 11040 + Fix the Fortran negative array index problem. 11041 + Fix a major problem with the ObjC runtime thread support 11042 exposed by glibc2. 11043 + Reduce memory consumption of the Haifa scheduler. 11044 * Target specific bugfixes: 11045 + Fix one x86 floating point code generation bug exposed by 11046 glibc2 builds. 11047 + Fix one x86 internal compiler error exposed by glibc2 builds. 11048 + Fix profiling bugs on the Alpha. 11049 + Fix ImageMagick & emacs 20.2 build problems on the Alpha. 11050 + Fix rs6000/ppc bug when converting values from integer types 11051 to floating point types. 11052 11053 The EGCS 1.0 releases include installation instructions in both HTML 11054 and plaintext forms (see the INSTALL directory in the toplevel 11055 directory of the distribution). However, we also keep the most up to 11056 date [2]installation instructions and [3]build/test status on our web 11057 page. We will update those pages as new information becomes available. 11058 11059 And, we can't in good conscience fail to mention some [4]caveats to 11060 using EGCS. 11061 11062 Update: Big thanks to Stanford for providing a high speed link for 11063 downloading EGCS (go.cygnus.com)! 11064 11065 Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com 11066 (USA California -- High speed link provided by Stanford). 11067 11068 The EGCS 1.0 release is also available many mirror sites. 11069 [5]Goto mirror list to find a closer site 11070 11071 We'd like to thank the numerous people that have contributed new 11072 features, test results, bugfixes, etc. Unfortunately, they're far too 11073 numerous to mention by name. 11074 11075 11076 For questions related to the use of GCC, please consult these web 11077 pages and the [6]GCC manuals. If that fails, the 11078 [7]gcc-help@gcc.gnu.org mailing list might help. Comments on these 11079 web pages and the development of GCC are welcome on our developer 11080 list at [8]gcc@gcc.gnu.org. All of [9]our lists have public archives. 11081 11082 Copyright (C) [10]Free Software Foundation, Inc. Verbatim copying and 11083 distribution of this entire article is permitted in any medium, 11084 provided this notice is preserved. 11085 11086 These pages are [11]maintained by the GCC team. Last modified 11087 2011-10-24[12]. 11088 11089References 11090 11091 1. http://gcc.gnu.org/egcs-1.0/features.html 11092 2. http://gcc.gnu.org/install/ 11093 3. http://gcc.gnu.org/egcs-1.0/buildstat.html 11094 4. http://gcc.gnu.org/egcs-1.0/caveats.html 11095 5. http://gcc.gnu.org/mirrors.html 11096 6. http://gcc.gnu.org/onlinedocs/ 11097 7. mailto:gcc-help@gcc.gnu.org 11098 8. mailto:gcc@gcc.gnu.org 11099 9. http://gcc.gnu.org/lists.html 11100 10. http://www.fsf.org/ 11101 11. http://gcc.gnu.org/about.html 11102 12. http://validator.w3.org/check/referer 11103====================================================================== 11104http://gcc.gnu.org/egcs-1.0/features.html 11105 11106 EGCS 1.0 features 11107 11108 * Core compiler is based on the gcc2 development tree from Aug 2, 11109 1997, so we have most of the [1]features found in GCC 2.8. 11110 * Integrated GNU Fortran compiler based on g77-0.5.22-19970929. 11111 * Vast improvements in the C++ compiler; so many they have [2]page of 11112 their own! 11113 * Integrated C++ runtime libraries, including support for most major 11114 GNU/Linux systems! 11115 * New instruction scheduler from IBM Haifa which includes support for 11116 function wide instruction scheduling as well as superscalar 11117 scheduling. 11118 * Significantly improved alias analysis code. 11119 * Improved register allocation for two address machines. 11120 * Significant code generation improvements for Fortran code on 11121 Alphas. 11122 * Various optimizations from the g77 project as well as improved loop 11123 optimizations. 11124 * Dwarf2 debug format support for some targets. 11125 * egcs libstdc++ includes the SGI STL implementation without changes. 11126 * As a result of these and other changes, egcs libstc++ is not binary 11127 compatible with previous releases of libstdc++. 11128 * Various new ports -- UltraSPARC, Irix6.2 & Irix6.3 support, The SCO 11129 Openserver 5 family (5.0.{0,2,4} and Internet FastStart 1.0 and 11130 1.1), Support for RTEMS on several embedded targets, Support for 11131 arm-linux, Mitsubishi M32R, Hitachi H8/S, Matsushita MN102 and 11132 MN103, NEC V850, Sparclet, Solaris & GNU/Linux on PowerPCs, etc. 11133 * Integrated testsuites for gcc, g++, g77, libstdc++ and libio. 11134 * RS6000/PowerPC ports generate code which can run on all 11135 RS6000/PowerPC variants by default. 11136 * -mcpu= and -march= switches for the x86 port to allow better 11137 control over how the x86 port generates code. 11138 * Includes the template repository patch (aka repo patch); note the 11139 new template code makes repo obsolete for ELF systems using gnu-ld 11140 such as GNU/Linux. 11141 * Plus the usual assortment of bugfixes and improvements. 11142 11143 11144 For questions related to the use of GCC, please consult these web 11145 pages and the [3]GCC manuals. If that fails, the 11146 [4]gcc-help@gcc.gnu.org mailing list might help. Comments on these 11147 web pages and the development of GCC are welcome on our developer 11148 list at [5]gcc@gcc.gnu.org. All of [6]our lists have public archives. 11149 11150 Copyright (C) [7]Free Software Foundation, Inc. Verbatim copying and 11151 distribution of this entire article is permitted in any medium, 11152 provided this notice is preserved. 11153 11154 These pages are [8]maintained by the GCC team. Last modified 11155 2011-10-24[9]. 11156 11157References 11158 11159 1. http://gcc.gnu.org/egcs-1.0/features-2.8.html 11160 2. http://gcc.gnu.org/egcs-1.0/c++features.html 11161 3. http://gcc.gnu.org/onlinedocs/ 11162 4. mailto:gcc-help@gcc.gnu.org 11163 5. mailto:gcc@gcc.gnu.org 11164 6. http://gcc.gnu.org/lists.html 11165 7. http://www.fsf.org/ 11166 8. http://gcc.gnu.org/about.html 11167 9. http://validator.w3.org/check/referer 11168====================================================================== 11169http://gcc.gnu.org/egcs-1.0/caveats.html 11170 11171 EGCS 1.0 Caveats 11172 11173 * EGCS has an integrated libstdc++, but does not have an integrated 11174 libg++. Furthermore old libg++ releases will not work with egc; HJ 11175 Lu has made a libg++-2.8.1.2 available which may work with EGCS. 11176 Note most C++ programs only need libstdc++. 11177 * Note that using -pedantic or -Wreturn-type can cause an explosion 11178 in the amount of memory needed for template-heavy C++ code, such as 11179 code that uses STL. Also note that -Wall includes -Wreturn-type, so 11180 if you use -Wall you will need to specify -Wno-return-type to turn 11181 it off. 11182 * Exception handling may not work with shared libraries, particularly 11183 on alphas, hppas, and mips based platforms. Exception handling is 11184 known to work on x86-linux platforms with shared libraries. 11185 * Some versions of the Linux kernel have bugs which prevent them from 11186 being compiled or from running when compiled by EGCS. See the FAQ 11187 (as shipped with EGCS 1.0) for additional information. 11188 * In general, EGCS is more rigorous about rejecting invalid C++ code 11189 or deprecated C++ constructs than G++ 2.7. As a result it may be 11190 necessary to fix C++ code before it will compile with EGCS. 11191 * G++ is also aggressively tracking the C++ standard; as a result 11192 code which was previously valid (and thus accepted by other 11193 compilers and older versions of G++) may no longer be accepted. 11194 * EGCS 1.0 may not work with Red Hat Linux 5.0 on all targets. EGCS 11195 1.0.x and later releases should work with Red Hat Linux 5.0. 11196 11197 11198 For questions related to the use of GCC, please consult these web 11199 pages and the [1]GCC manuals. If that fails, the 11200 [2]gcc-help@gcc.gnu.org mailing list might help. Comments on these 11201 web pages and the development of GCC are welcome on our developer 11202 list at [3]gcc@gcc.gnu.org. All of [4]our lists have public archives. 11203 11204 Copyright (C) [5]Free Software Foundation, Inc. Verbatim copying and 11205 distribution of this entire article is permitted in any medium, 11206 provided this notice is preserved. 11207 11208 These pages are [6]maintained by the GCC team. Last modified 11209 2011-04-25[7]. 11210 11211References 11212 11213 1. http://gcc.gnu.org/onlinedocs/ 11214 2. mailto:gcc-help@gcc.gnu.org 11215 3. mailto:gcc@gcc.gnu.org 11216 4. http://gcc.gnu.org/lists.html 11217 5. http://www.fsf.org/ 11218 6. http://gcc.gnu.org/about.html 11219 7. http://validator.w3.org/check/referer 11220====================================================================== 11221