This page is a "brief" summary of some of the huge number of improvements in GCC 10.
Note: GCC 10 has not been released yet, so this document is a work-in-progress.
array_allocatorextensions have been removed from libstdc++.
std::__is_nullptr_ttype trait is deprecated and will be removed from libstdc++ in a future release. The standard trait
std::is_null_pointershould be instead.
The following built-in functions have been introduced.
__builtin_roundevenfor the corresponding function from ISO/IEC TS 18661.
-std=gnu2x. Some of these features are also supported as extensions when compiling for older language versions. In addition to the features listed, some features previously supported as extensions and now added to the C standard are enabled by default in C2X mode and not diagnosed with
[]attribute syntax is supported, as in C++. Existing attributes can be used with this syntax in forms such as
[[gnu::const]]. The standard attributes
u8''syntax are supported.
DEC128_TRUE_MIN, in addition to the macros that were previously only defined if
__STDC_WANT_DEC_FP__was defined before including
strftimeformat checking supports the
-fno-fp-int-builtin-inexactis enabled by default.
__is_standard_layoutfor a class with repeated bases
-Wsign-conversionwarnings with explicit casts.
noexcept-specifieris now properly treated as a complete-class context as per [class.mem].
deprecatedcan now be used on
std::span(thanks to JeanHeyd Meneide).
<algorithm>(thanks to Edward Smith-Rowland).
use_device_addrof version 5.0 of the OpenMP specification is now supported. Note that otherwise OpenMP 4.5 is partially supported in the Fortran compiler; the largest missing item is structure element mapping.
GFORTRAN_UNFORMATTED_BUFFER_SIZEfor formatted and unformatted files, respectively.
-fallow-argument-mismatchto turn these errors into warnings; this option is implied with
-Wargument-mismatchhas been removed.
arm-uclinuxfdpiceabi, and the C library is uclibc-ng.
__builtin_roundeveninto the appropriate SSE 4.1 instruction has been added.
-march=cooperlake. The switch enables the AVX512BF16 ISA extensions.
-march=tigerlake. The switch enables the MOVDIRI MOVDIR64B AVX512VP2INTERSECT ISA extensions.
memmove, the existing
movmeminstruction patterns used for non-overlapping memory copies have been renamed to
movmemname is now used for overlapping memory moves, consistent with the library functions
Copyright (C) Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.