diff options
Diffstat (limited to 'debian/NEWS.gcc')
-rw-r--r-- | debian/NEWS.gcc | 707 |
1 files changed, 707 insertions, 0 deletions
diff --git a/debian/NEWS.gcc b/debian/NEWS.gcc new file mode 100644 index 0000000..11e6954 --- /dev/null +++ b/debian/NEWS.gcc @@ -0,0 +1,707 @@ +This file contains information about GCC releases which has been generated +automatically from the online release notes. It covers releases of GCC +(and the former EGCS project) since EGCS 1.0, on the line of development +that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2, +see ONEWS. + +====================================================================== +http://gcc.gnu.org/gcc-6/index.html + GCC 6 Release Series + + April 27, 2015 + + The [1]GNU project and the GCC developers are pleased to announce the + release of GCC 6.1. + + This release is a major release, containing new features (as well as + many other improvements) relative to GCC 5.x. + +Release History + + GCC 6.1 + April 27, 2015 ([2]changes, [3]documentation) + +References and Acknowledgements + + GCC used to stand for the GNU C Compiler, but since the compiler + supports several other languages aside from C, it now stands for the + GNU Compiler Collection. + + A list of [4]successful builds is updated as new information becomes + available. + + The GCC developers would like to thank the numerous people that have + contributed new features, improvements, bug fixes, and other changes as + well as test results to GCC. This [5]amazing group of volunteers is + what makes GCC successful. + + For additional information about GCC please refer to the [6]GCC project + web site or contact the [7]GCC development mailing list. + + To obtain GCC please use [8]our mirror sites or [9]our SVN server. + + + For questions related to the use of GCC, please consult these web + pages and the [10]GCC manuals. If that fails, the + [11]gcc-help@gcc.gnu.org mailing list might help. Comments on these + web pages and the development of GCC are welcome on our developer + list at [12]gcc@gcc.gnu.org. All of [13]our lists have public + archives. + + Copyright (C) [14]Free Software Foundation, Inc. Verbatim copying and + distribution of this entire article is permitted in any medium, + provided this notice is preserved. + + These pages are [15]maintained by the GCC team. Last modified + 2016-04-27[16]. + +References + + 1. http://www.gnu.org/ + 2. http://gcc.gnu.org/gcc-6/changes.html + 3. http://gcc.gnu.org/onlinedocs/6.1.0/ + 4. http://gcc.gnu.org/gcc-6/buildstat.html + 5. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html + 6. http://gcc.gnu.org/index.html + 7. mailto:gcc@gcc.gnu.org + 8. http://gcc.gnu.org/mirrors.html + 9. http://gcc.gnu.org/svn.html + 10. https://gcc.gnu.org/onlinedocs/ + 11. mailto:gcc-help@gcc.gnu.org + 12. mailto:gcc@gcc.gnu.org + 13. https://gcc.gnu.org/lists.html + 14. http://www.fsf.org/ + 15. https://gcc.gnu.org/about.html + 16. http://validator.w3.org/check/referer +====================================================================== +http://gcc.gnu.org/gcc-6/changes.html + GCC 6 Release Series + Changes, New Features, and Fixes + + This page is a brief summary of some of the huge number of improvements + in GCC 6. For more information, see the [1]Porting to GCC 6 page and + the [2]full GCC documentation. + +Caveats + + * The default mode for C++ is now -std=gnu++14 instead of + -std=gnu++98. + * Support for a number of older systems and recently unmaintained or + untested target ports of GCC has been declared obsolete in GCC 6. + Unless there is activity to revive them, the next release of GCC + will have their sources permanently removed. + The following ports for individual systems on particular + architectures have been obsoleted: + + SH5 / SH64 (sh64-*-*) as announced [3]here. + +General Optimizer Improvements + + * UndefinedBehaviorSanitizer gained a new sanitization option, + -fsanitize=bounds-strict, which enables strict checking of array + bounds. In particular, it enables -fsanitize=bounds as well as + instrumentation of flexible array member-like arrays. + * Type-based alias analysis now disambiguates accesses to different + pointers. This improves precision of the alias oracle by about + 20-30% on higher-level C++ programs. Programs doing invalid type + punning of pointer types may now need -fno-strict-aliasing to work + correctly. + * Alias analysis now correctly supports weakref and alias attributes. + This makes it possible to access both a variable and its alias in + one translation unit which is common with link-time optimization. + * Value range propagation now assumes that the this pointer of C++ + member functions is non-null. This eliminates common null pointer + checks but also breaks some non-conforming code-bases (such as + Qt-5, Chromium, KDevelop). As a temporary work-around + -fno-delete-null-pointer-checks can be used. Wrong code can be + identified by using -fsanitize=undefined. + * Link-time optimization improvements: + + warning and error attributes are now correctly preserved by + declaration linking and thus -D_FORTIFY_SOURCE=2 is now + supported with -flto. + + Type merging was fixed to handle C and Fortran + interoperability rules as defined by the Fortran 2008 language + standard. + As an exception, CHARACTER(KIND=C_CHAR) is not inter-operable + with char in all cases because it is an array while char is + scalar. INTEGER(KIND=C_SIGNED_CHAR) should be used instead. In + general, this inter-operability cannot be implemented, for + example, on targets where function passing conventions of + arrays differs from scalars. + + More type information is now preserved at link time reducing + the loss of accuracy of the type based alias analysis compared + to builds without link-time optimization. + + Invalid type punning on global variables and declarations is + now reported with -Wodr-type-mismatch. + + The size of LTO object files was reduced by about 11% + (measured by compiling Firefox 46.0). + + Link-time parallelization (enabled using -flto=n) was + significantly improved by decreasing the size of streamed data + when partitioning programs. The size of streamed IL while + compiling Firefox 46.0 was reduced by 66%. + + The linker plugin was extended to pass information about type + of binary produced to GCC back end (that can be also manually + controlled by -flinker-output). This makes it possible to + properly configure the code generator and support incremental + linking. Incremental linking of LTO objects by gcc -r is now + supported on plugin-enabled setups. + There are two ways to perform incremental linking: + 1. Linking by ld -r will result in an object file with all + sections from individual object files mechanically + merged. This delays the actual link time optimization to + final linking step and thus permits whole program + optimization. Linking final binary with such object files + is however slower. + 2. Linking by gcc -r will lead to link time optimization and + produce final binary into the object file. Linking such + object file is fast but avoids any benefits from whole + program optimization. + GCC 7 will support incremental link-time optimization with gcc + -r. + * Inter-procedural optimization improvements: + + Basic jump threading is now performed before profile + construction and inline analysis, resulting in more realistic + size and time estimates that drive the heuristics of the of + inliner and function cloning passes. + + Function cloning now more aggressively eliminates unused + function parameters. + +New Languages and Language specific improvements + + Compared to GCC 5, the GCC 6 release series includes a much improved + implementation of the [4]OpenACC 2.0a specification. Highlights are: + * In addition to single-threaded host-fallback execution, offloading + is supported for nvptx (Nvidia GPUs) on x86_64 and PowerPC 64-bit + little-endian GNU/Linux host systems. For nvptx offloading, with + the OpenACC parallel construct, the execution model allows for an + arbitrary number of gangs, up to 32 workers, and 32 vectors. + * Initial support for parallelized execution of OpenACC kernels + constructs: + + Parallelization of a kernels region is switched on by + -fopenacc combined with -O2 or higher. + + Code is offloaded onto multiple gangs, but executes with just + one worker, and a vector length of 1. + + Directives inside a kernels region are not supported. + + Loops with reductions can be parallelized. + + Only kernels regions with one loop nest are parallelized. + + Only the outer-most loop of a loop nest can be parallelized. + + Loop nests containing sibling loops are not parallelized. + Typically, using the OpenACC parallel construct gives much better + performance, compared to the initial support of the OpenACC kernels + construct. + * The device_type clause is not supported. The bind and nohost + clauses are not supported. The host_data directive is not supported + in Fortran. + * Nested parallelism (cf. CUDA dynamic parallelism) is not supported. + * Usage of OpenACC constructs inside multithreaded contexts (such as + created by OpenMP, or pthread programming) is not supported. + * If a call to the acc_on_device function has a compile-time constant + argument, the function call evaluates to a compile-time constant + value only for C and C++ but not for Fortran. + + See the [5]OpenACC and [6]Offloading wiki pages for further + information. + + C family + + * Version 4.5 of the [7]OpenMP specification is now supported in the + C and C++ compilers. + * The C and C++ compilers now support attributes on enumerators. For + instance, it is now possible to mark enumerators as deprecated: + +enum { + newval, + oldval __attribute__ ((deprecated ("too old"))) +}; + + * Source locations for the C and C++ compilers are now tracked as + ranges, rather than just points, making it easier to identify the + subexpression of interest within a complicated expression. For + example: + +test.cc: In function 'int test(int, int, foo, int, int)': +test.cc:5:16: error: no match for 'operator*' (operand types are 'int' and 'foo' +) + return p + q * r * s + t; + ~~^~~ + + In addition, there is now initial support for precise diagnostic + locations within strings: + +format-strings.c:3:14: warning: field width specifier '*' expects a matching 'in +t' argument [-Wformat=] + printf("%*d"); + ^ + + * Diagnostics can now contain "fix-it hints", which are displayed in + context underneath the relevant source code. For example: + +fixits.c: In function 'bad_deref': +fixits.c:11:13: error: 'ptr' is a pointer; did you mean to use '->'? + return ptr.x; + ^ + -> + + * The C and C++ compilers now offer suggestions for misspelled field + names: + +spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did +you mean 'color'? + return ptr->colour; + ^~~~~~ + + * New command-line options have been added for the C and C++ + compilers: + + -Wshift-negative-value warns about left shifting a negative + value. + + -Wshift-overflow warns about left shift overflows. This + warning is enabled by default. -Wshift-overflow=2 also warns + about left-shifting 1 into the sign bit. + + -Wtautological-compare warns if a self-comparison always + evaluates to true or false. This warning is enabled by -Wall. + + -Wnull-dereference warns if the compiler detects paths that + trigger erroneous or undefined behavior due to dereferencing a + null pointer. This option is only active when + -fdelete-null-pointer-checks is active, which is enabled by + optimizations in most targets. The precision of the warnings + depends on the optimization options used. + + -Wduplicated-cond warns about duplicated conditions in an + if-else-if chain. + + -Wmisleading-indentation warns about places where the + indentation of the code gives a misleading idea of the block + structure of the code to a human reader. For example, given + [8]CVE-2014-1266: + +sslKeyExchange.c: In function 'SSLVerifySignedServerKeyExchange': +sslKeyExchange.c:629:3: warning: this 'if' clause does not guard... [-Wmisleadin +g-indentation] + if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0) + ^~ +sslKeyExchange.c:631:5: note: ...this statement, but the latter is misleadingly +indented as if it is guarded by the 'if' + goto fail; + ^~~~ + + This warning is enabled by -Wall. + * The C and C++ compilers now emit saner error messages if + merge-conflict markers are present in a source file. + +test.c:3:1: error: version control conflict marker in file + <<<<<<< HEAD + ^~~~~~~ + + C + + * It is possible to disable warnings when an initialized field of a + structure or a union with side effects is being overridden when + using designated initializers via a new warning option + -Woverride-init-side-effects. + * A new type attribute scalar_storage_order applying to structures + and unions has been introduced. It specifies the storage order (aka + endianness) in memory of scalar fields in structures or unions. + + C++ + + * The default mode has been changed to -std=gnu++14. + * [9]C++ Concepts are now supported when compiling with -fconcepts. + * -flifetime-dse is more aggressive in dead-store elimination in + situations where a memory store to a location precedes a + constructor to the memory location. + * G++ now supports [10]C++17 fold expressions, u8 character literals, + extended static_assert, and nested namespace definitions. + * G++ now allows constant evaluation for all non-type template + arguments. + * G++ now supports C++ Transactional Memory when compiling with + -fgnu-tm. + + Runtime Library (libstdc++) + + * Extensions to the C++ Library to support mathematical special + functions (ISO/IEC 29124:2010), thanks to Edward Smith-Rowland. + * Experimental support for C++17, including the following new + features: + + std::uncaught_exceptions function (this is also available for + -std=gnu++NN modes); + + new member functions try_emplace and insert_or_assign for + unique_key maps; + + non-member functions std::size, std::empty, and std::data for + accessing containers and arrays; + + std::invoke; + + std::shared_mutex; + + std::void_t and std::bool_constant metaprogramming utilities. + Thanks to Ville Voutilainen for contributing many of the C++17 + features. + * An experimental implementation of the File System TS. + * Experimental support for most features of the second version of the + Library Fundamentals TS. This includes polymorphic memory resources + and array support in shared_ptr, thanks to Fan You. + * Some assertions checked by Debug Mode can now also be enabled by + _GLIBCXX_ASSERTIONS. The subset of checks enabled by the new macro + have less run-time overhead than the full _GLIBCXX_DEBUG checks and + don't affect the library ABI, so can be enabled per-translation + unit. + * Timed mutex types are supported on more targets, including Darwin. + * Improved std::locale support for DragonFly and FreeBSD, thanks to + John Marino and Andreas Tobler. + + Fortran + + * The MATMUL intrinsic is now inlined for straightforward cases if + front-end optimization is active. The maximum size for inlining can + be set to n with the -finline-matmul-limit=n option and turned off + with -finline-matmul-llimit=0. + * The -Wconversion-extra option will warn about REAL constants which + have excess precision for their kind. + * The -Winteger-division option has been added, which warns about + divisions of integer constants which are truncated. This option is + included in -Wall by default. + +libgccjit + + * The driver code is now run in-process within libgccjit, providing a + small speed-up of the compilation process. + * The API has gained entrypoints for + + [11]timing how long was spent in different parts of code, + + [12]creating switch statements, + + [13]allowing unreachable basic blocks in a function, and + + [14]adding arbitrary command-line options to a compilation. + +New Targets and Target Specific Improvements + + AArch64 + + * The new command line options -march=native, -mcpu=native and + -mtune=native are now available on native AArch64 GNU/Linux + systems. Specifying these options will cause GCC to auto-detect the + host CPU and rewrite these options to the optimal setting for that + system. If GCC is unable to detect the host CPU these options have + no effect. + * -fpic is now supported by the AArch64 target when generating code + for the small code model (-mcmodel=small). The size of the global + offset table (GOT) is limited to 28KiB under the LP64 SysV ABI , + and 15KiB under the ILP32 SysV ABI. + * The AArch64 port now supports target attributes and pragmas. Please + refer to the [15]documentation for details of available attributes + and pragmas as well as usage instructions. + * Link-time optimization across translation units with different + target-specific options is now supported. + + ARM + + * Support for revisions of the ARM architecture prior to ARMv4t has + been deprecated and will be removed in a future GCC release. The + -mcpu and -mtune values that are deprecated are: arm2, arm250, + arm3, arm6, arm60, arm600, arm610, arm620, arm7, arm7d, arm7di, + arm70, arm700, arm700i, arm710, arm720, arm710c, arm7100, arm7500, + arm7500fe, arm7m, arm7dm, arm7dmi, arm8, arm810, strongarm, + strongarm110, strongarm1100, strongarm1110, fa526, fa626. The value + arm7tdmi is still supported. The values of -march that are + deprecated are: armv2,armv2a,armv3,armv3m,armv4. + * The ARM port now supports target attributes and pragmas. Please + refer to the [16]documentation for details of available attributes + and pragmas as well as usage instructions. + * Support has been added for the following processors (GCC + identifiers in parentheses): ARM Cortex-A32 (cortex-a32), ARM + Cortex-A35 (cortex-a35). The GCC identifiers can be used as + arguments to the -mcpu or -mtune options, for example: + -mcpu=cortex-a32 or -mtune=cortex-a35. + + Heterogeneous Systems Architecture + + * GCC can now generate HSAIL (Heterogeneous System Architecture + Intermediate Language) for simple OpenMP device constructs if + configured with --enable-offload-targets=hsa. A new libgomp plugin + then runs the HSA GPU kernels implementing these constructs on HSA + capable GPUs via a standard HSA run time. + If the HSA compilation back end determines it cannot output HSAIL + for a particular input, it gives a warning by default. These + warnings can be suppressed with -Wno-hsa. To give a few examples, + the HSA back end does not implement compilation of code using + function pointers, automatic allocation of variable sized arrays, + functions with variadic arguments as well as a number of other less + common programming constructs. + When compilation for HSA is enabled, the compiler attempts to + compile composite OpenMP constructs + +#pragma omp target teams distribute parallel for + + into parallel HSA GPU kernels. + + IA-32/x86-64 + + * GCC now supports the Intel CPU named Skylake with AVX-512 + extensions through -march=skylake-avx512. The switch enables the + following ISA extensions: AVX-512F, AVX512VL, AVX-512CD, AVX-512BW, + AVX-512DQ. + * Support for new AMD instructions monitorx and mwaitx has been + added. This includes new intrinsic and built-in support. It is + enabled through option -mmwaitx. The instructions monitorx and + mwaitx implement the same functionality as the old monitor and + mwait instructions. In addition mwaitx adds a configurable timer. + The timer value is received as third argument and stored in + register %ebx. + * x86-64 targets now allow stack realignment from a word-aligned + stack pointer using the command-line option -mstackrealign or + __attribute__ ((force_align_arg_pointer)). This allows functions + compiled with a vector-aligned stack to be invoked from objects + that keep only word-alignment. + * Support for address spaces __seg_fs, __seg_gs, and __seg_tls. These + can be used to access data via the %fs and %gs segments without + having to resort to inline assembly. Please refer to the + [17]documentation for usage instructions. + * Support for AMD Zen (family 17h) processors is now available + through the -march=znver1 and -mtune=znver1 options. + + MeP + + * Support for the MeP (mep-elf) architecture has been deprecated and + will be removed in a future GCC release. + + MSP430 + + * The MSP430 compiler now has the ability to automatically distribute + code and data between low memory (addresses below 64K) and high + memory. This only applies to parts that actually have both memory + regions and only if the linker script for the part has been + specifically set up to support this feature. + A new attribute of either can be applied to both functions and + data, and this tells the compiler to place the object into low + memory if there is room and into high memory otherwise. Two other + new attributes - lower and upper - can be used to explicitly state + that an object should be placed in the specified memory region. If + there is not enough left in that region the compilation will fail. + Two new command-line options - -mcode-region=[lower|upper|either] + and -mdata-region=[lower|upper|either] - can be used to tell the + compiler what to do with objects that do not have one of these new + attributes. + + PowerPC / PowerPC64 / RS6000 + + * PowerPC64 now supports IEEE 128-bit floating-point using the + __float128 data type. In GCC 6, this is NOT enabled by default, but + you can enable it with -mfloat128. The IEEE 128-bit floating-point + support requires the use of the VSX instruction set. IEEE 128-bit + floating-point values are passed and returned as a single vector + value. The software emulator for IEEE 128-bit floating-point + support is only built on PowerPC Linux systems where the default + cpu is at least power7. On future ISA 3.0 systems (power9 and + later), you will be able to use the -mfloat128-hardware option to + use the ISA 3.0 instructions that support IEEE 128-bit + floating-point. An additional type (__ibm128) has been added to + refer to the IBM extended double type that normally implements long + double. This will allow for a future transition to implementing + long double with IEEE 128-bit floating-point. + * Basic support has been added for POWER9 hardware that will use the + recently published OpenPOWER ISA 3.0 instructions. The following + new switches are available: + + -mcpu=power9: Implement all of the ISA 3.0 instructions + supported by the compiler. + + -mtune=power9: In the future, apply tuning for POWER9 systems. + Currently, POWER8 tunings are used. + + -mmodulo: Generate code using the ISA 3.0 integer instructions + (modulus, count trailing zeros, array index support, integer + multiply/add). + + -mpower9-fusion: Generate code to suitably fuse instruction + sequences for a POWER9 system. + + -mpower9-dform: Generate code to use the new D-form (register + +offset) memory instructions for the vector registers. + + -mpower9-vector: Generate code using the new ISA 3.0 vector + (VSX or Altivec) instructions. + + -mpower9-minmax: Reserved for future development. + + -mtoc-fusion: Keep TOC entries together to provide more fusion + opportunities. + * New constraints have been added to support IEEE 128-bit + floating-point and ISA 3.0 instructions: + + wb: Altivec register if -mpower9-dform is enabled. + + we: VSX register if -mpower9-vector is enabled for 64-bit code + generation. + + wo: VSX register if -mpower9-vector is enabled. + + wp: Reserved for future use if long double is implemented with + IEEE 128-bit floating-point instead of IBM extended double. + + wq: VSX register if -mfloat128 is enabled. + + wF: Memory operand suitable for POWER9 fusion load/store. + + wG: Memory operand suitable for TOC fusion memory references. + + wL: Integer constant identifying the element number mfvsrld + accesses within a vector. + * Support has been added for __builtin_cpu_is () and + __builtin_cpu_supports (), allowing for very fast access to + AT_PLATFORM, AT_HWCAP, and AT_HWCAP2 values. This requires use of + glibc 2.23 or later. + * All hardware transactional memory builtins now correctly behave as + memory barriers. Programmers can use #ifdef __TM_FENCE__ to + determine whether their "old" compiler treats the builtins as + barriers. + * Split-stack support has been added for gccgo on PowerPC64 for both + big- and little-endian (but NOT for 32-bit). The gold linker from + at least binutils 2.25.1 must be available in the PATH when + configuring and building gccgo to enable split stack. (The + requirement for binutils 2.25.1 applies to PowerPC64 only.) The + split-stack feature allows a small initial stack size to be + allocated for each goroutine, which increases as needed. + * GCC on PowerPC now supports the standard lround function. + * A new configuration option ---with-advance-toolchain=at was added + for PowerPC 64-bit GNU/Linux systems to use the header files, + library files, and the dynamic linker from a specific Advance + Toolchain release instead of the default versions that are provided + by the GNU/Linux distribution. In general, this option is intended + for the developers of GCC, and it is not intended for general use. + * The "q", "S", "T", and "t" asm-constraints have been removed. + * The "b", "B", "m", "M", and "W" format modifiers have been removed. + + S/390, System z, IBM z Systems + + * Support for the IBM z13 processor has been added. When using the + -march=z13 option, the compiler will generate code making use of + the new instructions and registers introduced with the vector + extension facility. The -mtune=z13 option enables z13 specific + instruction scheduling without making use of new instructions. + Compiling code with -march=z13 reduces the default alignment of + vector types bigger than 8 bytes to 8. This is an ABI change and + care must be taken when linking modules compiled with different + arch levels which interchange variables containing vector type + values. For newly compiled code the GNU linker will emit a warning. + * The -mzvector option enables a C/C++ language extension. This + extension provides a new keyword vector which can be used to define + vector type variables. (Note: This is not available when enforcing + strict standard compliance e.g. with -std=c99. Either enable GNU + extensions with e.g. -std=gnu99 or use __vector instead of vector.) + Additionally a set of overloaded builtins is provided which is + partially compatible to the PowerPC Altivec builtins. In order to + make use of these builtins the vecintrin.h header file needs to be + included. + * The new command line options -march=native, and -mtune=native are + now available on native IBM z Systems. Specifying these options + will cause GCC to auto-detect the host CPU and rewrite these + options to the optimal setting for that system. If GCC is unable to + detect the host CPU these options have no effect. + * The IBM z Systems port now supports target attributes and pragmas. + Please refer to the [18]documentation for details of available + attributes and pragmas as well as usage instructions. + * -fsplit-stack is now supported as part of the IBM z Systems port. + This feature requires a recent gold linker to be used. + * Support for the g5 and g6 -march=/-mtune= CPU level switches has + been deprecated and will be removed in a future GCC release. -m31 + from now on defaults to -march=z900 if not specified otherwise. + -march=native on a g5/g6 machine will default to -march=z900. + + SH + + * Support for SH5 / SH64 has been declared obsolete and will be + removed in future releases. + * Support for the FDPIC ABI has been added. It can be enabled using + the new -mfdpic target option and --enable-fdpic configure option. + + SPARC + + * An ABI bug has been fixed in 64-bit mode. Unfortunately, this + change will break binary compatibility with earlier releases for + code it affects, but this should be pretty rare in practice. The + conditions are: a 16-byte structure containing a double or a 8-byte + vector in the second half is passed to a subprogram in slot #15, + for example as 16th parameter if the first 15 ones have at most 8 + bytes. The double or vector was wrongly passed in floating-point + register %d32 in lieu of on the stack as per the SPARC calling + conventions. + +Operating Systems + + Linux + + * Support for the [19]musl C library was added for the AArch64, ARM, + MicroBlaze, MIPS, MIPS64, PowerPC, PowerPC64, SH, i386, x32 and + x86_64 targets. It can be selected using the new -mmusl option in + case musl is not the default libc. GCC defaults to musl libc if it + is built with a target triplet matching the *-linux-musl* pattern. + + RTEMS + + * The RTEMS thread model implementation changed. Mutexes now use + self-contained objects defined in Newlib <sys/lock.h> instead of + Classic API semaphores. The keys for thread specific data and the + once function are directly defined via <pthread.h>. Self-contained + condition variables are provided via Newlib <sys/lock.h>. The RTEMS + thread model also supports C++11 threads. + * OpenMP support now uses self-contained objects provided by Newlib + <sys/lock.h> and offers a significantly better performance compared + to the POSIX configuration of libgomp. It is possible to configure + thread pools for each scheduler instance via the environment + variable GOMP_RTEMS_THREAD_POOLS. + + AIX + + * DWARF debugging support for AIX 7.1 has been enabled as an optional + debugging format. A more recent Technology Level (TL) and GCC built + with that level are required for full exploitation of DWARF + debugging capabilities. + + Solaris + + * Solaris 12 is now fully supported. Minimal support had already been + present in GCC 5.3. + * Solaris 12 provides a full set of startup files (crt1.o, crti.o, + crtn.o), which GCC now prefers over its own ones. + * Position independent executables (PIE) are now supported on Solaris + 12. + * Constructor priority is now supported on Solaris 12 with the system + linker. + * libvtv has been ported to Solaris 11 and up. + + Windows + + * The option -mstackrealign is now automatically activated in 32-bit + mode whenever the use of SSE instructions is requested. + +Other significant improvements + + * The gcc and g++ driver programs will now provide suggestions for + misspelled command line options. + +$ gcc -static-libfortran test.f95 +gcc: error: unrecognized command line option '-static-libfortran'; did you mean +'-static-libgfortran'? + + * The --enable-default-pie configure option enables generation of PIE + by default. + + + For questions related to the use of GCC, please consult these web + pages and the [20]GCC manuals. If that fails, the + [21]gcc-help@gcc.gnu.org mailing list might help. Comments on these + web pages and the development of GCC are welcome on our developer + list at [22]gcc@gcc.gnu.org. All of [23]our lists have public + archives. + + Copyright (C) [24]Free Software Foundation, Inc. Verbatim copying and + distribution of this entire article is permitted in any medium, + provided this notice is preserved. + + These pages are [25]maintained by the GCC team. Last modified + 2016-04-25[26]. + +References + + 1. http://gcc.gnu.org/gcc-6/porting_to.html + 2. http://gcc.gnu.org/onlinedocs/index.html#current + 3. https://gcc.gnu.org/ml/gcc/2015-08/msg00101.html + 4. http://www.openacc.org/ + 5. https://gcc.gnu.org/wiki/OpenACC + 6. https://gcc.gnu.org/wiki/Offloading + 7. http://openmp.org/wp/openmp-specifications/ + 8. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-1266 + 9. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4377.pdf + 10. https://gcc.gnu.org/projects/cxx-status.html#cxx1z.html + 11. https://gcc.gnu.org/onlinedocs/jit/topics/performance.html + 12. https://gcc.gnu.org/onlinedocs/jit/topics/functions.html#gcc_jit_block_end_with_switch + 13. https://gcc.gnu.org/onlinedocs/jit/topics/contexts.html#gcc_jit_context_set_bool_allow_unreachable_blocks + 14. https://gcc.gnu.org/onlinedocs/jit/topics/contexts.html#gcc_jit_context_add_command_line_option + 15. https://gcc.gnu.org/onlinedocs/gcc/AArch64-Function-Attributes.html#AArch64-Function-Attributes + 16. https://gcc.gnu.org/onlinedocs/gcc/ARM-Function-Attributes.html#ARM-Function-Attributes + 17. https://gcc.gnu.org/onlinedocs/gcc/Named-Address-Spaces.html#Named-Address-Spaces + 18. https://gcc.gnu.org/onlinedocs/gcc/S_002f390-Function-Attributes.html#S_002f390-Function-Attributes + 19. http://www.musl-libc.org/ + 20. https://gcc.gnu.org/onlinedocs/ + 21. mailto:gcc-help@gcc.gnu.org + 22. mailto:gcc@gcc.gnu.org + 23. https://gcc.gnu.org/lists.html + 24. http://www.fsf.org/ + 25. https://gcc.gnu.org/about.html + 26. http://validator.w3.org/check/referer |