Back to bug 1986836

Who When What Removed Added
Red Hat Bugzilla 2021-07-28 12:36:29 UTC Pool ID sst_platform_tools_rhel_9
Red Hat One Jira (issues.redhat.com) 2021-07-28 12:40:13 UTC Link ID Red Hat Issue Tracker RHELPLAN-91311
Marek Polacek 2021-07-28 12:41:09 UTC Blocks 1986838
Marek Polacek 2021-07-28 12:43:12 UTC Blocks 1986841
Marek Polacek 2021-07-28 12:55:51 UTC Status NEW ASSIGNED
Keywords Bugfix, Triaged
Doc Text Important: if this rebase also contains *enhancements* (or contains only enhancements), select the correct option from the Doc Type drop-down list.

Rebase package(s) to version: 11.2

Highlights and important bug fixes:
Doc Type If docs needed, set a value Rebase: Bug Fixes Only
Václav Kadlčík 2021-07-28 13:04:57 UTC CC vkadlcik
QA Contact qe-baseos-tools-bugs vkadlcik
Marek Polacek 2021-07-29 16:49:41 UTC Fixed In Version gcc-11.2.1-1.el9
Status ASSIGNED MODIFIED
Martin Cermak 2021-07-30 07:45:09 UTC CC mcermak
Florian Weimer 2021-08-02 07:07:44 UTC Blocks 1988950
Florian Weimer 2021-08-02 11:02:36 UTC Fixed In Version gcc-11.2.1-1.el9
Florian Weimer 2021-08-02 11:40:16 UTC Fixed In Version gcc-11.2.1-2.1.el9
Martin Cermak 2021-08-03 14:33:59 UTC Status MODIFIED VERIFIED
QA Contact vkadlcik mcermak
Petr Kovar 2021-08-16 13:13:38 UTC Docs Contact otikhomi
Pavel Najman 2021-09-20 09:05:39 UTC Pool ID sst_platform_tools_rhel_9 sst_pt_gcc_glibc_rhel_9
Oss Tikhomirova 2021-10-19 03:51:34 UTC Doc Type Rebase: Bug Fixes Only Enhancement
Oss Tikhomirova 2021-10-26 05:49:12 UTC Doc Text Important: if this rebase also contains *enhancements* (or contains only enhancements), select the correct option from the Doc Type drop-down list.

Rebase package(s) to version: 11.2

Highlights and important bug fixes:
.GCC 11.2 is available

RHEL 9 Beta is distributed with GCC version 11.2, which provides numerous bug fixes and improvements.
Oss Tikhomirova 2021-11-10 09:46:10 UTC Doc Text .GCC 11.2 is available

RHEL 9 Beta is distributed with GCC version 11.2, which provides numerous bug fixes and improvements.
.GCC 11.2 is available

RHEL 9 Beta is distributed with GCC version 11.2. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The C++ library `libstdc++` has improved C++17 support now.
* Several new C++20 features are implemented. Note that C++20 support is experimental.
+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The C++ front end has experimental support for some of the upcoming C++23 draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

* The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.
Lenka Špačková 2021-11-10 18:25:59 UTC Doc Text .GCC 11.2 is available

RHEL 9 Beta is distributed with GCC version 11.2. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The C++ library `libstdc++` has improved C++17 support now.
* Several new C++20 features are implemented. Note that C++20 support is experimental.
+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The C++ front end has experimental support for some of the upcoming C++23 draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

* The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.
.GCC 11.2 is available

RHEL 9 Beta is distributed with GCC version 11.2. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new C++20 features are implemented. Note that C++20 support is experimental.
+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The C++ front end has experimental support for some of the upcoming C++23 draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

* The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.
Lenka Špačková 2021-11-10 18:47:40 UTC Doc Text .GCC 11.2 is available

RHEL 9 Beta is distributed with GCC version 11.2. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new C++20 features are implemented. Note that C++20 support is experimental.
+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The C++ front end has experimental support for some of the upcoming C++23 draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

* The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.
.GCC 11.2 is available

RHEL 9 Beta is distributed with GCC version 11.2. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new pass:[C++20] features are implemented. Note that pass:[C++20] support is experimental.

+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The pass:[C++] front end has experimental support for some of the upcoming pass:[C++23] draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

* The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.
Vratislav Hutsky 2021-12-07 21:30:47 UTC Status VERIFIED CLOSED
Resolution --- CURRENTRELEASE
Last Closed 2021-12-07 21:30:47 UTC
Jacob Taylor Valdez 2022-05-04 07:53:52 UTC CC jvaldez
Doc Text .GCC 11.2 is available

RHEL 9 Beta is distributed with GCC version 11.2. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new pass:[C++20] features are implemented. Note that pass:[C++20] support is experimental.

+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The pass:[C++] front end has experimental support for some of the upcoming pass:[C++23] draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

* The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.
.GCC 11.2 is available

RHEL 9 is distributed with GCC version 11.2. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new pass:[C++20] features are implemented. Note that pass:[C++20] support is experimental.

+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The pass:[C++] front end has experimental support for some of the upcoming pass:[C++23] draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

* The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.
Jacob Taylor Valdez 2022-05-16 07:27:16 UTC Doc Text .GCC 11.2 is available

RHEL 9 is distributed with GCC version 11.2. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new pass:[C++20] features are implemented. Note that pass:[C++20] support is experimental.

+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The pass:[C++] front end has experimental support for some of the upcoming pass:[C++23] draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

* The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.
.GCC 11.2.1 is available

RHEL 9 is distributed with GCC version 11.2.1. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new pass:[C++20] features are implemented. Note that pass:[C++20] support is experimental.

+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The pass:[C++] front end has experimental support for some of the upcoming pass:[C++23] draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

* The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.
Docs Contact otikhomi jvaldez
Jacob Taylor Valdez 2022-05-16 09:56:48 UTC Doc Text .GCC 11.2.1 is available

RHEL 9 is distributed with GCC version 11.2.1. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new pass:[C++20] features are implemented. Note that pass:[C++20] support is experimental.

+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The pass:[C++] front end has experimental support for some of the upcoming pass:[C++23] draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

* The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.
.GCC 11.2.1 is available

RHEL 9 is distributed with GCC version 11.2.1. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Link-time optimization (LTO) enables the compiler to perform various optimizations across all translation units of your program by using its intermediate representation at link time. For more information, see link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html-single/developing_c_and_cpp_applications_in_rhel_9/index#ref_link-time-optimization_using-libraries-with-gcc[Link time optimization].
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new pass:[C++20] features are implemented. Note that pass:[C++20] support is experimental.

+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The pass:[C++] front end has experimental support for some of the upcoming pass:[C++23] draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

* The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.

*IBM Z architectures*

* GCC 11.2.1 defaults to the IBM z14 processor.

(link:https://bugzilla.redhat.com/show_bug.cgi?id=1870016[BZ#1870016])

*IBM Power Systems*

* GCC 11.2.1 defaults to the IBM POWER9 processor.
* The GCC compiler now supports POWER10 instructions with the new `-mpower10` command-line option

(link:https://bugzilla.redhat.com/show_bug.cgi?id=1870028[BZ#1870028], link:https://bugzilla.redhat.com/show_bug.cgi?id=1870025[BZ#1870025])
Flags needinfo?(mpolacek)
Lenka Špačková 2022-05-16 14:36:36 UTC Doc Text .GCC 11.2.1 is available

RHEL 9 is distributed with GCC version 11.2.1. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Link-time optimization (LTO) enables the compiler to perform various optimizations across all translation units of your program by using its intermediate representation at link time. For more information, see link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html-single/developing_c_and_cpp_applications_in_rhel_9/index#ref_link-time-optimization_using-libraries-with-gcc[Link time optimization].
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new pass:[C++20] features are implemented. Note that pass:[C++20] support is experimental.

+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The pass:[C++] front end has experimental support for some of the upcoming pass:[C++23] draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

* The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.

*IBM Z architectures*

* GCC 11.2.1 defaults to the IBM z14 processor.

(link:https://bugzilla.redhat.com/show_bug.cgi?id=1870016[BZ#1870016])

*IBM Power Systems*

* GCC 11.2.1 defaults to the IBM POWER9 processor.
* The GCC compiler now supports POWER10 instructions with the new `-mpower10` command-line option

(link:https://bugzilla.redhat.com/show_bug.cgi?id=1870028[BZ#1870028], link:https://bugzilla.redhat.com/show_bug.cgi?id=1870025[BZ#1870025])
.GCC 11.2.1 is available

RHEL 9 is distributed with GCC version 11.2.1. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Link-time optimization (LTO) enables the compiler to perform various optimizations across all translation units of your program by using its intermediate representation at link time. For more information, see link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html-single/developing_c_and_cpp_applications_in_rhel_9/index#ref_link-time-optimization_using-libraries-with-gcc[Link time optimization].
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new pass:[C++20] features are implemented. Note that pass:[C++20] support is experimental.

+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The pass:[C++] front end has experimental support for some of the upcoming pass:[C++23] draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

* The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.

*IBM Z architectures*

* GCC 11.2.1 defaults to the IBM z14 processor.

*IBM Power Systems*

* GCC 11.2.1 defaults to the IBM POWER9 processor.
* The GCC compiler now supports POWER10 instructions with the new `-mpower10` command-line option
Lenka Špačková 2022-05-16 15:27:14 UTC Flags needinfo?(dbayly)
CC dbayly
Marek Polacek 2022-05-16 15:41:36 UTC Flags needinfo?(mpolacek)
Doc Text .GCC 11.2.1 is available

RHEL 9 is distributed with GCC version 11.2.1. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Link-time optimization (LTO) enables the compiler to perform various optimizations across all translation units of your program by using its intermediate representation at link time. For more information, see link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html-single/developing_c_and_cpp_applications_in_rhel_9/index#ref_link-time-optimization_using-libraries-with-gcc[Link time optimization].
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new pass:[C++20] features are implemented. Note that pass:[C++20] support is experimental.

+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The pass:[C++] front end has experimental support for some of the upcoming pass:[C++23] draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

* The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.

*IBM Z architectures*

* GCC 11.2.1 defaults to the IBM z14 processor.

*IBM Power Systems*

* GCC 11.2.1 defaults to the IBM POWER9 processor.
* The GCC compiler now supports POWER10 instructions with the new `-mpower10` command-line option
.GCC 11.2.1 is available

RHEL 9 is distributed with GCC version 11.2.1. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Link-time optimization (LTO) enables the compiler to perform various optimizations across all translation units of your program by using its intermediate representation at link time. For more information, see link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html-single/developing_c_and_cpp_applications_in_rhel_9/index#ref_link-time-optimization_using-libraries-with-gcc[Link time optimization].
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new pass:[C++20] features are implemented. Note that pass:[C++20] support is experimental.

+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The pass:[C++] front end has experimental support for some of the upcoming pass:[C++23] draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

* The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.

*IBM Z architectures*

* GCC 11.2.1 defaults to the IBM z14 processor.

*IBM Power Systems*

* GCC 11.2.1 defaults to the IBM POWER9 processor.
* The GCC compiler now supports POWER10 instructions with the new `-mcpu=power10` command-line option
Jacob Taylor Valdez 2022-05-16 16:05:00 UTC Flags needinfo?(mpolacek)
Marek Polacek 2022-05-16 16:10:11 UTC Flags needinfo?(mpolacek)
Lenka Špačková 2022-05-16 16:23:23 UTC Doc Text .GCC 11.2.1 is available

RHEL 9 is distributed with GCC version 11.2.1. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Link-time optimization (LTO) enables the compiler to perform various optimizations across all translation units of your program by using its intermediate representation at link time. For more information, see link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html-single/developing_c_and_cpp_applications_in_rhel_9/index#ref_link-time-optimization_using-libraries-with-gcc[Link time optimization].
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new pass:[C++20] features are implemented. Note that pass:[C++20] support is experimental.

+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The pass:[C++] front end has experimental support for some of the upcoming pass:[C++23] draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

* The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.

*IBM Z architectures*

* GCC 11.2.1 defaults to the IBM z14 processor.

*IBM Power Systems*

* GCC 11.2.1 defaults to the IBM POWER9 processor.
* The GCC compiler now supports POWER10 instructions with the new `-mcpu=power10` command-line option
.GCC 11.2.1 is available

RHEL 9 is distributed with GCC version 11.2.1. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Link-time optimization (LTO) enables the compiler to perform various optimizations across all translation units of your program by using its intermediate representation at link time. For more information, see link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html-single/developing_c_and_cpp_applications_in_rhel_9/index#ref_link-time-optimization_using-libraries-with-gcc[Link time optimization].
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new pass:[C++20] features are implemented. Note that pass:[C++20] support is experimental.

+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The pass:[C++] front end has experimental support for some of the upcoming pass:[C++23] draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

//* The following Intel CPUs are recognized: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.

*IBM Z architectures*

* GCC 11.2.1 defaults to the IBM z14 processor.

*IBM Power Systems*

* GCC 11.2.1 defaults to the IBM POWER9 processor.
* The GCC compiler now supports POWER10 instructions with the new `-mcpu=power10` command-line option
Lenka Špačková 2022-05-17 08:37:32 UTC Doc Text .GCC 11.2.1 is available

RHEL 9 is distributed with GCC version 11.2.1. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Link-time optimization (LTO) enables the compiler to perform various optimizations across all translation units of your program by using its intermediate representation at link time. For more information, see link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html-single/developing_c_and_cpp_applications_in_rhel_9/index#ref_link-time-optimization_using-libraries-with-gcc[Link time optimization].
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

//to be confirmed it applies to rhel9beta
//* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new pass:[C++20] features are implemented. Note that pass:[C++20] support is experimental.

+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The pass:[C++] front end has experimental support for some of the upcoming pass:[C++23] draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

//* The following Intel CPUs are recognized: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.

*IBM Z architectures*

* GCC 11.2.1 defaults to the IBM z14 processor.

*IBM Power Systems*

* GCC 11.2.1 defaults to the IBM POWER9 processor.
* The GCC compiler now supports POWER10 instructions with the new `-mcpu=power10` command-line option
.GCC 11.2.1 is available

RHEL 9 is distributed with GCC version 11.2.1. Notable bug fixes and enhancements include:

*General improvements*

* GCC now defaults to the DWARF Version 5 debugging format.
* Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
* The straight-line code vectorizer considers the whole function when vectorizing.
* A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.

* Interprocedural optimization improvements:
** A new IPA-modref pass, controlled by the `-fipa-modref` option, tracks side effects of function calls and improves the precision of points-to analysis.
** The identical code folding pass, controlled by the `-fipa-icf` option, was significantly improved to increase the number of unified functions and reduce compile-time memory use.

* Link-time optimization improvements:
** Link-time optimization (LTO) enables the compiler to perform various optimizations across all translation units of your program by using its intermediate representation at link time. For more information, see link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html-single/developing_c_and_cpp_applications_in_rhel_9/index#ref_link-time-optimization_using-libraries-with-gcc[Link time optimization].
** Memory allocation during linking was improved to reduce peak memory use.

* Using a new `GCC_EXTRA_DIAGNOSTIC_OUTPUT` environment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags.

* The static analyzer, run by the `-fanalyzer` option, is improved significantly with numerous bug fixes and enhancements provided.

*Language-specific improvements*

*C family*

* C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.

* Attributes:
** The new `no_stack_protector` attribute marks functions that should not be instrumented with stack protection (`-fstack-protector`).
** The improved `malloc` attribute can be used to identify allocator and deallocator API pairs.

* New warnings:
** `-Wsizeof-array-div`, enabled by the `-Wall` option, warns about divisions of two `sizeof` operators when the first one is applied to an array and the divisor does not equal the size of the array element.
** `-Wstringop-overread`, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.

* Enhanced warnings:
** `-Wfree-nonheap-object` detects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function.
** `-Wmaybe-uninitialized` diagnoses the passing of pointers and references to uninitialized memory to functions that take `const`-qualified arguments.
** `-Wuninitialized` detects reads from uninitialized dynamically allocated memory.

*C*

* Several new features from the upcoming C2X revision of the ISO C standard are supported with the `-std=c2x` and `-std=gnu2x` options. For example:
** The `[[nodiscard]]` standard attribute is supported.
** The `__has_c_attribute` preprocessor operator is supported.
** Labels may appear before declarations and at the end of a compound statement.

*C++*

* The default mode is changed to `-std=gnu++17`.
* The pass:[C++] library `pass:[libstdc++]` has improved C++17 support now.
* Several new pass:[C++20] features are implemented. Note that pass:[C++20] support is experimental.

+
For more information about the features, see link:https://gcc.gnu.org/projects/cxx-status.html#cxx20[C++20 Language Features].

* The pass:[C++] front end has experimental support for some of the upcoming pass:[C++23] draft features.

* New warnings:
** `-Wctad-maybe-unsupported`, disabled by default, warns about performing class template argument deduction on a type with no deduction guides.
** `-Wrange-loop-construct`, enabled by `-Wall`, warns when a range-based for loop is creating unnecessary and resource inefficient copies.
** `-Wmismatched-new-delete`, enabled by `-Wall`, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions.
** `-Wvexing-parse`, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.


*Architecture-specific improvements*

*The 64-bit ARM architecture*

* The Armv8-R architecture is supported through the `-march=armv8-r` option.
* GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.

*AMD and Intel 64-bit architectures*

//* The following Intel CPUs are recognized: Sapphire Rapids, Alder Lake, and Rocket Lake.
* New ISA extension support for Intel AVX-VNNI is added. The `-mavxvnni` compiler switch controls the AVX-VNNI intrinsics.
* AMD CPUs based on the znver3 core are supported with the new `-march=znver3` option.
* Three microarchitecture levels defined in link:https://gitlab.com/x86-psABIs/x86-64-ABI[the x86-64 psABI supplement] are supported with the new `-march=x86-64-v2`, `-march=x86-64-v3`, and `-march=x86-64-v4` options.

*IBM Z architectures*

* GCC 11.2.1 defaults to the IBM z14 processor.

*IBM Power Systems*

* GCC 11.2.1 defaults to the IBM POWER9 processor.
* The GCC compiler now supports POWER10 instructions with the new `-mcpu=power10` command-line option
Lenka Špačková 2022-05-17 08:38:31 UTC CC lkuprova
Mark O'Brien 2023-07-18 14:25:01 UTC Pool ID sst_pt_glibc_rhel_9 sst_pt_gcc_rhel_9

Back to bug 1986836