Page 1 of 1

GCC 16.1 Released

Posted: Mon May 04, 2026 2:07 pm
by gfilatov
Richard Biener rguenther@suse.de
Thu Apr 30 10:33:40 GMT 2026
The GCC developers are proud to announce a new major GCC release, 16.1.

This major release introduces several significant changes, including a shift
in the default C++ standard, the addition of a new language front-end, and
substantial improvements to diagnostic reporting.


The C++ frontend now defaults to the GNU C++20 dialect and the corresponding
parts of the standard library are no longer experimental. Several
C++26 features receive experimental support, including Reflection
(-freflection), Contracts, expansion statements and std::simd.

Support for C23 _BitInt has expanded to more targets, including
RISC-V, ARM, S/390 and LoongArch. The C frontend now supports
counted_by attribution of pointer fields.

The Fortran coarray implementation now supports using shared
memory multithreading on single node machines.

The GNU compiler welcomes support for the Algol68 language with an
experimental compiler frontend, ga68.

GCC diagnostics can now be output in HTML form and the SARIF output
was enhanced with new control flow features. The static analyzer
starts to be usable on small C++ examples.

Link-Time Optimization now supports better handling of toplevel asm
statements with -flto-toplevel-asm-heuristics. Support for
speculative devirtualization has been enhanced to handle general
indirect function calls and more than one speculative target.

Vectorization now supports vectorizing of uncounted loops and has more
robust and efficient handling of early exits and has improved handling
of reductions.

Note:
Some code that compiled successfully with older GCC versions might require
source changes.
8-)

Re: GCC 16.1 Released

Posted: Mon May 04, 2026 2:54 pm
by gfilatov
2026-05-04 16:30:09 Windows 11 or newer 10.0.26200
Harbour 3.2.0dev (r2602281433) (MT) MinGW GNU C 16.1 (64-bit) x86-64
THREADS: 0
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.02
====================================================================
[ T001: x := L_C ]..............................................0.00
[ T002: x := L_N ]..............................................0.00
[ T003: x := L_D ]..............................................0.00
[ T004: x := S_C ]..............................................0.02
[ T005: x := S_N ]..............................................0.00
[ T006: x := S_D ]..............................................0.00
[ T007: x := M->M_C ]...........................................0.02
[ T008: x := M->M_N ]...........................................0.00
[ T009: x := M->M_D ]...........................................0.02
[ T010: x := M->P_C ]...........................................0.02
[ T011: x := M->P_N ]...........................................0.00
[ T012: x := M->P_D ]...........................................0.02
[ T013: x := F_C ]..............................................0.00
[ T014: x := F_N ]..............................................0.02
[ T015: x := F_D ]..............................................0.00
[ T016: x := o:Args ]...........................................0.05
[ T017: x := o[ 2 ] ]...........................................0.03
[ T018: Round( i / 1000, 2 ) ]..................................0.05
[ T019: Str( i / 1000 ) ].......................................0.19
[ T020: Val( s ) ]..............................................0.05
[ T021: Val( a [ i % 16 + 1 ] ) ]...............................0.05
[ T022: DToS( d - i % 10000 ) ].................................0.06
[ T023: Eval( {|| i % 16 } ) ]..................................0.09
[ T024: Eval( bc := {|| i % 16 } ) ]............................0.03
[ T025: Eval( {| x | x % 16 }, i ) ]............................0.08
[ T026: Eval( bc := {| x | x % 16 }, i ) ]......................0.03
[ T027: Eval( {| x | f1( x ) }, i ) ]...........................0.08
[ T028: Eval( bc := {| x | f1( x ) }, i ) ].....................0.05
[ T029: Eval( bc := &( "{| x | f1( x ) }" ), i ) ]..............0.06
[ T030: x := &( "f1(" + Str( i ) + ")" ) ]......................0.44
[ T031: bc := &( "{| x | f1( x ) }" ), Eval( bc, i ) ]..........0.55
[ T032: x := ValType( x ) + ValType( i ) ]......................0.08
[ T033: x := StrZero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.14
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.05
[ T035: x := a[ i % 16 + 1 ] = s ]..............................0.05
[ T036: x := a[ i % 16 + 1 ] >= s ].............................0.06
[ T037: x := a[ i % 16 + 1 ] <= s ].............................0.05
[ T038: x := a[ i % 16 + 1 ] < s ]..............................0.05
[ T039: x := a[ i % 16 + 1 ] > s ]..............................0.06
[ T040: AScan( a, i % 16 ) ]....................................0.06
[ T041: AScan( a, {| x | x == i % 16 } ) ]......................0.53
[ T042: iif( i % 1000 == 0, a := {}, ), AAdd(a,{i,1,.T.,s, ]....0.17
[ T043: x := a ]................................................0.02
[ T044: x := {} ]...............................................0.03
[ T045: f0() ]..................................................0.00
[ T046: f1( i ) ]...............................................0.02
[ T047: f2( c[1...8] ) ]........................................0.02
[ T048: f2( c[1...40000] ) ]....................................0.03
[ T049: f2( @c[1...40000] ) ]...................................0.00
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.03
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.06
[ T052: f2( a ) ]...............................................0.02
[ T053: x := f4() ].............................................0.08
[ T054: x := f5() ].............................................0.06
[ T055: x := Space( 16 ) ]......................................0.03
[ T056: f_prv( c ) ]............................................0.11
====================================================================
[ total application time: ].....................................4.66
[ total real time: ]............................................4.69

2026-05-04 16:30:27 Windows 11 or newer 10.0.26200
Harbour 3.2.0dev (r2602281433) (MT)+ MinGW GNU C 16.1 (64-bit) x86-64
THREADS: all->56
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.02
====================================================================
[ T001: x := L_C ]..............................................0.08
[ T002: x := L_N ]..............................................0.08
[ T003: x := L_D ]..............................................0.83
[ T004: x := S_C ]..............................................0.17
[ T005: x := S_N ]..............................................0.05
[ T006: x := S_D ]..............................................0.22
[ T007: x := M->M_C ]...........................................0.44
[ T008: x := M->M_N ]...........................................0.44
[ T009: x := M->M_D ]...........................................0.44
[ T010: x := M->P_C ]...........................................0.69
[ T011: x := M->P_N ]...........................................2.88
[ T012: x := M->P_D ]...........................................2.88
[ T013: x := F_C ]..............................................2.28
[ T014: x := F_N ]..............................................0.14
[ T015: x := F_D ]..............................................0.14
[ T016: x := o:Args ]...........................................1.56
[ T017: x := o[ 2 ] ]...........................................2.27
[ T018: Round( i / 1000, 2 ) ]..................................2.95
[ T019: Str( i / 1000 ) ].......................................4.86
[ T020: Val( s ) ]..............................................1.84
[ T021: Val( a [ i % 16 + 1 ] ) ]...............................2.27
[ T022: DToS( d - i % 10000 ) ].................................1.47
[ T023: Eval( {|| i % 16 } ) ].................................20.78
[ T024: Eval( bc := {|| i % 16 } ) ]............................1.95
[ T025: Eval( {| x | x % 16 }, i ) ]...........................21.02
[ T026: Eval( bc := {| x | x % 16 }, i ) ]......................2.17
[ T027: Eval( {| x | f1( x ) }, i ) ]..........................20.69
[ T028: Eval( bc := {| x | f1( x ) }, i ) ].....................2.17
[ T029: Eval( bc := &( "{| x | f1( x ) }" ), i ) ]..............1.52
[ T030: x := &( "f1(" + Str( i ) + ")" ) ]......................7.47
[ T031: bc := &( "{| x | f1( x ) }" ), Eval( bc, i ) ].........22.44
[ T032: x := ValType( x ) + ValType( i ) ]......................2.91
[ T033: x := StrZero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........5.95
[ T034: x := a[ i % 16 + 1 ] == s ].............................1.63
[ T035: x := a[ i % 16 + 1 ] = s ]..............................1.31
[ T036: x := a[ i % 16 + 1 ] >= s ].............................1.31
[ T037: x := a[ i % 16 + 1 ] <= s ].............................1.63
[ T038: x := a[ i % 16 + 1 ] < s ]..............................3.11
[ T039: x := a[ i % 16 + 1 ] > s ]..............................3.31
[ T040: AScan( a, i % 16 ) ]....................................2.41
[ T041: AScan( a, {| x | x == i % 16 } ) ].....................22.86
[ T042: iif( i % 1000 == 0, a := {}, ), AAdd(a,{i,1,.T.,s, ]...21.64
[ T043: x := a ]................................................0.64
[ T044: x := {} ]..............................................19.53
[ T045: f0() ]..................................................0.64
[ T046: f1( i ) ]...............................................1.03
[ T047: f2( c[1...8] ) ]........................................0.83
[ T048: f2( c[1...40000] ) ]....................................1.11
[ T049: f2( @c[1...40000] ) ]...................................0.38
[ T050: f2( @c[1...40000] ), c2 := c ]..........................1.58
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................2.20
[ T052: f2( a ) ]...............................................1.34
[ T053: x := f4() ].............................................2.27
[ T054: x := f5() ].............................................2.53
[ T055: x := Space( 16 ) ]......................................1.28
[ T056: f_prv( c ) ]............................................2.84
====================================================================
[ total application time: ]....................................23.19
[ total real time: ]............................................3.24

Re: GCC 16.1 Released

Posted: Mon May 04, 2026 5:42 pm
by serge_girard
Thanks Mr. Filatov !

Re: GCC 16.1 Released

Posted: Mon May 04, 2026 7:16 pm
by ASESORMIX
Дякую.