public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [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 +++++++++++++++++++++
 10.2.0/gentoo/27_all_EXTRA_OPTIONS-z-now.patch     |  26 ++++
 ...all_EXTRA_OPTIONS-fstack-clash-protection.patch |  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

diff --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}} \

diff --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