diff --git a/0018-Use-CXX11-ABI.patch b/0018-Use-CXX11-ABI.patch
index 88449dde2aff29c2b261e6994e913c239a44c215..1e60ce1eb743be27abe77aa5de35a6c24827a285 100644
--- a/0018-Use-CXX11-ABI.patch
+++ b/0018-Use-CXX11-ABI.patch
@@ -11,3 +11,16 @@ index 47f97dcb636..66f07aaa749 100644
#include
#include
+diff --git a/gcc/testsuite/g++.dg/torture/pr106922.C b/gcc/testsuite/g++.dg/torture/pr106922.C
+index 046fc6cce76..4214a31f276 100644
+--- a/gcc/testsuite/g++.dg/torture/pr106922.C
++++ b/gcc/testsuite/g++.dg/torture/pr106922.C
+@@ -4,6 +4,8 @@
+ // -O1 doesn't iterate VN and thus has bogus uninit diagnostics
+ // { dg-skip-if "" { *-*-* } { "-O1" } { "" } }
+
++#define _GLIBCXX_USE_CXX11_ABI 1
++
+ #include
+
+ #include
diff --git a/0023-i386-Add-syscall-to-enable-AMX-for-latest-kernels.patch b/0023-i386-Add-syscall-to-enable-AMX-for-latest-kernels.patch
deleted file mode 100644
index 94625b5cf146f6c15ad878f7a3e22722e55dccb2..0000000000000000000000000000000000000000
--- a/0023-i386-Add-syscall-to-enable-AMX-for-latest-kernels.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 5e377d21f1f345d8b157b9bc306e02bb9bd45e01 Mon Sep 17 00:00:00 2001
-From: Haochen Jiang
-Date: Thu, 16 Jun 2022 00:15:53 -0700
-Subject: [PATCH] i386: Add syscall to enable AMX for latest kernels
-
-gcc/testsuite/ChangeLog:
-
- * gcc.target/i386/amx-check.h (request_perm_xtile_data):
- New function to check if AMX is usable and enable AMX.
- (main): Run test if AMX is usable.
----
- gcc/testsuite/gcc.target/i386/amx-check.h | 30 +++++++++++++++++++++++
- 1 file changed, 30 insertions(+)
-
-diff --git a/gcc/testsuite/gcc.target/i386/amx-check.h b/gcc/testsuite/gcc.target/i386/amx-check.h
-index 434b0e59703..6fff5ff4631 100644
---- a/gcc/testsuite/gcc.target/i386/amx-check.h
-+++ b/gcc/testsuite/gcc.target/i386/amx-check.h
-@@ -4,11 +4,24 @@
- #include
- #include
- #include
-+#include
-+#ifdef __linux__
-+#include
-+#endif
- #ifdef DEBUG
- #include
- #endif
- #include "cpuid.h"
-
-+#define XFEATURE_XTILECFG 17
-+#define XFEATURE_XTILEDATA 18
-+#define XFEATURE_MASK_XTILECFG (1 << XFEATURE_XTILECFG)
-+#define XFEATURE_MASK_XTILEDATA (1 << XFEATURE_XTILEDATA)
-+#define XFEATURE_MASK_XTILE (XFEATURE_MASK_XTILECFG | XFEATURE_MASK_XTILEDATA)
-+
-+#define ARCH_GET_XCOMP_PERM 0x1022
-+#define ARCH_REQ_XCOMP_PERM 0x1023
-+
- /* TODO: The tmm emulation is temporary for current
- AMX implementation with no tmm regclass, should
- be changed in the future. */
-@@ -44,6 +57,20 @@ typedef struct __tile
- /* Stride (colum width in byte) used for tileload/store */
- #define _STRIDE 64
-
-+#ifdef __linux__
-+/* We need syscall to use amx functions */
-+int request_perm_xtile_data()
-+{
-+ unsigned long bitmask;
-+
-+ if (syscall (SYS_arch_prctl, ARCH_REQ_XCOMP_PERM, XFEATURE_XTILEDATA) ||
-+ syscall (SYS_arch_prctl, ARCH_GET_XCOMP_PERM, &bitmask))
-+ return 0;
-+
-+ return (bitmask & XFEATURE_MASK_XTILE) != 0;
-+}
-+#endif
-+
- /* Initialize tile config by setting all tmm size to 16x64 */
- void init_tile_config (__tilecfg_u *dst)
- {
-@@ -185,6 +212,9 @@ main ()
- #endif
- #ifdef AMX_BF16
- && __builtin_cpu_supports ("amx-bf16")
-+#endif
-+#ifdef __linux__
-+ && request_perm_xtile_data ()
- #endif
- )
- {
---
-2.18.2
-
diff --git a/0025-Add-attribute-hot-judgement-for-INLINE_HINT_known_ho.patch b/0025-Add-attribute-hot-judgement-for-INLINE_HINT_known_ho.patch
deleted file mode 100644
index 3e70f0c2f07c3f4243599d4c9963eb29af67e297..0000000000000000000000000000000000000000
--- a/0025-Add-attribute-hot-judgement-for-INLINE_HINT_known_ho.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From 1b9a5cc9ec08e9f239dd2096edcc447b7a72f64a Mon Sep 17 00:00:00 2001
-From: "Cui,Lili"
-Date: Tue, 1 Nov 2022 09:16:49 +0800
-Subject: [PATCH] Add attribute hot judgement for INLINE_HINT_known_hot hint.
-
-We set up INLINE_HINT_known_hot hint only when we have profile feedback,
-now add function attribute judgement for it, when both caller and callee
-have __attribute__((hot)), we will also set up INLINE_HINT_known_hot hint
-for it.
-
-With this patch applied,
-ADL Multi-copy: 538.imagic_r 16.7%
-ICX Multi-copy: 538.imagic_r 15.2%
-CLX Multi-copy: 538.imagic_r 12.7%
-Znver3 Multi-copy: 538.imagic_r 10.6%
-Arm Multi-copy: 538.imagic_r 13.4%
-
-gcc/ChangeLog
-
- * ipa-inline-analysis.cc (do_estimate_edge_time): Add function attribute
- judgement for INLINE_HINT_known_hot hint.
-
-gcc/testsuite/ChangeLog:
-
- * gcc.dg/ipa/inlinehint-6.c: New test.
----
- gcc/ipa-inline-analysis.cc | 13 ++++---
- gcc/testsuite/gcc.dg/ipa/inlinehint-6.c | 47 +++++++++++++++++++++++++
- 2 files changed, 56 insertions(+), 4 deletions(-)
- create mode 100644 gcc/testsuite/gcc.dg/ipa/inlinehint-6.c
-
-diff --git a/gcc/ipa-inline-analysis.cc b/gcc/ipa-inline-analysis.cc
-index 1ca685d1b0e..7bd29c36590 100644
---- a/gcc/ipa-inline-analysis.cc
-+++ b/gcc/ipa-inline-analysis.cc
-@@ -48,6 +48,7 @@ along with GCC; see the file COPYING3. If not see
- #include "ipa-utils.h"
- #include "cfgexpand.h"
- #include "gimplify.h"
-+#include "attribs.h"
-
- /* Cached node/edge growths. */
- fast_call_summary *edge_growth_cache = NULL;
-@@ -249,15 +250,19 @@ do_estimate_edge_time (struct cgraph_edge *edge, sreal *ret_nonspec_time)
- hints = estimates.hints;
- }
-
-- /* When we have profile feedback, we can quite safely identify hot
-- edges and for those we disable size limits. Don't do that when
-- probability that caller will call the callee is low however, since it
-+ /* When we have profile feedback or function attribute, we can quite safely
-+ identify hot edges and for those we disable size limits. Don't do that
-+ when probability that caller will call the callee is low however, since it
- may hurt optimization of the caller's hot path. */
-- if (edge->count.ipa ().initialized_p () && edge->maybe_hot_p ()
-+ if ((edge->count.ipa ().initialized_p () && edge->maybe_hot_p ()
- && (edge->count.ipa ().apply_scale (2, 1)
- > (edge->caller->inlined_to
- ? edge->caller->inlined_to->count.ipa ()
- : edge->caller->count.ipa ())))
-+ || (lookup_attribute ("hot", DECL_ATTRIBUTES (edge->caller->decl))
-+ != NULL
-+ && lookup_attribute ("hot", DECL_ATTRIBUTES (edge->callee->decl))
-+ != NULL))
- hints |= INLINE_HINT_known_hot;
-
- gcc_checking_assert (size >= 0);
-diff --git a/gcc/testsuite/gcc.dg/ipa/inlinehint-6.c b/gcc/testsuite/gcc.dg/ipa/inlinehint-6.c
-new file mode 100644
-index 00000000000..1f3be641c6d
---- /dev/null
-+++ b/gcc/testsuite/gcc.dg/ipa/inlinehint-6.c
-@@ -0,0 +1,47 @@
-+/* { dg-options "-O3 -c -fdump-ipa-inline-details -fno-early-inlining -fno-ipa-cp" } */
-+/* { dg-add-options bind_pic_locally } */
-+
-+#define size_t long long int
-+
-+struct A
-+{
-+ size_t f1, f2, f3, f4;
-+};
-+struct C
-+{
-+ struct A a;
-+ size_t b;
-+};
-+struct C x;
-+
-+__attribute__((hot)) struct C callee (struct A *a, struct C *c)
-+{
-+ c->a=(*a);
-+
-+ if((c->b + 7) & 17)
-+ {
-+ c->a.f1 = c->a.f2 + c->a.f1;
-+ c->a.f2 = c->a.f3 - c->a.f2;
-+ c->a.f3 = c->a.f2 + c->a.f3;
-+ c->a.f4 = c->a.f2 - c->a.f4;
-+ c->b = c->a.f2;
-+
-+ }
-+ return *c;
-+}
-+
-+__attribute__((hot)) struct C caller (size_t d, size_t e, size_t f, size_t g, struct C *c)
-+{
-+ struct A a;
-+ a.f1 = 1 + d;
-+ a.f2 = e;
-+ a.f3 = 12 + f;
-+ a.f4 = 68 + g;
-+ if (c->b > 0)
-+ return callee (&a, c);
-+ else
-+ return *c;
-+}
-+
-+/* { dg-final { scan-ipa-dump "known_hot" "inline" } } */
-+
---
-2.18.2
-
diff --git a/0026-Enable-small-loop-unrolling-for-O2.patch b/0026-Enable-small-loop-unrolling-for-O2.patch
deleted file mode 100644
index b16171bcc35c283372b6f5360c44d5c152defa36..0000000000000000000000000000000000000000
--- a/0026-Enable-small-loop-unrolling-for-O2.patch
+++ /dev/null
@@ -1,481 +0,0 @@
-From 6c977a4e458eab0dd7684b143baf72240b96fda8 Mon Sep 17 00:00:00 2001
-From: Hongyu Wang
-Date: Thu, 8 Sep 2022 16:52:02 +0800
-Subject: [PATCH 4/5] Enable small loop unrolling for O2
-
-Modern processors has multiple way instruction decoders
-For x86, icelake/zen3 has 5 uops, so for small loop with <= 4
-instructions (usually has 3 uops with a cmp/jmp pair that can be
-macro-fused), the decoder would have 2 uops bubble for each iteration
-and the pipeline could not be fully utilized.
-
-Therefore, this patch enables loop unrolling for small size loop at O2
-to fullfill the decoder as much as possible. It turns on rtl loop
-unrolling when targetm.loop_unroll_adjust exists and O2 plus speed only.
-In x86 backend the default behavior is to unroll small loops with less
-than 4 insns by 1 time.
-
-This improves 548.exchange2 by 9% on icelake and 7.4% on zen3 with
-0.9% codesize increment. For other benchmarks the variants are minor
-and overall codesize increased by 0.2%.
-
-The kernel image size increased by 0.06%, and no impact on eembc.
-
-gcc/ChangeLog:
-
- * common/config/i386/i386-common.cc (ix86_optimization_table):
- Enable small loop unroll at O2 by default.
- * config/i386/i386.cc (ix86_loop_unroll_adjust): Adjust unroll
- factor if -munroll-only-small-loops enabled and -funroll-loops/
- -funroll-all-loops are disabled.
- * config/i386/i386.h (struct processor_costs): Add 2 field
- small_unroll_ninsns and small_unroll_factor.
- * config/i386/i386.opt: Add -munroll-only-small-loops.
- * doc/invoke.texi: Document -munroll-only-small-loops.
- * loop-init.cc (pass_rtl_unroll_loops::gate): Enable rtl
- loop unrolling for -O2-speed and above if target hook
- loop_unroll_adjust exists.
- (pass_rtl_unroll_loops::execute): Set UAP_UNROLL flag
- when target hook loop_unroll_adjust exists.
- * config/i386/x86-tune-costs.h: Update all processor costs
- with small_unroll_ninsns = 4 and small_unroll_factor = 2.
-
-gcc/testsuite/ChangeLog:
-
- * gcc.dg/guality/loop-1.c: Add additional option
- -mno-unroll-only-small-loops.
- * gcc.target/i386/pr86270.c: Add -mno-unroll-only-small-loops.
- * gcc.target/i386/pr93002.c: Likewise.
----
- gcc/common/config/i386/i386-common.cc | 1 +
- gcc/config/i386/i386.cc | 18 ++++++++
- gcc/config/i386/i386.h | 5 +++
- gcc/config/i386/i386.opt | 4 ++
- gcc/config/i386/x86-tune-costs.h | 56 +++++++++++++++++++++++++
- gcc/doc/invoke.texi | 11 ++++-
- gcc/loop-init.cc | 10 +++--
- gcc/testsuite/gcc.dg/guality/loop-1.c | 2 +
- gcc/testsuite/gcc.target/i386/pr86270.c | 2 +-
- gcc/testsuite/gcc.target/i386/pr93002.c | 2 +-
- 10 files changed, 105 insertions(+), 6 deletions(-)
-
-diff --git a/gcc/common/config/i386/i386-common.cc b/gcc/common/config/i386/i386-common.cc
-index 07fdd045f30..e1c1fb07d8a 100644
---- a/gcc/common/config/i386/i386-common.cc
-+++ b/gcc/common/config/i386/i386-common.cc
-@@ -1687,6 +1687,7 @@ static const struct default_options ix86_option_optimization_table[] =
- /* The STC algorithm produces the smallest code at -Os, for x86. */
- { OPT_LEVELS_2_PLUS, OPT_freorder_blocks_algorithm_, NULL,
- REORDER_BLOCKS_ALGORITHM_STC },
-+ { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_munroll_only_small_loops, NULL, 1 },
- /* Turn off -fschedule-insns by default. It tends to make the
- problem with not enough registers even worse. */
- { OPT_LEVELS_ALL, OPT_fschedule_insns, NULL, 0 },
-diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
-index b16df5b183e..39b2468799c 100644
---- a/gcc/config/i386/i386.cc
-+++ b/gcc/config/i386/i386.cc
-@@ -23561,6 +23561,24 @@ ix86_loop_unroll_adjust (unsigned nunroll, class loop *loop)
- unsigned i;
- unsigned mem_count = 0;
-
-+ /* Unroll small size loop when unroll factor is not explicitly
-+ specified. */
-+ if (!(flag_unroll_loops
-+ || flag_unroll_all_loops
-+ || loop->unroll))
-+ {
-+ nunroll = 1;
-+
-+ /* Any explicit -f{no-}unroll-{all-}loops turns off
-+ -munroll-only-small-loops. */
-+ if (ix86_unroll_only_small_loops
-+ && !OPTION_SET_P (flag_unroll_loops)
-+ && loop->ninsns <= ix86_cost->small_unroll_ninsns)
-+ nunroll = ix86_cost->small_unroll_factor;
-+
-+ return nunroll;
-+ }
-+
- if (!TARGET_ADJUST_UNROLL)
- return nunroll;
-
-diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
-index a61c32b8957..421801111a7 100644
---- a/gcc/config/i386/i386.h
-+++ b/gcc/config/i386/i386.h
-@@ -219,6 +219,11 @@ struct processor_costs {
- const char *const align_jump; /* Jump alignment. */
- const char *const align_label; /* Label alignment. */
- const char *const align_func; /* Function alignment. */
-+
-+ const unsigned small_unroll_ninsns; /* Insn count limit for small loop
-+ to be unrolled. */
-+ const unsigned small_unroll_factor; /* Unroll factor for small loop to
-+ be unrolled. */
- };
-
- extern const struct processor_costs *ix86_cost;
-diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt
-index a6b0e28f238..3d369647bf7 100644
---- a/gcc/config/i386/i386.opt
-+++ b/gcc/config/i386/i386.opt
-@@ -1214,3 +1214,7 @@ Do not use GOT to access external symbols.
- -param=x86-stlf-window-ninsns=
- Target Joined UInteger Var(x86_stlf_window_ninsns) Init(64) Param
- Instructions number above which STFL stall penalty can be compensated.
-+
-+munroll-only-small-loops
-+Target Var(ix86_unroll_only_small_loops) Init(0) Save
-+Enable conservative small loop unrolling.
-diff --git a/gcc/config/i386/x86-tune-costs.h b/gcc/config/i386/x86-tune-costs.h
-index 017ffa69958..b4303e4e971 100644
---- a/gcc/config/i386/x86-tune-costs.h
-+++ b/gcc/config/i386/x86-tune-costs.h
-@@ -135,6 +135,8 @@ struct processor_costs ix86_size_cost = {/* costs for tuning for size */
- NULL, /* Jump alignment. */
- NULL, /* Label alignment. */
- NULL, /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- /* Processor costs (relative to an add) */
-@@ -244,6 +246,8 @@ struct processor_costs i386_cost = { /* 386 specific costs */
- "4", /* Jump alignment. */
- NULL, /* Label alignment. */
- "4", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- static stringop_algs i486_memcpy[2] = {
-@@ -354,6 +358,8 @@ struct processor_costs i486_cost = { /* 486 specific costs */
- "16", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- static stringop_algs pentium_memcpy[2] = {
-@@ -462,6 +468,8 @@ struct processor_costs pentium_cost = {
- "16:8:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- static const
-@@ -563,6 +571,8 @@ struct processor_costs lakemont_cost = {
- "16:8:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- /* PentiumPro has optimized rep instructions for blocks aligned by 8 bytes
-@@ -679,6 +689,8 @@ struct processor_costs pentiumpro_cost = {
- "16:11:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- static stringop_algs geode_memcpy[2] = {
-@@ -786,6 +798,8 @@ struct processor_costs geode_cost = {
- NULL, /* Jump alignment. */
- NULL, /* Label alignment. */
- NULL, /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- static stringop_algs k6_memcpy[2] = {
-@@ -896,6 +910,8 @@ struct processor_costs k6_cost = {
- "32:8:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "32", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- /* For some reason, Athlon deals better with REP prefix (relative to loops)
-@@ -1007,6 +1023,8 @@ struct processor_costs athlon_cost = {
- "16:8:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- /* K8 has optimized REP instruction for medium sized blocks, but for very
-@@ -1127,6 +1145,8 @@ struct processor_costs k8_cost = {
- "16:8:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- /* AMDFAM10 has optimized REP instruction for medium sized blocks, but for
-@@ -1255,6 +1275,8 @@ struct processor_costs amdfam10_cost = {
- "32:8:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "32", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- /* BDVER has optimized REP instruction for medium sized blocks, but for
-@@ -1376,6 +1398,8 @@ const struct processor_costs bdver_cost = {
- "16:8:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "11", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
-
-@@ -1529,6 +1553,8 @@ struct processor_costs znver1_cost = {
- "16", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- /* ZNVER2 has optimized REP instruction for medium sized blocks, but for
-@@ -1686,6 +1712,8 @@ struct processor_costs znver2_cost = {
- "16", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- struct processor_costs znver3_cost = {
-@@ -1818,6 +1846,8 @@ struct processor_costs znver3_cost = {
- "16", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- /* skylake_cost should produce code tuned for Skylake familly of CPUs. */
-@@ -1942,6 +1972,8 @@ struct processor_costs skylake_cost = {
- "16:11:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- /* icelake_cost should produce code tuned for Icelake family of CPUs.
-@@ -2068,6 +2100,8 @@ struct processor_costs icelake_cost = {
- "16:11:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- /* alderlake_cost should produce code tuned for alderlake family of CPUs. */
-@@ -2188,6 +2222,8 @@ struct processor_costs alderlake_cost = {
- "16:11:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- /* BTVER1 has optimized REP instruction for medium sized blocks, but for
-@@ -2301,6 +2337,8 @@ const struct processor_costs btver1_cost = {
- "16:8:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "11", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- static stringop_algs btver2_memcpy[2] = {
-@@ -2411,6 +2449,8 @@ const struct processor_costs btver2_cost = {
- "16:8:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "11", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- static stringop_algs pentium4_memcpy[2] = {
-@@ -2520,6 +2560,8 @@ struct processor_costs pentium4_cost = {
- NULL, /* Jump alignment. */
- NULL, /* Label alignment. */
- NULL, /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- static stringop_algs nocona_memcpy[2] = {
-@@ -2632,6 +2674,8 @@ struct processor_costs nocona_cost = {
- NULL, /* Jump alignment. */
- NULL, /* Label alignment. */
- NULL, /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- static stringop_algs atom_memcpy[2] = {
-@@ -2742,6 +2786,8 @@ struct processor_costs atom_cost = {
- "16:8:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- static stringop_algs slm_memcpy[2] = {
-@@ -2852,6 +2898,8 @@ struct processor_costs slm_cost = {
- "16:8:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- static stringop_algs tremont_memcpy[2] = {
-@@ -2976,6 +3024,8 @@ struct processor_costs tremont_cost = {
- "16:11:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- static stringop_algs intel_memcpy[2] = {
-@@ -3086,6 +3136,8 @@ struct processor_costs intel_cost = {
- "16:8:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- /* Generic should produce code tuned for Core-i7 (and newer chips)
-@@ -3205,6 +3257,8 @@ struct processor_costs generic_cost = {
- "16:11:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
- /* core_cost should produce code tuned for Core familly of CPUs. */
-@@ -3331,5 +3385,7 @@ struct processor_costs core_cost = {
- "16:11:8", /* Jump alignment. */
- "0:0:8", /* Label alignment. */
- "16", /* Func alignment. */
-+ 4, /* Small unroll limit. */
-+ 2, /* Small unroll factor. */
- };
-
-diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
-index 9ac7f89ebb1..1961cafa2bb 100644
---- a/gcc/doc/invoke.texi
-+++ b/gcc/doc/invoke.texi
-@@ -1448,7 +1448,8 @@ See RS/6000 and PowerPC Options.
- -mgeneral-regs-only -mcall-ms2sysv-xlogues -mrelax-cmpxchg-loop @gol
- -mindirect-branch=@var{choice} -mfunction-return=@var{choice} @gol
- -mindirect-branch-register -mharden-sls=@var{choice} @gol
---mindirect-branch-cs-prefix -mneeded -mno-direct-extern-access}
-+-mindirect-branch-cs-prefix -mneeded -mno-direct-extern-access @gol
-+-munroll-only-small-loops}
-
- @emph{x86 Windows Options}
- @gccoptlist{-mconsole -mcygwin -mno-cygwin -mdll @gol
-@@ -33157,6 +33158,14 @@ treat access to protected symbols as local symbols. The default is
- @option{-mno-direct-extern-access} and executable compiled with
- @option{-mdirect-extern-access} may not be binary compatible if
- protected symbols are used in shared libraries and executable.
-+
-+@item -munroll-only-small-loops
-+@opindex munroll-only-small-loops
-+@opindex mno-unroll-only-small-loops
-+Controls conservative small loop unrolling. It is default enabled by
-+O2, and unrolls loop with less than 4 insns by 1 time. Explicit
-+-f[no-]unroll-[all-]loops would disable this flag to avoid any
-+unintended unrolling behavior that user does not want.
- @end table
-
- @node x86 Windows Options
-diff --git a/gcc/loop-init.cc b/gcc/loop-init.cc
-index 1e4f6cfd7fb..84336865ef7 100644
---- a/gcc/loop-init.cc
-+++ b/gcc/loop-init.cc
-@@ -565,9 +565,12 @@ public:
- {}
-
- /* opt_pass methods: */
-- virtual bool gate (function *)
-+ virtual bool gate (function * fun)
- {
-- return (flag_unroll_loops || flag_unroll_all_loops || cfun->has_unroll);
-+ return (flag_unroll_loops || flag_unroll_all_loops || cfun->has_unroll
-+ || (targetm.loop_unroll_adjust
-+ && optimize >= 2
-+ && optimize_function_for_speed_p (fun)));
- }
-
- virtual unsigned int execute (function *);
-@@ -583,7 +586,8 @@ pass_rtl_unroll_loops::execute (function *fun)
- if (dump_file)
- df_dump (dump_file);
-
-- if (flag_unroll_loops)
-+ if (flag_unroll_loops
-+ || targetm.loop_unroll_adjust)
- flags |= UAP_UNROLL;
- if (flag_unroll_all_loops)
- flags |= UAP_UNROLL_ALL;
-diff --git a/gcc/testsuite/gcc.dg/guality/loop-1.c b/gcc/testsuite/gcc.dg/guality/loop-1.c
-index 1b1f6d32271..a32ea445a3f 100644
---- a/gcc/testsuite/gcc.dg/guality/loop-1.c
-+++ b/gcc/testsuite/gcc.dg/guality/loop-1.c
-@@ -1,5 +1,7 @@
- /* { dg-do run } */
- /* { dg-options "-fno-tree-scev-cprop -fno-tree-vectorize -g" } */
-+/* { dg-additional-options "-mno-unroll-only-small-loops" { target ia32 } } */
-+
-
- #include "../nop.h"
-
-diff --git a/gcc/testsuite/gcc.target/i386/pr86270.c b/gcc/testsuite/gcc.target/i386/pr86270.c
-index 81841ef5bd7..cbc9fbb0450 100644
---- a/gcc/testsuite/gcc.target/i386/pr86270.c
-+++ b/gcc/testsuite/gcc.target/i386/pr86270.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O2" } */
-+/* { dg-options "-O2 -mno-unroll-only-small-loops" } */
-
- int *a;
- long len;
-diff --git a/gcc/testsuite/gcc.target/i386/pr93002.c b/gcc/testsuite/gcc.target/i386/pr93002.c
-index 0248fcc00a5..f75a847f75d 100644
---- a/gcc/testsuite/gcc.target/i386/pr93002.c
-+++ b/gcc/testsuite/gcc.target/i386/pr93002.c
-@@ -1,6 +1,6 @@
- /* PR target/93002 */
- /* { dg-do compile } */
--/* { dg-options "-O2" } */
-+/* { dg-options "-O2 -mno-unroll-only-small-loops" } */
- /* { dg-final { scan-assembler-not "cmp\[^\n\r]*-1" } } */
-
- volatile int sink;
---
-2.18.2
-
diff --git a/0027-i386-Only-enable-small-loop-unrolling-in-backend-PR-.patch b/0027-i386-Only-enable-small-loop-unrolling-in-backend-PR-.patch
deleted file mode 100644
index de3995fc2b996ceba0d834cfb4f8361f99b0bd63..0000000000000000000000000000000000000000
--- a/0027-i386-Only-enable-small-loop-unrolling-in-backend-PR-.patch
+++ /dev/null
@@ -1,231 +0,0 @@
-From 5c07825ca0c34dd946a8cfc0325ddb452d7f65c5 Mon Sep 17 00:00:00 2001
-From: Hongyu Wang
-Date: Sat, 19 Nov 2022 09:38:00 +0800
-Subject: [PATCH 5/5] i386: Only enable small loop unrolling in backend [PR
- 107692]
-
-Followed by the discussion in pr107692, -munroll-only-small-loops
-Does not turns on/off -funroll-loops, and current check in
-pass_rtl_unroll_loops::gate would cause -fno-unroll-loops do not take
-effect. Revert the change about targetm.loop_unroll_adjust and apply
-the backend option change to strictly follow the rule that
--funroll-loops takes full control of loop unrolling, and
-munroll-only-small-loops just change its behavior to unroll small size
-loops.
-
-gcc/ChangeLog:
-
- PR target/107692
- * common/config/i386/i386-common.cc (ix86_optimization_table):
- Enable loop unroll O2, disable -fweb and -frename-registers
- by default.
- * config/i386/i386-options.cc
- (ix86_override_options_after_change):
- Disable small loop unroll when funroll-loops enabled, reset
- cunroll_grow_size when it is not explicitly enabled.
- (ix86_option_override_internal): Call
- ix86_override_options_after_change instead of calling
- ix86_recompute_optlev_based_flags and ix86_default_align
- separately.
- * config/i386/i386.cc (ix86_loop_unroll_adjust): Adjust unroll
- factor if -munroll-only-small-loops enabled.
- * loop-init.cc (pass_rtl_unroll_loops::gate): Do not enable
- loop unrolling for -O2-speed.
- (pass_rtl_unroll_loops::execute): Rmove
- targetm.loop_unroll_adjust check.
-
-gcc/testsuite/ChangeLog:
-
- PR target/107692
- * gcc.dg/guality/loop-1.c: Remove additional option for ia32.
- * gcc.target/i386/pr86270.c: Add -fno-unroll-loops.
- * gcc.target/i386/pr93002.c: Likewise.
----
- gcc/common/config/i386/i386-common.cc | 8 ++++++
- gcc/config/i386/i386-options.cc | 34 ++++++++++++++++++++++---
- gcc/config/i386/i386.cc | 18 ++++---------
- gcc/loop-init.cc | 11 +++-----
- gcc/testsuite/gcc.dg/guality/loop-1.c | 2 --
- gcc/testsuite/gcc.target/i386/pr86270.c | 2 +-
- gcc/testsuite/gcc.target/i386/pr93002.c | 2 +-
- 7 files changed, 49 insertions(+), 28 deletions(-)
-
-diff --git a/gcc/common/config/i386/i386-common.cc b/gcc/common/config/i386/i386-common.cc
-index e1c1fb07d8a..5e777849f91 100644
---- a/gcc/common/config/i386/i386-common.cc
-+++ b/gcc/common/config/i386/i386-common.cc
-@@ -1687,7 +1687,15 @@ static const struct default_options ix86_option_optimization_table[] =
- /* The STC algorithm produces the smallest code at -Os, for x86. */
- { OPT_LEVELS_2_PLUS, OPT_freorder_blocks_algorithm_, NULL,
- REORDER_BLOCKS_ALGORITHM_STC },
-+
-+ /* Turn on -funroll-loops with -munroll-only-small-loops to enable small
-+ loop unrolling at -O2. */
-+ { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_funroll_loops, NULL, 1 },
- { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_munroll_only_small_loops, NULL, 1 },
-+ /* Turns off -frename-registers and -fweb which are enabled by
-+ funroll-loops. */
-+ { OPT_LEVELS_ALL, OPT_frename_registers, NULL, 0 },
-+ { OPT_LEVELS_ALL, OPT_fweb, NULL, 0 },
- /* Turn off -fschedule-insns by default. It tends to make the
- problem with not enough registers even worse. */
- { OPT_LEVELS_ALL, OPT_fschedule_insns, NULL, 0 },
-diff --git a/gcc/config/i386/i386-options.cc b/gcc/config/i386/i386-options.cc
-index 32cc58a764b..b853ff55825 100644
---- a/gcc/config/i386/i386-options.cc
-+++ b/gcc/config/i386/i386-options.cc
-@@ -1816,8 +1816,37 @@ ix86_recompute_optlev_based_flags (struct gcc_options *opts,
- void
- ix86_override_options_after_change (void)
- {
-+ /* Default align_* from the processor table. */
- ix86_default_align (&global_options);
-+
- ix86_recompute_optlev_based_flags (&global_options, &global_options_set);
-+
-+ /* Disable unrolling small loops when there's explicit
-+ -f{,no}unroll-loop. */
-+ if ((OPTION_SET_P (flag_unroll_loops))
-+ || (OPTION_SET_P (flag_unroll_all_loops)
-+ && flag_unroll_all_loops))
-+ {
-+ if (!OPTION_SET_P (ix86_unroll_only_small_loops))
-+ ix86_unroll_only_small_loops = 0;
-+ /* Re-enable -frename-registers and -fweb if funroll-loops
-+ enabled. */
-+ if (!OPTION_SET_P (flag_web))
-+ flag_web = flag_unroll_loops;
-+ if (!OPTION_SET_P (flag_rename_registers))
-+ flag_rename_registers = flag_unroll_loops;
-+ /* -fcunroll-grow-size default follws -f[no]-unroll-loops. */
-+ if (!OPTION_SET_P (flag_cunroll_grow_size))
-+ flag_cunroll_grow_size = flag_unroll_loops
-+ || flag_peel_loops
-+ || optimize >= 3;
-+ }
-+ else
-+ {
-+ if (!OPTION_SET_P (flag_cunroll_grow_size))
-+ flag_cunroll_grow_size = flag_peel_loops || optimize >= 3;
-+ }
-+
- }
-
- /* Clear stack slot assignments remembered from previous functions.
-@@ -2329,7 +2358,7 @@ ix86_option_override_internal (bool main_args_p,
-
- set_ix86_tune_features (opts, ix86_tune, opts->x_ix86_dump_tunes);
-
-- ix86_recompute_optlev_based_flags (opts, opts_set);
-+ ix86_override_options_after_change ();
-
- ix86_tune_cost = processor_cost_table[ix86_tune];
- /* TODO: ix86_cost should be chosen at instruction or function granuality
-@@ -2360,9 +2389,6 @@ ix86_option_override_internal (bool main_args_p,
- || TARGET_64BIT_P (opts->x_ix86_isa_flags))
- opts->x_ix86_regparm = REGPARM_MAX;
-
-- /* Default align_* from the processor table. */
-- ix86_default_align (opts);
--
- /* Provide default for -mbranch-cost= value. */
- SET_OPTION_IF_UNSET (opts, opts_set, ix86_branch_cost,
- ix86_tune_cost->branch_cost);
-diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
-index 39b2468799c..000415c0e2e 100644
---- a/gcc/config/i386/i386.cc
-+++ b/gcc/config/i386/i386.cc
-@@ -23563,20 +23563,12 @@ ix86_loop_unroll_adjust (unsigned nunroll, class loop *loop)
-
- /* Unroll small size loop when unroll factor is not explicitly
- specified. */
-- if (!(flag_unroll_loops
-- || flag_unroll_all_loops
-- || loop->unroll))
-+ if (ix86_unroll_only_small_loops && !loop->unroll)
- {
-- nunroll = 1;
--
-- /* Any explicit -f{no-}unroll-{all-}loops turns off
-- -munroll-only-small-loops. */
-- if (ix86_unroll_only_small_loops
-- && !OPTION_SET_P (flag_unroll_loops)
-- && loop->ninsns <= ix86_cost->small_unroll_ninsns)
-- nunroll = ix86_cost->small_unroll_factor;
--
-- return nunroll;
-+ if (loop->ninsns <= ix86_cost->small_unroll_ninsns)
-+ return MIN (nunroll, ix86_cost->small_unroll_factor);
-+ else
-+ return 1;
- }
-
- if (!TARGET_ADJUST_UNROLL)
-diff --git a/gcc/loop-init.cc b/gcc/loop-init.cc
-index 84336865ef7..ed1b2f6ebab 100644
---- a/gcc/loop-init.cc
-+++ b/gcc/loop-init.cc
-@@ -565,12 +565,10 @@ public:
- {}
-
- /* opt_pass methods: */
-- virtual bool gate (function * fun)
-+ virtual bool gate (function *)
- {
-- return (flag_unroll_loops || flag_unroll_all_loops || cfun->has_unroll
-- || (targetm.loop_unroll_adjust
-- && optimize >= 2
-- && optimize_function_for_speed_p (fun)));
-+ return (flag_unroll_loops || flag_unroll_all_loops
-+ || cfun->has_unroll);
- }
-
- virtual unsigned int execute (function *);
-@@ -586,8 +584,7 @@ pass_rtl_unroll_loops::execute (function *fun)
- if (dump_file)
- df_dump (dump_file);
-
-- if (flag_unroll_loops
-- || targetm.loop_unroll_adjust)
-+ if (flag_unroll_loops)
- flags |= UAP_UNROLL;
- if (flag_unroll_all_loops)
- flags |= UAP_UNROLL_ALL;
-diff --git a/gcc/testsuite/gcc.dg/guality/loop-1.c b/gcc/testsuite/gcc.dg/guality/loop-1.c
-index a32ea445a3f..1b1f6d32271 100644
---- a/gcc/testsuite/gcc.dg/guality/loop-1.c
-+++ b/gcc/testsuite/gcc.dg/guality/loop-1.c
-@@ -1,7 +1,5 @@
- /* { dg-do run } */
- /* { dg-options "-fno-tree-scev-cprop -fno-tree-vectorize -g" } */
--/* { dg-additional-options "-mno-unroll-only-small-loops" { target ia32 } } */
--
-
- #include "../nop.h"
-
-diff --git a/gcc/testsuite/gcc.target/i386/pr86270.c b/gcc/testsuite/gcc.target/i386/pr86270.c
-index cbc9fbb0450..98b012caf23 100644
---- a/gcc/testsuite/gcc.target/i386/pr86270.c
-+++ b/gcc/testsuite/gcc.target/i386/pr86270.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O2 -mno-unroll-only-small-loops" } */
-+/* { dg-options "-O2 -fno-unroll-loops" } */
-
- int *a;
- long len;
-diff --git a/gcc/testsuite/gcc.target/i386/pr93002.c b/gcc/testsuite/gcc.target/i386/pr93002.c
-index f75a847f75d..7e2d869e17b 100644
---- a/gcc/testsuite/gcc.target/i386/pr93002.c
-+++ b/gcc/testsuite/gcc.target/i386/pr93002.c
-@@ -1,6 +1,6 @@
- /* PR target/93002 */
- /* { dg-do compile } */
--/* { dg-options "-O2 -mno-unroll-only-small-loops" } */
-+/* { dg-options "-O2 -fno-unroll-loops" } */
- /* { dg-final { scan-assembler-not "cmp\[^\n\r]*-1" } } */
-
- volatile int sink;
---
-2.18.2
-
diff --git a/dist b/dist
index 535c6900412d365bb0ff6de8d1f27110833b3ae3..9c0e36ec42a2d9bfefacb21ac6354c9ddd910533 100644
--- a/dist
+++ b/dist
@@ -1 +1 @@
-an8_7
+an8
diff --git a/download b/download
index 7089174f2576911bea1730b613525a1e7237fd99..0cbe030bb3c35ebe60f6e20e2d34c9f34391ed50 100644
--- a/download
+++ b/download
@@ -1,8 +1,8 @@
5ff66c50ca9288d9a3d695a031f6950c doxygen-1.8.0.src.tar.gz
-4b46c6ef416360a726fe71470d203985 gcc-12.1.1-20220628.tar.xz
+c5de1fe5a7d1fdad31df408ad392fc42 gcc-12.2.1-20221121.tar.xz
86ee6e54ebfc4a90b643a65e402c4048 gmp-6.1.0.tar.bz2
-11436d6b205e516635b666090b94ab32 isl-0.18.tar.bz2
+dd2f7b78e118c25bd96134a52aae7f4d isl-0.24.tar.bz2
d6a1d5f8ddea3abd2cc3e98f58352d26 mpc-1.0.3.tar.gz
b8a2f6b0e68bef46e53da2ac439e1cf4 mpfr-3.1.4.tar.bz2
-61b239238536c66522b4275121ab1f6f newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz
-82986188069b75ed65286459df7c8278 nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz
+65bd1bec40f0f8025fc991e09aa20e89 newlib-cygwin-a8526cb52bedabd4d6ba4b227a5185627f871aa1.tar.xz
+ecd7cea8279c08ad44942dbd6426cd58 nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz
diff --git a/gcc.spec b/gcc.spec
index 469cd244e3d5b5cc88b1e666877932d8778513c3..b98728fa796398407f13e804a00d9d8221e58944 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,19 +1,18 @@
-%define anolis_release .0.1
%global __python /usr/bin/python3
%{?scl:%global __strip %%{_scl_root}/usr/bin/strip}
%{?scl:%global __objdump %%{_scl_root}/usr/bin/objdump}
%{?scl:%scl_package gcc}
-%global DATE 20220628
-%global gitrev 874cb9452c56f1c3b3a7b5bfed93a262504b9856
-%global gcc_version 12.1.1
+%global DATE 20221121
+%global gitrev b3f5a0d53b84ed27cf00cfa2b9c3e2c78935c07d
+%global gcc_version 12.2.1
%global gcc_major 12
# 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 3
-%global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e
-%global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0
+%global gcc_release 7
+%global nvptx_tools_gitrev 472b6e78b3ba918d727698f79911360b7c808247
+%global newlib_cygwin_gitrev a8526cb52bedabd4d6ba4b227a5185627f871aa1
%global mpc_version 1.0.3
-%global isl_version 0.18
+%global isl_version 0.24
%global mpfr_version 3.1.4
%global gmp_version 6.1.0
%global doxygen_version 1.8.0
@@ -52,7 +51,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
@@ -140,7 +139,7 @@
%ifarch x86_64
%global multilib_32_arch i686
%endif
-%if 0%{?fedora} >= 36 || 0%{?rhel} >= 10
+%if 0%{?fedora} >= 36 || 0%{?rhel} >= 8
%global build_annobin_plugin 1
%else
%global build_annobin_plugin 0
@@ -148,7 +147,7 @@
Summary: GCC version 12
Name: %{?scl_prefix}gcc
Version: %{gcc_version}
-Release: %{gcc_release}.4%{anolis_release}%{?dist}
+Release: %{gcc_release}.4%{?dist}
# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
# GCC Runtime Exception.
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
@@ -349,12 +348,9 @@ Patch8: gcc12-no-add-needed.patch
Patch9: gcc12-Wno-format-security.patch
Patch10: gcc12-rh1574936.patch
Patch11: gcc12-d-shared-libphobos.patch
-Patch12: gcc12-pr105551.patch
-Patch13: gcc12-libtsan-s390x.patch
-# This has been backported to GCC 12, so eventually we can drop it.
-Patch14: gcc12-pr105991.patch
-# For DTS 12.0.z.
-Patch15: gcc12-detect-sapphirerapids.patch
+Patch12: gcc12-pr107468.patch
+Patch15: gcc12-static-libquadmath.patch
+Patch16: gcc12-FMA-chains.patch
Patch100: gcc12-fortran-fdec-duplicates.patch
Patch101: gcc12-fortran-flogical-as-integer.patch
@@ -368,6 +364,7 @@ Patch1002: gcc12-libgfortran-compat.patch
Patch2001: doxygen-1.7.1-config.patch
Patch2002: doxygen-1.7.5-timestamp.patch
Patch2003: doxygen-1.8.0-rh856725.patch
+Patch2004: isl-rh2155127.patch
Patch3000: 0001-basic_string-reserve-n-semantics-are-not-available-i.patch
Patch3001: 0004-operator-istream-char-N-eofbit-fixes-are-not-availab.patch
@@ -389,11 +386,7 @@ Patch3016: 0019-xfails.patch
Patch3017: 0020-more-fixes.patch
Patch3018: 0021-libstdc++-disable-tests.patch
Patch3019: 0022-libstdc++-revert-behavior.patch
-Patch3020: 0023-i386-Add-syscall-to-enable-AMX-for-latest-kernels.patch
-Patch3022: 0025-Add-attribute-hot-judgement-for-INLINE_HINT_known_ho.patch
-Patch3023: 0026-Enable-small-loop-unrolling-for-O2.patch
-Patch3024: 0027-i386-Only-enable-small-loop-unrolling-in-backend-PR-.patch
-Patch3025: 0028-i386-Avoid-fma_chain-for-march-alderlake-and-sapphir.patch
+Patch3020: gcc12-testsuite-typo.patch
%if 0%{?rhel} == 9
%global nonsharedver 110
@@ -700,17 +693,17 @@ NVidia PTX. OpenMP and OpenACC programs linked with -fopenmp will
by default add PTX code into the binaries, which can be offloaded
to NVidia PTX capable devices if available.
-%package plugin-annobin
-Summary: The annobin plugin for gcc, built by the installed version of gcc
-Requires: gcc = %{version}-%{release}
%if %{build_annobin_plugin}
-BuildRequires: annobin >= 10.62, annobin-plugin-gcc, rpm-devel, binutils-devel, xz
-%endif
+%package -n %{?scl_prefix}gcc-plugin-annobin
+Summary: The annobin plugin for gcc, built by the installed version of gcc
+Requires: %{?scl_prefix}gcc = %{version}-%{release}
+BuildRequires: rpm-devel, binutils-devel, xz
-%description plugin-annobin
+%description -n %{?scl_prefix}gcc-plugin-annobin
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.
+%endif
%prep
%if 0%{?rhel} >= 7
@@ -735,10 +728,9 @@ so that there cannot be any synchronization problems.
%patch10 -p0 -b .rh1574936~
%endif
%patch11 -p0 -b .d-shared-libphobos~
-%patch12 -p0 -b .pr105551~
-%patch13 -p0 -b .libtsan-s390x~
-%patch14 -p1 -b .pr105991~
-%patch15 -p1 -b .detect-spr~
+%patch12 -p0 -b .pr107468~
+%patch15 -p0 -b .static-libquadmath~
+%patch16 -p1 -b .fma~
%if 0%{?rhel} >= 6
%patch100 -p1 -b .fortran-fdec-duplicates~
@@ -776,6 +768,9 @@ cd doxygen-%{doxygen_version}
cd ..
%endif
%endif
+%if %{build_isl}
+%patch2004 -p0 -b .isl-rh2155127~
+%endif
# Apply DTS-specific testsuite patches.
%patch3000 -p1 -b .dts-test-0~
@@ -800,11 +795,7 @@ cd ..
%if 0%{?rhel} <= 7
%patch3019 -p1 -b .dts-test-19~
%endif
-%patch3020 -p1 -b .dts-test-20~
-%patch3022 -p1 -b .dts-test-22~
-%patch3023 -p1 -b .dts-test-23~
-%patch3024 -p1 -b .dts-test-24~
-%patch3025 -p1 -b .dts-test-25~
+%patch3020 -p1 -b .typo
find gcc/testsuite -name \*.pr96939~ | xargs rm -f
@@ -994,17 +985,24 @@ ISL_FLAG_PIC=-fPIC
ISL_FLAG_PIC=-fpic
%endif
cd isl-build
-sed -i 's|libisl|libgcc12privateisl|g' \
+sed -i 's|libisl\([^-]\)|libgcc12privateisl\1|g' \
../../isl-%{isl_version}/Makefile.{am,in}
+# Prevent regenerating aclocal.m4 and other configure files, because we don't
+# want to require aclocal-1.16 and similar. isl-rh2155127.patch modifies
+# 'configure' so the Makefile would attempt to regenerate various files.
+# See .
+touch ../../isl-%{isl_version}/{m4/*,aclocal.m4,Makefile.in,configure,isl_config.h.in}
../../isl-%{isl_version}/configure \
CC=/usr/bin/gcc CXX=/usr/bin/g++ \
CFLAGS="${CFLAGS:-%optflags} $ISL_FLAG_PIC" --prefix=`cd ..; pwd`/isl-install
+# Make sure we build with -g (#2155127).
+sed -i -e 's/CFLAGS =.*/& -g/' Makefile
make %{?_smp_mflags}
make install
cd ../isl-install/lib
-rm libgcc12privateisl.so{,.15}
-mv libgcc12privateisl.so.15.3.0 libisl.so.15
-ln -sf libisl.so.15 libisl.so
+rm libgcc12privateisl.so{,.23}
+mv libgcc12privateisl.so.23.1.0 libisl.so.23
+ln -sf libisl.so.23 libisl.so
cd ../..
%endif
@@ -1226,7 +1224,7 @@ make jit.sphinx.install-html jit_htmldir=`pwd`/../../rpm.doc/libgccjit-devel/htm
cd ..
%if %{build_isl}
-cp -a isl-install/lib/libisl.so.15 gcc/
+cp -a isl-install/lib/libisl.so.23 gcc/
%endif
# Make generated man pages even if Pod::Man is not new enough
@@ -1408,7 +1406,7 @@ ln -sf ../../../../bin/strip $FULLEPATH/strip
%endif
%if %{build_isl}
-cp -a isl-install/lib/libisl.so.15 $FULLPATH/
+cp -a isl-install/lib/libisl.so.23 $FULLPATH/
%endif
# fix some things
@@ -2110,7 +2108,19 @@ echo gcc-%{version}-%{release}.%{arch} > $FULLPATH/rpmver
ln -s ../../libexec/gcc/%{gcc_target_platform}/%{gcc_major}/liblto_plugin.so \
%{buildroot}%{_libdir}/bfd-plugins/
+%if %{build_annobin_plugin}
+mkdir -p $FULLPATH/plugin
+rm -f $FULLPATH/plugin/gts-gcc-annobin*
+cp -a %{_builddir}/gcc-%{version}-%{DATE}/annobin-plugin/annobin*/gcc-plugin/.libs/annobin.so.0.0.0 \
+ $FULLPATH/plugin/gts-gcc-annobin.so.0.0.0
+pushd $FULLPATH/plugin/
+ln -sf gts-gcc-annobin.so.0.0.0 gts-gcc-annobin.so.0
+ln -sf gts-gcc-annobin.so.0.0.0 gts-gcc-annobin.so
+popd
+%endif
+
%check
+
cd obj-%{gcc_target_platform}
%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}}
@@ -2476,7 +2486,6 @@ fi
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cc1
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/collect2
%if 0%{?scl:1}
-%if 0%{?rhel} <= 7
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ar
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/as
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ld
@@ -2487,7 +2496,6 @@ fi
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ranlib
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/strip
%endif
-%endif
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/crt*.o
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcc.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcov.a
@@ -2627,6 +2635,17 @@ fi
%endif
%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* gcc/COPYING* COPYING.RUNTIME
+%if %{build_annobin_plugin}
+%files -n %{?scl_prefix}gcc-plugin-annobin
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/gts-gcc-annobin.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/gts-gcc-annobin.so.0
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/gts-gcc-annobin.so.0.0.0
+%endif
+
%files c++
%{_prefix}/bin/%{gcc_target_platform}-g++%{!?scl:12}
%{_prefix}/bin/g++%{!?scl:12}
@@ -2971,15 +2990,34 @@ fi
%endif
%changelog
-* Tue Jan 31 2023 Haochen Jiang 12.1.1-3.4.0.1
-- i386: Add syscall to enable AMX for latest kernels
-- Add attribute hot judgement for INLINE_HINT_known_hot hint
-- Enable small loop unrolling for O2
-- i386: Only enable small loop unrolling in backend [PR 107692]
-- i386: Avoid fma_chain for -march=alderlake and sapphirerapids
-
-* Thu Dec 1 2022 Marek Polacek 12.1.1-3.4
-- fix Sapphire Rapids detection in host_detect_local_cpu (#2150131)
+* Fri Feb 10 2023 Marek Polacek 12.2.1-7.4
+- avoid fma_chain for -march=alderlake and sapphirerapids (#2168917)
+
+* Wed Jan 25 2023 Marek Polacek 12.2.1-7.3
+- provide libexec/ symlinks on all RHELs (#2162498)
+
+* Wed Jan 11 2023 Marek Polacek 12.2.1-7.2
+- build libisl.so with -g (#2155127)
+
+* Tue Dec 20 2022 Marek Polacek 12.2.1-6.1
+- apply an ISL patch (#2155127)
+
+* Wed Dec 14 2022 Nick Clifton 12.2.1-6
+- Fixed run-time requirement for annobin plugin. (#2151927)
+
+* Tue Dec 13 2022 Nick Clifton 12.2.1-5
+- Build the annobin plugin. Call it gts-gcc-annobin.so. (#2151926)
+
+* Wed Nov 23 2022 Marek Polacek 12.2.1-4
+- update from releases/gcc-12 branch (#2110582)
+- fix up std::from_chars behavior in rounding modes other than FE_TONEAREST
+ (PR libstdc++/107468)
+
+* Tue Oct 18 2022 Marek Polacek 12.1.1-3.4
+- fix pr86731-fwrapv-longlong.c (#2134379)
+
+* Fri Oct 7 2022 Marek Polacek 12.1.1-3.3
+- add -static-libquadmath (#2131081)
* Fri Jul 8 2022 Marek Polacek 12.1.1-3.2
- recognize PLUS and XOR forms of rldimi (PR target/105991, #2095789)
diff --git a/0028-i386-Avoid-fma_chain-for-march-alderlake-and-sapphir.patch b/gcc12-FMA-chains.patch
similarity index 53%
rename from 0028-i386-Avoid-fma_chain-for-march-alderlake-and-sapphir.patch
rename to gcc12-FMA-chains.patch
index ad6596535b02e6ed98f05765443cf731c297c031..336c9f24268ac01befaee689c08604e99fbbd229 100644
--- a/0028-i386-Avoid-fma_chain-for-march-alderlake-and-sapphir.patch
+++ b/gcc12-FMA-chains.patch
@@ -1,20 +1,17 @@
-From b7980cd8d8bcf41b3ca1b6f3ba147789d42a9b99 Mon Sep 17 00:00:00 2001
-From: Hongyu Wang
-Date: Tue, 6 Dec 2022 09:53:35 +0800
-Subject: [PATCH] i386: Avoid fma_chain for -march=alderlake and
- sapphirerapids.
+commit 8ac76d504ee1216ebffab08463a544d691d85112
+Author: Hongyu Wang
+Date: Tue Dec 6 09:53:35 2022 +0800
-For Alderlake there is similar issue like PR 81616, enable
-avoid_fma256_chain will also benefit on Intel latest platforms
-Alderlake and Sapphire Rapids.
-
-gcc/ChangeLog:
-
- * config/i386/x86-tune.def (X86_TUNE_AVOID_256FMA_CHAINS): Add
- m_SAPPHIRERAPIDS, m_ALDERLAKE.
----
- gcc/config/i386/x86-tune.def | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ i386: Avoid fma_chain for -march=alderlake and sapphirerapids.
+
+ For Alderlake there is similar issue like PR81616, enable
+ avoid_fma256_chain will also benefit on Intel latest platforms
+ Alderlake and Sapphire Rapids.
+
+ gcc/ChangeLog:
+
+ * config/i386/x86-tune.def (X86_TUNE_AVOID_256FMA_CHAINS): Add
+ m_SAPPHIRERAPIDS, m_ALDERLAKE.
diff --git a/gcc/config/i386/x86-tune.def b/gcc/config/i386/x86-tune.def
index d983e2f6213..1e1b206a71c 100644
@@ -30,6 +27,3 @@ index d983e2f6213..1e1b206a71c 100644
/* X86_TUNE_V2DF_REDUCTION_PREFER_PHADDPD: Prefer haddpd
for v2df vector reduction. */
---
-2.18.2
-
diff --git a/gcc12-detect-sapphirerapids.patch b/gcc12-detect-sapphirerapids.patch
deleted file mode 100644
index 5b994e6c0d6c6ce786eedd55ca45e1dfa225cd80..0000000000000000000000000000000000000000
--- a/gcc12-detect-sapphirerapids.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-commit d644dfe36d9733c767af62d37250253ced6efd8c
-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.cc b/gcc/config/i386/driver-i386.cc
-index 9e0ae0b2baa..fcf23fd921d 100644
---- a/gcc/config/i386/driver-i386.cc
-+++ b/gcc/config/i386/driver-i386.cc
-@@ -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 363082ba47b..a61c32b8957 100644
---- a/gcc/config/i386/i386.h
-+++ b/gcc/config/i386/i386.h
-@@ -2328,10 +2328,9 @@ 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_PTWRITE | PTA_WAITPKG | PTA_SERIALIZE | PTA_TSXLDTRK | PTA_AMX_TILE
-- | PTA_AMX_INT8 | PTA_AMX_BF16 | PTA_UINTR | PTA_AVXVNNI | PTA_AVX512FP16
-- | PTA_AVX512BF16;
-+ | 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_AVX512FP16 | PTA_AVX512BF16;
- constexpr wide_int_bitmask PTA_KNL = PTA_BROADWELL | PTA_AVX512PF
- | PTA_AVX512ER | PTA_AVX512F | PTA_AVX512CD | PTA_PREFETCHWT1;
- constexpr wide_int_bitmask PTA_BONNELL = PTA_CORE2 | PTA_MOVBE;
-diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
-index 3749e06f13e..cee057a70bf 100644
---- a/gcc/doc/invoke.texi
-+++ b/gcc/doc/invoke.texi
-@@ -31541,11 +31541,11 @@ 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,
--SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512FP16
--and AVX512BF16 instruction set support.
-+MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK,
-+UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512FP16 and AVX512BF16
-+instruction set support.
-
- @item alderlake
- Intel Alderlake CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
diff --git a/gcc12-dg-ice-fixes.patch b/gcc12-dg-ice-fixes.patch
index 49ecd551048bf44fc7de5ee5592b00936a82d7d0..4f581fa619fe96e0ef5309a2b5c7c5f8e1b0766b 100644
--- a/gcc12-dg-ice-fixes.patch
+++ b/gcc12-dg-ice-fixes.patch
@@ -1,13 +1,3 @@
---- a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-2.c
-+++ b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-2.c
-@@ -1,6 +1,6 @@
- /* { dg-additional-options "--param openacc-kernels=decompose" } */
-
--/* { dg-additional-options "-fchecking" }
-+/* { dg-additional-options "-fchecking -fno-report-bug" }
- { dg-ice TODO { c++ } }
- { dg-prune-output "during GIMPLE pass: omp_oacc_kernels_decompose" } */
-
--- a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-3.c
+++ b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-3.c
@@ -1,6 +1,6 @@
diff --git a/gcc12-fortran-fdec-non-logical-if.patch b/gcc12-fortran-fdec-non-logical-if.patch
index 9d952b2f3e49f61202ff2e870f8d7557a15e0538..a3a830c363b824c89ea4831e2f736084eb0ab949 100644
--- a/gcc12-fortran-fdec-non-logical-if.patch
+++ b/gcc12-fortran-fdec-non-logical-if.patch
@@ -26,17 +26,17 @@ diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
index 4a269ebb22d..d886c2f33ed 100644
--- a/gcc/fortran/lang.opt
+++ b/gcc/fortran/lang.opt
-@@ -502,6 +502,10 @@ fdec-math
- Fortran Var(flag_dec_math)
- Enable legacy math intrinsics for compatibility.
+@@ -506,6 +506,10 @@ fdec-override-kind
+ Fortran Var(flag_dec_override_kind)
+ Enable support for per variable kind specification.
+fdec-non-logical-if
+Fortran Var(flag_dec_non_logical_if)
+Enable support for non-logical expressions in if statements.
+
- fdec-override-kind
- Fortran Var(flag_dec_override_kind)
- Enable support for per variable kind specification.
+ fdec-structure
+ Fortran Var(flag_dec_structure)
+ Enable support for DEC STRUCTURE/RECORD.
diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc
index edbab483b36..a946c86790a 100644
--- a/gcc/fortran/options.cc
diff --git a/gcc12-isl-dl.patch b/gcc12-isl-dl.patch
index 825fb88c54b4623ca299f5e3969d64e92916ae0f..824288bb6c310b8aa9585325f382419ca538166a 100644
--- a/gcc12-isl-dl.patch
+++ b/gcc12-isl-dl.patch
@@ -26,7 +26,7 @@
# Generate header and source files from the machine description,
# and compile them.
--- gcc/graphite.h.jj 2016-01-27 12:44:06.000000000 +0100
-+++ gcc/graphite.h 2016-01-27 13:26:38.309876856 +0100
++++ gcc/graphite.h 2022-11-03 19:14:50.369690720 +0100
@@ -24,6 +24,591 @@ along with GCC; see the file COPYING3.
#include "sese.h"
@@ -41,15 +41,15 @@
+ DYNSYM (isl_aff_set_coefficient_si); \
+ DYNSYM (isl_aff_set_constant_si); \
+ DYNSYM (isl_aff_zero_on_domain); \
-+ DYNSYM (isl_band_free); \
-+ DYNSYM (isl_band_get_children); \
-+ DYNSYM (isl_band_get_partial_schedule); \
-+ DYNSYM (isl_band_has_children); \
-+ DYNSYM (isl_band_list_free); \
-+ DYNSYM (isl_band_list_get_band); \
-+ DYNSYM (isl_band_list_get_ctx); \
-+ DYNSYM (isl_band_list_n_band); \
-+ DYNSYM (isl_band_n_member); \
++ /* DYNSYM (isl_band_free); */ \
++ /* DYNSYM (isl_band_get_children); */ \
++ /* DYNSYM (isl_band_get_partial_schedule); */ \
++ /* DYNSYM (isl_band_has_children); */ \
++ /* DYNSYM (isl_band_list_free); */ \
++ /* DYNSYM (isl_band_list_get_band); */ \
++ /* DYNSYM (isl_band_list_get_ctx); */ \
++ /* DYNSYM (isl_band_list_n_band); */ \
++ /* DYNSYM (isl_band_n_member); */ \
+ DYNSYM (isl_basic_map_add_constraint); \
+ DYNSYM (isl_basic_map_project_out); \
+ DYNSYM (isl_basic_map_universe); \
@@ -91,7 +91,7 @@
+ DYNSYM (isl_map_is_empty); \
+ DYNSYM (isl_map_lex_ge); \
+ DYNSYM (isl_map_lex_le); \
-+ DYNSYM (isl_map_n_out); \
++ /* DYNSYM (isl_map_n_out); */ \
+ DYNSYM (isl_map_range); \
+ DYNSYM (isl_map_set_tuple_id); \
+ DYNSYM (isl_map_universe); \
@@ -124,7 +124,7 @@
+ DYNSYM (isl_pw_aff_sub); \
+ DYNSYM (isl_pw_aff_zero_set); \
+ DYNSYM (isl_schedule_free); \
-+ DYNSYM (isl_schedule_get_band_forest); \
++ /* DYNSYM (isl_schedule_get_band_forest); */ \
+ DYNSYM (isl_set_add_constraint); \
+ DYNSYM (isl_set_add_dims); \
+ DYNSYM (isl_set_apply); \
@@ -641,7 +641,7 @@
+
+ if (isl_pointers__.inited)
+ return isl_pointers__.h != NULL;
-+ h = dlopen ("libisl.so.15", RTLD_LAZY);
++ h = dlopen ("libisl.so.23", RTLD_LAZY);
+ isl_pointers__.h = h;
+ if (h == NULL)
+ return false;
diff --git a/gcc12-isl-dl2.patch b/gcc12-isl-dl2.patch
index 5402a8edff42bf8087b92ccd42f9a6f284d242d9..2e12499b4739a9574393361068bae7c86dcf2c72 100644
--- a/gcc12-isl-dl2.patch
+++ b/gcc12-isl-dl2.patch
@@ -2,7 +2,7 @@
* toplev.cc (toplev_main_argv): New variable.
(toplev_main): Initialize it.
- * graphite.cc (init_isl_pointers): Load libisl.so.15 from gcc's private
+ * graphite.cc (init_isl_pointers): Load libisl.so.23 from gcc's private
directory.
--- gcc/toplev.cc.jj 2008-12-09 23:59:10.000000000 +0100
@@ -39,12 +39,12 @@
if (isl_pointers__.inited)
return isl_pointers__.h != NULL;
-- h = dlopen ("libisl.so.15", RTLD_LAZY);
+- h = dlopen ("libisl.so.23", RTLD_LAZY);
+ len = progname - toplev_main_argv[0];
-+ buf = XALLOCAVAR (char, len + sizeof "libisl.so.15");
++ buf = XALLOCAVAR (char, len + sizeof "libisl.so.23");
+ memcpy (buf, toplev_main_argv[0], len);
-+ strcpy (buf + len, "libisl.so.15");
-+ len += sizeof "libisl.so.15";
++ strcpy (buf + len, "libisl.so.23");
++ len += sizeof "libisl.so.23";
+ p = strstr (buf, "/libexec/");
+ if (p != NULL)
+ {
@@ -61,7 +61,7 @@
+ {
+ len = progname - toplev_main_argv[0];
+ memcpy (buf, toplev_main_argv[0], len);
-+ strcpy (buf + len, "libisl.so.15");
++ strcpy (buf + len, "libisl.so.23");
+ }
+ }
+ if (h == NULL)
diff --git a/gcc12-libstdc++-compat.patch b/gcc12-libstdc++-compat.patch
index be6e7218738375af065de303739773ea6c4e749f..f6c8ada9787de75d21ca262d382484a5ab618f43 100644
--- a/gcc12-libstdc++-compat.patch
+++ b/gcc12-libstdc++-compat.patch
@@ -10365,7 +10365,7 @@
+//asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_");
+asm (".hidden _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_disposeEv");
+//asm (".hidden _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_assignERKS4_");
-+#if defined(__powerpc__) && !defined(__powerpc64__)
++#if defined(__i386__) || (defined(__powerpc__) && !defined(__powerpc64__))
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEjjPKcj");
+asm (".hidden _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_mutateEjjPKwj");
+#endif
@@ -11348,7 +11348,7 @@
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEE9_M_mutateEmmPKcm");
+#endif
+#if defined(__s390x__) || defined(__powerpc64__)
-+asm (".hidden _ZSt10from_charsPKcS0_RgSt12chars_format");
++//asm (".hidden _ZSt10from_charsPKcS0_RgSt12chars_format");
+#endif
+#if !defined(__i386__)
+asm (".hidden _ZSt10from_charsIiENSt9enable_ifIXsrSt5__or_IJS1_IJSt7is_sameINSt9remove_cvIT_E4typeEaES2_IS6_sES2_IS6_iES2_IS6_lES2_IS6_xES2_IS6_nEEES1_IJS2_IS6_hES2_IS6_tES2_IS6_jES2_IS6_mES2_IS6_yES2_IS6_oEEES2_IcS6_EEE5valueESt17from_chars_resultE4typeEPKcSR_RS4_i");
@@ -11446,7 +11446,7 @@
+#endif
--- libstdc++-v3/src/nonshared17/cow-fs_path.cc.jj 2022-05-12 10:06:51.403502355 +0200
+++ libstdc++-v3/src/nonshared17/cow-fs_path.cc 2022-05-12 17:51:19.637951045 +0200
-@@ -0,0 +1,117 @@
+@@ -0,0 +1,129 @@
+// Copyright (C) 2019-2022 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
@@ -11520,12 +11520,12 @@
+asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem16filesystem_error5_ImplESaIS2_ELN9__gnu_cxx12_Lock_policyE2EED2Ev");
+asm (".hidden _ZNSt10filesystem4path10_S_convertIwEEDaPKT_S4_");
+asm (".hidden _ZNSt10filesystem8__detail24__throw_conversion_errorEv");
-+asm (".hidden _ZTIZNSt10filesystem4path10_S_convertIwEEDaPKT_S4_E5_UCvt");
-+asm (".hidden _ZTSZNSt10filesystem4path10_S_convertIwEEDaPKT_S4_E5_UCvt");
-+asm (".hidden _ZTVZNSt10filesystem4path10_S_convertIwEEDaPKT_S4_E5_UCvt");
-+asm (".hidden _ZZNSt10filesystem4path10_S_convertIwEEDaPKT_S4_EN5_UCvtD0Ev");
-+asm (".hidden _ZZNSt10filesystem4path10_S_convertIwEEDaPKT_S4_EN5_UCvtD1Ev");
-+asm (".hidden _ZZNSt10filesystem4path10_S_convertIwEEDaPKT_S4_EN5_UCvtD2Ev");
++//asm (".hidden _ZTIZNSt10filesystem4path10_S_convertIwEEDaPKT_S4_E5_UCvt");
++//asm (".hidden _ZTSZNSt10filesystem4path10_S_convertIwEEDaPKT_S4_E5_UCvt");
++//asm (".hidden _ZTVZNSt10filesystem4path10_S_convertIwEEDaPKT_S4_E5_UCvt");
++//asm (".hidden _ZZNSt10filesystem4path10_S_convertIwEEDaPKT_S4_EN5_UCvtD0Ev");
++//asm (".hidden _ZZNSt10filesystem4path10_S_convertIwEEDaPKT_S4_EN5_UCvtD1Ev");
++//asm (".hidden _ZZNSt10filesystem4path10_S_convertIwEEDaPKT_S4_EN5_UCvtD2Ev");
+asm (".hidden _ZNKSt10filesystem4path5_List5_Impl4copyEv");
+asm (".hidden _ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv");
+asm (".hidden _ZNSs12_M_leak_hardEv");
@@ -11564,6 +11564,18 @@
+asm (".hidden _ZSt16__do_str_codecvtISbIwSt11char_traitsIwESaIwEEcSt7codecvtIwc11__mbstate_tES5_MS6_KFNSt12codecvt_base6resultERS5_PKcSB_RSB_PwSD_RSD_EEbPKT0_SJ_RT_RKT1_RT2_RjT3_");
+asm (".hidden _ZSt16__do_str_codecvtISswSt7codecvtIwc11__mbstate_tES1_MS2_KFNSt12codecvt_base6resultERS1_PKwS7_RS7_PcS9_RS9_EEbPKT0_SF_RT_RKT1_RT2_RjT3_");
+#endif
++asm (".hidden _ZNSt10filesystem4path8_CodecvtIwED0Ev");
++asm (".hidden _ZNSt10filesystem4path8_CodecvtIwED1Ev");
++asm (".hidden _ZNSt10filesystem4path8_CodecvtIwED2Ev");
++asm (".hidden _ZNSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EED0Ev");
++asm (".hidden _ZNSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EED1Ev");
++asm (".hidden _ZNSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EED2Ev");
++asm (".hidden _ZTINSt10filesystem4path8_CodecvtIwEE");
++asm (".hidden _ZTISt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EE");
++asm (".hidden _ZTSNSt10filesystem4path8_CodecvtIwEE");
++asm (".hidden _ZTSSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EE");
++asm (".hidden _ZTVNSt10filesystem4path8_CodecvtIwEE");
++asm (".hidden _ZTVSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EE");
--- libstdc++-v3/src/nonshared17/memory_resource.cc.jj 2022-05-12 10:06:51.403502355 +0200
+++ libstdc++-v3/src/nonshared17/memory_resource.cc 2022-05-12 10:06:51.403502355 +0200
@@ -0,0 +1,68 @@
@@ -11637,7 +11649,7 @@
+asm (".hidden _ZNSt22__shared_mutex_pthread6unlockEv");
--- libstdc++-v3/src/nonshared17/fs_dir.cc.jj 2022-05-12 10:06:51.404502342 +0200
+++ libstdc++-v3/src/nonshared17/fs_dir.cc 2022-05-12 17:52:31.745989435 +0200
-@@ -0,0 +1,100 @@
+@@ -0,0 +1,103 @@
+// Copyright (C) 2019-2022 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
@@ -11737,7 +11749,10 @@
+asm (".hidden _ZNKSt10filesystem7__cxx114_Dir11open_subdirEbbRSt10error_code");
+asm (".hidden _ZNKSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stack12current_pathEv");
+asm (".hidden _ZNSt10filesystem7__cxx1128recursive_directory_iterator7__eraseEPSt10error_code");
-+asm (".hidden _ZNKSt10filesystem7__cxx114_Dir16dir_and_pathnameEv");
++//asm (".hidden _ZNKSt10filesystem7__cxx114_Dir16dir_and_pathnameEv");
++asm (".hidden _ZNKSt10filesystem7__cxx114_Dir7currentEv");
++asm (".hidden _ZNSt10filesystem7__cxx114_DirC1ERKNS0_4pathEbbbRSt10error_code");
++asm (".hidden _ZNSt10filesystem7__cxx114_DirC2ERKNS0_4pathEbbbRSt10error_code");
--- libstdc++-v3/src/nonshared17/fs_ops80.cc.jj 2022-05-12 10:06:51.404502342 +0200
+++ libstdc++-v3/src/nonshared17/fs_ops80.cc 2022-05-12 17:52:52.357714560 +0200
@@ -0,0 +1,41 @@
@@ -11784,7 +11799,7 @@
+#endif
--- libstdc++-v3/src/nonshared17/fs_path80.cc.jj 2022-05-12 10:06:51.404502342 +0200
+++ libstdc++-v3/src/nonshared17/fs_path80.cc 2022-05-12 17:53:21.460326486 +0200
-@@ -0,0 +1,66 @@
+@@ -0,0 +1,77 @@
+// Copyright (C) 2019-2022 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
@@ -11810,12 +11825,12 @@
+#define _GLIBCXX_NONSHARED_CXX17_80
+#include "fs_path.cc"
+asm (".hidden _ZNSt10filesystem7__cxx118__detail24__throw_conversion_errorEv");
-+asm (".hidden _ZTIZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_E5_UCvt");
-+asm (".hidden _ZTSZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_E5_UCvt");
-+asm (".hidden _ZTVZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_E5_UCvt");
-+asm (".hidden _ZZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_EN5_UCvtD0Ev");
-+asm (".hidden _ZZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_EN5_UCvtD1Ev");
-+asm (".hidden _ZZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_EN5_UCvtD2Ev");
++//asm (".hidden _ZTIZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_E5_UCvt");
++//asm (".hidden _ZTSZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_E5_UCvt");
++//asm (".hidden _ZTVZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_E5_UCvt");
++//asm (".hidden _ZZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_EN5_UCvtD0Ev");
++//asm (".hidden _ZZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_EN5_UCvtD1Ev");
++//asm (".hidden _ZZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_EN5_UCvtD2Ev");
+asm (".hidden _ZNSt12system_errorC1ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE");
+asm (".hidden _ZNSt12system_errorC2ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE");
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_");
@@ -11832,7 +11847,6 @@
+#endif
+#if defined(__aarch64__) || defined(__x86_64__)
+asm (".hidden _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_mutateEmmPKwm");
-+asm (".hidden _ZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_");
+#endif
+#ifdef __powerpc64__
+asm (".hidden _ZNSt10filesystem7__cxx114path5_List5beginEv");
@@ -11843,7 +11857,6 @@
+asm (".hidden _ZNSt10filesystem7__cxx114path7_Parser4nextEv");
+#endif
+#ifdef __i386__
-+asm (".hidden _ZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_");
+asm (".hidden _ZNSt10filesystem7__cxx114path5_List5beginEv");
+asm (".hidden _ZNSt10filesystem7__cxx114path7_Parser4nextEv");
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEjjPKcj");
@@ -11851,9 +11864,22 @@
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcj");
+asm (".hidden _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6resizeEjw");
+#endif
++asm (".hidden _ZNSt10filesystem7__cxx114path8_CodecvtIwED0Ev");
++asm (".hidden _ZNSt10filesystem7__cxx114path8_CodecvtIwED1Ev");
++asm (".hidden _ZNSt10filesystem7__cxx114path8_CodecvtIwED2Ev");
++asm (".hidden _ZNSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EED0Ev");
++asm (".hidden _ZNSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EED1Ev");
++asm (".hidden _ZNSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EED2Ev");
++asm (".hidden _ZTINSt10filesystem7__cxx114path8_CodecvtIwEE");
++asm (".hidden _ZTISt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EE");
++asm (".hidden _ZTSNSt10filesystem7__cxx114path8_CodecvtIwEE");
++asm (".hidden _ZTSSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EE");
++asm (".hidden _ZTVNSt10filesystem7__cxx114path8_CodecvtIwEE");
++asm (".hidden _ZTVSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EE");
++asm (".hidden _ZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_");
--- libstdc++-v3/src/nonshared17/cow-fs_dir.cc.jj 2022-05-12 10:06:51.404502342 +0200
+++ libstdc++-v3/src/nonshared17/cow-fs_dir.cc 2022-05-12 17:50:19.890747818 +0200
-@@ -0,0 +1,106 @@
+@@ -0,0 +1,107 @@
+// Copyright (C) 2019-2022 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
@@ -11957,9 +11983,10 @@
+//asm (".hidden _ZNSt10filesystem4pathC2ISsS0_EERKT_NS0_6formatE");
+//asm (".hidden _ZNSt10filesystem4pathC1ISsS0_EERKT_NS0_6formatE");
+asm (".hidden _ZNSt10filesystem28recursive_directory_iterator7__eraseEPSt10error_code");
-+asm (".hidden _ZNKSt10filesystem4_Dir16dir_and_pathnameEv");
++//asm (".hidden _ZNKSt10filesystem4_Dir16dir_and_pathnameEv");
+asm (".hidden _ZNSt10filesystem4pathD1Ev");
+asm (".hidden _ZNSt10filesystem4pathD2Ev");
++asm (".hidden _ZNKSt10filesystem4_Dir7currentEv");
--- libstdc++-v3/src/nonshared17/Makefile.am.jj 2022-05-12 10:06:51.404502342 +0200
+++ libstdc++-v3/src/nonshared17/Makefile.am 2022-05-12 10:06:51.404502342 +0200
@@ -0,0 +1,133 @@
@@ -12176,12 +12203,12 @@
+//asm (".hidden _ZNSt10filesystem7__cxx114pathaSISt17basic_string_viewIcSt11char_traitsIcEEEERNSt9enable_ifIXsrSt6__and_IJSt6__not_ISt7is_sameINSt9remove_cvIT_E4typeES1_EES9_ISt7is_voidINSt14remove_pointerISC_E4typeEEENS0_8__detail20__constructible_fromISC_vEEEE5valueES1_E4typeERKSC_");
+#endif
+#endif
-+asm (".hidden _ZTIZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_E5_UCvt");
-+asm (".hidden _ZTSZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_E5_UCvt");
-+asm (".hidden _ZTVZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_E5_UCvt");
-+asm (".hidden _ZZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_EN5_UCvtD0Ev");
-+asm (".hidden _ZZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_EN5_UCvtD1Ev");
-+asm (".hidden _ZZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_EN5_UCvtD2Ev");
++//asm (".hidden _ZTIZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_E5_UCvt");
++//asm (".hidden _ZTSZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_E5_UCvt");
++//asm (".hidden _ZTVZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_E5_UCvt");
++//asm (".hidden _ZZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_EN5_UCvtD0Ev");
++//asm (".hidden _ZZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_EN5_UCvtD1Ev");
++//asm (".hidden _ZZNSt10filesystem7__cxx114path10_S_convertIwEEDaPKT_S5_EN5_UCvtD2Ev");
+asm (".hidden _ZNSt10filesystem7__cxx118__detail24__throw_conversion_errorEv");
+#ifdef __powerpc64__
+//asm (".hidden _ZNKSt10filesystem7__cxx114path5_List5_Impl4copyEv");
@@ -13197,9 +13224,9 @@
+asm (".hidden _ZNSt8__detail10__to_charsIjEESt15to_chars_resultPcS2_T_i");
+#endif
+#if defined (__powerpc64__) || defined (__s390x__)
-+asm (".hidden _ZSt8to_charsPcS_g");
-+asm (".hidden _ZSt8to_charsPcS_gSt12chars_format");
-+asm (".hidden _ZSt8to_charsPcS_gSt12chars_formati");
++//asm (".hidden _ZSt8to_charsPcS_g");
++//asm (".hidden _ZSt8to_charsPcS_gSt12chars_format");
++//asm (".hidden _ZSt8to_charsPcS_gSt12chars_formati");
+#endif
+#if !defined (__powerpc64__) && !defined (__s390x__)
+asm (".hidden _ZNSt8__detail13__to_chars_16IoEENSt9enable_ifIXsrSt5__or_IIS2_IISt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IIS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSR_S5_");
diff --git a/gcc12-libstdc++-docs.patch b/gcc12-libstdc++-docs.patch
index 5a27a5db0d672f73b028f45d82947836f4f4165a..b6c2d50bac8118b119ad7fe7ca56fc50e64f44cc 100644
--- a/gcc12-libstdc++-docs.patch
+++ b/gcc12-libstdc++-docs.patch
@@ -4,7 +4,7 @@
FSF
-+ Release 12.1.1
++ Release 12.2.1
+
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation
@@ -17,7 +17,7 @@
- The API documentation, rendered into HTML, can be viewed online
+ The API documentation, rendered into HTML, can be viewed locally
-+ for the 12.1.1 release,
++ for the 12.2.1 release,
+ online
for each GCC release
and
diff --git a/gcc12-libtsan-s390x.patch b/gcc12-libtsan-s390x.patch
deleted file mode 100644
index 4241d43da8e4d969f15c1d6f954e6f07fdf598b6..0000000000000000000000000000000000000000
--- a/gcc12-libtsan-s390x.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-commit r12-8527-g7811663964aa7e31c3939b859bbfa2e16919639f
-Author: Martin Liska
-Date: Wed Jun 29 15:28:07 2022 +0200
-
- libsanitizer: cherry-pick 791e0d1bc85d
-
- 791e0d1bc85d: [compiler-rt] Add NO_EXEC_STACK_DIRECTIVE on s390x
- (cherry picked from commit aa87b7541b4c11f59c521154513f844ea6b5c977)
-
---- libsanitizer/tsan/tsan_rtl_s390x.S
-+++ libsanitizer/tsan/tsan_rtl_s390x.S
-@@ -45,3 +45,5 @@ intercept setjmp, _ZN14__interception11real_setjmpE
- intercept _setjmp, _ZN14__interception12real__setjmpE
- intercept sigsetjmp, _ZN14__interception14real_sigsetjmpE
- intercept __sigsetjmp, _ZN14__interception16real___sigsetjmpE
-+
-+NO_EXEC_STACK_DIRECTIVE
diff --git a/gcc12-pr105551.patch b/gcc12-pr105551.patch
deleted file mode 100644
index ce8be2672e3069a422b3e0193bef983efc43d4c8..0000000000000000000000000000000000000000
--- a/gcc12-pr105551.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-2022-05-11 Richard Biener
-
- PR bootstrap/105551
- * opts.cc (finish_options): Also disable var-tracking if
- !DWARF2_DEBUGGING_INFO.
-
---- gcc/opts.cc
-+++ gcc/opts.cc
-@@ -1334,11 +1334,15 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set,
- || opts->x_flag_selective_scheduling2));
-
- /* We know which debug output will be used so we can set flag_var_tracking
-- and flag_var_tracking_uninit if the user has not specified them. Note
-- we have not yet initialized debug_hooks so we might uselessly run
-- var-tracking on targets without var_location debug hook support. */
-+ and flag_var_tracking_uninit if the user has not specified them. */
- if (opts->x_debug_info_level < DINFO_LEVEL_NORMAL
-- || !dwarf_debuginfo_p (opts))
-+ || !dwarf_debuginfo_p (opts)
-+ /* We have not yet initialized debug hooks so match that to check
-+ whether we're only doing DWARF2_LINENO_DEBUGGING_INFO. */
-+#ifndef DWARF2_DEBUGGING_INFO
-+ || true
-+#endif
-+ )
- {
- if ((opts_set->x_flag_var_tracking && opts->x_flag_var_tracking == 1)
- || (opts_set->x_flag_var_tracking_uninit
diff --git a/gcc12-pr105991.patch b/gcc12-pr105991.patch
deleted file mode 100644
index b9e12f41b618d154cfd6681ea76a2e22f1e0a35d..0000000000000000000000000000000000000000
--- a/gcc12-pr105991.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-commit 6c175b3d170de2bb02b7bd45b3348eec05d28451
-Author: Roger Sayle
-Date: Mon Jul 4 13:58:37 2022 +0100
-
- PR target/105991: Recognize PLUS and XOR forms of rldimi in rs6000.md.
-
- This patch addresses PR target/105991 where a change to prefer representing
- shifts and adds at the tree-level as multiplications, causes problems for
- the rldimi patterns in the powerpc backend. The issue is that rs6000.md
- models this pattern using IOR, and some variants that have the equivalent
- PLUS or XOR in the RTL fail to match some *rotl4_insert patterns.
- This is fixed in this patch by adding a define_insn_and_split to locally
- canonicalize the PLUS and XOR forms to the backend's preferred IOR form.
-
- Backported from master.
-
- 2022-07-04 Roger Sayle
- Marek Polacek
- Segher Boessenkool
- Kewen Lin
-
- gcc/ChangeLog
- PR target/105991
- * config/rs6000/rs6000.md (rotl3_insert_3): Check that
- exact_log2 doesn't return -1 (or zero).
- (plus_xor): New code iterator.
- (*rotl3_insert_3_): New define_insn_and_split.
-
- gcc/testsuite/ChangeLog
- PR target/105991
- * gcc.target/powerpc/pr105991.c: New test case.
-
-diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
-index 64049a6e521..6082ded8c31 100644
---- a/gcc/config/rs6000/rs6000.md
-+++ b/gcc/config/rs6000/rs6000.md
-@@ -4178,7 +4178,8 @@ (define_insn "rotl3_insert_3"
- (match_operand:GPR 4 "const_int_operand" "n"))
- (ashift:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "const_int_operand" "n"))))]
-- "INTVAL (operands[2]) == exact_log2 (UINTVAL (operands[4]) + 1)"
-+ "INTVAL (operands[2]) > 0
-+ && INTVAL (operands[2]) == exact_log2 (UINTVAL (operands[4]) + 1)"
- {
- if (mode == SImode)
- return "rlwimi %0,%1,%h2,0,31-%h2";
-@@ -4187,6 +4188,24 @@ (define_insn "rotl3_insert_3"
- }
- [(set_attr "type" "insert")])
-
-+; Canonicalize the PLUS and XOR forms to IOR for rotl3_insert_3
-+(define_code_iterator plus_xor [plus xor])
-+
-+(define_insn_and_split "*rotl3_insert_3_"
-+ [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
-+ (plus_xor:GPR
-+ (and:GPR (match_operand:GPR 3 "gpc_reg_operand" "0")
-+ (match_operand:GPR 4 "const_int_operand" "n"))
-+ (ashift:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")
-+ (match_operand:SI 2 "const_int_operand" "n"))))]
-+ "INTVAL (operands[2]) > 0
-+ && INTVAL (operands[2]) == exact_log2 (UINTVAL (operands[4]) + 1)"
-+ "#"
-+ "&& 1"
-+ [(set (match_dup 0)
-+ (ior:GPR (and:GPR (match_dup 3) (match_dup 4))
-+ (ashift:GPR (match_dup 1) (match_dup 2))))])
-+
- (define_code_iterator plus_ior_xor [plus ior xor])
-
- (define_split
-diff --git a/gcc/testsuite/gcc.target/powerpc/pr105991.c b/gcc/testsuite/gcc.target/powerpc/pr105991.c
-new file mode 100644
-index 00000000000..0d9d130cb63
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/powerpc/pr105991.c
-@@ -0,0 +1,12 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2" } */
-+/* { dg-require-effective-target lp64 } */
-+unsigned long long
-+foo (unsigned long long value)
-+{
-+ value &= 0xffffffff;
-+ value |= value << 32;
-+ return value;
-+}
-+/* { dg-final { scan-assembler {\mrldimi\M} } } */
-+
diff --git a/gcc12-pr107468.patch b/gcc12-pr107468.patch
new file mode 100644
index 0000000000000000000000000000000000000000..0949b116c253d68ed8acb131fefa32dfd8b28559
--- /dev/null
+++ b/gcc12-pr107468.patch
@@ -0,0 +1,124 @@
+libstdc++: Update from latest fast_float [PR107468]
+
+The following patch is a cherry-pick from
+https://github.com/fastfloat/fast_float/pull/153
+to restrict fast_float Clinger's fast path to when rounding mode
+is FE_TONEAREST.
+Using std::fegetround showed in benchmarks too slow, so instead
+it uses a check with 2 float additions and comparison to verify
+if rounding is FE_TONEAREST.
+
+2022-11-20 Jakub Jelinek
+
+ PR libstdc++/107468
+ * src/c++17/fast_float/fast_float.h (detail::rounds_to_nearest): New
+ function, taken from https://github.com/fastfloat/fast_float/pull/153.
+ (from_chars_advanced): Only use Clinger's fast path if
+ detail::rounds_to_nearest().
+ * testsuite/20_util/from_chars/pr107468.cc: New test.
+
+--- libstdc++-v3/src/c++17/fast_float/fast_float.h.jj 2022-04-28 15:56:18.315632888 +0200
++++ libstdc++-v3/src/c++17/fast_float/fast_float.h 2022-11-20 18:53:49.570830249 +0100
+@@ -2842,6 +2842,48 @@ from_chars_result parse_infnan(const cha
+ return answer;
+ }
+
++/**
++ * Returns true if the floating-pointing rounding mode is to 'nearest'.
++ * It is the default on most system. This function is meant to be inexpensive.
++ * Credit : @mwalcott3
++ */
++fastfloat_really_inline bool rounds_to_nearest() noexcept {
++ // See
++ // A fast function to check your floating-point rounding mode
++ // https://lemire.me/blog/2022/11/16/a-fast-function-to-check-your-floating-point-rounding-mode/
++ //
++ // This function is meant to be equivalent to :
++ // prior: #include
++ // return fegetround() == FE_TONEAREST;
++ // However, it is expected to be much faster than the fegetround()
++ // function call.
++ //
++ // The volatile keywoard prevents the compiler from computing the function
++ // at compile-time.
++ // There might be other ways to prevent compile-time optimizations (e.g., asm).
++ // The value does not need to be std::numeric_limits::min(), any small
++ // value so that 1 + x should round to 1 would do (after accounting for excess
++ // precision, as in 387 instructions).
++ static volatile float fmin = std::numeric_limits::min();
++ float fmini = fmin; // we copy it so that it gets loaded at most once.
++ //
++ // Explanation:
++ // Only when fegetround() == FE_TONEAREST do we have that
++ // fmin + 1.0f == 1.0f - fmin.
++ //
++ // FE_UPWARD:
++ // fmin + 1.0f > 1
++ // 1.0f - fmin == 1
++ //
++ // FE_DOWNWARD or FE_TOWARDZERO:
++ // fmin + 1.0f == 1
++ // 1.0f - fmin < 1
++ //
++ // Note: This may fail to be accurate if fast-math has been
++ // enabled, as rounding conventions may not apply.
++ return (fmini + 1.0f == 1.0f - fmini);
++}
++
+ } // namespace detail
+
+ template
+@@ -2870,7 +2912,7 @@ from_chars_result from_chars_advanced(co
+ answer.ec = std::errc(); // be optimistic
+ answer.ptr = pns.lastmatch;
+ // Next is Clinger's fast path.
+- if (binary_format::min_exponent_fast_path() <= pns.exponent && pns.exponent <= binary_format::max_exponent_fast_path() && pns.mantissa <=binary_format::max_mantissa_fast_path() && !pns.too_many_digits) {
++ if (binary_format::min_exponent_fast_path() <= pns.exponent && pns.exponent <= binary_format::max_exponent_fast_path() && pns.mantissa <=binary_format::max_mantissa_fast_path() && !pns.too_many_digits && detail::rounds_to_nearest()) {
+ value = T(pns.mantissa);
+ if (pns.exponent < 0) { value = value / binary_format::exact_power_of_ten(-pns.exponent); }
+ else { value = value * binary_format::exact_power_of_ten(pns.exponent); }
+--- libstdc++-v3/testsuite/20_util/from_chars/pr107468.cc.jj
++++ libstdc++-v3/testsuite/20_util/from_chars/pr107468.cc
+@@ -0,0 +1,42 @@
++// Copyright (C) 2022 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 3, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING3. If not see
++// .
++
++// { dg-do run { target c++17 } }
++// { dg-add-options ieee }
++
++#include
++#include
++#include
++#include
++
++int
++main()
++{
++ // FP from_char not available otherwise.
++#if __cpp_lib_to_chars >= 201611L \
++ && _GLIBCXX_USE_C99_FENV_TR1 \
++ && defined(FE_DOWNWARD) \
++ && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
++ // PR libstdc++/107468
++ float f;
++ char buf[] = "3.355447e+07";
++ std::fesetround(FE_DOWNWARD);
++ auto [ptr, ec] = std::from_chars(buf, buf + sizeof(buf) - 1, f, std::chars_format::scientific);
++ VERIFY( ec == std::errc() && ptr == buf + sizeof(buf) - 1 );
++ VERIFY( f == 33554472.0f );
++#endif
++}
diff --git a/gcc12-static-libquadmath.patch b/gcc12-static-libquadmath.patch
new file mode 100644
index 0000000000000000000000000000000000000000..43974ed3e34ff14c6b08d7bb77c137f704592172
--- /dev/null
+++ b/gcc12-static-libquadmath.patch
@@ -0,0 +1,178 @@
+2022-08-17 Francois-Xavier Coudert
+ Jakub Jelinek
+
+ PR fortran/46539
+gcc/
+ * common.opt (static-libquadmath): New option.
+ * gcc.cc (driver_handle_option): Always accept -static-libquadmath.
+ * config/darwin.h (LINK_SPEC): Handle -static-libquadmath.
+gcc/fortran/
+ * lang.opt (static-libquadmath): New option.
+ * invoke.texi (-static-libquadmath): Document it.
+libgfortran/
+ * acinclude.m4 (LIBQUADSPEC): From $FC -static-libgfortran -###
+ output determine -Bstatic/-Bdynamic, -bstatic/-bdynamic,
+ -aarchive_shared/-adefault linker support or Darwin remapping
+ of -lgfortran to libgfortran.a%s and use that around or instead
+ of -lquadmath in LIBQUADSPEC.
+ * configure: Regenerated.
+
+--- gcc/common.opt.jj 2022-04-28 15:56:02.822846833 +0200
++++ gcc/common.opt 2022-09-29 19:41:37.250880668 +0200
+@@ -3563,6 +3563,10 @@ static-libphobos
+ Driver
+ ; Documented for D, but always accepted by driver.
+
++static-libquadmath
++Driver
++; Documented for Fortran, but always accepted by driver.
++
+ static-libstdc++
+ Driver
+
+--- gcc/gcc.cc.jj 2022-04-28 15:56:04.771819920 +0200
++++ gcc/gcc.cc 2022-09-29 19:41:37.296880041 +0200
+@@ -4583,12 +4583,14 @@ driver_handle_option (struct gcc_options
+ case OPT_static_libgcc:
+ case OPT_shared_libgcc:
+ case OPT_static_libgfortran:
++ case OPT_static_libquadmath:
+ case OPT_static_libphobos:
+ case OPT_static_libstdc__:
+ /* These are always valid, since gcc.cc itself understands the
+ first two, gfortranspec.cc understands -static-libgfortran,
+- d-spec.cc understands -static-libphobos, and g++spec.cc
+- understands -static-libstdc++ */
++ d-spec.cc understands -static-libphobos, g++spec.cc
++ understands -static-libstdc++ and libgfortran.spec handles
++ -static-libquadmath. */
+ validated = true;
+ break;
+
+--- gcc/config/darwin.h.jj 2022-06-18 21:56:40.666675606 +0200
++++ gcc/config/darwin.h 2022-09-29 19:41:37.261880518 +0200
+@@ -443,6 +443,7 @@ extern GTY(()) int darwin_ms_struct;
+ %:replace-outfile(-lobjc libobjc-gnu.a%s); \
+ :%:replace-outfile(-lobjc -lobjc-gnu )}}\
+ %{static|static-libgcc|static-libgfortran:%:replace-outfile(-lgfortran libgfortran.a%s)}\
++ %{static|static-libgcc|static-libquadmath:%:replace-outfile(-lquadmath libquadmath.a%s)}\
+ %{static|static-libgcc|static-libphobos:%:replace-outfile(-lgphobos libgphobos.a%s)}\
+ %{static|static-libgcc|static-libstdc++|static-libgfortran:%:replace-outfile(-lgomp libgomp.a%s)}\
+ %{static|static-libgcc|static-libstdc++:%:replace-outfile(-lstdc++ libstdc++.a%s)}\
+--- gcc/fortran/lang.opt.jj 2022-04-28 15:56:04.579822571 +0200
++++ gcc/fortran/lang.opt 2022-09-29 19:41:37.279880273 +0200
+@@ -863,6 +863,10 @@ static-libgfortran
+ Fortran
+ Statically link the GNU Fortran helper library (libgfortran).
+
++static-libquadmath
++Driver
++Statically link the GCC Quad-Precision Math Library (libquadmath).
++
+ std=f2003
+ Fortran
+ Conform to the ISO Fortran 2003 standard.
+--- gcc/fortran/invoke.texi.jj 2022-04-29 15:51:59.080720092 +0200
++++ gcc/fortran/invoke.texi 2022-09-29 19:41:37.273880354 +0200
+@@ -170,7 +170,7 @@ and warnings}.
+
+ @item Link Options
+ @xref{Link Options,,Options for influencing the linking step}.
+-@gccoptlist{-static-libgfortran}
++@gccoptlist{-static-libgfortran -static-libquadmath}
+
+ @item Runtime Options
+ @xref{Runtime Options,,Options for influencing runtime behavior}.
+@@ -1425,6 +1425,20 @@ configured, this option has no effect.
+ @end table
+
+
++@table @gcctabopt
++@item -static-libquadmath
++@opindex @code{static-libquadmath}
++On systems that provide @file{libquadmath} as a shared and a static
++library, this option forces the use of the static version. If no
++shared version of @file{libquadmath} was built when the compiler was
++configured, this option has no effect.
++
++Please note that the @file{libquadmath} runtime library is licensed under the
++GNU Lesser General Public License (LGPL), and linking it statically introduces
++requirements when redistributing the resulting binaries.
++@end table
++
++
+ @node Runtime Options
+ @section Influencing runtime behavior
+ @cindex options, runtime
+--- libgfortran/acinclude.m4.jj 2022-09-29 19:41:37.306879904 +0200
++++ libgfortran/acinclude.m4 2022-09-29 19:42:42.641988408 +0200
+@@ -338,11 +338,32 @@ AC_DEFUN([LIBGFOR_CHECK_FLOAT128], [
+ ac_[]_AC_LANG_ABBREV[]_werror_flag=$ac_xsave_[]_AC_LANG_ABBREV[]_werror_flag
+ ])
+
++ dnl Determine -Bstatic ... -Bdynamic etc. support from gfortran -### stderr.
++ touch conftest1.$ac_objext conftest2.$ac_objext
++ LQUADMATH=-lquadmath
++ $FC -static-libgfortran -### -o conftest \
++ conftest1.$ac_objext -lgfortran conftest2.$ac_objext 2>&1 >/dev/null \
++ | grep "conftest1.$ac_objext.*conftest2.$ac_objext" > conftest.cmd
++ if grep "conftest1.$ac_objext.* -Bstatic -lgfortran -Bdynamic .*conftest2.$ac_objext" \
++ conftest.cmd >/dev/null 2>&1; then
++ LQUADMATH="%{static-libquadmath:-Bstatic} -lquadmath %{static-libquadmath:-Bdynamic}"
++ elif grep "conftest1.$ac_objext.* -bstatic -lgfortran -bdynamic .*conftest2.$ac_objext" \
++ conftest.cmd >/dev/null 2>&1; then
++ LQUADMATH="%{static-libquadmath:-bstatic} -lquadmath %{static-libquadmath:-bdynamic}"
++ elif grep "conftest1.$ac_objext.* -aarchive_shared -lgfortran -adefault .*conftest2.$ac_objext" \
++ conftest.cmd >/dev/null 2>&1; then
++ LQUADMATH="%{static-libquadmath:-aarchive_shared} -lquadmath %{static-libquadmath:-adefault}"
++ elif grep "conftest1.$ac_objext.*libgfortran.a .*conftest2.$ac_objext" \
++ conftest.cmd >/dev/null 2>&1; then
++ LQUADMATH="%{static-libquadmath:libquadmath.a%s;:-lquadmath}"
++ fi
++ rm -f conftest1.$ac_objext conftest2.$ac_objext conftest conftest.cmd
++
+ dnl For static libgfortran linkage, depend on libquadmath only if needed.
+ if test "x$libgfor_cv_have_as_needed" = xyes; then
+- LIBQUADSPEC="%{static-libgfortran:$libgfor_cv_as_needed_option} -lquadmath %{static-libgfortran:$libgfor_cv_no_as_needed_option}"
++ LIBQUADSPEC="%{static-libgfortran:$libgfor_cv_as_needed_option} $LQUADMATH %{static-libgfortran:$libgfor_cv_no_as_needed_option}"
+ else
+- LIBQUADSPEC="-lquadmath"
++ LIBQUADSPEC="$LQUADMATH"
+ fi
+ if test -f ../libquadmath/libquadmath.la; then
+ LIBQUADLIB=../libquadmath/libquadmath.la
+--- libgfortran/configure.jj 2022-09-29 19:41:37.345879372 +0200
++++ libgfortran/configure 2022-09-29 19:42:59.878753212 +0200
+@@ -27301,10 +27301,30 @@ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgfor_cv_have_as_needed" >&5
+ $as_echo "$libgfor_cv_have_as_needed" >&6; }
+
++ touch conftest1.$ac_objext conftest2.$ac_objext
++ LQUADMATH=-lquadmath
++ $FC -static-libgfortran -### -o conftest \
++ conftest1.$ac_objext -lgfortran conftest2.$ac_objext 2>&1 >/dev/null \
++ | grep "conftest1.$ac_objext.*conftest2.$ac_objext" > conftest.cmd
++ if grep "conftest1.$ac_objext.* -Bstatic -lgfortran -Bdynamic .*conftest2.$ac_objext" \
++ conftest.cmd >/dev/null 2>&1; then
++ LQUADMATH="%{static-libquadmath:-Bstatic} -lquadmath %{static-libquadmath:-Bdynamic}"
++ elif grep "conftest1.$ac_objext.* -bstatic -lgfortran -bdynamic .*conftest2.$ac_objext" \
++ conftest.cmd >/dev/null 2>&1; then
++ LQUADMATH="%{static-libquadmath:-bstatic} -lquadmath %{static-libquadmath:-bdynamic}"
++ elif grep "conftest1.$ac_objext.* -aarchive_shared -lgfortran -adefault .*conftest2.$ac_objext" \
++ conftest.cmd >/dev/null 2>&1; then
++ LQUADMATH="%{static-libquadmath:-aarchive_shared} -lquadmath %{static-libquadmath:-adefault}"
++ elif grep "conftest1.$ac_objext.*libgfortran.a .*conftest2.$ac_objext" \
++ conftest.cmd >/dev/null 2>&1; then
++ LQUADMATH="%{static-libquadmath:libquadmath.a%s;:-lquadmath}"
++ fi
++ rm -f conftest1.$ac_objext conftest2.$ac_objext conftest conftest.cmd
++
+ if test "x$libgfor_cv_have_as_needed" = xyes; then
+- LIBQUADSPEC="%{static-libgfortran:$libgfor_cv_as_needed_option} -lquadmath %{static-libgfortran:$libgfor_cv_no_as_needed_option}"
++ LIBQUADSPEC="%{static-libgfortran:$libgfor_cv_as_needed_option} $LQUADMATH %{static-libgfortran:$libgfor_cv_no_as_needed_option}"
+ else
+- LIBQUADSPEC="-lquadmath"
++ LIBQUADSPEC="$LQUADMATH"
+ fi
+ if test -f ../libquadmath/libquadmath.la; then
+ LIBQUADLIB=../libquadmath/libquadmath.la
diff --git a/gcc12-testsuite-typo.patch b/gcc12-testsuite-typo.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7218da265a59ef69a0acb3a00d443ac96d3375b3
--- /dev/null
+++ b/gcc12-testsuite-typo.patch
@@ -0,0 +1,41 @@
+From 023c5b36e476976cb3b45ff32c7c64990c5a6d45 Mon Sep 17 00:00:00 2001
+From: Kewen Lin
+Date: Thu, 1 Sep 2022 00:27:11 -0500
+Subject: [PATCH] rs6000/test: Fix typo in pr86731-fwrapv-longlong.c [PR106682]
+
+Commit r12-2266 updated the scanned assembly content from
+
+ "{\mlvx\M|\mlxv\M|\mlxvd2x\M}"
+
+to
+
+ "{\mp?lxv\M|\mlxv\M|\mlxvd2x\M}"
+
+for the test case pr86731-fwrapv-longlong.c unexpectedly.
+
+It's meant to update "lxv" to "p?lxv", should leave the
+"lvx" unchanged. So fix the typo accordingly.
+
+ PR testsuite/106682
+
+gcc/testsuite/ChangeLog:
+
+ * gcc.target/powerpc/pr86731-fwrapv-longlong.c: Fix typo.
+---
+ gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c b/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
+index dcb30e1d886..018e1cf9749 100644
+--- a/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
++++ b/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
+@@ -31,5 +31,5 @@ vector signed long long splats4(void)
+
+ /* { dg-final { scan-assembler-times {\mvspltis[bhw]\M} 0 } } */
+ /* { dg-final { scan-assembler-times {\mvsl[bhwd]\M} 0 } } */
+-/* { dg-final { scan-assembler-times {\mp?lxv\M|\mlxv\M|\mlxvd2x\M|\mxxspltidp\M} 2 } } */
++/* { dg-final { scan-assembler-times {\mp?lxv\M|\mlvx\M|\mlxvd2x\M|\mxxspltidp\M} 2 } } */
+
+--
+2.31.1
+
diff --git a/isl-rh2155127.patch b/isl-rh2155127.patch
new file mode 100644
index 0000000000000000000000000000000000000000..092bddb970b065ac2b790195c8ba00624c9af75c
--- /dev/null
+++ b/isl-rh2155127.patch
@@ -0,0 +1,85 @@
+From: Sven Verdoolaege
+Date: Mon, 6 Jun 2022 12:56:02 +0000 (+0200)
+Subject: update m4/ax_prog_cc_for_build.m4
+X-Git-Tag: isl-0.25~11
+X-Git-Url: https://repo.or.cz/isl.git/commitdiff_plain/b4dcdfadc29a6c9f410a72f345f3f32725b1d38b
+
+update m4/ax_prog_cc_for_build.m4
+
+In particular, update to the latest version from the autoconf archive,
+but preserve the changes from isl-0.22.1-358-gcd42abdf2
+(m4/ax_prog_cc_for_build.m4: do not override host compiler dependency style,
+Tue Jun 9 10:54:10 2020 +0200).
+
+Signed-off-by: Sven Verdoolaege
+
+--- isl-0.24/m4/ax_prog_cc_for_build.m4.jj 2021-03-02 12:07:09.000000000 +0100
++++ isl-0.24/m4/ax_prog_cc_for_build.m4 2022-12-20 18:11:18.855777817 +0100
+@@ -32,7 +32,7 @@
+ # and this notice are preserved. This file is offered as-is, without any
+ # warranty.
+
+-#serial 18
++#serial 21
+
+ AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD])
+ AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl
+@@ -44,6 +44,8 @@ dnl Use the standard macros, but make th
+ dnl
+ pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl
+ pushdef([ac_cv_prog_cc_c89], ac_cv_build_prog_cc_c89)dnl
++pushdef([ac_cv_prog_cc_c99], ac_cv_build_prog_cc_c99)dnl
++pushdef([ac_cv_prog_cc_c11], ac_cv_build_prog_cc_c11)dnl
+ pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl
+ pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl
+ pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl
+@@ -86,7 +88,21 @@ AS_IF([test -n "$build"], [ac_build
+ [test -n "$build_alias"],[ac_build_tool_prefix="$build_alias-"])
+
+ AC_LANG_PUSH([C])
++
++dnl The pushdef([ac_cv_c_compiler_gnu], ...) currently does not cover
++dnl the use of this variable in _AC_LANG_COMPILER_GNU called by
++dnl AC_PROG_CC. Unset this cache variable temporarily as a workaround.
++was_set_c_compiler_gnu=${[ac_cv_c_compiler_gnu]+y}
++AS_IF([test ${was_set_c_compiler_gnu}],
++ [saved_c_compiler_gnu=$[ac_cv_c_compiler_gnu]
++ AS_UNSET([[ac_cv_c_compiler_gnu]])])
++
+ AC_PROG_CC
++
++dnl Restore ac_cv_c_compiler_gnu
++AS_IF([test ${was_set_c_compiler_gnu}],
++ [[ac_cv_c_compiler_gnu]=$[saved_c_compiler_gnu]])
++
+ _AC_COMPILER_EXEEXT
+ _AC_COMPILER_OBJEXT
+ AC_PROG_CPP
+--- isl-0.24/configure.jj 2021-04-26 11:13:19.000000000 +0200
++++ isl-0.24/configure 2022-12-20 18:11:36.882518568 +0100
+@@ -5002,6 +4990,13 @@ ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR
+ ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_build_c_compiler_gnu
+
++
++was_set_c_compiler_gnu=${ac_cv_c_compiler_gnu+y}
++if test ${was_set_c_compiler_gnu}; then :
++ saved_c_compiler_gnu=$ac_cv_c_compiler_gnu
++ { ac_cv_c_compiler_gnu=; unset ac_cv_c_compiler_gnu;}
++fi
++
+ ac_ext=c
+ ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
+ ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
+@@ -5728,6 +5723,11 @@ else
+ fi
+
+
++
++if test ${was_set_c_compiler_gnu}; then :
++ ac_cv_c_compiler_gnu=$saved_c_compiler_gnu
++fi
++
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+