* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2020-12-29 9:55 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2020-12-29 9:55 UTC (permalink / raw
To: gentoo-commits
commit: e71e59c25315ebda3ebf4014bb108db9dda08a27
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 18 20:57:44 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Fri Dec 18 20:57:44 2020 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=e71e59c2
10.2.0: cut 5 patchset
Single new patch:
+ 41_all_strlen-PR96758.patch: fix string comparison against literals
Bug: https://bugs.gentoo.org/757792
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/README.history | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index 8b8c475..639805d 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,4 +1,4 @@
-5 TODO
+5 18 Dec 2020
+ 41_all_strlen-PR96758.patch
4 04 Nov 2020
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2021-04-08 19:36 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2021-04-08 19:36 UTC (permalink / raw
To: gentoo-commits
commit: 50322c7c5fb8f869f45f8dd23a89f4a7c4b8ba2d
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Thu Apr 8 19:36:03 2021 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Thu Apr 8 19:36:03 2021 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=50322c7c
10.2.0: revert "port binutils fix for CET detection on i486"
The patch is not ready for prime time. Le't pull newer upstream
version a bit later.
This reverts commit 5600e4343f36e2a4925b09388d3ffe7400143b9f.
Reported-by: Worx
Bug: https://bugs.gentoo.org/777117
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/44_all_cet-i486.patch | 109 ------------------------------------
10.2.0/gentoo/README.history | 1 -
2 files changed, 110 deletions(-)
diff --git a/10.2.0/gentoo/44_all_cet-i486.patch b/10.2.0/gentoo/44_all_cet-i486.patch
deleted file mode 100644
index 956e439..0000000
--- a/10.2.0/gentoo/44_all_cet-i486.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-https://bugs.gentoo.org/777117
-
-From 267a609477624ade477994b24809a72eeb522ff1 Mon Sep 17 00:00:00 2001
-From: "H.J. Lu via Gcc-patches" <gcc-patches@gcc.gnu.org>
-Date: Sun, 14 Feb 2021 09:26:40 -0800
-Subject: [PATCH 2/2] GCC_CET_HOST_FLAGS: Check if host supports multi-byte
- NOPs
-
-Check if host supports multi-byte NOPs before enabling CET on host.
-
-config/
-
- PR binutils/27397
- * cet.m4 (GCC_CET_HOST_FLAGS): Check if host supports multi-byte
- NOPs.
-
-libiberty/
-
- PR binutils/27397
- * configure: Regenerated.
-
----
- config/cet.m4 | 19 ++++++++++++++++---
- libiberty/configure | 29 +++++++++++++++++++++++++++++
- 2 files changed, 45 insertions(+), 3 deletions(-)
-
---- a/config/cet.m4
-+++ b/config/cet.m4
-@@ -130,6 +130,18 @@ fi
- if test x$may_have_cet = xyes; then
- if test x$cross_compiling = xno; then
- AC_TRY_RUN([
-+int
-+main ()
-+{
-+ asm ("endbr32");
-+ return 0;
-+}
-+ ],
-+ [have_multi_byte_nop=yes],
-+ [have_multi_byte_nop=no])
-+ have_cet=no
-+ if test x$have_multi_byte_nop = xyes; then
-+ AC_TRY_RUN([
- static void
- foo (void)
- {
-@@ -155,9 +167,10 @@ main ()
- bar ();
- return 0;
- }
-- ],
-- [have_cet=no],
-- [have_cet=yes])
-+ ],
-+ [have_cet=no],
-+ [have_cet=yes])
-+ fi
- if test x$enable_cet = xno -a x$have_cet = xyes; then
- AC_MSG_ERROR([Intel CET must be enabled on Intel CET enabled host])
- fi
---- a/libiberty/configure
-+++ b/libiberty/configure
-@@ -5396,6 +5396,34 @@ else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-
-+int
-+main ()
-+{
-+ asm ("endbr32");
-+ return 0;
-+}
-+
-+_ACEOF
-+if ac_fn_c_try_run "$LINENO"; then :
-+ have_multi_byte_nop=yes
-+else
-+ have_multi_byte_nop=no
-+fi
-+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-+ conftest.$ac_objext conftest.beam conftest.$ac_ext
-+fi
-+
-+ have_cet=no
-+ if test x$have_multi_byte_nop = xyes; then
-+ if test "$cross_compiling" = yes; then :
-+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-+as_fn_error $? "cannot run test program while cross compiling
-+See \`config.log' for more details" "$LINENO" 5; }
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+
- static void
- foo (void)
- {
-@@ -5432,6 +5460,7 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
- fi
-
-+ fi
- if test x$enable_cet = xno -a x$have_cet = xyes; then
- as_fn_error $? "Intel CET must be enabled on Intel CET enabled host" "$LINENO" 5
- fi
---
-2.31.0
-
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index f47a108..f195ae9 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,7 +1,6 @@
7 TODO
+ 42_all_vmat-PR97236.patch
+ 43_all_vtv-slibtool.patch
- + 44_all_cet-i486.patch
6 29 Dec 2020
- 34_all_fundecl-ICE-PR95820.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2021-03-19 8:02 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2021-03-19 8:02 UTC (permalink / raw
To: gentoo-commits
commit: 5600e4343f36e2a4925b09388d3ffe7400143b9f
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 19 08:01:22 2021 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Fri Mar 19 08:01:22 2021 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=5600e434
10.2.0: port binutils fix for CET detection on i486
Reported-by: Worx
Bug: https://bugs.gentoo.org/777117
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/44_all_cet-i486.patch | 109 ++++++++++++++++++++++++++++++++++++
10.2.0/gentoo/README.history | 1 +
2 files changed, 110 insertions(+)
diff --git a/10.2.0/gentoo/44_all_cet-i486.patch b/10.2.0/gentoo/44_all_cet-i486.patch
new file mode 100644
index 0000000..956e439
--- /dev/null
+++ b/10.2.0/gentoo/44_all_cet-i486.patch
@@ -0,0 +1,109 @@
+https://bugs.gentoo.org/777117
+
+From 267a609477624ade477994b24809a72eeb522ff1 Mon Sep 17 00:00:00 2001
+From: "H.J. Lu via Gcc-patches" <gcc-patches@gcc.gnu.org>
+Date: Sun, 14 Feb 2021 09:26:40 -0800
+Subject: [PATCH 2/2] GCC_CET_HOST_FLAGS: Check if host supports multi-byte
+ NOPs
+
+Check if host supports multi-byte NOPs before enabling CET on host.
+
+config/
+
+ PR binutils/27397
+ * cet.m4 (GCC_CET_HOST_FLAGS): Check if host supports multi-byte
+ NOPs.
+
+libiberty/
+
+ PR binutils/27397
+ * configure: Regenerated.
+
+---
+ config/cet.m4 | 19 ++++++++++++++++---
+ libiberty/configure | 29 +++++++++++++++++++++++++++++
+ 2 files changed, 45 insertions(+), 3 deletions(-)
+
+--- a/config/cet.m4
++++ b/config/cet.m4
+@@ -130,6 +130,18 @@ fi
+ if test x$may_have_cet = xyes; then
+ if test x$cross_compiling = xno; then
+ AC_TRY_RUN([
++int
++main ()
++{
++ asm ("endbr32");
++ return 0;
++}
++ ],
++ [have_multi_byte_nop=yes],
++ [have_multi_byte_nop=no])
++ have_cet=no
++ if test x$have_multi_byte_nop = xyes; then
++ AC_TRY_RUN([
+ static void
+ foo (void)
+ {
+@@ -155,9 +167,10 @@ main ()
+ bar ();
+ return 0;
+ }
+- ],
+- [have_cet=no],
+- [have_cet=yes])
++ ],
++ [have_cet=no],
++ [have_cet=yes])
++ fi
+ if test x$enable_cet = xno -a x$have_cet = xyes; then
+ AC_MSG_ERROR([Intel CET must be enabled on Intel CET enabled host])
+ fi
+--- a/libiberty/configure
++++ b/libiberty/configure
+@@ -5396,6 +5396,34 @@ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
++int
++main ()
++{
++ asm ("endbr32");
++ return 0;
++}
++
++_ACEOF
++if ac_fn_c_try_run "$LINENO"; then :
++ have_multi_byte_nop=yes
++else
++ have_multi_byte_nop=no
++fi
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++ conftest.$ac_objext conftest.beam conftest.$ac_ext
++fi
++
++ have_cet=no
++ if test x$have_multi_byte_nop = xyes; then
++ if test "$cross_compiling" = yes; then :
++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++as_fn_error $? "cannot run test program while cross compiling
++See \`config.log' for more details" "$LINENO" 5; }
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
+ static void
+ foo (void)
+ {
+@@ -5432,6 +5460,7 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+ fi
+
++ fi
+ if test x$enable_cet = xno -a x$have_cet = xyes; then
+ as_fn_error $? "Intel CET must be enabled on Intel CET enabled host" "$LINENO" 5
+ fi
+--
+2.31.0
+
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index f195ae9..f47a108 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,6 +1,7 @@
7 TODO
+ 42_all_vmat-PR97236.patch
+ 43_all_vtv-slibtool.patch
+ + 44_all_cet-i486.patch
6 29 Dec 2020
- 34_all_fundecl-ICE-PR95820.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2021-03-15 22:57 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2021-03-15 22:57 UTC (permalink / raw
To: gentoo-commits
commit: ff3a446afb9e0abb87869e85826454e85ef398c3
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 15 22:55:21 2021 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Mon Mar 15 22:57:07 2021 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=ff3a446a
10.2.0: fix vtv build on slibtool
Reported-by: orbea <AT> riseup.net
Bug: https://gcc.gnu.org/PR99172
Bug: https://bugs.gentoo.org/767706
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/43_all_vtv-slibtool.patch | 62 +++++++++++++++++++++++++++++++++
10.2.0/gentoo/README.history | 1 +
2 files changed, 63 insertions(+)
diff --git a/10.2.0/gentoo/43_all_vtv-slibtool.patch b/10.2.0/gentoo/43_all_vtv-slibtool.patch
new file mode 100644
index 0000000..b5716f9
--- /dev/null
+++ b/10.2.0/gentoo/43_all_vtv-slibtool.patch
@@ -0,0 +1,62 @@
+https://bugs.gentoo.org/767706
+https://gcc.gnu.org/PR99172
+
+From c2be82058fb40f3ae891c68d185ff53e07f14f45 Mon Sep 17 00:00:00 2001
+From: Caroline Tice <cmtice@google.com>
+Date: Fri, 12 Mar 2021 07:34:36 -0800
+Subject: [PATCH] libstdc++-v3: Update VTV vars for libtool link commands
+ [PR99172]
+
+This fixes PR 99172
+
+Currently when GCC is configured with --enable-vtable-verify, the
+libstdc++-v3 Makefiles add "-fvtable-verify=std
+-Wl,-u_vtable_map_vars_start,-u_vtable_map_vars_end" to libtool link
+commands. The "-fvtable-verify=std" piece causes alternate versions of
+libtool (such as slibtool) to fail, unable to find "-lvtv" (GNU
+libtool just removes that piece).
+
+This patch updates the libstdc++-v3 Makefiles to not pass
+"-fvtable-verify=std" to the libtool link commands.
+---
+ libstdc++-v3/src/Makefile.am | 4 +++-
+ libstdc++-v3/src/Makefile.in | 3 ++-
+
+--- a/libstdc++-v3/src/Makefile.am
++++ b/libstdc++-v3/src/Makefile.am
+@@ -214,12 +214,14 @@ compatibility-condvar.o: compatibility-condvar.cc
+ # set this option because CONFIG_CXXFLAGS has to be after
+ # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
+ # as the occasion calls for it.
+-AM_CXXFLAGS = \
++AM_CXXFLAGS_PRE = \
+ -std=gnu++98 \
+ $(glibcxx_compiler_pic_flag) \
+ $(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \
+ $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS)
+
++AM_CXXFLAGS = $(filter-out -fvtable-verify=std,$(AM_CXXFLAGS_PRE))
++
+ # Libtool notes
+
+ # 1) In general, libtool expects an argument such as `--tag=CXX' when
+--- a/libstdc++-v3/src/Makefile.in
++++ b/libstdc++-v3/src/Makefile.in
+@@ -578,12 +578,13 @@ libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS) $(lt_host_flags)
+ # set this option because CONFIG_CXXFLAGS has to be after
+ # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
+ # as the occasion calls for it.
+-AM_CXXFLAGS = \
++AM_CXXFLAGS_PRE = \
+ -std=gnu++98 \
+ $(glibcxx_compiler_pic_flag) \
+ $(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \
+ $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS)
+
++AM_CXXFLAGS = $(filter-out -fvtable-verify=std,$(AM_CXXFLAGS_PRE))
+
+ # Libtool notes
+
+--
+2.30.2
+
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index 4ca261a..f195ae9 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,5 +1,6 @@
7 TODO
+ 42_all_vmat-PR97236.patch
+ + 43_all_vtv-slibtool.patch
6 29 Dec 2020
- 34_all_fundecl-ICE-PR95820.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2021-03-04 11:02 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2021-03-04 11:02 UTC (permalink / raw
To: gentoo-commits
commit: 8634da04f3f6214cc36ebfeba38c4f3fca4473be
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Thu Mar 4 10:59:30 2021 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Thu Mar 4 10:59:30 2021 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=8634da04
10.2.0: backport PR97236: fix bad use of VMAT_CONTIGUOUS
Bug: https://gcc.gnu.org/PR97236
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/42_all_vmat-PR97236.patch | 116 ++++++++++++++++++++++++++++++++
10.2.0/gentoo/README.history | 3 +
2 files changed, 119 insertions(+)
diff --git a/10.2.0/gentoo/42_all_vmat-PR97236.patch b/10.2.0/gentoo/42_all_vmat-PR97236.patch
new file mode 100644
index 0000000..5a7643c
--- /dev/null
+++ b/10.2.0/gentoo/42_all_vmat-PR97236.patch
@@ -0,0 +1,116 @@
+https://gcc.gnu.org/PR97236
+
+From 1ab88985631dd2c5a5e3b5c0dce47cf8b6ed2f82 Mon Sep 17 00:00:00 2001
+From: Matthias Klose <doko@ubuntu.com>
+Date: Tue, 6 Oct 2020 13:41:37 +0200
+Subject: [PATCH] Backport fix for PR/tree-optimization/97236 - fix bad use of
+ VMAT_CONTIGUOUS
+
+This avoids using VMAT_CONTIGUOUS with single-element interleaving
+when using V1mode vectors. Instead keep VMAT_ELEMENTWISE but
+continue to avoid load-lanes and gathers.
+
+2020-10-01 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97236
+ * tree-vect-stmts.c (get_group_load_store_type): Keep
+ VMAT_ELEMENTWISE for single-element vectors.
+
+ * gcc.dg/vect/pr97236.c: New testcase.
+---
+ gcc/testsuite/gcc.dg/vect/pr97236.c | 43 +++++++++++++++++++++++++++++
+ gcc/tree-vect-stmts.c | 20 ++++++--------
+ 2 files changed, 52 insertions(+), 11 deletions(-)
+ create mode 100644 gcc/testsuite/gcc.dg/vect/pr97236.c
+
+diff --git a/gcc/testsuite/gcc.dg/vect/pr97236.c b/gcc/testsuite/gcc.dg/vect/pr97236.c
+new file mode 100644
+index 00000000000..9d3dc20d953
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/vect/pr97236.c
+@@ -0,0 +1,43 @@
++typedef unsigned char __uint8_t;
++typedef __uint8_t uint8_t;
++typedef struct plane_t {
++ uint8_t *p_pixels;
++ int i_lines;
++ int i_pitch;
++} plane_t;
++
++typedef struct {
++ plane_t p[5];
++} picture_t;
++
++#define N 4
++
++void __attribute__((noipa))
++picture_Clone(picture_t *picture, picture_t *res)
++{
++ for (int i = 0; i < N; i++) {
++ res->p[i].p_pixels = picture->p[i].p_pixels;
++ res->p[i].i_lines = picture->p[i].i_lines;
++ res->p[i].i_pitch = picture->p[i].i_pitch;
++ }
++}
++
++int
++main()
++{
++ picture_t aaa, bbb;
++ uint8_t pixels[10] = {1, 1, 1, 1, 1, 1, 1, 1};
++
++ for (unsigned i = 0; i < N; i++)
++ aaa.p[i].p_pixels = pixels;
++
++ picture_Clone (&aaa, &bbb);
++
++ uint8_t c = 0;
++ for (unsigned i = 0; i < N; i++)
++ c += bbb.p[i].p_pixels[0];
++
++ if (c != N)
++ __builtin_abort ();
++ return 0;
++}
+diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
+index 9ace345fc5e..d8b2ff3d6ee 100644
+--- a/gcc/tree-vect-stmts.c
++++ b/gcc/tree-vect-stmts.c
+@@ -2413,25 +2413,23 @@ get_group_load_store_type (stmt_vec_info stmt_info, tree vectype, bool slp,
+ /* First cope with the degenerate case of a single-element
+ vector. */
+ if (known_eq (TYPE_VECTOR_SUBPARTS (vectype), 1U))
+- *memory_access_type = VMAT_CONTIGUOUS;
++ ;
+
+ /* Otherwise try using LOAD/STORE_LANES. */
+- if (*memory_access_type == VMAT_ELEMENTWISE
+- && (vls_type == VLS_LOAD
+- ? vect_load_lanes_supported (vectype, group_size, masked_p)
+- : vect_store_lanes_supported (vectype, group_size,
+- masked_p)))
++ else if (vls_type == VLS_LOAD
++ ? vect_load_lanes_supported (vectype, group_size, masked_p)
++ : vect_store_lanes_supported (vectype, group_size,
++ masked_p))
+ {
+ *memory_access_type = VMAT_LOAD_STORE_LANES;
+ overrun_p = would_overrun_p;
+ }
+
+ /* If that fails, try using permuting loads. */
+- if (*memory_access_type == VMAT_ELEMENTWISE
+- && (vls_type == VLS_LOAD
+- ? vect_grouped_load_supported (vectype, single_element_p,
+- group_size)
+- : vect_grouped_store_supported (vectype, group_size)))
++ else if (vls_type == VLS_LOAD
++ ? vect_grouped_load_supported (vectype, single_element_p,
++ group_size)
++ : vect_grouped_store_supported (vectype, group_size))
+ {
+ *memory_access_type = VMAT_CONTIGUOUS_PERMUTE;
+ overrun_p = would_overrun_p;
+--
+2.30.1
+
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index 48587e1..4ca261a 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,3 +1,6 @@
+7 TODO
+ + 42_all_vmat-PR97236.patch
+
6 29 Dec 2020
- 34_all_fundecl-ICE-PR95820.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2020-12-29 10:07 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2020-12-29 10:07 UTC (permalink / raw
To: gentoo-commits
commit: 3779ee05e8c035d435c62198f3b761516e63fdf0
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 29 10:05:50 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Tue Dec 29 10:05:50 2020 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=3779ee05
10.2.0: cut 6 patchset
Single dropped patch:
- 34_all_fundecl-ICE-PR95820.patch: revert PR95820 backporting
Bug: https://gcc.gnu.org/PR95820
Bug: https://bugs.gentoo.org/730406
Reported-by: Daniel Santos
Bug: https://gcc.gnu.org/PR98441
Bug: https://bugs.gentoo.org/762382
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/README.history | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index 81678b5..48587e1 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,4 +1,4 @@
-6 TODO
+6 29 Dec 2020
- 34_all_fundecl-ICE-PR95820.patch
5 18 Dec 2020
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2020-12-29 9:55 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2020-12-29 9:55 UTC (permalink / raw
To: gentoo-commits
commit: 7adab39a82fd07085f600603bdc5c440aa1c142a
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 29 09:51:52 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Tue Dec 29 09:51:52 2020 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=7adab39a
10.2.0: revert PR95820 backporting
The backport breaks parsing as seen in https://gcc.gnu.org/PR98441
Bug: https://gcc.gnu.org/PR95820
Bug: https://bugs.gentoo.org/730406
Reported-by: Daniel Santos
Bug: https://gcc.gnu.org/PR98441
Bug: https://bugs.gentoo.org/762382
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/34_all_fundecl-ICE-PR95820.patch | 25 -------------------------
10.2.0/gentoo/README.history | 3 +++
2 files changed, 3 insertions(+), 25 deletions(-)
diff --git a/10.2.0/gentoo/34_all_fundecl-ICE-PR95820.patch b/10.2.0/gentoo/34_all_fundecl-ICE-PR95820.patch
deleted file mode 100644
index e365420..0000000
--- a/10.2.0/gentoo/34_all_fundecl-ICE-PR95820.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-It's an unofficial backport of PR95820 where gcc ICEs on
-invalid syntax. As creduce frequently end up in these ICEs
-as in #730406 let's backport it to gcc-10.
-
-https://gcc.gnu.org/PR95820
-https://bugs.gentoo.org/730406
---- a/gcc/cp/decl.c
-+++ b/gcc/cp/decl.c
-@@ -12029,14 +12029,11 @@ grokdeclarator (const cp_declarator *declarator,
-
- /* Handle a late-specified return type. */
- tree late_return_type = declarator->u.function.late_return_type;
-- if (funcdecl_p
-- /* This is the case e.g. for
-- using T = auto () -> int. */
-- || inner_declarator == NULL)
-+ if (true)
- {
- if (tree auto_node = type_uses_auto (type))
- {
-- if (!late_return_type)
-+ if (!late_return_type && funcdecl_p)
- {
- if (current_class_type
- && LAMBDA_TYPE_P (current_class_type))
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index 639805d..81678b5 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,3 +1,6 @@
+6 TODO
+ - 34_all_fundecl-ICE-PR95820.patch
+
5 18 Dec 2020
+ 41_all_strlen-PR96758.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2020-12-01 19:18 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2020-12-01 19:18 UTC (permalink / raw
To: gentoo-commits
commit: 9b342fdeb8588681bb106e072cefd481a045fb21
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 1 19:16:33 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Tue Dec 1 19:16:33 2020 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=9b342fde
10.2.0: backport strncmp() folding
Reported-by: Matt Whitlock
Bug: https://bugs.gentoo.org/757792
Bug: https://gcc.gnu.org/PR96758
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/41_all_strlen-PR96758.patch | 95 +++++++++++++++++++++++++++++++
10.2.0/gentoo/README.history | 3 +
2 files changed, 98 insertions(+)
diff --git a/10.2.0/gentoo/41_all_strlen-PR96758.patch b/10.2.0/gentoo/41_all_strlen-PR96758.patch
new file mode 100644
index 0000000..fccf2de
--- /dev/null
+++ b/10.2.0/gentoo/41_all_strlen-PR96758.patch
@@ -0,0 +1,95 @@
+https://bugs.gentoo.org/757792
+
+From 0dbfa88edafbe913a7a9099246041e0190aa3948 Mon Sep 17 00:00:00 2001
+From: Jakub Jelinek <jakub@redhat.com>
+Date: Tue, 25 Aug 2020 13:47:10 +0200
+Subject: [PATCH] strlen: Fix handle_builtin_string_cmp [PR96758]
+
+The following testcase is miscompiled, because handle_builtin_string_cmp
+sees a strncmp call with constant last argument 4, where one of the strings
+has an upper bound of 5 bytes (due to it being an array of that size) and
+the other has a known string length of 1 and the result is used only in
+equality comparison.
+It is folded into __builtin_strncmp_eq (str1, str2, 4), which is
+incorrect, because that means reading 4 bytes from both strings and
+comparing that. When one of the strings has known strlen of 1, we want to
+compare just 2 bytes, not 4, as strncmp shouldn't compare any bytes beyond
+the null.
+So, the last argument to __builtin_strncmp_eq should be the minimum of the
+provided strncmp last argument and the known string length + 1 (assuming
+the other string has only a known upper bound due to array size).
+
+Besides that, I've noticed the code has been written with the intent to also
+support the case where we know exact string length of both strings (but not
+the string content, so we can't compute it at compile time). In that case,
+both cstlen1 and cstlen2 are non-negative and both arysiz1 and arysiz2 are
+negative. We wouldn't optimize that, cmpsiz would be either the strncmp
+last argument, or for strcmp the first string length, but varsiz would be
+-1 and thus cmpsiz would be never < varsiz. The patch fixes it by using the
+correct length, in that case using the minimum of the two and for strncmp
+also the last argument.
+
+2020-08-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/96758
+ * tree-ssa-strlen.c (handle_builtin_string_cmp): If both cstlen1
+ and cstlen2 are set, set cmpsiz to their minimum, otherwise use the
+ one that is set. If bound is used and smaller than cmpsiz, set cmpsiz
+ to bound. If both cstlen1 and cstlen2 are set, perform the optimization.
+
+ * gcc.dg/strcmpopt_12.c: New test.
+
+(cherry picked from commit f982a6ec9b6d98f5f37114b1d7455c54ce5056b8)
+---
+ gcc/testsuite/gcc.dg/strcmpopt_12.c | 17 +++++++++++++++++
+ gcc/tree-ssa-strlen.c | 10 +++++++++-
+ 2 files changed, 26 insertions(+), 1 deletion(-)
+ create mode 100644 gcc/testsuite/gcc.dg/strcmpopt_12.c
+
+diff --git a/gcc/testsuite/gcc.dg/strcmpopt_12.c b/gcc/testsuite/gcc.dg/strcmpopt_12.c
+new file mode 100644
+index 00000000000..d8077b62f7f
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/strcmpopt_12.c
+@@ -0,0 +1,17 @@
++/* PR tree-optimization/96758 */
++/* { dg-do run } */
++/* { dg-options "-O2" } */
++
++int v = 1;
++
++int
++main ()
++{
++ const char *s = v ? "a" : "b";
++ char x[5];
++ char y[5] = "a\0a";
++ __builtin_memcpy (x, y, sizeof (y));
++ if (__builtin_strncmp (x, s, 4) != 0)
++ __builtin_abort ();
++ return 0;
++}
+diff --git a/gcc/tree-ssa-strlen.c b/gcc/tree-ssa-strlen.c
+index 93d095e1896..b0874da5d1e 100644
+--- a/gcc/tree-ssa-strlen.c
++++ b/gcc/tree-ssa-strlen.c
+@@ -4485,7 +4485,15 @@ handle_builtin_string_cmp (gimple_stmt_iterator *gsi, const vr_values *rvals)
+ ++cstlen2;
+
+ /* The exact number of characters to compare. */
+- HOST_WIDE_INT cmpsiz = bound < 0 ? cstlen1 < 0 ? cstlen2 : cstlen1 : bound;
++ HOST_WIDE_INT cmpsiz;
++ if (cstlen1 >= 0 && cstlen2 >= 0)
++ cmpsiz = MIN (cstlen1, cstlen2);
++ else if (cstlen1 >= 0)
++ cmpsiz = cstlen1;
++ else
++ cmpsiz = cstlen2;
++ if (bound >= 0)
++ cmpsiz = MIN (cmpsiz, bound);
+ /* The size of the array in which the unknown string is stored. */
+ HOST_WIDE_INT varsiz = arysiz1 < 0 ? arysiz2 : arysiz1;
+
+--
+2.29.2
+
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index e0207e7..8b8c475 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,3 +1,6 @@
+5 TODO
+ + 41_all_strlen-PR96758.patch
+
4 04 Nov 2020
+ 40_all_ipa-to_frequency.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2020-11-04 7:47 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2020-11-04 7:47 UTC (permalink / raw
To: gentoo-commits
commit: d6e1bf3168cce755396a408032b4804a7a527d43
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Wed Nov 4 00:03:31 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Wed Nov 4 07:26:02 2020 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=d6e1bf31
10.2.0: cut 4 patchset
Single new patch:
+ 40_all_ipa-to_frequency.patch: fix ICE on empty profile merges.
Bug: https://bugs.gentoo.org/746578
Bug: https://gcc.gnu.org/PR97295
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/README.history | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index e419e62..e0207e7 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,4 +1,4 @@
-4 TODO
+4 04 Nov 2020
+ 40_all_ipa-to_frequency.patch
3 02 Oct 2020
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2020-10-15 17:32 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2020-10-15 17:32 UTC (permalink / raw
To: gentoo-commits
commit: bb31009f6bb62d2dbee6a4be9605c9286ef0df23
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Thu Oct 15 17:30:51 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Thu Oct 15 17:30:51 2020 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=bb31009f
10.2.0: backport IPA to_frequency() ICE
Reported-by: inasprecali <AT> disroot.org
Bug: https://bugs.gentoo.org/746578
Bug: https://gcc.gnu.org/PR97295
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/40_all_ipa-to_frequency.patch | 48 +++++++++++++++++++++++++++++
10.2.0/gentoo/README.history | 3 ++
2 files changed, 51 insertions(+)
diff --git a/10.2.0/gentoo/40_all_ipa-to_frequency.patch b/10.2.0/gentoo/40_all_ipa-to_frequency.patch
new file mode 100644
index 0000000..0849207
--- /dev/null
+++ b/10.2.0/gentoo/40_all_ipa-to_frequency.patch
@@ -0,0 +1,48 @@
+https://bugs.gentoo.org/746578
+https://gcc.gnu.org/PR97295
+
+From 508e2d88a4c512e8b8685cf5ba201ad48e6bb58d Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Tue, 13 Oct 2020 16:44:47 +0200
+Subject: [PATCH] IPA: fix profile handling in IRA
+
+gcc/ChangeLog:
+
+ PR ipa/97295
+ * profile-count.c (profile_count::to_frequency): Move part of
+ gcc_assert to STATIC_ASSERT.
+ * regs.h (REG_FREQ_FROM_BB): Do not use count.to_frequency for
+ a function that does not have count_max initialized.
+---
+ gcc/profile-count.c | 4 ++--
+ gcc/regs.h | 3 ++-
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+--- a/gcc/profile-count.c
++++ b/gcc/profile-count.c
+@@ -270,8 +270,8 @@ profile_count::to_frequency (struct function *fun) const
+ return BB_FREQ_MAX;
+ if (*this == zero ())
+ return 0;
+- gcc_assert (REG_BR_PROB_BASE == BB_FREQ_MAX
+- && fun->cfg->count_max.initialized_p ());
++ STATIC_ASSERT (REG_BR_PROB_BASE == BB_FREQ_MAX);
++ gcc_assert (fun->cfg->count_max.initialized_p ());
+ profile_probability prob = probability_in (fun->cfg->count_max);
+ if (!prob.initialized_p ())
+ return REG_BR_PROB_BASE;
+--- a/gcc/regs.h
++++ b/gcc/regs.h
+@@ -128,7 +128,8 @@ extern size_t reg_info_p_size;
+ or profile driven feedback is available and the function is never executed,
+ frequency is always equivalent. Otherwise rescale the basic block
+ frequency. */
+-#define REG_FREQ_FROM_BB(bb) (optimize_function_for_size_p (cfun) \
++#define REG_FREQ_FROM_BB(bb) ((optimize_function_for_size_p (cfun) \
++ || !cfun->cfg->count_max.initialized_p ()) \
+ ? REG_FREQ_MAX \
+ : ((bb)->count.to_frequency (cfun) \
+ * REG_FREQ_MAX / BB_FREQ_MAX) \
+--
+2.28.0
+
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index 86f3aae..e419e62 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,3 +1,6 @@
+4 TODO
+ + 40_all_ipa-to_frequency.patch
+
3 02 Oct 2020
U 28_all_EXTRA_OPTIONS-fstack-clash-protection.patch
+ 37_all_c-vector-init-PR96377.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2020-10-02 9:33 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2020-10-02 9:33 UTC (permalink / raw
To: gentoo-commits
commit: b4972ce62b04aafc6061836a92f0cebbadd80d7a
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Fri Oct 2 09:22:40 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Fri Oct 2 09:22:40 2020 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=b4972ce6
10.2.0: cut 3 patchset
three new patches:
+ 37_all_c-vector-init-PR96377.patch: fix vector init on arm
+ 38_all_gcov-TOPN-PR96913.patch: fix TOPN prof counters in
shared libraries
+ 39_all_ipa-prop-multispec.patch: fix multiple speculation
resolution on prof builds
Bug: https://gcc.gnu.org/PR96377
Bug: https://gcc.gnu.org/PR96913
Bug: https://bugs.gentoo.org/734006
Bug: https://gcc.gnu.org/PR96394
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/README.history | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index 5929aae..86f3aae 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,4 +1,4 @@
-3 TODO
+3 02 Oct 2020
U 28_all_EXTRA_OPTIONS-fstack-clash-protection.patch
+ 37_all_c-vector-init-PR96377.patch
+ 38_all_gcov-TOPN-PR96913.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2020-10-02 9:13 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2020-10-02 9:13 UTC (permalink / raw
To: gentoo-commits
commit: 7bf989ed8b53a13de6a6551b7f346b1dcadf5966
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Fri Oct 2 09:12:10 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Fri Oct 2 09:12:10 2020 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=7bf989ed
10.2.0: fix multiple speculation resolution on prog builds
Reported-by: Ștefan Talpalaru
Bug: https://gcc.gnu.org/PR96394
Bug: https://bugs.gentoo.org/734006
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/39_all_ipa-prop-multispec.patch | 150 ++++++++++++++++++++++++++
10.2.0/gentoo/README.history | 1 +
2 files changed, 151 insertions(+)
diff --git a/10.2.0/gentoo/39_all_ipa-prop-multispec.patch b/10.2.0/gentoo/39_all_ipa-prop-multispec.patch
new file mode 100644
index 0000000..6e19992
--- /dev/null
+++ b/10.2.0/gentoo/39_all_ipa-prop-multispec.patch
@@ -0,0 +1,150 @@
+https://gcc.gnu.org/PR96394
+https://bugs.gentoo.org/734006
+
+From 7f790f414ec38581b9bb033ab64e4ad12b9f8a4c Mon Sep 17 00:00:00 2001
+From: Martin Jambor <mjambor@suse.cz>
+Date: Thu, 1 Oct 2020 19:39:27 +0200
+Subject: [PATCH] ipa-prop: Fix multiple-target speculation resolution
+
+Hi,
+
+as the FIXME which this patch removes states, the current code does
+not work when a call with multiple speculative targets gets resolved
+through parameter tracking during inlining - it feeds the inliner an
+edge it has already dealt with. The patch makes the code which should
+prevent it aware of the possibility that that speculation can have
+more than one target now.
+
+Bootstrapped and tested and LTO bootstrapped on x86_64-linux. I did not
+try profiled LTO bootstrap because it fails even without the patch (even
+without Ada, just C, C++ and Fortran, at least commit 92f0d3d03a7 does).
+OK for trunk?
+
+Thanks,
+
+Martin
+
+gcc/ChangeLog:
+
+2020-09-30 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/96394
+ * ipa-prop.c (update_indirect_edges_after_inlining): Do not add
+ resolved speculation edges to vector of new direct edges even in
+ presence of multiple speculative direct edges for a single call.
+
+gcc/testsuite/ChangeLog:
+
+2020-09-30 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/96394
+ * gcc.dg/tree-prof/pr96394.c: New test.
+---
+ gcc/ipa-prop.c | 10 ++--
+ gcc/testsuite/gcc.dg/tree-prof/pr96394.c | 64 ++++++++++++++++++++++++
+ 2 files changed, 70 insertions(+), 4 deletions(-)
+ create mode 100644 gcc/testsuite/gcc.dg/tree-prof/pr96394.c
+
+diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
+index ea88fd3fd95..0ff04d344e1 100644
+--- a/gcc/ipa-prop.c
++++ b/gcc/ipa-prop.c
+@@ -3787,11 +3787,13 @@ update_indirect_edges_after_inlining (struct cgraph_edge *cs,
+
+ param_index = ici->param_index;
+ jfunc = ipa_get_ith_jump_func (top, param_index);
+- cgraph_node *spec_target = NULL;
+
+- /* FIXME: This may need updating for multiple calls. */
++ auto_vec<cgraph_node *, 4> spec_targets;
+ if (ie->speculative)
+- spec_target = ie->first_speculative_call_target ()->callee;
++ for (cgraph_edge *direct = ie->first_speculative_call_target ();
++ direct;
++ direct = direct->next_speculative_call_target ())
++ spec_targets.safe_push (direct->callee);
+
+ if (!opt_for_fn (node->decl, flag_indirect_inlining))
+ new_direct_edge = NULL;
+@@ -3814,7 +3816,7 @@ update_indirect_edges_after_inlining (struct cgraph_edge *cs,
+
+ /* If speculation was removed, then we need to do nothing. */
+ if (new_direct_edge && new_direct_edge != ie
+- && new_direct_edge->callee == spec_target)
++ && spec_targets.contains (new_direct_edge->callee))
+ {
+ new_direct_edge->indirect_inlining_edge = 1;
+ top = IPA_EDGE_REF (cs);
+diff --git a/gcc/testsuite/gcc.dg/tree-prof/pr96394.c b/gcc/testsuite/gcc.dg/tree-prof/pr96394.c
+new file mode 100644
+index 00000000000..4280182a7c3
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/tree-prof/pr96394.c
+@@ -0,0 +1,64 @@
++/* PR ipa/96394 */
++/* { dg-options "-O2" } */
++
++typedef struct _entry {
++ int has_next;
++ int next_ix;
++ int count;
++} entry;
++
++extern entry table[];
++
++void *
++__attribute__((noipa))
++PyErr_Format(entry * e){ return 0; }
++
++void ae(entry *);
++int h(entry *);
++int ap(entry *);
++int ag(entry *);
++
++int ag(entry *j) {
++ if (j->has_next)
++ h(&table[j->next_ix]);
++ return 0;
++}
++static int ai(entry *j, int k(entry *), int l, int m) {
++ int am = 1;
++ int ab;
++
++ /* k is either 'h' or 'ap': 50%/50% */
++ ab = k(j);
++
++ /* loop never gets executed on real data */
++ for (; j->count >= 2; am += 2)
++ if (l) {
++ entry *i = &table[am + m];
++ PyErr_Format(i);
++ }
++ return ab;
++}
++void
++__attribute__((noipa))
++bug() {
++ h(table);
++ h(table);
++}
++int h(entry *j) { return ai(j, ap, 4, 5); }
++int ap(entry *j) { return ai(j, ag, 14, 4); }
++
++int main(void)
++{
++ bug();
++}
++
++entry table[2] = {
++ { .has_next = 1
++ , .next_ix = 1
++ , .count = 0
++ },
++ { .has_next = 0
++ , .next_ix = 0
++ , .count = 0
++ },
++};
+--
+2.28.0
+
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index 6d00c5a..5929aae 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -2,6 +2,7 @@
U 28_all_EXTRA_OPTIONS-fstack-clash-protection.patch
+ 37_all_c-vector-init-PR96377.patch
+ 38_all_gcov-TOPN-PR96913.patch
+ + 39_all_ipa-prop-multispec.patch
2 23 Aug 2020
+ 33_all_lto-O0-mix-ICE-ipa-PR96291.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2020-09-10 21:38 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2020-09-10 21:38 UTC (permalink / raw
To: gentoo-commits
commit: bb00f570a7d3f1d0e4233f8d353fb9c56f3a55cc
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 10 21:37:36 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Thu Sep 10 21:37:36 2020 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=bb00f570
10.2.0: fix TOPN counters when logged from shared library
The change does not yet fix underlying problem of recursive inliner.
Bug: https://gcc.gnu.org/PR96913
Bug: https://gcc.gnu.org/PR96394
Bug: https://bugs.gentoo.org/734006
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/38_all_gcov-TOPN-PR96913.patch | 42 ++++++++++++++++++++++++++++
10.2.0/gentoo/README.history | 1 +
2 files changed, 43 insertions(+)
diff --git a/10.2.0/gentoo/38_all_gcov-TOPN-PR96913.patch b/10.2.0/gentoo/38_all_gcov-TOPN-PR96913.patch
new file mode 100644
index 0000000..5c301e4
--- /dev/null
+++ b/10.2.0/gentoo/38_all_gcov-TOPN-PR96913.patch
@@ -0,0 +1,42 @@
+https://gcc.gnu.org/PR96913
+https://gcc.gnu.org/PR96394
+https://bugs.gentoo.org/734006
+
+From ae887148e112e018bec0bab5bc15e53f2225037a Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <siarheit@google.com>
+Date: Sun, 6 Sep 2020 12:13:54 +0100
+Subject: [PATCH] gcov: fix TOPN streaming from shared libraries
+
+Before the change gcc did not stream correctly TOPN counters
+if counters belonged to a non-local shared object.
+
+As a result zero-section optimization generated TOPN sections
+in a form not recognizable by '__gcov_merge_topn'.
+
+The problem happens because in a case of multiple shared objects
+'__gcov_merge_topn' function is present in address space multiple
+times (once per each object).
+
+The fix is to never rely on function address and predicate on TOPN
+counter types.
+
+libgcc/ChangeLog:
+
+ PR gcov-profile/96913
+ * libgcov-driver.c (write_one_data): Avoid function pointer
+ comparison in TOP streaming decision.
+---
+ libgcc/libgcov-driver.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/libgcc/libgcov-driver.c
++++ b/libgcc/libgcov-driver.c
+@@ -242,7 +242,7 @@ prune_counters (struct gcov_info *gi)
+ if (gi->merge[j] == NULL)
+ continue;
+
+- if (gi->merge[j] == __gcov_merge_topn)
++ if (j == GCOV_COUNTER_V_TOPN || j == GCOV_COUNTER_V_INDIR)
+ {
+ gcc_assert (!(ci->num % GCOV_TOPN_VALUES_COUNTERS));
+ for (unsigned k = 0; k < (ci->num / GCOV_TOPN_VALUES_COUNTERS);
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index 3fbcbfd..6d00c5a 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,6 +1,7 @@
3 TODO
U 28_all_EXTRA_OPTIONS-fstack-clash-protection.patch
+ 37_all_c-vector-init-PR96377.patch
+ + 38_all_gcov-TOPN-PR96913.patch
2 23 Aug 2020
+ 33_all_lto-O0-mix-ICE-ipa-PR96291.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2020-09-03 17:12 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2020-09-03 17:12 UTC (permalink / raw
To: gentoo-commits
commit: 7ecc76113ad46206cbe6e8bdc1ca39bee97be4dd
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 3 17:11:15 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Thu Sep 3 17:11:15 2020 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=7ecc7611
10.2.0: backport PR96377 (c vector init syntax)
Bug: https://gcc.gnu.org/PR96377
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/37_all_c-vector-init-PR96377.patch | 522 +++++++++++++++++++++++
10.2.0/gentoo/README.history | 1 +
2 files changed, 523 insertions(+)
diff --git a/10.2.0/gentoo/37_all_c-vector-init-PR96377.patch b/10.2.0/gentoo/37_all_c-vector-init-PR96377.patch
new file mode 100644
index 0000000..7ef9cdd
--- /dev/null
+++ b/10.2.0/gentoo/37_all_c-vector-init-PR96377.patch
@@ -0,0 +1,522 @@
+https://gcc.gnu.org/PR96377
+
+From a216daaa30bc8949086a16e7656f2025b692d03c Mon Sep 17 00:00:00 2001
+From: Richard Sandiford <richard.sandiford@arm.com>
+Date: Mon, 3 Aug 2020 09:48:36 +0100
+Subject: [PATCH] c: Fix bogus vector initialisation error [PR96377]
+
+One of the problems in this PR was that if we had:
+
+ vector_type1 array[] = { vector_value1 };
+
+process_init_element would only treat vector_value1 as initialising
+a vector_type1 if they had the same TYPE_MAIN_VARIANT. This has
+several problems:
+
+(1) It gives confusing error messages if the vector types are
+ incompatible. (Tested by gcc.dg/pr96377-1.c.)
+
+(2) It means that we reject code that should be valid with
+ -flax-vector-conversions. (Tested by gcc.dg/pr96377-2.c.)
+
+(3) On arm and aarch64 targets, it means that we reject some
+ initializers that mix Advanced SIMD and standard GNU vectors.
+ These vectors have traditionally had different TYPE_MAIN_VARIANTs
+ because they have different mangling schemes. (Tested by
+ gcc.dg/pr96377-[3-6].c.)
+
+(4) It means that we reject SVE initializers that should be valid.
+ (Tested by gcc.target/aarch64/sve/gnu_vectors_[34].c.)
+
+(5) After r11-1741-g:31427b974ed7b7dd54e2 we reject:
+
+ arm_neon_type1 array[] = { k ^ arm_neon_value1 };
+
+ because applying the binary operator to arm_neon_value1 strips
+ the "Advanced SIMD type" attributes that were added in that patch.
+ Stripping the attributes is problematic for other reasons though,
+ so that still needs to be fixed separately.
+
+g++.target/aarch64/sve/gnu_vectors_[34].C already pass.
+
+gcc/c/
+ PR c/96377
+ * c-typeck.c (process_init_element): Split test for whether to
+ recurse into a record, union or array into...
+ (initialize_elementwise_p): ...this new function. Don't recurse
+ into a vector type if the initialization value is also a vector.
+
+gcc/testsuite/
+ PR c/96377
+ * gcc.dg/pr96377-1.c: New test.
+ * gcc.dg/pr96377-2.c: Likewise.
+ * gcc.dg/pr96377-3.c: Likewise.
+ * gcc.dg/pr96377-4.c: Likewise.
+ * gcc.dg/pr96377-5.c: Likewise.
+ * gcc.dg/pr96377-6.c: Likewise.
+ * gcc.target/aarch64/pr96377-1.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c: Likewise.
+ * g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C: Likewise.
+ * g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C: Likewise.
+
+(cherry picked from commit 7d599ad27b9bcf5165f87710f1abc64bbabd06ae)
+---
+ gcc/c/c-typeck.c | 59 ++++++++++++++-----
+ .../sve/acle/general-c++/gnu_vectors_3.C | 15 +++++
+ .../sve/acle/general-c++/gnu_vectors_4.C | 15 +++++
+ gcc/testsuite/gcc.dg/pr96377-1.c | 32 ++++++++++
+ gcc/testsuite/gcc.dg/pr96377-2.c | 31 ++++++++++
+ gcc/testsuite/gcc.dg/pr96377-3.c | 33 +++++++++++
+ gcc/testsuite/gcc.dg/pr96377-4.c | 32 ++++++++++
+ gcc/testsuite/gcc.dg/pr96377-5.c | 33 +++++++++++
+ gcc/testsuite/gcc.dg/pr96377-6.c | 32 ++++++++++
+ gcc/testsuite/gcc.target/aarch64/pr96377-1.c | 20 +++++++
+ .../sve/acle/general-c/gnu_vectors_3.c | 15 +++++
+ .../sve/acle/general-c/gnu_vectors_4.c | 15 +++++
+ 12 files changed, 317 insertions(+), 15 deletions(-)
+ create mode 100644 gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
+ create mode 100644 gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
+ create mode 100644 gcc/testsuite/gcc.dg/pr96377-1.c
+ create mode 100644 gcc/testsuite/gcc.dg/pr96377-2.c
+ create mode 100644 gcc/testsuite/gcc.dg/pr96377-3.c
+ create mode 100644 gcc/testsuite/gcc.dg/pr96377-4.c
+ create mode 100644 gcc/testsuite/gcc.dg/pr96377-5.c
+ create mode 100644 gcc/testsuite/gcc.dg/pr96377-6.c
+ create mode 100644 gcc/testsuite/gcc.target/aarch64/pr96377-1.c
+ create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
+ create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
+
+diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
+index eb4b641e6bb..58762f10a93 100644
+--- a/gcc/c/c-typeck.c
++++ b/gcc/c/c-typeck.c
+@@ -9910,6 +9910,47 @@ output_pending_init_elements (int all, struct obstack * braced_init_obstack)
+ goto retry;
+ }
+ \f
++/* Expression VALUE coincides with the start of type TYPE in a braced
++ initializer. Return true if we should treat VALUE as initializing
++ the first element of TYPE, false if we should treat it as initializing
++ TYPE as a whole.
++
++ If the initializer is clearly invalid, the question becomes:
++ which choice gives the best error message? */
++
++static bool
++initialize_elementwise_p (tree type, tree value)
++{
++ if (type == error_mark_node || value == error_mark_node)
++ return false;
++
++ gcc_checking_assert (TYPE_MAIN_VARIANT (type) == type);
++
++ tree value_type = TREE_TYPE (value);
++ if (value_type == error_mark_node)
++ return false;
++
++ /* GNU vectors can be initialized elementwise. However, treat any
++ kind of vector value as initializing the vector type as a whole,
++ regardless of whether the value is a GNU vector. Such initializers
++ are valid if and only if they would have been valid in a non-braced
++ initializer like:
++
++ TYPE foo = VALUE;
++
++ so recursing into the vector type would be at best confusing or at
++ worst wrong. For example, when -flax-vector-conversions is in effect,
++ it's possible to initialize a V8HI from a V4SI, even though the vectors
++ have different element types and different numbers of elements. */
++ if (gnu_vector_type_p (type))
++ return !VECTOR_TYPE_P (value_type);
++
++ if (AGGREGATE_TYPE_P (type))
++ return type != TYPE_MAIN_VARIANT (value_type);
++
++ return false;
++}
++
+ /* Add one non-braced element to the current constructor level.
+ This adjusts the current position within the constructor's type.
+ This may also start or terminate implicit levels
+@@ -10089,11 +10130,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
+ /* Otherwise, if we have come to a subaggregate,
+ and we don't have an element of its type, push into it. */
+ else if (value.value != NULL_TREE
+- && value.value != error_mark_node
+- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype
+- && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE
+- || fieldcode == UNION_TYPE
+- || gnu_vector_type_p (fieldtype)))
++ && initialize_elementwise_p (fieldtype, value.value))
+ {
+ push_init_level (loc, 1, braced_init_obstack);
+ continue;
+@@ -10181,11 +10218,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
+ /* Otherwise, if we have come to a subaggregate,
+ and we don't have an element of its type, push into it. */
+ else if (value.value != NULL_TREE
+- && value.value != error_mark_node
+- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype
+- && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE
+- || fieldcode == UNION_TYPE
+- || gnu_vector_type_p (fieldtype)))
++ && initialize_elementwise_p (fieldtype, value.value))
+ {
+ push_init_level (loc, 1, braced_init_obstack);
+ continue;
+@@ -10224,11 +10257,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
+ /* Otherwise, if we have come to a subaggregate,
+ and we don't have an element of its type, push into it. */
+ else if (value.value != NULL_TREE
+- && value.value != error_mark_node
+- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != elttype
+- && (eltcode == RECORD_TYPE || eltcode == ARRAY_TYPE
+- || eltcode == UNION_TYPE
+- || gnu_vector_type_p (elttype)))
++ && initialize_elementwise_p (elttype, value.value))
+ {
+ push_init_level (loc, 1, braced_init_obstack);
+ continue;
+diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
+new file mode 100644
+index 00000000000..e607d58d726
+--- /dev/null
++++ b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
+@@ -0,0 +1,15 @@
++/* { dg-options "-msve-vector-bits=256" } */
++
++#include <arm_sve.h>
++
++typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
++typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
++
++void
++f (svuint8_t sve_u1, svint8_t sve_s1,
++ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
++{
++ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
++ gnu_uint8_t arr2[] = { gnu_s1 }; // { dg-error "cannot convert" }
++ gnu_uint8_t arr3[] = { sve_s1 }; // { dg-error "cannot convert" }
++}
+diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
+new file mode 100644
+index 00000000000..ac4e0d12ff8
+--- /dev/null
++++ b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
+@@ -0,0 +1,15 @@
++/* { dg-options "-msve-vector-bits=256 -flax-vector-conversions" } */
++
++#include <arm_sve.h>
++
++typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
++typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
++
++void
++f (svuint8_t sve_u1, svint8_t sve_s1,
++ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
++{
++ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
++ gnu_uint8_t arr2[] = { gnu_s1 };
++ gnu_uint8_t arr3[] = { sve_s1 };
++}
+diff --git a/gcc/testsuite/gcc.dg/pr96377-1.c b/gcc/testsuite/gcc.dg/pr96377-1.c
+new file mode 100644
+index 00000000000..2bf3f816331
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/pr96377-1.c
+@@ -0,0 +1,32 @@
++/* { dg-options "-fno-lax-vector-conversions" } */
++/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
++
++typedef int v4si __attribute__((vector_size(16)));
++typedef short v8hi __attribute__((vector_size(16)));
++
++struct s { v8hi x; v4si y; };
++union u1 { v8hi x; v4si y; };
++union u2 { v4si s; v8hi y; };
++
++void
++foo (v4si i, v8hi h)
++{
++ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__vector" }
++ struct s x2 = { h, h }; // { dg-error "incompatible types" }
++ struct s x3 = { i, h }; // { dg-error "incompatible types" }
++ struct s x4 = { h, i };
++
++ union u1 y1 = { i }; // { dg-error "incompatible types" }
++ union u1 y2 = { h };
++ union u2 y3 = { i };
++ union u2 y4 = { h }; // { dg-error "incompatible types" }
++
++ v4si z1[] = { i, i };
++ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
++ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
++ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
++ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
++ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
++ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
++ v8hi z8[] = { h, h };
++}
+diff --git a/gcc/testsuite/gcc.dg/pr96377-2.c b/gcc/testsuite/gcc.dg/pr96377-2.c
+new file mode 100644
+index 00000000000..f58b06d9076
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/pr96377-2.c
+@@ -0,0 +1,31 @@
++/* { dg-options "-flax-vector-conversions" } */
++
++typedef int v4si __attribute__((vector_size(16)));
++typedef short v8hi __attribute__((vector_size(16)));
++
++struct s { v8hi x; v4si y; };
++union u1 { v8hi x; v4si y; };
++union u2 { v4si s; v8hi y; };
++
++void
++foo (v4si i, v8hi h)
++{
++ struct s x1 = { i, i };
++ struct s x2 = { h, h };
++ struct s x3 = { i, h };
++ struct s x4 = { h, i };
++
++ union u1 y1 = { i };
++ union u1 y2 = { h };
++ union u2 y3 = { i };
++ union u2 y4 = { h };
++
++ v4si z1[] = { i, i };
++ v4si z2[] = { i, h };
++ v4si z3[] = { h, i };
++ v4si z4[] = { h, h };
++ v8hi z5[] = { i, i };
++ v8hi z6[] = { i, h };
++ v8hi z7[] = { h, i };
++ v8hi z8[] = { h, h };
++}
+diff --git a/gcc/testsuite/gcc.dg/pr96377-3.c b/gcc/testsuite/gcc.dg/pr96377-3.c
+new file mode 100644
+index 00000000000..66dce01f277
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/pr96377-3.c
+@@ -0,0 +1,33 @@
++/* { dg-do compile { target aarch64*-*-* } } */
++/* { dg-options "-fno-lax-vector-conversions" } */
++/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
++
++typedef int v4si __attribute__((vector_size(16)));
++typedef short v8hi __attribute__((vector_size(16)));
++
++struct s { v8hi x; v4si y; };
++union u1 { v8hi x; v4si y; };
++union u2 { v4si s; v8hi y; };
++
++void
++foo (__Int32x4_t i, __Int16x8_t h)
++{
++ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__vector" }
++ struct s x2 = { h, h }; // { dg-error "incompatible types" }
++ struct s x3 = { i, h }; // { dg-error "incompatible types" }
++ struct s x4 = { h, i };
++
++ union u1 y1 = { i }; // { dg-error "incompatible types" }
++ union u1 y2 = { h };
++ union u2 y3 = { i };
++ union u2 y4 = { h }; // { dg-error "incompatible types" }
++
++ v4si z1[] = { i, i };
++ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
++ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
++ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
++ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
++ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
++ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
++ v8hi z8[] = { h, h };
++}
+diff --git a/gcc/testsuite/gcc.dg/pr96377-4.c b/gcc/testsuite/gcc.dg/pr96377-4.c
+new file mode 100644
+index 00000000000..f7aaf490031
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/pr96377-4.c
+@@ -0,0 +1,32 @@
++/* { dg-do compile { target aarch64*-*-* } } */
++/* { dg-options "-flax-vector-conversions" } */
++
++typedef int v4si __attribute__((vector_size(16)));
++typedef short v8hi __attribute__((vector_size(16)));
++
++struct s { v8hi x; v4si y; };
++union u1 { v8hi x; v4si y; };
++union u2 { v4si s; v8hi y; };
++
++void
++foo (__Int32x4_t i, __Int16x8_t h)
++{
++ struct s x1 = { i, i };
++ struct s x2 = { h, h };
++ struct s x3 = { i, h };
++ struct s x4 = { h, i };
++
++ union u1 y1 = { i };
++ union u1 y2 = { h };
++ union u2 y3 = { i };
++ union u2 y4 = { h };
++
++ v4si z1[] = { i, i };
++ v4si z2[] = { i, h };
++ v4si z3[] = { h, i };
++ v4si z4[] = { h, h };
++ v8hi z5[] = { i, i };
++ v8hi z6[] = { i, h };
++ v8hi z7[] = { h, i };
++ v8hi z8[] = { h, h };
++}
+diff --git a/gcc/testsuite/gcc.dg/pr96377-5.c b/gcc/testsuite/gcc.dg/pr96377-5.c
+new file mode 100644
+index 00000000000..3d0c24befa6
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/pr96377-5.c
+@@ -0,0 +1,33 @@
++/* { dg-do compile { target aarch64*-*-* } } */
++/* { dg-options "-fno-lax-vector-conversions" } */
++/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
++
++typedef int v4si __attribute__((vector_size(16)));
++typedef short v8hi __attribute__((vector_size(16)));
++
++struct s { __Int16x8_t x; __Int32x4_t y; };
++union u1 { __Int16x8_t x; __Int32x4_t y; };
++union u2 { __Int32x4_t s; __Int16x8_t y; };
++
++void
++foo (v4si i, v8hi h)
++{
++ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__Int16x8_t" }
++ struct s x2 = { h, h }; // { dg-error "incompatible types" }
++ struct s x3 = { i, h }; // { dg-error "incompatible types" }
++ struct s x4 = { h, i };
++
++ union u1 y1 = { i }; // { dg-error "incompatible types" }
++ union u1 y2 = { h };
++ union u2 y3 = { i };
++ union u2 y4 = { h }; // { dg-error "incompatible types" }
++
++ v4si z1[] = { i, i };
++ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
++ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
++ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
++ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
++ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
++ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
++ v8hi z8[] = { h, h };
++}
+diff --git a/gcc/testsuite/gcc.dg/pr96377-6.c b/gcc/testsuite/gcc.dg/pr96377-6.c
+new file mode 100644
+index 00000000000..165327fa292
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/pr96377-6.c
+@@ -0,0 +1,32 @@
++/* { dg-do compile { target aarch64*-*-* } } */
++/* { dg-options "-flax-vector-conversions" } */
++
++typedef int v4si __attribute__((vector_size(16)));
++typedef short v8hi __attribute__((vector_size(16)));
++
++struct s { __Int16x8_t x; __Int32x4_t y; };
++union u1 { __Int16x8_t x; __Int32x4_t y; };
++union u2 { __Int32x4_t s; __Int16x8_t y; };
++
++void
++foo (v4si i, v8hi h)
++{
++ struct s x1 = { i, i };
++ struct s x2 = { h, h };
++ struct s x3 = { i, h };
++ struct s x4 = { h, i };
++
++ union u1 y1 = { i };
++ union u1 y2 = { h };
++ union u2 y3 = { i };
++ union u2 y4 = { h };
++
++ v4si z1[] = { i, i };
++ v4si z2[] = { i, h };
++ v4si z3[] = { h, i };
++ v4si z4[] = { h, h };
++ v8hi z5[] = { i, i };
++ v8hi z6[] = { i, h };
++ v8hi z7[] = { h, i };
++ v8hi z8[] = { h, h };
++}
+diff --git a/gcc/testsuite/gcc.target/aarch64/pr96377-1.c b/gcc/testsuite/gcc.target/aarch64/pr96377-1.c
+new file mode 100644
+index 00000000000..51e3e36edfc
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/aarch64/pr96377-1.c
+@@ -0,0 +1,20 @@
++/* { dg-options "" } */
++
++#include <arm_neon.h>
++
++struct aegis128_state {
++ uint8x16_t v[5];
++};
++
++void foo(const void *key, const void *iv, const void *const0, const void *const1)
++{
++ uint8x16_t k = vld1q_u8(key);
++ uint8x16_t kiv = k ^ vld1q_u8(iv);
++ struct aegis128_state st = {{
++ kiv,
++ vld1q_u8(const1),
++ vld1q_u8(const0),
++ k ^ vld1q_u8(const0),
++ k ^ vld1q_u8(const1),
++ }};
++}
+diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
+new file mode 100644
+index 00000000000..0f1a2b0e46b
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
+@@ -0,0 +1,15 @@
++/* { dg-options "-msve-vector-bits=256" } */
++
++#include <arm_sve.h>
++
++typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
++typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
++
++void
++f (svuint8_t sve_u1, svint8_t sve_s1,
++ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
++{
++ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
++ gnu_uint8_t arr2[] = { gnu_s1 }; // { dg-error "incompatible types" }
++ gnu_uint8_t arr3[] = { sve_s1 }; // { dg-error "incompatible types" }
++}
+diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
+new file mode 100644
+index 00000000000..ac4e0d12ff8
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
+@@ -0,0 +1,15 @@
++/* { dg-options "-msve-vector-bits=256 -flax-vector-conversions" } */
++
++#include <arm_sve.h>
++
++typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
++typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
++
++void
++f (svuint8_t sve_u1, svint8_t sve_s1,
++ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
++{
++ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
++ gnu_uint8_t arr2[] = { gnu_s1 };
++ gnu_uint8_t arr3[] = { sve_s1 };
++}
+--
+2.28.0
+
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index ab2ac3c..3fbcbfd 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,5 +1,6 @@
3 TODO
U 28_all_EXTRA_OPTIONS-fstack-clash-protection.patch
+ + 37_all_c-vector-init-PR96377.patch
2 23 Aug 2020
+ 33_all_lto-O0-mix-ICE-ipa-PR96291.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2020-08-23 9:14 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2020-08-23 9:14 UTC (permalink / raw
To: gentoo-commits
commit: 9bba1f72a9210743fddf664b716b5cf288132922
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Sun Aug 23 09:11:31 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Sun Aug 23 09:11:31 2020 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=9bba1f72
10.2.0: cut 2 patchset
Four new patches:
+ 33_all_lto-O0-mix-ICE-ipa-PR96291.patch: fix -O0 crash for ipa/lto
+ 34_all_fundecl-ICE-PR95820.patch: fix ICE on invalid templates
+ 35_all_ipa-fix-bit-CP.patch: fix bad code generation in ipa bit constprop
+ 36_all_ipa-fix-bit-CP-p2.patch: part 2 of previous patch
Bug: https://bugs.gentoo.org/733482
Bug: https://gcc.gnu.org/PR96291
Bug: https://bugs.gentoo.org/730406
Bug: https://gcc.gnu.org/PR95820
Bug: https://bugs.gentoo.org/736685
Bug: https://gcc.gnu.org/PR96482
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/README.history | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index 8be215b..1bfe565 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,4 +1,4 @@
-2 TODO
+2 23 Aug 2020
+ 33_all_lto-O0-mix-ICE-ipa-PR96291.patch
+ 34_all_fundecl-ICE-PR95820.patch
+ 35_all_ipa-fix-bit-CP.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2020-08-17 21:26 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2020-08-17 21:26 UTC (permalink / raw
To: gentoo-commits
commit: 0d98cab225ecb321bc18d894951bb2d3b7b45bd0
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Mon Aug 17 21:26:01 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Mon Aug 17 21:26:01 2020 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=0d98cab2
10.2.0: backport ipa-cp bit fix, part 2 (PR/96482)
Reported-by: Johannes Hirte
Bug: https://bugs.gentoo.org/736685
Bug: https://gcc.gnu.org/PR96482
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/36_all_ipa-fix-bit-CP-p2.patch | 80 ++++++++++++++++++++++++++++
10.2.0/gentoo/README.history | 1 +
2 files changed, 81 insertions(+)
diff --git a/10.2.0/gentoo/36_all_ipa-fix-bit-CP-p2.patch b/10.2.0/gentoo/36_all_ipa-fix-bit-CP-p2.patch
new file mode 100644
index 0000000..1183b57
--- /dev/null
+++ b/10.2.0/gentoo/36_all_ipa-fix-bit-CP-p2.patch
@@ -0,0 +1,80 @@
+https://bugs.gentoo.org/736685
+https://gcc.gnu.org/PR96482
+
+From 4a2371497e9bed64aa4f46169127f3ea8e32e726 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Thu, 13 Aug 2020 09:38:41 +0200
+Subject: [PATCH] ipa: fix ICE in get_default_value
+
+The patch aligns code with ipcp_bits_lattice::set_to_constant
+where we properly mask m_value with m_mask. The same should
+be done here.
+
+gcc/ChangeLog:
+
+ PR ipa/96482
+ * ipa-cp.c (ipcp_bits_lattice::meet_with_1): Mask m_value
+ with m_mask.
+
+gcc/testsuite/ChangeLog:
+
+ PR ipa/96482
+ * gcc.dg/ipa/pr96482-2.c: New test.
+
+(cherry picked from commit f91770216eade83f068528c1e4f00e2ac3b23044)
+---
+ gcc/ipa-cp.c | 2 +-
+ gcc/testsuite/gcc.dg/ipa/pr96482-2.c | 33 ++++++++++++++++++++++++++++
+ 2 files changed, 34 insertions(+), 1 deletion(-)
+ create mode 100644 gcc/testsuite/gcc.dg/ipa/pr96482-2.c
+
+--- a/gcc/ipa-cp.c
++++ b/gcc/ipa-cp.c
+@@ -1047,7 +1047,7 @@ ipcp_bits_lattice::meet_with_1 (widest_int value, widest_int mask,
+
+ widest_int old_mask = m_mask;
+ m_mask = (m_mask | mask) | (m_value ^ value);
+- m_value &= value;
++ m_value &= ~m_mask;
+
+ if (wi::sext (m_mask, precision) == -1)
+ return set_to_bottom ();
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/ipa/pr96482-2.c
+@@ -0,0 +1,33 @@
++/* PR ipa/96482 */
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++int i2c_transfer();
++void _dev_err();
++
++struct i2c_msg {
++ char bufaddr;
++ int adapterdev;
++} wdt87xx_i2c_xfer_client;
++
++int wdt87xx_i2c_xfer_client_0, wdt87xx_i2c_xfer_rxdata, wdt87xx_get_string_str_idx;
++
++void
++static wdt87xx_i2c_xfer(void *txdata, unsigned rxlen) {
++ struct i2c_msg msgs[] = {wdt87xx_i2c_xfer_client_0, rxlen,
++ wdt87xx_i2c_xfer_rxdata};
++ int error = i2c_transfer(wdt87xx_i2c_xfer_client, msgs);
++ _dev_err("", __func__, error);
++}
++static void wdt87xx_get_string(unsigned len) {
++ char tx_buf[] = {wdt87xx_get_string_str_idx, 3};
++ int rx_len = len + 2;
++ wdt87xx_i2c_xfer(tx_buf, rx_len);
++}
++
++void
++wdt87xx_ts_probe_tx_buf() {
++ wdt87xx_get_string(34);
++ wdt87xx_get_string(8);
++ wdt87xx_i2c_xfer(wdt87xx_ts_probe_tx_buf, 2);
++}
+--
+2.28.0
+
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index 49edda3..8be215b 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -2,6 +2,7 @@
+ 33_all_lto-O0-mix-ICE-ipa-PR96291.patch
+ 34_all_fundecl-ICE-PR95820.patch
+ 35_all_ipa-fix-bit-CP.patch
+ + 36_all_ipa-fix-bit-CP-p2.patch
1 23 July 2020
+ 01_all_default-fortify-source.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2020-08-13 9:04 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2020-08-13 9:04 UTC (permalink / raw
To: gentoo-commits
commit: c446f6f37e5a5f0867527acdb0b78333e3b70822
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 13 08:39:49 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Thu Aug 13 08:39:49 2020 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=c446f6f3
10.2.0:backport ipa-cp bit fix (PR/96482)
Reported-by: Johannes Hirte
Bug: https://bugs.gentoo.org/736685
Bug: https://gcc.gnu.org/PR96482
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/35_all_ipa-fix-bit-CP.patch | 145 ++++++++++++++++++++++++++++++
10.2.0/gentoo/README.history | 1 +
2 files changed, 146 insertions(+)
diff --git a/10.2.0/gentoo/35_all_ipa-fix-bit-CP.patch b/10.2.0/gentoo/35_all_ipa-fix-bit-CP.patch
new file mode 100644
index 0000000..34a1fe0
--- /dev/null
+++ b/10.2.0/gentoo/35_all_ipa-fix-bit-CP.patch
@@ -0,0 +1,145 @@
+https://bugs.gentoo.org/736685
+https://gcc.gnu.org/PR96482
+
+From 66780083a0e79e5cb7c3acc8665aa47be4084a67 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Wed, 12 Aug 2020 09:21:51 +0200
+Subject: [PATCH] ipa: fix bit CPP when combined with IPA bit CP
+
+As mentioned in the PR, let's consider the following example:
+
+int
+__attribute__((noinline))
+foo(int arg)
+{
+ if (arg == 3)
+ return 1;
+ if (arg == 4)
+ return 123;
+
+ __builtin_unreachable ();
+}
+
+during WPA we find all calls of the function
+(yes the call with value 5 is UBSAN):
+
+ Node: foo/0:
+ param [0]: 5 [loc_time: 4, loc_size: 2, prop_time: 0, prop_size: 0]
+ 3 [loc_time: 3, loc_size: 3, prop_time: 0, prop_size: 0]
+ ctxs: VARIABLE
+ Bits: value = 0x5, mask = 0x6
+
+in LTRANS we have the following VRP info:
+
+ # RANGE [3, 3] NONZERO 3
+
+when we AND masks in get_default_value we end up with 6 & 3 = 2 (0x010).
+That means the only second (least significant bit) is unknown and
+value (5 = 0x101) & ~mask gives us either 7 (0x111) or 5 (0x101).
+
+That's why if (arg_2(D) == 3) gets optimized to false.
+
+gcc/ChangeLog:
+
+ PR ipa/96482
+ * ipa-cp.c (ipcp_bits_lattice::meet_with_1): Drop value bits
+ for bits that are unknown.
+ (ipcp_bits_lattice::set_to_constant): Likewise.
+ * tree-ssa-ccp.c (get_default_value): Add sanity check that
+ IPA CP bit info has all bits set to zero in bits that
+ are unknown.
+
+gcc/testsuite/ChangeLog:
+
+ PR ipa/96482
+ * gcc.dg/ipa/pr96482.c: New test.
+
+(cherry picked from commit d58f078ce2d53e5dab6b3d0d5f960504268e1894)
+---
+ gcc/ipa-cp.c | 3 +-
+ gcc/testsuite/gcc.dg/ipa/pr96482.c | 44 ++++++++++++++++++++++++++++++
+ gcc/tree-ssa-ccp.c | 3 ++
+ 3 files changed, 49 insertions(+), 1 deletion(-)
+ create mode 100644 gcc/testsuite/gcc.dg/ipa/pr96482.c
+
+--- a/gcc/ipa-cp.c
++++ b/gcc/ipa-cp.c
+@@ -1010,7 +1010,7 @@ ipcp_bits_lattice::set_to_constant (widest_int value, widest_int mask)
+ {
+ gcc_assert (top_p ());
+ m_lattice_val = IPA_BITS_CONSTANT;
+- m_value = value;
++ m_value = wi::bit_and (wi::bit_not (mask), value);
+ m_mask = mask;
+ return true;
+ }
+@@ -1047,6 +1047,7 @@ ipcp_bits_lattice::meet_with_1 (widest_int value, widest_int mask,
+
+ widest_int old_mask = m_mask;
+ m_mask = (m_mask | mask) | (m_value ^ value);
++ m_value &= value;
+
+ if (wi::sext (m_mask, precision) == -1)
+ return set_to_bottom ();
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/ipa/pr96482.c
+@@ -0,0 +1,44 @@
++/* PR ipa/96482 */
++/* { dg-do run } */
++/* { dg-options "-O2 -flto" } */
++/* { dg-require-effective-target lto } */
++
++int
++__attribute__((noinline))
++foo(int arg)
++{
++ if (arg == 3)
++ return 1;
++ if (arg == 4)
++ return 123;
++
++ __builtin_unreachable ();
++}
++
++int
++__attribute__((noinline))
++baz(int x)
++{
++ if (x != 0)
++ return foo(3); /* called */
++
++ return 1;
++}
++
++int
++__attribute__((noinline))
++bar(int x)
++{
++ if (x == 0)
++ return foo(5); /* not executed */
++
++ return 1;
++}
++
++int main(int argc, char **argv)
++{
++ if (bar(argc) != baz(argc))
++ __builtin_abort ();
++
++ return 0;
++}
+--- a/gcc/tree-ssa-ccp.c
++++ b/gcc/tree-ssa-ccp.c
+@@ -306,6 +306,9 @@ get_default_value (tree var)
+ {
+ val.lattice_val = CONSTANT;
+ val.value = value;
++ widest_int ipa_value = wi::to_widest (value);
++ /* Unknown bits from IPA CP must be equal to zero. */
++ gcc_assert (wi::bit_and (ipa_value, mask) == 0);
+ val.mask = mask;
+ if (nonzero_bits != -1)
+ val.mask &= extend_mask (nonzero_bits,
+--
+2.28.0
+
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index 7cde6a3..49edda3 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,6 +1,7 @@
2 TODO
+ 33_all_lto-O0-mix-ICE-ipa-PR96291.patch
+ 34_all_fundecl-ICE-PR95820.patch
+ + 35_all_ipa-fix-bit-CP.patch
1 23 July 2020
+ 01_all_default-fortify-source.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2020-07-27 6:50 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2020-07-27 6:50 UTC (permalink / raw
To: gentoo-commits
commit: fafbb4148cb5c2cf7e1ae02679240cba43e95992
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 27 06:48:54 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Mon Jul 27 06:48:54 2020 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=fafbb414
10.2.0: backport ICE on invalid function declarations
Reported-by: Jack Ostroff
Bug: https://bugs.gentoo.org/730406
Bug: https://gcc.gnu.org/PR95820
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/34_all_fundecl-ICE-PR95820.patch | 25 +++++++++++++++++++++++++
10.2.0/gentoo/README.history | 1 +
2 files changed, 26 insertions(+)
diff --git a/10.2.0/gentoo/34_all_fundecl-ICE-PR95820.patch b/10.2.0/gentoo/34_all_fundecl-ICE-PR95820.patch
new file mode 100644
index 0000000..e365420
--- /dev/null
+++ b/10.2.0/gentoo/34_all_fundecl-ICE-PR95820.patch
@@ -0,0 +1,25 @@
+It's an unofficial backport of PR95820 where gcc ICEs on
+invalid syntax. As creduce frequently end up in these ICEs
+as in #730406 let's backport it to gcc-10.
+
+https://gcc.gnu.org/PR95820
+https://bugs.gentoo.org/730406
+--- a/gcc/cp/decl.c
++++ b/gcc/cp/decl.c
+@@ -12029,14 +12029,11 @@ grokdeclarator (const cp_declarator *declarator,
+
+ /* Handle a late-specified return type. */
+ tree late_return_type = declarator->u.function.late_return_type;
+- if (funcdecl_p
+- /* This is the case e.g. for
+- using T = auto () -> int. */
+- || inner_declarator == NULL)
++ if (true)
+ {
+ if (tree auto_node = type_uses_auto (type))
+ {
+- if (!late_return_type)
++ if (!late_return_type && funcdecl_p)
+ {
+ if (current_class_type
+ && LAMBDA_TYPE_P (current_class_type))
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index 1c0fff9..7cde6a3 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,5 +1,6 @@
2 TODO
+ 33_all_lto-O0-mix-ICE-ipa-PR96291.patch
+ + 34_all_fundecl-ICE-PR95820.patch
1 23 July 2020
+ 01_all_default-fortify-source.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2020-07-26 10:35 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2020-07-26 10:35 UTC (permalink / raw
To: gentoo-commits
commit: 8f9b6cda0cd772b5155d52a5effabd04fd656a18
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 26 10:34:45 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Sun Jul 26 10:34:45 2020 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=8f9b6cda
10.2.0: fix IPA ICE on LTO -O0/-O2 mix
Bug: https://bugs.gentoo.org/733482
Bug: https://gcc.gnu.org/PR96291
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
.../gentoo/33_all_lto-O0-mix-ICE-ipa-PR96291.patch | 46 ++++++++++++++++++++++
10.2.0/gentoo/README.history | 3 ++
2 files changed, 49 insertions(+)
diff --git a/10.2.0/gentoo/33_all_lto-O0-mix-ICE-ipa-PR96291.patch b/10.2.0/gentoo/33_all_lto-O0-mix-ICE-ipa-PR96291.patch
new file mode 100644
index 0000000..b163721
--- /dev/null
+++ b/10.2.0/gentoo/33_all_lto-O0-mix-ICE-ipa-PR96291.patch
@@ -0,0 +1,46 @@
+https://bugs.gentoo.org/733482
+https://gcc.gnu.org/PR96291
+
+From 03810b1b2dec00575b2bcb579eb3d7c34bd176bc Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <siarheit@google.com>
+Date: Sat, 25 Jul 2020 19:26:50 +0100
+Subject: [PATCH] ipa/96291: don't crash on unoptimized lto functions
+
+In PR ipa/96291 the test contained an SCC with one
+unoptimized function. This tricked ipa-cp into NULL dereference.
+
+has_undead_caller_from_outside_scc_p() did not take into account
+that unoptimized funtions don't have IPA summary analysis. and
+dereferenced NULL pointer causing an ICE.
+
+ PR ipa/96291
+ * ipa-cp.c (has_undead_caller_from_outside_scc_p): Consider
+ unoptimized callers as undead.
+---
+ gcc/ipa-cp.c | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+--- a/gcc/ipa-cp.c
++++ b/gcc/ipa-cp.c
+@@ -5666,9 +5666,15 @@ has_undead_caller_from_outside_scc_p (struct cgraph_node *node,
+ && cs->caller->call_for_symbol_thunks_and_aliases
+ (has_undead_caller_from_outside_scc_p, NULL, true))
+ return true;
+- else if (!ipa_edge_within_scc (cs)
+- && !IPA_NODE_REF (cs->caller)->node_dead)
+- return true;
++ else if (!ipa_edge_within_scc (cs))
++ {
++ /* Unoptimized callers don't have IPA information.
++ Conservatively assume callers are undead. */
++ if (!IPA_NODE_REF (cs->caller))
++ return true;
++ if (!IPA_NODE_REF (cs->caller)->node_dead)
++ return true;
++ }
+ return false;
+ }
+
+--
+2.27.0
+
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index 4009f39..1c0fff9 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -1,3 +1,6 @@
+2 TODO
+ + 33_all_lto-O0-mix-ICE-ipa-PR96291.patch
+
1 23 July 2020
+ 01_all_default-fortify-source.patch
+ 02_all_default-warn-format-security.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/
@ 2020-07-23 8:42 Sergei Trofimovich
0 siblings, 0 replies; 20+ messages in thread
From: Sergei Trofimovich @ 2020-07-23 8:42 UTC (permalink / raw
To: gentoo-commits
commit: 064908a8c0b537e980721c7996d276e1901924db
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 23 08:15:06 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Thu Jul 23 08:15:06 2020 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=064908a8
10.2.0: cut 1 patchset
Based on gcc-10.1.0 patchset. The only change is upstreamed backportes:
- 29_all_fix-float-hang-PR95118.patch
- 31_all_ctor-range-PR95241.patch
- 33_all_avx512-scalar-PR95528.patch
- 34_all_cet-cross-x86.patch
- 35_all_ICE-array-subscript-PR95508.patch
- 38_all_ICE-ipa-fnsummary-PR96130.patch
Bug: https://gcc.gnu.org/PR96190
Bug: https://bugs.gentoo.org/619706
Bug: https://gcc.gnu.org/PR96130
Bug: https://bugs.gentoo.org/733246
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
10.2.0/gentoo/01_all_default-fortify-source.patch | 22 ++++
.../02_all_default-warn-format-security.patch | 22 ++++
.../gentoo/03_all_default-warn-trampolines.patch | 13 ++
10.2.0/gentoo/04_all_nossp-on-nostdlib.patch | 27 ++++
10.2.0/gentoo/05_all_alpha-mieee-default.patch | 39 ++++++
10.2.0/gentoo/06_all_ia64_note.GNU-stack.patch | 92 +++++++++++++
.../gentoo/07_all_i386_libgcc_note.GNU-stack.patch | 54 ++++++++
10.2.0/gentoo/08_all_libiberty-asprintf.patch | 18 +++
10.2.0/gentoo/09_all_libiberty-pic.patch | 10 ++
10.2.0/gentoo/10_all_nopie-all-flags.patch | 18 +++
10.2.0/gentoo/11_all_sh-drop-sysroot-suffix.patch | 32 +++++
10.2.0/gentoo/12_all_ia64-TEXTREL.patch | 22 ++++
.../gentoo/13_all_disable-systemtap-switch.patch | 122 ++++++++++++++++++
10.2.0/gentoo/14_all_m68k-textrel-on-libgcc.patch | 93 ++++++++++++++
10.2.0/gentoo/15_all_respect-build-cxxflags.patch | 39 ++++++
10.2.0/gentoo/16_all_libgfortran-Werror.patch | 20 +++
10.2.0/gentoo/17_all_libgomp-Werror.patch | 20 +++
10.2.0/gentoo/18_all_libitm-Werror.patch | 19 +++
10.2.0/gentoo/19_all_libatomic-Werror.patch | 19 +++
10.2.0/gentoo/20_all_libbacktrace-Werror.patch | 17 +++
10.2.0/gentoo/21_all_libsanitizer-Werror.patch | 17 +++
10.2.0/gentoo/22_all_libstdcxx-no-vtv.patch | 61 +++++++++
10.2.0/gentoo/23_all_disable-riscv32-ABIs.patch | 53 ++++++++
10.2.0/gentoo/24_all_default_ssp-buffer-size.patch | 14 ++
10.2.0/gentoo/25_all_hppa-faster-synth_mult.patch | 44 +++++++
10.2.0/gentoo/26_all_libcpp-ar.patch | 143 +++++++++++++++++++++
| 26 ++++
| 65 ++++++++++
.../29_all_lto-intl-workaround-PR95194.patch | 20 +++
10.2.0/gentoo/30_all_plugin-objdump.patch | 34 +++++
10.2.0/gentoo/31_all_fno-delayed-branch.patch | 40 ++++++
10.2.0/gentoo/32_all_sparc_pie_TEXTREL.patch | 49 +++++++
10.2.0/gentoo/README.history | 33 +++++
33 files changed, 1317 insertions(+)
diff --git a/10.2.0/gentoo/01_all_default-fortify-source.patch b/10.2.0/gentoo/01_all_default-fortify-source.patch
new file mode 100644
index 0000000..d307474
--- /dev/null
+++ b/10.2.0/gentoo/01_all_default-fortify-source.patch
@@ -0,0 +1,22 @@
+Taken Debian's patch and removed docs matches:
+ https://salsa.debian.org/toolchain-team/gcc.git
+Also see https://bugs.gentoo.org/621036 where
+initially Gentoo used too complicated macro.
+
+# DP: Turn on -D_FORTIFY_SOURCE=2 by default for C, C++, ObjC, ObjC++,
+# DP: if the optimization level is > 0
+--- a/gcc/c-family/c-cppbuiltin.c
++++ b/gcc/c-family/c-cppbuiltin.c
+@@ -951,6 +951,12 @@ c_cpp_builtins (cpp_reader *pfile)
+ builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0);
+ builtin_define_with_value ("__USER_LABEL_PREFIX__", user_label_prefix, 0);
+
++#if !defined(ACCEL_COMPILER)
++ /* Fortify Source enabled by default for optimization levels > 0 */
++ if (optimize)
++ builtin_define_with_int_value ("_FORTIFY_SOURCE", 2);
++#endif
++
+ /* Misc. */
+ if (flag_gnu89_inline)
+ cpp_define (pfile, "__GNUC_GNU_INLINE__");
diff --git a/10.2.0/gentoo/02_all_default-warn-format-security.patch b/10.2.0/gentoo/02_all_default-warn-format-security.patch
new file mode 100644
index 0000000..f809abd
--- /dev/null
+++ b/10.2.0/gentoo/02_all_default-warn-format-security.patch
@@ -0,0 +1,22 @@
+Enable -Wformat and -Wformat-security by default.
+
+--- a/gcc/c-family/c.opt 2016-03-23 18:51:56.000000000 +0100
++++ b/gcc/c-family/c.opt 2016-04-28 23:45:54.063351272 +0200
+@@ -459,7 +459,7 @@ C ObjC C++ ObjC++ Var(warn_format_nonlit
+ Warn about format strings that are not literals.
+
+ Wformat-security
+-C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
++C ObjC C++ ObjC++ Var(warn_format_security) Init(1) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
+ Warn about possible security problems with format functions.
+
+ Wformat-signedness
+@@ -475,7 +475,7 @@ C ObjC C++ ObjC++ Var(warn_format_zero_l
+ Warn about zero-length formats.
+
+ Wformat=
+-C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 2)
++C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Init(1) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 2)
+ Warn about printf/scanf/strftime/strfmon format string anomalies.
+
+ Wignored-qualifiers
diff --git a/10.2.0/gentoo/03_all_default-warn-trampolines.patch b/10.2.0/gentoo/03_all_default-warn-trampolines.patch
new file mode 100644
index 0000000..7a644cb
--- /dev/null
+++ b/10.2.0/gentoo/03_all_default-warn-trampolines.patch
@@ -0,0 +1,13 @@
+Enable -Wtrampolines by default.
+
+--- a/gcc/common.opt
++++ b/gcc/common.opt
+@@ -712,7 +712,7 @@ Common Var(warn_system_headers) Warning
+ Do not suppress warnings from system headers.
+
+ Wtrampolines
+-Common Var(warn_trampolines) Warning
++Common Var(warn_trampolines) Init(1) Warning
+ Warn whenever a trampoline is generated.
+
+ Wtype-limits
diff --git a/10.2.0/gentoo/04_all_nossp-on-nostdlib.patch b/10.2.0/gentoo/04_all_nossp-on-nostdlib.patch
new file mode 100644
index 0000000..648d712
--- /dev/null
+++ b/10.2.0/gentoo/04_all_nossp-on-nostdlib.patch
@@ -0,0 +1,27 @@
+Disable ssp on -nostdlib, -nodefaultlibs and -ffreestanding
+
+https://bugs.gentoo.org/484714
+--- a/gcc/gcc.c 2017-07-04 09:15:57.740793000 +0200
++++ b/gcc/gcc.c 2018-03-02 13:58:44.387741114 +0100
+@@ -857,6 +857,12 @@ proper position among the other output f
+ #define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G"
+ #endif
+
++#ifdef ENABLE_DEFAULT_SSP
++#define NO_SSP_SPEC "%{nostdlib|nodefaultlibs|ffreestanding:-fno-stack-protector} "
++#else
++#define NO_SSP_SPEC ""
++#endif
++
+ #ifndef LINK_SSP_SPEC
+ #ifdef TARGET_LIBC_PROVIDES_SSP
+ #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
+@@ -1131,7 +1148,7 @@ static const char *cc1_options =
+ %{-version:--version}\
+ %{-help=*:--help=%*}\
+ %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}}\
+- %{fsyntax-only:-o %j} %{-param*}\
++ %{fsyntax-only:-o %j} %{-param*} " NO_SSP_SPEC "\
+ %{coverage:-fprofile-arcs -ftest-coverage}\
+ %{fprofile-arcs|fprofile-generate*|coverage:\
+ %{!fprofile-update=singel:\
diff --git a/10.2.0/gentoo/05_all_alpha-mieee-default.patch b/10.2.0/gentoo/05_all_alpha-mieee-default.patch
new file mode 100644
index 0000000..b266d77
--- /dev/null
+++ b/10.2.0/gentoo/05_all_alpha-mieee-default.patch
@@ -0,0 +1,39 @@
+Set the default behavior on alpha to use -mieee since the large majority of
+time we want this (bad/weird things can happen with packages built without
+it).
+
+To satisfy those people who may not want -mieee forced on them all the time,
+we also provide -mno-ieee.
+
+Patch by Mike Frysinger <vapier@gentoo.org>
+
+Note: upstream doesn't want to take this due to long standing behavior, and
+because it'd make behavior across OS's inconsistent:
+ https://gcc.gnu.org/ml/gcc-patches/2003-07/msg02144.html
+
+This makes sense for upstream, but Gentoo is more concerned about packages
+behaving the same across arches under Linux.
+
+--- a/gcc/config/alpha/alpha.h
++++ b/gcc/config/alpha/alpha.h
+@@ -96,6 +96,8 @@ along with GCC; see the file COPYING3. If not see
+ while (0)
+ #endif
+
++#define CPP_SPEC "%{!no-ieee:-mieee}"
++
+ /* Run-time compilation parameters selecting different hardware subsets. */
+
+ /* Which processor to schedule for. The cpu attribute defines a list that
+--- a/gcc/config/alpha/alpha.opt
++++ b/gcc/config/alpha/alpha.opt
+@@ -35,7 +35,7 @@
+ Request IEEE-conformant math library routines (OSF/1).
+
+ mieee
+-Target Report RejectNegative Mask(IEEE)
++Target Report Mask(IEEE)
+ Emit IEEE-conformant code, without inexact exceptions.
+
+ mieee-with-inexact
+
diff --git a/10.2.0/gentoo/06_all_ia64_note.GNU-stack.patch b/10.2.0/gentoo/06_all_ia64_note.GNU-stack.patch
new file mode 100644
index 0000000..66a787e
--- /dev/null
+++ b/10.2.0/gentoo/06_all_ia64_note.GNU-stack.patch
@@ -0,0 +1,92 @@
+http://gcc.gnu.org/PR21098
+
+
+2004-09-20 Jakub Jelinek <jakub@redhat.com>
+
+ * config/rs6000/ppc-asm.h: Add .note.GNU-stack section also
+ on ppc64-linux.
+
+ * config/ia64/lib1funcs.asm: Add .note.GNU-stack section on
+ ia64-linux.
+ * config/ia64/crtbegin.asm: Likewise.
+ * config/ia64/crtend.asm: Likewise.
+ * config/ia64/crti.asm: Likewise.
+ * config/ia64/crtn.asm: Likewise.
+
+2004-05-14 Jakub Jelinek <jakub@redhat.com>
+
+ * config/ia64/linux.h (TARGET_ASM_FILE_END): Define.
+
+
+--- a/gcc/config/ia64/linux.h
++++ b/gcc/config/ia64/linux.h
+@@ -24,6 +24,8 @@ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
++#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
++
+ /* This is for -profile to use -lc_p instead of -lc. */
+ #undef CC1_SPEC
+ #define CC1_SPEC "%{profile:-p} %{G*}"
+--- a/gcc/config/rs6000/ppc-asm.h
++++ b/gcc/config/rs6000/ppc-asm.h
+@@ -352,7 +352,7 @@ GLUE(.L,name): \
+ #endif
+ #endif
+
+-#if defined __linux__ && !defined __powerpc64__
++#if defined __linux__
+ .section .note.GNU-stack
+ .previous
+ #endif
+--- a/libgcc/config/ia64/crtbegin.S
++++ b/libgcc/config/ia64/crtbegin.S
+@@ -252,3 +252,7 @@ __do_jv_register_classes:
+ .weak __cxa_finalize
+ #endif
+ .weak _Jv_RegisterClasses
++
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+--- a/libgcc/config/ia64/crtend.S
++++ b/libgcc/config/ia64/crtend.S
+@@ -119,3 +119,6 @@ __do_global_ctors_aux:
+
+ br.ret.sptk.many rp
+ .endp __do_global_ctors_aux
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+--- a/libgcc/config/ia64/crti.S
++++ b/libgcc/config/ia64/crti.S
+@@ -49,5 +49,8 @@ _fini:
+ .save rp, r33
+ mov r33 = b0
+ .body
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+
+ # end of crti.S
+--- a/libgcc/config/ia64/crtn.S
++++ b/libgcc/config/ia64/crtn.S
+@@ -39,5 +39,8 @@
+ .restore sp
+ mov r12 = r35
+ br.ret.sptk.many b0
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+
+ # end of crtn.S
+--- a/libgcc/config/ia64/lib1funcs.S
++++ b/libgcc/config/ia64/lib1funcs.S
+@@ -793,3 +793,6 @@ __floattitf:
+ .endp __floattitf
+ #endif
+ #endif
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
diff --git a/10.2.0/gentoo/07_all_i386_libgcc_note.GNU-stack.patch b/10.2.0/gentoo/07_all_i386_libgcc_note.GNU-stack.patch
new file mode 100644
index 0000000..7f74945
--- /dev/null
+++ b/10.2.0/gentoo/07_all_i386_libgcc_note.GNU-stack.patch
@@ -0,0 +1,54 @@
+--- a/libgcc/config/i386/resms64.h 2018-01-03 11:03:58.000000000 +0100
++++ b/libgcc/config/i386/resms64.h 2018-05-01 12:59:48.942833419 +0200
+@@ -57,3 +57,6 @@ MS2SYSV_STUB_END(resms64_17)
+ MS2SYSV_STUB_END(resms64_18)
+
+ #endif /* __x86_64__ */
++#if defined(__linux__) && defined(__ELF__)
++.section .note.GNU-stack,"",%progbits
++#endif
+--- a/libgcc/config/i386/resms64f.h 2018-01-03 11:03:58.000000000 +0100
++++ b/libgcc/config/i386/resms64f.h 2018-05-01 13:00:23.422832853 +0200
+@@ -55,3 +55,6 @@ MS2SYSV_STUB_END(resms64f_16)
+ MS2SYSV_STUB_END(resms64f_17)
+
+ #endif /* __x86_64__ */
++#if defined(__linux__) && defined(__ELF__)
++.section .note.GNU-stack,"",%progbits
++#endif
+--- a/libgcc/config/i386/resms64fx.h 2018-02-26 20:46:34.000000000 +0100
++++ b/libgcc/config/i386/resms64fx.h 2018-05-01 13:06:49.682826518 +0200
+@@ -62,3 +62,6 @@ MS2SYSV_STUB_END(resms64fx_16)
+ MS2SYSV_STUB_END(resms64fx_17)
+
+ #endif /* __x86_64__ */
++#if defined(__linux__) && defined(__ELF__)
++.section .note.GNU-stack,"",%progbits
++#endif
+--- a/libgcc/config/i386/resms64x.h 2018-02-26 20:46:34.000000000 +0100
++++ b/libgcc/config/i386/resms64x.h 2018-05-01 13:07:21.702825993 +0200
+@@ -63,3 +63,6 @@ MS2SYSV_STUB_END(resms64x_17)
+ MS2SYSV_STUB_END(resms64x_18)
+
+ #endif /* __x86_64__ */
++#if defined(__linux__) && defined(__ELF__)
++.section .note.GNU-stack,"",%progbits
++#endif
+--- a/libgcc/config/i386/savms64.h 2018-01-03 11:03:58.000000000 +0100
++++ b/libgcc/config/i386/savms64.h 2018-05-01 13:07:48.952825546 +0200
+@@ -57,3 +57,6 @@ MS2SYSV_STUB_END(savms64_17)
+ MS2SYSV_STUB_END(savms64_18)
+
+ #endif /* __x86_64__ */
++#if defined(__linux__) && defined(__ELF__)
++.section .note.GNU-stack,"",%progbits
++#endif
+--- a/libgcc/config/i386/savms64f.h 2018-01-03 11:03:58.000000000 +0100
++++ b/libgcc/config/i386/savms64f.h 2018-05-01 13:08:30.082824871 +0200
+@@ -55,3 +55,6 @@ MS2SYSV_STUB_END(savms64f_16)
+ MS2SYSV_STUB_END(savms64f_17)
+
+ #endif /* __x86_64__ */
++#if defined(__linux__) && defined(__ELF__)
++.section .note.GNU-stack,"",%progbits
++#endif
diff --git a/10.2.0/gentoo/08_all_libiberty-asprintf.patch b/10.2.0/gentoo/08_all_libiberty-asprintf.patch
new file mode 100644
index 0000000..bee0c4c
--- /dev/null
+++ b/10.2.0/gentoo/08_all_libiberty-asprintf.patch
@@ -0,0 +1,18 @@
+2008-07-25 Magnus Granberg <zorry@ume.nu>
+
+ * include/libiberty.h (asprintf): Don't declare if defined as a macro
+
+--- a/include/libiberty.h
++++ b/include/libiberty.h
+@@ -609,8 +609,11 @@ extern int pwait (int, int *, int);
+ /* Like sprintf but provides a pointer to malloc'd storage, which must
+ be freed by the caller. */
+
++/* asprintf may be declared as a macro by glibc with __USE_FORTIFY_LEVEL. */
++#ifndef asprintf
+ extern int asprintf (char **, const char *, ...) ATTRIBUTE_PRINTF_2;
+ #endif
++#endif
+
+ #if !HAVE_DECL_VASPRINTF
+ /* Like vsprintf but provides a pointer to malloc'd storage, which
diff --git a/10.2.0/gentoo/09_all_libiberty-pic.patch b/10.2.0/gentoo/09_all_libiberty-pic.patch
new file mode 100644
index 0000000..b6160a7
--- /dev/null
+++ b/10.2.0/gentoo/09_all_libiberty-pic.patch
@@ -0,0 +1,10 @@
+--- a/libiberty/Makefile.in
++++ b/libiberty/Makefile.in
+@@ -246,6 +246,7 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS)
+ $(AR) $(AR_FLAGS) $(TARGETLIB) \
+ $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
+ $(RANLIB) $(TARGETLIB); \
++ cp $(TARGETLIB) ../ ; \
+ cd ..; \
+ else true; fi
+
diff --git a/10.2.0/gentoo/10_all_nopie-all-flags.patch b/10.2.0/gentoo/10_all_nopie-all-flags.patch
new file mode 100644
index 0000000..48536e6
--- /dev/null
+++ b/10.2.0/gentoo/10_all_nopie-all-flags.patch
@@ -0,0 +1,18 @@
+We need to pass NO_PIE_CFLAGS to ALL_* so gcc don't fail when
+we compile it with older gcc and pie.
+
+--- a/gcc/Makefile.in 2015-06-25 19:18:12.000000000 +0200
++++ b/gcc/Makefile.in 2016-04-22 00:12:54.029178860 +0200
+@@ -991,10 +991,10 @@ ALL_CXXFLAGS = $(T_CFLAGS) $(CFLAGS-$@)
+ ALL_CPPFLAGS = $(INCLUDES) $(CPPFLAGS)
+
+ # This is the variable to use when using $(COMPILER).
+-ALL_COMPILERFLAGS = $(ALL_CXXFLAGS)
++ALL_COMPILERFLAGS = $(NO_PIE_CFLAGS) $(ALL_CXXFLAGS)
+
+ # This is the variable to use when using $(LINKER).
+-ALL_LINKERFLAGS = $(ALL_CXXFLAGS)
++ALL_LINKERFLAGS = $(NO_PIE_CFLAGS) $(ALL_CXXFLAGS)
+
+ # Build and host support libraries.
+
diff --git a/10.2.0/gentoo/11_all_sh-drop-sysroot-suffix.patch b/10.2.0/gentoo/11_all_sh-drop-sysroot-suffix.patch
new file mode 100644
index 0000000..3dadd4c
--- /dev/null
+++ b/10.2.0/gentoo/11_all_sh-drop-sysroot-suffix.patch
@@ -0,0 +1,32 @@
+From 5eeeff19bb4978a8d3c0d53bc81744bc25d82993 Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <slyfox@gentoo.org>
+Date: Sat, 14 Apr 2018 13:07:39 +0100
+Subject: [PATCH] gcc/config.gcc: sh-*: Disable sysroot-suffix (PR42947)
+
+sh-* is a multilib target. It is also one of 2 sysroot-prefix targets.
+Unfortunately two options do not mix well. Attempt to use default
+multilib flavour always prepends sysroot-prefix.
+
+Bug: https://bugs.gentoo.org/511548
+Bug: https://gcc.gnu.org/PR42947
+Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
+---
+ gcc/config.gcc | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/gcc/config.gcc b/gcc/config.gcc
+index 55c314afdbd..c320f24f123 100644
+--- a/gcc/config.gcc
++++ b/gcc/config.gcc
+@@ -2866,8 +2866,6 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
+ if test x${enable_incomplete_targets} = xyes ; then
+ tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
+ fi
+- tm_file="$tm_file ./sysroot-suffix.h"
+- tmake_file="$tmake_file t-sysroot-suffix"
+ ;;
+ sh-*-rtems*)
+ tmake_file="${tmake_file} sh/t-sh sh/t-rtems"
+--
+2.17.0
+
diff --git a/10.2.0/gentoo/12_all_ia64-TEXTREL.patch b/10.2.0/gentoo/12_all_ia64-TEXTREL.patch
new file mode 100644
index 0000000..706dbe5
--- /dev/null
+++ b/10.2.0/gentoo/12_all_ia64-TEXTREL.patch
@@ -0,0 +1,22 @@
+Fix textrels on -rdynamic binaries:
+Bug: https://gcc.gnu.org/PR84553
+Bug: https://bugs.gentoo.org/566118
+--- a/gcc/config/ia64/ia64.c
++++ a/gcc/config/ia64/ia64.c
+@@ -10838,12 +10838,14 @@ ia64_hpux_reloc_rw_mask (void)
+
+ /* For others, relax this so that relocations to local data goes in
+ read-only segments, but we still cannot allow global relocations
+- in read-only segments. */
++ in read-only segments. Except that use of -rdynamic at link time
++ may make any local data global, so we can't allow local data in
++ read-only segments either. */
+
+ static int
+ ia64_reloc_rw_mask (void)
+ {
+- return flag_pic ? 3 : 2;
++ return flag_pic ? 3 : 3;
+ }
+
+ /* Return the section to use for X. The only special thing we do here
diff --git a/10.2.0/gentoo/13_all_disable-systemtap-switch.patch b/10.2.0/gentoo/13_all_disable-systemtap-switch.patch
new file mode 100644
index 0000000..d5ae8d0
--- /dev/null
+++ b/10.2.0/gentoo/13_all_disable-systemtap-switch.patch
@@ -0,0 +1,122 @@
+From bb510ed7ea82093c924b027489db6f92250a85b3 Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <slyfox@gentoo.org>
+Date: Sat, 12 May 2018 12:56:46 +0100
+Subject: [PATCH] gcc/configure.ac: add --disable-systemtap switch
+
+Before the change systemtap probes were enabled
+if target headers had sys/sdt.h at ./configure time.
+
+After the change explicitly ask to enable or disable
+for probe support and not rely on automagic dependency
+discovery.
+
+Bug: https://bugs.gentoo.org/654748
+Bug: https://gcc.gnu.org/bugzilla/PR61257
+Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
+---
+ gcc/configure | 34 ++++++++++++++++++++++++++--------
+ gcc/configure.ac | 30 ++++++++++++++++++++++--------
+ 2 files changed, 48 insertions(+), 16 deletions(-)
+
+diff --git a/gcc/configure b/gcc/configure
+index 3dcf7752b..c2049f117 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -988,6 +988,7 @@ enable_gnu_unique_object
+ enable_linker_build_id
+ enable_libssp
+ enable_default_ssp
++enable_systemtap
+ with_long_double_128
+ with_long_double_format
+ with_gc
+@@ -1740,6 +1741,7 @@ Optional Features:
+ compiler will always pass --build-id to linker
+ --enable-libssp enable linking against libssp
+ --enable-default-ssp enable Stack Smashing Protection as default
++ --disable-systemtap enable systemtap static probe points [default=auto]
+ --enable-maintainer-mode
+ enable make rules and dependencies not useful (and
+ sometimes confusing) to the casual installer
+@@ -29330,17 +29332,33 @@ fi
+
+ # Test for <sys/sdt.h> on the target.
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking sys/sdt.h in the target C library" >&5
++
++# Check whether --enable-systemtap was given.
++if test "${enable_systemtap+set}" = set; then :
++ enableval=$enable_systemtap; enable_systemtap=$enableval
++else
++ enable_systemtap=auto
++fi
++
++
++if test x$enable_systemtap != xno; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking sys/sdt.h in the target C library" >&5
+ $as_echo_n "checking sys/sdt.h in the target C library... " >&6; }
+-have_sys_sdt_h=no
+-if test -f $target_header_dir/sys/sdt.h; then
+- have_sys_sdt_h=yes
++ have_sys_sdt_h=no
++ if test -f $target_header_dir/sys/sdt.h ; then
++ have_sys_sdt_h=yes
+
+ $as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
+
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_sys_sdt_h" >&5
++ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_sys_sdt_h" >&5
+ $as_echo "$have_sys_sdt_h" >&6; }
++ if test x$enable_systemtap = xyes ; then
++ if test x$have_sys_sdt_h = xno ; then
++ as_fn_error $? "sys/sdt.h was not found" "$LINENO" 5
++ fi
++ fi
++fi
+
+ # Check if TFmode long double should be used by default or not.
+ # Some glibc targets used DFmode long double, but with glibc 2.4
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -6000,14 +6000,28 @@ AC_SUBST([enable_default_ssp])
+
+ # Test for <sys/sdt.h> on the target.
+ GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
+-AC_MSG_CHECKING(sys/sdt.h in the target C library)
+-have_sys_sdt_h=no
+-if test -f $target_header_dir/sys/sdt.h; then
+- have_sys_sdt_h=yes
+- AC_DEFINE(HAVE_SYS_SDT_H, 1,
+- [Define if your target C library provides sys/sdt.h])
+-fi
+-AC_MSG_RESULT($have_sys_sdt_h)
++
++AC_ARG_ENABLE(systemtap,
++[AS_HELP_STRING([--disable-systemtap],
++ [enable systemtap static probe points [default=auto]])],
++ enable_systemtap=$enableval,
++ enable_systemtap=auto)
++
++if test x$enable_systemtap != xno; then
++ AC_MSG_CHECKING(sys/sdt.h in the target C library)
++ have_sys_sdt_h=no
++ if test -f $target_header_dir/sys/sdt.h ; then
++ have_sys_sdt_h=yes
++ AC_DEFINE(HAVE_SYS_SDT_H, 1,
++ [Define if your target C library provides sys/sdt.h])
++ fi
++ AC_MSG_RESULT($have_sys_sdt_h)
++ if test x$enable_systemtap = xyes ; then
++ if test x$have_sys_sdt_h = xno ; then
++ AC_MSG_ERROR([sys/sdt.h was not found])
++ fi
++ fi
++fi
+
+ # Check if TFmode long double should be used by default or not.
+ # Some glibc targets used DFmode long double, but with glibc 2.4
+--
+2.17.0
+
diff --git a/10.2.0/gentoo/14_all_m68k-textrel-on-libgcc.patch b/10.2.0/gentoo/14_all_m68k-textrel-on-libgcc.patch
new file mode 100644
index 0000000..a2aa100
--- /dev/null
+++ b/10.2.0/gentoo/14_all_m68k-textrel-on-libgcc.patch
@@ -0,0 +1,93 @@
+https://gcc.gnu.org/PR86224
+
+From 1d89df42bdaf0745fd2a0d294471ac16f0553707 Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <slyfox@gentoo.org>
+Date: Sat, 28 Jul 2018 11:33:27 +0100
+Subject: [PATCH] libgcc: m68k: avoid absolute relocation in shared library
+
+Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
+---
+ libgcc/config/m68k/lb1sf68.S | 19 ++++++++++++++-----
+ 1 file changed, 14 insertions(+), 5 deletions(-)
+
+diff --git a/libgcc/config/m68k/lb1sf68.S b/libgcc/config/m68k/lb1sf68.S
+index 325a7c17d9b..16c6dc3f5a7 100644
+--- a/libgcc/config/m68k/lb1sf68.S
++++ b/libgcc/config/m68k/lb1sf68.S
+@@ -435,7 +435,10 @@ $_exception_handler:
+ .text
+ FUNC(__mulsi3)
+ .globl SYM (__mulsi3)
++ .globl SYM (__mulsi3_internal)
++ .hidden SYM (__mulsi3_internal)
+ SYM (__mulsi3):
++SYM (__mulsi3_internal):
+ movew sp@(4), d0 /* x0 -> d0 */
+ muluw sp@(10), d0 /* x0*y1 */
+ movew sp@(6), d1 /* x1 -> d1 */
+@@ -458,7 +461,10 @@ SYM (__mulsi3):
+ .text
+ FUNC(__udivsi3)
+ .globl SYM (__udivsi3)
++ .globl SYM (__udivsi3_internal)
++ .hidden SYM (__udivsi3_internal)
+ SYM (__udivsi3):
++SYM (__udivsi3_internal):
+ #ifndef __mcoldfire__
+ movel d2, sp@-
+ movel sp@(12), d1 /* d1 = divisor */
+@@ -534,7 +540,10 @@ L2: subql IMM (1),d4
+ .text
+ FUNC(__divsi3)
+ .globl SYM (__divsi3)
++ .globl SYM (__divsi3_internal)
++ .hidden SYM (__divsi3_internal)
+ SYM (__divsi3):
++SYM (__divsi3_internal):
+ movel d2, sp@-
+
+ moveq IMM (1), d2 /* sign of result stored in d2 (=1 or =-1) */
+@@ -557,7 +566,7 @@ L1: movel sp@(8), d0 /* d0 = dividend */
+
+ L2: movel d1, sp@-
+ movel d0, sp@-
+- PICCALL SYM (__udivsi3) /* divide abs(dividend) by abs(divisor) */
++ PICCALL SYM (__udivsi3_internal) /* divide abs(dividend) by abs(divisor) */
+ addql IMM (8), sp
+
+ tstb d2
+@@ -577,13 +586,13 @@ SYM (__umodsi3):
+ movel sp@(4), d0 /* d0 = dividend */
+ movel d1, sp@-
+ movel d0, sp@-
+- PICCALL SYM (__udivsi3)
++ PICCALL SYM (__udivsi3_internal)
+ addql IMM (8), sp
+ movel sp@(8), d1 /* d1 = divisor */
+ #ifndef __mcoldfire__
+ movel d1, sp@-
+ movel d0, sp@-
+- PICCALL SYM (__mulsi3) /* d0 = (a/b)*b */
++ PICCALL SYM (__mulsi3_internal) /* d0 = (a/b)*b */
+ addql IMM (8), sp
+ #else
+ mulsl d1,d0
+@@ -603,13 +612,13 @@ SYM (__modsi3):
+ movel sp@(4), d0 /* d0 = dividend */
+ movel d1, sp@-
+ movel d0, sp@-
+- PICCALL SYM (__divsi3)
++ PICCALL SYM (__divsi3_internal)
+ addql IMM (8), sp
+ movel sp@(8), d1 /* d1 = divisor */
+ #ifndef __mcoldfire__
+ movel d1, sp@-
+ movel d0, sp@-
+- PICCALL SYM (__mulsi3) /* d0 = (a/b)*b */
++ PICCALL SYM (__mulsi3_internal) /* d0 = (a/b)*b */
+ addql IMM (8), sp
+ #else
+ mulsl d1,d0
+--
+2.18.0
+
diff --git a/10.2.0/gentoo/15_all_respect-build-cxxflags.patch b/10.2.0/gentoo/15_all_respect-build-cxxflags.patch
new file mode 100644
index 0000000..14139ea
--- /dev/null
+++ b/10.2.0/gentoo/15_all_respect-build-cxxflags.patch
@@ -0,0 +1,39 @@
+Pass CXXFLAGS as CXXFLAGS_FOR_BUILD to stage1.
+
+Fixes build failure when CXXFLAGS contains
+TARGET-specific flags.
+
+Tested on x86_64-pc-linux-gnu host as:
+ # CFLAGS='-O2 -mfpu=neon-vfpv4' CXXFLAGS='-O2 -mfpu=neon-vfpv4' \
+ armv7a-unknown-linux-gnueabihf-emerge -v1 sys-devel/gcc --quiet-build=n
+
+Fix by Peter Levine.
+https://bugs.gentoo.org/581406
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -170,6 +170,7 @@
+ # built for the build system to override those in BASE_FLAGS_TO_PASS.
+ EXTRA_BUILD_FLAGS = \
+ CFLAGS="$(CFLAGS_FOR_BUILD)" \
++ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
+ LDFLAGS="$(LDFLAGS_FOR_BUILD)"
+
+ # This is the list of directories to built for the host system.
+@@ -710,6 +711,7 @@
+ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
+ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
+ "CXX_FOR_BUILD=$(CXX_FOR_BUILD)" \
++ "CXXFLAGS_FOR_BUILD=$(CXXFLAGS_FOR_BUILD)" \
+ "EXPECT=$(EXPECT)" \
+ "FLEX=$(FLEX)" \
+ "INSTALL=$(INSTALL)" \
+--- a/Makefile.tpl
++++ b/Makefile.tpl
+@@ -172,6 +172,7 @@
+ # built for the build system to override those in BASE_FLAGS_TO_PASS.
+ EXTRA_BUILD_FLAGS = \
+ CFLAGS="$(CFLAGS_FOR_BUILD)" \
++ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
+ LDFLAGS="$(LDFLAGS_FOR_BUILD)"
+
+ # This is the list of directories to built for the host system.
diff --git a/10.2.0/gentoo/16_all_libgfortran-Werror.patch b/10.2.0/gentoo/16_all_libgfortran-Werror.patch
new file mode 100644
index 0000000..f6c26bf
--- /dev/null
+++ b/10.2.0/gentoo/16_all_libgfortran-Werror.patch
@@ -0,0 +1,20 @@
+libgfortran does not respect --disable-werror
+
+https://bugs.gentoo.org/433435
+http://gcc.gnu.org/PR54724
+
+
+--- a/libgfortran/configure.ac
++++ b/libgfortran/configure.ac
+@@ -140,3 +140,3 @@ AM_PROG_CC_C_O
+ if test "x$GCC" = "xyes"; then
+- AM_FCFLAGS="-I . -Wall -Werror -fimplicit-none -fno-repack-arrays -fno-underscoring"
++ AM_FCFLAGS="-I . -Wall -fimplicit-none -fno-repack-arrays -fno-underscoring"
+ ## We like to use C11 and C99 routines when available. This makes
+--- a/libgfortran/configure
++++ b/libgfortran/configure
+@@ -5764,3 +5764,3 @@ fi
+ # Add -Wall -fno-repack-arrays -fno-underscoring if we are using GCC.
+ if test "x$GCC" = "xyes"; then
+- AM_FCFLAGS="-I . -Wall -Werror -fimplicit-none -fno-repack-arrays -fno-underscoring"
++ AM_FCFLAGS="-I . -Wall -fimplicit-none -fno-repack-arrays -fno-underscoring"
diff --git a/10.2.0/gentoo/17_all_libgomp-Werror.patch b/10.2.0/gentoo/17_all_libgomp-Werror.patch
new file mode 100644
index 0000000..416808a
--- /dev/null
+++ b/10.2.0/gentoo/17_all_libgomp-Werror.patch
@@ -0,0 +1,20 @@
+libgomp does not respect --disable-werror
+
+https://bugs.gentoo.org/229059
+http://gcc.gnu.org/PR38436
+--- a/libgomp/configure.ac
++++ b/libgomp/configure.ac
+@@ -4282,4 +4282,4 @@ save_CFLAGS="$CFLAGS"
+ # Add -Wall -Werror if we are using GCC.
+ if test "x$GCC" = "xyes"; then
+- XCFLAGS="$XCFLAGS -Wall -Werror"
++ XCFLAGS="$XCFLAGS -Wall"
+ fi
+--- a/libgomp/configure
++++ b/libgomp/configure
+@@ -4282,4 +4282,4 @@ save_CFLAGS="$CFLAGS"
+ # Add -Wall -Werror if we are using GCC.
+ if test "x$GCC" = "xyes"; then
+- XCFLAGS="$XCFLAGS -Wall -Werror"
++ XCFLAGS="$XCFLAGS -Wall"
+ fi
diff --git a/10.2.0/gentoo/18_all_libitm-Werror.patch b/10.2.0/gentoo/18_all_libitm-Werror.patch
new file mode 100644
index 0000000..27181e0
--- /dev/null
+++ b/10.2.0/gentoo/18_all_libitm-Werror.patch
@@ -0,0 +1,19 @@
+libitm does not respect --disable-werror
+
+https://bugs.gentoo.org/475350
+--- a/libitm/configure.ac
++++ b/libitm/configure.ac
+@@ -4282,4 +4282,4 @@ save_CFLAGS="$CFLAGS"
+ # Add -Wall -Werror if we are using GCC.
+ if test "x$GCC" = "xyes"; then
+- XCFLAGS="$XCFLAGS -Wall -Werror"
++ XCFLAGS="$XCFLAGS -Wall"
+ fi
+--- a/libitm/configure
++++ b/libitm/configure
+@@ -4282,4 +4282,4 @@ save_CFLAGS="$CFLAGS"
+ # Add -Wall -Werror if we are using GCC.
+ if test "x$GCC" = "xyes"; then
+- XCFLAGS="$XCFLAGS -Wall -Werror"
++ XCFLAGS="$XCFLAGS -Wall"
+ fi
diff --git a/10.2.0/gentoo/19_all_libatomic-Werror.patch b/10.2.0/gentoo/19_all_libatomic-Werror.patch
new file mode 100644
index 0000000..0550722
--- /dev/null
+++ b/10.2.0/gentoo/19_all_libatomic-Werror.patch
@@ -0,0 +1,19 @@
+libatomic does not respect --disable-werror
+
+https://bugs.gentoo.org/475350
+--- a/libatomic/configure.ac
++++ b/libatomic/configure.ac
+@@ -4282,4 +4282,4 @@ save_CFLAGS="$CFLAGS"
+ # Add -Wall -Werror if we are using GCC.
+ if test "x$GCC" = "xyes"; then
+- XCFLAGS="$XCFLAGS -Wall -Werror"
++ XCFLAGS="$XCFLAGS -Wall"
+ fi
+--- a/libatomic/configure
++++ b/libatomic/configure
+@@ -4282,4 +4282,4 @@ save_CFLAGS="$CFLAGS"
+ # Add -Wall -Werror if we are using GCC.
+ if test "x$GCC" = "xyes"; then
+- XCFLAGS="$XCFLAGS -Wall -Werror"
++ XCFLAGS="$XCFLAGS -Wall"
+ fi
diff --git a/10.2.0/gentoo/20_all_libbacktrace-Werror.patch b/10.2.0/gentoo/20_all_libbacktrace-Werror.patch
new file mode 100644
index 0000000..57dd284
--- /dev/null
+++ b/10.2.0/gentoo/20_all_libbacktrace-Werror.patch
@@ -0,0 +1,17 @@
+libbacktrace does not respect --disable-werror
+
+https://bugs.gentoo.org/667104
+--- a/libbacktrace/configure
++++ b/libbacktrace/configure
+@@ -11634,3 +11634,3 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ if test -n "${with_target_subdir}"; then
+- WARN_FLAGS="$WARN_FLAGS -Werror"
++ WARN_FLAGS="$WARN_FLAGS"
+ fi
+--- a/libbacktrace/configure.ac
++++ b/libbacktrace/configure.ac
+@@ -138,3 +138,3 @@ ACX_PROG_CC_WARNING_OPTS([-W -Wall -Wwrite-strings -Wstrict-prototypes \
+ if test -n "${with_target_subdir}"; then
+- WARN_FLAGS="$WARN_FLAGS -Werror"
++ WARN_FLAGS="$WARN_FLAGS"
+ fi
diff --git a/10.2.0/gentoo/21_all_libsanitizer-Werror.patch b/10.2.0/gentoo/21_all_libsanitizer-Werror.patch
new file mode 100644
index 0000000..0e484a4
--- /dev/null
+++ b/10.2.0/gentoo/21_all_libsanitizer-Werror.patch
@@ -0,0 +1,17 @@
+libsanitizer does not respect --disable-werror
+
+https://bugs.gentoo.org/667104
+--- a/libsanitizer/libbacktrace/Makefile.am
++++ b/libsanitizer/libbacktrace/Makefile.am
+@@ -37,3 +37,3 @@ AM_CPPFLAGS = -I $(top_srcdir)/../include -I $(top_srcdir)/../libgcc \
+ WARN_FLAGS = -W -Wall -Wwrite-strings -Wmissing-format-attribute \
+- -Wcast-qual -Werror
++ -Wcast-qual
+ C_WARN_FLAGS = $(WARN_FLAGS) -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition
+--- a/libsanitizer/libbacktrace/Makefile.in
++++ b/libsanitizer/libbacktrace/Makefile.in
+@@ -297,3 +297,3 @@ AM_CPPFLAGS = -I $(top_srcdir)/../include -I $(top_srcdir)/../libgcc \
+ WARN_FLAGS = -W -Wall -Wwrite-strings -Wmissing-format-attribute \
+- -Wcast-qual -Werror
++ -Wcast-qual
+
diff --git a/10.2.0/gentoo/22_all_libstdcxx-no-vtv.patch b/10.2.0/gentoo/22_all_libstdcxx-no-vtv.patch
new file mode 100644
index 0000000..68508bd
--- /dev/null
+++ b/10.2.0/gentoo/22_all_libstdcxx-no-vtv.patch
@@ -0,0 +1,61 @@
+Final libstdc++.so should not contain rpath to make libvtv usable.
+It's up to final binaries to link against proper libvtv.
+
+Bug: https://bugs.gentoo.org/582524
+Bug: https://gcc.gnu.org/PR85884
+--- a/libstdc++-v3/src/Makefile.am
++++ b/libstdc++-v3/src/Makefile.am
+@@ -217,7 +217,6 @@ CXXLINK = \
+ $(LIBTOOL) --tag CXX \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CXX) \
+- $(VTV_CXXLINKFLAGS) \
+ $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
+
+ # Symbol versioning for shared libraries.
+--- a/libstdc++-v3/src/Makefile.in
++++ b/libstdc++-v3/src/Makefile.in
+@@ -511,7 +511,6 @@ CXXLINK = \
+ $(LIBTOOL) --tag CXX \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CXX) \
+- $(VTV_CXXLINKFLAGS) \
+ $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
+
+ @ENABLE_SYMVERS_TRUE@CLEANFILES = libstdc++-symbols.ver $(version_dep)
+--- a/libstdc++-v3/src/c++11/Makefile.am
++++ b/libstdc++-v3/src/c++11/Makefile.am
+@@ -204,5 +204,4 @@ CXXLINK = \
+ $(LIBTOOL) --tag CXX --tag disable-shared \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CXX) \
+- $(VTV_CXXLINKFLAGS) \
+ $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
+--- a/libstdc++-v3/src/c++11/Makefile.in
++++ b/libstdc++-v3/src/c++11/Makefile.in
+@@ -496,7 +496,6 @@ CXXLINK = \
+ $(LIBTOOL) --tag CXX --tag disable-shared \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CXX) \
+- $(VTV_CXXLINKFLAGS) \
+ $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
+
+ all: all-am
+--- a/libstdc++-v3/src/c++98/Makefile.am
++++ b/libstdc++-v3/src/c++98/Makefile.am
+@@ -273,5 +273,4 @@ CXXLINK = \
+ $(LIBTOOL) --tag CXX --tag disable-shared \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CXX) \
+- $(VTV_CXXLINKFLAGS) \
+ $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
+--- a/libstdc++-v3/src/c++98/Makefile.in
++++ b/libstdc++-v3/src/c++98/Makefile.in
+@@ -500,7 +500,6 @@ CXXLINK = \
+ $(LIBTOOL) --tag CXX --tag disable-shared \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CXX) \
+- $(VTV_CXXLINKFLAGS) \
+ $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
+
+ all: all-am
diff --git a/10.2.0/gentoo/23_all_disable-riscv32-ABIs.patch b/10.2.0/gentoo/23_all_disable-riscv32-ABIs.patch
new file mode 100644
index 0000000..ad0128a
--- /dev/null
+++ b/10.2.0/gentoo/23_all_disable-riscv32-ABIs.patch
@@ -0,0 +1,53 @@
+Autogenerated patch disabling the 32bit RISCV support
+See https://gcc.gnu.org/PR90419
+
+diff -ruN gcc-9.1.0.orig/gcc/config/riscv/t-linux-multilib gcc-9.1.0/gcc/config/riscv/t-linux-multilib
+--- gcc-9.1.0.orig/gcc/config/riscv/t-linux-multilib 2017-02-06 22:38:37.000000000 +0100
++++ gcc-9.1.0/gcc/config/riscv/t-linux-multilib 2019-05-18 23:04:54.849400774 +0200
+@@ -1,40 +1,18 @@
+ # This file was generated by multilib-generator with the command:
+-# ./multilib-generator rv32imac-ilp32-rv32ima,rv32imaf,rv32imafd,rv32imafc,rv32imafdc- rv32imafdc-ilp32d-rv32imafd- rv64imac-lp64-rv64ima,rv64imaf,rv64imafd,rv64imafc,rv64imafdc- rv64imafdc-lp64d-rv64imafd-
+-MULTILIB_OPTIONS = march=rv32imac/march=rv32ima/march=rv32imaf/march=rv32imafd/march=rv32imafc/march=rv32imafdc/march=rv32g/march=rv32gc/march=rv64imac/march=rv64ima/march=rv64imaf/march=rv64imafd/march=rv64imafc/march=rv64imafdc/march=rv64g/march=rv64gc mabi=ilp32/mabi=ilp32d/mabi=lp64/mabi=lp64d
+-MULTILIB_DIRNAMES = rv32imac \
+-rv32ima \
+-rv32imaf \
+-rv32imafd \
+-rv32imafc \
+-rv32imafdc \
+-rv32g \
+-rv32gc \
+-rv64imac \
++# ./multilib-generator rv64imac-lp64-rv64ima,rv64imaf,rv64imafd,rv64imafc,rv64imafdc- rv64imafdc-lp64d-rv64imafd-
++MULTILIB_OPTIONS = march=rv64imac/march=rv64ima/march=rv64imaf/march=rv64imafd/march=rv64imafc/march=rv64imafdc/march=rv64g/march=rv64gc mabi=lp64/mabi=lp64d
++MULTILIB_DIRNAMES = rv64imac \
+ rv64ima \
+ rv64imaf \
+ rv64imafd \
+ rv64imafc \
+ rv64imafdc \
+ rv64g \
+-rv64gc ilp32 \
+-ilp32d \
+-lp64 \
++rv64gc lp64 \
+ lp64d
+-MULTILIB_REQUIRED = march=rv32imac/mabi=ilp32 \
+-march=rv32imafdc/mabi=ilp32d \
+-march=rv64imac/mabi=lp64 \
++MULTILIB_REQUIRED = march=rv64imac/mabi=lp64 \
+ march=rv64imafdc/mabi=lp64d
+-MULTILIB_REUSE = march.rv32imac/mabi.ilp32=march.rv32ima/mabi.ilp32 \
+-march.rv32imac/mabi.ilp32=march.rv32imaf/mabi.ilp32 \
+-march.rv32imac/mabi.ilp32=march.rv32imafd/mabi.ilp32 \
+-march.rv32imac/mabi.ilp32=march.rv32imafc/mabi.ilp32 \
+-march.rv32imac/mabi.ilp32=march.rv32imafdc/mabi.ilp32 \
+-march.rv32imac/mabi.ilp32=march.rv32g/mabi.ilp32 \
+-march.rv32imac/mabi.ilp32=march.rv32gc/mabi.ilp32 \
+-march.rv32imafdc/mabi.ilp32d=march.rv32imafd/mabi.ilp32d \
+-march.rv32imafdc/mabi.ilp32d=march.rv32gc/mabi.ilp32d \
+-march.rv32imafdc/mabi.ilp32d=march.rv32g/mabi.ilp32d \
+-march.rv64imac/mabi.lp64=march.rv64ima/mabi.lp64 \
++MULTILIB_REUSE = march.rv64imac/mabi.lp64=march.rv64ima/mabi.lp64 \
+ march.rv64imac/mabi.lp64=march.rv64imaf/mabi.lp64 \
+ march.rv64imac/mabi.lp64=march.rv64imafd/mabi.lp64 \
+ march.rv64imac/mabi.lp64=march.rv64imafc/mabi.lp64 \
diff --git a/10.2.0/gentoo/24_all_default_ssp-buffer-size.patch b/10.2.0/gentoo/24_all_default_ssp-buffer-size.patch
new file mode 100644
index 0000000..ae5a707
--- /dev/null
+++ b/10.2.0/gentoo/24_all_default_ssp-buffer-size.patch
@@ -0,0 +1,14 @@
+Change the minimal SSP buffer size.
+
+https://bugs.gentoo.org/484714
+--- a/gcc/params.opt
++++ b/gcc/params.opt
+@@ -849,7 +849,7 @@ Common Joined UInteger Var(param_ssa_name_def_chain_limit) Init(512) Param Optim
+ The maximum number of SSA_NAME assignments to follow in determining a value.
+
+ -param=ssp-buffer-size=
+-Common Joined UInteger Var(param_ssp_buffer_size) Init(8) IntegerRange(1, 65536) Param Optimization
++Common Joined UInteger Var(param_ssp_buffer_size) Init(4) IntegerRange(1, 65536) Param Optimization
+ The lower bound for a buffer to be considered for stack smashing protection.
+
+ -param=stack-clash-protection-guard-size=
diff --git a/10.2.0/gentoo/25_all_hppa-faster-synth_mult.patch b/10.2.0/gentoo/25_all_hppa-faster-synth_mult.patch
new file mode 100644
index 0000000..e93aa40
--- /dev/null
+++ b/10.2.0/gentoo/25_all_hppa-faster-synth_mult.patch
@@ -0,0 +1,44 @@
+From 73a841928cc1b86f43108d2383a6242e7e61a785 Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <slyfox@gentoo.org>
+Date: Tue, 31 Mar 2020 23:58:05 +0100
+Subject: [PATCH] gcc/expmed.h: increase cache size from 10^3 to 10^6
+
+Without this patch is takes dev-libs/xxhash 1-2 hours
+to compile. With this patch - TODO measurements.
+
+It workarounds deficiency of synth_mult() which evics
+cache entries as it calculates optimal multiplication
+algorithm. xxhash is especially hevyweight as it's a
+64-bit multiplication of large prime constants.
+
+Bug: https://gcc.gnu.org/PR87256
+Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
+---
+ gcc/expmed.h | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+--- a/gcc/expmed.h
++++ b/gcc/expmed.h
+@@ -127,11 +127,14 @@ struct alg_hash_entry {
+ };
+
+ /* The number of cache/hash entries. */
+-#if HOST_BITS_PER_WIDE_INT == 64
+-#define NUM_ALG_HASH_ENTRIES 1031
+-#else
+-#define NUM_ALG_HASH_ENTRIES 307
+-#endif
++/*
++ * Workaround hppa2.0 synth_mult deficiency
++ * and allocate ~1 million slots:
++ * https://gcc.gnu.org/PR87256
++ * That should increase RAM usage up to ~24MB
++ * per process.
++ */
++#define NUM_ALG_HASH_ENTRIES 1000003
+
+ #define NUM_MODE_INT \
+ (MAX_MODE_INT - MIN_MODE_INT + 1)
+--
+2.26.0
+
diff --git a/10.2.0/gentoo/26_all_libcpp-ar.patch b/10.2.0/gentoo/26_all_libcpp-ar.patch
new file mode 100644
index 0000000..55f2944
--- /dev/null
+++ b/10.2.0/gentoo/26_all_libcpp-ar.patch
@@ -0,0 +1,143 @@
+https://bugs.gentoo.org/718004
+https://gcc.gnu.org/PR94657
+
+Make sue we use ${CHOST}-ar and not 'ar'.
+
+--- a/libcpp/configure.ac
++++ b/libcpp/configure.ac
+@@ -12,6 +12,7 @@ AC_PROG_INSTALL
+ AC_PROG_CC
+ AC_PROG_CXX
+ AC_PROG_RANLIB
++AC_CHECK_TOOL(AR, ar)
+
+ AC_USE_SYSTEM_EXTENSIONS
+ AC_SYS_LARGEFILE
+--- a/libcpp/Makefile.in
++++ b/libcpp/Makefile.in
+@@ -25,7 +25,7 @@ srcdir = @srcdir@
+ top_builddir = .
+ VPATH = @srcdir@
+ INSTALL = @INSTALL@
+-AR = ar
++AR = @AR@
+ ARFLAGS = cru
+ ACLOCAL = @ACLOCAL@
+ AUTOCONF = @AUTOCONF@
+--- a/libcpp/configure
++++ b/libcpp/configure
+@@ -657,6 +657,7 @@ ACLOCAL
+ EGREP
+ GREP
+ CPP
++AR
+ RANLIB
+ ac_ct_CXX
+ CXXFLAGS
+@@ -1038,6 +1039,7 @@ do
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
++
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+@@ -4006,6 +4008,98 @@ else
+ RANLIB="$ac_cv_prog_RANLIB"
+ fi
+
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
++set dummy ${ac_tool_prefix}ar; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_AR+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$AR"; then
++ ac_cv_prog_AR="$AR" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_AR="${ac_tool_prefix}ar"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++AR=$ac_cv_prog_AR
++if test -n "$AR"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
++$as_echo "$AR" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_AR"; then
++ ac_ct_AR=$AR
++ # Extract the first word of "ar", so it can be a program name with args.
++set dummy ar; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_AR+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_AR"; then
++ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_AR="ar"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_AR=$ac_cv_prog_ac_ct_AR
++if test -n "$ac_ct_AR"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
++$as_echo "$ac_ct_AR" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_AR" = x; then
++ AR=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ AR=$ac_ct_AR
++ fi
++else
++ AR="$ac_cv_prog_AR"
++fi
++
+
+
+ ac_ext=c
--git a/10.2.0/gentoo/27_all_EXTRA_OPTIONS-z-now.patch b/10.2.0/gentoo/27_all_EXTRA_OPTIONS-z-now.patch
new file mode 100644
index 0000000..121dec4
--- /dev/null
+++ b/10.2.0/gentoo/27_all_EXTRA_OPTIONS-z-now.patch
@@ -0,0 +1,26 @@
+On Hardened we add some options like -z now
+
+--- a/gcc/gcc.c 2016-02-19 23:18:38.000000000 +0100
++++ b/gcc/gcc.c 2016-05-02 22:56:10.185721270 +0200
+@@ -868,6 +868,12 @@ proper position among the other output f
+ #endif
+ #endif
+
++#ifdef EXTRA_OPTIONS
++#define LINK_NOW_SPEC "%{!nonow:-z now} "
++#else
++#define LINK_NOW_SPEC ""
++#endif
++
+ #ifdef ENABLE_DEFAULT_PIE
+ #define NO_PIE_SPEC "no-pie|static"
+ #define PIE_SPEC NO_PIE_SPEC "|r|shared:;"
+@@ -1013,7 +1020,7 @@ proper position among the other output f
+ %(linker) " \
+ LINK_PLUGIN_SPEC \
+ "%{flto|flto=*:%<fcompare-debug*} \
+- %{flto} %{fno-lto} %{flto=*} %l " LINK_PIE_SPEC \
++ %{flto} %{fno-lto} %{flto=*} %l " LINK_PIE_SPEC LINK_NOW_SPEC \
+ "%{fuse-ld=*:-fuse-ld=%*} " LINK_COMPRESS_DEBUG_SPEC \
+ "%X %{o*} %{e*} %{N} %{n} %{r}\
+ %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} \
--git a/10.2.0/gentoo/28_all_EXTRA_OPTIONS-fstack-clash-protection.patch b/10.2.0/gentoo/28_all_EXTRA_OPTIONS-fstack-clash-protection.patch
new file mode 100644
index 0000000..95dd37e
--- /dev/null
+++ b/10.2.0/gentoo/28_all_EXTRA_OPTIONS-fstack-clash-protection.patch
@@ -0,0 +1,65 @@
+On Hardened we add some options like -fstack-clash-protection.
+
+--- a/gcc/common.opt 2018-03-28 16:51:09.000000000 +0200
++++ a/gcc/common.opt 2018-04-30 15:35:55.274096877 +0200
+@@ -2367,7 +2367,7 @@ Common Alias(fstack-check=, specific, no
+ Insert stack checking code into the program. Same as -fstack-check=specific.
+
+ fstack-clash-protection
+-Common Report Var(flag_stack_clash_protection) Optimization
++Common Report Var(flag_stack_clash_protection) Optimization Init(-1)
+ Insert code to probe each page of stack space as it is allocated to protect
+ from stack-clash style attacks.
+
+--- a/gcc/defaults.h 2018-01-03 11:03:58.000000000 +0100
++++ b/gcc/defaults.h 2018-05-01 12:41:29.522851451 +0200
+@@ -1435,6 +1435,15 @@ see the files COPYING3 and COPYING.RUNTI
+ #define STACK_CHECK_MAX_VAR_SIZE (STACK_CHECK_MAX_FRAME_SIZE / 100)
+ #endif
+
++/* Default value for flag_clash_protector when flag_clash_protector is
++ initialized to -1. */
++#ifdef EXTRA_OPTIONS
++#define DEFAULT_FLAG_SCP 1
++#endif
++#ifndef DEFAULT_FLAG_SCP
++#define DEFAULT_FLAG_SCP 0
++#endif
++
+ /* By default, the C++ compiler will use function addresses in the
+ vtable entries. Setting this nonzero tells the compiler to use
+ function descriptors instead. The value of this macro says how
+--- a/gcc/toplev.c 2018-02-13 17:18:37.000000000 +0100
++++ b/toplev.c 2018-04-30 16:46:37.244027303 +0200
+@@ -1682,6 +1682,10 @@ process_options (void)
+
+ /* -fstack-clash-protection is not currently supported on targets
+ where the stack grows up. */
++ if (flag_stack_clash_protection == -1)
++ {
++ flag_stack_clash_protection = DEFAULT_FLAG_SCP;
++ }
+ if (flag_stack_clash_protection && !STACK_GROWS_DOWNWARD)
+ {
+ warning_at (UNKNOWN_LOCATION, 0,
+
+--- a/libgcc/Makefile.in 2011-11-22 04:01:02.000000000 +0100
++++ b/libgcc/Makefile.in 2011-12-25 15:18:22.449610631 +0100
+@@ -225,7 +225,7 @@ endif
+ LIBGCC2_DEBUG_CFLAGS = -g
+ LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \
+ $(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \
+- -fbuilding-libgcc -fno-stack-protector \
++ -fbuilding-libgcc -fno-stack-protector -fno-stack-clash-protection \
+ $(INHIBIT_LIBC_CFLAGS)
+
+ # Additional options to use when compiling libgcc2.a.
+@@ -279,7 +290,7 @@ INTERNAL_CFLAGS = $(CFLAGS) $(LIBGCC2_CF
+ $(NO_PIE_CFLAGS) -finhibit-size-directive -fno-inline -fno-exceptions \
+ -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
+ -fbuilding-libgcc -fno-stack-protector $(FORCE_EXPLICIT_EH_REGISTRY) \
+- $(INHIBIT_LIBC_CFLAGS) $(USE_TM_CLONE_REGISTRY)
++ -fno-stack-clash-protection $(INHIBIT_LIBC_CFLAGS) $(USE_TM_CLONE_REGISTRY)
+
+ # Extra flags to use when compiling crt{begin,end}.o.
+ CRTSTUFF_T_CFLAGS =
diff --git a/10.2.0/gentoo/29_all_lto-intl-workaround-PR95194.patch b/10.2.0/gentoo/29_all_lto-intl-workaround-PR95194.patch
new file mode 100644
index 0000000..9613216
--- /dev/null
+++ b/10.2.0/gentoo/29_all_lto-intl-workaround-PR95194.patch
@@ -0,0 +1,20 @@
+Trick libintl not to use '_INTL_REDIRECT_ASM' mode as it's
+incompatible with LTO builds.
+
+glibc does not normally use libintl implementations and uses
+it's own primitives. But musl ond others do fall back to libintl.
+
+Reported-by: Andrew Savchenko
+Bug: https://bugs.gentoo.org/723370
+Bug: https://gcc.gnu.org/PR95194
+--- a/intl/libgnuintl.h
++++ b/intl/libgnuintl.h
+@@ -93,7 +93,7 @@ extern "C" {
+ If he doesn't, we choose the method. A third possible method is
+ _INTL_REDIRECT_ASM, supported only by GCC. */
+ #if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS)
+-# if __GNUC__ >= 2 && !defined __APPLE_CC__ && (defined __STDC__ || defined __cplusplus)
++# if __GNUC__ >= 2 && !defined __APPLE_CC__ && (defined __STDC__ || defined __cplusplus) && USE_ASM_ALIASES_THAT_BREAK_LTO
+ # define _INTL_REDIRECT_ASM
+ # else
+ # ifdef __cplusplus
diff --git a/10.2.0/gentoo/30_all_plugin-objdump.patch b/10.2.0/gentoo/30_all_plugin-objdump.patch
new file mode 100644
index 0000000..a9c33fd
--- /dev/null
+++ b/10.2.0/gentoo/30_all_plugin-objdump.patch
@@ -0,0 +1,34 @@
+https://gcc.gnu.org/PR95648
+--- a/config/gcc-plugin.m4
++++ b/config/gcc-plugin.m4
+@@ -45,7 +45,7 @@ AC_DEFUN([GCC_ENABLE_PLUGINS],
+ ;;
+ *)
+ if test x$build = x$host; then
+- export_sym_check="objdump${exeext} -T"
++ export_sym_check="$ac_cv_prog_OBJDUMP -T"
+ elif test x$host = x$target; then
+ export_sym_check="$gcc_cv_objdump -T"
+ else
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -30386,7 +30386,7 @@ fi
+ ;;
+ *)
+ if test x$build = x$host; then
+- export_sym_check="objdump${exeext} -T"
++ export_sym_check="$ac_cv_prog_OBJDUMP -T"
+ elif test x$host = x$target; then
+ export_sym_check="$gcc_cv_objdump -T"
+ else
+--- a/libcc1/configure
++++ b/libcc1/configure
+@@ -14819,7 +14819,7 @@ fi
+ ;;
+ *)
+ if test x$build = x$host; then
+- export_sym_check="objdump${exeext} -T"
++ export_sym_check="$ac_cv_prog_OBJDUMP -T"
+ elif test x$host = x$target; then
+ export_sym_check="$gcc_cv_objdump -T"
+ else
diff --git a/10.2.0/gentoo/31_all_fno-delayed-branch.patch b/10.2.0/gentoo/31_all_fno-delayed-branch.patch
new file mode 100644
index 0000000..33ff2f4
--- /dev/null
+++ b/10.2.0/gentoo/31_all_fno-delayed-branch.patch
@@ -0,0 +1,40 @@
+From 6d0d3ae914bf19706550a539ef304c5875535ffc Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <siarheit@google.com>
+Date: Fri, 3 Jul 2020 22:50:33 +0100
+Subject: [PATCH] Disable -fdelayed-branch by default.
+
+From https://gcc.gnu.org/PR96015 / https://bugs.gentoo.org/729570.
+delayed branches are known to generate invalid code around
+__builtin_unreachable(); and mis-compiles python.
+
+Use blunt hammer and disable delayed slots until we have better fix.
+
+Reported-by: Jeroen Roovers
+Bug: https://gcc.gnu.org/PR96015
+Bug: https://bugs.gentoo.org/729570.
+Signed-off-by: Sergei Trofimovich <siarheit@google.com>
+---
+ gcc/opts.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+--- a/gcc/opts.c
++++ b/gcc/opts.c
+@@ -458,7 +458,14 @@ static const struct default_options default_options_table[] =
+ /* -O1 (and not -Og) optimizations. */
+ { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fbranch_count_reg, NULL, 1 },
+ #if DELAY_SLOTS
+- { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fdelayed_branch, NULL, 1 },
++ /*
++ * From https://gcc.gnu.org/PR96015 / https://bugs.gentoo.org/729570.
++ * delayed branches are known to generate invalid code around
++ * __builtin_unreachable(); and mis-compiles python.
++ *
++ * Use blunt hammer and disable delayed slots until we have better fix.
++ */
++ /* { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fdelayed_branch, NULL, 1 }, */
+ #endif
+ { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fdse, NULL, 1 },
+ { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fif_conversion, NULL, 1 },
+--
+2.27.0
+
diff --git a/10.2.0/gentoo/32_all_sparc_pie_TEXTREL.patch b/10.2.0/gentoo/32_all_sparc_pie_TEXTREL.patch
new file mode 100644
index 0000000..059f744
--- /dev/null
+++ b/10.2.0/gentoo/32_all_sparc_pie_TEXTREL.patch
@@ -0,0 +1,49 @@
+https://gcc.gnu.org/PR96190
+https://bugs.gentoo.org/619706
+
+From 6acaa3c1c1e6202af9871aa304ed772939d51311 Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <siarheit@google.com>
+Date: Tue, 14 Jul 2020 07:48:42 +0100
+Subject: [PATCH] sparc/sparc64: use PIE_SPEC to select crtendS.o [PR96190]
+
+In --enable-default-pie mode compiler should switch from
+using crtend.o to crtendS.o. On sparc it is especially visible
+because crtend.o contains PIC-unfriendly code.
+
+gcc:
+
+2020-07-14 Sergei Trofimovich <siarheit@google.com>
+
+ PR driver/96190
+ * config/sparc/linux.h: Use PIE_SPEC to select crtendS.o.
+ * config/sparc/linux64.h: ditto
+---
+ gcc/config/sparc/linux.h | 2 +-
+ gcc/config/sparc/linux64.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/gcc/config/sparc/linux.h
++++ b/gcc/config/sparc/linux.h
+@@ -35,7 +35,7 @@ along with GCC; see the file COPYING3. If not see
+
+ #undef ENDFILE_SPEC
+ #define ENDFILE_SPEC \
+- "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s\
++ "%{shared|" PIE_SPEC ":crtendS.o%s;:crtend.o%s} crtn.o%s\
+ %{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
+
+ /* -mcpu=native handling only makes sense with compiler running on
+--- a/gcc/config/sparc/linux64.h
++++ b/gcc/config/sparc/linux64.h
+@@ -52,7 +52,7 @@ along with GCC; see the file COPYING3. If not see
+
+ #undef ENDFILE_SPEC
+ #define ENDFILE_SPEC \
+- "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s\
++ "%{shared|" PIE_SPEC ":crtendS.o%s;:crtend.o%s} crtn.o%s\
+ %{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
+
+ /* The default code model. */
+--
+2.27.0
+
diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
new file mode 100644
index 0000000..4009f39
--- /dev/null
+++ b/10.2.0/gentoo/README.history
@@ -0,0 +1,33 @@
+1 23 July 2020
+ + 01_all_default-fortify-source.patch
+ + 02_all_default-warn-format-security.patch
+ + 03_all_default-warn-trampolines.patch
+ + 04_all_nossp-on-nostdlib.patch
+ + 05_all_alpha-mieee-default.patch
+ + 06_all_ia64_note.GNU-stack.patch
+ + 07_all_i386_libgcc_note.GNU-stack.patch
+ + 08_all_libiberty-asprintf.patch
+ + 09_all_libiberty-pic.patch
+ + 10_all_nopie-all-flags.patch
+ + 11_all_sh-drop-sysroot-suffix.patch
+ + 12_all_ia64-TEXTREL.patch
+ + 13_all_disable-systemtap-switch.patch
+ + 14_all_m68k-textrel-on-libgcc.patch
+ + 15_all_respect-build-cxxflags.patch
+ + 16_all_libgfortran-Werror.patch
+ + 17_all_libgomp-Werror.patch
+ + 18_all_libitm-Werror.patch
+ + 19_all_libatomic-Werror.patch
+ + 20_all_libbacktrace-Werror.patch
+ + 21_all_libsanitizer-Werror.patch
+ + 22_all_libstdcxx-no-vtv.patch
+ + 23_all_disable-riscv32-ABIs.patch
+ + 24_all_default_ssp-buffer-size.patch
+ + 25_all_hppa-faster-synth_mult.patch
+ + 26_all_libcpp-ar.patch
+ + 27_all_EXTRA_OPTIONS-z-now.patch
+ + 28_all_EXTRA_OPTIONS-fstack-clash-protection.patch
+ + 29_all_lto-intl-workaround-PR95194.patch
+ + 30_all_plugin-objdump.patch
+ + 31_all_fno-delayed-branch.patch
+ + 32_all_sparc_pie_TEXTREL.patch
^ permalink raw reply related [flat|nested] 20+ messages in thread
end of thread, other threads:[~2021-04-08 19:36 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-12-29 9:55 [gentoo-commits] proj/gcc-patches:master commit in: 10.2.0/gentoo/ Sergei Trofimovich
-- strict thread matches above, loose matches on Subject: below --
2021-04-08 19:36 Sergei Trofimovich
2021-03-19 8:02 Sergei Trofimovich
2021-03-15 22:57 Sergei Trofimovich
2021-03-04 11:02 Sergei Trofimovich
2020-12-29 10:07 Sergei Trofimovich
2020-12-29 9:55 Sergei Trofimovich
2020-12-01 19:18 Sergei Trofimovich
2020-11-04 7:47 Sergei Trofimovich
2020-10-15 17:32 Sergei Trofimovich
2020-10-02 9:33 Sergei Trofimovich
2020-10-02 9:13 Sergei Trofimovich
2020-09-10 21:38 Sergei Trofimovich
2020-09-03 17:12 Sergei Trofimovich
2020-08-23 9:14 Sergei Trofimovich
2020-08-17 21:26 Sergei Trofimovich
2020-08-13 9:04 Sergei Trofimovich
2020-07-27 6:50 Sergei Trofimovich
2020-07-26 10:35 Sergei Trofimovich
2020-07-23 8:42 Sergei Trofimovich
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox