diff --git a/.gitignore b/.gitignore index 8156692..b815574 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/gcc.spec b/gcc.spec index f2ac97e..7ee667b 100644 --- a/gcc.spec +++ b/gcc.spec @@ -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 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 11.1.1-2 - update from releases/gcc-11-branch - PRs c++/98032, c++/100319, c++/100362, c/100450, fortran/100274, diff --git a/gcc11-pr100379.patch b/gcc11-pr100379.patch deleted file mode 100644 index cd5d66e..0000000 --- a/gcc11-pr100379.patch +++ /dev/null @@ -1,115 +0,0 @@ -2021-05-10 Tamar Christina - - 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() && !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 - #endif - #include --#include -+#if SANITIZER_LINUX_CYCLADES -+# include -+#endif - #include - #include - #include -@@ -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); diff --git a/gcc11-pr100566.patch b/gcc11-pr100566.patch deleted file mode 100644 index 6134be2..0000000 --- a/gcc11-pr100566.patch +++ /dev/null @@ -1,69 +0,0 @@ -2021-05-12 Richard Biener - - 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; -+} diff --git a/gcc11-pr100797.patch b/gcc11-pr100797.patch new file mode 100644 index 0000000..ff85ade --- /dev/null +++ b/gcc11-pr100797.patch @@ -0,0 +1,91 @@ +2021-05-27 Jason Merrill + + 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 (); ++} diff --git a/sources b/sources index 3e78a57..7c9c540 100644 --- a/sources +++ b/sources @@ -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