BayLibre’s Contributions to GCC 16
The GNU Compiler Collection project released GCC version 16.1 on April 30, 2026. Once again, BayLibre’s Compiler Services team were among top contributors to the annual release; with 363 total commits, BayLibre ranks 6th this release cycle when counting commits tagged with corporate or institutional e-mail addresses (behind Red Hat, Qualcomm/Ventana Micro, AdaCore, SUSE, and Arm). Every member of BayLibre’s GCC team was responsible for at least one commit for the GCC 16 release.
The team’s work in GCC 16 encompassed the following broad areas.
Support for OpenMP, OpenACC, and GPU Offloading
BayLibre’s team of compiler engineers has continued its work to support high-performance computing in GCC in collaboration with Oak Ridge National Laboratory. All members of the team contributed patches in this area, including several new OpenMP and OpenACC features, as well as bug fixes, performance improvements, and improvements to the test suite.
New OpenMP features and improvements implemented in GCC 16 include:
- Memory allocation improvements, including using the CUDA API on Nvidia GPUs for pinned memory support with the
ompx_gnu_pinned_mem_allocpredefined allocator, and managed memory support with theomp_gnu_managed_mem_allocallocator, which allocates device-accessible memory on the host Both of these allocators and their associated predefined memory spaces are GNU extensions (Andrew Stubbs, Kwok Cheung Yeung, Thomas Schwinge) - OpenMP 5.0
declare mappersupport for C and C++ (Tobias Burnus, based on patches from Julian Brown) - OpenMP 5.0
uses_allocatorsclause for C and C++ (Chung-Lin Tang) - OpenMP 5.1 support for the
iteratormodifiermapclauses and thetarget updateconstruct, in C and C++ only so far (Kwok Cheung Yeung) - OpenMP 5.2
begin declare variantconstruct (Sandra Loosemore, co-authored by Waffl3x and based on patches from Julian Brown) - TR14
omp_default_deviceconstant (Tobias Burnus) - New warnings for deprecated directives and clauses that have been deprecated in OpenMP 5.0, 5.1, or 5.2, controlled by
-Wdeprecated-openmpand-Wdeprecated-declarations(Supers1ngular) - Several improvements and bug fixes for the
metadirectivedirective (Tobias Burnus, Paul-Antoine Arras, Sandra Loosemore) - Numerous test suite improvements, bug fixes, and improvements to diagnostics (Thomas Schwinge, Kwok Cheung Yeung, Waffl3x, Tobias Burnus, Andrew Stubbs, SuperS1ngular)
These improvements were made to GCC’s OpenACC support:
- OpenACC 3.0: Support for the if clause has been added to the
waitdirective. (Tobias Burnus) - OpenACC 3.3: The
acc_attachandacc_detachAPI routines are now supported in Fortran in addition to C and C++. (Tobias Burnus) - OpenACC 3.4: In Fortran, named
PARAMETERconstants are now permitted as var in clauses. These named constants are generally ignored or optimized away during compilation, but in most instances a-Wsurprisingwarning is generated in place of previous errors. (Tobias Burnus) - The
acc_memcpy_deviceandacc_memcpy_device_asyncAPI routines have been added for C, C++ and Fortran. (Tobias Burnus)
Improvements to backend offload compiler support and target-specific libgomp library improvements to support offloading include:
- Support for C++ global destructors offload targets (per the Itanium C++ ABI specification) on both AMD and Nvidia (Thomas Schwinge)
- For AMD GCN, the launch overhead time for offloaded OpenMP and OpenACC regions has been significantly reduced (Arsen Arsenović)
- Experimental support has been added for AMD Instinct MI300 (
gfx942) devices, including the genericgfx9-4-genericand mostly-compatiblegfx950(Tobias Burnus) - Various changes to AMD GCN multilib and configuration options to better reflect current processors (Tobias Burnus)
- Improvements to AMD GCN vector instruction code generation (Andrew Stubbs, Sandra Loosemore)
- For Nvidia PTX offload targets, new support for
-march=sm_50,-march=sm_61,-mptx=4.0, and-mptx=5.0, and updates to-march-map=for newer processors (Thomas Schwinge)
In addition to their own patch contributions, BayLibre’s three GCC maintainers in this area — Tobias Burnus, Thomas Schwinge, and Andrew Stubbs — also contributed through patch review, advising other team members and contributors in the broader GCC community, monitoring test results, and general maintenance of the code in their areas of expertise. Tobias and Thomas additionally both acted as mentors for the 2025 Google Summer of Code, with Tobias’s student Yuao Ma contributing numerous patches to implement new intrinsics from the Fortran 2023 standard.
RISC-V Back End
As a continuation of previous work sponsored by the RISE Project, Paul-Antoine Arras contributed a lengthy series of patches to improve performance of vector-scalar floating-point operations in the RISC-V back end by adding new patterns for these machine instructions.
Documentation
In her role as GCC documentation maintainer, Sandra Loosemore reviewed and corrected documentation of all of GCC’s command-line options, along with fixing some bugs in the option implementation. She also reorganized the discussion of GNU attributes in the manual to reduce duplication, put more emphasis on presenting the new standard C and C++ attribute syntax versus the legacy GNU syntax, and create a new attribute index; moved some rarely-used material from the GCC user manual to the internals documentation; and fixed a number of long-standing bugs. Because of the large number of documentation patches this release cycle, Sandra was the team’s top contributor to GCC 16 with 130 total commits.
Several other team members also contributed documentation patches for GCC 16. Tobias Burnus and Andrew Stubbs, in particular, each committed multiple patches to the libgomp manual, and Tobias also to the GCC installation manual and the GNU Fortran manual.
GCC 16 and Beyond
The GCC 16 release notes detail many other changes and improvements. A few of the more notable updates include making C++20 the default dialect and adding support for numerous C++23 and C++26 features; the addition of an Algol 68 front end; support for Fortran coarrays; and the usual improvements to optimizations and target back ends to support new processors.
Looking forward, BayLibre’s GCC team already has a number of projects planned for GCC 17. We expect to have support for the OpenMP declare mapper directive and the iterator modifier completed early in the release cycle, and are working on performance improvements and implementing the runtime trace interface OMPT.