./lang/gcc12, The GNU Compiler Collection (GCC) - 12.0 Release Series

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 12.1.0nb1, Package name: gcc12-12.1.0nb1, Maintainer: pkgsrc-users

The GNU Compiler Collection (GCC) includes front ends for C, C++, Objective-C,
Fortran, and Go.



Package options: gcc-c++, gcc-fortran, gcc-graphite, gcc-inplace-math, gcc-objc, gcc-objc++, nls

Master sites: (Expand)

Filesize: 80763.602 KB

Version history: (Expand)


CVS history: (Expand)


   2022-06-28 13:38:00 by Thomas Klausner | Files touched by this commit (3952)
Log message:
*: recursive bump for perl 5.36
   2022-06-16 17:43:55 by Adam Ciarcinski | Files touched by this commit (30)
Log message:
gcc12: added version 12.1.0

GCC 12

Caveats

An ABI incompatibility between C and C++ when passing or returning by value \ 
certain aggregates containing zero width bit-fields has been discovered on \ 
various targets. As mentioned in PR102024, since the PR42217 fix in GCC 4.5 the \ 
C++ front-end has been removing zero width bit-fields from the internal \ 
representation of the aggregates after the layout of those aggregates, but the C \ 
front-end kept them, so passing e.g. struct S { float a; int : 0; float b; } or \ 
struct T { float c; int : 0; } by value could differ between C and C++. Starting \ 
with GCC 12 the C++ front-end no longer removes those bit-fields from the \ 
internal representation and per clarified psABI some targets have been changed, \ 
so that they either ignore those bit-fields in the argument passing by value \ 
decisions in both C and C++, or they always take them into account. x86-64, ARM \ 
and AArch64 will always ignore them (so there is a C ABI incompatibility between \ 
GCC 11 and earlier with GCC 12 or later), PowerPC64 E
LFv2 and S/390 always take them into account (so there is a C++ ABI \ 
incompatibility, GCC 4.4 and earlier compatible with GCC 12 or later, \ 
incompatible with GCC 4.5 through GCC 11). RISC-V has changed the handling of \ 
these already starting with GCC 10. As the ABI requires, MIPS takes them into \ 
account handling function return values so there is a C++ ABI incompatibility \ 
with GCC 4.5 through 11. For function arguments on MIPS, refer to the MIPS \ 
specific entry. GCC 12 on the above targets will report such incompatibilities \ 
as warnings or other diagnostics unless -Wno-psabi is used.
C: Computed gotos require a pointer type now.
C++: Two non-standard std::pair constructors have been deprecated. These allowed \ 
the use of an rvalue and a literal 0 to construct a pair containing a move-only \ 
type and a pointer. The nullptr keyword should be used to initialize the pointer \ 
member instead of a literal 0, as this is portable to other C++ implementations.
The configuration option --enable-libstdcxx-allocator no longer supports the \ 
bitmap, mt, and pool arguments. Those configurations had been broken for some \ 
time.
Fortran: OpenMP code using the omp_lib.h include file can no longer be compiled \ 
with -std=f95 but now requires at least -std=f2003. Alternatively, use the \ 
omp_lib module, which still supports -std=f95 and is recommended to be used \ 
instead in general.
OpenMP offloading to Intel MIC has been deprecated and will be removed in a \ 
future release.
The cr16 target with the cr16-*-* configuration has been obsoleted and will be \ 
removed in a future release.
The hppa[12]*-*-hpux10* and hppa[12]*-*-hpux11* configurations targeting 32-bit \ 
PA-RISC with HP-UX have been obsoleted and will be removed in a future release.
The m32c*-*-rtems* configuration has been obsoleted and will be removed in a \ 
future release.
The support for the m32r-*-linux*, m32rle-*-linux*, m68k*-*-openbsd* and \ 
vax-*-openbsd* configurations has been removed.
STABS: Support for emitting the STABS debugging format is deprecated and will be \ 
removed in the next release. All ports now default to emit DWARF (version 2 or \ 
later) debugging info or are obsoleted.
The optimization level -Ofast now implies -fno-semantic-interposition.

General Improvements

Vectorization is enabled at -O2 which is now equivalent to the original -O2 \ 
-ftree-vectorize -fvect-cost-model=very-cheap. Note that default vectorizer cost \ 
model has been changed which used to behave as -fvect-cost-model=cheap were \ 
specified.
GCC now supports the ShadowCallStack sanitizer, which can be enabled using the \ 
command-line option -fsanitize=shadow-call-stack. This sanitizer currently only \ 
works on AArch64 targets and it requires an environment in which all code has \ 
been compiled with -ffixed-r18. Its primary initial user is the Linux kernel.