This commit is contained in:
Jakub Jelinek 2021-05-31 17:27:31 +02:00
parent a31fadcc09
commit 604b6369b8
6 changed files with 110 additions and 192 deletions

1
.gitignore vendored
View File

@ -44,3 +44,4 @@
/gcc-11.0.1-20210423.tar.xz
/gcc-11.1.1-20210428.tar.xz
/gcc-11.1.1-20210512.tar.xz
/gcc-11.1.1-20210531.tar.xz

View File

@ -1,10 +1,10 @@
%global DATE 20210512
%global gitrev 2274d6c6dc94803fb17a8466bace08a15b387509
%global DATE 20210531
%global gitrev e8a00355f6fd6fe219de22855d92c351911519da
%global gcc_version 11.1.1
%global gcc_major 11
# Note, gcc_release must be integer, if you want to add suffixes to
# %%{release}, append them after %%{gcc_release} on Release: line.
%global gcc_release 2
%global gcc_release 3
%global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e
%global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0
%global _unpackaged_files_terminate_build 0
@ -265,8 +265,7 @@ Patch10: gcc11-Wno-format-security.patch
Patch11: gcc11-rh1574936.patch
Patch12: gcc11-d-shared-libphobos.patch
Patch13: gcc11-pr99341-revert.patch
Patch14: gcc11-pr100379.patch
Patch15: gcc11-pr100566.patch
Patch14: gcc11-pr100797.patch
Patch100: gcc11-fortran-fdec-duplicates.patch
Patch101: gcc11-fortran-flogical-as-integer.patch
@ -790,8 +789,7 @@ to NVidia PTX capable devices if available.
%endif
%patch12 -p0 -b .d-shared-libphobos~
%patch13 -p0 -b .pr99341-revert~
%patch14 -p0 -b .pr100379~
%patch15 -p0 -b .pr100566~
%patch14 -p0 -b .pr100797~
%if 0%{?rhel} >= 9
%patch100 -p1 -b .fortran-fdec-duplicates~
@ -3134,6 +3132,18 @@ end
%endif
%changelog
* Mon May 31 2021 Jakub Jelinek <jakub@redhat.com> 11.1.1-3
- update from releases/gcc-11-branch
- PRs bootstrap/100552, c++/100205, c++/100261, c++/100281, c++/100367,
c++/100372, c++/100489, c++/100502, c++/100634, c++/100644,
c++/100659, c/100550, fortran/98411, fortran/100551, fortran/100602,
fortran/100633, fortran/100656, ipa/100513, libstdc++/100361,
libstdc++/100479, libstdc++/100630, middle-end/100471,
middle-end/100508, middle-end/100509, preprocessor/100392,
target/94177, target/99725, target/99960, target/99977, target/100419,
target/100563, target/100626, target/100767, testsuite/96488,
tree-optimization/100492, tree-optimization/100519
* Wed May 12 2021 Jakub Jelinek <jakub@redhat.com> 11.1.1-2
- update from releases/gcc-11-branch
- PRs c++/98032, c++/100319, c++/100362, c/100450, fortran/100274,

View File

@ -1,115 +0,0 @@
2021-05-10 Tamar Christina <tamar.christina@arm.com>
PR sanitizer/100379
* sanitizer_common/sanitizer_platform.h: Define
SANITIZER_LINUX_CYCLADES to one if linux/cyclades.h header exist.
* sanitizer_common/sanitizer_platform_limits_posix.h: Conditionalize
cyclades support on SANITIZER_LINUX_CYCLADES.
* sanitizer_common/sanitizer_platform_limits_posix.cpp: Likewise.
* sanitizer_common/sanitizer_common_interceptors_ioctl.inc: Likewise.
--- libsanitizer/sanitizer_common/sanitizer_platform.h.jj 2021-04-20 10:33:08.702324327 +0200
+++ libsanitizer/sanitizer_common/sanitizer_platform.h 2021-05-12 15:44:53.035964205 +0200
@@ -367,4 +367,17 @@
#define SANITIZER_SUPPORTS_INIT_FOR_DLOPEN 0
#endif
+// Kernel has removed this header, as such check for it's existance
+// before trying to include defines from it.
+// https://lkml.org/lkml/2021/3/2/153
+#ifdef __has_include
+# if __has_include(<linux/cyclades.h>) && !SANITIZER_ANDROID
+# define SANITIZER_LINUX_CYCLADES 1
+# else
+# define SANITIZER_LINUX_CYCLADES 0
+# endif
+#else
+# define SANITIZER_LINUX_CYCLADES 0
+#endif
+
#endif // SANITIZER_PLATFORM_H
--- libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h.jj 2021-04-20 10:33:08.703324315 +0200
+++ libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h 2021-05-12 15:44:53.039964162 +0200
@@ -981,7 +981,9 @@ extern unsigned struct_vt_mode_sz;
#if SANITIZER_LINUX && !SANITIZER_ANDROID
extern unsigned struct_ax25_parms_struct_sz;
+#if SANITIZER_LINUX_CYCLADES
extern unsigned struct_cyclades_monitor_sz;
+#endif
extern unsigned struct_input_keymap_entry_sz;
extern unsigned struct_ipx_config_data_sz;
extern unsigned struct_kbdiacrs_sz;
@@ -1326,6 +1328,7 @@ extern unsigned IOCTL_VT_WAITACTIVE;
#endif // SANITIZER_LINUX
#if SANITIZER_LINUX && !SANITIZER_ANDROID
+#if SANITIZER_LINUX_CYCLADES
extern unsigned IOCTL_CYGETDEFTHRESH;
extern unsigned IOCTL_CYGETDEFTIMEOUT;
extern unsigned IOCTL_CYGETMON;
@@ -1335,6 +1338,7 @@ extern unsigned IOCTL_CYSETDEFTHRESH;
extern unsigned IOCTL_CYSETDEFTIMEOUT;
extern unsigned IOCTL_CYSETTHRESH;
extern unsigned IOCTL_CYSETTIMEOUT;
+#endif
extern unsigned IOCTL_EQL_EMANCIPATE;
extern unsigned IOCTL_EQL_ENSLAVE;
extern unsigned IOCTL_EQL_GETMASTRCFG;
--- libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp.jj 2021-04-20 10:33:08.703324315 +0200
+++ libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp 2021-05-12 15:44:53.040964151 +0200
@@ -131,7 +131,9 @@ typedef struct user_fpregs elf_fpregset_
# include <sys/procfs.h>
#endif
#include <sys/user.h>
-#include <linux/cyclades.h>
+#if SANITIZER_LINUX_CYCLADES
+# include <linux/cyclades.h>
+#endif
#include <linux/if_eql.h>
#include <linux/if_plip.h>
#include <linux/lp.h>
@@ -449,7 +451,9 @@ unsigned struct_ElfW_Phdr_sz = sizeof(El
#if SANITIZER_LINUX && !SANITIZER_ANDROID
unsigned struct_ax25_parms_struct_sz = sizeof(struct ax25_parms_struct);
+#if SANITIZER_LINUX_CYCLADES
unsigned struct_cyclades_monitor_sz = sizeof(struct cyclades_monitor);
+#endif
#if EV_VERSION > (0x010000)
unsigned struct_input_keymap_entry_sz = sizeof(struct input_keymap_entry);
#else
@@ -815,6 +819,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(El
#endif // SANITIZER_LINUX
#if SANITIZER_LINUX && !SANITIZER_ANDROID
+#if SANITIZER_LINUX_CYCLADES
unsigned IOCTL_CYGETDEFTHRESH = CYGETDEFTHRESH;
unsigned IOCTL_CYGETDEFTIMEOUT = CYGETDEFTIMEOUT;
unsigned IOCTL_CYGETMON = CYGETMON;
@@ -824,6 +829,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(El
unsigned IOCTL_CYSETDEFTIMEOUT = CYSETDEFTIMEOUT;
unsigned IOCTL_CYSETTHRESH = CYSETTHRESH;
unsigned IOCTL_CYSETTIMEOUT = CYSETTIMEOUT;
+#endif
unsigned IOCTL_EQL_EMANCIPATE = EQL_EMANCIPATE;
unsigned IOCTL_EQL_ENSLAVE = EQL_ENSLAVE;
unsigned IOCTL_EQL_GETMASTRCFG = EQL_GETMASTRCFG;
--- libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc.jj 2021-04-20 10:33:08.698324371 +0200
+++ libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc 2021-05-12 15:44:53.027964291 +0200
@@ -366,6 +366,7 @@ static void ioctl_table_fill() {
#if SANITIZER_LINUX && !SANITIZER_ANDROID
// _(SIOCDEVPLIP, WRITE, struct_ifreq_sz); // the same as EQL_ENSLAVE
+#if SANITIZER_LINUX_CYCLADES
_(CYGETDEFTHRESH, WRITE, sizeof(int));
_(CYGETDEFTIMEOUT, WRITE, sizeof(int));
_(CYGETMON, WRITE, struct_cyclades_monitor_sz);
@@ -375,6 +376,7 @@ static void ioctl_table_fill() {
_(CYSETDEFTIMEOUT, NONE, 0);
_(CYSETTHRESH, NONE, 0);
_(CYSETTIMEOUT, NONE, 0);
+#endif
_(EQL_EMANCIPATE, WRITE, struct_ifreq_sz);
_(EQL_ENSLAVE, WRITE, struct_ifreq_sz);
_(EQL_GETMASTRCFG, WRITE, struct_ifreq_sz);

View File

@ -1,69 +0,0 @@
2021-05-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/100566
* tree-ssa-sccvn.c (dominated_by_p_w_unex): Properly handle
allow_back for all edge queries.
* gcc.dg/torture/pr100566.c: New testcase.
--- gcc/tree-ssa-sccvn.c
+++ gcc/tree-ssa-sccvn.c
@@ -4529,7 +4529,8 @@ dominated_by_p_w_unex (basic_block bb1, basic_block bb2, bool allow_back)
/* Iterate to the single executable bb2 successor. */
edge succe = NULL;
FOR_EACH_EDGE (e, ei, bb2->succs)
- if (e->flags & EDGE_EXECUTABLE)
+ if ((e->flags & EDGE_EXECUTABLE)
+ || (!allow_back && (e->flags & EDGE_DFS_BACK)))
{
if (succe)
{
@@ -4547,7 +4548,8 @@ dominated_by_p_w_unex (basic_block bb1, basic_block bb2, bool allow_back)
{
FOR_EACH_EDGE (e, ei, succe->dest->preds)
if (e != succe
- && (e->flags & EDGE_EXECUTABLE))
+ && ((e->flags & EDGE_EXECUTABLE)
+ || (!allow_back && (e->flags & EDGE_DFS_BACK))))
{
succe = NULL;
break;
--- gcc/testsuite/gcc.dg/torture/pr100566.c
+++ gcc/testsuite/gcc.dg/torture/pr100566.c
@@ -0,0 +1,36 @@
+/* { dg-do run } */
+
+volatile int s, c;
+
+__attribute__((noipa)) void
+foo (void)
+{
+ if (c++ > 1)
+ __builtin_abort ();
+}
+
+__attribute__((noipa)) int
+bar (void)
+{
+ int i = 0, j = s;
+ if (j == 0)
+ goto lab;
+ for (i = 0; i < j; i++)
+ {
+ lab:
+ foo ();
+ if (!j)
+ goto lab;
+ }
+ return 0;
+}
+
+int
+main ()
+{
+ s = 1;
+ bar ();
+ if (c != 1)
+ __builtin_abort ();
+ return 0;
+}

91
gcc11-pr100797.patch Normal file
View File

@ -0,0 +1,91 @@
2021-05-27 Jason Merrill <jason@redhat.com>
PR c++/100797
PR c++/95719
* call.c (build_over_call): Adjust base_binfo in
resolves_to_fixed_type_p case.
* g++.dg/inherit/virtual15.C: New test.
--- gcc/cp/call.c
+++ gcc/cp/call.c
@@ -9152,18 +9152,32 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain)
if (base_binfo == error_mark_node)
return error_mark_node;
}
- tree converted_arg = build_base_path (PLUS_EXPR, arg,
- base_binfo, 1, complain);
/* If we know the dynamic type of the object, look up the final overrider
in the BINFO. */
if (DECL_VINDEX (fn) && (flags & LOOKUP_NONVIRTUAL) == 0
&& resolves_to_fixed_type_p (arg))
{
- fn = lookup_vfn_in_binfo (DECL_VINDEX (fn), base_binfo);
- flags |= LOOKUP_NONVIRTUAL;
+ tree ov = lookup_vfn_in_binfo (DECL_VINDEX (fn), base_binfo);
+
+ /* And unwind base_binfo to match. If we don't find the type we're
+ looking for in BINFO_INHERITANCE_CHAIN, we're looking at diamond
+ inheritance; for now do a normal virtual call in that case. */
+ tree octx = DECL_CONTEXT (ov);
+ tree obinfo = base_binfo;
+ while (obinfo && !SAME_BINFO_TYPE_P (BINFO_TYPE (obinfo), octx))
+ obinfo = BINFO_INHERITANCE_CHAIN (obinfo);
+ if (obinfo)
+ {
+ fn = ov;
+ base_binfo = obinfo;
+ flags |= LOOKUP_NONVIRTUAL;
+ }
}
+ tree converted_arg = build_base_path (PLUS_EXPR, arg,
+ base_binfo, 1, complain);
+
argarray[j++] = converted_arg;
parm = TREE_CHAIN (parm);
if (first_arg != NULL_TREE)
--- gcc/testsuite/g++.dg/inherit/virtual15.C
+++ gcc/testsuite/g++.dg/inherit/virtual15.C
@@ -0,0 +1,18 @@
+// PR c++/100797
+// { dg-do run }
+
+bool ok = false;
+struct S1 { virtual ~S1() {} };
+struct S2 { virtual void f1() = 0; };
+struct S3: S1, S2 {
+ void f1() { f2(); }
+ virtual void f2() = 0;
+};
+struct S4: S3 {
+ void f2() { ok = true; }
+ using S2::f1;
+};
+int main() {
+ S4().f1();
+ if (!ok) __builtin_abort ();
+}
--- gcc/testsuite/g++.dg/inherit/virtual15a.C
+++ gcc/testsuite/g++.dg/inherit/virtual15a.C
@@ -0,0 +1,19 @@
+// PR c++/100797 plus diamond inheritance
+// { dg-do run }
+
+bool ok = false;
+struct S1 { virtual ~S1() {} };
+struct S2 { virtual void f1() = 0; };
+struct S3: S1, virtual S2 {
+ void f1() { f2(); }
+ virtual void f2() = 0;
+};
+struct SX: virtual S2 { };
+struct S4: SX, S3 {
+ void f2() { ok = true; }
+ using S2::f1;
+};
+int main() {
+ S4().f1();
+ if (!ok) __builtin_abort ();
+}

View File

@ -1,4 +1,4 @@
SHA512 (gcc-11.1.1-20210512.tar.xz) = 6cc7d8a3a641182c1d7d0d74097daef8c98a6feeedcb73fd1414831fec94930ec35baba11b67bc729bde1ed827799df33b7982799d4d2a07a189375d1262d8c8
SHA512 (gcc-11.1.1-20210531.tar.xz) = e09a4e70d672c354b8b08660ecbe33cfb0b49fd67a6afb9c1b261aef9a6ed4daf2a15b616d62ce230cd556f6cbbd137038f6a4d109d4a9a84758e7be3a77a93d
SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94
SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c
SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7