GCC 16.1 Released

Harbour, MingW related news.

Moderator: Rathinagiri

Post Reply
User avatar
gfilatov
Posts: 1109
Joined: Fri Aug 01, 2008 5:42 am
Location: Ukraine
Contact:

GCC 16.1 Released

Post 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-)
Kind Regards,
Grigory Filatov

"Everything should be made as simple as possible, but no simpler." Albert Einstein
User avatar
gfilatov
Posts: 1109
Joined: Fri Aug 01, 2008 5:42 am
Location: Ukraine
Contact:

Re: GCC 16.1 Released

Post 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
Kind Regards,
Grigory Filatov

"Everything should be made as simple as possible, but no simpler." Albert Einstein
User avatar
serge_girard
Posts: 3392
Joined: Sun Nov 25, 2012 2:44 pm
DBs Used: 1 MySQL - MariaDB
2 DBF
Location: Belgium
Contact:

Re: GCC 16.1 Released

Post by serge_girard »

Thanks Mr. Filatov !
There's nothing you can do that can't be done...
ASESORMIX
Posts: 220
Joined: Thu Oct 25, 2012 8:08 pm
Location: Bqto, Venezuela

Re: GCC 16.1 Released

Post by ASESORMIX »

Дякую.
Post Reply