Update the release notes athttps://gcc.gnu.org/gcc-17/changes.html for the new GOMP_RUNTIME_USM environment variable.
(There are more changes in the pipeline and a few smaller one, possibly not worthwhile to mention.) Likewise an update for the installation status athttps://gcc.gnu.org/projects/gomp/ Besides a few GCC 17 items, it was missed during GCC 15 to set one item to 'partial'. Committed as a8d9776d2 OpenMP: Update gcc-17/changes.html + projects/gomp/ TobiasTitle: GCC 17 Release Series — Changes, New Features, and Fixes
GCC 17 Release Series
Changes, New Features, and Fixes
This page is a "brief" summary of some of the huge number of improvements in GCC 17. You may also want to check out our Porting to GCC 17 page and the full GCC documentation.
Note: GCC 17 has not been released yet, so this document is a work-in-progress.
Caveats
- ...
General Improvements
New Languages and Language specific improvements
OpenACC
See the GCC OpenACC wiki page for general information.
- OpenACC 2.5: Add Fortran support for the
init,set, andshutdowndirectives.
OpenMP
See the GNU Offloading and Multi-Processing Project (GOMP) page for general information.
- OpenMP 5.0: Multiple clauses mapping the same variable is
now supported. Handling used-defined map operation (
declare mapper) in C and C++ has been improved. Theuses_allocatorsclause now accepts traits (also with the OpenMP 5.1 syntax). - OpenMP 5.1: The
iteratormodifier to themap,to, andfromclauses has been improved for C and C++ and initial support for Fortran added. - OpenMP 6.0: The
device_typeclause is now supported on thetargetconstruct. - TR15: The
omp_get_device_distancesAPI routine has been added that can be used to find the offload devices that are closest, in terms of NUMA node, to the thread that called the routine. The multidimensional-information API routines have been added, albeit GCC currently only supports one spatial dimension; already useful are the newomp_get_supported_teams_dimandomp_get_supported_threads_dimroutines that return, respectively, the maximal number of teams and threads that GCC supports on a given device. - The new
GOMP_RUNTIME_USMenvironment variable can be used to enable self mapping at runtime for devices that support accessing host memory (unified-shared memory).
C
- Improvements to GNU extensions including:
- The new built-in functions
__builtin_call_static_chainand__builtin_call_code_addresscan be used to obtain the static chain and the underlying code address of a nested function. This allows calling of the nested function indirectly without the use of a trampoline.
- The new built-in functions
C++
Runtime Library (libstdc++)
- Improved experimental C++26 support including:
std::formatinconstexprfunctions.
std::filesystemsupport for Windows symlinks, thanks to Adam Wood.
Fortran
- The Fortran 2023
c_f_strpointerintrinsic is now supported. Additionally, thef_c_stringintrinsic has been reimplemented to be more efficient. - The
-Wunused-but-set-variablesoption is now also effective for Fortran. - The new option
-Wundefined-vars, enabled by-Wall, warns about variables that are used that have not been defined (i.e. have no value assigned to them). -
The new options
-Wunused-readand-Wunused-intent-out, both enabled by-Wextra, warn about variables inREADstatements and variables passed toINTENT(OUT)variables, respectively, whose values are never used.
New Targets and Target Specific Improvements
AMD GPU (GCN)
- For offloading to AMD GPUs: The launch overhead of OpenMP target regions and OpenACC compute regions has been further reduced compared with GCC 16.
AVR
- Support has been added for the following
fixed-point arithmetic routines:
- Saturated division for the 16-bit types.
- Saturated division for the signed and unsigned
_Accumtypes. - Saturated shift left for all the supported types.
- Saturated and unsaturated 64-bit multiplications and divisions.
- Saturated and unsaturated
long _Fractandunsigned long _Fractmultiplications and divisions.
- The code size of an inline asm construct — or parts
of it — can be specified with
[[len=spec]]annotations. The code size is specified in units of 16-bit words and is set to the sum over all such notes. The notes can be deactivated with the new command-line option-mno-asm-len-notesso that the default length applies. The diagnostic behavior can be adjusted with-Wasm-len-notes.
IA-32/x86-64
- The AVX10.2 scalar saturating conversion intrinsics have been renamed
from the
_ep[i|u]{32,64}suffix, which denotes packed elements, to_[i|u]{32,64}, with_si{32,64}aliases for the signed variants. The old names were never accepted by other x86 compilers. See the porting guide for the list of affected intrinsics.
S/390, System z, IBM z Systems
- Support for
-m31was removed and as a consequence-mesasupport.
SH
- The SH backend has been switched permantenly to LRA.
The option
-mlrais now ineffective but kept around for backwards compatibility
Operating Systems
Other significant improvements
commit a8d9776d2d8c1cd5dd7c41445b76ce6e7abe2785 Author: Tobias Burnus <[email protected]> Date: Mon Sep 21 13:10:16 2026 +0200 OpenMP: Update gcc-17/changes.html + projects/gomp/ diff --git a/htdocs/gcc-17/changes.html b/htdocs/gcc-17/changes.html index 7bb6538fc..39345a0c3 100644 --- a/htdocs/gcc-17/changes.html +++ b/htdocs/gcc-17/changes.html @@ -81,6 +81,10 @@ for general information.</p> <code>omp_get_supported_threads_dim</code></a> routines that return, respectively, the maximal number of teams and threads that GCC supports on a given device.</li> + <li>The new <a href="https://gcc.gnu.org/onlinedocs/libgomp/GOMP_005fRUNTIME_005fUSM.html"> + <code>GOMP_RUNTIME_USM</code></a> environment variable can be used to enable + self mapping at runtime for devices that support accessing host memory + (unified-shared memory).</li> </ul> <!-- <h3 id="ada">Ada</h3> --> diff --git a/htdocs/projects/gomp/index.html b/htdocs/projects/gomp/index.html index 6d8010ae1..24a6e7acb 100644 --- a/htdocs/projects/gomp/index.html +++ b/htdocs/projects/gomp/index.html @@ -927,7 +927,7 @@ than listed, depending on resolved corner cases and optimizations.</p> <td>New <code>memspace</code> and <code>traits</code> modifiers for <code>uses_allocators</code></td> <td class="supported"><a href="../../gcc-16/changes.html#openmp">GCC 16</a><br> <a href="../../gcc-17/changes.html#openmp">GCC 17</a></td> - <td>Only predefined allocators<br></td> + <td>Only predefined allocators<br> </td> </tr> <tr> <td>Deprecation of traits array following the allocator_handle expression in <code>uses_allocators</code></td> @@ -986,7 +986,7 @@ than listed, depending on resolved corner cases and optimizations.</p> </tr> <tr> <td>For Fortran, optional comma between directive and clause</td> - <td class="unsupported">No</td> + <td class="supported"><a href="../../gcc-17/changes.html#openmp">GCC 17</a></td> <td></td> </tr> <tr> @@ -1319,8 +1319,8 @@ error.</p> </tr> <tr> <td>New <code>need_device_addr</code> modifier to <code>adjust_args</code> clause</td> - <td class="unsupported">No</td> - <td></td> + <td class="partial"><a href="../../gcc-15/changes.html#openmp">GCC 15</a></td> + <td>Not supported in C++</td> </tr> <tr> <td><code>interop</code> clause to <code>dispatch</code></td> @@ -1651,8 +1651,8 @@ error.</p> <tbody> <tr> <td>Multi-word directives now use underscore by default</td> - <td class="unsupported">No</td> - <td></td> + <td class="partial"><a href="../../gcc-17/changes.html#openmp">GCC 17</a></td> + <td>Only in Fortran</td> </tr> <tr> <td>Relaxed Fortran restrictions to the <code>aligned</code> clause</td>
