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.
__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.