diff --git a/.gcc.metadata b/.gcc.metadata index 188c059..b98c9e9 100644 --- a/.gcc.metadata +++ b/.gcc.metadata @@ -1,4 +1,4 @@ -7aa1aed2d17e955c7af83575c01a2decee22d46f SOURCES/gcc-11.3.1-20220421.tar.xz +d190549fcae9ea175ede566a512187c8ff36671b SOURCES/gcc-11.3.1-20221121.tar.xz bbffc5a2b05e4f0c97e882f96c448504491dc4ed SOURCES/isl-0.18.tar.bz2 6ec33952e824e837fef0e829c93d39d6a507082f SOURCES/newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz 0e0c6f8d68ab0878f02287ac082c1077c831cd81 SOURCES/nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz diff --git a/.gitignore b/.gitignore index 9fb586a..1dea4c0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -SOURCES/gcc-11.3.1-20220421.tar.xz +SOURCES/gcc-11.3.1-20221121.tar.xz SOURCES/isl-0.18.tar.bz2 SOURCES/newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz SOURCES/nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz diff --git a/SOURCES/gcc11-Wmismatched-dealloc-doc.patch b/SOURCES/gcc11-Wmismatched-dealloc-doc.patch new file mode 100644 index 0000000..134fb18 --- /dev/null +++ b/SOURCES/gcc11-Wmismatched-dealloc-doc.patch @@ -0,0 +1,79 @@ +diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi +index 3419483c532..a2a6b1c98be 100644 +--- a/gcc/doc/invoke.texi ++++ b/gcc/doc/invoke.texi +@@ -255,7 +255,7 @@ in the following sections. + -Wno-inherited-variadic-ctor -Wno-init-list-lifetime @gol + -Winvalid-imported-macros @gol + -Wno-invalid-offsetof -Wno-literal-suffix @gol +--Wno-mismatched-new-delete -Wmismatched-tags @gol ++-Wmismatched-new-delete -Wmismatched-tags @gol + -Wmultiple-inheritance -Wnamespaces -Wnarrowing @gol + -Wnoexcept -Wnoexcept-type -Wnon-virtual-dtor @gol + -Wpessimizing-move -Wno-placement-new -Wplacement-new=@var{n} @gol +@@ -3966,7 +3966,7 @@ The warning is inactive inside a system header file, such as the STL, so + one can still use the STL. One may also instantiate or specialize + templates. + +-@item -Wno-mismatched-new-delete @r{(C++ and Objective-C++ only)} ++@item -Wmismatched-new-delete @r{(C++ and Objective-C++ only)} + @opindex Wmismatched-new-delete + @opindex Wno-mismatched-new-delete + Warn for mismatches between calls to @code{operator new} or @code{operator +@@ -3998,7 +3998,7 @@ The related option @option{-Wmismatched-dealloc} diagnoses mismatches + involving allocation and deallocation functions other than @code{operator + new} and @code{operator delete}. + +-@option{-Wmismatched-new-delete} is enabled by default. ++@option{-Wmismatched-new-delete} is included in @option{-Wall}. + + @item -Wmismatched-tags @r{(C++ and Objective-C++ only)} + @opindex Wmismatched-tags +@@ -5543,6 +5543,8 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}. + -Wmemset-elt-size @gol + -Wmemset-transposed-args @gol + -Wmisleading-indentation @r{(only for C/C++)} @gol ++-Wmismatched-dealloc @gol ++-Wmismatched-new-delete @r{(only for C/C++)} @gol + -Wmissing-attributes @gol + -Wmissing-braces @r{(only for C/ObjC)} @gol + -Wmultistatement-macros @gol +@@ -6428,7 +6430,7 @@ Ignoring the warning can result in poorly optimized code. + disable the warning, but this is not recommended and should be done only + when non-existent profile data is justified. + +-@item -Wno-mismatched-dealloc ++@item -Wmismatched-dealloc + @opindex Wmismatched-dealloc + @opindex Wno-mismatched-dealloc + +@@ -6461,7 +6463,7 @@ void f (void) + In C++, the related option @option{-Wmismatched-new-delete} diagnoses + mismatches involving either @code{operator new} or @code{operator delete}. + +-Option @option{-Wmismatched-dealloc} is enabled by default. ++Option @option{-Wmismatched-dealloc} is included in @option{-Wall}. + + @item -Wmultistatement-macros + @opindex Wmultistatement-macros +@@ -7951,9 +7953,9 @@ Warnings controlled by the option can be disabled either by specifying + Disable @option{-Wframe-larger-than=} warnings. The option is equivalent + to @option{-Wframe-larger-than=}@samp{SIZE_MAX} or larger. + +-@item -Wno-free-nonheap-object +-@opindex Wno-free-nonheap-object ++@item -Wfree-nonheap-object + @opindex Wfree-nonheap-object ++@opindex Wno-free-nonheap-object + Warn when attempting to deallocate an object that was either not allocated + on the heap, or by using a pointer that was not returned from a prior call + to the corresponding allocation function. For example, because the call +@@ -7970,7 +7972,7 @@ void f (char *p) + @} + @end smallexample + +-@option{-Wfree-nonheap-object} is enabled by default. ++@option{-Wfree-nonheap-object} is included in @option{-Wall}. + + @item -Wstack-usage=@var{byte-size} + @opindex Wstack-usage diff --git a/SOURCES/gcc11-detect-sapphirerapids.patch b/SOURCES/gcc11-detect-sapphirerapids.patch new file mode 100644 index 0000000..c130e4b --- /dev/null +++ b/SOURCES/gcc11-detect-sapphirerapids.patch @@ -0,0 +1,69 @@ +commit 63dd214dce603f4f99e2cb272255b6c2b4308c3d +Author: Cui,Lili +Date: Mon Nov 7 11:25:41 2022 +0800 + + Remove AVX512_VP2INTERSECT from PTA_SAPPHIRERAPIDS + + gcc/ChangeLog: + + * config/i386/driver-i386.cc (host_detect_local_cpu): + Move sapphirerapids out of AVX512_VP2INTERSECT. + * config/i386/i386.h: Remove AVX512_VP2INTERSECT from PTA_SAPPHIRERAPIDS + * doc/invoke.texi: Remove AVX512_VP2INTERSECT from SAPPHIRERAPIDS + + (cherry picked from commit d644dfe36d9733c767af62d37250253ced6efd8c) + +diff --git a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c +index f844a168ddb..90f84aba4ee 100644 +--- a/gcc/config/i386/driver-i386.c ++++ b/gcc/config/i386/driver-i386.c +@@ -574,15 +574,12 @@ const char *host_detect_local_cpu (int argc, const char **argv) + /* This is unknown family 0x6 CPU. */ + if (has_feature (FEATURE_AVX)) + { ++ /* Assume Tiger Lake */ + if (has_feature (FEATURE_AVX512VP2INTERSECT)) +- { +- if (has_feature (FEATURE_TSXLDTRK)) +- /* Assume Sapphire Rapids. */ +- cpu = "sapphirerapids"; +- else +- /* Assume Tiger Lake */ +- cpu = "tigerlake"; +- } ++ cpu = "tigerlake"; ++ /* Assume Sapphire Rapids. */ ++ else if (has_feature (FEATURE_TSXLDTRK)) ++ cpu = "sapphirerapids"; + /* Assume Cooper Lake */ + else if (has_feature (FEATURE_AVX512BF16)) + cpu = "cooperlake"; +diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h +index ac0e5da623c..e03279bcf39 100644 +--- a/gcc/config/i386/i386.h ++++ b/gcc/config/i386/i386.h +@@ -2562,7 +2562,7 @@ constexpr wide_int_bitmask PTA_ICELAKE_SERVER = PTA_ICELAKE_CLIENT + constexpr wide_int_bitmask PTA_TIGERLAKE = PTA_ICELAKE_CLIENT | PTA_MOVDIRI + | PTA_MOVDIR64B | PTA_CLWB | PTA_AVX512VP2INTERSECT | PTA_KL | PTA_WIDEKL; + constexpr wide_int_bitmask PTA_SAPPHIRERAPIDS = PTA_ICELAKE_SERVER | PTA_MOVDIRI +- | PTA_MOVDIR64B | PTA_AVX512VP2INTERSECT | PTA_ENQCMD | PTA_CLDEMOTE ++ | PTA_MOVDIR64B | PTA_ENQCMD | PTA_CLDEMOTE + | PTA_PTWRITE | PTA_WAITPKG | PTA_SERIALIZE | PTA_TSXLDTRK | PTA_AMX_TILE + | PTA_AMX_INT8 | PTA_AMX_BF16 | PTA_UINTR | PTA_AVXVNNI | PTA_AVX512BF16; + constexpr wide_int_bitmask PTA_KNL = PTA_BROADWELL | PTA_AVX512PF +diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi +index 3419483c532..6b3afb827a5 100644 +--- a/gcc/doc/invoke.texi ++++ b/gcc/doc/invoke.texi +@@ -30236,9 +30236,9 @@ Intel sapphirerapids CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, + SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, + RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, + AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ, +-AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2 ++AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2, + VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB, +-MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, ++MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, + SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI and + AVX512BF16 instruction set support. + diff --git a/SOURCES/gcc11-pr105331.patch b/SOURCES/gcc11-pr105331.patch deleted file mode 100644 index fa1a9d3..0000000 --- a/SOURCES/gcc11-pr105331.patch +++ /dev/null @@ -1,33 +0,0 @@ -2022-04-21 Jakub Jelinek - - PR target/105331 - * config/i386/i386.c (ix86_gimplify_va_arg): Mark va_arg_tmp - temporary TREE_ADDRESSABLE before trying to gimplify ADDR_EXPR - of it. - - * gcc.dg/pr105331.c: New test. - ---- gcc/config/i386/i386.c.jj 2022-04-12 09:20:07.566662842 +0200 -+++ gcc/config/i386/i386.c 2022-04-21 12:03:32.201951522 +0200 -@@ -4891,6 +4891,7 @@ ix86_gimplify_va_arg (tree valist, tree - { - int i, prev_size = 0; - tree temp = create_tmp_var (type, "va_arg_tmp"); -+ TREE_ADDRESSABLE (temp) = 1; - - /* addr = &temp; */ - t = build1 (ADDR_EXPR, build_pointer_type (type), temp); ---- gcc/testsuite/gcc.dg/pr105331.c.jj 2022-04-21 12:09:34.398906718 +0200 -+++ gcc/testsuite/gcc.dg/pr105331.c 2022-04-21 12:09:07.304283903 +0200 -@@ -0,0 +1,11 @@ -+/* PR target/105331 */ -+/* { dg-do compile } */ -+/* { dg-options "-O -Wuninitialized" } */ -+ -+#include -+ -+int -+foo (va_list *va) -+{ -+ return va_arg (*va, double _Complex); /* { dg-bogus "may be used uninitialized" } */ -+} diff --git a/SOURCES/gcc11-rh2106262.patch b/SOURCES/gcc11-rh2106262.patch deleted file mode 100644 index 34e9c5b..0000000 --- a/SOURCES/gcc11-rh2106262.patch +++ /dev/null @@ -1,388 +0,0 @@ -commit c725028a8bb9478ec84332641147ad12b9236922 -Author: Jonathan Wakely -Date: Tue Dec 14 14:32:35 2021 +0000 - - libstdc++: Fix handling of invalid ranges in std::regex [PR102447] - - std::regex currently allows invalid bracket ranges such as [\w-a] which - are only allowed by ECMAScript when in web browser compatibility mode. - It should be an error, because the start of the range is a character - class, not a single character. The current implementation of - _Compiler::_M_expression_term does not provide a way to reject this, - because we only remember a previous character, not whether we just - processed a character class (or collating symbol etc.) - - This patch replaces the pair used to emulate - optional with a custom class closer to pair. That - allows us to track three states, so that we can tell when we've just - seen a character class. - - With this additional state the code in _M_expression_term for processing - the _S_token_bracket_dash can be improved to correctly reject the [\w-a] - case, without regressing for valid cases such as [\w-] and [----]. - - libstdc++-v3/ChangeLog: - - PR libstdc++/102447 - * include/bits/regex_compiler.h (_Compiler::_BracketState): New - class. - (_Compiler::_BrackeyMatcher): New alias template. - (_Compiler::_M_expression_term): Change pair - parameter to _BracketState. Process first character for - ECMAScript syntax as well as POSIX. - * include/bits/regex_compiler.tcc - (_Compiler::_M_insert_bracket_matcher): Pass _BracketState. - (_Compiler::_M_expression_term): Use _BracketState to store - state between calls. Improve handling of dashes in ranges. - * testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc: - Add more tests for ranges containing dashes. Check invalid - ranges with character class at the beginning. - - (cherry picked from commit 7ce3c230edf6e498e125c805a6dd313bf87dc439) - -diff --git a/libstdc++-v3/include/bits/regex_compiler.h b/libstdc++-v3/include/bits/regex_compiler.h -index f224fcb06e0..aa19df2bf9a 100644 ---- a/libstdc++-v3/include/bits/regex_compiler.h -+++ b/libstdc++-v3/include/bits/regex_compiler.h -@@ -122,13 +122,45 @@ namespace __detail - void - _M_insert_bracket_matcher(bool __neg); - -- // Returns true if successfully matched one term and should continue. -+ // Cache of the last atom seen in a bracketed range expression. -+ struct _BracketState -+ { -+ enum class _Type : char { _None, _Char, _Class } _M_type = _Type::_None; -+ _CharT _M_char; -+ -+ void -+ set(_CharT __c) noexcept { _M_type = _Type::_Char; _M_char = __c; } -+ -+ _GLIBCXX_NODISCARD _CharT -+ get() const noexcept { return _M_char; } -+ -+ void -+ reset(_Type __t = _Type::_None) noexcept { _M_type = __t; } -+ -+ explicit operator bool() const noexcept -+ { return _M_type != _Type::_None; } -+ -+ // Previous token was a single character. -+ _GLIBCXX_NODISCARD bool -+ _M_is_char() const noexcept { return _M_type == _Type::_Char; } -+ -+ // Previous token was a character class, equivalent class, -+ // collating symbol etc. -+ _GLIBCXX_NODISCARD bool -+ _M_is_class() const noexcept { return _M_type == _Type::_Class; } -+ }; -+ -+ template -+ using _BracketMatcher -+ = std::__detail::_BracketMatcher<_TraitsT, __icase, __collate>; -+ -+ // Returns true if successfully parsed one term and should continue -+ // compiling a bracket expression. - // Returns false if the compiler should move on. - template - bool -- _M_expression_term(pair& __last_char, -- _BracketMatcher<_TraitsT, __icase, __collate>& -- __matcher); -+ _M_expression_term(_BracketState& __last_char, -+ _BracketMatcher<__icase, __collate>& __matcher); - - int - _M_cur_int_value(int __radix); -diff --git a/libstdc++-v3/include/bits/regex_compiler.tcc b/libstdc++-v3/include/bits/regex_compiler.tcc -index ea07bc2428e..7769a9e63a3 100644 ---- a/libstdc++-v3/include/bits/regex_compiler.tcc -+++ b/libstdc++-v3/include/bits/regex_compiler.tcc -@@ -403,7 +403,7 @@ namespace __detail - _M_insert_character_class_matcher() - { - __glibcxx_assert(_M_value.size() == 1); -- _BracketMatcher<_TraitsT, __icase, __collate> __matcher -+ _BracketMatcher<__icase, __collate> __matcher - (_M_ctype.is(_CtypeT::upper, _M_value[0]), _M_traits); - __matcher._M_add_character_class(_M_value, false); - __matcher._M_ready(); -@@ -424,25 +424,17 @@ namespace __detail - _Compiler<_TraitsT>:: - _M_insert_bracket_matcher(bool __neg) - { -- _BracketMatcher<_TraitsT, __icase, __collate> __matcher(__neg, _M_traits); -- pair __last_char; // Optional<_CharT> -- __last_char.first = false; -- if (!(_M_flags & regex_constants::ECMAScript)) -- { -- if (_M_try_char()) -- { -- __last_char.first = true; -- __last_char.second = _M_value[0]; -- } -- else if (_M_match_token(_ScannerT::_S_token_bracket_dash)) -- { -- __last_char.first = true; -- __last_char.second = '-'; -- } -- } -- while (_M_expression_term(__last_char, __matcher)); -- if (__last_char.first) -- __matcher._M_add_char(__last_char.second); -+ _BracketMatcher<__icase, __collate> __matcher(__neg, _M_traits); -+ _BracketState __last_char; -+ if (_M_try_char()) -+ __last_char.set(_M_value[0]); -+ else if (_M_match_token(_ScannerT::_S_token_bracket_dash)) -+ // Dash as first character is a normal character. -+ __last_char.set('-'); -+ while (_M_expression_term(__last_char, __matcher)) -+ ; -+ if (__last_char._M_is_char()) -+ __matcher._M_add_char(__last_char.get()); - __matcher._M_ready(); - _M_stack.push(_StateSeqT( - *_M_nfa, -@@ -447,27 +438,27 @@ namespace __detail - template - bool - _Compiler<_TraitsT>:: -- _M_expression_term(pair& __last_char, -- _BracketMatcher<_TraitsT, __icase, __collate>& __matcher) -+ _M_expression_term(_BracketState& __last_char, -+ _BracketMatcher<__icase, __collate>& __matcher) - { - if (_M_match_token(_ScannerT::_S_token_bracket_end)) - return false; - -+ // Add any previously cached char into the matcher and update cache. - const auto __push_char = [&](_CharT __ch) - { -- if (__last_char.first) -- __matcher._M_add_char(__last_char.second); -- else -- __last_char.first = true; -- __last_char.second = __ch; -+ if (__last_char._M_is_char()) -+ __matcher._M_add_char(__last_char.get()); -+ __last_char.set(__ch); - }; -- const auto __flush = [&] -+ // Add any previously cached char into the matcher and update cache. -+ const auto __push_class = [&] - { -- if (__last_char.first) -- { -- __matcher._M_add_char(__last_char.second); -- __last_char.first = false; -- } -+ if (__last_char._M_is_char()) -+ __matcher._M_add_char(__last_char.get()); -+ // We don't cache anything here, just record that the last thing -+ // processed was a character class (or similar). -+ __last_char.reset(_BracketState::_Type::_Class); - }; - - if (_M_match_token(_ScannerT::_S_token_collsymbol)) -@@ -476,16 +467,16 @@ namespace __detail - if (__symbol.size() == 1) - __push_char(__symbol[0]); - else -- __flush(); -+ __push_class(); - } - else if (_M_match_token(_ScannerT::_S_token_equiv_class_name)) - { -- __flush(); -+ __push_class(); - __matcher._M_add_equivalence_class(_M_value); - } - else if (_M_match_token(_ScannerT::_S_token_char_class_name)) - { -- __flush(); -+ __push_class(); - __matcher._M_add_character_class(_M_value, false); - } - else if (_M_try_char()) -@@ -502,49 +493,50 @@ namespace __detail - // It turns out that no one reads BNFs ;) - else if (_M_match_token(_ScannerT::_S_token_bracket_dash)) - { -- if (!__last_char.first) -+ if (_M_match_token(_ScannerT::_S_token_bracket_end)) - { -- if (!(_M_flags & regex_constants::ECMAScript)) -- { -- if (_M_match_token(_ScannerT::_S_token_bracket_end)) -- { -- __push_char('-'); -- return false; -- } -- __throw_regex_error( -- regex_constants::error_range, -- "Unexpected dash in bracket expression. For POSIX syntax, " -- "a dash is not treated literally only when it is at " -- "beginning or end."); -- } -+ // For "-]" the dash is a literal character. - __push_char('-'); -+ return false; - } -- else -+ else if (__last_char._M_is_class()) -+ { -+ // "\\w-" is invalid, start of range must be a single char. -+ __throw_regex_error(regex_constants::error_range, -+ "Invalid start of range in bracket expression."); -+ } -+ else if (__last_char._M_is_char()) - { - if (_M_try_char()) - { -- __matcher._M_make_range(__last_char.second, _M_value[0]); -- __last_char.first = false; -+ // "x-y" -+ __matcher._M_make_range(__last_char.get(), _M_value[0]); -+ __last_char.reset(); - } - else if (_M_match_token(_ScannerT::_S_token_bracket_dash)) - { -- __matcher._M_make_range(__last_char.second, '-'); -- __last_char.first = false; -+ // "x--" -+ __matcher._M_make_range(__last_char.get(), '-'); -+ __last_char.reset(); - } - else -- { -- if (_M_scanner._M_get_token() -- != _ScannerT::_S_token_bracket_end) -- __throw_regex_error( -- regex_constants::error_range, -- "Character is expected after a dash."); -- __push_char('-'); -- } -+ __throw_regex_error(regex_constants::error_range, -+ "Invalid end of range in bracket expression."); - } -+ else if (_M_flags & regex_constants::ECMAScript) -+ { -+ // A dash that is not part of an existing range. Might be the -+ // start of a new range, or might just be a literal '-' char. -+ // Only ECMAScript allows that in the middle of a bracket expr. -+ __push_char('-'); -+ } -+ else -+ __throw_regex_error(regex_constants::error_range, -+ "Invalid dash in bracket expression."); - } - else if (_M_match_token(_ScannerT::_S_token_quoted_class)) - { -- __flush(); -+ __push_class(); - __matcher._M_add_character_class(_M_value, - _M_ctype.is(_CtypeT::upper, - _M_value[0])); -diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc -index 7df70604ea6..0d76e63da7b 100644 ---- a/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc -+++ b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc -@@ -69,6 +69,16 @@ test01() - void - test02() - { -+ VERIFY(regex_match("-", regex("[-]", regex_constants::ECMAScript))); -+ VERIFY(regex_match("-", regex("[--]", regex_constants::ECMAScript))); -+ VERIFY(regex_match("-", regex("[---]", regex_constants::ECMAScript))); -+ VERIFY(regex_match("-", regex("[----]", regex_constants::ECMAScript))); -+ VERIFY(regex_match("-", regex("[-----]", regex_constants::ECMAScript))); -+ -+ VERIFY(regex_match("-", regex("[-]", regex_constants::extended))); -+ VERIFY(regex_match("-", regex("[--]", regex_constants::extended))); -+ VERIFY(regex_match("-", regex("[---]", regex_constants::extended))); -+ VERIFY(regex_match("-", regex("[----]", regex_constants::extended))); - try - { - std::regex re("[-----]", std::regex::extended); -@@ -78,7 +88,6 @@ test02() - { - VERIFY(e.code() == std::regex_constants::error_range); - } -- std::regex re("[-----]", std::regex::ECMAScript); - - VERIFY(!regex_match("b", regex("[-ac]", regex_constants::extended))); - VERIFY(!regex_match("b", regex("[ac-]", regex_constants::extended))); -@@ -93,7 +102,27 @@ test02() - } - catch (const std::regex_error& e) - { -+ VERIFY(e.code() == std::regex_constants::error_range); -+ } -+ try -+ { -+ regex("[@--]", regex_constants::extended); -+ VERIFY(false); - } -+ catch (const std::regex_error& e) -+ { -+ VERIFY(e.code() == std::regex_constants::error_range); -+ } -+ try -+ { -+ regex("[--%]", regex_constants::extended); -+ VERIFY(false); -+ } -+ catch (const std::regex_error& e) -+ { -+ VERIFY(e.code() == std::regex_constants::error_range); -+ } -+ - VERIFY(regex_match("].", regex("[][.hyphen.]-0]*", regex_constants::extended))); - } - -@@ -158,6 +187,36 @@ test06() - VERIFY(regex_match("a-", debian_cron_namespace_ok)); - } - -+// libstdc++/102447 -+void -+test07() -+{ -+ VERIFY(regex_match("-", std::regex("[\\w-]", std::regex::ECMAScript))); -+ VERIFY(regex_match("a", std::regex("[\\w-]", std::regex::ECMAScript))); -+ VERIFY(regex_match("-", std::regex("[a-]", std::regex::ECMAScript))); -+ VERIFY(regex_match("a", std::regex("[a-]", std::regex::ECMAScript))); -+ -+ try -+ { -+ std::regex re("[\\w-a]", std::regex::ECMAScript); -+ VERIFY(false); -+ } -+ catch (const std::regex_error& e) -+ { -+ VERIFY(e.code() == std::regex_constants::error_range); -+ } -+ -+ try -+ { -+ std::regex re("[\\w--]", std::regex::ECMAScript); -+ VERIFY(false); -+ } -+ catch (const std::regex_error& e) -+ { -+ VERIFY(e.code() == std::regex_constants::error_range); -+ } -+} -+ - int - main() - { -@@ -167,6 +226,7 @@ main() - test04(); - test05(); - test06(); -+ test07(); - - return 0; - } diff --git a/SPECS/gcc.spec b/SPECS/gcc.spec index eecd7d4..6802d15 100644 --- a/SPECS/gcc.spec +++ b/SPECS/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20220421 -%global gitrev 1d3172725999deb0dca93ac70393ed9a0ad0da3f +%global DATE 20221121 +%global gitrev 643e61c61b308f9c572da4ccd5f730fb %global gcc_version 11.3.1 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 2 +%global gcc_release 4 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -42,7 +42,7 @@ %else %global build_go 0 %endif -%ifarch %{ix86} x86_64 %{arm} %{mips} s390 s390x riscv64 +%ifarch %{ix86} x86_64 %{arm} aarch64 %{mips} s390 s390x riscv64 %global build_d 1 %else %global build_d 0 @@ -113,10 +113,22 @@ %ifarch x86_64 %global multilib_32_arch i686 %endif +%if 0%{?rhel} == 9 +%ifarch x86_64 +%global build_cross 1 +%else +%global build_cross 0 +%endif +%else +%dnl rhel != 9 +%global build_cross 0 +%endif +# TODO: Add ppc64le-redhat-linux s390x-redhat-linux later. +%global cross_targets aarch64-redhat-linux Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.1%{?dist}.alma +Release: %{gcc_release}.3%{?dist}.alma # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -273,9 +285,8 @@ Patch20: gcc11-relocatable-pch.patch Patch21: gcc11-dejagnu-multiline.patch Patch23: gcc11-pie.patch Patch24: gcc11-bind-now.patch -Patch25: gcc11-pr105331.patch -# This can go once we rebase from GCC 11. -Patch26: gcc11-rh2106262.patch +Patch25: gcc11-detect-sapphirerapids.patch +Patch26: gcc11-Wmismatched-dealloc-doc.patch Patch100: gcc11-fortran-fdec-duplicates.patch Patch101: gcc11-fortran-flogical-as-integer.patch @@ -797,6 +808,45 @@ This package adds a version of the annobin plugin for gcc. This version of the plugin is explicitly built by the same version of gcc that is installed so that there cannot be any synchronization problems. +%package -n cross-gcc-aarch64 +Summary: Cross targeted AArch64 gcc for developer use. Not intended for production. +Provides: cross-gcc-aarch64 = %{version}-%{release} +%if %{build_cross} +Requires: cross-binutils-aarch64 >= 2.35 +BuildRequires: sysroot-aarch64-el9-glibc >= 2.34 +BuildRequires: cross-binutils-aarch64 >= 2.35 +%endif +# Don't provide e.g. liblto_plugin.so()(64bit). +AutoReqProv: no + +%description -n cross-gcc-aarch64 +This package contains a version of gcc that can compile code for AArch64 +(cross compiler). This cross compiler is intended for developers to use +during application development. This cross compiler is not intended for +production use, and output binary artifacts should not be used in +production. Generated binary artifacts contain binary annotations that +mark them as cross compiled. + +%package -n cross-gcc-c++-aarch64 +Summary: Cross targeted AArch64 gcc-c++ for developer use. Not intended for production. +Provides: cross-gcc-c++-aarch64 = %{version}-%{release} +%if %{build_cross} +Requires: cross-gcc-aarch64 = %{version}-%{release} +BuildRequires: sysroot-aarch64-el9-glibc >= 2.34 +BuildRequires: cross-binutils-aarch64 >= 2.35 +%endif +# ??? Otherwise this subpackage couldn't be installed, depends on libm.so +# and libgcc_s.so +AutoReqProv: no + +%description -n cross-gcc-c++-aarch64 +This package contains a version of g++ that can compile code for AArch64 +(cross compiler). This cross compiler is intended for developers to use +during application development. This cross compiler is not intended for +production use, and output binary artifacts should not be used in +production. Generated binary artifacts contain binary annotations that +mark them as cross compiled. + %prep %setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 -a 3 %patch0 -p0 -b .hack~ @@ -827,8 +877,8 @@ so that there cannot be any synchronization problems. %patch21 -p1 -b .dejagnu-multiline~ %patch23 -p1 -b .pie~ %patch24 -p1 -b .now~ -%patch25 -p0 -b .pr105331~ -%patch26 -p1 -b .rh2106262~ +%patch25 -p1 -b .detect-spr~ +%patch26 -p1 -b .Wmismatched-dealloc-doc~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -847,7 +897,9 @@ so that there cannot be any synchronization problems. rm -f gcc/testsuite/go.test/test/fixedbugs/issue19182.go %endif -echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE +echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE.native +echo 'Red Hat %{version}-%{gcc_release} cross from %{_arch}' > gcc/DEV-PHASE.cross +cp -p gcc/DEV-PHASE{.native,} cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h @@ -986,10 +1038,36 @@ enablelgo=,go %if %{build_d} enableld=,d %endif -CONFIGURE_OPTS="\ +# CONFIGURE_OPTS_BASE are the configure options common to the native and cross +# builds. E.g., --prefix. This cannot include arch-specific configure options. +# CONFIGURE_OPTS_NATIVE are the configure options used for the native build +# (that is, the regular non-cross build) and libgccjit. This includes arch-specific +# configure options (default -march and such). +# CONFIGURE_OPTS = CONFIGURE_OPTS_BASE + CONFIGURE_OPTS_NATIVE +# CONFIGURE_OPTS_CROSS are the configure options common to all the cross +# builds. E.g., only build C/C++. This shall not be used for the native build. +# Each cross compiler's configure options will be: +# CONFIGURE_OPTS_BASE + CONFIGURE_OPTS_CROSS + --target= + --with-sysroot= + +# It it very important that the arch-specific configure options used in +# CONFIGURE_OPTS_NATIVE are in lockstep with the +# used in the cross builds. +CONFIGURE_OPTS_BASE="\ --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \ --with-bugurl=http://bugs.almalinux.org/ \ --enable-shared --enable-threads=posix --enable-checking=release \ + --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \ + --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only \ + --enable-plugin --enable-initfini-array \ +%if %{build_isl} + --with-isl=`pwd`/isl-install \ +%else + --without-isl \ +%endif + " + +# NB: When updating CONFIGURE_OPTS_NATIVE, make sure to update the cross +# compiler options as well (look for CONFIGURE_OPTS_FOR_ARCH). +CONFIGURE_OPTS_NATIVE="\ %ifarch ppc64le --enable-targets=powerpcle-linux \ %endif @@ -1006,16 +1084,8 @@ CONFIGURE_OPTS="\ %else --enable-multilib \ %endif - --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \ - --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only \ %ifnarch %{mips} --with-linker-hash-style=gnu \ -%endif - --enable-plugin --enable-initfini-array \ -%if %{build_isl} - --with-isl=`pwd`/isl-install \ -%else - --without-isl \ %endif %if %{build_offload_nvptx} --enable-offload-targets=nvptx-none \ @@ -1130,6 +1200,14 @@ CONFIGURE_OPTS="\ %endif %endif " +CONFIGURE_OPTS="$CONFIGURE_OPTS_BASE $CONFIGURE_OPTS_NATIVE" + +CONFIGURE_OPTS_CROSS="\ + --enable-languages=c,c++ --disable-bootstrap --disable-libsanitizer \ + --host=%{gcc_target_platform} --build=%{gcc_target_platform} \ + --disable-multilib --disable-libstdcxx-pch --disable-libcc1 \ + --enable-host-pie --enable-host-bind-now \ + " CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \ CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \ @@ -1170,6 +1248,55 @@ make jit.sphinx.html make jit.sphinx.install-html jit_htmldir=`pwd`/../../rpm.doc/libgccjit-devel/html cd .. +# Build cross compilers here. +%if %{build_cross} +echo ==================== BUILD CROSS ========================= +# Get out of obj-%{gcc_target_platform}. +pushd .. +for crossarch in %{cross_targets}; do + mkdir obj-$crossarch + cd obj-$crossarch + + case $crossarch in + aarch64*) + CONFIGURE_OPTS_FOR_ARCH="" + ;; + s390x*) + CONFIGURE_OPTS_FOR_ARCH="" + ;; + ppc64le*) + CONFIGURE_OPTS_FOR_ARCH="" + ;; + *) + echo >&2 "ERROR: unknown cross arch $crossarch" + exit 1 + ;; + esac + + # Temporarily replace DEV-PHASE. + cp -p ../gcc/DEV-PHASE{.cross,} + + CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \ + CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \ + | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \ + XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \ + ../configure $CONFIGURE_OPTS_BASE $CONFIGURE_OPTS_CROSS \ + --with-sysroot=/usr/$crossarch/sys-root/el9/ \ + --with-gxx-include-dir="/usr/$crossarch/sys-root/el9/%{_prefix}/include/c++/%{gcc_major}" \ + --target=$crossarch \ + $CONFIGURE_OPTS_FOR_ARCH + make %{?_smp_mflags} LDFLAGS_FOR_TARGET=-Wl,-z,relro,-z,now + + # Restore DEV-PHASE. + cp -p ../gcc/DEV-PHASE{.native,} + # Out of obj-$crossarch. + cd .. +done +# Go back to obj-%{gcc_target_platform}. +popd +echo ==================== BUILD CROSS END ========================= +%endif + %if %{build_isl} cp -a isl-install/lib/libisl.so.15 gcc/ %endif @@ -1370,6 +1497,126 @@ make prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \ chmod 644 %{buildroot}%{_infodir}/gnat* %endif +%if %{build_cross} +echo ==================== INSTALL CROSS ========================= +# Our of obj-%{gcc_target_platform}. +pushd .. +for crossarch in %{cross_targets}; do + cd obj-$crossarch + + CROSS_LIBPATH=%{buildroot}%{_prefix}/lib/gcc/$crossarch/%{gcc_major}/ + + # Temporarily replace DEV-PHASE. + cp -p ../gcc/DEV-PHASE{.cross,} + + # --with-gxx-include-dir= doesn't prefix its argument with $(DESTDIR) + # and you can't install things into /usr unless you're root. + mkdir scratch + scratchdir=`pwd`/scratch + pushd $crossarch/libstdc++-v3 + for i in `find . -name Makefile`; do + cp -a $i $i.save + sed -i -e 's?^gxx_include_dir = .*$?gxx_include_dir = '$scratchdir'?' $i + touch -r $i.save $i + done + popd + + # Use -j1, because build-many-glibcs says: + # Parallel "make install" for GCC has race conditions that can + # cause it to fail; see + # . Such + # problems are not known for binutils, but doing the + # installation in parallel within a particular toolchain build + # (as opposed to installation of one toolchain from + # build-many-glibcs.py running in parallel to the installation + # of other toolchains being built) is not known to be + # significantly beneficial, so it is simplest just to disable + # parallel install for cross tools here. + make -j1 prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \ + infodir=%{buildroot}%{_infodir} install + + # Restore DEV-PHASE. + cp -p ../gcc/DEV-PHASE{.native,} + + # Restore Makefiles with the old gxx_include_dir. + pushd $crossarch/libstdc++-v3 + for i in `find . -name Makefile`; do + mv -f $i.save $i + done + popd + # We're not shipping C++ headers; nuke 'em. + rm -rf $scratchdir + + # Move libgomp.spec to where it belongs for %files. + mv $crossarch/libgomp/libgomp.spec $CROSS_LIBPATH + # Likewise for libitm.spec + %if %{build_libitm} + mv $crossarch/libitm/libitm.spec $CROSS_LIBPATH + %endif + + cd .. + + pushd $CROSS_LIBPATH + mv include-fixed/syslimits.h include/syslimits.h + mv include-fixed/limits.h include/limits.h + popd + + echo '/* GNU ld script + Use the shared library, but some functions are only in + the static library. */ +OUTPUT_FORMAT(elf64-littleaarch64) +GROUP ( =/lib64/libgcc_s.so.1 libgcc.a )' > $CROSS_LIBPATH/libgcc_s.so + + echo '/* GNU ld script + Use the shared library from sysroot. */ +OUTPUT_FORMAT(elf64-littleaarch64) +INPUT ( =%{_prefix}/lib64/libgomp.so.1 )' > $CROSS_LIBPATH/libgomp.so + + echo '/* GNU ld script + Use the shared library from sysroot. */ +OUTPUT_FORMAT(elf64-littleaarch64) +INPUT ( =/%{_prefix}/lib64/libstdc++.so.6 )' > $CROSS_LIBPATH/libstdc++.so + + echo "/* GNU ld script + Use the static library from sysroot. */ +INPUT( =%{_prefix}/lib/gcc/$crossarch/%{gcc_major}/libstdc++.a )" > $CROSS_LIBPATH/libstdc++.a + + echo "/* GNU ld script + Use the static library from sysroot. */ +INPUT( =%{_prefix}/lib/gcc/$crossarch/%{gcc_major}/libsupc++.a )" > $CROSS_LIBPATH/libsupc++.a + + echo '/* GNU ld script + Use the shared library from sysroot. */ +OUTPUT_FORMAT(elf64-littleaarch64) +INPUT ( =%{_prefix}/lib64/libatomic.so.1 )' > $CROSS_LIBPATH/libatomic.so + + echo "/* GNU ld script + Use the static library from sysroot. */ +INPUT( =%{_prefix}/lib/gcc/$crossarch/%{gcc_major}/libatomic.a )" > $CROSS_LIBPATH/libatomic.a + + echo '/* GNU ld script + Use the shared library from sysroot. */ +OUTPUT_FORMAT(elf64-littleaarch64) +INPUT ( =%{_prefix}/lib64/libitm.so.1 )' > $CROSS_LIBPATH/libitm.so + + echo "/* GNU ld script + Use the static library from sysroot. */ +INPUT( =%{_prefix}/lib/gcc/$crossarch/%{gcc_major}/libitm.a )" > $CROSS_LIBPATH/libitm.a + + # Help plugins find out nvra. + echo gcc-%{version}-%{release}.%{_arch} > $CROSS_LIBPATH/rpmver + + # TODO + # Add symlink to lto plugin in the binutils plugin directory. + #%{__mkdir_p} %{buildroot}%{_libdir}/bfd-plugins/ + #ln -s ../../libexec/gcc/$crossarch/%{gcc_major}/liblto_plugin.so \ + # %{buildroot}%{_libdir}/$crossarch/bfd-plugins/ +done +# Back to obj-%{gcc_target_platform}. +popd +echo ==================== INSTALL CROSS END ========================= +%endif + FULLPATH=%{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} FULLEPATH=%{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} @@ -3273,10 +3520,127 @@ end %{ANNOBIN_GCC_PLUGIN_DIR}/gcc-annobin.so.0 %{ANNOBIN_GCC_PLUGIN_DIR}/gcc-annobin.so.0.0.0 +%if %{build_cross} +%files -n cross-gcc-aarch64 +%{_prefix}/bin/aarch64-redhat-linux-cpp +%{_prefix}/bin/aarch64-redhat-linux-gcc +%{_prefix}/bin/aarch64-redhat-linux-gcc-%{gcc_major} +%{_prefix}/bin/aarch64-redhat-linux-gcc-ar +%{_prefix}/bin/aarch64-redhat-linux-gcc-nm +%{_prefix}/bin/aarch64-redhat-linux-gcc-ranlib +%{_prefix}/bin/aarch64-redhat-linux-gcov* +%{_prefix}/bin/aarch64-redhat-linux-lto-dump +%{_prefix}/libexec/gcc/aarch64-redhat-linux/%{gcc_major}/cc1 +%{_prefix}/libexec/gcc/aarch64-redhat-linux/%{gcc_major}/collect2 +%{_prefix}/libexec/gcc/aarch64-redhat-linux/%{gcc_major}/lto1 +%{_prefix}/libexec/gcc/aarch64-redhat-linux/%{gcc_major}/lto-wrapper +%{_prefix}/libexec/gcc/aarch64-redhat-linux/%{gcc_major}/liblto_plugin.so +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/aarch64-redhat-linux +%dir %{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major} +%dir %{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/include +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/crt*.o +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libgcc.a +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libgcc_eh.a +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libgcov.a +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/include/*.h +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/rpmver +# These are here for ld(1) purposes only. +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libgcc_s.so +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libgomp.so +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libgomp.spec +%if %{build_libatomic} +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libatomic.so +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libatomic.a +%endif +%if %{build_libitm} +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libitm.so +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libitm.a +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libitm.spec +%endif + +%files -n cross-gcc-c++-aarch64 +%{_prefix}/bin/aarch64-redhat-linux-c++ +%{_prefix}/bin/aarch64-redhat-linux-g++ +%{_prefix}/libexec/gcc/aarch64-redhat-linux/%{gcc_major}/cc1plus +%{_prefix}/libexec/gcc/aarch64-redhat-linux/%{gcc_major}/g++-mapper-server +# For ld(1) purposes only. +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libstdc++.so +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libstdc++.a +%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libsupc++.a +%dnl build_cross +%endif + %changelog -* Tue Nov 15 2022 Eduard Abdullin - 11.3.1-2.1.alma +* Tue May 09 2023 Eduard Abdullin - 11.3.1-4.3.alma - Debrand for AlmaLinux +* Wed Dec 21 2022 Marek Polacek 11.3.1-4.3 +- compile the cross binaries as PIE/-z now (#2155452) + +* Mon Dec 19 2022 Marek Polacek 11.3.1-4.2 +- ship libitm.spec in cross-gcc (#2154462) + +* Tue Dec 13 2022 Marek Polacek 11.3.1-4.1 +- add cross compiler functionality for non-production uses (#2149650) + +* Tue Nov 22 2022 Marek Polacek 11.3.1-4 +- update from releases/gcc-11-branch (#2117632) + - PRs analyzer/105252, analyzer/105365, analyzer/105366, c++/65211, + c++/82980, c++/86193, c++/90107, c++/97296, c++/101442, c++/101698, + c++/102071, c++/102177, c++/102300, c++/102307, c++/102479, + c++/102629, c++/104066, c++/104142, c++/104646, c++/104669, + c++/105245, c++/105265, c++/105289, c++/105304, c++/105321, + c++/105386, c++/105398, c++/105725, c++/105761, c++/105774, + c++/105795, c++/105852, c++/105925, c++/106024, c++/106361, + c++/107358, c/41041, c/106016, c/106981, c/107001, d/106139, + d/106638, debug/106261, fortran/82868, fortran/100029, fortran/100040, + fortran/100097, fortran/100098, fortran/100132, fortran/100136, + fortran/100245, fortran/103413, fortran/103504, fortran/103693, + fortran/103694, fortran/104313, fortran/104849, fortran/105012, + fortran/105230, fortran/105243, fortran/105310, fortran/105633, + fortran/105691, fortran/105813, fortran/105954, fortran/106121, + fortran/106817, fortran/106857, fortran/106985, fortran/106986, + fortran/107054, ipa/100413, ipa/105600, ipa/105739, libgomp/106045, + libstdc++/65018, libstdc++/84110, libstdc++/93602, libstdc++/96592, + libstdc++/99290, libstdc++/100823, libstdc++/101709, libstdc++/102447, + libstdc++/103664, libstdc++/103848, libstdc++/103853, + libstdc++/103911, libstdc++/103992, libstdc++/104217, + libstdc++/104443, libstdc++/104602, libstdc++/104731, + libstdc++/105128, libstdc++/105284, libstdc++/105375, + libstdc++/105502, libstdc++/105671, libstdc++/105915, + libstdc++/106162, libstdc++/106248, libstdc++/106320, + libstdc++/106607, libstdc++/106695, lto/106334, lto/106540, + middle-end/103193, middle-end/104869, middle-end/104966, + middle-end/105140, middle-end/105998, middle-end/106027, + middle-end/106030, middle-end/106144, middle-end/106331, + middle-end/106492, preprocessor/97498, preprocessor/105732, + rtl-optimization/104637, rtl-optimization/105041, + rtl-optimization/105333, rtl-optimization/105559, + rtl-optimization/106032, rtl-optimization/106187, sanitizer/105396, + sanitizer/105729, target/96072, target/99184, target/99685, + target/101322, target/101891, target/102059, target/102146, + target/103197, target/103353, target/104257, target/104829, + target/105147, target/105162, target/105209, target/105292, + target/105339, target/105349, target/105463, target/105472, + target/105854, target/105879, target/105970, target/105981, + target/106017, target/106091, target/106355, target/106491, + target/106721, target/107061, target/107064, target/107183, + target/107248, target/107304, target/107364, target/107748, + testsuite/105095, testsuite/105266, testsuite/105433, + testsuite/106345, tree-optimization/103116, tree-optimization/105148, + tree-optimization/105163, tree-optimization/105173, + tree-optimization/105250, tree-optimization/105263, + tree-optimization/105312, tree-optimization/105368, + tree-optimization/105431, tree-optimization/105437, + tree-optimization/105528, tree-optimization/105618, + tree-optimization/105726, tree-optimization/105860, + tree-optimization/106112, tree-optimization/106131, + tree-optimization/106189, tree-optimization/106513, + tree-optimization/106892, tree-optimization/106934 +- fix the detection of Sapphire Rapids in host_detect_local_cpu +- fix -Wmismatched-dealloc documentation (#2116635) + * Tue Jul 12 2022 Marek Polacek 11.3.1-2.1 - fix handling of invalid ranges in std::regex (#2106262) * Thu Apr 21 2022 Jakub Jelinek 11.3.1-2