GCC 12.1 has already been released, know its news and its 35th anniversary

GNU GCC logo

The launch of the new version of the compiler GCC (GNU Compiler Collection) 12.1 was already released and as with all major releases of GCC, this release will bring many additions, improvements, bug fixes, and new features, plus this month (May 23), the project will celebrate 35 years since the formation of the first release.

GCC 12 is already the system compiler for Fedora 36, ​​and GCC 12 will also be available on Red Hat Enterprise Linux in Red Hat Developer Toolset (version 7) or Red Hat GCC Toolset (versions 8 and 9).

The GCC developers are proud to announce another major release of GCC, 12.1.

This year we celebrate the 35th anniversary of the first beta version of GCC
And this month we will celebrate 35 years since the release of GCC 1.0!

This release drops support for the STABS debug format and
introduces support for the CTF debugging format [1]. The C and C++
interfaces continue to advance with expanded support for features
in the upcoming C2X and C++23 standards and the C++ Standard Library
improves support for the experimental parts of C++20 and C++23.
The Fortran interface is now fully compliant with TS 29113 for interoperability with C.

What's new in GCC 12.1?

In this new version Several proposals have been implemented, such as for languages C and C++, added a built-in function __builtin_dynamic_object_size to determine the size of an object, compatible with a similar function of Clang.

Added support for the "unavailable" attribute for the C and C++ languages (for example, you can mark functions that will result in an error when used), as well as added support for the "#elifdef" and "#elifndef" preprocessing directives for the C and C++ languages.

It is also noted that the "-Wbidi-chars" flag to warn if UTF-8 characters are misused, changing the bidirectional text display order, as well as the "-Warray-compare" flag to issue a warning when trying to compare two operands that refer to arrays.

In addition, the iImplementation of OpenMP 5.0 and 5.1 standards (Open Multi-Processing), which define APIs and methods for applying parallel programming methods on multicore and hybrid (CPU + GPU / DSP) systems with shared memory and vectorization units (SIMD), was continued.

Also the improved implementation of the OpenACC 2.6 parallel programming specification, defining the means to offload operations on GPUs and specialized processors such as NVIDIA PTX; and adding support for the Intel AVX512-FP16 extended instructions and the _Float16 type to the x86 code generation backend.

The Fortran front-end provides full support for the TS 29113 specification, which describes the possibilities to ensure portability between Fortran and C code.

Deprecated support for the "STABS" debugging information storage format created in the 1980s.

Added support for the __builtin_shufflevector(vec1, vec2, index1, index2, …) extension previously added to Clang, which provides a single call to perform common vector shuffle and shuffle operations.

When using the "-O2" optimization level, vectorization is enabled by default (the -ftree-vectorize and -fvect-cost-model=very-cheap modes are enabled). The "very cheap" model allows vectorization only if vector code can completely replace vectorizable scalar code.

Added "-ftrivial-auto-var-init" mode to enable explicit variable initialization on the stack to track down issues and block vulnerabilities associated with the use of uninitialized variables.

Added the implementation of C functions built into the compiler (Intrinsics) for atomic loading and data storage in memory, based on the use of extended ARM instructions (ls64). Added support for speeding up memcpy, memmove, and memset functions using the ARM mopoption extension.

Added a new verification mode "-fsanitize=shadow-call-stack" ( ShadowCallStack ), which is currently only available for the AArch64 architecture and works when compiling code with the "-fixed-r18" option. The mode provides protection against rewriting the function's return address in the event of a stack buffer overflow. The essence of the protection is to save the return address in a separate "shadow" stack after the transfer of control to the function and to retrieve this address before exiting the function.

Source: https://gcc.gnu.org/pipermail


Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: AB Internet Networks 2008 SL
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.