From a067db068a3f74404bf2e2a906d02bd5da123518 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 2 Nov 2020 13:32:00 +0100 Subject: [PATCH 001/293] 10.2.1-7 --- .gitignore | 1 + gcc.spec | 15 ++++++++++++--- sources | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 736c846..f3cbb4d 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ /gcc-10.2.1-20200916.tar.xz /gcc-10.2.1-20201005.tar.xz /gcc-10.2.1-20201016.tar.xz +/gcc-10.2.1-20201102.tar.xz diff --git a/gcc.spec b/gcc.spec index 51a5a24..aa64aa1 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20201016 -%global gitrev b55a9d01144097312b48281486c03e83cf03fde5 +%global DATE 20201102 +%global gitrev 736fd853f0e75ad3f91bdc7156f6b4475a1b60c1 %global gcc_version 10.2.1 %global gcc_major 10 # 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 6 +%global gcc_release 7 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -3054,6 +3054,15 @@ end %endif %changelog +* Mon Nov 2 2020 Jakub Jelinek 10.2.1-7 +- update from releases/gcc-10 branch + - PRs c++/95132, c++/96241, c++/97010, c++/97197, c++/97328, fortran/95979, + ipa/96394, ipa/97404, libstdc++/97132, lto/97508, + rtl-optimization/97386, rtl-optimization/97439, sanitizer/97294, + sanitizer/97414, target/96759, target/96914, target/97291, + target/97327, target/97506, testsuite/95886, tree-optimization/97081, + tree-optimization/97456 + * Fri Oct 16 2020 Jakub Jelinek 10.2.1-6 - update from releases/gcc-10 branch - PRs c++/88115, c++/96229, fortran/97272, libstdc++/95788, libstdc++/97273, diff --git a/sources b/sources index 160a0d6..bc362aa 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-10.2.1-20201016.tar.xz) = d324b7c872210a14aabdc117567ae6eff98d40ee8bf7a705a8caf1330d698e167016fb98f095ab56de43140e5f19932775ff3d5757434e3f78f2eec57d3dd1c4 +SHA512 (gcc-10.2.1-20201102.tar.xz) = 2b94ad339648bb5da08d47f6e3158c3e21a2b393049d105f491012a28f8b37949ceabba59d071d5faefe60035635157ddecc8b37e7296277592355bcf539ade8 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From de14d872a47fc9b78c73cdb940597943a65f8a9a Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 12 Nov 2020 11:29:08 +0100 Subject: [PATCH 002/293] 10.2.1-8 --- .gitignore | 1 + gcc.spec | 24 ++++++++++++++++++++---- gcc10-pr97060.patch | 34 ++++++++++++++++++++++++++++++++++ sources | 2 +- 4 files changed, 56 insertions(+), 5 deletions(-) create mode 100644 gcc10-pr97060.patch diff --git a/.gitignore b/.gitignore index f3cbb4d..1dc73e2 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ /gcc-10.2.1-20201005.tar.xz /gcc-10.2.1-20201016.tar.xz /gcc-10.2.1-20201102.tar.xz +/gcc-10.2.1-20201112.tar.xz diff --git a/gcc.spec b/gcc.spec index aa64aa1..4277563 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20201102 -%global gitrev 736fd853f0e75ad3f91bdc7156f6b4475a1b60c1 +%global DATE 20201112 +%global gitrev 86495efb7a403b1ee3419fb3b3b1aaf26345ada5 %global gcc_version 10.2.1 %global gcc_major 10 # 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 7 +%global gcc_release 8 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -171,7 +171,7 @@ BuildRequires: texinfo, texinfo-tex, /usr/bin/pod2man BuildRequires: systemtap-sdt-devel >= 1.3 BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 3.1.0, libmpc-devel >= 0.8.1 BuildRequires: python3-devel, /usr/bin/python -BuildRequires: gcc, gcc-c++ +BuildRequires: gcc, gcc-c++, make %if %{build_go} BuildRequires: hostname, procps %endif @@ -248,6 +248,8 @@ Requires: glibc >= 2.16 %endif Requires: libgcc >= %{version}-%{release} Requires: libgomp = %{version}-%{release} +# lto-wrapper invokes make +Requires: make %if !%{build_ada} Obsoletes: gcc-gnat < %{version}-%{release} %endif @@ -272,6 +274,7 @@ Patch12: gcc10-pr96383.patch Patch13: gcc10-pr96939.patch Patch14: gcc10-pr96939-2.patch Patch15: gcc10-pr96939-3.patch +Patch16: gcc10-pr97060.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -788,6 +791,7 @@ to NVidia PTX capable devices if available. %patch14 -p0 -b .pr96939-2~ %patch15 -p0 -b .pr96939-3~ find gcc/testsuite -name \*.pr96939~ | xargs rm -f +%patch16 -p0 -b .pr97060~ echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE @@ -3054,6 +3058,18 @@ end %endif %changelog +* Thu Nov 12 2020 Jakub Jelinek 10.2.1-8 +- update from releases/gcc-10 branch + - PRs c++/97412, fortran/92793, fortran/97652, libstdc++/92285, + libstdc++/96269, libstdc++/97362, libstdc++/97731, middle-end/97392, + target/85486, target/97360, target/97638, target/97685, + testsuite/80219, testsuite/85303, testsuite/97688, testsuite/97797, + tree-optimization/97633, tree-optimization/97764 + - fix up Fortran ICE on operator with CHARACTER operand (#1895612, + PR fortran/97768) +- emit DW_AT_declaration on declaration-only DIEs (#1889516, PR debug/97060) +- add BuildRequires: make and Requires: make, the latter for -flto reasons + * Mon Nov 2 2020 Jakub Jelinek 10.2.1-7 - update from releases/gcc-10 branch - PRs c++/95132, c++/96241, c++/97010, c++/97197, c++/97328, fortran/95979, diff --git a/gcc10-pr97060.patch b/gcc10-pr97060.patch new file mode 100644 index 0000000..bd0d7be --- /dev/null +++ b/gcc10-pr97060.patch @@ -0,0 +1,34 @@ +2020-11-11 Jason Merrill + + PR debug/97060 + * dwarf2out.c (gen_subprogram_die): It's a declaration + if DECL_INITIAL isn't set. + + * gcc.dg/debug/dwarf2/pr97060.c: New test. + +--- gcc/dwarf2out.c ++++ gcc/dwarf2out.c +@@ -22859,6 +22859,7 @@ gen_subprogram_die (tree decl, dw_die_ref context_die) + available. + */ + int declaration = (current_function_decl != decl ++ || (!DECL_INITIAL (decl) && !origin) + || class_or_namespace_scope_p (context_die)); + + /* A declaration that has been previously dumped needs no +--- gcc/testsuite/gcc.dg/debug/dwarf2/pr97060.c ++++ gcc/testsuite/gcc.dg/debug/dwarf2/pr97060.c +@@ -0,0 +1,13 @@ ++/* PR debug/97060 */ ++/* { dg-do compile } */ ++/* { dg-options "-g -dA" } */ ++/* { dg-final { scan-assembler-times "DW_AT_declaration" 2 } } */ ++ ++extern int foo (unsigned int, unsigned int); ++ ++int ++bar (void) ++{ ++ foo (1, 2); ++ return 0; ++} diff --git a/sources b/sources index bc362aa..5302408 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-10.2.1-20201102.tar.xz) = 2b94ad339648bb5da08d47f6e3158c3e21a2b393049d105f491012a28f8b37949ceabba59d071d5faefe60035635157ddecc8b37e7296277592355bcf539ade8 +SHA512 (gcc-10.2.1-20201112.tar.xz) = 6f624eee77c0a35939978d59e7411764343a29d969a25e1a78c5fa27fc74b539c4a65c591f5699268cfe118df0054b5996b49b6cd2c02ce105ff86b5b935b2a1 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 94687bec15156308bd04ca2d0ef40df6091ac93b Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 25 Nov 2020 13:27:09 +0100 Subject: [PATCH 003/293] 10.2.1-9 --- .gitignore | 1 + gcc.spec | 19 +++++++++++++++---- sources | 2 +- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 1dc73e2..e230e3b 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ /gcc-10.2.1-20201016.tar.xz /gcc-10.2.1-20201102.tar.xz /gcc-10.2.1-20201112.tar.xz +/gcc-10.2.1-20201125.tar.xz diff --git a/gcc.spec b/gcc.spec index 4277563..be32486 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20201112 -%global gitrev 86495efb7a403b1ee3419fb3b3b1aaf26345ada5 +%global DATE 20201125 +%global gitrev 2cd1f70a7b47cb9bd8da4aa4663e7d75b0cfcac5 %global gcc_version 10.2.1 %global gcc_major 10 # 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 8 +%global gcc_release 9 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -791,7 +791,7 @@ to NVidia PTX capable devices if available. %patch14 -p0 -b .pr96939-2~ %patch15 -p0 -b .pr96939-3~ find gcc/testsuite -name \*.pr96939~ | xargs rm -f -%patch16 -p0 -b .pr97060~ +#%patch16 -p0 -b .pr97060~ echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE @@ -3058,6 +3058,17 @@ end %endif %changelog +* Wed Nov 25 2020 Jakub Jelinek 10.2.1-9 +- update from releases/gcc-10 branch + - PRs c++/67453, c++/96805, c++/97663, c++/97790, c/97748, c/97958, d/97842, + d/97843, d/97889, fortran/95847, fortran/97782, libstdc++/93456, + libstdc++/95989, libstdc++/96042, libstdc++/97798, libstdc++/97828, + libstdc++/97869, libstdc++/97876, target/97528, target/97534, + target/97535, target/97682, target/97727, target/97730, target/97887 + - fix LTO -g ICE on firefox 83 (#1899294, PR c++/97918) + - fix DW_TAG_unspecified_parameters for LTO or function clones + (#1893340, PR debug/97599) + * Thu Nov 12 2020 Jakub Jelinek 10.2.1-8 - update from releases/gcc-10 branch - PRs c++/97412, fortran/92793, fortran/97652, libstdc++/92285, diff --git a/sources b/sources index 5302408..fb0364f 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-10.2.1-20201112.tar.xz) = 6f624eee77c0a35939978d59e7411764343a29d969a25e1a78c5fa27fc74b539c4a65c591f5699268cfe118df0054b5996b49b6cd2c02ce105ff86b5b935b2a1 +SHA512 (gcc-10.2.1-20201125.tar.xz) = 4a1d389032f699f47004a146d0cf96aad4febc46d0bc4750a6a435134822743f68739fcc1b9dcc4ae26d26a5d82ad71c83ecc67d2307d722157d1a7bee4a42c5 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 230cd6b21706295659ee704eac4b9d409e35bb56 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 4 Dec 2020 19:28:55 +0100 Subject: [PATCH 004/293] 11.0.0-0.7 --- .gitignore | 1 + gcc.spec | 654 +++++------------- gcc10-pr96383.patch | 236 ------- gcc10-pr96939-2.patch | 51 -- gcc10-pr96939-3.patch | 111 --- gcc10-pr96939.patch | 64 -- gcc10-pr97060.patch | 34 - ...y.patch => gcc11-Wno-format-security.patch | 0 ...os.patch => gcc11-d-shared-libphobos.patch | 0 ...ault.patch => gcc11-foffload-default.patch | 50 +- gcc10-hack.patch => gcc11-hack.patch | 0 ...-libgomp.patch => gcc11-i386-libgomp.patch | 0 gcc10-isl-dl.patch => gcc11-isl-dl.patch | 13 +- ...atch => gcc11-libgomp-omp_h-multilib.patch | 0 ...+-docs.patch => gcc11-libstdc++-docs.patch | 4 +- ...path.patch => gcc11-libtool-no-rpath.patch | 0 ...-needed.patch => gcc11-no-add-needed.patch | 0 ...0-rh1574936.patch => gcc11-rh1574936.patch | 0 ...atch => gcc11-sparc-config-detection.patch | 0 sources | 2 +- update-gcc.sh | 2 +- 21 files changed, 206 insertions(+), 1016 deletions(-) delete mode 100644 gcc10-pr96383.patch delete mode 100644 gcc10-pr96939-2.patch delete mode 100644 gcc10-pr96939-3.patch delete mode 100644 gcc10-pr96939.patch delete mode 100644 gcc10-pr97060.patch rename gcc10-Wno-format-security.patch => gcc11-Wno-format-security.patch (100%) rename gcc10-d-shared-libphobos.patch => gcc11-d-shared-libphobos.patch (100%) rename gcc10-foffload-default.patch => gcc11-foffload-default.patch (82%) rename gcc10-hack.patch => gcc11-hack.patch (100%) rename gcc10-i386-libgomp.patch => gcc11-i386-libgomp.patch (100%) rename gcc10-isl-dl.patch => gcc11-isl-dl.patch (99%) rename gcc10-libgomp-omp_h-multilib.patch => gcc11-libgomp-omp_h-multilib.patch (100%) rename gcc10-libstdc++-docs.patch => gcc11-libstdc++-docs.patch (96%) rename gcc10-libtool-no-rpath.patch => gcc11-libtool-no-rpath.patch (100%) rename gcc10-no-add-needed.patch => gcc11-no-add-needed.patch (100%) rename gcc10-rh1574936.patch => gcc11-rh1574936.patch (100%) rename gcc10-sparc-config-detection.patch => gcc11-sparc-config-detection.patch (100%) diff --git a/.gitignore b/.gitignore index e230e3b..0d11d30 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ /gcc-10.2.1-20201102.tar.xz /gcc-10.2.1-20201112.tar.xz /gcc-10.2.1-20201125.tar.xz +/gcc-11.0.0-20201204.tar.xz diff --git a/gcc.spec b/gcc.spec index be32486..23c7843 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20201125 -%global gitrev 2cd1f70a7b47cb9bd8da4aa4663e7d75b0cfcac5 -%global gcc_version 10.2.1 -%global gcc_major 10 +%global DATE 20201204 +%global gitrev d35391d824edee33b5fbce3df058f4fafd9b9fa6 +%global gcc_version 11.0.0 +%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 9 +%global gcc_release 0 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -119,12 +119,14 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist} +Release: %{gcc_release}.7%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD -# The source for this package was pulled from upstream's vcs. Use the -# following commands to generate the tarball: +# The source for this package was pulled from upstream's vcs. +# %%{gitrev} is some commit from the +# https://gcc.gnu.org/git/?p=gcc.git;h=refs/vendors/redhat/heads/gcc-%%{gcc_major}-branch +# branch. Use the following commands to generate the tarball: # git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp # git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin %%{gitrev} # git --git-dir=gcc-dir.tmp/.git archive --prefix=%%{name}-%%{version}-%%{DATE}/ %%{gitrev} | xz -9e > %%{name}-%%{version}-%%{DATE}.tar.xz @@ -258,23 +260,18 @@ AutoReq: true Provides: bundled(libiberty) Provides: gcc(major) = %{gcc_major} -Patch0: gcc10-hack.patch -Patch1: gcc10-i386-libgomp.patch -Patch2: gcc10-sparc-config-detection.patch -Patch3: gcc10-libgomp-omp_h-multilib.patch -Patch4: gcc10-libtool-no-rpath.patch -Patch5: gcc10-isl-dl.patch -Patch6: gcc10-libstdc++-docs.patch -Patch7: gcc10-no-add-needed.patch -Patch8: gcc10-foffload-default.patch -Patch9: gcc10-Wno-format-security.patch -Patch10: gcc10-rh1574936.patch -Patch11: gcc10-d-shared-libphobos.patch -Patch12: gcc10-pr96383.patch -Patch13: gcc10-pr96939.patch -Patch14: gcc10-pr96939-2.patch -Patch15: gcc10-pr96939-3.patch -Patch16: gcc10-pr97060.patch +Patch0: gcc11-hack.patch +Patch1: gcc11-i386-libgomp.patch +Patch2: gcc11-sparc-config-detection.patch +Patch3: gcc11-libgomp-omp_h-multilib.patch +Patch4: gcc11-libtool-no-rpath.patch +Patch5: gcc11-isl-dl.patch +Patch6: gcc11-libstdc++-docs.patch +Patch7: gcc11-no-add-needed.patch +Patch8: gcc11-foffload-default.patch +Patch9: gcc11-Wno-format-security.patch +Patch10: gcc11-rh1574936.patch +Patch11: gcc11-d-shared-libphobos.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -296,7 +293,7 @@ Patch16: gcc10-pr97060.patch %if %{build_go} # Avoid stripping these libraries and binaries. %global __os_install_post \ -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.16.* \ +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.17.* \ chmod 644 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -304,7 +301,7 @@ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/test2json \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/vet \ %__os_install_post \ -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.16.* \ +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.17.* \ chmod 755 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 755 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -315,11 +312,11 @@ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} %endif %description -The gcc package contains the GNU Compiler Collection version 10. +The gcc package contains the GNU Compiler Collection version 11. You'll need this package in order to compile C code. %package -n libgcc -Summary: GCC version 10 shared support library +Summary: GCC version 11 shared support library Autoreq: false %if !%{build_ada} Obsoletes: libgnat < %{version}-%{release} @@ -786,12 +783,6 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr96383~ -%patch13 -p0 -b .pr96939~ -%patch14 -p0 -b .pr96939-2~ -%patch15 -p0 -b .pr96939-3~ -find gcc/testsuite -name \*.pr96939~ | xargs rm -f -#%patch16 -p0 -b .pr97060~ echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE @@ -986,6 +977,9 @@ CONFIGURE_OPTS="\ --with-arch=x86-64 \ %endif %ifarch x86_64 +%if 0%{?rhel} > 8 + --with-arch_64=x86-64-v2 \ +%endif --with-arch_32=x86-64 \ %endif %else @@ -999,7 +993,11 @@ CONFIGURE_OPTS="\ %ifarch s390 s390x %if 0%{?rhel} >= 7 %if 0%{?rhel} > 7 +%if 0%{?rhel} > 8 + --with-arch=z13 --with-tune=arch13 \ +%else --with-arch=z13 --with-tune=z14 \ +%endif %else --with-arch=z196 --with-tune=zEC12 \ %endif @@ -1388,7 +1386,7 @@ ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../libgfortran.so.5.* libgfortran.so ln -sf ../../../libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../libgo.so.16.* libgo.so +ln -sf ../../../libgo.so.17.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../libquadmath.so.0.* libquadmath.so @@ -1418,7 +1416,7 @@ ln -sf ../../../../%{_lib}/libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../../%{_lib}/libgfortran.so.5.* libgfortran.so ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../../%{_lib}/libgo.so.16.* libgo.so +ln -sf ../../../../%{_lib}/libgo.so.17.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so @@ -1538,8 +1536,8 @@ ln -sf ../`echo ../../../../lib/libgfortran.so.5.* | sed s~/lib/~/lib64/~` 64/li ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.16.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.16.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.17.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.17.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -1637,8 +1635,8 @@ ln -sf ../`echo ../../../../lib64/libgfortran.so.5.* | sed s~/../lib64/~/~` 32/l ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.16.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.16.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.17.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.17.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -1825,7 +1823,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.* %endif %if %{build_go} # Avoid stripping these libraries and binaries. -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.16.* +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.17.* chmod 644 %{buildroot}%{_prefix}/bin/go.gcc chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo @@ -2190,6 +2188,16 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/enqcmdintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vp2intersectintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vp2intersectvlintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/serializeintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/tsxldtrkintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxtileintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxint8intrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxbf16intrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/x86gprintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/uintrintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/hresetintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/keylockerintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avxvnniintrin.h %endif %ifarch ia64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ia64intrin.h @@ -2950,7 +2958,7 @@ end %doc rpm.doc/go/* %files -n libgo -%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.16* +%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.17* %doc rpm.doc/libgo/* %files -n libgo-devel @@ -3058,448 +3066,130 @@ end %endif %changelog -* Wed Nov 25 2020 Jakub Jelinek 10.2.1-9 -- update from releases/gcc-10 branch - - PRs c++/67453, c++/96805, c++/97663, c++/97790, c/97748, c/97958, d/97842, - d/97843, d/97889, fortran/95847, fortran/97782, libstdc++/93456, - libstdc++/95989, libstdc++/96042, libstdc++/97798, libstdc++/97828, - libstdc++/97869, libstdc++/97876, target/97528, target/97534, - target/97535, target/97682, target/97727, target/97730, target/97887 - - fix LTO -g ICE on firefox 83 (#1899294, PR c++/97918) - - fix DW_TAG_unspecified_parameters for LTO or function clones - (#1893340, PR debug/97599) +* Fri Dec 4 2020 Jakub Jelinek 11.0.0-0.7 +- update from trunk + - PRs bootstrap/97983, c++/80780, c++/90629, c++/93093, c++/97187, + c++/97947, c++/97975, c++/97993, c++/98019, c++/98054, c++/98072, + c++/98104, c++/98107, c++/98115, c++/98116, c/65455, c/92935, c/97880, + c/98087, d/87788, d/87818, d/98025, debug/97989, fortran/95342, + fortran/98010, fortran/98011, fortran/98013, ipa/88702, ipa/98057, + ipa/98075, jit/97867, libgcc/97543, libgcc/97643, libstdc++/65480, + libstdc++/68735, libstdc++/93121, libstdc++/98001, libstdc++/98003, + middle-end/89428, middle-end/92936, middle-end/92940, + middle-end/93195, middle-end/93197, middle-end/94527, + middle-end/97373, middle-end/97595, middle-end/98070, + middle-end/98082, middle-end/98099, other/98027, plugins/98059, + preprocessor/97602, rtl-optimization/97459, rtl-optimization/97777, + rtl-optimization/97954, rtl-optimization/98037, target/96607, + target/96906, target/97642, target/97770, target/97939, target/98063, + target/98079, target/98086, testsuite/98002, testsuite/98036, + testsuite/98085, tree-optimization/14799, tree-optimization/88702, + tree-optimization/96679, tree-optimization/96708, + tree-optimization/97630, tree-optimization/97953, + tree-optimization/97979, tree-optimization/97997, + tree-optimization/98024, tree-optimization/98048, + tree-optimization/98064, tree-optimization/98066, + tree-optimization/98084 -* Thu Nov 12 2020 Jakub Jelinek 10.2.1-8 -- update from releases/gcc-10 branch - - PRs c++/97412, fortran/92793, fortran/97652, libstdc++/92285, - libstdc++/96269, libstdc++/97362, libstdc++/97731, middle-end/97392, - target/85486, target/97360, target/97638, target/97685, - testsuite/80219, testsuite/85303, testsuite/97688, testsuite/97797, - tree-optimization/97633, tree-optimization/97764 - - fix up Fortran ICE on operator with CHARACTER operand (#1895612, - PR fortran/97768) -- emit DW_AT_declaration on declaration-only DIEs (#1889516, PR debug/97060) +* Thu Nov 26 2020 Jakub Jelinek 11.0.0-0.6 +- update from trunk + - PRs bootstrap/94982, bootstrap/97622, bootstrap/97933, c++/97899, c/97958, + fortran/85796, libstdc++/67791, libstdc++/97935, libstdc++/97936, + libstdc++/97944, middle-end/97943, middle-end/97956, + rtl-optimization/95862, target/91816, target/97534, target/97950, + tree-optimization/96929, tree-optimization/97849, + tree-optimization/97964 + +* Tue Nov 24 2020 Jakub Jelinek 11.0.0-0.5 +- update from trunk + - PRs c++/94695, c++/97427, c++/97839, c++/97846, c++/97881, c++/97904, + c/95630, d/97889, libstdc++/97948, tree-optimization/95853 + +* Sat Nov 21 2020 Jakub Jelinek 11.0.0-0.4 +- update from trunk + - PRs ada/97805, ada/97859, analyzer/97668, analyzer/97893, bootstrap/57076, + bootstrap/97666, bootstrap/97857, c++/25814, c++/52830, c++/63287, + c++/67453, c++/78209, c++/81660, c++/87765, c++/88115, c++/88982, + c++/89565, c++/90799, c++/91318, c++/93107, c++/93907, c++/95808, + c++/97388, c++/97412, c++/97453, c++/97479, c++/97518, c++/97523, + c++/97632, c++/97663, c++/97670, c++/97675, c++/97762, c++/97790, + c++/97871, c++/97877, c++/97895, c++/97905, c++/97918, c/90628, + c/97748, c/97860, d/97644, d/97842, d/97843, debug/97060, debug/97599, + debug/97718, driver/97574, fortran/90111, fortran/92793, + fortran/94358, fortran/95847, fortran/97652, fortran/97655, + fortran/97768, fortran/97782, ipa/97578, ipa/97660, ipa/97695, + ipa/97698, ipa/97816, jit/87291, libstdc++/55394, libstdc++/66146, + libstdc++/83938, libstdc++/84323, libstdc++/88101, libstdc++/92285, + libstdc++/92546, libstdc++/93421, libstdc++/93456, libstdc++/94971, + libstdc++/95989, libstdc++/96269, libstdc++/96958, libstdc++/97415, + libstdc++/97600, libstdc++/97613, libstdc++/97719, libstdc++/97729, + libstdc++/97731, libstdc++/97758, libstdc++/97798, libstdc++/97828, + libstdc++/97869, lto/97290, lto/97508, middle-end/85811, + middle-end/95673, middle-end/97267, middle-end/97556, + middle-end/97579, middle-end/97840, middle-end/97862, + middle-end/97879, objc/77404, objc/90707, objc/97854, other/97911, + pch/86674, pch/97593, preprocessor/97858, rtl-optimization/92180, + rtl-optimization/97705, sanitizer/95634, target/31799, target/85486, + target/91489, target/93449, target/96307, target/96770, target/96791, + target/96933, target/96967, target/96998, target/97140, target/97194, + target/97205, target/97326, target/97528, target/97532, target/97540, + target/97638, target/97682, target/97685, target/97715, target/97726, + target/97727, target/97730, target/97870, target/97873, + testsuite/80219, testsuite/85303, testsuite/97117, testsuite/97688, + testsuite/97788, testsuite/97797, testsuite/97803, + tree-optimization/80928, tree-optimization/83072, + tree-optimization/91029, tree-optimization/93781, + tree-optimization/94406, tree-optimization/96671, + tree-optimization/96789, tree-optimization/97223, + tree-optimization/97424, tree-optimization/97558, + tree-optimization/97609, tree-optimization/97623, + tree-optimization/97626, tree-optimization/97633, + tree-optimization/97650, tree-optimization/97678, + tree-optimization/97690, tree-optimization/97693, + tree-optimization/97706, tree-optimization/97709, + tree-optimization/97721, tree-optimization/97725, + tree-optimization/97732, tree-optimization/97733, + tree-optimization/97736, tree-optimization/97737, + tree-optimization/97741, tree-optimization/97746, + tree-optimization/97753, tree-optimization/97760, + tree-optimization/97761, tree-optimization/97764, + tree-optimization/97765, tree-optimization/97767, + tree-optimization/97769, tree-optimization/97780, + tree-optimization/97806, tree-optimization/97812, + tree-optimization/97830, tree-optimization/97835, + tree-optimization/97838, tree-optimization/97886, + tree-optimization/97888, tree-optimization/97897, + tree-optimization/97901 - add BuildRequires: make and Requires: make, the latter for -flto reasons -* Mon Nov 2 2020 Jakub Jelinek 10.2.1-7 -- update from releases/gcc-10 branch - - PRs c++/95132, c++/96241, c++/97010, c++/97197, c++/97328, fortran/95979, - ipa/96394, ipa/97404, libstdc++/97132, lto/97508, - rtl-optimization/97386, rtl-optimization/97439, sanitizer/97294, - sanitizer/97414, target/96759, target/96914, target/97291, - target/97327, target/97506, testsuite/95886, tree-optimization/97081, - tree-optimization/97456 - -* Fri Oct 16 2020 Jakub Jelinek 10.2.1-6 -- update from releases/gcc-10 branch - - PRs c++/88115, c++/96229, fortran/97272, libstdc++/95788, libstdc++/97273, - lto/97290, middle-end/95189, middle-end/95886, rtl-optimization/97313, - target/96313, target/96456, target/97150, target/97251, target/97302, - target/97349, tree-optimization/97236, tree-optimization/97255, - tree-optimization/97357 - - fix ICE on building Firefox with LTO+PGO (#1886399, PR ipa/97295) - -* Mon Oct 5 2020 Jakub Jelinek 10.2.1-5 -- update from releases/gcc-10 branch - - PRs bootstrap/97163, bootstrap/97183, c++/96994, c++/97145, c++/97195, - fortran/93423, fortran/95614, fortran/96041, gcov-profile/64636, - gcov-profile/96913, gcov-profile/97069, gcov-profile/97193, - libstdc++/94160, libstdc++/94681, libstdc++/96803, libstdc++/97101, - libstdc++/97167, middle-end/95464, middle-end/97054, middle-end/97073, - preprocessor/96935, target/71233, target/96683, target/96795, - target/96827, target/97166, target/97184, target/97231, target/97247, - tree-optimization/96979, tree-optimization/97053 - -* Wed Sep 16 2020 Jakub Jelinek 10.2.1-4 -- update from releases/gcc-10 branch - - PRs bootstrap/96203, c++/95164, c++/96862, c++/96901, d/96157, d/96924, - debug/93865, debug/94235, debug/96729, fortran/94690, fortran/95109, - fortran/95398, fortran/95882, fortran/96859, libstdc++/71960, - libstdc++/92978, libstdc++/96766, libstdc++/96851, lto/94311, - middle-end/87256, middle-end/96369, target/85830, target/94538, - target/96357, target/96551, target/96574, target/96744, target/96808, - target/97028, tree-optimization/88240, tree-optimization/96349, - tree-optimization/96370, tree-optimization/96514, - tree-optimization/96522, tree-optimization/96579, - tree-optimization/96597, tree-optimization/96820, - tree-optimization/96854, tree-optimization/97043 -- fix up ARM target attribute/pragma handling (#1875814, PR target/96939) -- don't ICE on sp clobbers with -mincoming-stack-boundary=2 on ia32 - (#1862029, PR target/97032) - -* Wed Aug 26 2020 Jakub Jelinek 10.2.1-3 -- update from releases/gcc-10 branch - - PRs c++/95428, c++/96082, c++/96106, c++/96164, c++/96199, c++/96497, - c/96545, c/96549, c/96571, d/96250, d/96254, d/96301, debug/96354, - fortran/93553, fortran/96312, fortran/96486, ipa/95320, ipa/96291, - ipa/96482, libstdc++/89760, libstdc++/95749, libstdc++/96303, - libstdc++/96484, libstdc++/96718, lto/95362, lto/95548, - middle-end/96426, middle-end/96459, target/93897, target/95450, - target/96191, target/96243, target/96446, target/96493, target/96506, - target/96525, target/96530, target/96536, target/96562, target/96682, - tree-optimization/96483, tree-optimization/96535, - tree-optimization/96722, tree-optimization/96730, - tree-optimization/96758 -- mangle some further symbols needed for debug info during early dwarf - (#1862029, PR debug/96690) -- during %%check perform tests whether annobin is usable with the newly built - compiler or whether it might need to be rebuilt -- disable graphite for ELN - -* Tue Aug 4 2020 Jakub Jelinek 10.2.1-2 -- update from releases/gcc-10 branch - - PRs c++/95591, c++/95599, c++/95823, c++/95824, c++/95895, c/96377, - d/96140, fortran/89574, fortran/93567, fortran/93592, fortran/95585, - fortran/95612, fortran/95980, fortran/96018, fortran/96086, - fortran/96220, fortran/96319, lto/45375, middle-end/96335, - target/95435, target/96190, target/96236, target/96260, target/96402, - tree-optimization/96058 -- emit debug info for C/C++ external function declarations used in the TU - (PR debug/96383) -- discard SHN_UNDEF global symbols from LTO debuginfo (PR lto/96385) -- strip also -flto=auto from optflags - -* Thu Jul 23 2020 Jakub Jelinek 10.2.1-1 -- update from releases/gcc-10 branch - - GCC 10.2 release - - PRs bootstrap/94998, c++/90916, c++/95477, c++/95505, c++/95518, - c++/95519, c++/95711, c++/95719, c++/95736, c++/95789, c++/95813, - c++/95976, c++/96052, c++/96063, c++/96077, c++/96104, c++/96105, - c++/96179, c/95141, d/95173, d/95250, debug/95343, fortran/71706, - fortran/88379, fortran/93337, fortran/95340, fortran/95366, - fortran/95587, fortran/95687, fortran/95688, fortran/95689, - fortran/95707, fortran/95708, fortran/95709, fortran/95743, - fortran/95812, fortran/95826, fortran/95827, fortran/95828, - fortran/95829, fortran/95880, fortran/95881, fortran/95978, - ipa/12345, ipa/93223, ipa/96040, ipa/96130, libstdc++/91153, - libstdc++/91807, libstdc++/94087, libstdc++/94627, libstdc++/94936, - libstdc++/95282, libstdc++/95851, libstdc++/95915, lto/91576, - lto/95604, middle-end/94600, middle-end/94964, middle-end/95114, - middle-end/95118, middle-end/95270, middle-end/95493, - middle-end/95690, middle-end/95810, middle-end/95903, - middle-end/96194, target/12345, target/93224, target/93492, - target/94791, target/94891, target/95018, target/95105, target/95347, - target/95581, target/95683, target/95713, target/95726, target/95874, - target/96001, target/96125, target/96174, testsuite/96180, - tree-optimization/90838, tree-optimization/94969, - tree-optimization/95049, tree-optimization/95110, - tree-optimization/95133, tree-optimization/95308, - tree-optimization/95487, tree-optimization/95638, - tree-optimization/95717, tree-optimization/95804, - tree-optimization/95857, tree-optimization/96075, - tree-optimization/96133, tree-optimization/96146 - - disable s390x multilibs also for ELN - - disable -flto in %%{optflags}, lto bootstrap will be enabled the GCC way - later - -* Thu Jun 18 2020 Jakub Jelinek 10.1.1-2 -- update from releases/gcc-10 branch - - PRs c++/90212, c++/90479, c++/90915, c++/91529, c++/92103, c++/92633, - c++/92652, c++/92838, c++/93310, c++/93467, c++/93698, c++/93822, - c++/94128, c++/94817, c++/94829, c++/94885, c++/94937, c++/94955, - c++/95003, c++/95020, c++/95050, c++/95066, c++/95087, c++/95137, - c++/95158, c++/95181, c++/95197, c++/95222, c++/95241, c++/95319, - c++/95328, c++/95344, c++/95345, c++/95346, c++/95350, c++/95371, - c++/95386, c++/95440, c++/95508, c++/95560, c++/95562, c/95040, - c/95580, d/94970, d/95166, d/95167, d/95168, debug/95080, - fortran/39695, fortran/50392, fortran/59107, fortran/92993, - fortran/93366, fortran/93497, fortran/94109, fortran/94361, - fortran/94397, fortran/94672, fortran/95088, fortran/95090, - fortran/95091, fortran/95106, fortran/95373, fortran/95500, - fortran/95503, fortran/95530, fortran/95537, fortran/95544, - fortran/95611, gcov-profile/95332, ipa/94947, ipa/95113, - libfortran/95104, libfortran/95119, libfortran/95191, - libfortran/95390, libgomp/92854, libstdc++/77691, libstdc++/92894, - libstdc++/93983, libstdc++/94906, libstdc++/94933, libstdc++/95289, - libstdc++/95322, libstdc++/95578, lto/94848, lto/95190, - middle-end/94940, middle-end/95108, middle-end/95551, - middle-end/95622, sanitizer/94910, sanitizer/95634, target/91695, - target/94591, target/94735, target/94959, target/95169, target/95212, - target/95220, target/95255, target/95258, target/95355, target/95420, - target/95525, target/95528, testsuite/95361, testsuite/95575, - web/95380 -- correct instructions for creation of newlib tarball, filter out sun-rpc - licensed code that is never used during the package build - -* Mon May 11 2020 Tom Stellard -- add symlink to liblto_plugin.so in /usr/lib/bfd-plugins - -* Thu May 7 2020 Jakub Jelinek 10.1.1-1 -- update from releases/gcc-10 branch - - GCC 10.1.0 release - - PRs bootstrap/94918, c++/94907, c++/94938, c++/94946, c++/94951, c/94842, - c/94968, libstdc++/94901, middle-end/94941, rtl-optimization/94873, - target/94942, target/94950 - -* Sat May 2 2020 Jakub Jelinek 10.0.1-0.14 -- use libgcc_s.so linker script also on aarch64 and riscv64 (#1830472) - -* Fri May 1 2020 Jakub Jelinek 10.0.1-0.13 -- update from trunk and releases/gcc-10 branch - - GCC 10.1-rc1 - - PRs analyzer/94447, analyzer/94639, analyzer/94732, analyzer/94754, - analyzer/94816, bootstrap/94739, c++/79585, c++/90320, c++/90448, - c++/90750, c++/93807, c++/94288, c++/94383, c++/94505, c++/94510, - c++/94546, c++/94549, c++/94583, c++/94592, c++/94597, c++/94628, - c++/94645, c++/94661, c++/94682, c++/94701, c++/94719, c++/94733, - c++/94742, c++/94752, c++/94759, c++/94760, c++/94772, c++/94775, - c++/94808, c++/94819, c++/94827, c++/94830, c++/94879, c++/94883, - c++/94886, c/94641, c/94686, c/94705, c/94755, d/89418, d/94777, - d/94825, demangler/94797, driver/90983, fortran/90350, fortran/93956, - fortran/94578, fortran/94709, fortran/94737, fortran/94769, - fortran/94788, ipa/94856, libfortran/25830, libfortran/94586, - libfortran/94694, libstdc++/89510, libstdc++/90415, libstdc++/91480, - libstdc++/92156, libstdc++/94831, libstdc++/94854, lto/94659, - lto/94822, middle-end/92830, middle-end/93488, middle-end/94647, - middle-end/94724, rtl-optimization/94708, rtl-optimization/94740, - target/57002, target/91518, target/92713, target/93654, target/94248, - target/94279, target/94282, target/94383, target/94514, target/94515, - target/94577, target/94613, target/94622, target/94668, target/94678, - target/94697, target/94704, target/94706, target/94707, target/94710, - target/94711, target/94748, target/94780, target/94812, target/94820, - target/94826, target/94832, testsuite/94712, translation/94698, - tree-optimization/89430, tree-optimization/94683, - tree-optimization/94700, tree-optimization/94717, - tree-optimization/94727, tree-optimization/94734, - tree-optimization/94774, tree-optimization/94784, - tree-optimization/94809 - -* Mon Apr 20 2020 Jakub Jelinek 10.0.1-0.12 +* Thu Oct 29 2020 Jakub Jelinek 11.0.0-0.3 - update from trunk - - PRs analyzer/94378, bootstrap/89494, bootstrap/92008, c++/67825, - c++/79937, c++/85278, c++/86327, c++/88754, c++/90711, c++/90996, - c++/91377, c++/91966, c++/92010, c++/92187, c++/92878, c++/93207, - c++/93211, c++/93790, c++/94034, c++/94149, c++/94155, c++/94205, - c++/94219, c++/94252, c++/94306, c++/94314, c++/94325, c++/94359, - c++/94385, c++/94426, c++/94453, c++/94454, c++/94462, c++/94470, - c++/94475, c++/94477, c++/94478, c++/94480, c++/94481, c++/94483, - c++/94507, c++/94512, c++/94521, c++/94523, c++/94528, c++/94571, - c++/94588, c++/94608, c++/94632, c/92326, c/94392, c/94593, d/90136, - d/94304, d/94305, d/94315, d/94321, d/94424, d/94425, d/94609, - debug/94439, debug/94441, debug/94450, debug/94459, debug/94495, - driver/94381, fortran/57129, fortran/85982, fortran/87644, - fortran/87923, fortran/91800, fortran/93364, fortran/93498, - fortran/93500, fortran/93522, fortran/93686, fortran/93871, - fortran/94030, fortran/94090, fortran/94091, fortran/94192, - fortran/94246, fortran/94347, fortran/94348, fortran/94386, - gcov-profile/93401, gcov-profile/94570, go/94607, ipa/92676, - ipa/93621, ipa/93940, ipa/94363, ipa/94434, ipa/94445, ipa/94582, - libgcc/94513, libgomp/92843, libstdc++/93960, libstdc++/94498, - libstdc++/94520, libstdc++/94562, libstdc++/94565, lto/94612, - middle-end/89433, middle-end/93465, middle-end/94412, - middle-end/94423, middle-end/94436, middle-end/94465, - middle-end/94479, middle-end/94526, middle-end/94539, - middle-end/94614, middle-end/94635, objc/94637, other/94629, - rtl-optimization/84169, rtl-optimization/87716, - rtl-optimization/93946, rtl-optimization/93974, - rtl-optimization/94123, rtl-optimization/94291, - rtl-optimization/94344, rtl-optimization/94468, - rtl-optimization/94516, rtl-optimization/94605, - rtl-optimization/94618, target/93053, target/94317, target/94368, - target/94396, target/94417, target/94420, target/94435, target/94438, - target/94460, target/94467, target/94488, target/94494, target/94500, - target/94509, target/94530, target/94542, target/94551, target/94556, - target/94561, target/94567, target/94584, target/94603, target/94606, - testsuite/93369, testsuite/94079, testsuite/94402, testsuite/94533, - tree-optimization/89713, tree-optimization/91322, - tree-optimization/93674, tree-optimization/94043, - tree-optimization/94398, tree-optimization/94401, - tree-optimization/94403, tree-optimization/94443, - tree-optimization/94482, tree-optimization/94524, - tree-optimization/94573, tree-optimization/94574, - tree-optimization/94598, tree-optimization/94621 + - PRs ada/97504, analyzer/96608, analyzer/97489, analyzer/97514, + analyzer/97568, analyzer/97608, bootstrap/97451, c++/82239, c++/86773, + c++/91741, c++/94799, c++/95132, c++/96241, c++/96575, c++/96675, + c++/96742, c++/97328, c++/97438, c++/97511, c++/97573, c/94722, + c/97463, fortran/45516, fortran/97454, gcov-profile/97461, ipa/97445, + ipa/97576, ipa/97586, libstdc++/94268, libstdc++/95592, + libstdc++/95609, libstdc++/95917, libstdc++/96713, libstdc++/97512, + libstdc++/97570, lto/96680, lto/97524, middle-end/92942, + middle-end/97521, middle-end/97552, rtl-optimization/97249, + rtl-optimization/97439, rtl-optimization/97497, sanitizer/97414, + target/87767, target/95151, target/95458, target/97360, target/97502, + target/97506, target/97535, testsuite/81690, testsuite/97590, + tree-optimization/66552, tree-optimization/97164, + tree-optimization/97360, tree-optimization/97456, + tree-optimization/97457, tree-optimization/97466, + tree-optimization/97467, tree-optimization/97486, + tree-optimization/97488, tree-optimization/97496, + tree-optimization/97500, tree-optimization/97501, + tree-optimization/97503, tree-optimization/97505, + tree-optimization/97515, tree-optimization/97520, + tree-optimization/97538, tree-optimization/97539, + tree-optimization/97546, tree-optimization/97555, + tree-optimization/97560, tree-optimization/97567, + tree-optimization/97615 +- for ELN default to -march=x86-64-v2 for x86 64-bit compilation and + for s390x to -march=z13 -mtune=arch13 -* Sat Mar 28 2020 Jakub Jelinek 10.0.1-0.11 -- update from trunk - - PRs c++/81349, c++/84733, c++/93810, c++/93824, c++/94057, c++/94078, - c++/94098, c++/94257, c++/94265, c++/94272, c++/94319, c++/94326, - c++/94336, c++/94339, c++/94346, c/93573, debug/94273, debug/94281, - debug/94296, debug/94323, fortran/93363, fortran/93957, ipa/94271, - lto/94259, middle-end/94004, rtl-optimization/92264, target/94145, - target/94220, target/94292, testsuite/94334, tree-optimization/90332, - tree-optimization/94131, tree-optimization/94269, - tree-optimization/94329, tree-optimization/94352 -- fix x86 vec_extract_{lo,hi}*_mask AVX512* patterns (PR target/93069) -- fix x86 *one_cmpl*2* AVX512* patterns (PR target/94343) -- add BuildRequires: libzstd-devel - -* Wed Mar 25 2020 Jakub Jelinek 10.0.1-0.10 -- update from trunk - - PRs analyzer/94047, analyzer/94099, analyzer/94105, c++/67960, c++/69694, - c++/90995, c++/91759, c++/91993, c++/92068, c++/92909, c++/93248, - c++/93596, c++/93805, c++/93931, c++/94044, c++/94066, c++/94147, - c++/94175, c++/94186, c++/94190, c++/94197, c++/94223, c/94040, - c/94172, c/94179, c/94239, d/92216, d/92309, d/92792, d/93038, - d/94240, debug/93751, debug/94167, debug/94277, debug/94280, - debug/94283, debug/94285, fortran/93365, fortran/93484, fortran/93600, - gcov-profile/94029, ipa/92372, ipa/92799, ipa/93347, ipa/94202, - ipa/94217, ipa/94232, ipa/94245, ipa/94250, libgomp/81689, - libgomp/94251, libstdc++/93245, libstdc++/94033, libstdc++/94199, - libstdc++/94203, libstdc++/94242, lto/91027, lto/94157, lto/94249, - middle-end/92071, middle-end/93566, middle-end/94072, - middle-end/94120, middle-end/94188, middle-end/94189, - middle-end/94206, middle-end/94216, middle-end/94233, - middle-end/94303, rtl-optimization/90275, rtl-optimization/92303, - rtl-optimization/94042, rtl-optimization/94052, - rtl-optimization/94119, rtl-optimization/94148, target/92379, - target/93694, target/94052, target/94144, target/94154, target/94176, - target/94185, target/94201, target/94238, target/94286, - testsuite/93935, tree-optimization/93435, tree-optimization/94103, - tree-optimization/94125, tree-optimization/94163, - tree-optimization/94166, tree-optimization/94187, - tree-optimization/94211, tree-optimization/94224, - tree-optimization/94261, tree-optimization/94266, - tree-optimization/94300 -- fix ICE in final_scan_insn_1 on i686 with vzeroupper (#1816760, - PR target/94308) -- fix ppc64* hang with dfp (PR target/94254) - -* Wed Mar 11 2020 Jakub Jelinek 10.0.1-0.9 -- update from trunk - - PRs ada/91100, analyzer/93032, analyzer/93388, analyzer/93692, - analyzer/93774, analyzer/93775, analyzer/93777, analyzer/93778, - analyzer/93779, analyzer/93899, analyzer/93947, analyzer/93950, - analyzer/93959, analyzer/93993, analyzer/94028, bootstrap/93962, - c++/52320, c++/66139, c++/90432, c++/90467, c++/90505, c++/90938, - c++/91465, c++/92031, c++/92721, c++/93169, c++/93676, c++/93712, - c++/93729, c++/93789, c++/93801, c++/93803, c++/93804, c++/93817, - c++/93862, c++/93869, c++/93870, c++/93882, c++/93901, c++/93905, - c++/93907, c++/93922, c++/93933, c++/93956, c++/93958, c++/93998, - c++/94027, c++/94041, c++/94068, c++/94074, c++/94117, c++/94124, - c/86134, c/93577, c/93812, c/93858, c/93886, c/93887, c/93949, - debug/93888, driver/47785, driver/93796, fortran/92785, fortran/92959, - fortran/92976, fortran/93486, fortran/93552, fortran/93580, - fortran/93581, fortran/93599, fortran/93601, fortran/93603, - fortran/93604, fortran/93714, fortran/93792, fortran/93825, - fortran/93835, fortran/93889, fortran/93890, gcov-profile/93753, - inline-asm/94095, ipa/92518, ipa/92548, ipa/92924, ipa/93583, - ipa/93707, ipa/93760, ipa/93797, libstdc++/92546, libstdc++/93244, - libstdc++/93818, libstdc++/93872, libstdc++/93884, libstdc++/93936, - libstdc++/93972, libstdc++/93978, libstdc++/94013, libstdc++/94017, - libstdc++/94051, libstdc++/94063, libstdc++/94069, lto/78353, - middle-end/81401, middle-end/92152, middle-end/93399, - middle-end/93829, middle-end/93843, middle-end/93874, - middle-end/93926, middle-end/93961, middle-end/94111, other/55930, - other/93756, other/93912, other/93965, rtl-optimization/93564, - rtl-optimization/93996, rtl-optimization/94002, - rtl-optimization/94045, rtl-optimization/PR92989, sanitizer/93731, - target/26877, target/87560, target/87612, target/89229, target/89346, - target/90311, target/90763, target/91276, target/91598, target/93047, - target/93658, target/93709, target/93743, target/93800, target/93828, - target/93860, target/93913, target/93932, target/93937, target/93995, - target/93997, target/94046, target/94065, target/94088, target/94121, - target/94134, testsuite/91797, testsuite/91799, testsuite/94019, - testsuite/94023, translation/93755, translation/93759, - translation/93830, translation/93831, translation/93838, - translation/93841, translation/93864, tree-optimization/90883, - tree-optimization/91890, tree-optimization/92128, - tree-optimization/92982, tree-optimization/93508, - tree-optimization/93586, tree-optimization/93667, - tree-optimization/93767, tree-optimization/93776, - tree-optimization/93780, tree-optimization/93820, - tree-optimization/93845, tree-optimization/93868, - tree-optimization/93927, tree-optimization/93945, - tree-optimization/93946, tree-optimization/93953, - tree-optimization/93964, tree-optimization/93986, - tree-optimization/94001, tree-optimization/94114 - - fix ICE on rotate with -Wconversion (#1810941, PR c++/94067) - - fix -fcf-protection -flto -g interaction (#1808484, PR lto/93966) - - fix git miscompilation on s390x with -O2 -march=zEC12 -mtune=z13 - (#1799408, PR rtl-optimization/93908) - - fix ICE in in propagate_vals_across_arith_jfunc (#1806466, PR ipa/93763) - - ARM ABI alignment fix for classes derived from user aligned empty - bases (PR c++/94050) -- strlen pass fixes (PR tree-optimization/94015) -- fix {memset,memcpy,memmove,strncpy} head trimming if the result is used - (PR tree-optimization/94130) -- drop python2-devel Requires - -* Sun Feb 16 2020 Jakub Jelinek 10.0.1-0.8 -- update from trunk - - PRs analyzer/93212, analyzer/93288, analyzer/93350, analyzer/93356, - analyzer/93373, analyzer/93374, analyzer/93379, analyzer/93405, - analyzer/93438, analyzer/93457, analyzer/93543, analyzer/93544, - analyzer/93546, analyzer/93547, analyzer/93647, analyzer/93649, - analyzer/93657, analyzer/93659, analyzer/93669, c++/14179, c++/61414, - c++/66477, c++/69448, c++/80471, c++/86216, c++/86917, c++/88256, - c++/88819, c++/89404, c++/90691, c++/90951, c++/91953, c++/92003, - c++/92517, c++/92556, c++/92583, c++/92593, c++/92654, c++/92717, - c++/92947, c++/93140, c++/93458, c++/93530, c++/93549, c++/93551, - c++/93557, c++/93559, c++/93597, c++/93618, c++/93633, c++/93643, - c++/93650, c++/93675, c++/93684, c++/93710, c++/93713, c/87488, - c/88660, c/93576, c/93640, fortran/83113, fortran/92305, - fortran/93427, fortran/93462, fortran/93541, gcov-profile/91971, - gcov-profile/93466, ipa/93203, libgcc/85334, libgomp/93481, - libgomp/93515, libstdc++/79193, libstdc++/88999, libstdc++/92906, - libstdc++/93562, lto/93489, middle-end/90648, middle-end/93519, - middle-end/93555, middle-end/93646, middle-end/93663, other/93168, - other/93641, preprocessor/92319, preprocessor/93545, - rtl-optimization/91333, rtl-optimization/91838, - rtl-optimization/93561, rtl-optimization/93565, target/58218, - target/65782, target/85667, target/87763, target/91052, target/91816, - target/91913, target/91927, target/92190, target/93122, target/93136, - target/93300, target/93372, target/93532, target/93533, target/93548, - target/93568, target/93569, target/93594, target/93611, target/93615, - target/93637, target/93656, target/93670, target/93673, target/93696, - target/93704, target/93724, testsuite/92177, testsuite/93697, - testsuite/93717, tree-optimization/91123, tree-optimization/92819, - tree-optimization/93516, tree-optimization/93538, - tree-optimization/93582, tree-optimization/93661, - tree-optimization/93662, tree-optimization/93683, - tree-optimization/93744 - -* Thu Jan 30 2020 Jakub Jelinek 10.0.1-0.7 -- update from trunk - - PRs analyzer/93276, analyzer/93291, analyzer/93349, analyzer/93450, - analyzer/93451, bootstrap/93409, c++/60503, c++/82521, c++/88092, - c++/89357, c++/89640, c++/90333, c++/90338, c++/90546, c++/90731, - c++/90966, c++/90992, c++/91118, c++/91754, c++/91826, c++/92440, - c++/92601, c++/92948, c++/93442, c++/93443, c++/93477, driver/91220, - fortran/85781, fortran/87103, fortran/92123, fortran/93025, - fortran/93461, fortran/93463, fortran/93464, fortran/93473, - gcov-profile/93403, libstdc++/92895, libstdc++/93325, libstdc++/93426, - libstdc++/93470, libstdc++/93478, libstdc++/93479, middle-end/92323, - middle-end/93437, middle-end/93505, rtl-optimization/87763, - rtl-optimization/92989, rtl-optimization/93170, - rtl-optimization/93272, sanitizer/93436, target/91399, target/91461, - target/91824, target/92822, target/93221, target/93274, target/93418, - target/93494, testsuite/71727, testsuite/91171, testsuite/93393, - testsuite/93460, tree-optimization/89689, tree-optimization/92706, - tree-optimization/92822, tree-optimization/93397, - tree-optimization/93428, tree-optimization/93434, - tree-optimization/93439, tree-optimization/93454 - - LTO fix for *.localalias aliases (#1795575, PR lto/93384) - - __has_include{,_next} fix (#1795633, PR preprocessor/93452) - -* Sun Jan 26 2020 Jakub Jelinek 10.0.1-0.6 -- update from trunk - - PRs analyzer/93367, c++/90997, c++/92852, c++/93279, c++/93299, c++/93377, - c++/93400, c++/93414, inline-asm/93027, ipa/93166, target/13721, - target/92269, target/93395, target/93412, target/93430, - translation/90162, tree-optimization/92788 -- temporarily disable broken strcmp optimization (PR tree-optimization/92765) -- riscv64 tweaks from David Abdurachmanov (#1794343) - -* Thu Jan 23 2020 Jakub Jelinek 10.0.1-0.5 -- update from trunk - - PRs analyzer/93307, analyzer/93316, analyzer/93352, analyzer/93375, - analyzer/93378, analyzer/93382, c++/40752, c++/60855, c++/90732, - c++/91476, c++/92804, c++/92907, c++/93324, c++/93331, c++/93345, - c/84919, c/93348, fortran/93329, ipa/93315, libstdc++/91947, - rtl-optimization/93124, rtl-optimization/93402, target/91298, - target/92424, target/9311, target/93119, target/93333, target/93335, - target/93341, target/93346, target/93376, testsuite/93391, - tree-optimization/92924, tree-optimization/93381 - - fix ICE in nothrow_spec_p (#1794094, c++/93345) - -* Tue Jan 21 2020 Jakub Jelinek 10.0.1-0.4 -- update from trunk - - PRs c++/33799, c++/92536, debug/92763, fortran/44960, fortran/93309, - lto/93318, middle-end/93194, middle-end/93242, preprocessor/80005, - target/93073, target/93304, target/93319, testsuite/92829, - tree-opt/93321, tree-optimization/92328, tree-optimization/93094, - tree-optimization/93199 -- add arm_bf16.h and arm_sve.h to arm and arm/aarch64 (#1793471) - -* Sat Jan 18 2020 Jakub Jelinek 10.0.1-0.3 +* Mon Oct 19 2020 Jakub Jelinek 11.0.0-0.2 - new package diff --git a/gcc10-pr96383.patch b/gcc10-pr96383.patch deleted file mode 100644 index 950a2f4..0000000 --- a/gcc10-pr96383.patch +++ /dev/null @@ -1,236 +0,0 @@ -2020-07-30 Richard Biener - - PR debug/96383 - * langhooks-def.h (lhd_finalize_early_debug): Declare. - (LANG_HOOKS_FINALIZE_EARLY_DEBUG): Define. - (LANG_HOOKS_INITIALIZER): Amend. - * langhooks.c: Include cgraph.h and debug.h. - (lhd_finalize_early_debug): Default implementation from - former code in finalize_compilation_unit. - * langhooks.h (lang_hooks::finalize_early_debug): Add. - * cgraphunit.c (symbol_table::finalize_compilation_unit): - Call the finalize_early_debug langhook. - -gcc/c-family/ - * c-common.h (c_common_finalize_early_debug): Declare. - * c-common.c: Include debug.h. - (c_common_finalize_early_debug): finalize_early_debug langhook - implementation generating debug for extern declarations. - -gcc/c/ - * c-objc-common.h (LANG_HOOKS_FINALIZE_EARLY_DEBUG): - Define to c_common_finalize_early_debug. - -gcc/cp/ - * cp-objcp-common.h (LANG_HOOKS_FINALIZE_EARLY_DEBUG): - Define to c_common_finalize_early_debug. - -gcc/testsuite/ - * gcc.dg/debug/dwarf2/pr96383-1.c: New testcase. - * gcc.dg/debug/dwarf2/pr96383-2.c: Likewise. - -libstdc++-v3/ - * testsuite/20_util/assume_aligned/3.cc: Use -g0. - ---- gcc/c-family/c-common.c -+++ gcc/c-family/c-common.c -@@ -50,6 +50,7 @@ along with GCC; see the file COPYING3. If not see - #include "spellcheck.h" - #include "c-spellcheck.h" - #include "selftest.h" -+#include "debug.h" - - cpp_reader *parse_in; /* Declared in c-pragma.h. */ - -@@ -9086,4 +9087,20 @@ braced_lists_to_strings (tree type, tree ctor) - return braced_lists_to_strings (type, ctor, false); - } - -+ -+/* Emit debug for functions before finalizing early debug. */ -+ -+void -+c_common_finalize_early_debug (void) -+{ -+ /* Emit early debug for reachable functions, and by consequence, -+ locally scoped symbols. Also emit debug for extern declared -+ functions that are still reachable at this point. */ -+ struct cgraph_node *cnode; -+ FOR_EACH_FUNCTION (cnode) -+ if (!cnode->alias && !cnode->thunk.thunk_p -+ && (cnode->has_gimple_body_p () || !DECL_IS_BUILTIN (cnode->decl))) -+ (*debug_hooks->early_global_decl) (cnode->decl); -+} -+ - #include "gt-c-family-c-common.h" ---- gcc/c-family/c-common.h -+++ gcc/c-family/c-common.h -@@ -885,6 +885,8 @@ extern bool bool_promoted_to_int_p (tree); - extern tree fold_for_warn (tree); - extern tree c_common_get_narrower (tree, int *); - extern bool get_attribute_operand (tree, unsigned HOST_WIDE_INT *); -+extern void c_common_finalize_early_debug (void); -+ - - #define c_sizeof(LOC, T) c_sizeof_or_alignof_type (LOC, T, true, false, 1) - #define c_alignof(LOC, T) c_sizeof_or_alignof_type (LOC, T, false, false, 1) ---- gcc/c/c-objc-common.h -+++ gcc/c/c-objc-common.h -@@ -65,6 +65,8 @@ along with GCC; see the file COPYING3. If not see - c_simulate_builtin_function_decl - #undef LANG_HOOKS_EMITS_BEGIN_STMT - #define LANG_HOOKS_EMITS_BEGIN_STMT true -+#undef LANG_HOOKS_FINALIZE_EARLY_DEBUG -+#define LANG_HOOKS_FINALIZE_EARLY_DEBUG c_common_finalize_early_debug - - /* Attribute hooks. */ - #undef LANG_HOOKS_COMMON_ATTRIBUTE_TABLE ---- gcc/cgraphunit.c -+++ gcc/cgraphunit.c -@@ -2998,11 +2998,9 @@ symbol_table::finalize_compilation_unit (void) - - if (!seen_error ()) - { -- /* Emit early debug for reachable functions, and by consequence, -- locally scoped symbols. */ -- struct cgraph_node *cnode; -- FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (cnode) -- (*debug_hooks->early_global_decl) (cnode->decl); -+ /* Give the frontends the chance to emit early debug based on -+ what is still reachable in the TU. */ -+ (*lang_hooks.finalize_early_debug) (); - - /* Clean up anything that needs cleaning up after initial debug - generation. */ ---- gcc/cp/cp-objcp-common.h -+++ gcc/cp/cp-objcp-common.h -@@ -115,6 +115,8 @@ extern tree cxx_simulate_enum_decl (location_t, const char *, - #define LANG_HOOKS_BLOCK_MAY_FALLTHRU cxx_block_may_fallthru - #undef LANG_HOOKS_EMITS_BEGIN_STMT - #define LANG_HOOKS_EMITS_BEGIN_STMT true -+#undef LANG_HOOKS_FINALIZE_EARLY_DEBUG -+#define LANG_HOOKS_FINALIZE_EARLY_DEBUG c_common_finalize_early_debug - - /* Attribute hooks. */ - #undef LANG_HOOKS_COMMON_ATTRIBUTE_TABLE ---- gcc/langhooks-def.h -+++ gcc/langhooks-def.h -@@ -92,6 +92,7 @@ extern const char *lhd_get_substring_location (const substring_loc &, - location_t *out_loc); - extern int lhd_decl_dwarf_attribute (const_tree, int); - extern int lhd_type_dwarf_attribute (const_tree, int); -+extern void lhd_finalize_early_debug (void); - - #define LANG_HOOKS_NAME "GNU unknown" - #define LANG_HOOKS_IDENTIFIER_SIZE sizeof (struct lang_identifier) -@@ -139,6 +140,7 @@ extern int lhd_type_dwarf_attribute (const_tree, int); - #define LANG_HOOKS_EMITS_BEGIN_STMT false - #define LANG_HOOKS_RUN_LANG_SELFTESTS lhd_do_nothing - #define LANG_HOOKS_GET_SUBSTRING_LOCATION lhd_get_substring_location -+#define LANG_HOOKS_FINALIZE_EARLY_DEBUG lhd_finalize_early_debug - - /* Attribute hooks. */ - #define LANG_HOOKS_ATTRIBUTE_TABLE NULL -@@ -364,7 +366,8 @@ extern void lhd_end_section (void); - LANG_HOOKS_CUSTOM_FUNCTION_DESCRIPTORS, \ - LANG_HOOKS_EMITS_BEGIN_STMT, \ - LANG_HOOKS_RUN_LANG_SELFTESTS, \ -- LANG_HOOKS_GET_SUBSTRING_LOCATION \ -+ LANG_HOOKS_GET_SUBSTRING_LOCATION, \ -+ LANG_HOOKS_FINALIZE_EARLY_DEBUG \ - } - - #endif /* GCC_LANG_HOOKS_DEF_H */ ---- gcc/langhooks.c -+++ gcc/langhooks.c -@@ -36,6 +36,8 @@ along with GCC; see the file COPYING3. If not see - #include "output.h" - #include "timevar.h" - #include "stor-layout.h" -+#include "cgraph.h" -+#include "debug.h" - - /* Do nothing; in many cases the default hook. */ - -@@ -866,6 +868,18 @@ lhd_unit_size_without_reusable_padding (tree t) - return TYPE_SIZE_UNIT (t); - } - -+/* Default implementation for the finalize_early_debug hook. */ -+ -+void -+lhd_finalize_early_debug (void) -+{ -+ /* Emit early debug for reachable functions, and by consequence, -+ locally scoped symbols. */ -+ struct cgraph_node *cnode; -+ FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (cnode) -+ (*debug_hooks->early_global_decl) (cnode->decl); -+} -+ - /* Returns true if the current lang_hooks represents the GNU C frontend. */ - - bool ---- gcc/langhooks.h -+++ gcc/langhooks.h -@@ -580,6 +580,9 @@ struct lang_hooks - const char *(*get_substring_location) (const substring_loc &, - location_t *out_loc); - -+ /* Invoked before the early_finish debug hook is invoked. */ -+ void (*finalize_early_debug) (void); -+ - /* Whenever you add entries here, make sure you adjust langhooks-def.h - and langhooks.c accordingly. */ - }; ---- gcc/testsuite/gcc.dg/debug/dwarf2/pr96383-1.c -+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr96383-1.c -@@ -0,0 +1,17 @@ -+/* { dg-do compile } */ -+/* { dg-options "-g -gdwarf -dA" } */ -+ -+extern void foo (int); -+extern void unusedbar (int); -+ -+int main() -+{ -+ foo (1); -+} -+ -+/* We want subprogram DIEs for both foo and main and a DIE for -+ the formal parameter of foo. We do not want a DIE for -+ unusedbar. */ -+/* { dg-final { scan-assembler-times "DW_TAG_subprogram" 4 } } */ -+/* { dg-final { scan-assembler-times "DW_TAG_formal_parameter" 2 } } */ -+/* { dg-final { scan-assembler-not "unusedbar" } } */ ---- gcc/testsuite/gcc.dg/debug/dwarf2/pr96383-2.c -+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr96383-2.c -@@ -0,0 +1,17 @@ -+/* { dg-do compile } */ -+/* { dg-options "-g -O2 -gdwarf -dA" } */ -+ -+extern void foo (int); -+extern void unusedbar (int); -+ -+int main() -+{ -+ foo (1); -+} -+ -+/* We want subprogram DIEs for both foo and main and a DIE for -+ the formal parameter of foo. We do not want a DIE for -+ unusedbar. */ -+/* { dg-final { scan-assembler-times "DW_TAG_subprogram" 4 } } */ -+/* { dg-final { scan-assembler-times "DW_TAG_formal_parameter" 2 } } */ -+/* { dg-final { scan-assembler-not "unusedbar" } } */ ---- libstdc++-v3/testsuite/20_util/assume_aligned/3.cc -+++ libstdc++-v3/testsuite/20_util/assume_aligned/3.cc -@@ -15,7 +15,7 @@ - // with this library; see the file COPYING3. If not see - // . - --// { dg-options "-std=gnu++2a -O2" } -+// { dg-options "-std=gnu++2a -O2 -g0" } - // { dg-do compile { target c++2a } } - // { dg-final { scan-assembler-not "undefined" } } - diff --git a/gcc10-pr96939-2.patch b/gcc10-pr96939-2.patch deleted file mode 100644 index e9e406f..0000000 --- a/gcc10-pr96939-2.patch +++ /dev/null @@ -1,51 +0,0 @@ -2020-09-09 Jakub Jelinek - - * config/arm/arm.c (arm_override_options_after_change_1): Add opts_set - argument, test opts_set->x_str_align_functions rather than - opts->x_str_align_functions. - (arm_override_options_after_change, arm_option_override_internal, - arm_set_current_function): Adjust callers. - ---- gcc/config/arm/arm.c.jj 2020-09-09 09:19:42.911419411 +0200 -+++ gcc/config/arm/arm.c 2020-09-09 09:28:02.392897384 +0200 -@@ -3024,10 +3024,11 @@ static GTY(()) bool thumb_flipper; - static GTY(()) tree init_optimize; - - static void --arm_override_options_after_change_1 (struct gcc_options *opts) -+arm_override_options_after_change_1 (struct gcc_options *opts, -+ struct gcc_options *opts_set) - { - /* -falign-functions without argument: supply one. */ -- if (opts->x_flag_align_functions && !opts->x_str_align_functions) -+ if (opts->x_flag_align_functions && !opts_set->x_str_align_functions) - opts->x_str_align_functions = TARGET_THUMB_P (opts->x_target_flags) - && opts->x_optimize_size ? "2" : "4"; - } -@@ -3037,7 +3038,7 @@ arm_override_options_after_change_1 (str - static void - arm_override_options_after_change (void) - { -- arm_override_options_after_change_1 (&global_options); -+ arm_override_options_after_change_1 (&global_options, &global_options_set); - } - - /* Implement TARGET_OPTION_SAVE. */ -@@ -3065,7 +3066,7 @@ static void - arm_option_override_internal (struct gcc_options *opts, - struct gcc_options *opts_set) - { -- arm_override_options_after_change_1 (opts); -+ arm_override_options_after_change_1 (opts, opts_set); - - if (TARGET_INTERWORK && !bitmap_bit_p (arm_active_target.isa, isa_bit_thumb)) - { -@@ -32335,7 +32336,7 @@ arm_set_current_function (tree fndecl) - - save_restore_target_globals (new_tree); - -- arm_override_options_after_change_1 (&global_options); -+ arm_override_options_after_change_1 (&global_options, &global_options_set); - } - - /* Implement TARGET_OPTION_PRINT. */ diff --git a/gcc10-pr96939-3.patch b/gcc10-pr96939-3.patch deleted file mode 100644 index f133f8d..0000000 --- a/gcc10-pr96939-3.patch +++ /dev/null @@ -1,111 +0,0 @@ -2020-09-13 Jakub Jelinek - - * config/arm/arm.opt (arm_arch_specified, arm_cpu_specified, - arm_tune_specified): New TargetVariables. - * config/arm/arm.c (arm_configure_build_target): Comment out - opts_set argument name. Use opts->x_arm_*_specified instead - of opts_set->x_arm_*_string. - * common/config/arm/arm-common.c (arm_handle_option): New function. - (TARGET_HANDLE_OPTION): Redefine. - ---- gcc/config/arm/arm.opt.jj 2020-09-12 13:36:27.619716335 +0200 -+++ gcc/config/arm/arm.opt 2020-09-12 13:38:48.547661292 +0200 -@@ -30,6 +30,15 @@ const char *x_arm_cpu_string - TargetSave - const char *x_arm_tune_string - -+TargetVariable -+unsigned char arm_arch_specified = 0 -+ -+TargetVariable -+unsigned char arm_cpu_specified = 0 -+ -+TargetVariable -+unsigned char arm_tune_specified = 0 -+ - Enum - Name(tls_type) Type(enum arm_tls_type) - TLS dialect to use: ---- gcc/config/arm/arm.c.jj 2020-09-12 13:36:27.619716335 +0200 -+++ gcc/config/arm/arm.c 2020-09-12 13:49:26.166363387 +0200 -@@ -3181,7 +3181,7 @@ static sbitmap isa_quirkbits; - void - arm_configure_build_target (struct arm_build_target *target, - struct cl_target_option *opts, -- struct gcc_options *opts_set, -+ struct gcc_options */* opts_set */, - bool warn_compatible) - { - const cpu_option *arm_selected_tune = NULL; -@@ -3196,7 +3196,7 @@ arm_configure_build_target (struct arm_b - target->core_name = NULL; - target->arch_name = NULL; - -- if (opts_set->x_arm_arch_string) -+ if (opts->x_arm_arch_specified) - { - arm_selected_arch = arm_parse_arch_option_name (all_architectures, - "-march", -@@ -3204,7 +3204,7 @@ arm_configure_build_target (struct arm_b - arch_opts = strchr (opts->x_arm_arch_string, '+'); - } - -- if (opts_set->x_arm_cpu_string) -+ if (opts->x_arm_cpu_specified) - { - arm_selected_cpu = arm_parse_cpu_option_name (all_cores, "-mcpu", - opts->x_arm_cpu_string); -@@ -3214,7 +3214,7 @@ arm_configure_build_target (struct arm_b - options for tuning. */ - } - -- if (opts_set->x_arm_tune_string) -+ if (opts->x_arm_tune_specified) - { - arm_selected_tune = arm_parse_cpu_option_name (all_cores, "-mtune", - opts->x_arm_tune_string); ---- gcc/common/config/arm/arm-common.c.jj 2020-07-28 15:39:09.705760394 +0200 -+++ gcc/common/config/arm/arm-common.c 2020-09-12 13:50:09.021738456 +0200 -@@ -1021,6 +1021,34 @@ arm_asm_auto_mfpu (int argc, const char - - #undef ARM_CPU_NAME_LENGTH - -+bool -+arm_handle_option (struct gcc_options *opts, -+ struct gcc_options *opts_set ATTRIBUTE_UNUSED, -+ const struct cl_decoded_option *decoded, -+ location_t loc ATTRIBUTE_UNUSED) -+{ -+ size_t code = decoded->opt_index; -+ const char *arg = decoded->arg; -+ int val = decoded->value; -+ -+ switch (code) -+ { -+ case OPT_march_: -+ opts->x_arm_arch_specified = true; -+ return true; -+ -+ case OPT_mcpu_: -+ opts->x_arm_cpu_specified = true; -+ return true; -+ -+ case OPT_mtune_: -+ opts->x_arm_tune_specified = true; -+ return true; -+ -+ default: -+ return true; -+ } -+} - - #undef TARGET_DEFAULT_TARGET_FLAGS - #define TARGET_DEFAULT_TARGET_FLAGS (TARGET_DEFAULT | MASK_SCHED_PROLOG) -@@ -1031,4 +1059,7 @@ arm_asm_auto_mfpu (int argc, const char - #undef TARGET_EXCEPT_UNWIND_INFO - #define TARGET_EXCEPT_UNWIND_INFO arm_except_unwind_info - -+#undef TARGET_HANDLE_OPTION -+#define TARGET_HANDLE_OPTION arm_handle_option -+ - struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; diff --git a/gcc10-pr96939.patch b/gcc10-pr96939.patch deleted file mode 100644 index 4659c3f..0000000 --- a/gcc10-pr96939.patch +++ /dev/null @@ -1,64 +0,0 @@ -2020-09-07 Jakub Jelinek - - PR target/96939 - * config/arm/arm.c (arm_override_options_after_change): Don't call - arm_configure_build_target here. - (arm_set_current_function): Call arm_override_options_after_change_1 - at the end. - - * gcc.target/arm/lto/pr96939_0.c: New test. - * gcc.target/arm/lto/pr96939_1.c: New file. - ---- gcc/config/arm/arm.c.jj 2020-07-30 15:04:38.136293101 +0200 -+++ gcc/config/arm/arm.c 2020-09-07 10:43:54.809561852 +0200 -@@ -3037,10 +3037,6 @@ arm_override_options_after_change_1 (str - static void - arm_override_options_after_change (void) - { -- arm_configure_build_target (&arm_active_target, -- TREE_TARGET_OPTION (target_option_default_node), -- &global_options_set, false); -- - arm_override_options_after_change_1 (&global_options); - } - -@@ -32338,6 +32334,8 @@ arm_set_current_function (tree fndecl) - cl_target_option_restore (&global_options, TREE_TARGET_OPTION (new_tree)); - - save_restore_target_globals (new_tree); -+ -+ arm_override_options_after_change_1 (&global_options); - } - - /* Implement TARGET_OPTION_PRINT. */ ---- gcc/testsuite/gcc.target/arm/lto/pr96939_0.c.jj 2020-09-07 11:26:45.909937609 +0200 -+++ gcc/testsuite/gcc.target/arm/lto/pr96939_0.c 2020-09-07 11:29:18.722706535 +0200 -@@ -0,0 +1,15 @@ -+/* PR target/96939 */ -+/* { dg-lto-do link } */ -+/* { dg-require-effective-target arm_arch_v8a_ok } */ -+/* { dg-lto-options { { -flto -O2 } } } */ -+ -+extern unsigned crc (unsigned, const void *); -+typedef unsigned (*fnptr) (unsigned, const void *); -+volatile fnptr fn; -+ -+int -+main () -+{ -+ fn = crc; -+ return 0; -+} ---- gcc/testsuite/gcc.target/arm/lto/pr96939_1.c.jj 2020-09-07 11:26:49.365887153 +0200 -+++ gcc/testsuite/gcc.target/arm/lto/pr96939_1.c 2020-09-07 11:25:13.885281180 +0200 -@@ -0,0 +1,10 @@ -+/* PR target/96939 */ -+/* { dg-options "-march=armv8-a+crc" } */ -+ -+#include -+ -+unsigned -+crc (unsigned x, const void *y) -+{ -+ return __crc32cw (x, *(unsigned *) y); -+} diff --git a/gcc10-pr97060.patch b/gcc10-pr97060.patch deleted file mode 100644 index bd0d7be..0000000 --- a/gcc10-pr97060.patch +++ /dev/null @@ -1,34 +0,0 @@ -2020-11-11 Jason Merrill - - PR debug/97060 - * dwarf2out.c (gen_subprogram_die): It's a declaration - if DECL_INITIAL isn't set. - - * gcc.dg/debug/dwarf2/pr97060.c: New test. - ---- gcc/dwarf2out.c -+++ gcc/dwarf2out.c -@@ -22859,6 +22859,7 @@ gen_subprogram_die (tree decl, dw_die_ref context_die) - available. - */ - int declaration = (current_function_decl != decl -+ || (!DECL_INITIAL (decl) && !origin) - || class_or_namespace_scope_p (context_die)); - - /* A declaration that has been previously dumped needs no ---- gcc/testsuite/gcc.dg/debug/dwarf2/pr97060.c -+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr97060.c -@@ -0,0 +1,13 @@ -+/* PR debug/97060 */ -+/* { dg-do compile } */ -+/* { dg-options "-g -dA" } */ -+/* { dg-final { scan-assembler-times "DW_AT_declaration" 2 } } */ -+ -+extern int foo (unsigned int, unsigned int); -+ -+int -+bar (void) -+{ -+ foo (1, 2); -+ return 0; -+} diff --git a/gcc10-Wno-format-security.patch b/gcc11-Wno-format-security.patch similarity index 100% rename from gcc10-Wno-format-security.patch rename to gcc11-Wno-format-security.patch diff --git a/gcc10-d-shared-libphobos.patch b/gcc11-d-shared-libphobos.patch similarity index 100% rename from gcc10-d-shared-libphobos.patch rename to gcc11-d-shared-libphobos.patch diff --git a/gcc10-foffload-default.patch b/gcc11-foffload-default.patch similarity index 82% rename from gcc10-foffload-default.patch rename to gcc11-foffload-default.patch index 4a87e9f..3329d2a 100644 --- a/gcc10-foffload-default.patch +++ b/gcc11-foffload-default.patch @@ -44,7 +44,7 @@ libgomp/ strlen (offload_targets) + 1); xputenv (XOBFINISH (&collect_obstack, char *)); + if (offload_targets_default) -+ xputenv ("OFFLOAD_TARGET_DEFAULT=1"); ++ xputenv ("OFFLOAD_TARGET_DEFAULT=1"); } free (offload_targets); @@ -56,9 +56,9 @@ libgomp/ #define OFFLOAD_TARGET_NAMES_ENV "OFFLOAD_TARGET_NAMES" +#define OFFLOAD_TARGET_DEFAULT_ENV "OFFLOAD_TARGET_DEFAULT" - enum lto_mode_d { - LTO_MODE_NONE, /* Not doing LTO. */ -@@ -822,6 +823,12 @@ compile_offload_image (const char *targe + /* By default there is no special suffix for target executables. */ + #ifdef TARGET_EXECUTABLE_SUFFIX +@@ -906,6 +907,12 @@ compile_offload_image (const char *targe break; } @@ -71,44 +71,38 @@ libgomp/ if (!compiler) fatal_error (input_location, "could not find %s in %s (consider using %<-B%>)", -@@ -885,6 +892,7 @@ compile_images_for_offload_targets (unsi +@@ -975,6 +982,7 @@ compile_images_for_offload_targets (unsi + if (!target_names) + return; unsigned num_targets = parse_env_var (target_names, &names, NULL); ++ int next_name_entry = 0; - int next_name_entry = 0; -+ bool hsa_seen = false; const char *compiler_path = getenv ("COMPILER_PATH"); if (!compiler_path) - goto out; -@@ -897,18 +905,26 @@ compile_images_for_offload_targets (unsi - /* HSA does not use LTO-like streaming and a different compiler, skip - it. */ - if (strcmp (names[i], "hsa") == 0) -- continue; -+ { -+ hsa_seen = true; -+ continue; -+ } - - offload_names[next_name_entry] +@@ -985,13 +993,19 @@ compile_images_for_offload_targets (unsi + offload_names = XCNEWVEC (char *, num_targets + 1); + for (unsigned i = 0; i < num_targets; i++) + { +- offload_names[i] ++ offload_names[next_name_entry] = compile_offload_image (names[i], compiler_path, in_argc, in_argv, compiler_opts, compiler_opt_count, linker_opts, linker_opt_count); - if (!offload_names[next_name_entry]) +- if (!offload_names[i]) - fatal_error (input_location, - "problem with building target image for %s", names[i]); ++ if (!offload_names[next_name_entry]) + continue; - next_name_entry++; - } - -+ if (next_name_entry == 0 && !hsa_seen) ++ next_name_entry++; ++ } ++ ++ if (next_name_entry == 0) + { + free (offload_names); + offload_names = NULL; -+ } -+ + } + out: - free_array_of_ptrs ((void **) names, num_targets); - } --- libgomp/target.c.jj 2017-01-01 12:45:52.000000000 +0100 +++ libgomp/target.c 2017-01-20 20:12:13.756710875 +0100 @@ -2356,7 +2356,7 @@ gomp_load_plugin_for_device (struct gomp diff --git a/gcc10-hack.patch b/gcc11-hack.patch similarity index 100% rename from gcc10-hack.patch rename to gcc11-hack.patch diff --git a/gcc10-i386-libgomp.patch b/gcc11-i386-libgomp.patch similarity index 100% rename from gcc10-i386-libgomp.patch rename to gcc11-i386-libgomp.patch diff --git a/gcc10-isl-dl.patch b/gcc11-isl-dl.patch similarity index 99% rename from gcc10-isl-dl.patch rename to gcc11-isl-dl.patch index c681895..b3982f9 100644 --- a/gcc10-isl-dl.patch +++ b/gcc11-isl-dl.patch @@ -27,10 +27,10 @@ # and compile them. --- gcc/graphite.h.jj 2016-01-27 12:44:06.000000000 +0100 +++ gcc/graphite.h 2016-01-27 13:26:38.309876856 +0100 -@@ -39,6 +39,590 @@ along with GCC; see the file COPYING3. - #include - #include - #include +@@ -24,6 +24,591 @@ along with GCC; see the file COPYING3. + + #include "sese.h" + +#include +#include + @@ -615,10 +615,11 @@ +#define isl_version (*isl_pointers__.p_isl_version) +#define isl_options_get_on_error (*isl_pointers__.p_isl_options_get_on_error) +#define isl_ctx_reset_error (*isl_pointers__.p_isl_ctx_reset_error) - ++ typedef struct poly_dr *poly_dr_p; -@@ -461,5 +1045,6 @@ extern void build_scops (vec *); + typedef struct poly_bb *poly_bb_p; +@@ -448,5 +1033,6 @@ extern tree cached_scalar_evolution_in_r extern void dot_all_sese (FILE *, vec &); extern void dot_sese (sese_l &); extern void dot_cfg (); diff --git a/gcc10-libgomp-omp_h-multilib.patch b/gcc11-libgomp-omp_h-multilib.patch similarity index 100% rename from gcc10-libgomp-omp_h-multilib.patch rename to gcc11-libgomp-omp_h-multilib.patch diff --git a/gcc10-libstdc++-docs.patch b/gcc11-libstdc++-docs.patch similarity index 96% rename from gcc10-libstdc++-docs.patch rename to gcc11-libstdc++-docs.patch index d51b6d3..9ea9f88 100644 --- a/gcc10-libstdc++-docs.patch +++ b/gcc11-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 10.2.1 ++ Release 11.0.0 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 10.2.1 release, ++ for the 11.0.0 release, + online for each GCC release and diff --git a/gcc10-libtool-no-rpath.patch b/gcc11-libtool-no-rpath.patch similarity index 100% rename from gcc10-libtool-no-rpath.patch rename to gcc11-libtool-no-rpath.patch diff --git a/gcc10-no-add-needed.patch b/gcc11-no-add-needed.patch similarity index 100% rename from gcc10-no-add-needed.patch rename to gcc11-no-add-needed.patch diff --git a/gcc10-rh1574936.patch b/gcc11-rh1574936.patch similarity index 100% rename from gcc10-rh1574936.patch rename to gcc11-rh1574936.patch diff --git a/gcc10-sparc-config-detection.patch b/gcc11-sparc-config-detection.patch similarity index 100% rename from gcc10-sparc-config-detection.patch rename to gcc11-sparc-config-detection.patch diff --git a/sources b/sources index fb0364f..d4715ed 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-10.2.1-20201125.tar.xz) = 4a1d389032f699f47004a146d0cf96aad4febc46d0bc4750a6a435134822743f68739fcc1b9dcc4ae26d26a5d82ad71c83ecc67d2307d722157d1a7bee4a42c5 +SHA512 (gcc-11.0.0-20201204.tar.xz) = 809ca1644f7471187dec0f080d70fcf3a778be88d550d3088988331165fa3ebaafb011f07973523d0b5b83e3cd0f7fd5bc10bc80944f035803f1b21e79af7a31 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 diff --git a/update-gcc.sh b/update-gcc.sh index c04b746..dc695f2 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -3,5 +3,5 @@ git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 d=`date --iso | sed 's/-//g'` -git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-10.2.1-$d/ $1 | xz -9e > gcc-10.2.1-$d.tar.xz +git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-11.0.0-$d/ $1 | xz -9e > gcc-11.0.0-$d.tar.xz rm -rf gcc-dir.tmp From 42f8421576faf950dddfe9578f9bfca7d2720863 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 4 Dec 2020 21:38:24 +0100 Subject: [PATCH 005/293] 11.0.0-0.7 --- gcc.spec | 68 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/gcc.spec b/gcc.spec index 23c7843..acd4ef1 100644 --- a/gcc.spec +++ b/gcc.spec @@ -293,7 +293,7 @@ Patch11: gcc11-d-shared-libphobos.patch %if %{build_go} # Avoid stripping these libraries and binaries. %global __os_install_post \ -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.17.* \ +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.18.* \ chmod 644 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -301,7 +301,7 @@ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/test2json \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/vet \ %__os_install_post \ -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.17.* \ +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.18.* \ chmod 755 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 755 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -1386,14 +1386,14 @@ ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../libgfortran.so.5.* libgfortran.so ln -sf ../../../libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../libgo.so.17.* libgo.so +ln -sf ../../../libgo.so.18.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../libquadmath.so.0.* libquadmath.so %endif %if %{build_d} -ln -sf ../../../libgdruntime.so.1.* libgdruntime.so -ln -sf ../../../libgphobos.so.1.* libgphobos.so +ln -sf ../../../libgdruntime.so.2.* libgdruntime.so +ln -sf ../../../libgphobos.so.2.* libgphobos.so %endif %if %{build_libitm} ln -sf ../../../libitm.so.1.* libitm.so @@ -1416,14 +1416,14 @@ ln -sf ../../../../%{_lib}/libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../../%{_lib}/libgfortran.so.5.* libgfortran.so ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../../%{_lib}/libgo.so.17.* libgo.so +ln -sf ../../../../%{_lib}/libgo.so.18.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so %endif %if %{build_d} -ln -sf ../../../../%{_lib}/libgdruntime.so.1.* libgdruntime.so -ln -sf ../../../../%{_lib}/libgphobos.so.1.* libgphobos.so +ln -sf ../../../../%{_lib}/libgdruntime.so.2.* libgdruntime.so +ln -sf ../../../../%{_lib}/libgphobos.so.2.* libgphobos.so %endif %if %{build_libitm} ln -sf ../../../../%{_lib}/libitm.so.1.* libitm.so @@ -1500,28 +1500,28 @@ mv -f $FULLPATH/ada{include,lib} $FULLLPATH/ pushd $FULLLPATH/adalib if [ "%{_lib}" = "lib" ]; then ln -sf ../../../../../libgnarl-*.so libgnarl.so -ln -sf ../../../../../libgnarl-*.so libgnarl-9.so +ln -sf ../../../../../libgnarl-*.so libgnarl-11.so ln -sf ../../../../../libgnat-*.so libgnat.so -ln -sf ../../../../../libgnat-*.so libgnat-9.so +ln -sf ../../../../../libgnat-*.so libgnat-11.so else ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl.so -ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-9.so +ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-11.so ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat.so -ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-9.so +ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-11.so fi popd else pushd $FULLPATH/adalib if [ "%{_lib}" = "lib" ]; then ln -sf ../../../../libgnarl-*.so libgnarl.so -ln -sf ../../../../libgnarl-*.so libgnarl-9.so +ln -sf ../../../../libgnarl-*.so libgnarl-11.so ln -sf ../../../../libgnat-*.so libgnat.so -ln -sf ../../../../libgnat-*.so libgnat-9.so +ln -sf ../../../../libgnat-*.so libgnat-11.so else ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so -ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-9.so +ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-11.so ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so -ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-9.so +ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-11.so fi popd fi @@ -1536,8 +1536,8 @@ ln -sf ../`echo ../../../../lib/libgfortran.so.5.* | sed s~/lib/~/lib64/~` 64/li ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.17.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.17.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.18.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.18.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -1546,10 +1546,10 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libquadmath.so.0.* | sed ' %endif %if %{build_d} rm -f libgdruntime.so libgphobos.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgdruntime.so.1.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgdruntime.so.1.* | sed 's,^.*libg,libg,'`' )' > 64/libgdruntime.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgphobos.so.1.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgphobos.so.1.* | sed 's,^.*libg,libg,'`' )' > 64/libgphobos.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgdruntime.so.2.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgdruntime.so.2.* | sed 's,^.*libg,libg,'`' )' > 64/libgdruntime.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgphobos.so.2.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgphobos.so.2.* | sed 's,^.*libg,libg,'`' )' > 64/libgphobos.so %endif %if %{build_libitm} rm -f libitm.so @@ -1635,8 +1635,8 @@ ln -sf ../`echo ../../../../lib64/libgfortran.so.5.* | sed s~/../lib64/~/~` 32/l ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.17.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.17.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.18.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.18.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -1645,10 +1645,10 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libquadmath.so.0.* | sed ' %endif %if %{build_d} rm -f libgdruntime.so libgphobos.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgdruntime.so.1.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgdruntime.so.1.* | sed 's,^.*libg,libg,'`' )' > 32/libgdruntime.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgphobos.so.1.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgphobos.so.1.* | sed 's,^.*libg,libg,'`' )' > 32/libgphobos.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgdruntime.so.2.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgdruntime.so.2.* | sed 's,^.*libg,libg,'`' )' > 32/libgdruntime.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgphobos.so.2.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgphobos.so.2.* | sed 's,^.*libg,libg,'`' )' > 32/libgphobos.so %endif %if %{build_libitm} rm -f libitm.so @@ -1800,8 +1800,8 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libcc1.so.0.* chmod 755 %{buildroot}%{_prefix}/%{_lib}/libquadmath.so.0.* %endif %if %{build_d} -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgdruntime.so.1.* -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgphobos.so.1.* +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgdruntime.so.2.* +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgphobos.so.2.* %endif %if %{build_libitm} chmod 755 %{buildroot}%{_prefix}/%{_lib}/libitm.so.1.* @@ -1823,7 +1823,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.* %endif %if %{build_go} # Avoid stripping these libraries and binaries. -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.17.* +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.18.* chmod 644 %{buildroot}%{_prefix}/bin/go.gcc chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo @@ -2632,8 +2632,8 @@ end %doc rpm.doc/gdc/* %files -n libgphobos -%{_prefix}/%{_lib}/libgdruntime.so.1* -%{_prefix}/%{_lib}/libgphobos.so.1* +%{_prefix}/%{_lib}/libgdruntime.so.2* +%{_prefix}/%{_lib}/libgphobos.so.2* %doc rpm.doc/libphobos/* %files -n libgphobos-static @@ -2958,7 +2958,7 @@ end %doc rpm.doc/go/* %files -n libgo -%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.17* +%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.18* %doc rpm.doc/libgo/* %files -n libgo-devel From f28564576951f8dd1915acda3829dda0d0f0e864 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 16 Dec 2020 17:24:23 +0100 Subject: [PATCH 006/293] 11.0.0-0.8 --- gcc.spec | 43 ++++++++++++++-- gcc11-pr98282.patch | 118 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 158 insertions(+), 3 deletions(-) create mode 100644 gcc11-pr98282.patch diff --git a/gcc.spec b/gcc.spec index acd4ef1..4778b93 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20201204 -%global gitrev d35391d824edee33b5fbce3df058f4fafd9b9fa6 +%global DATE 20201216 +%global gitrev ada196afb999077a634220ace175f349418e3078 %global gcc_version 11.0.0 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.7%{?dist} +Release: %{gcc_release}.8%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -272,6 +272,7 @@ Patch8: gcc11-foffload-default.patch Patch9: gcc11-Wno-format-security.patch Patch10: gcc11-rh1574936.patch Patch11: gcc11-d-shared-libphobos.patch +Patch12: gcc11-pr98282.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -783,6 +784,7 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ +%patch12 -p0 -b .pr98282~ echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE @@ -2403,6 +2405,7 @@ end %dir %{_prefix}/libexec/gcc/%{gcc_target_platform} %dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cc1plus +%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/g++-mapper-server %ifarch sparcv9 ppc %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++.so @@ -3066,6 +3069,40 @@ end %endif %changelog +* Wed Dec 17 2020 Jakub Jelinek 11.0.0-0.8 +- update from trunk + - PRs ada/98230, bootstrap/98188, c++/57111, c++/59238, c++/68451, + c++/78173, c++/91506, c++/93083, c++/96299, c++/97093, c++/97517, + c++/98043, c++/98103, c++/98122, c++/98126, c++/98130, c++/98187, + c++/98193, c/97981, c/98200, d/98277, fortran/90207, fortran/98016, + fortran/98022, gcov-profile/98273, libstdc++/98108, libstdc++/98226, + lto/98275, middle-end/94600, middle-end/98160, middle-end/98166, + middle-end/98183, middle-end/98190, middle-end/98205, + middle-end/98264, rtl-optimization/97092, rtl-optimization/97421, + rtl-optimization/98212, rtl-optimization/98229, sanitizer/98204, + target/58901, target/66791, target/92469, target/94440, target/95294, + target/96226, target/96470, target/97865, target/97872, target/98100, + target/98147, target/98152, target/98161, target/98162, target/98219, + target/98274, testsuite/95900, testsuite/98123, testsuite/98156, + testsuite/98239, testsuite/98240, testsuite/98242, testsuite/98244, + tree-optimization/95582, tree-optimization/96094, + tree-optimization/96232, tree-optimization/96272, + tree-optimization/96344, tree-optimization/96685, + tree-optimization/97559, tree-optimization/97929, + tree-optimization/98069, tree-optimization/98113, + tree-optimization/98117, tree-optimization/98137, + tree-optimization/98169, tree-optimization/98174, + tree-optimization/98180, tree-optimization/98182, + tree-optimization/98191, tree-optimization/98192, + tree-optimization/98199, tree-optimization/98211, + tree-optimization/98213, tree-optimization/98235, + tree-optimization/98256 + - C++20 modules support + - fix up __patchable_function_entries handling when gcc is configured + against recent binutils (#1907945) +- fix up handling of non-memory VIEW_CONVERT_EXPRs in PRE + (PR tree-optimization/98282) + * Fri Dec 4 2020 Jakub Jelinek 11.0.0-0.7 - update from trunk - PRs bootstrap/97983, c++/80780, c++/90629, c++/93093, c++/97187, diff --git a/gcc11-pr98282.patch b/gcc11-pr98282.patch new file mode 100644 index 0000000..4187c5f --- /dev/null +++ b/gcc11-pr98282.patch @@ -0,0 +1,118 @@ +2020-12-15 Jakub Jelinek + + PR tree-optimization/98282 + * tree-ssa-pre.c (compute_avail): Don't try to adjust alias set + if different when ref1->opcode is not MEM_REF or TARGET_MEM_REF. + + * g++.dg/opt/pr98282.C: New test. + +--- gcc/tree-ssa-pre.c.jj 2020-11-30 10:48:31.000000000 +0100 ++++ gcc/tree-ssa-pre.c 2020-12-15 10:51:51.061206572 +0100 +@@ -4176,13 +4176,17 @@ compute_avail (void) + && ref2->opcode != MEM_REF + && ref2 != &operands[0]) + --ref2; +- if ((ref1->opcode == TARGET_MEM_REF +- || ref1->opcode == MEM_REF) +- && (TYPE_ALIGN (ref1->type) +- > TYPE_ALIGN (ref2->type))) +- ref1->type +- = build_aligned_type (ref1->type, +- TYPE_ALIGN (ref2->type)); ++ if (ref1->opcode == TARGET_MEM_REF ++ || ref1->opcode == MEM_REF) ++ { ++ if (TYPE_ALIGN (ref1->type) ++ > TYPE_ALIGN (ref2->type)) ++ ref1->type ++ = build_aligned_type (ref1->type, ++ TYPE_ALIGN (ref2->type)); ++ } ++ else ++ set = ref->set; + /* TBAA behavior is an obvious part so make sure + that the hashtable one covers this as well + by adjusting the ref alias set and its base. */ +--- gcc/testsuite/g++.dg/opt/pr98282.C.jj 2020-12-15 12:26:25.868415230 +0100 ++++ gcc/testsuite/g++.dg/opt/pr98282.C 2020-12-15 12:28:00.346353067 +0100 +@@ -0,0 +1,80 @@ ++// PR tree-optimization/98282 ++// { dg-do compile { target c++11 } } ++// { dg-options "-O2" } ++ ++template struct g; ++template struct g { typedef b c; }; ++template typename g::c &&d(b &&e) { ++ return static_cast::c &&>(e); ++} ++void *operator new(__SIZE_TYPE__, void *f) { return f; } ++struct h; ++struct k { ++ using i = h *; ++}; ++struct D { ++ k::i j; ++}; ++struct p : D { ++ p(p &&) : D() {} ++}; ++struct r { ++ using l = int; ++ r(r &&) : ad() {} ++ l *ad; ++}; ++struct s { ++ static s m(); ++}; ++struct t { ++ template void operator=(ah); ++}; ++struct I { ++ template void q(o ai) { ++ *ai = aj(); ++ s::m(); ++ } ++ h aj(); ++}; ++template class as; ++struct J { ++ int a; ++ char av; ++}; ++template struct aw : J { ++ void ax(...) {} ++}; ++template ++struct aw, an, n...> : aw, n...> { ++ using az = as; ++ using ba = aw; ++ char bb; ++ an &bc() { return *reinterpret_cast(this); } ++ void ax(az *bd) { ++ if (bb) ++ new (bd) an(d(bc())); ++ ba::ax(bd); ++ } ++}; ++template struct as : aw, n...> { ++ as(); ++ as(as &&be) { be.ax(this); } ++ void operator=(as be) { be.ax(this); } ++}; ++struct h { ++ as bg; ++}; ++using bh = t; ++struct u { ++ bh bj; ++}; ++I bk(); ++template void bl() { ++ h a; ++ bk().q(&a); ++} ++template void bn(int) { ++ u b; ++ b.bj = bl; ++} ++void bp() { bn(0); } From 2dca06326ff8046f71745f6e0d6056b9a7bc606c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 16 Dec 2020 17:28:00 +0100 Subject: [PATCH 007/293] 11.0.0-0.8 --- .gitignore | 1 + sources | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0d11d30..db65664 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ /gcc-10.2.1-20201112.tar.xz /gcc-10.2.1-20201125.tar.xz /gcc-11.0.0-20201204.tar.xz +/gcc-11.0.0-20201216.tar.xz diff --git a/sources b/sources index d4715ed..4697e55 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-11.0.0-20201204.tar.xz) = 809ca1644f7471187dec0f080d70fcf3a778be88d550d3088988331165fa3ebaafb011f07973523d0b5b83e3cd0f7fd5bc10bc80944f035803f1b21e79af7a31 +SHA512 (gcc-11.0.0-20201216.tar.xz) = 5624f905eafa693434ca16df9df9b3d7dff6d01d335fb690bee124d5f62cec6f2273a4b13cbe85eac33b00d2e556bfeb246444558c4a33747629529a2bd560ad SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 8372e104d779a449611eeb88ec976e40d4961ece Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 16 Dec 2020 17:29:03 +0100 Subject: [PATCH 008/293] 11.0.0-0.8 --- gcc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 4778b93..42df717 100644 --- a/gcc.spec +++ b/gcc.spec @@ -3069,7 +3069,7 @@ end %endif %changelog -* Wed Dec 17 2020 Jakub Jelinek 11.0.0-0.8 +* Wed Dec 16 2020 Jakub Jelinek 11.0.0-0.8 - update from trunk - PRs ada/98230, bootstrap/98188, c++/57111, c++/59238, c++/68451, c++/78173, c++/91506, c++/93083, c++/96299, c++/97093, c++/97517, From d92ecedc14572592bf5e32923be919c28971852b Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 17 Dec 2020 16:25:08 +0100 Subject: [PATCH 009/293] 11.0.0-0.9 --- .gitignore | 1 + gcc.spec | 16 +++++++++++++--- gcc11-pr98338-workaround.patch | 17 +++++++++++++++++ sources | 2 +- 4 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 gcc11-pr98338-workaround.patch diff --git a/.gitignore b/.gitignore index db65664..6f12cd3 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ /gcc-10.2.1-20201125.tar.xz /gcc-11.0.0-20201204.tar.xz /gcc-11.0.0-20201216.tar.xz +/gcc-11.0.0-20201217.tar.xz diff --git a/gcc.spec b/gcc.spec index 42df717..93d9f94 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20201216 -%global gitrev ada196afb999077a634220ace175f349418e3078 +%global DATE 20201217 +%global gitrev cefb7ee9ef972ce42e8e54a65ef972386b8897d9 %global gcc_version 11.0.0 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.8%{?dist} +Release: %{gcc_release}.9%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -273,6 +273,7 @@ Patch9: gcc11-Wno-format-security.patch Patch10: gcc11-rh1574936.patch Patch11: gcc11-d-shared-libphobos.patch Patch12: gcc11-pr98282.patch +Patch13: gcc11-pr98338-workaround.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -785,6 +786,7 @@ to NVidia PTX capable devices if available. %endif %patch11 -p0 -b .d-shared-libphobos~ %patch12 -p0 -b .pr98282~ +%patch13 -p0 -b .pr98338-workaround~ echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE @@ -3069,6 +3071,14 @@ end %endif %changelog +* Thu Dec 17 2020 Jakub Jelinek 11.0.0-0.9 +- update from trunk + - PRs c/98047, c/98260, fortran/98284, libstdc++/46447, libstdc++/93151, + libstdc++/96083, libstdc++/98319, rtl-optimization/98271, + rtl-optimization/98276, sanitizer/97868, target/98146, target/98280, + tree-optimization/96239, tree-optimization/98272, + tree-optimization/98279 + * Wed Dec 16 2020 Jakub Jelinek 11.0.0-0.8 - update from trunk - PRs ada/98230, bootstrap/98188, c++/57111, c++/59238, c++/68451, diff --git a/gcc11-pr98338-workaround.patch b/gcc11-pr98338-workaround.patch new file mode 100644 index 0000000..0c8e248 --- /dev/null +++ b/gcc11-pr98338-workaround.patch @@ -0,0 +1,17 @@ +2020-12-17 Jakub Jelinek + + PR bootstrap/98338 + * range-op.cc (operator_plus::op2_range): Tail-call op1_range + to work-around ICF profile merging ICE during profiledbootstrap. + +--- gcc/range-op.cc.jj 2020-12-17 16:06:39.789526868 +0100 ++++ gcc/range-op.cc 2020-12-17 16:19:18.127240700 +0100 +@@ -950,7 +950,7 @@ operator_plus::op2_range (irange &r, tre + const irange &lhs, + const irange &op1) const + { +- return range_op_handler (MINUS_EXPR, type)->fold_range (r, type, lhs, op1); ++ return op1_range (r, type, lhs, op1); + } + + diff --git a/sources b/sources index 4697e55..12b6183 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-11.0.0-20201216.tar.xz) = 5624f905eafa693434ca16df9df9b3d7dff6d01d335fb690bee124d5f62cec6f2273a4b13cbe85eac33b00d2e556bfeb246444558c4a33747629529a2bd560ad +SHA512 (gcc-11.0.0-20201217.tar.xz) = b13a21a3caf9867595be06b46e3ee8f9b1439d017378f508145b21e753b758ca099e2f07d105a7bfc0ee44061f7bed1ae5bc79bf7e156cd891e08c8fe3b47460 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 8c7fac2bb23c90199bd2f35be1d9bdb1a69610e9 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 17 Dec 2020 19:17:07 +0100 Subject: [PATCH 010/293] 11.0.0-0.10 --- gcc.spec | 18 +++++----- gcc11-c++tools.patch | 86 ++++++++++++++++++++++++++++++++++++++++++++ sources | 2 +- 3 files changed, 95 insertions(+), 11 deletions(-) create mode 100644 gcc11-c++tools.patch diff --git a/gcc.spec b/gcc.spec index 93d9f94..e962506 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20201217 -%global gitrev cefb7ee9ef972ce42e8e54a65ef972386b8897d9 +%global DATE 20201216 +%global gitrev ada196afb999077a634220ace175f349418e3078 %global gcc_version 11.0.0 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.9%{?dist} +Release: %{gcc_release}.10%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -274,6 +274,7 @@ Patch10: gcc11-rh1574936.patch Patch11: gcc11-d-shared-libphobos.patch Patch12: gcc11-pr98282.patch Patch13: gcc11-pr98338-workaround.patch +Patch14: gcc11-c++tools.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -787,6 +788,7 @@ to NVidia PTX capable devices if available. %patch11 -p0 -b .d-shared-libphobos~ %patch12 -p0 -b .pr98282~ %patch13 -p0 -b .pr98338-workaround~ +%patch14 -p0 -b .c++tools~ echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE @@ -3071,13 +3073,9 @@ end %endif %changelog -* Thu Dec 17 2020 Jakub Jelinek 11.0.0-0.9 -- update from trunk - - PRs c/98047, c/98260, fortran/98284, libstdc++/46447, libstdc++/93151, - libstdc++/96083, libstdc++/98319, rtl-optimization/98271, - rtl-optimization/98276, sanitizer/97868, target/98146, target/98280, - tree-optimization/96239, tree-optimization/98272, - tree-optimization/98279 +* Thu Dec 17 2020 Jakub Jelinek 11.0.0-0.10 +- apply workaround for profiledbootstrap x86_64 failure +- put g++-mapper-server into the right directory * Wed Dec 16 2020 Jakub Jelinek 11.0.0-0.8 - update from trunk diff --git a/gcc11-c++tools.patch b/gcc11-c++tools.patch new file mode 100644 index 0000000..1c56f24 --- /dev/null +++ b/gcc11-c++tools.patch @@ -0,0 +1,86 @@ +2020-12-17 Jakub Jelinek + + * configure.ac: Add GCC_BASE_VER. + * Makefile.in (version): Remove variable. + (gcc_version): New variable. + (libexecsubdir): Use $(gcc_version) instead of $(version). + * configure: Regenerated. + +--- c++tools/configure.ac.jj 2020-12-16 23:38:34.091923526 +0100 ++++ c++tools/configure.ac 2020-12-17 00:02:48.221661922 +0100 +@@ -206,6 +206,9 @@ if test $ac_cv_inet_ntop = yes; then + [Define if inet_ntop provided.]) + fi + ++# Determine what GCC version number to use in filesystem paths. ++GCC_BASE_VER ++ + AC_CONFIG_HEADERS([config.h]) + AC_CONFIG_FILES([Makefile]) + +--- c++tools/Makefile.in.jj 2020-12-16 23:38:34.091923526 +0100 ++++ c++tools/Makefile.in 2020-12-17 00:01:54.419263424 +0100 +@@ -20,8 +20,8 @@ prefix := @prefix@ + bindir := @bindir@ + libexecdir := @libexecdir@ + target_noncanonical := @target_noncanonical@ +-version := $(shell cat $(srcdir)/../gcc/BASE-VER) +-libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(version) ++gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) ++libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) + INSTALL_PROGRAM := @INSTALL_PROGRAM@ + INSTALL_STRIP_PROGRAM := $(srcdir)/../install-sh -c -s + AUTOCONF := @AUTOCONF@ +--- c++tools/configure.jj 2020-12-16 23:38:34.091923526 +0100 ++++ c++tools/configure 2020-12-17 00:02:53.849599006 +0100 +@@ -585,6 +585,7 @@ ac_unique_file="c++tools" + ac_unique_file="server.cc" + ac_subst_vars='LTLIBOBJS + LIBOBJS ++get_gcc_base_ver + ac_ct_CC + CFLAGS + CC +@@ -658,6 +659,7 @@ ac_user_opts=' + enable_option_checking + enable_c___tools + enable_maintainer_mode ++with_gcc_major_version_only + ' + ac_precious_vars='build_alias + host_alias +@@ -1287,6 +1289,12 @@ Optional Features: + enable maintainer mode. Add rules to rebuild + configurey bits + ++Optional Packages: ++ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] ++ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ++ --with-gcc-major-version-only ++ use only GCC major number in filesystem paths ++ + Some influential environment variables: + CXX C++ compiler command + CXXFLAGS C++ compiler flags +@@ -3557,6 +3565,21 @@ $as_echo "#define HAVE_INET_NTOP 1" >>co + + fi + ++# Determine what GCC version number to use in filesystem paths. ++ ++ get_gcc_base_ver="cat" ++ ++# Check whether --with-gcc-major-version-only was given. ++if test "${with_gcc_major_version_only+set}" = set; then : ++ withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" ++ fi ++ ++fi ++ ++ ++ ++ + ac_config_headers="$ac_config_headers config.h" + + ac_config_files="$ac_config_files Makefile" diff --git a/sources b/sources index 12b6183..4697e55 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-11.0.0-20201217.tar.xz) = b13a21a3caf9867595be06b46e3ee8f9b1439d017378f508145b21e753b758ca099e2f07d105a7bfc0ee44061f7bed1ae5bc79bf7e156cd891e08c8fe3b47460 +SHA512 (gcc-11.0.0-20201216.tar.xz) = 5624f905eafa693434ca16df9df9b3d7dff6d01d335fb690bee124d5f62cec6f2273a4b13cbe85eac33b00d2e556bfeb246444558c4a33747629529a2bd560ad SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 9f8a6fd89413ffd0fbe3bf158b0eb690617e9cbb Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 17 Dec 2020 19:33:32 +0100 Subject: [PATCH 011/293] 11.0.0-0.10 --- gcc11-c++tools.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc11-c++tools.patch b/gcc11-c++tools.patch index 1c56f24..563b404 100644 --- a/gcc11-c++tools.patch +++ b/gcc11-c++tools.patch @@ -28,9 +28,9 @@ -libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(version) +gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) +libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) - INSTALL_PROGRAM := @INSTALL_PROGRAM@ - INSTALL_STRIP_PROGRAM := $(srcdir)/../install-sh -c -s + INSTALL := @INSTALL@ AUTOCONF := @AUTOCONF@ + AUTOHEADER := @AUTOHEADER@ --- c++tools/configure.jj 2020-12-16 23:38:34.091923526 +0100 +++ c++tools/configure 2020-12-17 00:02:53.849599006 +0100 @@ -585,6 +585,7 @@ ac_unique_file="c++tools" From 23e00e261f40368882fd49e9e04fcce1a6029e6f Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 23 Dec 2020 14:46:14 +0100 Subject: [PATCH 012/293] 11.0.0-0.11 --- .gitignore | 1 + gcc.spec | 24 ++++++++++--- gcc11-c++tools.patch | 86 -------------------------------------------- sources | 2 +- 4 files changed, 21 insertions(+), 92 deletions(-) delete mode 100644 gcc11-c++tools.patch diff --git a/.gitignore b/.gitignore index 6f12cd3..add1368 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ /gcc-11.0.0-20201204.tar.xz /gcc-11.0.0-20201216.tar.xz /gcc-11.0.0-20201217.tar.xz +/gcc-11.0.0-20201223.tar.xz diff --git a/gcc.spec b/gcc.spec index e962506..8b6400d 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20201216 -%global gitrev ada196afb999077a634220ace175f349418e3078 +%global DATE 20201223 +%global gitrev 9265a9d6eb38913206ddc37009fd548c2e4f5de0 %global gcc_version 11.0.0 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.10%{?dist} +Release: %{gcc_release}.11%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -274,7 +274,6 @@ Patch10: gcc11-rh1574936.patch Patch11: gcc11-d-shared-libphobos.patch Patch12: gcc11-pr98282.patch Patch13: gcc11-pr98338-workaround.patch -Patch14: gcc11-c++tools.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -788,7 +787,6 @@ to NVidia PTX capable devices if available. %patch11 -p0 -b .d-shared-libphobos~ %patch12 -p0 -b .pr98282~ %patch13 -p0 -b .pr98338-workaround~ -%patch14 -p0 -b .c++tools~ echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE @@ -3073,6 +3071,22 @@ end %endif %changelog +* Wed Dec 23 2020 Jakub Jelinek 11.0.0-0.11 +- update from trunk + - PRs bootstrap/98300, bootstrap/98380, bootstrap/98412, c++/67343, + c++/93480, c++/96840, c++/98340, c++/98343, c++/98353, c++/98383, + c/98047, c/98260, d/98067, fortran/83118, fortran/92587, + fortran/96012, fortran/98284, fortran/98307, go/98402, + libstdc++/46447, libstdc++/93151, libstdc++/96083, libstdc++/98319, + libstdc++/98344, libstdc++/98370, libstdc++/98374, libstdc++/98377, + middle-end/98366, other/98400, other/98409, rtl-optimization/98271, + rtl-optimization/98276, rtl-optimization/98289, + rtl-optimization/98347, sanitizer/97868, target/96793, target/98146, + target/98177, target/98280, tree-optimization/96239, + tree-optimization/97750, tree-optimization/98272, + tree-optimization/98279, tree-optimization/98378, + tree-optimization/98407 + * Thu Dec 17 2020 Jakub Jelinek 11.0.0-0.10 - apply workaround for profiledbootstrap x86_64 failure - put g++-mapper-server into the right directory diff --git a/gcc11-c++tools.patch b/gcc11-c++tools.patch deleted file mode 100644 index 563b404..0000000 --- a/gcc11-c++tools.patch +++ /dev/null @@ -1,86 +0,0 @@ -2020-12-17 Jakub Jelinek - - * configure.ac: Add GCC_BASE_VER. - * Makefile.in (version): Remove variable. - (gcc_version): New variable. - (libexecsubdir): Use $(gcc_version) instead of $(version). - * configure: Regenerated. - ---- c++tools/configure.ac.jj 2020-12-16 23:38:34.091923526 +0100 -+++ c++tools/configure.ac 2020-12-17 00:02:48.221661922 +0100 -@@ -206,6 +206,9 @@ if test $ac_cv_inet_ntop = yes; then - [Define if inet_ntop provided.]) - fi - -+# Determine what GCC version number to use in filesystem paths. -+GCC_BASE_VER -+ - AC_CONFIG_HEADERS([config.h]) - AC_CONFIG_FILES([Makefile]) - ---- c++tools/Makefile.in.jj 2020-12-16 23:38:34.091923526 +0100 -+++ c++tools/Makefile.in 2020-12-17 00:01:54.419263424 +0100 -@@ -20,8 +20,8 @@ prefix := @prefix@ - bindir := @bindir@ - libexecdir := @libexecdir@ - target_noncanonical := @target_noncanonical@ --version := $(shell cat $(srcdir)/../gcc/BASE-VER) --libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(version) -+gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) -+libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) - INSTALL := @INSTALL@ - AUTOCONF := @AUTOCONF@ - AUTOHEADER := @AUTOHEADER@ ---- c++tools/configure.jj 2020-12-16 23:38:34.091923526 +0100 -+++ c++tools/configure 2020-12-17 00:02:53.849599006 +0100 -@@ -585,6 +585,7 @@ ac_unique_file="c++tools" - ac_unique_file="server.cc" - ac_subst_vars='LTLIBOBJS - LIBOBJS -+get_gcc_base_ver - ac_ct_CC - CFLAGS - CC -@@ -658,6 +659,7 @@ ac_user_opts=' - enable_option_checking - enable_c___tools - enable_maintainer_mode -+with_gcc_major_version_only - ' - ac_precious_vars='build_alias - host_alias -@@ -1287,6 +1289,12 @@ Optional Features: - enable maintainer mode. Add rules to rebuild - configurey bits - -+Optional Packages: -+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] -+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) -+ --with-gcc-major-version-only -+ use only GCC major number in filesystem paths -+ - Some influential environment variables: - CXX C++ compiler command - CXXFLAGS C++ compiler flags -@@ -3557,6 +3565,21 @@ $as_echo "#define HAVE_INET_NTOP 1" >>co - - fi - -+# Determine what GCC version number to use in filesystem paths. -+ -+ get_gcc_base_ver="cat" -+ -+# Check whether --with-gcc-major-version-only was given. -+if test "${with_gcc_major_version_only+set}" = set; then : -+ withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then -+ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" -+ fi -+ -+fi -+ -+ -+ -+ - ac_config_headers="$ac_config_headers config.h" - - ac_config_files="$ac_config_files Makefile" diff --git a/sources b/sources index 4697e55..7997ecd 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-11.0.0-20201216.tar.xz) = 5624f905eafa693434ca16df9df9b3d7dff6d01d335fb690bee124d5f62cec6f2273a4b13cbe85eac33b00d2e556bfeb246444558c4a33747629529a2bd560ad +SHA512 (gcc-11.0.0-20201223.tar.xz) = 46bd2b601027ce420d5659e0e8638f9f3971eaf637960db9aced7a335ea234b761ae5b671ffc1fcee772c804cbdf9058346f461ad360019777feca89491afdd9 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 47dcf480fc5e7de9373e8c31ca2b1c0a34039ad2 Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Mon, 4 Jan 2021 18:22:49 +0100 Subject: [PATCH 013/293] CI gating: Switch to FMF format, include a beakerlib based smoke test coming from RHEL. --- .fmf/version | 1 + gating.yaml | 14 ++++ plans/ci.fmf | 6 ++ tests/build_hello_world.sh | 9 --- tests/data/hello.c | 5 -- tests/data/hello.cpp | 5 -- tests/smoke-test/Makefile | 65 +++++++++++++++++ tests/smoke-test/PURPOSE | 3 + tests/smoke-test/clear_cache.c | 7 ++ tests/smoke-test/hello.c | 7 ++ tests/smoke-test/hello.cpp | 7 ++ tests/smoke-test/hello.f90 | 3 + tests/smoke-test/main.fmf | 22 ++++++ tests/smoke-test/omphello.c | 24 +++++++ tests/smoke-test/quad.c | 38 ++++++++++ tests/smoke-test/runtest.sh | 125 +++++++++++++++++++++++++++++++++ tests/smoke-test/thr-init-2.c | 24 +++++++ tests/smoke-test/tm.c | 34 +++++++++ tests/tests.yml | 14 ---- 19 files changed, 380 insertions(+), 33 deletions(-) create mode 100644 .fmf/version create mode 100644 gating.yaml create mode 100644 plans/ci.fmf delete mode 100755 tests/build_hello_world.sh delete mode 100644 tests/data/hello.c delete mode 100644 tests/data/hello.cpp create mode 100644 tests/smoke-test/Makefile create mode 100644 tests/smoke-test/PURPOSE create mode 100644 tests/smoke-test/clear_cache.c create mode 100644 tests/smoke-test/hello.c create mode 100644 tests/smoke-test/hello.cpp create mode 100644 tests/smoke-test/hello.f90 create mode 100644 tests/smoke-test/main.fmf create mode 100644 tests/smoke-test/omphello.c create mode 100644 tests/smoke-test/quad.c create mode 100755 tests/smoke-test/runtest.sh create mode 100644 tests/smoke-test/thr-init-2.c create mode 100644 tests/smoke-test/tm.c delete mode 100644 tests/tests.yml diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..c6030c9 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,14 @@ +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_stable +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} +--- !Policy +product_versions: + - rhel-9 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1-gating.functional} + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1-gating-p9.functional} diff --git a/plans/ci.fmf b/plans/ci.fmf new file mode 100644 index 0000000..1ad2c12 --- /dev/null +++ b/plans/ci.fmf @@ -0,0 +1,6 @@ +summary: CI Gating Plan +discover: + how: fmf + directory: tests +execute: + how: beakerlib diff --git a/tests/build_hello_world.sh b/tests/build_hello_world.sh deleted file mode 100755 index f6aae70..0000000 --- a/tests/build_hello_world.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -set -ex - -gcc -x c $(rpm --eval %build_cflags) data/hello.c -o hello_c.out -./hello_c.out | grep -q "Hello World" - -g++ -x c++ $(rpm --eval %build_cxxflags) data/hello.cpp -o hello_cpp.out -./hello_cpp.out | grep -q "Hello World" diff --git a/tests/data/hello.c b/tests/data/hello.c deleted file mode 100644 index fe064a2..0000000 --- a/tests/data/hello.c +++ /dev/null @@ -1,5 +0,0 @@ -#include -int main() { - printf("Hello World!\n"); - return 0; -} diff --git a/tests/data/hello.cpp b/tests/data/hello.cpp deleted file mode 100644 index 2131d8a..0000000 --- a/tests/data/hello.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include -int main() { - std::cout << "Hello World!\n"; - return 0; -} diff --git a/tests/smoke-test/Makefile b/tests/smoke-test/Makefile new file mode 100644 index 0000000..fb46790 --- /dev/null +++ b/tests/smoke-test/Makefile @@ -0,0 +1,65 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /tools/gcc/Sanity/smoke-test +# Description: Basic smoke test. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/tools/gcc/Sanity/smoke-test +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE hello.c hello.f90 hello.cpp tm.c quad.c omphello.c thr-init-2.c clear_cache.c + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + + +include /usr/share/rhts/lib/rhts-make.include + +$(METADATA): Makefile + @echo "Owner: Marek Polacek " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: Basic smoke test." >> $(METADATA) + @echo "Type: Sanity" >> $(METADATA) + @echo "TestTime: 10m" >> $(METADATA) + @echo "RunFor: gcc" >> $(METADATA) + @echo "RunFor: devtoolset-1.0-gcc" >> $(METADATA) + @echo "Requires: gcc gcc-c++ gcc-gfortran glibc-common glibc-devel" >> $(METADATA) + @echo "Requires: libquadmath libquadmath-devel libgomp libgcc libstdc++-devel" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/smoke-test/PURPOSE b/tests/smoke-test/PURPOSE new file mode 100644 index 0000000..912f7b4 --- /dev/null +++ b/tests/smoke-test/PURPOSE @@ -0,0 +1,3 @@ +PURPOSE of /tools/gcc/Sanity/smoke-test +Description: Basic smoke test. +Author: Marek Polacek diff --git a/tests/smoke-test/clear_cache.c b/tests/smoke-test/clear_cache.c new file mode 100644 index 0000000..b10479f --- /dev/null +++ b/tests/smoke-test/clear_cache.c @@ -0,0 +1,7 @@ +int +main (void) +{ + char *mem = __builtin_alloca (40); + __builtin___clear_cache (mem, mem + 40); + return 0; +} diff --git a/tests/smoke-test/hello.c b/tests/smoke-test/hello.c new file mode 100644 index 0000000..4096e11 --- /dev/null +++ b/tests/smoke-test/hello.c @@ -0,0 +1,7 @@ +#include + +int +main (void) +{ + puts ("Hello World!"); +} diff --git a/tests/smoke-test/hello.cpp b/tests/smoke-test/hello.cpp new file mode 100644 index 0000000..0f2234e --- /dev/null +++ b/tests/smoke-test/hello.cpp @@ -0,0 +1,7 @@ +#include + +int +main (void) +{ + std::cout << "Hello, world!\n"; +} diff --git a/tests/smoke-test/hello.f90 b/tests/smoke-test/hello.f90 new file mode 100644 index 0000000..afabbb2 --- /dev/null +++ b/tests/smoke-test/hello.f90 @@ -0,0 +1,3 @@ + program hello + print *, "Hello World!" + end program hello diff --git a/tests/smoke-test/main.fmf b/tests/smoke-test/main.fmf new file mode 100644 index 0000000..3710ca3 --- /dev/null +++ b/tests/smoke-test/main.fmf @@ -0,0 +1,22 @@ +summary: Basic smoke test. +description: '' +contact: +- Marek Polacek +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +- gcc-c++ +- gcc-gfortran +- glibc-common +- glibc-devel +- libquadmath +- libquadmath-devel +- libgomp +- libgcc +- libstdc++-devel +duration: 10m +extra-summary: /tools/gcc/Sanity/smoke-test +extra-task: /tools/gcc/Sanity/smoke-test diff --git a/tests/smoke-test/omphello.c b/tests/smoke-test/omphello.c new file mode 100644 index 0000000..85b591f --- /dev/null +++ b/tests/smoke-test/omphello.c @@ -0,0 +1,24 @@ +#include +#include +#include + +int +main (void) +{ + int th_id; + int nthreads; + + #pragma omp parallel private(th_id) + { + th_id = omp_get_thread_num (); + printf ("Hello World from thread %d\n", th_id); + + #pragma omp barrier + if (th_id == 0) + { + nthreads = omp_get_num_threads (); + printf ("There are %d threads\n", nthreads); + } + } + return EXIT_SUCCESS; +} diff --git a/tests/smoke-test/quad.c b/tests/smoke-test/quad.c new file mode 100644 index 0000000..e5a6cc7 --- /dev/null +++ b/tests/smoke-test/quad.c @@ -0,0 +1,38 @@ +#include +#include +#include + +int +main (void) +{ + __float128 r = strtoflt128 ("1.23456789", NULL); + + int prec = 20; + int width = 46; + char buf[128]; + + r = 2.0q; + r = sqrtq (r); + int n = quadmath_snprintf (buf, sizeof buf, "%+-#*.20Qe", width, r); + if ((size_t) n < sizeof buf) + /* Prints: +1.41421356237309504880e+00 */ + printf ("%s\n", buf); + quadmath_snprintf (buf, sizeof buf, "%Qa", r); + if ((size_t) n < sizeof buf) + /* Prints: 0x1.6a09e667f3bcc908b2fb1366ea96p+0 */ + printf ("%s\n", buf); + n = quadmath_snprintf (NULL, 0, "%+-#46.*Qe", prec, r); + if (n > -1) + { + char *str = malloc (n + 1); + if (str) + { + quadmath_snprintf (str, n + 1, "%+-#46.*Qe", prec, r); + /* Prints: +1.41421356237309504880e+00 */ + printf ("%s\n", str); + } + free (str); + } + + return 0; +} diff --git a/tests/smoke-test/runtest.sh b/tests/smoke-test/runtest.sh new file mode 100755 index 0000000..78fda72 --- /dev/null +++ b/tests/smoke-test/runtest.sh @@ -0,0 +1,125 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Sanity/smoke-test +# Description: Basic smoke test. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc gcc-c++ gcc-gfortran glibc-common libgomp libgcc glibc-devel libstdc++ libstdc++-devel) + +# Choose the compiler. +GCC=${GCC:-gcc} +GXX=${GXX:-g++} +GFORTRAN=${GFORTRAN:-gfortran} + +PACKAGE=gcc + +rlJournalStart + rlPhaseStartSetup + export PRI_ARCH=`rlGetPrimaryArch` + export SEC_ARCH=`rlGetSecondaryArch` + # don't assert anything under devtoolset + if type gcc | grep -q -v devtoolset + then + for p in "${PACKAGES[@]}"; do + rpm -q "$p.$PRI_ARCH" || yum install -y "$p.$PRI_ARCH" + rlAssertRpm "$p.$PRI_ARCH" + done; unset p + fi + rlLog "GCC = $GCC" + rlLog "Installed within `rpmquery -f $(which $GCC)`" + rlLog "GXX = $GXX" + rlLog "Installed within `rpmquery -f $(which $GXX)`" + rlLog "GFORTRAN = $GFORTRAN" + rlLog "Installed within `rpmquery -f $(which $GFORTRAN)`" + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + # We need some files. + rlRun "cp -v hello.{c,cpp,f90} tm.c quad.c thr-init-2.c clear_cache.c omphello.c $TmpDir" + rlRun "pushd $TmpDir" + rlRun "rpmquery -l libstdc++-devel.$PRI_ARCH" + test -n "$SEC_ARCH" && rpmquery "libstdc++-devel.$SEC_ARCH" && rlRun "rpmquery -l libstdc++-devel.$SEC_ARCH" + rlPhaseEnd + + rlPhaseStartSetup "Showing compiler versions" + for compiler in $GCC $GXX $GFORTRAN + do + rlLog "Version of compiler: $compiler" + eval "$compiler --version 2>&1" | while read line + do + rlLog " $line" + done + done + rlPhaseEnd + + rlPhaseStartTest "Compile" + rlRun "$GCC hello.c -o hello_c" + rlRun "$GXX hello.cpp -o hello_cpp" + rlRun "$GFORTRAN hello.f90 -o hello_fortran" + + # TM support is GCC >=4.7 only. + $GCC -xc -O2 -std=gnu99 -fgnu-tm - <<< "int main(){}" + if test $? -eq 0; then + rlRun "$GCC -O2 -std=gnu99 -fgnu-tm tm.c -o tm" + rlRun "./tm" + fi + + # Test OpenMP. + rlRun "$GCC omphello.c -O2 -std=gnu99 -fopenmp -o omp" + rlRun "./omp" + + # Test __thread. + rlRun "$GCC thr-init-2.c -O2 -std=gnu99 -ftls-model=initial-exec -o thr" + rlRun "./thr" + + # Now test some libquadmath stuff (__float128 support). + # libquadmath is mising on RHEL machines, usually. + test "`rpmquery --qf '%{version}-%{release}' libquadmath`" = "`rpmquery --qf '%{version}-%{release}' $GCC`" + if test $? -eq 0 -a "$GCC" = "gcc"; then + rlRun "$GCC quad.c -O2 -std=gnu99 -lquadmath -lm -o quad" + rlRun "./quad" + fi + + # And now something from libgcc, e.g. __builtin___clear_cache. + # But not on RHEL5. + if ! rlIsRHEL 5; then + rlRun "$GCC clear_cache.c -O2 -std=gnu99 -o cache" + rlRun "./cache" + fi + rlPhaseEnd + + rlPhaseStartTest "Check dependant libraries" + rlRun "ldd hello_{c,cpp,fortran} &> ldd.out" + # Nothing should be linked against anything in /opt. + rlAssertNotGrep "/opt" ldd.out + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/smoke-test/thr-init-2.c b/tests/smoke-test/thr-init-2.c new file mode 100644 index 0000000..051cff9 --- /dev/null +++ b/tests/smoke-test/thr-init-2.c @@ -0,0 +1,24 @@ +/* { dg-do run } */ +/* { dg-require-effective-target tls_runtime } */ +/* { dg-add-options tls } */ + +extern void abort() ; + +static __thread int fstat ; +static __thread int fstat = 1; + +int test_code(int b) +{ + fstat += b ; + return fstat; +} + +int main (int ac, char *av[]) +{ + int a = test_code(1); + + if ((a != 2) || (fstat != 2)) + abort () ; + + return 0; +} diff --git a/tests/smoke-test/tm.c b/tests/smoke-test/tm.c new file mode 100644 index 0000000..f9b4c9b --- /dev/null +++ b/tests/smoke-test/tm.c @@ -0,0 +1,34 @@ +extern void *malloc (__SIZE_TYPE__) __attribute__((malloc,transaction_safe)); + +static int __attribute__((transaction_safe)) +something (void) +{ + return 0; +} + +struct large { int foo[500]; }; + +int +main (void) +{ + int *p; + struct large *lp; + + __transaction_atomic { + p = malloc (sizeof (*p) * 100); + lp = malloc (sizeof (*lp) * 100); + + /* No instrumentation necessary; P and LP are transaction local. */ + p[5] = 123; + lp->foo[66] = 123; + + if (something ()) + __transaction_cancel; + } + + __transaction_relaxed { + ++p[5]; + } + + return ( (p[5] == 124) ? 0 : 1 ); +} diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index dfe09e0..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,14 +0,0 @@ -- hosts: localhost - roles: - - role: standard-test-basic - tags: - - classic - - required_packages: - - redhat-rpm-config - - annobin - - tests: - - build_hello_world: - dir: . - run: "./build_hello_world.sh" From 4a41cd799a633a6930ec3c5b01a24c62324fb434 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 9 Jan 2021 11:31:57 +0100 Subject: [PATCH 014/293] 11.0.0-0.12 --- .gitignore | 1 + gcc.spec | 42 +++++++++++++--- gcc11-pr98282.patch | 118 -------------------------------------------- sources | 2 +- 4 files changed, 37 insertions(+), 126 deletions(-) delete mode 100644 gcc11-pr98282.patch diff --git a/.gitignore b/.gitignore index add1368..2ec5a75 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ /gcc-11.0.0-20201216.tar.xz /gcc-11.0.0-20201217.tar.xz /gcc-11.0.0-20201223.tar.xz +/gcc-11.0.0-20210109.tar.xz diff --git a/gcc.spec b/gcc.spec index 8b6400d..04470c6 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20201223 -%global gitrev 9265a9d6eb38913206ddc37009fd548c2e4f5de0 +%global DATE 20210109 +%global gitrev 9971024e74d1681c78e9b1f0b7ea1e8a6cda7304 %global gcc_version 11.0.0 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.11%{?dist} +Release: %{gcc_release}.12%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -272,8 +272,7 @@ Patch8: gcc11-foffload-default.patch Patch9: gcc11-Wno-format-security.patch Patch10: gcc11-rh1574936.patch Patch11: gcc11-d-shared-libphobos.patch -Patch12: gcc11-pr98282.patch -Patch13: gcc11-pr98338-workaround.patch +Patch12: gcc11-pr98338-workaround.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -785,8 +784,7 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr98282~ -%patch13 -p0 -b .pr98338-workaround~ +%patch12 -p0 -b .pr98338-workaround~ echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE @@ -3071,6 +3069,36 @@ end %endif %changelog +* Sat Jan 9 2021 Jakub Jelinek 11.0.0-0.12 +- update from trunk + - PRs analyzer/97072, analyzer/97074, analyzer/98073, analyzer/98223, + analyzer/98293, analyzer/98564, analyzer/98580, bootstrap/98324, + bootstrap/98506, c++/82099, c++/95768, c++/96045, c++/96504, + c++/97597, c++/98206, c++/98305, c++/98316, c++/98329, c++/98332, + c++/98353, c++/98413, c++/98441, c++/98469, c++/98515, c++/98551, + c/98029, d/98427, fortran/83118, fortran/93701, fortran/93794, + fortran/93833, fortran/97612, fortran/97694, fortran/97723, + fortran/98022, fortran/98458, libstdc++/98384, middle-end/98160, + middle-end/98578, other/98437, rtl-optimization/97144, + rtl-optimization/97978, rtl-optimization/98214, + rtl-optimization/98334, rtl-optimization/98403, target/89057, + target/96793, target/97269, target/98461, target/98482, target/98495, + target/98521, target/98522, target/98567, target/98585, + testsuite/98489, testsuite/98566, tree-optimization/56719, + tree-optimization/94785, tree-optimization/94802, + tree-optimization/94994, tree-optimization/95401, + tree-optimization/95582, tree-optimization/95771, + tree-optimization/96239, tree-optimization/96782, + tree-optimization/96928, tree-optimization/96930, + tree-optimization/98282, tree-optimization/98291, + tree-optimization/98302, tree-optimization/98308, + tree-optimization/98371, tree-optimization/98381, + tree-optimization/98393, tree-optimization/98428, + tree-optimization/98464, tree-optimization/98474, + tree-optimization/98513, tree-optimization/98514, + tree-optimization/98516, tree-optimization/98544, + tree-optimization/98560, tree-optimization/98568 + * Wed Dec 23 2020 Jakub Jelinek 11.0.0-0.11 - update from trunk - PRs bootstrap/98300, bootstrap/98380, bootstrap/98412, c++/67343, diff --git a/gcc11-pr98282.patch b/gcc11-pr98282.patch deleted file mode 100644 index 4187c5f..0000000 --- a/gcc11-pr98282.patch +++ /dev/null @@ -1,118 +0,0 @@ -2020-12-15 Jakub Jelinek - - PR tree-optimization/98282 - * tree-ssa-pre.c (compute_avail): Don't try to adjust alias set - if different when ref1->opcode is not MEM_REF or TARGET_MEM_REF. - - * g++.dg/opt/pr98282.C: New test. - ---- gcc/tree-ssa-pre.c.jj 2020-11-30 10:48:31.000000000 +0100 -+++ gcc/tree-ssa-pre.c 2020-12-15 10:51:51.061206572 +0100 -@@ -4176,13 +4176,17 @@ compute_avail (void) - && ref2->opcode != MEM_REF - && ref2 != &operands[0]) - --ref2; -- if ((ref1->opcode == TARGET_MEM_REF -- || ref1->opcode == MEM_REF) -- && (TYPE_ALIGN (ref1->type) -- > TYPE_ALIGN (ref2->type))) -- ref1->type -- = build_aligned_type (ref1->type, -- TYPE_ALIGN (ref2->type)); -+ if (ref1->opcode == TARGET_MEM_REF -+ || ref1->opcode == MEM_REF) -+ { -+ if (TYPE_ALIGN (ref1->type) -+ > TYPE_ALIGN (ref2->type)) -+ ref1->type -+ = build_aligned_type (ref1->type, -+ TYPE_ALIGN (ref2->type)); -+ } -+ else -+ set = ref->set; - /* TBAA behavior is an obvious part so make sure - that the hashtable one covers this as well - by adjusting the ref alias set and its base. */ ---- gcc/testsuite/g++.dg/opt/pr98282.C.jj 2020-12-15 12:26:25.868415230 +0100 -+++ gcc/testsuite/g++.dg/opt/pr98282.C 2020-12-15 12:28:00.346353067 +0100 -@@ -0,0 +1,80 @@ -+// PR tree-optimization/98282 -+// { dg-do compile { target c++11 } } -+// { dg-options "-O2" } -+ -+template struct g; -+template struct g { typedef b c; }; -+template typename g::c &&d(b &&e) { -+ return static_cast::c &&>(e); -+} -+void *operator new(__SIZE_TYPE__, void *f) { return f; } -+struct h; -+struct k { -+ using i = h *; -+}; -+struct D { -+ k::i j; -+}; -+struct p : D { -+ p(p &&) : D() {} -+}; -+struct r { -+ using l = int; -+ r(r &&) : ad() {} -+ l *ad; -+}; -+struct s { -+ static s m(); -+}; -+struct t { -+ template void operator=(ah); -+}; -+struct I { -+ template void q(o ai) { -+ *ai = aj(); -+ s::m(); -+ } -+ h aj(); -+}; -+template class as; -+struct J { -+ int a; -+ char av; -+}; -+template struct aw : J { -+ void ax(...) {} -+}; -+template -+struct aw, an, n...> : aw, n...> { -+ using az = as; -+ using ba = aw; -+ char bb; -+ an &bc() { return *reinterpret_cast(this); } -+ void ax(az *bd) { -+ if (bb) -+ new (bd) an(d(bc())); -+ ba::ax(bd); -+ } -+}; -+template struct as : aw, n...> { -+ as(); -+ as(as &&be) { be.ax(this); } -+ void operator=(as be) { be.ax(this); } -+}; -+struct h { -+ as bg; -+}; -+using bh = t; -+struct u { -+ bh bj; -+}; -+I bk(); -+template void bl() { -+ h a; -+ bk().q(&a); -+} -+template void bn(int) { -+ u b; -+ b.bj = bl; -+} -+void bp() { bn(0); } diff --git a/sources b/sources index 7997ecd..40a9915 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-11.0.0-20201223.tar.xz) = 46bd2b601027ce420d5659e0e8638f9f3971eaf637960db9aced7a335ea234b761ae5b671ffc1fcee772c804cbdf9058346f461ad360019777feca89491afdd9 +SHA512 (gcc-11.0.0-20210109.tar.xz) = eb3864cf6fef07077175fec2f1ce0b67e678da70a85ce09888f78d1587e7b4c94c398a19aa4a77c32ffdebc34e877ce28deb881c3545521f22c6b158c3087d5d SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From ac8f498836cb54282caf6ee9c6bb0c179029c18c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 9 Jan 2021 12:42:33 +0100 Subject: [PATCH 015/293] 11.0.0-0.12 --- gcc.spec | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/gcc.spec b/gcc.spec index 04470c6..95796d4 100644 --- a/gcc.spec +++ b/gcc.spec @@ -294,7 +294,7 @@ Patch12: gcc11-pr98338-workaround.patch %if %{build_go} # Avoid stripping these libraries and binaries. %global __os_install_post \ -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.18.* \ +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.19.* \ chmod 644 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -302,7 +302,7 @@ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/test2json \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/vet \ %__os_install_post \ -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.18.* \ +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.19.* \ chmod 755 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 755 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -1388,7 +1388,7 @@ ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../libgfortran.so.5.* libgfortran.so ln -sf ../../../libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../libgo.so.18.* libgo.so +ln -sf ../../../libgo.so.19.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../libquadmath.so.0.* libquadmath.so @@ -1418,7 +1418,7 @@ ln -sf ../../../../%{_lib}/libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../../%{_lib}/libgfortran.so.5.* libgfortran.so ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../../%{_lib}/libgo.so.18.* libgo.so +ln -sf ../../../../%{_lib}/libgo.so.19.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so @@ -1538,8 +1538,8 @@ ln -sf ../`echo ../../../../lib/libgfortran.so.5.* | sed s~/lib/~/lib64/~` 64/li ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.18.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.18.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.19.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.19.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -1637,8 +1637,8 @@ ln -sf ../`echo ../../../../lib64/libgfortran.so.5.* | sed s~/../lib64/~/~` 32/l ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.18.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.18.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.19.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.19.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -1825,7 +1825,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.* %endif %if %{build_go} # Avoid stripping these libraries and binaries. -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.18.* +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.19.* chmod 644 %{buildroot}%{_prefix}/bin/go.gcc chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo @@ -2961,7 +2961,7 @@ end %doc rpm.doc/go/* %files -n libgo -%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.18* +%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.19* %doc rpm.doc/libgo/* %files -n libgo-devel From 93487d62ed16b755a08045b1ff13f06ca4b28dbc Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 13 Jan 2021 16:29:47 +0100 Subject: [PATCH 016/293] 11.0.0-0.13 --- .gitignore | 1 + gcc.spec | 17 ++++++++++++++--- sources | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 2ec5a75..48a9c85 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ /gcc-11.0.0-20201217.tar.xz /gcc-11.0.0-20201223.tar.xz /gcc-11.0.0-20210109.tar.xz +/gcc-11.0.0-20210113.tar.xz diff --git a/gcc.spec b/gcc.spec index 95796d4..3f4f4d3 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20210109 -%global gitrev 9971024e74d1681c78e9b1f0b7ea1e8a6cda7304 +%global DATE 20210113 +%global gitrev 12a2ec94f0612806441cdf5a9aab09ecf9b23deb %global gcc_version 11.0.0 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.12%{?dist} +Release: %{gcc_release}.13%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3069,6 +3069,17 @@ end %endif %changelog +* Wed Jan 13 2021 Jakub Jelinek 11.0.0-0.13 +- update from trunk + - PRs analyzer/98628, c++/97284, c++/98481, c++/98556, c++/98611, c++/98620, + c/98592, debug/97714, jit/98615, libstdc++/98613, + rtl-optimization/98603, target/97875, target/97969, target/98612, + testsuite/98225, testsuite/98602, tree-optimization/91403, + tree-optimization/95731, tree-optimization/95852, + tree-optimization/95867, tree-optimization/98526, + tree-optimization/98550, tree-optimization/98629 + - fix ICEs in print_mem_ref (#1915400, #1915437, #1915781, PR c/98597) + * Sat Jan 9 2021 Jakub Jelinek 11.0.0-0.12 - update from trunk - PRs analyzer/97072, analyzer/97074, analyzer/98073, analyzer/98223, diff --git a/sources b/sources index 40a9915..7a5fa14 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-11.0.0-20210109.tar.xz) = eb3864cf6fef07077175fec2f1ce0b67e678da70a85ce09888f78d1587e7b4c94c398a19aa4a77c32ffdebc34e877ce28deb881c3545521f22c6b158c3087d5d +SHA512 (gcc-11.0.0-20210113.tar.xz) = f11fbefb813368de29eb1368219938ce3f77b96f543b18d2ce14be113f25c8eaa46a450f1b88ed5752cf8180ed8881273f9ac5771bf1274d11e10d1fa16131e6 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From f49280a03bb6435cf5b1e69bcbcefb91f5fa410d Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 16 Jan 2021 11:31:41 +0100 Subject: [PATCH 017/293] 11.0.0-0.14 --- .gitignore | 1 + gcc.spec | 21 ++++++++++++++++++--- sources | 2 +- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 48a9c85..66ca0a7 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ /gcc-11.0.0-20201223.tar.xz /gcc-11.0.0-20210109.tar.xz /gcc-11.0.0-20210113.tar.xz +/gcc-11.0.0-20210116.tar.xz diff --git a/gcc.spec b/gcc.spec index 3f4f4d3..f0ebf45 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20210113 -%global gitrev 12a2ec94f0612806441cdf5a9aab09ecf9b23deb +%global DATE 20210116 +%global gitrev d42629234e8a859ed1be99bf5e06bce1a4e3fb0c %global gcc_version 11.0.0 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.13%{?dist} +Release: %{gcc_release}.14%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3069,6 +3069,21 @@ end %endif %changelog +* Sat Jan 16 2021 Jakub Jelinek 11.0.0-0.14 +- update from trunk + - PRs ada/98595, analyzer/98679, bootstrap/98696, c++/63707, c++/98231, + c++/98372, c++/98538, c++/98591, c++/98626, c++/98642, fortran/98661, + ipa/98652, jit/98586, libgomp/65099, libstdc++/98466, libstdc++/98471, + preprocessor/95253, target/70454, target/71233, target/88836, + target/95905, target/96938, target/98667, target/98671, target/98676, + testsuite/96098, testsuite/96147, tree-optimization/92645, + tree-optimization/96376, tree-optimization/96669, + tree-optimization/96681, tree-optimization/96688, + tree-optimization/96691, tree-optimization/98455, + tree-optimization/98597, tree-optimization/98640, + tree-optimization/98674, tree-optimization/98685 + - fix up pmovzx permutation SSE4.1 patterns (#1916240, PR target/98670) + * Wed Jan 13 2021 Jakub Jelinek 11.0.0-0.13 - update from trunk - PRs analyzer/98628, c++/97284, c++/98481, c++/98556, c++/98611, c++/98620, diff --git a/sources b/sources index 7a5fa14..6d46e14 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-11.0.0-20210113.tar.xz) = f11fbefb813368de29eb1368219938ce3f77b96f543b18d2ce14be113f25c8eaa46a450f1b88ed5752cf8180ed8881273f9ac5771bf1274d11e10d1fa16131e6 +SHA512 (gcc-11.0.0-20210116.tar.xz) = befda0f25ccc682205d2ed6a50edba3da059042fa0a25e3a435011765c8f61e895eef52ebeed7de0bf61f97ee8308645779f3dc55675cabe51acc6ea74c517b0 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From dd22b2a0a26b8d079b8f9e71476191ca4056f5fc Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 16 Jan 2021 12:34:08 +0100 Subject: [PATCH 018/293] 11.0.0-0.14 --- gcc.spec | 2 -- gcc11-i386-libgomp.patch | 11 ----------- 2 files changed, 13 deletions(-) delete mode 100644 gcc11-i386-libgomp.patch diff --git a/gcc.spec b/gcc.spec index f0ebf45..28f89b2 100644 --- a/gcc.spec +++ b/gcc.spec @@ -261,7 +261,6 @@ Provides: bundled(libiberty) Provides: gcc(major) = %{gcc_major} Patch0: gcc11-hack.patch -Patch1: gcc11-i386-libgomp.patch Patch2: gcc11-sparc-config-detection.patch Patch3: gcc11-libgomp-omp_h-multilib.patch Patch4: gcc11-libtool-no-rpath.patch @@ -767,7 +766,6 @@ to NVidia PTX capable devices if available. %prep %setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 %patch0 -p0 -b .hack~ -%patch1 -p0 -b .i386-libgomp~ %patch2 -p0 -b .sparc-config-detection~ %patch3 -p0 -b .libgomp-omp_h-multilib~ %patch4 -p0 -b .libtool-no-rpath~ diff --git a/gcc11-i386-libgomp.patch b/gcc11-i386-libgomp.patch deleted file mode 100644 index 520561e..0000000 --- a/gcc11-i386-libgomp.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100 -+++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100 -@@ -67,7 +67,7 @@ if test $enable_linux_futex = yes; then - ;; - *) - if test -z "$with_arch"; then -- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" -+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic" - fi - esac - ;; From 983aa76b9bc21ce2eab8bdf6b28cf1aa30a3253c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 19 Jan 2021 14:28:03 +0100 Subject: [PATCH 019/293] 11.0.0-0.15 --- gcc.spec | 26 ++++++++- gcc11-pr98672.patch | 87 +++++++++++++++++++++++++++++ gcc11-pr98687.patch | 130 ++++++++++++++++++++++++++++++++++++++++++++ gcc11-pr98721.patch | 91 +++++++++++++++++++++++++++++++ gcc11-pr98742.patch | 42 ++++++++++++++ 5 files changed, 373 insertions(+), 3 deletions(-) create mode 100644 gcc11-pr98672.patch create mode 100644 gcc11-pr98687.patch create mode 100644 gcc11-pr98721.patch create mode 100644 gcc11-pr98742.patch diff --git a/gcc.spec b/gcc.spec index 28f89b2..86f8247 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20210116 -%global gitrev d42629234e8a859ed1be99bf5e06bce1a4e3fb0c +%global DATE 20210119 +%global gitrev 4b9bffe2c626b87d403f11674a5bd63c6078c777 %global gcc_version 11.0.0 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.14%{?dist} +Release: %{gcc_release}.15%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -272,6 +272,10 @@ Patch9: gcc11-Wno-format-security.patch Patch10: gcc11-rh1574936.patch Patch11: gcc11-d-shared-libphobos.patch Patch12: gcc11-pr98338-workaround.patch +Patch13: gcc11-pr98672.patch +Patch14: gcc11-pr98687.patch +Patch15: gcc11-pr98721.patch +Patch16: gcc11-pr98742.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -783,6 +787,12 @@ to NVidia PTX capable devices if available. %endif %patch11 -p0 -b .d-shared-libphobos~ %patch12 -p0 -b .pr98338-workaround~ +%patch13 -p0 -b .pr98672~ +%patch14 -p0 -b .pr98687~ +%patch15 -p0 -b .pr98721~ +%patch16 -p0 -b .pr98742~ + +rm -f libgomp/testsuite/*/*task-detach* echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE @@ -3067,6 +3077,16 @@ end %endif %changelog +* Tue Jan 19 2021 Jakub Jelinek 11.0.0-0.15 +- update from trunk + - PRs debug/98708, debug/98716, ipa/98222, libstdc++/98725, target/97847, + testsuite/97299, testsuite/97494, testsuite/97987, + tree-optimization/96271 + - fix miscompilation of portable signed multiplication overflow check + (#1916576, PR tree-optimization/98727) + - switch to DWARF 5 by default +- fix PRs c++/98672, c++/98687, c++/98742, tree-optimization/98721 + * Sat Jan 16 2021 Jakub Jelinek 11.0.0-0.14 - update from trunk - PRs ada/98595, analyzer/98679, bootstrap/98696, c++/63707, c++/98231, diff --git a/gcc11-pr98672.patch b/gcc11-pr98672.patch new file mode 100644 index 0000000..b7ac680 --- /dev/null +++ b/gcc11-pr98672.patch @@ -0,0 +1,87 @@ +2021-01-15 Jakub Jelinek + + PR c++/98672 + * constexpr.c (potential_constant_expression_1) , + : If the condition isn't constant true, check if + the loop body can contain a return stmt. + + * g++.dg/cpp1y/constexpr-98672.C: New test. + +--- gcc/cp/constexpr.c.jj 2021-01-13 19:19:44.368469462 +0100 ++++ gcc/cp/constexpr.c 2021-01-14 12:02:27.347042704 +0100 +@@ -8190,7 +8190,17 @@ potential_constant_expression_1 (tree t, + /* If we couldn't evaluate the condition, it might not ever be + true. */ + if (!integer_onep (tmp)) +- return true; ++ { ++ /* Before returning true, check if the for body can contain ++ a return. */ ++ hash_set pset; ++ check_for_return_continue_data data = { &pset, NULL_TREE }; ++ if (tree ret_expr ++ = cp_walk_tree (&FOR_BODY (t), check_for_return_continue, ++ &data, &pset)) ++ *jump_target = ret_expr; ++ return true; ++ } + } + if (!RECUR (FOR_EXPR (t), any)) + return false; +@@ -8219,7 +8229,17 @@ potential_constant_expression_1 (tree t, + tmp = cxx_eval_outermost_constant_expr (tmp, true); + /* If we couldn't evaluate the condition, it might not ever be true. */ + if (!integer_onep (tmp)) +- return true; ++ { ++ /* Before returning true, check if the while body can contain ++ a return. */ ++ hash_set pset; ++ check_for_return_continue_data data = { &pset, NULL_TREE }; ++ if (tree ret_expr ++ = cp_walk_tree (&WHILE_BODY (t), check_for_return_continue, ++ &data, &pset)) ++ *jump_target = ret_expr; ++ return true; ++ } + if (!RECUR (WHILE_BODY (t), any)) + return false; + if (breaks (jump_target) || continues (jump_target)) +--- gcc/testsuite/g++.dg/cpp1y/constexpr-98672.C.jj 2021-01-14 12:19:24.842438847 +0100 ++++ gcc/testsuite/g++.dg/cpp1y/constexpr-98672.C 2021-01-14 12:07:33.935551155 +0100 +@@ -0,0 +1,35 @@ ++// PR c++/98672 ++// { dg-do compile { target c++14 } } ++ ++void ++foo () ++{ ++} ++ ++constexpr int ++bar () ++{ ++ for (int i = 0; i < 5; ++i) ++ return i; ++ foo (); ++ return 0; ++} ++ ++constexpr int ++baz () ++{ ++ int i = 0; ++ while (i < 5) ++ { ++ if (i == 3) ++ return i; ++ else ++ ++i; ++ } ++ foo (); ++ return 0; ++} ++ ++constexpr int i = bar (); ++constexpr int j = baz (); ++static_assert (i == 0 && j == 3, ""); diff --git a/gcc11-pr98687.patch b/gcc11-pr98687.patch new file mode 100644 index 0000000..d2e1ce0 --- /dev/null +++ b/gcc11-pr98687.patch @@ -0,0 +1,130 @@ +My recent patch that introduced push_using_decl_bindings didn't +handle USING_DECL redeclaration, therefore things broke. This +patch amends that. Note that I don't know if the other parts of +finish_nonmember_using_decl are needed (e.g. the binding->type +setting) -- I couldn't trigger it by any of my hand-made testcases. + +Sorry for not thinking harder about redeclarations in the original +patch :(. + +2021-01-15 Marek Polacek + + PR c++/98687 + * name-lookup.c (push_using_decl_bindings): If we found an + existing local binding, update it if it's not identical. + + * g++.dg/lookup/using64.C: New test. + * g++.dg/lookup/using65.C: New test. + +--- gcc/cp/name-lookup.c ++++ gcc/cp/name-lookup.c +@@ -9285,8 +9285,24 @@ push_operator_bindings () + void + push_using_decl_bindings (tree decl) + { +- push_local_binding (DECL_NAME (decl), USING_DECL_DECLS (decl), +- /*using*/true); ++ tree name = DECL_NAME (decl); ++ tree value = USING_DECL_DECLS (decl); ++ ++ cxx_binding *binding = find_local_binding (current_binding_level, name); ++ if (binding) ++ { ++ if (value == binding->value) ++ /* Redeclaration of this USING_DECL. */; ++ else if (binding->value && TREE_CODE (value) == OVERLOAD) ++ { ++ /* We already have this binding, so replace it. */ ++ update_local_overload (IDENTIFIER_BINDING (name), value); ++ IDENTIFIER_BINDING (name)->value = value; ++ } ++ } ++ else ++ /* Install the new binding. */ ++ push_local_binding (DECL_NAME (decl), value, /*using*/true); + } + + #include "gt-cp-name-lookup.h" +--- gcc/testsuite/g++.dg/lookup/using64.C ++++ gcc/testsuite/g++.dg/lookup/using64.C +@@ -0,0 +1,60 @@ ++// PR c++/98687 ++// { dg-do compile } ++ ++struct S { }; ++ ++namespace N { ++ template ++ bool operator==(T, int); ++ ++ template ++ void X(T); ++} ++ ++namespace M { ++ template ++ bool operator==(T, double); ++} ++ ++template ++bool fn1 (T t) ++{ ++ using N::operator==; ++ return t == 1; ++} ++ ++template ++bool fn2 (T t) ++{ ++ // Redeclaration. ++ using N::operator==; ++ using N::operator==; ++ return t == 1; ++} ++ ++template ++bool fn3 (T t) ++{ ++ // Need update_local_overload. ++ using N::operator==; ++ using M::operator==; ++ return t == 1; ++} ++ ++template ++void fn4 (T t) ++{ ++ struct X { }; ++ using N::X; ++ X(1); ++} ++ ++void ++g () ++{ ++ S s; ++ fn1 (s); ++ fn2 (s); ++ fn3 (s); ++ fn4 (s); ++} +--- gcc/testsuite/g++.dg/lookup/using65.C ++++ gcc/testsuite/g++.dg/lookup/using65.C +@@ -0,0 +1,17 @@ ++// PR c++/98687 ++// { dg-do compile } ++ ++extern "C" namespace std { ++ double log1p(double); ++} ++namespace std_fallback { ++ template void log1p(); ++} ++template struct log1p_impl { ++ static int run() { ++ using std::log1p; ++ using std_fallback::log1p; ++ return 0; ++ } ++}; ++void log1p() { log1p_impl::run(); } diff --git a/gcc11-pr98721.patch b/gcc11-pr98721.patch new file mode 100644 index 0000000..6459a9c --- /dev/null +++ b/gcc11-pr98721.patch @@ -0,0 +1,91 @@ +2021-01-19 Jakub Jelinek + + PR tree-optimization/98721 + * builtins.c (access_ref::inform_access): Don't assume + SSA_NAME_IDENTIFIER must be non-NULL. Print messages about + object whenever allocfn is NULL, rather than only when DECL_P + is true. Use %qE instead of %qD for that. Formatting fixes. + + * gcc.dg/pr98721-1.c: New test. + * gcc.dg/pr98721-2.c: New test. + +--- gcc/builtins.c.jj 2021-01-18 19:07:16.022895507 +0100 ++++ gcc/builtins.c 2021-01-19 11:56:52.247070923 +0100 +@@ -4414,8 +4414,8 @@ access_ref::inform_access (access_mode m + MAXREF on which the result is based. */ + const offset_int orng[] = + { +- offrng[0] - maxref.offrng[0], +- wi::smax (offrng[1] - maxref.offrng[1], offrng[0]), ++ offrng[0] - maxref.offrng[0], ++ wi::smax (offrng[1] - maxref.offrng[1], offrng[0]), + }; + + /* Add the final PHI's offset to that of each of the arguments +@@ -4493,12 +4493,15 @@ access_ref::inform_access (access_mode m + /* Strip the SSA_NAME suffix from the variable name and + recreate an identifier with the VLA's original name. */ + ref = gimple_call_lhs (stmt); +- ref = SSA_NAME_IDENTIFIER (ref); +- const char *id = IDENTIFIER_POINTER (ref); +- size_t len = strcspn (id, ".$"); +- if (!len) +- len = strlen (id); +- ref = get_identifier_with_length (id, len); ++ if (SSA_NAME_IDENTIFIER (ref)) ++ { ++ ref = SSA_NAME_IDENTIFIER (ref); ++ const char *id = IDENTIFIER_POINTER (ref); ++ size_t len = strcspn (id, ".$"); ++ if (!len) ++ len = strlen (id); ++ ref = get_identifier_with_length (id, len); ++ } + } + else + { +@@ -4557,13 +4560,13 @@ access_ref::inform_access (access_mode m + return; + } + +- if (DECL_P (ref)) ++ if (allocfn == NULL_TREE) + { + if (*offstr) +- inform (loc, "at offset %s into source object %qD of size %s", ++ inform (loc, "at offset %s into source object %qE of size %s", + offstr, ref, sizestr); + else +- inform (loc, "source object %qD of size %s", ref, sizestr); ++ inform (loc, "source object %qE of size %s", ref, sizestr); + + return; + } +--- gcc/testsuite/gcc.dg/pr98721-1.c.jj 2021-01-19 12:15:03.825600828 +0100 ++++ gcc/testsuite/gcc.dg/pr98721-1.c 2021-01-19 12:14:24.730045488 +0100 +@@ -0,0 +1,14 @@ ++/* PR tree-optimization/98721 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++foo (int n) ++{ ++ if (n <= 0) ++ { ++ char vla[n]; /* { dg-message "source object 'vla' of size 0" } */ ++ return __builtin_strlen (vla); /* { dg-warning "'__builtin_strlen' reading 1 or more bytes from a region of size 0" } */ ++ } ++ return -1; ++} +--- gcc/testsuite/gcc.dg/pr98721-2.c.jj 2021-01-19 12:00:16.005742548 +0100 ++++ gcc/testsuite/gcc.dg/pr98721-2.c 2021-01-19 11:59:29.372275423 +0100 +@@ -0,0 +1,8 @@ ++/* PR tree-optimization/98721 */ ++/* { dg-do compile } */ ++ ++int ++foo (void) ++{ ++ return __builtin_strlen (__builtin_alloca_with_align (0, 16)); /* { dg-warning "'__builtin_strlen' reading 1 or more bytes from a region of size 0" } */ ++} /* { dg-message "source object '' of size 0" "" { target *-*-* } .-1 } */ diff --git a/gcc11-pr98742.patch b/gcc11-pr98742.patch new file mode 100644 index 0000000..1b76510 --- /dev/null +++ b/gcc11-pr98742.patch @@ -0,0 +1,42 @@ +2021-01-19 Jakub Jelinek + + PR c++/98742 + * semantics.c (finish_omp_clauses) : If + error_operand_p, remove clause without further checking. Check + for non-NULL TYPE_NAME. + + * c-c++-common/gomp/task-detach-2.c: New test. + +--- gcc/cp/semantics.c.jj 2021-01-16 22:52:33.608413922 +0100 ++++ gcc/cp/semantics.c 2021-01-19 10:53:07.979801786 +0100 +@@ -7430,12 +7430,18 @@ finish_omp_clauses (tree clauses, enum c + remove = true; + break; + } ++ else if (error_operand_p (t)) ++ { ++ remove = true; ++ break; ++ } + else + { + tree type = TYPE_MAIN_VARIANT (TREE_TYPE (t)); + if (!type_dependent_expression_p (t) + && (!INTEGRAL_TYPE_P (type) + || TREE_CODE (type) != ENUMERAL_TYPE ++ || TYPE_NAME (type) == NULL_TREE + || (DECL_NAME (TYPE_NAME (type)) + != get_identifier ("omp_event_handle_t")))) + { +--- gcc/testsuite/c-c++-common/gomp/task-detach-2.c.jj 2021-01-19 11:07:29.345948289 +0100 ++++ gcc/testsuite/c-c++-common/gomp/task-detach-2.c 2021-01-19 11:06:57.090317518 +0100 +@@ -0,0 +1,9 @@ ++/* PR c++/98742 */ ++/* { dg-do compile } */ ++ ++void ++foo () ++{ ++#pragma omp task detach(0) /* { dg-error "before numeric constant" } */ ++ ; ++} From 6e2000ccdcdb66c5cfdc8eb6cbde89a7900e4603 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 19 Jan 2021 14:36:34 +0100 Subject: [PATCH 020/293] 11.0.0-0.15 --- .gitignore | 1 + gcc.spec | 5 ++++- gcc11-pr98638.patch | 29 +++++++++++++++++++++++++++++ sources | 2 +- 4 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 gcc11-pr98638.patch diff --git a/.gitignore b/.gitignore index 66ca0a7..16d11cc 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ /gcc-11.0.0-20210109.tar.xz /gcc-11.0.0-20210113.tar.xz /gcc-11.0.0-20210116.tar.xz +/gcc-11.0.0-20210119.tar.xz diff --git a/gcc.spec b/gcc.spec index 86f8247..5a69606 100644 --- a/gcc.spec +++ b/gcc.spec @@ -276,6 +276,7 @@ Patch13: gcc11-pr98672.patch Patch14: gcc11-pr98687.patch Patch15: gcc11-pr98721.patch Patch16: gcc11-pr98742.patch +Patch17: gcc11-pr98638.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -791,6 +792,7 @@ to NVidia PTX capable devices if available. %patch14 -p0 -b .pr98687~ %patch15 -p0 -b .pr98721~ %patch16 -p0 -b .pr98742~ +%patch17 -p0 -b .pr98638~ rm -f libgomp/testsuite/*/*task-detach* @@ -3085,7 +3087,8 @@ end - fix miscompilation of portable signed multiplication overflow check (#1916576, PR tree-optimization/98727) - switch to DWARF 5 by default -- fix PRs c++/98672, c++/98687, c++/98742, tree-optimization/98721 +- fix PRs c++/98672, c++/98687, c++/98742, middle-end/98638, + tree-optimization/98721 * Sat Jan 16 2021 Jakub Jelinek 11.0.0-0.14 - update from trunk diff --git a/gcc11-pr98638.patch b/gcc11-pr98638.patch new file mode 100644 index 0000000..c399a30 --- /dev/null +++ b/gcc11-pr98638.patch @@ -0,0 +1,29 @@ +Since SSA names do leak into global tree data structures like +TYPE_SIZE or in this case GFC_DECL_SAVED_DESCRIPTOR because of +frontend bugs we have to be careful to wipe references to the +CFG when we deconstruct SSA form because we now do ggc_free that. + +Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. + +2021-01-19 Richard Biener + + PR middle-end/98638 + * tree-ssanames.c (fini_ssanames): Zero SSA_NAME_DEF_STMT. + +--- gcc/tree-ssanames.c ++++ gcc/tree-ssanames.c +@@ -102,6 +102,14 @@ init_ssanames (struct function *fn, int size) + void + fini_ssanames (struct function *fn) + { ++ unsigned i; ++ tree name; ++ /* Some SSA names leak into global tree data structures so we can't simply ++ ggc_free them. But make sure to clear references to stmts since we now ++ ggc_free the CFG itself. */ ++ FOR_EACH_VEC_SAFE_ELT (SSANAMES (fn), i, name) ++ if (name) ++ SSA_NAME_DEF_STMT (name) = NULL; + vec_free (SSANAMES (fn)); + vec_free (FREE_SSANAMES (fn)); + vec_free (FREE_SSANAMES_QUEUE (fn)); diff --git a/sources b/sources index 6d46e14..9f41955 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-11.0.0-20210116.tar.xz) = befda0f25ccc682205d2ed6a50edba3da059042fa0a25e3a435011765c8f61e895eef52ebeed7de0bf61f97ee8308645779f3dc55675cabe51acc6ea74c517b0 +SHA512 (gcc-11.0.0-20210119.tar.xz) = 67fc01799d7af841f5b2b63fe40fc5eac01fe25cb6bb0994de46babbdabe8aee384ea0fbd41b5ac7b53b32ce5724618cb0026ac2e1d3d2431751b225f8e96783 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From b08544362ee92895e04e7363d2c9f5cbd09a820e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 20 Jan 2021 17:54:51 +0100 Subject: [PATCH 021/293] 11.0.0-0.16 --- gcc.spec | 14 ++- gcc11-libgomp-task.patch | 69 +++++++++++++++ gcc11-pr98751.patch | 185 +++++++++++++++++++++++++++++++++++++++ gcc11-pr98765.patch | 83 ++++++++++++++++++ 4 files changed, 350 insertions(+), 1 deletion(-) create mode 100644 gcc11-libgomp-task.patch create mode 100644 gcc11-pr98751.patch create mode 100644 gcc11-pr98765.patch diff --git a/gcc.spec b/gcc.spec index 5a69606..96ba798 100644 --- a/gcc.spec +++ b/gcc.spec @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.15%{?dist} +Release: %{gcc_release}.16%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -277,6 +277,9 @@ Patch14: gcc11-pr98687.patch Patch15: gcc11-pr98721.patch Patch16: gcc11-pr98742.patch Patch17: gcc11-pr98638.patch +Patch18: gcc11-pr98765.patch +Patch19: gcc11-libgomp-task.patch +Patch20: gcc11-pr98751.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -793,6 +796,9 @@ to NVidia PTX capable devices if available. %patch15 -p0 -b .pr98721~ %patch16 -p0 -b .pr98742~ %patch17 -p0 -b .pr98638~ +%patch18 -p0 -b .pr98765~ +%patch19 -p0 -b .libgomp-task~ +%patch20 -p0 -b .pr98751~ rm -f libgomp/testsuite/*/*task-detach* @@ -3079,6 +3085,12 @@ end %endif %changelog +* Wed Jan 20 2021 Jakub Jelinek 11.0.0-0.16 +- fix DWARF5 -g -flto -ffat-lto-objects, so that LTO sections can be stripped off + later (PR debug/98765) +- fix GOMP_task caller stack corruption on s390x +- libgccjit DWARF5 fixes (PR debug/98751) + * Tue Jan 19 2021 Jakub Jelinek 11.0.0-0.15 - update from trunk - PRs debug/98708, debug/98716, ipa/98222, libstdc++/98725, target/97847, diff --git a/gcc11-libgomp-task.patch b/gcc11-libgomp-task.patch new file mode 100644 index 0000000..b0ba04e --- /dev/null +++ b/gcc11-libgomp-task.patch @@ -0,0 +1,69 @@ +2021-01-20 Jakub Jelinek + + * task.c (GOMP_task): Rename priority argument to priority_arg, + add priority automatic variable and modify that variable. Instead of + clearing detach argument when GOMP_TASK_FLAG_DETACH bit is not set, + check flags for that bit. + +--- libgomp/task.c.jj 2021-01-18 07:18:42.362339622 +0100 ++++ libgomp/task.c 2021-01-20 17:23:36.973758174 +0100 +@@ -354,10 +354,11 @@ task_fulfilled_p (struct gomp_task *task + void + GOMP_task (void (*fn) (void *), void *data, void (*cpyfn) (void *, void *), + long arg_size, long arg_align, bool if_clause, unsigned flags, +- void **depend, int priority, void *detach) ++ void **depend, int priority_arg, void *detach) + { + struct gomp_thread *thr = gomp_thread (); + struct gomp_team *team = thr->ts.team; ++ int priority = 0; + + #ifdef HAVE_BROKEN_POSIX_SEMAPHORES + /* If pthread_mutex_* is used for omp_*lock*, then each task must be +@@ -385,13 +386,12 @@ GOMP_task (void (*fn) (void *), void *da + } + } + +- if ((flags & GOMP_TASK_FLAG_PRIORITY) == 0) +- priority = 0; +- else if (priority > gomp_max_task_priority_var) +- priority = gomp_max_task_priority_var; +- +- if ((flags & GOMP_TASK_FLAG_DETACH) == 0) +- detach = NULL; ++ if (__builtin_expect ((flags & GOMP_TASK_FLAG_PRIORITY) != 0, 0)) ++ { ++ priority = priority_arg; ++ if (priority > gomp_max_task_priority_var) ++ priority = gomp_max_task_priority_var; ++ } + + if (!if_clause || team == NULL + || (thr->task && thr->task->final_task) +@@ -415,7 +415,7 @@ GOMP_task (void (*fn) (void *), void *da + || (flags & GOMP_TASK_FLAG_FINAL); + task.priority = priority; + +- if (detach) ++ if ((flags & GOMP_TASK_FLAG_DETACH) != 0) + { + task.detach = true; + gomp_sem_init (&task.completion_sem, 0); +@@ -443,7 +443,7 @@ GOMP_task (void (*fn) (void *), void *da + else + fn (data); + +- if (detach && !task_fulfilled_p (&task)) ++ if (task.detach && !task_fulfilled_p (&task)) + gomp_sem_wait (&task.completion_sem); + + /* Access to "children" is normally done inside a task_lock +@@ -484,7 +484,7 @@ GOMP_task (void (*fn) (void *), void *da + task->kind = GOMP_TASK_UNDEFERRED; + task->in_tied_task = parent->in_tied_task; + task->taskgroup = taskgroup; +- if (detach) ++ if ((flags & GOMP_TASK_FLAG_DETACH) != 0) + { + task->detach = true; + gomp_sem_init (&task->completion_sem, 0); diff --git a/gcc11-pr98751.patch b/gcc11-pr98751.patch new file mode 100644 index 0000000..c0caaf8 --- /dev/null +++ b/gcc11-pr98751.patch @@ -0,0 +1,185 @@ +2021-01-19 David Malcolm + + PR debug/98751 + * dwarf2out.c (output_line_info): Rename static variable + "generation", moving it out of the function to... + (output_line_info_generation): New. + (init_sections_and_labels): Likewise, renaming the variable to... + (init_sections_and_labels_generation): New. + (dwarf2out_c_finalize): Reset the new variables. + +--- gcc/dwarf2out.c ++++ gcc/dwarf2out.c +@@ -12709,22 +12709,27 @@ output_one_line_info_table (dw_line_info_table *table) + dw2_asm_output_data (1, DW_LNE_end_sequence, NULL); + } + ++static unsigned int output_line_info_generation; ++ + /* Output the source line number correspondence information. This + information goes into the .debug_line section. */ + + static void + output_line_info (bool prologue_only) + { +- static unsigned int generation; + char l1[MAX_ARTIFICIAL_LABEL_BYTES], l2[MAX_ARTIFICIAL_LABEL_BYTES]; + char p1[MAX_ARTIFICIAL_LABEL_BYTES], p2[MAX_ARTIFICIAL_LABEL_BYTES]; + bool saw_one = false; + int opc; + +- ASM_GENERATE_INTERNAL_LABEL (l1, LINE_NUMBER_BEGIN_LABEL, generation); +- ASM_GENERATE_INTERNAL_LABEL (l2, LINE_NUMBER_END_LABEL, generation); +- ASM_GENERATE_INTERNAL_LABEL (p1, LN_PROLOG_AS_LABEL, generation); +- ASM_GENERATE_INTERNAL_LABEL (p2, LN_PROLOG_END_LABEL, generation++); ++ ASM_GENERATE_INTERNAL_LABEL (l1, LINE_NUMBER_BEGIN_LABEL, ++ output_line_info_generation); ++ ASM_GENERATE_INTERNAL_LABEL (l2, LINE_NUMBER_END_LABEL, ++ output_line_info_generation); ++ ASM_GENERATE_INTERNAL_LABEL (p1, LN_PROLOG_AS_LABEL, ++ output_line_info_generation); ++ ASM_GENERATE_INTERNAL_LABEL (p2, LN_PROLOG_END_LABEL, ++ output_line_info_generation++); + + if (!XCOFF_DEBUGGING_INFO) + { +@@ -28589,6 +28594,10 @@ output_macinfo (const char *debug_line_label, bool early_lto_debug) + macinfo_label_base += macinfo_label_base_adj; + } + ++/* As init_sections_and_labels may get called multiple times, have a ++ generation count for labels. */ ++static unsigned init_sections_and_labels_generation; ++ + /* Initialize the various sections and labels for dwarf output and prefix + them with PREFIX if non-NULL. Returns the generation (zero based + number of times function was called). */ +@@ -28596,10 +28605,6 @@ output_macinfo (const char *debug_line_label, bool early_lto_debug) + static unsigned + init_sections_and_labels (bool early_lto_debug) + { +- /* As we may get called multiple times have a generation count for +- labels. */ +- static unsigned generation = 0; +- + if (early_lto_debug) + { + if (!dwarf_split_debug_info) +@@ -28634,7 +28639,7 @@ init_sections_and_labels (bool early_lto_debug) + SECTION_DEBUG | SECTION_EXCLUDE, NULL); + ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_abbrev_section_label, + DEBUG_SKELETON_ABBREV_SECTION_LABEL, +- generation); ++ init_sections_and_labels_generation); + + /* Somewhat confusing detail: The skeleton_[abbrev|info] sections + stay in the main .o, but the skeleton_line goes into the split +@@ -28644,14 +28649,14 @@ init_sections_and_labels (bool early_lto_debug) + SECTION_DEBUG | SECTION_EXCLUDE, NULL); + ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_line_section_label, + DEBUG_SKELETON_LINE_SECTION_LABEL, +- generation); ++ init_sections_and_labels_generation); + debug_str_offsets_section + = get_section (DEBUG_LTO_DWO_STR_OFFSETS_SECTION, + SECTION_DEBUG | SECTION_EXCLUDE, + NULL); + ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_info_section_label, + DEBUG_SKELETON_INFO_SECTION_LABEL, +- generation); ++ init_sections_and_labels_generation); + debug_str_dwo_section = get_section (DEBUG_LTO_STR_DWO_SECTION, + DEBUG_STR_DWO_SECTION_FLAGS, + NULL); +@@ -28667,7 +28672,8 @@ init_sections_and_labels (bool early_lto_debug) + debug_line_section = get_section (DEBUG_LTO_LINE_SECTION, + SECTION_DEBUG | SECTION_EXCLUDE, NULL); + ASM_GENERATE_INTERNAL_LABEL (debug_line_section_label, +- DEBUG_LINE_SECTION_LABEL, generation); ++ DEBUG_LINE_SECTION_LABEL, ++ init_sections_and_labels_generation); + + debug_str_section = get_section (DEBUG_LTO_STR_SECTION, + DEBUG_STR_SECTION_FLAGS +@@ -28711,7 +28717,7 @@ init_sections_and_labels (bool early_lto_debug) + SECTION_DEBUG, NULL); + ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_abbrev_section_label, + DEBUG_SKELETON_ABBREV_SECTION_LABEL, +- generation); ++ init_sections_and_labels_generation); + + /* Somewhat confusing detail: The skeleton_[abbrev|info] sections + stay in the main .o, but the skeleton_line goes into the +@@ -28721,13 +28727,13 @@ init_sections_and_labels (bool early_lto_debug) + SECTION_DEBUG | SECTION_EXCLUDE, NULL); + ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_line_section_label, + DEBUG_SKELETON_LINE_SECTION_LABEL, +- generation); ++ init_sections_and_labels_generation); + debug_str_offsets_section + = get_section (DEBUG_DWO_STR_OFFSETS_SECTION, + SECTION_DEBUG | SECTION_EXCLUDE, NULL); + ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_info_section_label, + DEBUG_SKELETON_INFO_SECTION_LABEL, +- generation); ++ init_sections_and_labels_generation); + debug_loc_section = get_section (dwarf_version >= 5 + ? DEBUG_DWO_LOCLISTS_SECTION + : DEBUG_DWO_LOC_SECTION, +@@ -28767,31 +28773,37 @@ init_sections_and_labels (bool early_lto_debug) + } + + ASM_GENERATE_INTERNAL_LABEL (abbrev_section_label, +- DEBUG_ABBREV_SECTION_LABEL, generation); ++ DEBUG_ABBREV_SECTION_LABEL, ++ init_sections_and_labels_generation); + ASM_GENERATE_INTERNAL_LABEL (debug_info_section_label, +- DEBUG_INFO_SECTION_LABEL, generation); ++ DEBUG_INFO_SECTION_LABEL, ++ init_sections_and_labels_generation); + info_section_emitted = false; + ASM_GENERATE_INTERNAL_LABEL (debug_line_section_label, +- DEBUG_LINE_SECTION_LABEL, generation); ++ DEBUG_LINE_SECTION_LABEL, ++ init_sections_and_labels_generation); + /* There are up to 4 unique ranges labels per generation. + See also output_rnglists. */ + ASM_GENERATE_INTERNAL_LABEL (ranges_section_label, +- DEBUG_RANGES_SECTION_LABEL, generation * 4); ++ DEBUG_RANGES_SECTION_LABEL, ++ init_sections_and_labels_generation * 4); + if (dwarf_version >= 5 && dwarf_split_debug_info) + ASM_GENERATE_INTERNAL_LABEL (ranges_base_label, + DEBUG_RANGES_SECTION_LABEL, +- 1 + generation * 4); ++ 1 + init_sections_and_labels_generation * 4); + ASM_GENERATE_INTERNAL_LABEL (debug_addr_section_label, +- DEBUG_ADDR_SECTION_LABEL, generation); ++ DEBUG_ADDR_SECTION_LABEL, ++ init_sections_and_labels_generation); + ASM_GENERATE_INTERNAL_LABEL (macinfo_section_label, + (dwarf_strict && dwarf_version < 5) + ? DEBUG_MACINFO_SECTION_LABEL +- : DEBUG_MACRO_SECTION_LABEL, generation); ++ : DEBUG_MACRO_SECTION_LABEL, ++ init_sections_and_labels_generation); + ASM_GENERATE_INTERNAL_LABEL (loc_section_label, DEBUG_LOC_SECTION_LABEL, +- generation); ++ init_sections_and_labels_generation); + +- ++generation; +- return generation - 1; ++ ++init_sections_and_labels_generation; ++ return init_sections_and_labels_generation - 1; + } + + /* Set up for Dwarf output at the start of compilation. */ +@@ -32379,6 +32391,8 @@ dwarf2out_c_finalize (void) + base_types.release (); + XDELETEVEC (producer_string); + producer_string = NULL; ++ output_line_info_generation = 0; ++ init_sections_and_labels_generation = 0; + } + + #include "gt-dwarf2out.h" diff --git a/gcc11-pr98765.patch b/gcc11-pr98765.patch new file mode 100644 index 0000000..e4cda36 --- /dev/null +++ b/gcc11-pr98765.patch @@ -0,0 +1,83 @@ +2021-01-20 Jakub Jelinek + + PR debug/98765 + * dwarf2out.c (reset_indirect_string): Also reset indirect strings + with DW_FORM_line_strp form. + (prune_unused_types_update_strings): Don't add into debug_str_hash + indirect strings with DW_FORM_line_strp form. + (adjust_name_comp_dir): New function. + (dwarf2out_finish): Call it on CU DIEs after resetting + debug_line_str_hash. + +--- gcc/dwarf2out.c.jj 2021-01-20 08:32:09.612958930 +0100 ++++ gcc/dwarf2out.c 2021-01-20 15:41:30.343417095 +0100 +@@ -4733,7 +4733,9 @@ int + reset_indirect_string (indirect_string_node **h, void *) + { + struct indirect_string_node *node = *h; +- if (node->form == DW_FORM_strp || node->form == dwarf_FORM (DW_FORM_strx)) ++ if (node->form == DW_FORM_strp ++ || node->form == DW_FORM_line_strp ++ || node->form == dwarf_FORM (DW_FORM_strx)) + { + free (node->label); + node->label = NULL; +@@ -29477,8 +29479,9 @@ prune_unused_types_update_strings (dw_di + s->refcount++; + /* Avoid unnecessarily putting strings that are used less than + twice in the hash table. */ +- if (s->refcount +- == ((DEBUG_STR_SECTION_FLAGS & SECTION_MERGE) ? 1 : 2)) ++ if (s->form != DW_FORM_line_strp ++ && (s->refcount ++ == ((DEBUG_STR_SECTION_FLAGS & SECTION_MERGE) ? 1 : 2))) + { + indirect_string_node **slot + = debug_str_hash->find_slot_with_hash (s->str, +@@ -31325,6 +31328,33 @@ reset_dies (dw_die_ref die) + FOR_EACH_CHILD (die, c, reset_dies (c)); + } + ++/* reset_indirect_string removed the references coming from DW_AT_name ++ and DW_AT_comp_dir attributes on compilation unit DIEs. Readd them as ++ .debug_line_str strings again. */ ++ ++static void ++adjust_name_comp_dir (dw_die_ref die) ++{ ++ for (int i = 0; i < 2; i++) ++ { ++ dwarf_attribute attr_kind = i ? DW_AT_comp_dir : DW_AT_name; ++ dw_attr_node *a = get_AT (die, attr_kind); ++ if (a == NULL || a->dw_attr_val.val_class != dw_val_class_str) ++ continue; ++ ++ if (!debug_line_str_hash) ++ debug_line_str_hash ++ = hash_table::create_ggc (10); ++ ++ struct indirect_string_node *node ++ = find_AT_string_in_table (a->dw_attr_val.v.val_str->str, ++ debug_line_str_hash); ++ set_indirect_string (node); ++ node->form = DW_FORM_line_strp; ++ a->dw_attr_val.v.val_str = node; ++ } ++} ++ + /* Output stuff that dwarf requires at the end of every file, + and generate the DWARF-2 debugging info. */ + +@@ -31398,6 +31428,12 @@ dwarf2out_finish (const char *filename) + { + debug_line_str_hash->traverse (NULL); + debug_line_str_hash = NULL; ++ if (asm_outputs_debug_line_str ()) ++ { ++ adjust_name_comp_dir (comp_unit_die ()); ++ for (limbo_die_node *node = cu_die_list; node; node = node->next) ++ adjust_name_comp_dir (node->die); ++ } + } + } + From 2a97a4485a84bad8a4cbcc39a7ea535632d7b887 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 23 Jan 2021 10:08:25 +0100 Subject: [PATCH 022/293] 11.0.0-0.17 --- .gitignore | 1 + gcc.spec | 48 +++++----- gcc11-libgomp-task.patch | 69 --------------- gcc11-pr98638.patch | 29 ------ gcc11-pr98672.patch | 87 ------------------ gcc11-pr98681.patch | 48 ++++++++++ gcc11-pr98687.patch | 130 --------------------------- gcc11-pr98721.patch | 91 ------------------- gcc11-pr98742.patch | 42 --------- gcc11-pr98751.patch | 185 --------------------------------------- gcc11-pr98765.patch | 83 ------------------ sources | 2 +- 12 files changed, 77 insertions(+), 738 deletions(-) delete mode 100644 gcc11-libgomp-task.patch delete mode 100644 gcc11-pr98638.patch delete mode 100644 gcc11-pr98672.patch create mode 100644 gcc11-pr98681.patch delete mode 100644 gcc11-pr98687.patch delete mode 100644 gcc11-pr98721.patch delete mode 100644 gcc11-pr98742.patch delete mode 100644 gcc11-pr98751.patch delete mode 100644 gcc11-pr98765.patch diff --git a/.gitignore b/.gitignore index 16d11cc..c8bd1c1 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ /gcc-11.0.0-20210113.tar.xz /gcc-11.0.0-20210116.tar.xz /gcc-11.0.0-20210119.tar.xz +/gcc-11.0.0-20210123.tar.xz diff --git a/gcc.spec b/gcc.spec index 96ba798..8b82fbf 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20210119 -%global gitrev 4b9bffe2c626b87d403f11674a5bd63c6078c777 +%global DATE 20210123 +%global gitrev 6efa61bd94ae86200aaed7ec513de6b3726220bf %global gcc_version 11.0.0 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.16%{?dist} +Release: %{gcc_release}.17%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -272,14 +272,7 @@ Patch9: gcc11-Wno-format-security.patch Patch10: gcc11-rh1574936.patch Patch11: gcc11-d-shared-libphobos.patch Patch12: gcc11-pr98338-workaround.patch -Patch13: gcc11-pr98672.patch -Patch14: gcc11-pr98687.patch -Patch15: gcc11-pr98721.patch -Patch16: gcc11-pr98742.patch -Patch17: gcc11-pr98638.patch -Patch18: gcc11-pr98765.patch -Patch19: gcc11-libgomp-task.patch -Patch20: gcc11-pr98751.patch +Patch13: gcc11-pr98681.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -791,14 +784,7 @@ to NVidia PTX capable devices if available. %endif %patch11 -p0 -b .d-shared-libphobos~ %patch12 -p0 -b .pr98338-workaround~ -%patch13 -p0 -b .pr98672~ -%patch14 -p0 -b .pr98687~ -%patch15 -p0 -b .pr98721~ -%patch16 -p0 -b .pr98742~ -%patch17 -p0 -b .pr98638~ -%patch18 -p0 -b .pr98765~ -%patch19 -p0 -b .libgomp-task~ -%patch20 -p0 -b .pr98751~ +%patch13 -p0 -b .pr98681~ rm -f libgomp/testsuite/*/*task-detach* @@ -3085,9 +3071,29 @@ end %endif %changelog +* Sat Jan 23 2021 Jakub Jelinek 11.0.0-0.17 +- update from trunk + - PRs ada/98740, c++/41437, c++/58993, c++/71879, c++/82613, c++/95434, + c++/96623, c++/97399, c++/97966, c++/98333, c++/98530, c++/98545, + c++/98624, c++/98659, c++/98744, fortran/96320, fortran/98476, + fortran/98565, fortran/98757, fortran/98763, gcov-profile/98739, + ipa/97673, ipa/98330, ipa/98690, middle-end/98664, middle-end/98773, + middle-end/98793, rtl-optimization/92294, rtl-optimization/98694, + rtl-optimization/98722, rtl-optimization/98777, sanitizer/95693, + target/79251, target/96372, target/96891, target/98065, target/98093, + target/98348, target/98636, testsuite/97301, testsuite/98241, + testsuite/98795, tree-optimization/47059, tree-optimization/90248, + tree-optimization/96674, tree-optimization/98255, + tree-optimization/98535, tree-optimization/98758, + tree-optimization/98766, tree-optimization/98786 + - ensure for empty CUs -gdwarf-5 emits at least the required 0th directory + and filename entry in the .debug_line section (#1919243, PR debug/98796) +- fix aarch64 bug where emitted ubfix insn can't be assembled + (PR target/98681) + * Wed Jan 20 2021 Jakub Jelinek 11.0.0-0.16 -- fix DWARF5 -g -flto -ffat-lto-objects, so that LTO sections can be stripped off - later (PR debug/98765) +- fix DWARF5 -g -flto -ffat-lto-objects, so that LTO sections can be stripped + off later (PR debug/98765) - fix GOMP_task caller stack corruption on s390x - libgccjit DWARF5 fixes (PR debug/98751) diff --git a/gcc11-libgomp-task.patch b/gcc11-libgomp-task.patch deleted file mode 100644 index b0ba04e..0000000 --- a/gcc11-libgomp-task.patch +++ /dev/null @@ -1,69 +0,0 @@ -2021-01-20 Jakub Jelinek - - * task.c (GOMP_task): Rename priority argument to priority_arg, - add priority automatic variable and modify that variable. Instead of - clearing detach argument when GOMP_TASK_FLAG_DETACH bit is not set, - check flags for that bit. - ---- libgomp/task.c.jj 2021-01-18 07:18:42.362339622 +0100 -+++ libgomp/task.c 2021-01-20 17:23:36.973758174 +0100 -@@ -354,10 +354,11 @@ task_fulfilled_p (struct gomp_task *task - void - GOMP_task (void (*fn) (void *), void *data, void (*cpyfn) (void *, void *), - long arg_size, long arg_align, bool if_clause, unsigned flags, -- void **depend, int priority, void *detach) -+ void **depend, int priority_arg, void *detach) - { - struct gomp_thread *thr = gomp_thread (); - struct gomp_team *team = thr->ts.team; -+ int priority = 0; - - #ifdef HAVE_BROKEN_POSIX_SEMAPHORES - /* If pthread_mutex_* is used for omp_*lock*, then each task must be -@@ -385,13 +386,12 @@ GOMP_task (void (*fn) (void *), void *da - } - } - -- if ((flags & GOMP_TASK_FLAG_PRIORITY) == 0) -- priority = 0; -- else if (priority > gomp_max_task_priority_var) -- priority = gomp_max_task_priority_var; -- -- if ((flags & GOMP_TASK_FLAG_DETACH) == 0) -- detach = NULL; -+ if (__builtin_expect ((flags & GOMP_TASK_FLAG_PRIORITY) != 0, 0)) -+ { -+ priority = priority_arg; -+ if (priority > gomp_max_task_priority_var) -+ priority = gomp_max_task_priority_var; -+ } - - if (!if_clause || team == NULL - || (thr->task && thr->task->final_task) -@@ -415,7 +415,7 @@ GOMP_task (void (*fn) (void *), void *da - || (flags & GOMP_TASK_FLAG_FINAL); - task.priority = priority; - -- if (detach) -+ if ((flags & GOMP_TASK_FLAG_DETACH) != 0) - { - task.detach = true; - gomp_sem_init (&task.completion_sem, 0); -@@ -443,7 +443,7 @@ GOMP_task (void (*fn) (void *), void *da - else - fn (data); - -- if (detach && !task_fulfilled_p (&task)) -+ if (task.detach && !task_fulfilled_p (&task)) - gomp_sem_wait (&task.completion_sem); - - /* Access to "children" is normally done inside a task_lock -@@ -484,7 +484,7 @@ GOMP_task (void (*fn) (void *), void *da - task->kind = GOMP_TASK_UNDEFERRED; - task->in_tied_task = parent->in_tied_task; - task->taskgroup = taskgroup; -- if (detach) -+ if ((flags & GOMP_TASK_FLAG_DETACH) != 0) - { - task->detach = true; - gomp_sem_init (&task->completion_sem, 0); diff --git a/gcc11-pr98638.patch b/gcc11-pr98638.patch deleted file mode 100644 index c399a30..0000000 --- a/gcc11-pr98638.patch +++ /dev/null @@ -1,29 +0,0 @@ -Since SSA names do leak into global tree data structures like -TYPE_SIZE or in this case GFC_DECL_SAVED_DESCRIPTOR because of -frontend bugs we have to be careful to wipe references to the -CFG when we deconstruct SSA form because we now do ggc_free that. - -Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. - -2021-01-19 Richard Biener - - PR middle-end/98638 - * tree-ssanames.c (fini_ssanames): Zero SSA_NAME_DEF_STMT. - ---- gcc/tree-ssanames.c -+++ gcc/tree-ssanames.c -@@ -102,6 +102,14 @@ init_ssanames (struct function *fn, int size) - void - fini_ssanames (struct function *fn) - { -+ unsigned i; -+ tree name; -+ /* Some SSA names leak into global tree data structures so we can't simply -+ ggc_free them. But make sure to clear references to stmts since we now -+ ggc_free the CFG itself. */ -+ FOR_EACH_VEC_SAFE_ELT (SSANAMES (fn), i, name) -+ if (name) -+ SSA_NAME_DEF_STMT (name) = NULL; - vec_free (SSANAMES (fn)); - vec_free (FREE_SSANAMES (fn)); - vec_free (FREE_SSANAMES_QUEUE (fn)); diff --git a/gcc11-pr98672.patch b/gcc11-pr98672.patch deleted file mode 100644 index b7ac680..0000000 --- a/gcc11-pr98672.patch +++ /dev/null @@ -1,87 +0,0 @@ -2021-01-15 Jakub Jelinek - - PR c++/98672 - * constexpr.c (potential_constant_expression_1) , - : If the condition isn't constant true, check if - the loop body can contain a return stmt. - - * g++.dg/cpp1y/constexpr-98672.C: New test. - ---- gcc/cp/constexpr.c.jj 2021-01-13 19:19:44.368469462 +0100 -+++ gcc/cp/constexpr.c 2021-01-14 12:02:27.347042704 +0100 -@@ -8190,7 +8190,17 @@ potential_constant_expression_1 (tree t, - /* If we couldn't evaluate the condition, it might not ever be - true. */ - if (!integer_onep (tmp)) -- return true; -+ { -+ /* Before returning true, check if the for body can contain -+ a return. */ -+ hash_set pset; -+ check_for_return_continue_data data = { &pset, NULL_TREE }; -+ if (tree ret_expr -+ = cp_walk_tree (&FOR_BODY (t), check_for_return_continue, -+ &data, &pset)) -+ *jump_target = ret_expr; -+ return true; -+ } - } - if (!RECUR (FOR_EXPR (t), any)) - return false; -@@ -8219,7 +8229,17 @@ potential_constant_expression_1 (tree t, - tmp = cxx_eval_outermost_constant_expr (tmp, true); - /* If we couldn't evaluate the condition, it might not ever be true. */ - if (!integer_onep (tmp)) -- return true; -+ { -+ /* Before returning true, check if the while body can contain -+ a return. */ -+ hash_set pset; -+ check_for_return_continue_data data = { &pset, NULL_TREE }; -+ if (tree ret_expr -+ = cp_walk_tree (&WHILE_BODY (t), check_for_return_continue, -+ &data, &pset)) -+ *jump_target = ret_expr; -+ return true; -+ } - if (!RECUR (WHILE_BODY (t), any)) - return false; - if (breaks (jump_target) || continues (jump_target)) ---- gcc/testsuite/g++.dg/cpp1y/constexpr-98672.C.jj 2021-01-14 12:19:24.842438847 +0100 -+++ gcc/testsuite/g++.dg/cpp1y/constexpr-98672.C 2021-01-14 12:07:33.935551155 +0100 -@@ -0,0 +1,35 @@ -+// PR c++/98672 -+// { dg-do compile { target c++14 } } -+ -+void -+foo () -+{ -+} -+ -+constexpr int -+bar () -+{ -+ for (int i = 0; i < 5; ++i) -+ return i; -+ foo (); -+ return 0; -+} -+ -+constexpr int -+baz () -+{ -+ int i = 0; -+ while (i < 5) -+ { -+ if (i == 3) -+ return i; -+ else -+ ++i; -+ } -+ foo (); -+ return 0; -+} -+ -+constexpr int i = bar (); -+constexpr int j = baz (); -+static_assert (i == 0 && j == 3, ""); diff --git a/gcc11-pr98681.patch b/gcc11-pr98681.patch new file mode 100644 index 0000000..6b2bb1f --- /dev/null +++ b/gcc11-pr98681.patch @@ -0,0 +1,48 @@ +2021-01-22 Jakub Jelinek + + PR target/98681 + * config/aarch64/aarch64.c (aarch64_mask_and_shift_for_ubfiz_p): + Use UINTVAL (shft_amnt) and UINTVAL (mask) instead of INTVAL (shft_amnt) + and INTVAL (mask). Add && INTVAL (mask) > 0 condition. + + * gcc.c-torture/execute/pr98681.c: New test. + +--- gcc/config/aarch64/aarch64.c.jj 2021-01-13 11:36:27.069888393 +0100 ++++ gcc/config/aarch64/aarch64.c 2021-01-22 18:53:18.611518461 +0100 +@@ -12060,10 +12060,11 @@ aarch64_mask_and_shift_for_ubfiz_p (scal + rtx shft_amnt) + { + return CONST_INT_P (mask) && CONST_INT_P (shft_amnt) +- && INTVAL (shft_amnt) < GET_MODE_BITSIZE (mode) +- && exact_log2 ((INTVAL (mask) >> INTVAL (shft_amnt)) + 1) >= 0 +- && (INTVAL (mask) +- & ((HOST_WIDE_INT_1U << INTVAL (shft_amnt)) - 1)) == 0; ++ && INTVAL (mask) > 0 ++ && UINTVAL (shft_amnt) < GET_MODE_BITSIZE (mode) ++ && exact_log2 ((UINTVAL (mask) >> UINTVAL (shft_amnt)) + 1) >= 0 ++ && (UINTVAL (mask) ++ & ((HOST_WIDE_INT_1U << UINTVAL (shft_amnt)) - 1)) == 0; + } + + /* Return true if the masks and a shift amount from an RTX of the form +--- gcc/testsuite/gcc.c-torture/execute/pr98681.c.jj 2021-01-22 16:45:05.102070501 +0100 ++++ gcc/testsuite/gcc.c-torture/execute/pr98681.c 2021-01-22 16:44:34.165416961 +0100 +@@ -0,0 +1,18 @@ ++/* PR target/98681 */ ++ ++__attribute__((noipa)) int ++foo (int x) ++{ ++ if (x > 32) ++ return (x << -64) & 255; ++ else ++ return x; ++} ++ ++int ++main () ++{ ++ if (foo (32) != 32 || foo (-150) != -150) ++ __builtin_abort (); ++ return 0; ++} diff --git a/gcc11-pr98687.patch b/gcc11-pr98687.patch deleted file mode 100644 index d2e1ce0..0000000 --- a/gcc11-pr98687.patch +++ /dev/null @@ -1,130 +0,0 @@ -My recent patch that introduced push_using_decl_bindings didn't -handle USING_DECL redeclaration, therefore things broke. This -patch amends that. Note that I don't know if the other parts of -finish_nonmember_using_decl are needed (e.g. the binding->type -setting) -- I couldn't trigger it by any of my hand-made testcases. - -Sorry for not thinking harder about redeclarations in the original -patch :(. - -2021-01-15 Marek Polacek - - PR c++/98687 - * name-lookup.c (push_using_decl_bindings): If we found an - existing local binding, update it if it's not identical. - - * g++.dg/lookup/using64.C: New test. - * g++.dg/lookup/using65.C: New test. - ---- gcc/cp/name-lookup.c -+++ gcc/cp/name-lookup.c -@@ -9285,8 +9285,24 @@ push_operator_bindings () - void - push_using_decl_bindings (tree decl) - { -- push_local_binding (DECL_NAME (decl), USING_DECL_DECLS (decl), -- /*using*/true); -+ tree name = DECL_NAME (decl); -+ tree value = USING_DECL_DECLS (decl); -+ -+ cxx_binding *binding = find_local_binding (current_binding_level, name); -+ if (binding) -+ { -+ if (value == binding->value) -+ /* Redeclaration of this USING_DECL. */; -+ else if (binding->value && TREE_CODE (value) == OVERLOAD) -+ { -+ /* We already have this binding, so replace it. */ -+ update_local_overload (IDENTIFIER_BINDING (name), value); -+ IDENTIFIER_BINDING (name)->value = value; -+ } -+ } -+ else -+ /* Install the new binding. */ -+ push_local_binding (DECL_NAME (decl), value, /*using*/true); - } - - #include "gt-cp-name-lookup.h" ---- gcc/testsuite/g++.dg/lookup/using64.C -+++ gcc/testsuite/g++.dg/lookup/using64.C -@@ -0,0 +1,60 @@ -+// PR c++/98687 -+// { dg-do compile } -+ -+struct S { }; -+ -+namespace N { -+ template -+ bool operator==(T, int); -+ -+ template -+ void X(T); -+} -+ -+namespace M { -+ template -+ bool operator==(T, double); -+} -+ -+template -+bool fn1 (T t) -+{ -+ using N::operator==; -+ return t == 1; -+} -+ -+template -+bool fn2 (T t) -+{ -+ // Redeclaration. -+ using N::operator==; -+ using N::operator==; -+ return t == 1; -+} -+ -+template -+bool fn3 (T t) -+{ -+ // Need update_local_overload. -+ using N::operator==; -+ using M::operator==; -+ return t == 1; -+} -+ -+template -+void fn4 (T t) -+{ -+ struct X { }; -+ using N::X; -+ X(1); -+} -+ -+void -+g () -+{ -+ S s; -+ fn1 (s); -+ fn2 (s); -+ fn3 (s); -+ fn4 (s); -+} ---- gcc/testsuite/g++.dg/lookup/using65.C -+++ gcc/testsuite/g++.dg/lookup/using65.C -@@ -0,0 +1,17 @@ -+// PR c++/98687 -+// { dg-do compile } -+ -+extern "C" namespace std { -+ double log1p(double); -+} -+namespace std_fallback { -+ template void log1p(); -+} -+template struct log1p_impl { -+ static int run() { -+ using std::log1p; -+ using std_fallback::log1p; -+ return 0; -+ } -+}; -+void log1p() { log1p_impl::run(); } diff --git a/gcc11-pr98721.patch b/gcc11-pr98721.patch deleted file mode 100644 index 6459a9c..0000000 --- a/gcc11-pr98721.patch +++ /dev/null @@ -1,91 +0,0 @@ -2021-01-19 Jakub Jelinek - - PR tree-optimization/98721 - * builtins.c (access_ref::inform_access): Don't assume - SSA_NAME_IDENTIFIER must be non-NULL. Print messages about - object whenever allocfn is NULL, rather than only when DECL_P - is true. Use %qE instead of %qD for that. Formatting fixes. - - * gcc.dg/pr98721-1.c: New test. - * gcc.dg/pr98721-2.c: New test. - ---- gcc/builtins.c.jj 2021-01-18 19:07:16.022895507 +0100 -+++ gcc/builtins.c 2021-01-19 11:56:52.247070923 +0100 -@@ -4414,8 +4414,8 @@ access_ref::inform_access (access_mode m - MAXREF on which the result is based. */ - const offset_int orng[] = - { -- offrng[0] - maxref.offrng[0], -- wi::smax (offrng[1] - maxref.offrng[1], offrng[0]), -+ offrng[0] - maxref.offrng[0], -+ wi::smax (offrng[1] - maxref.offrng[1], offrng[0]), - }; - - /* Add the final PHI's offset to that of each of the arguments -@@ -4493,12 +4493,15 @@ access_ref::inform_access (access_mode m - /* Strip the SSA_NAME suffix from the variable name and - recreate an identifier with the VLA's original name. */ - ref = gimple_call_lhs (stmt); -- ref = SSA_NAME_IDENTIFIER (ref); -- const char *id = IDENTIFIER_POINTER (ref); -- size_t len = strcspn (id, ".$"); -- if (!len) -- len = strlen (id); -- ref = get_identifier_with_length (id, len); -+ if (SSA_NAME_IDENTIFIER (ref)) -+ { -+ ref = SSA_NAME_IDENTIFIER (ref); -+ const char *id = IDENTIFIER_POINTER (ref); -+ size_t len = strcspn (id, ".$"); -+ if (!len) -+ len = strlen (id); -+ ref = get_identifier_with_length (id, len); -+ } - } - else - { -@@ -4557,13 +4560,13 @@ access_ref::inform_access (access_mode m - return; - } - -- if (DECL_P (ref)) -+ if (allocfn == NULL_TREE) - { - if (*offstr) -- inform (loc, "at offset %s into source object %qD of size %s", -+ inform (loc, "at offset %s into source object %qE of size %s", - offstr, ref, sizestr); - else -- inform (loc, "source object %qD of size %s", ref, sizestr); -+ inform (loc, "source object %qE of size %s", ref, sizestr); - - return; - } ---- gcc/testsuite/gcc.dg/pr98721-1.c.jj 2021-01-19 12:15:03.825600828 +0100 -+++ gcc/testsuite/gcc.dg/pr98721-1.c 2021-01-19 12:14:24.730045488 +0100 -@@ -0,0 +1,14 @@ -+/* PR tree-optimization/98721 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2" } */ -+ -+int -+foo (int n) -+{ -+ if (n <= 0) -+ { -+ char vla[n]; /* { dg-message "source object 'vla' of size 0" } */ -+ return __builtin_strlen (vla); /* { dg-warning "'__builtin_strlen' reading 1 or more bytes from a region of size 0" } */ -+ } -+ return -1; -+} ---- gcc/testsuite/gcc.dg/pr98721-2.c.jj 2021-01-19 12:00:16.005742548 +0100 -+++ gcc/testsuite/gcc.dg/pr98721-2.c 2021-01-19 11:59:29.372275423 +0100 -@@ -0,0 +1,8 @@ -+/* PR tree-optimization/98721 */ -+/* { dg-do compile } */ -+ -+int -+foo (void) -+{ -+ return __builtin_strlen (__builtin_alloca_with_align (0, 16)); /* { dg-warning "'__builtin_strlen' reading 1 or more bytes from a region of size 0" } */ -+} /* { dg-message "source object '' of size 0" "" { target *-*-* } .-1 } */ diff --git a/gcc11-pr98742.patch b/gcc11-pr98742.patch deleted file mode 100644 index 1b76510..0000000 --- a/gcc11-pr98742.patch +++ /dev/null @@ -1,42 +0,0 @@ -2021-01-19 Jakub Jelinek - - PR c++/98742 - * semantics.c (finish_omp_clauses) : If - error_operand_p, remove clause without further checking. Check - for non-NULL TYPE_NAME. - - * c-c++-common/gomp/task-detach-2.c: New test. - ---- gcc/cp/semantics.c.jj 2021-01-16 22:52:33.608413922 +0100 -+++ gcc/cp/semantics.c 2021-01-19 10:53:07.979801786 +0100 -@@ -7430,12 +7430,18 @@ finish_omp_clauses (tree clauses, enum c - remove = true; - break; - } -+ else if (error_operand_p (t)) -+ { -+ remove = true; -+ break; -+ } - else - { - tree type = TYPE_MAIN_VARIANT (TREE_TYPE (t)); - if (!type_dependent_expression_p (t) - && (!INTEGRAL_TYPE_P (type) - || TREE_CODE (type) != ENUMERAL_TYPE -+ || TYPE_NAME (type) == NULL_TREE - || (DECL_NAME (TYPE_NAME (type)) - != get_identifier ("omp_event_handle_t")))) - { ---- gcc/testsuite/c-c++-common/gomp/task-detach-2.c.jj 2021-01-19 11:07:29.345948289 +0100 -+++ gcc/testsuite/c-c++-common/gomp/task-detach-2.c 2021-01-19 11:06:57.090317518 +0100 -@@ -0,0 +1,9 @@ -+/* PR c++/98742 */ -+/* { dg-do compile } */ -+ -+void -+foo () -+{ -+#pragma omp task detach(0) /* { dg-error "before numeric constant" } */ -+ ; -+} diff --git a/gcc11-pr98751.patch b/gcc11-pr98751.patch deleted file mode 100644 index c0caaf8..0000000 --- a/gcc11-pr98751.patch +++ /dev/null @@ -1,185 +0,0 @@ -2021-01-19 David Malcolm - - PR debug/98751 - * dwarf2out.c (output_line_info): Rename static variable - "generation", moving it out of the function to... - (output_line_info_generation): New. - (init_sections_and_labels): Likewise, renaming the variable to... - (init_sections_and_labels_generation): New. - (dwarf2out_c_finalize): Reset the new variables. - ---- gcc/dwarf2out.c -+++ gcc/dwarf2out.c -@@ -12709,22 +12709,27 @@ output_one_line_info_table (dw_line_info_table *table) - dw2_asm_output_data (1, DW_LNE_end_sequence, NULL); - } - -+static unsigned int output_line_info_generation; -+ - /* Output the source line number correspondence information. This - information goes into the .debug_line section. */ - - static void - output_line_info (bool prologue_only) - { -- static unsigned int generation; - char l1[MAX_ARTIFICIAL_LABEL_BYTES], l2[MAX_ARTIFICIAL_LABEL_BYTES]; - char p1[MAX_ARTIFICIAL_LABEL_BYTES], p2[MAX_ARTIFICIAL_LABEL_BYTES]; - bool saw_one = false; - int opc; - -- ASM_GENERATE_INTERNAL_LABEL (l1, LINE_NUMBER_BEGIN_LABEL, generation); -- ASM_GENERATE_INTERNAL_LABEL (l2, LINE_NUMBER_END_LABEL, generation); -- ASM_GENERATE_INTERNAL_LABEL (p1, LN_PROLOG_AS_LABEL, generation); -- ASM_GENERATE_INTERNAL_LABEL (p2, LN_PROLOG_END_LABEL, generation++); -+ ASM_GENERATE_INTERNAL_LABEL (l1, LINE_NUMBER_BEGIN_LABEL, -+ output_line_info_generation); -+ ASM_GENERATE_INTERNAL_LABEL (l2, LINE_NUMBER_END_LABEL, -+ output_line_info_generation); -+ ASM_GENERATE_INTERNAL_LABEL (p1, LN_PROLOG_AS_LABEL, -+ output_line_info_generation); -+ ASM_GENERATE_INTERNAL_LABEL (p2, LN_PROLOG_END_LABEL, -+ output_line_info_generation++); - - if (!XCOFF_DEBUGGING_INFO) - { -@@ -28589,6 +28594,10 @@ output_macinfo (const char *debug_line_label, bool early_lto_debug) - macinfo_label_base += macinfo_label_base_adj; - } - -+/* As init_sections_and_labels may get called multiple times, have a -+ generation count for labels. */ -+static unsigned init_sections_and_labels_generation; -+ - /* Initialize the various sections and labels for dwarf output and prefix - them with PREFIX if non-NULL. Returns the generation (zero based - number of times function was called). */ -@@ -28596,10 +28605,6 @@ output_macinfo (const char *debug_line_label, bool early_lto_debug) - static unsigned - init_sections_and_labels (bool early_lto_debug) - { -- /* As we may get called multiple times have a generation count for -- labels. */ -- static unsigned generation = 0; -- - if (early_lto_debug) - { - if (!dwarf_split_debug_info) -@@ -28634,7 +28639,7 @@ init_sections_and_labels (bool early_lto_debug) - SECTION_DEBUG | SECTION_EXCLUDE, NULL); - ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_abbrev_section_label, - DEBUG_SKELETON_ABBREV_SECTION_LABEL, -- generation); -+ init_sections_and_labels_generation); - - /* Somewhat confusing detail: The skeleton_[abbrev|info] sections - stay in the main .o, but the skeleton_line goes into the split -@@ -28644,14 +28649,14 @@ init_sections_and_labels (bool early_lto_debug) - SECTION_DEBUG | SECTION_EXCLUDE, NULL); - ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_line_section_label, - DEBUG_SKELETON_LINE_SECTION_LABEL, -- generation); -+ init_sections_and_labels_generation); - debug_str_offsets_section - = get_section (DEBUG_LTO_DWO_STR_OFFSETS_SECTION, - SECTION_DEBUG | SECTION_EXCLUDE, - NULL); - ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_info_section_label, - DEBUG_SKELETON_INFO_SECTION_LABEL, -- generation); -+ init_sections_and_labels_generation); - debug_str_dwo_section = get_section (DEBUG_LTO_STR_DWO_SECTION, - DEBUG_STR_DWO_SECTION_FLAGS, - NULL); -@@ -28667,7 +28672,8 @@ init_sections_and_labels (bool early_lto_debug) - debug_line_section = get_section (DEBUG_LTO_LINE_SECTION, - SECTION_DEBUG | SECTION_EXCLUDE, NULL); - ASM_GENERATE_INTERNAL_LABEL (debug_line_section_label, -- DEBUG_LINE_SECTION_LABEL, generation); -+ DEBUG_LINE_SECTION_LABEL, -+ init_sections_and_labels_generation); - - debug_str_section = get_section (DEBUG_LTO_STR_SECTION, - DEBUG_STR_SECTION_FLAGS -@@ -28711,7 +28717,7 @@ init_sections_and_labels (bool early_lto_debug) - SECTION_DEBUG, NULL); - ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_abbrev_section_label, - DEBUG_SKELETON_ABBREV_SECTION_LABEL, -- generation); -+ init_sections_and_labels_generation); - - /* Somewhat confusing detail: The skeleton_[abbrev|info] sections - stay in the main .o, but the skeleton_line goes into the -@@ -28721,13 +28727,13 @@ init_sections_and_labels (bool early_lto_debug) - SECTION_DEBUG | SECTION_EXCLUDE, NULL); - ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_line_section_label, - DEBUG_SKELETON_LINE_SECTION_LABEL, -- generation); -+ init_sections_and_labels_generation); - debug_str_offsets_section - = get_section (DEBUG_DWO_STR_OFFSETS_SECTION, - SECTION_DEBUG | SECTION_EXCLUDE, NULL); - ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_info_section_label, - DEBUG_SKELETON_INFO_SECTION_LABEL, -- generation); -+ init_sections_and_labels_generation); - debug_loc_section = get_section (dwarf_version >= 5 - ? DEBUG_DWO_LOCLISTS_SECTION - : DEBUG_DWO_LOC_SECTION, -@@ -28767,31 +28773,37 @@ init_sections_and_labels (bool early_lto_debug) - } - - ASM_GENERATE_INTERNAL_LABEL (abbrev_section_label, -- DEBUG_ABBREV_SECTION_LABEL, generation); -+ DEBUG_ABBREV_SECTION_LABEL, -+ init_sections_and_labels_generation); - ASM_GENERATE_INTERNAL_LABEL (debug_info_section_label, -- DEBUG_INFO_SECTION_LABEL, generation); -+ DEBUG_INFO_SECTION_LABEL, -+ init_sections_and_labels_generation); - info_section_emitted = false; - ASM_GENERATE_INTERNAL_LABEL (debug_line_section_label, -- DEBUG_LINE_SECTION_LABEL, generation); -+ DEBUG_LINE_SECTION_LABEL, -+ init_sections_and_labels_generation); - /* There are up to 4 unique ranges labels per generation. - See also output_rnglists. */ - ASM_GENERATE_INTERNAL_LABEL (ranges_section_label, -- DEBUG_RANGES_SECTION_LABEL, generation * 4); -+ DEBUG_RANGES_SECTION_LABEL, -+ init_sections_and_labels_generation * 4); - if (dwarf_version >= 5 && dwarf_split_debug_info) - ASM_GENERATE_INTERNAL_LABEL (ranges_base_label, - DEBUG_RANGES_SECTION_LABEL, -- 1 + generation * 4); -+ 1 + init_sections_and_labels_generation * 4); - ASM_GENERATE_INTERNAL_LABEL (debug_addr_section_label, -- DEBUG_ADDR_SECTION_LABEL, generation); -+ DEBUG_ADDR_SECTION_LABEL, -+ init_sections_and_labels_generation); - ASM_GENERATE_INTERNAL_LABEL (macinfo_section_label, - (dwarf_strict && dwarf_version < 5) - ? DEBUG_MACINFO_SECTION_LABEL -- : DEBUG_MACRO_SECTION_LABEL, generation); -+ : DEBUG_MACRO_SECTION_LABEL, -+ init_sections_and_labels_generation); - ASM_GENERATE_INTERNAL_LABEL (loc_section_label, DEBUG_LOC_SECTION_LABEL, -- generation); -+ init_sections_and_labels_generation); - -- ++generation; -- return generation - 1; -+ ++init_sections_and_labels_generation; -+ return init_sections_and_labels_generation - 1; - } - - /* Set up for Dwarf output at the start of compilation. */ -@@ -32379,6 +32391,8 @@ dwarf2out_c_finalize (void) - base_types.release (); - XDELETEVEC (producer_string); - producer_string = NULL; -+ output_line_info_generation = 0; -+ init_sections_and_labels_generation = 0; - } - - #include "gt-dwarf2out.h" diff --git a/gcc11-pr98765.patch b/gcc11-pr98765.patch deleted file mode 100644 index e4cda36..0000000 --- a/gcc11-pr98765.patch +++ /dev/null @@ -1,83 +0,0 @@ -2021-01-20 Jakub Jelinek - - PR debug/98765 - * dwarf2out.c (reset_indirect_string): Also reset indirect strings - with DW_FORM_line_strp form. - (prune_unused_types_update_strings): Don't add into debug_str_hash - indirect strings with DW_FORM_line_strp form. - (adjust_name_comp_dir): New function. - (dwarf2out_finish): Call it on CU DIEs after resetting - debug_line_str_hash. - ---- gcc/dwarf2out.c.jj 2021-01-20 08:32:09.612958930 +0100 -+++ gcc/dwarf2out.c 2021-01-20 15:41:30.343417095 +0100 -@@ -4733,7 +4733,9 @@ int - reset_indirect_string (indirect_string_node **h, void *) - { - struct indirect_string_node *node = *h; -- if (node->form == DW_FORM_strp || node->form == dwarf_FORM (DW_FORM_strx)) -+ if (node->form == DW_FORM_strp -+ || node->form == DW_FORM_line_strp -+ || node->form == dwarf_FORM (DW_FORM_strx)) - { - free (node->label); - node->label = NULL; -@@ -29477,8 +29479,9 @@ prune_unused_types_update_strings (dw_di - s->refcount++; - /* Avoid unnecessarily putting strings that are used less than - twice in the hash table. */ -- if (s->refcount -- == ((DEBUG_STR_SECTION_FLAGS & SECTION_MERGE) ? 1 : 2)) -+ if (s->form != DW_FORM_line_strp -+ && (s->refcount -+ == ((DEBUG_STR_SECTION_FLAGS & SECTION_MERGE) ? 1 : 2))) - { - indirect_string_node **slot - = debug_str_hash->find_slot_with_hash (s->str, -@@ -31325,6 +31328,33 @@ reset_dies (dw_die_ref die) - FOR_EACH_CHILD (die, c, reset_dies (c)); - } - -+/* reset_indirect_string removed the references coming from DW_AT_name -+ and DW_AT_comp_dir attributes on compilation unit DIEs. Readd them as -+ .debug_line_str strings again. */ -+ -+static void -+adjust_name_comp_dir (dw_die_ref die) -+{ -+ for (int i = 0; i < 2; i++) -+ { -+ dwarf_attribute attr_kind = i ? DW_AT_comp_dir : DW_AT_name; -+ dw_attr_node *a = get_AT (die, attr_kind); -+ if (a == NULL || a->dw_attr_val.val_class != dw_val_class_str) -+ continue; -+ -+ if (!debug_line_str_hash) -+ debug_line_str_hash -+ = hash_table::create_ggc (10); -+ -+ struct indirect_string_node *node -+ = find_AT_string_in_table (a->dw_attr_val.v.val_str->str, -+ debug_line_str_hash); -+ set_indirect_string (node); -+ node->form = DW_FORM_line_strp; -+ a->dw_attr_val.v.val_str = node; -+ } -+} -+ - /* Output stuff that dwarf requires at the end of every file, - and generate the DWARF-2 debugging info. */ - -@@ -31398,6 +31428,12 @@ dwarf2out_finish (const char *filename) - { - debug_line_str_hash->traverse (NULL); - debug_line_str_hash = NULL; -+ if (asm_outputs_debug_line_str ()) -+ { -+ adjust_name_comp_dir (comp_unit_die ()); -+ for (limbo_die_node *node = cu_die_list; node; node = node->next) -+ adjust_name_comp_dir (node->die); -+ } - } - } - diff --git a/sources b/sources index 9f41955..34f651a 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-11.0.0-20210119.tar.xz) = 67fc01799d7af841f5b2b63fe40fc5eac01fe25cb6bb0994de46babbdabe8aee384ea0fbd41b5ac7b53b32ce5724618cb0026ac2e1d3d2431751b225f8e96783 +SHA512 (gcc-11.0.0-20210123.tar.xz) = 0c1ee7eab7ef8380c168e4841360667fe7f07d93df54c2f5c814d7830ec812f6087e0ded2761db5f316e1a16772fbc5c39c31a3b2862a3e455c44edc29eb624b SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 9087b59fd480ac9243586dd0c07ec08bcaaec74a Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Tue, 26 Jan 2021 06:25:27 +0000 Subject: [PATCH 023/293] - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gcc.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 8b82fbf..b766701 100644 --- a/gcc.spec +++ b/gcc.spec @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.17%{?dist} +Release: %{gcc_release}.17%{?dist}.1 # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3071,6 +3071,9 @@ end %endif %changelog +* Tue Jan 26 2021 Fedora Release Engineering - 11.0.0-0.17.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + * Sat Jan 23 2021 Jakub Jelinek 11.0.0-0.17 - update from trunk - PRs ada/98740, c++/41437, c++/58993, c++/71879, c++/82613, c++/95434, From 931429764e94630029a620c3eedda8972e63c821 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 30 Jan 2021 15:22:11 +0100 Subject: [PATCH 024/293] 11.0.0-0.18 --- .gitignore | 1 + gcc.spec | 24 ++++++++++++++++------- gcc11-pr98681.patch | 48 --------------------------------------------- sources | 2 +- 4 files changed, 19 insertions(+), 56 deletions(-) delete mode 100644 gcc11-pr98681.patch diff --git a/.gitignore b/.gitignore index c8bd1c1..8c3ed5f 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ /gcc-11.0.0-20210116.tar.xz /gcc-11.0.0-20210119.tar.xz /gcc-11.0.0-20210123.tar.xz +/gcc-11.0.0-20210130.tar.xz diff --git a/gcc.spec b/gcc.spec index b766701..a49fbbe 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20210123 -%global gitrev 6efa61bd94ae86200aaed7ec513de6b3726220bf +%global DATE 20210130 +%global gitrev 17ea13f46910e81a4891636c35aec2b3dabe5879 %global gcc_version 11.0.0 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.17%{?dist}.1 +Release: %{gcc_release}.18%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -272,7 +272,6 @@ Patch9: gcc11-Wno-format-security.patch Patch10: gcc11-rh1574936.patch Patch11: gcc11-d-shared-libphobos.patch Patch12: gcc11-pr98338-workaround.patch -Patch13: gcc11-pr98681.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -784,7 +783,6 @@ to NVidia PTX capable devices if available. %endif %patch11 -p0 -b .d-shared-libphobos~ %patch12 -p0 -b .pr98338-workaround~ -%patch13 -p0 -b .pr98681~ rm -f libgomp/testsuite/*/*task-detach* @@ -3071,8 +3069,20 @@ end %endif %changelog -* Tue Jan 26 2021 Fedora Release Engineering - 11.0.0-0.17.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild +* Sat Jan 30 2021 Jakub Jelinek 11.0.0-0.18 +- update from trunk + - PRs ada/98228, bootstrap/98839, c++/33661, c++/88548, c++/94775, + c++/96137, c++/97474, c++/97566, c++/97874, c++/98463, c++/98646, + c++/98770, c++/98841, c++/98843, c++/98847, d/98806, debug/98331, + debug/98811, fortran/67539, fortran/70070, fortran/86470, + fortran/93924, fortran/93925, fortran/96843, fortran/98472, + fortran/98517, libstdc++/66414, lto/85574, middle-end/98726, + middle-end/98807, rtl-optimization/80960, rtl-optimization/97684, + rtl-optimization/98144, rtl-optimization/98863, sanitizer/98828, + target/97701, target/98730, target/98799, target/98827, target/98833, + target/98849, target/98853, testsuite/98771, testsuite/98870, + tree-optimization/97260, tree-optimization/97627, + tree-optimization/98854, tree-optimization/98866 * Sat Jan 23 2021 Jakub Jelinek 11.0.0-0.17 - update from trunk diff --git a/gcc11-pr98681.patch b/gcc11-pr98681.patch deleted file mode 100644 index 6b2bb1f..0000000 --- a/gcc11-pr98681.patch +++ /dev/null @@ -1,48 +0,0 @@ -2021-01-22 Jakub Jelinek - - PR target/98681 - * config/aarch64/aarch64.c (aarch64_mask_and_shift_for_ubfiz_p): - Use UINTVAL (shft_amnt) and UINTVAL (mask) instead of INTVAL (shft_amnt) - and INTVAL (mask). Add && INTVAL (mask) > 0 condition. - - * gcc.c-torture/execute/pr98681.c: New test. - ---- gcc/config/aarch64/aarch64.c.jj 2021-01-13 11:36:27.069888393 +0100 -+++ gcc/config/aarch64/aarch64.c 2021-01-22 18:53:18.611518461 +0100 -@@ -12060,10 +12060,11 @@ aarch64_mask_and_shift_for_ubfiz_p (scal - rtx shft_amnt) - { - return CONST_INT_P (mask) && CONST_INT_P (shft_amnt) -- && INTVAL (shft_amnt) < GET_MODE_BITSIZE (mode) -- && exact_log2 ((INTVAL (mask) >> INTVAL (shft_amnt)) + 1) >= 0 -- && (INTVAL (mask) -- & ((HOST_WIDE_INT_1U << INTVAL (shft_amnt)) - 1)) == 0; -+ && INTVAL (mask) > 0 -+ && UINTVAL (shft_amnt) < GET_MODE_BITSIZE (mode) -+ && exact_log2 ((UINTVAL (mask) >> UINTVAL (shft_amnt)) + 1) >= 0 -+ && (UINTVAL (mask) -+ & ((HOST_WIDE_INT_1U << UINTVAL (shft_amnt)) - 1)) == 0; - } - - /* Return true if the masks and a shift amount from an RTX of the form ---- gcc/testsuite/gcc.c-torture/execute/pr98681.c.jj 2021-01-22 16:45:05.102070501 +0100 -+++ gcc/testsuite/gcc.c-torture/execute/pr98681.c 2021-01-22 16:44:34.165416961 +0100 -@@ -0,0 +1,18 @@ -+/* PR target/98681 */ -+ -+__attribute__((noipa)) int -+foo (int x) -+{ -+ if (x > 32) -+ return (x << -64) & 255; -+ else -+ return x; -+} -+ -+int -+main () -+{ -+ if (foo (32) != 32 || foo (-150) != -150) -+ __builtin_abort (); -+ return 0; -+} diff --git a/sources b/sources index 34f651a..aae8777 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-11.0.0-20210123.tar.xz) = 0c1ee7eab7ef8380c168e4841360667fe7f07d93df54c2f5c814d7830ec812f6087e0ded2761db5f316e1a16772fbc5c39c31a3b2862a3e455c44edc29eb624b +SHA512 (gcc-11.0.0-20210130.tar.xz) = 8f7a43910a8097a146987c1f336cd51fff2c236ecdf3e1e46b87a6f0336f40483922d997d8a95f26b35b97e91879fbb3a3840492ef823110a280f29745d437f8 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From c7b83880f7d31a09d20787b0dced6df9d390924e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 31 Jan 2021 12:15:51 +0100 Subject: [PATCH 025/293] Add RHEL Fortran patchset. --- gcc.spec | 24 + gcc11-fortran-fdec-add-missing-indexes.patch | 181 ++ gcc11-fortran-fdec-duplicates.patch | 215 ++ gcc11-fortran-fdec-ichar.patch | 78 + gcc11-fortran-fdec-non-integer-index.patch | 158 ++ gcc11-fortran-fdec-non-logical-if.patch | 378 ++++ gcc11-fortran-fdec-old-init.patch | 185 ++ gcc11-fortran-fdec-override-kind.patch | 588 +++++ gcc11-fortran-fdec-promotion.patch | 2093 ++++++++++++++++++ gcc11-fortran-fdec-sequence.patch | 262 +++ gcc11-fortran-flogical-as-integer.patch | 305 +++ 11 files changed, 4467 insertions(+) create mode 100644 gcc11-fortran-fdec-add-missing-indexes.patch create mode 100644 gcc11-fortran-fdec-duplicates.patch create mode 100644 gcc11-fortran-fdec-ichar.patch create mode 100644 gcc11-fortran-fdec-non-integer-index.patch create mode 100644 gcc11-fortran-fdec-non-logical-if.patch create mode 100644 gcc11-fortran-fdec-old-init.patch create mode 100644 gcc11-fortran-fdec-override-kind.patch create mode 100644 gcc11-fortran-fdec-promotion.patch create mode 100644 gcc11-fortran-fdec-sequence.patch create mode 100644 gcc11-fortran-flogical-as-integer.patch diff --git a/gcc.spec b/gcc.spec index a49fbbe..99687e5 100644 --- a/gcc.spec +++ b/gcc.spec @@ -273,6 +273,17 @@ Patch10: gcc11-rh1574936.patch Patch11: gcc11-d-shared-libphobos.patch Patch12: gcc11-pr98338-workaround.patch +Patch100: gcc11-fortran-fdec-duplicates.patch +Patch101: gcc11-fortran-flogical-as-integer.patch +Patch102: gcc11-fortran-fdec-ichar.patch +Patch103: gcc11-fortran-fdec-non-integer-index.patch +Patch104: gcc11-fortran-fdec-old-init.patch +Patch105: gcc11-fortran-fdec-override-kind.patch +Patch106: gcc11-fortran-fdec-non-logical-if.patch +Patch107: gcc11-fortran-fdec-promotion.patch +Patch108: gcc11-fortran-fdec-sequence.patch +Patch109: gcc11-fortran-fdec-add-missing-indexes.patch + # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. %ifnarch %{arm} @@ -784,6 +795,19 @@ to NVidia PTX capable devices if available. %patch11 -p0 -b .d-shared-libphobos~ %patch12 -p0 -b .pr98338-workaround~ +%if %{?rhel} >= 9 +%patch100 -p1 -b .fortran-fdec-duplicates~ +%patch101 -p1 -b .fortran-flogical-as-integer~ +%patch102 -p1 -b .fortran-fdec-ichar~ +%patch103 -p1 -b .fortran-fdec-non-integer-index~ +%patch104 -p1 -b .fortran-fdec-old-init~ +%patch105 -p1 -b .fortran-fdec-override-kind~ +%patch106 -p1 -b .fortran-fdec-non-logical-if~ +%patch107 -p1 -b .fortran-fdec-promotion~ +%patch108 -p1 -b .fortran-fdec-sequence~ +%patch109 -p1 -b .fortran-fdec-add-missing-indexes~ +%endif + rm -f libgomp/testsuite/*/*task-detach* echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE diff --git a/gcc11-fortran-fdec-add-missing-indexes.patch b/gcc11-fortran-fdec-add-missing-indexes.patch new file mode 100644 index 0000000..d707b94 --- /dev/null +++ b/gcc11-fortran-fdec-add-missing-indexes.patch @@ -0,0 +1,181 @@ +From 7001d522d0273658d9e1fb12ca104d56bfcae34d Mon Sep 17 00:00:00 2001 +From: Mark Eggleston +Date: Fri, 22 Jan 2021 15:06:08 +0000 +Subject: [PATCH 10/10] Fill in missing array dimensions using the lower bound + +Use -fdec-add-missing-indexes to enable feature. Also enabled by fdec. +--- + gcc/fortran/lang.opt | 8 ++++++++ + gcc/fortran/options.c | 1 + + gcc/fortran/resolve.c | 24 ++++++++++++++++++++++++ + gcc/testsuite/gfortran.dg/array_6.f90 | 23 +++++++++++++++++++++++ + gcc/testsuite/gfortran.dg/array_7.f90 | 23 +++++++++++++++++++++++ + gcc/testsuite/gfortran.dg/array_8.f90 | 23 +++++++++++++++++++++++ + 6 files changed, 102 insertions(+) + create mode 100644 gcc/testsuite/gfortran.dg/array_6.f90 + create mode 100644 gcc/testsuite/gfortran.dg/array_7.f90 + create mode 100644 gcc/testsuite/gfortran.dg/array_8.f90 + +diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt +index 019c798cf09..f27de88ea3f 100644 +--- a/gcc/fortran/lang.opt ++++ b/gcc/fortran/lang.opt +@@ -281,6 +281,10 @@ Wmissing-include-dirs + Fortran + ; Documented in C/C++ + ++Wmissing-index ++Fortran Var(warn_missing_index) Warning LangEnabledBy(Fortran,Wall) ++Warn that the lower bound of a missing index will be used. ++ + Wuse-without-only + Fortran Var(warn_use_without_only) Warning + Warn about USE statements that have no ONLY qualifier. +@@ -460,6 +464,10 @@ fdec + Fortran Var(flag_dec) + Enable all DEC language extensions. + ++fdec-add-missing-indexes ++Fortran Var(flag_dec_add_missing_indexes) ++Enable the addition of missing indexes using their lower bounds. ++ + fdec-blank-format-item + Fortran Var(flag_dec_blank_format_item) + Enable the use of blank format items in format strings. +diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +index 050f56fdc25..c3b2822685d 100644 +--- a/gcc/fortran/options.c ++++ b/gcc/fortran/options.c +@@ -84,6 +84,7 @@ set_dec_flags (int value) + SET_BITFLAG (flag_dec_non_logical_if, value, value); + SET_BITFLAG (flag_dec_promotion, value, value); + SET_BITFLAG (flag_dec_sequence, value, value); ++ SET_BITFLAG (flag_dec_add_missing_indexes, value, value); + } + + /* Finalize DEC flags. */ +diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c +index fe7d0cc5944..0efeedab46e 100644 +--- a/gcc/fortran/resolve.c ++++ b/gcc/fortran/resolve.c +@@ -4806,6 +4806,30 @@ compare_spec_to_ref (gfc_array_ref *ar) + if (ar->type == AR_FULL) + return true; + ++ if (flag_dec_add_missing_indexes && as->rank > ar->dimen) ++ { ++ /* Add in the missing dimensions, assuming they are the lower bound ++ of that dimension if not specified. */ ++ int j; ++ if (warn_missing_index) ++ { ++ gfc_warning (OPT_Wmissing_index, "Using the lower bound for " ++ "unspecified dimensions in array reference at %L", ++ &ar->where); ++ } ++ /* Other parts of the code iterate ar->start and ar->end from 0 to ++ ar->dimen, so it is safe to assume slots from ar->dimen upwards ++ are unused (i.e. there are no gaps; the specified indexes are ++ contiguous and start at zero. */ ++ for(j = ar->dimen; j <= as->rank; j++) ++ { ++ ar->start[j] = gfc_copy_expr (as->lower[j]); ++ ar->end[j] = gfc_copy_expr (as->lower[j]); ++ ar->dimen_type[j] = DIMEN_ELEMENT; ++ } ++ ar->dimen = as->rank; ++ } ++ + if (as->rank != ar->dimen) + { + gfc_error ("Rank mismatch in array reference at %L (%d/%d)", +diff --git a/gcc/testsuite/gfortran.dg/array_6.f90 b/gcc/testsuite/gfortran.dg/array_6.f90 +new file mode 100644 +index 00000000000..5c26e18ab3e +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/array_6.f90 +@@ -0,0 +1,23 @@ ++! { dg-do run } ++! { dg-options "-fdec -Wmissing-index" }! ++! Checks that under-specified arrays (referencing arrays with fewer ++! dimensions than the array spec) generates a warning. ++! ++! Contributed by Jim MacArthur ++! Updated by Mark Eggleston ++! ++ ++program under_specified_array ++ integer chessboard(8,8) ++ integer chessboard3d(8,8,3:5) ++ chessboard(3,1) = 5 ++ chessboard(3,2) = 55 ++ chessboard3d(4,1,3) = 6 ++ chessboard3d(4,1,4) = 66 ++ chessboard3d(4,4,3) = 7 ++ chessboard3d(4,4,4) = 77 ++ ++ if (chessboard(3).ne.5) stop 1 ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" } ++ if (chessboard3d(4).ne.6) stop 2 ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" } ++ if (chessboard3d(4,4).ne.7) stop 3 ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" } ++end program +diff --git a/gcc/testsuite/gfortran.dg/array_7.f90 b/gcc/testsuite/gfortran.dg/array_7.f90 +new file mode 100644 +index 00000000000..5588a5bd02d +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/array_7.f90 +@@ -0,0 +1,23 @@ ++! { dg-do run } ++! { dg-options "-fdec-add-missing-indexes -Wmissing-index" }! ++! Checks that under-specified arrays (referencing arrays with fewer ++! dimensions than the array spec) generates a warning. ++! ++! Contributed by Jim MacArthur ++! Updated by Mark Eggleston ++! ++ ++program under_specified_array ++ integer chessboard(8,8) ++ integer chessboard3d(8,8,3:5) ++ chessboard(3,1) = 5 ++ chessboard(3,2) = 55 ++ chessboard3d(4,1,3) = 6 ++ chessboard3d(4,1,4) = 66 ++ chessboard3d(4,4,3) = 7 ++ chessboard3d(4,4,4) = 77 ++ ++ if (chessboard(3).ne.5) stop 1 ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" } ++ if (chessboard3d(4).ne.6) stop 2 ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" } ++ if (chessboard3d(4,4).ne.7) stop 3 ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" } ++end program +diff --git a/gcc/testsuite/gfortran.dg/array_8.f90 b/gcc/testsuite/gfortran.dg/array_8.f90 +new file mode 100644 +index 00000000000..f0d2ef5e37d +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/array_8.f90 +@@ -0,0 +1,23 @@ ++! { dg-do compile } ++! { dg-options "-fdec -fno-dec-add-missing-indexes" }! ++! Checks that under-specified arrays (referencing arrays with fewer ++! dimensions than the array spec) generates a warning. ++! ++! Contributed by Jim MacArthur ++! Updated by Mark Eggleston ++! ++ ++program under_specified_array ++ integer chessboard(8,8) ++ integer chessboard3d(8,8,3:5) ++ chessboard(3,1) = 5 ++ chessboard(3,2) = 55 ++ chessboard3d(4,1,3) = 6 ++ chessboard3d(4,1,4) = 66 ++ chessboard3d(4,4,3) = 7 ++ chessboard3d(4,4,4) = 77 ++ ++ if (chessboard(3).ne.5) stop 1 ! { dg-error "Rank mismatch" } ++ if (chessboard3d(4).ne.6) stop 2 ! { dg-error "Rank mismatch" } ++ if (chessboard3d(4,4).ne.7) stop 3 ! { dg-error "Rank mismatch" } ++end program +-- +2.27.0 + diff --git a/gcc11-fortran-fdec-duplicates.patch b/gcc11-fortran-fdec-duplicates.patch new file mode 100644 index 0000000..b5d1104 --- /dev/null +++ b/gcc11-fortran-fdec-duplicates.patch @@ -0,0 +1,215 @@ +From 23b1fcb104c666429451ffaf936f8da5fcd3d43a Mon Sep 17 00:00:00 2001 +From: Mark Eggleston +Date: Fri, 22 Jan 2021 12:29:47 +0000 +Subject: [PATCH 01/10] Allow duplicate declarations. + +Enabled by -fdec-duplicates and -fdec. + +Some fixes by Jim MacArthur +Addition of -fdec-duplicates by Mark Eggleston +--- + gcc/fortran/lang.opt | 4 ++++ + gcc/fortran/options.c | 1 + + gcc/fortran/symbol.c | 21 +++++++++++++++++-- + .../gfortran.dg/duplicate_type_4.f90 | 13 ++++++++++++ + .../gfortran.dg/duplicate_type_5.f90 | 13 ++++++++++++ + .../gfortran.dg/duplicate_type_6.f90 | 13 ++++++++++++ + .../gfortran.dg/duplicate_type_7.f90 | 13 ++++++++++++ + .../gfortran.dg/duplicate_type_8.f90 | 12 +++++++++++ + .../gfortran.dg/duplicate_type_9.f90 | 12 +++++++++++ + 9 files changed, 100 insertions(+), 2 deletions(-) + create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_4.f90 + create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_5.f90 + create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_6.f90 + create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_7.f90 + create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_8.f90 + create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_9.f90 + +diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt +index 2b1977c523b..52bd522051e 100644 +--- a/gcc/fortran/lang.opt ++++ b/gcc/fortran/lang.opt +@@ -469,6 +469,10 @@ Fortran Var(flag_dec_char_conversions) + Enable the use of character literals in assignments and data statements + for non-character variables. + ++fdec-duplicates ++Fortran Var(flag_dec_duplicates) ++Allow varibles to be duplicated in the type specification matches. ++ + fdec-include + Fortran Var(flag_dec_include) + Enable legacy parsing of INCLUDE as statement. +diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +index 3a0b98bf1ec..f19ba87f8a0 100644 +--- a/gcc/fortran/options.c ++++ b/gcc/fortran/options.c +@@ -77,6 +77,7 @@ set_dec_flags (int value) + SET_BITFLAG (flag_dec_format_defaults, value, value); + SET_BITFLAG (flag_dec_blank_format_item, value, value); + SET_BITFLAG (flag_dec_char_conversions, value, value); ++ SET_BITFLAG (flag_dec_duplicates, value, value); + } + + /* Finalize DEC flags. */ +diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c +index 3b988d1be22..9843175cc2a 100644 +--- a/gcc/fortran/symbol.c ++++ b/gcc/fortran/symbol.c +@@ -1995,6 +1995,8 @@ gfc_add_type (gfc_symbol *sym, gfc_typespec *ts, locus *where) + if (sym->attr.result && type == BT_UNKNOWN && sym->ns->proc_name) + type = sym->ns->proc_name->ts.type; + ++ flavor = sym->attr.flavor; ++ + if (type != BT_UNKNOWN && !(sym->attr.function && sym->attr.implicit_type) + && !(gfc_state_stack->previous && gfc_state_stack->previous->previous + && gfc_state_stack->previous->previous->state == COMP_SUBMODULE) +@@ -2007,6 +2009,23 @@ gfc_add_type (gfc_symbol *sym, gfc_typespec *ts, locus *where) + else if (sym->attr.function && sym->attr.result) + gfc_error ("Symbol %qs at %L already has basic type of %s", + sym->ns->proc_name->name, where, gfc_basic_typename (type)); ++ else if (flag_dec_duplicates) ++ { ++ /* Ignore temporaries and class/procedure names */ ++ if (sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS ++ || sym->ts.type == BT_PROCEDURE) ++ return false; ++ ++ if (gfc_compare_types (&sym->ts, ts) ++ && (flavor == FL_UNKNOWN || flavor == FL_VARIABLE ++ || flavor == FL_PROCEDURE)) ++ { ++ return gfc_notify_std (GFC_STD_LEGACY, ++ "Symbol '%qs' at %L already has " ++ "basic type of %s", sym->name, where, ++ gfc_basic_typename (type)); ++ } ++ } + else + gfc_error ("Symbol %qs at %L already has basic type of %s", sym->name, + where, gfc_basic_typename (type)); +@@ -2020,8 +2039,6 @@ gfc_add_type (gfc_symbol *sym, gfc_typespec *ts, locus *where) + return false; + } + +- flavor = sym->attr.flavor; +- + if (flavor == FL_PROGRAM || flavor == FL_BLOCK_DATA || flavor == FL_MODULE + || flavor == FL_LABEL + || (flavor == FL_PROCEDURE && sym->attr.subroutine) +diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_4.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_4.f90 +new file mode 100644 +index 00000000000..cdd29ea8846 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/duplicate_type_4.f90 +@@ -0,0 +1,13 @@ ++! { dg-do compile } ++! { dg-options "-std=f95" } ++ ++! PR fortran/30239 ++! Check for errors when a symbol gets declared a type twice, even if it ++! is the same. ++ ++INTEGER FUNCTION foo () ++ IMPLICIT NONE ++ INTEGER :: x ++ INTEGER :: x ! { dg-error "basic type of" } ++ x = 42 ++END FUNCTION foo +diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_5.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_5.f90 +new file mode 100644 +index 00000000000..00f931809aa +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/duplicate_type_5.f90 +@@ -0,0 +1,13 @@ ++! { dg-do run } ++! { dg-options "-fdec" } ++! ++! Test case contributed by Mark Eggleston ++! ++ ++program test ++ implicit none ++ integer :: x ++ integer :: x ++ x = 42 ++ if (x /= 42) stop 1 ++end program test +diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_6.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_6.f90 +new file mode 100644 +index 00000000000..f0df27e323c +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/duplicate_type_6.f90 +@@ -0,0 +1,13 @@ ++! { dg-do run } ++! { dg-options "-std=legacy -fdec-duplicates" } ++! ++! Test case contributed by Mark Eggleston ++! ++ ++program test ++ implicit none ++ integer :: x ++ integer :: x ++ x = 42 ++ if (x /= 42) stop 1 ++end program test +diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_7.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_7.f90 +new file mode 100644 +index 00000000000..f32472ff586 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/duplicate_type_7.f90 +@@ -0,0 +1,13 @@ ++! { dg-do run } ++! { dg-options "-fdec-duplicates" } ++! ++! Test case contributed by Mark Eggleston ++! ++ ++program test ++ implicit none ++ integer :: x ++ integer :: x! { dg-warning "Legacy Extension" } ++ x = 42 ++ if (x /= 42) stop 1 ++end program test +diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_8.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_8.f90 +new file mode 100644 +index 00000000000..23c94add179 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/duplicate_type_8.f90 +@@ -0,0 +1,12 @@ ++! { dg-do compile } ++! { dg-options "-fdec -fno-dec-duplicates" } ++! ++! Test case contributed by Mark Eggleston ++! ++ ++integer function foo () ++ implicit none ++ integer :: x ++ integer :: x ! { dg-error "basic type of" } ++ x = 42 ++end function foo +diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_9.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_9.f90 +new file mode 100644 +index 00000000000..d5edee4d8ee +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/duplicate_type_9.f90 +@@ -0,0 +1,12 @@ ++! { dg-do compile } ++! { dg-options "-fdec-duplicates -fno-dec-duplicates" } ++! ++! Test case contributed by Mark Eggleston ++! ++ ++integer function foo () ++ implicit none ++ integer :: x ++ integer :: x ! { dg-error "basic type of" } ++ x = 42 ++end function foo +-- +2.27.0 + diff --git a/gcc11-fortran-fdec-ichar.patch b/gcc11-fortran-fdec-ichar.patch new file mode 100644 index 0000000..e7b0522 --- /dev/null +++ b/gcc11-fortran-fdec-ichar.patch @@ -0,0 +1,78 @@ +From f883ac209b0feea860354cb4ef7ff06dc8063fab Mon Sep 17 00:00:00 2001 +From: Mark Eggleston +Date: Fri, 22 Jan 2021 12:53:35 +0000 +Subject: [PATCH 03/10] Allow more than one character as argument to ICHAR + +Use -fdec to enable. +--- + gcc/fortran/check.c | 2 +- + gcc/fortran/simplify.c | 4 ++-- + .../gfortran.dg/dec_ichar_with_string_1.f | 21 +++++++++++++++++++ + 3 files changed, 24 insertions(+), 3 deletions(-) + create mode 100644 gcc/testsuite/gfortran.dg/dec_ichar_with_string_1.f + +diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c +index 82db8e4e1b2..623c1cc470e 100644 +--- a/gcc/fortran/check.c ++++ b/gcc/fortran/check.c +@@ -3157,7 +3157,7 @@ gfc_check_ichar_iachar (gfc_expr *c, gfc_expr *kind) + else + return true; + +- if (i != 1) ++ if (i != 1 && !flag_dec) + { + gfc_error ("Argument of %s at %L must be of length one", + gfc_current_intrinsic, &c->where); +diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c +index 23317a2e2d9..9900572424f 100644 +--- a/gcc/fortran/simplify.c ++++ b/gcc/fortran/simplify.c +@@ -3261,7 +3261,7 @@ gfc_simplify_iachar (gfc_expr *e, gfc_expr *kind) + if (e->expr_type != EXPR_CONSTANT) + return NULL; + +- if (e->value.character.length != 1) ++ if (e->value.character.length != 1 && !flag_dec) + { + gfc_error ("Argument of IACHAR at %L must be of length one", &e->where); + return &gfc_bad_expr; +@@ -3459,7 +3459,7 @@ gfc_simplify_ichar (gfc_expr *e, gfc_expr *kind) + if (e->expr_type != EXPR_CONSTANT) + return NULL; + +- if (e->value.character.length != 1) ++ if (e->value.character.length != 1 && !flag_dec) + { + gfc_error ("Argument of ICHAR at %L must be of length one", &e->where); + return &gfc_bad_expr; +diff --git a/gcc/testsuite/gfortran.dg/dec_ichar_with_string_1.f b/gcc/testsuite/gfortran.dg/dec_ichar_with_string_1.f +new file mode 100644 +index 00000000000..85efccecc0f +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_ichar_with_string_1.f +@@ -0,0 +1,21 @@ ++! { dg-do run } ++! { dg-options "-fdec" } ++! ++! Test ICHAR and IACHAR with more than one character as argument ++! ++! Test case contributed by Jim MacArthur ++! Modified by Mark Eggleston ++! ++ PROGRAM ichar_more_than_one_character ++ CHARACTER*4 st/'Test'/ ++ INTEGER i ++ ++ i = ICHAR(st) ++ if (i.NE.84) STOP 1 ++ i = IACHAR(st) ++ if (i.NE.84) STOP 2 ++ i = ICHAR('Test') ++ if (i.NE.84) STOP 3 ++ i = IACHAR('Test') ++ if (i.NE.84) STOP 4 ++ END +-- +2.27.0 + diff --git a/gcc11-fortran-fdec-non-integer-index.patch b/gcc11-fortran-fdec-non-integer-index.patch new file mode 100644 index 0000000..074df3b --- /dev/null +++ b/gcc11-fortran-fdec-non-integer-index.patch @@ -0,0 +1,158 @@ +From 67aef262311d6a746786ee0f59748ccaa7e1e711 Mon Sep 17 00:00:00 2001 +From: Mark Eggleston +Date: Fri, 22 Jan 2021 13:09:54 +0000 +Subject: [PATCH 04/10] Allow non-integer substring indexes + +Use -fdec-non-integer-index compiler flag to enable. Also enabled by -fdec. +--- + gcc/fortran/lang.opt | 4 ++++ + gcc/fortran/options.c | 1 + + gcc/fortran/resolve.c | 20 +++++++++++++++++++ + .../dec_not_integer_substring_indexes_1.f | 18 +++++++++++++++++ + .../dec_not_integer_substring_indexes_2.f | 18 +++++++++++++++++ + .../dec_not_integer_substring_indexes_3.f | 18 +++++++++++++++++ + 6 files changed, 79 insertions(+) + create mode 100644 gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_1.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_2.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_3.f + +diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt +index c4da248f07c..d527c106bd6 100644 +--- a/gcc/fortran/lang.opt ++++ b/gcc/fortran/lang.opt +@@ -489,6 +489,10 @@ fdec-math + Fortran Var(flag_dec_math) + Enable legacy math intrinsics for compatibility. + ++fdec-non-integer-index ++Fortran Var(flag_dec_non_integer_index) ++Enable support for non-integer substring indexes. ++ + fdec-structure + Fortran Var(flag_dec_structure) + Enable support for DEC STRUCTURE/RECORD. +diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +index f19ba87f8a0..9a042f64881 100644 +--- a/gcc/fortran/options.c ++++ b/gcc/fortran/options.c +@@ -78,6 +78,7 @@ set_dec_flags (int value) + SET_BITFLAG (flag_dec_blank_format_item, value, value); + SET_BITFLAG (flag_dec_char_conversions, value, value); + SET_BITFLAG (flag_dec_duplicates, value, value); ++ SET_BITFLAG (flag_dec_non_integer_index, value, value); + } + + /* Finalize DEC flags. */ +diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c +index 4b90cb59902..bc0df0fdb99 100644 +--- a/gcc/fortran/resolve.c ++++ b/gcc/fortran/resolve.c +@@ -5131,6 +5131,16 @@ gfc_resolve_substring (gfc_ref *ref, bool *equal_length) + if (!gfc_resolve_expr (ref->u.ss.start)) + return false; + ++ /* In legacy mode, allow non-integer string indexes by converting */ ++ if (flag_dec_non_integer_index && ref->u.ss.start->ts.type != BT_INTEGER ++ && gfc_numeric_ts (&ref->u.ss.start->ts)) ++ { ++ gfc_typespec t; ++ t.type = BT_INTEGER; ++ t.kind = ref->u.ss.start->ts.kind; ++ gfc_convert_type_warn (ref->u.ss.start, &t, 2, 1); ++ } ++ + if (ref->u.ss.start->ts.type != BT_INTEGER) + { + gfc_error ("Substring start index at %L must be of type INTEGER", +@@ -5160,6 +5170,16 @@ gfc_resolve_substring (gfc_ref *ref, bool *equal_length) + if (!gfc_resolve_expr (ref->u.ss.end)) + return false; + ++ /* Non-integer string index endings, as for start */ ++ if (flag_dec_non_integer_index && ref->u.ss.end->ts.type != BT_INTEGER ++ && gfc_numeric_ts (&ref->u.ss.end->ts)) ++ { ++ gfc_typespec t; ++ t.type = BT_INTEGER; ++ t.kind = ref->u.ss.end->ts.kind; ++ gfc_convert_type_warn (ref->u.ss.end, &t, 2, 1); ++ } ++ + if (ref->u.ss.end->ts.type != BT_INTEGER) + { + gfc_error ("Substring end index at %L must be of type INTEGER", +diff --git a/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_1.f b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_1.f +new file mode 100644 +index 00000000000..0be28abaa4b +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_1.f +@@ -0,0 +1,18 @@ ++! { dg-do run } ++! { dg-options "-fdec" } ++! ++! Test not integer substring indexes ++! ++! Test case contributed by Mark Eggleston ++! ++ PROGRAM not_integer_substring_indexes ++ CHARACTER*5 st/'Tests'/ ++ REAL ir/1.0/ ++ REAL ir2/4.0/ ++ ++ if (st(ir:4).ne.'Test') stop 1 ++ if (st(1:ir2).ne.'Test') stop 2 ++ if (st(1.0:4).ne.'Test') stop 3 ++ if (st(1:4.0).ne.'Test') stop 4 ++ if (st(2.5:4).ne.'est') stop 5 ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_2.f b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_2.f +new file mode 100644 +index 00000000000..3cf05296d0c +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_2.f +@@ -0,0 +1,18 @@ ++! { dg-do run } ++! { dg-options "-fdec-non-integer-index" } ++! ++! Test not integer substring indexes ++! ++! Test case contributed by Mark Eggleston ++! ++ PROGRAM not_integer_substring_indexes ++ CHARACTER*5 st/'Tests'/ ++ REAL ir/1.0/ ++ REAL ir2/4.0/ ++ ++ if (st(ir:4).ne.'Test') stop 1 ++ if (st(1:ir2).ne.'Test') stop 2 ++ if (st(1.0:4).ne.'Test') stop 3 ++ if (st(1:4.0).ne.'Test') stop 4 ++ if (st(2.5:4).ne.'est') stop 5 ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_3.f b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_3.f +new file mode 100644 +index 00000000000..703de995897 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_3.f +@@ -0,0 +1,18 @@ ++! { dg-do compile } ++! { dg-options "-fdec -fno-dec-non-integer-index" } ++! ++! Test not integer substring indexes ++! ++! Test case contributed by Mark Eggleston ++! ++ PROGRAM not_integer_substring_indexes ++ CHARACTER*5 st/'Tests'/ ++ REAL ir/1.0/ ++ REAL ir2/4.0/ ++ ++ if (st(ir:4).ne.'Test') stop 1 ! { dg-error "Substring start index" } ++ if (st(1:ir2).ne.'Test') stop 2 ! { dg-error "Substring end index" } ++ if (st(1.0:4).ne.'Test') stop 3 ! { dg-error "Substring start index" } ++ if (st(1:4.0).ne.'Test') stop 4 ! { dg-error "Substring end index" } ++ if (st(2.5:4).ne.'est') stop 5 ! { dg-error "Substring start index" } ++ END +-- +2.27.0 + diff --git a/gcc11-fortran-fdec-non-logical-if.patch b/gcc11-fortran-fdec-non-logical-if.patch new file mode 100644 index 0000000..0133d23 --- /dev/null +++ b/gcc11-fortran-fdec-non-logical-if.patch @@ -0,0 +1,378 @@ +From cc87ddb841017bb0976b05091733609ee17d7f05 Mon Sep 17 00:00:00 2001 +From: Mark Eggleston +Date: Fri, 22 Jan 2021 13:15:17 +0000 +Subject: [PATCH 07/10] Allow non-logical expressions in IF statements + +Use -fdec-non-logical-if to enable feature. Also enabled using -fdec. +--- + gcc/fortran/lang.opt | 4 ++ + gcc/fortran/options.c | 1 + + gcc/fortran/resolve.c | 60 ++++++++++++++++--- + ...gical_expressions_if_statements_blocks_1.f | 25 ++++++++ + ...gical_expressions_if_statements_blocks_2.f | 25 ++++++++ + ...gical_expressions_if_statements_blocks_3.f | 25 ++++++++ + ...gical_expressions_if_statements_blocks_4.f | 45 ++++++++++++++ + ...gical_expressions_if_statements_blocks_5.f | 45 ++++++++++++++ + ...gical_expressions_if_statements_blocks_6.f | 45 ++++++++++++++ + 9 files changed, 266 insertions(+), 9 deletions(-) + create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f + +diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt +index 4a269ebb22d..d886c2f33ed 100644 +--- a/gcc/fortran/lang.opt ++++ b/gcc/fortran/lang.opt +@@ -497,6 +497,10 @@ fdec-override-kind + Fortran Var(flag_dec_override_kind) + Enable support for per variable kind specification. + ++fdec-non-logical-if ++Fortran Var(flag_dec_non_logical_if) ++Enable support for non-logical expressions in if statements. ++ + fdec-old-init + Fortran Var(flag_dec_old_init) + Enable support for old style initializers in derived types. +diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +index edbab483b36..a946c86790a 100644 +--- a/gcc/fortran/options.c ++++ b/gcc/fortran/options.c +@@ -81,6 +81,7 @@ set_dec_flags (int value) + SET_BITFLAG (flag_dec_non_integer_index, value, value); + SET_BITFLAG (flag_dec_old_init, value, value); + SET_BITFLAG (flag_dec_override_kind, value, value); ++ SET_BITFLAG (flag_dec_non_logical_if, value, value); + } + + /* Finalize DEC flags. */ +diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c +index bc0df0fdb99..07dd039f3bf 100644 +--- a/gcc/fortran/resolve.c ++++ b/gcc/fortran/resolve.c +@@ -10789,10 +10789,31 @@ gfc_resolve_blocks (gfc_code *b, gfc_namespace *ns) + switch (b->op) + { + case EXEC_IF: +- if (t && b->expr1 != NULL +- && (b->expr1->ts.type != BT_LOGICAL || b->expr1->rank != 0)) +- gfc_error ("IF clause at %L requires a scalar LOGICAL expression", +- &b->expr1->where); ++ if (t && b->expr1 != NULL) ++ { ++ if (flag_dec_non_logical_if && b->expr1->ts.type != BT_LOGICAL) ++ { ++ gfc_expr* cast; ++ cast = gfc_ne (b->expr1, ++ gfc_get_int_expr (1, &gfc_current_locus, 0), ++ INTRINSIC_NE); ++ if (cast == NULL) ++ gfc_internal_error ("gfc_resolve_blocks(): Failed to cast " ++ "to LOGICAL in IF"); ++ b->expr1 = cast; ++ if (warn_conversion_extra) ++ { ++ gfc_warning (OPT_Wconversion_extra, "Non-LOGICAL type in" ++ " IF statement condition %L will be true if" ++ " it evaluates to nonzero", ++ &b->expr1->where); ++ } ++ } ++ ++ if ((b->expr1->ts.type != BT_LOGICAL || b->expr1->rank != 0)) ++ gfc_error ("IF clause at %L requires a scalar LOGICAL " ++ "expression", &b->expr1->where); ++ } + break; + + case EXEC_WHERE: +@@ -12093,11 +12114,32 @@ start: + break; + + case EXEC_IF: +- if (t && code->expr1 != NULL +- && (code->expr1->ts.type != BT_LOGICAL +- || code->expr1->rank != 0)) +- gfc_error ("IF clause at %L requires a scalar LOGICAL expression", +- &code->expr1->where); ++ if (t && code->expr1 != NULL) ++ { ++ if (flag_dec_non_logical_if ++ && code->expr1->ts.type != BT_LOGICAL) ++ { ++ gfc_expr* cast; ++ cast = gfc_ne (code->expr1, ++ gfc_get_int_expr (1, &gfc_current_locus, 0), ++ INTRINSIC_NE); ++ if (cast == NULL) ++ gfc_internal_error ("gfc_resolve_code(): Failed to cast " ++ "to LOGICAL in IF"); ++ code->expr1 = cast; ++ if (warn_conversion_extra) ++ { ++ gfc_warning (OPT_Wconversion_extra, "Non-LOGICAL type in" ++ " IF statement condition %L will be true if" ++ " it evaluates to nonzero", ++ &code->expr1->where); ++ } ++ } ++ ++ if (code->expr1->ts.type != BT_LOGICAL || code->expr1->rank != 0) ++ gfc_error ("IF clause at %L requires a scalar LOGICAL " ++ "expression", &code->expr1->where); ++ } + break; + + case EXEC_CALL: +diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f +new file mode 100644 +index 00000000000..0101db893ca +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f +@@ -0,0 +1,25 @@ ++! { dg-do run } ++! { dg-options "-fdec -Wconversion-extra" } ++! ++! Allow logical expressions in if statements and blocks ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ PROGRAM logical_exp_if_st_bl ++ INTEGER ipos/1/ ++ INTEGER ineg/0/ ++ ++ ! Test non logical variables ++ if (ineg) STOP 1 ! { dg-warning "if it evaluates to nonzero" } ++ if (0) STOP 2 ! { dg-warning "if it evaluates to nonzero" } ++ ++ ! Test non logical expressions in if statements ++ if (MOD(ipos, 1)) STOP 3 ! { dg-warning "if it evaluates to nonzero" } ++ ++ ! Test non logical expressions in if blocks ++ if (MOD(2 * ipos, 2)) then ! { dg-warning "if it evaluates to nonzero" } ++ STOP 4 ++ endif ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f +new file mode 100644 +index 00000000000..876f4e09508 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f +@@ -0,0 +1,25 @@ ++! { dg-do run } ++! { dg-options "-fdec-non-logical-if -Wconversion-extra" } ++! ++! Allow logical expressions in if statements and blocks ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ PROGRAM logical_exp_if_st_bl ++ INTEGER ipos/1/ ++ INTEGER ineg/0/ ++ ++ ! Test non logical variables ++ if (ineg) STOP 1 ! { dg-warning "if it evaluates to nonzero" } ++ if (0) STOP 2 ! { dg-warning "if it evaluates to nonzero" } ++ ++ ! Test non logical expressions in if statements ++ if (MOD(ipos, 1)) STOP 3 ! { dg-warning "if it evaluates to nonzero" } ++ ++ ! Test non logical expressions in if blocks ++ if (MOD(2 * ipos, 2)) then ! { dg-warning "if it evaluates to nonzero" } ++ STOP 4 ++ endif ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f +new file mode 100644 +index 00000000000..35cb4c51b8d +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f +@@ -0,0 +1,25 @@ ++! { dg-do compile } ++! { dg-options "-fdec -fno-dec-non-logical-if" } ++! ++! Allow logical expressions in if statements and blocks ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ PROGRAM logical_exp_if_st_bl ++ INTEGER ipos/1/ ++ INTEGER ineg/0/ ++ ++ ! Test non logical variables ++ if (ineg) STOP 1 ! { dg-error "IF clause at" } ++ if (0) STOP 2 ! { dg-error "IF clause at" } ++ ++ ! Test non logical expressions in if statements ++ if (MOD(ipos, 1)) STOP 3 ! { dg-error "IF clause at" } ++ ++ ! Test non logical expressions in if blocks ++ if (MOD(2 * ipos, 2)) then ! { dg-error "IF clause at" } ++ STOP 4 ++ endif ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f +new file mode 100644 +index 00000000000..7b60b60827f +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f +@@ -0,0 +1,45 @@ ++! { dg-do run } ++! { dg-options "-fdec -Wconversion-extra" } ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ function othersub1() ++ integer*4 othersub1 ++ othersub1 = 9 ++ end ++ ++ function othersub2() ++ integer*4 othersub2 ++ othersub2 = 0 ++ end ++ ++ program MAIN ++ integer*4 othersub1 ++ integer*4 othersub2 ++ integer a /1/ ++ integer b /2/ ++ ++ if (othersub1()) then ! { dg-warning "if it evaluates to nonzero" } ++ write(*,*) "OK" ++ else ++ stop 1 ++ end if ++ if (othersub2()) then ! { dg-warning "if it evaluates to nonzero" } ++ stop 2 ++ else ++ write(*,*) "OK" ++ end if ++ if (a-b) then ! { dg-warning "if it evaluates to nonzero" } ++ write(*,*) "OK" ++ else ++ stop 3 ++ end if ++ if (b-(a+1)) then ! { dg-warning "if it evaluates to nonzero" } ++ stop 3 ++ else ++ write(*,*) "OK" ++ end if ++ end ++ +diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f +new file mode 100644 +index 00000000000..80336f48ca1 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f +@@ -0,0 +1,45 @@ ++! { dg-do run } ++! { dg-options "-fdec-non-logical-if -Wconversion-extra" } ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ function othersub1() ++ integer*4 othersub1 ++ othersub1 = 9 ++ end ++ ++ function othersub2() ++ integer*4 othersub2 ++ othersub2 = 0 ++ end ++ ++ program MAIN ++ integer*4 othersub1 ++ integer*4 othersub2 ++ integer a /1/ ++ integer b /2/ ++ ++ if (othersub1()) then ! { dg-warning "Non-LOGICAL type in IF statement" } ++ write(*,*) "OK" ++ else ++ stop 1 ++ end if ++ if (othersub2()) then ! { dg-warning "Non-LOGICAL type in IF statement" } ++ stop 2 ++ else ++ write(*,*) "OK" ++ end if ++ if (a-b) then ! { dg-warning "Non-LOGICAL type in IF statement" } ++ write(*,*) "OK" ++ else ++ stop 3 ++ end if ++ if (b-(a+1)) then ! { dg-warning "Non-LOGICAL type in IF statement" } ++ stop 3 ++ else ++ write(*,*) "OK" ++ end if ++ end ++ +diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f +new file mode 100644 +index 00000000000..e1125ca717a +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f +@@ -0,0 +1,45 @@ ++! { dg-do compile } ++! { dg-options "-fdec -fno-dec-non-logical-if" } ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ function othersub1() ++ integer*4 othersub1 ++ othersub1 = 9 ++ end ++ ++ function othersub2() ++ integer*4 othersub2 ++ othersub2 = 0 ++ end ++ ++ program MAIN ++ integer*4 othersub1 ++ integer*4 othersub2 ++ integer a /1/ ++ integer b /2/ ++ ++ if (othersub1()) then ! { dg-error "IF clause at" } ++ write(*,*) "OK" ++ else ++ stop 1 ++ end if ++ if (othersub2()) then ! { dg-error "IF clause at" } ++ stop 2 ++ else ++ write(*,*) "OK" ++ end if ++ if (a-b) then ! { dg-error "IF clause at" } ++ write(*,*) "OK" ++ else ++ stop 3 ++ end if ++ if (b-(a+1)) then ! { dg-error "IF clause at" } ++ stop 3 ++ else ++ write(*,*) "OK" ++ end if ++ end ++ +-- +2.27.0 + diff --git a/gcc11-fortran-fdec-old-init.patch b/gcc11-fortran-fdec-old-init.patch new file mode 100644 index 0000000..8554f2e --- /dev/null +++ b/gcc11-fortran-fdec-old-init.patch @@ -0,0 +1,185 @@ +From 8bcc0f85ed1718c0dd9033ad4a34df181aabaffe Mon Sep 17 00:00:00 2001 +From: Mark Eggleston +Date: Fri, 22 Jan 2021 13:11:06 +0000 +Subject: [PATCH 05/10] Allow old-style initializers in derived types + +This allows simple declarations in derived types and structures, such as: + LOGICAL*1 NIL /0/ +Only single value expressions are allowed at the moment. + +Use -fdec-old-init to enable. Also enabled by -fdec. +--- + gcc/fortran/decl.c | 27 +++++++++++++++---- + gcc/fortran/lang.opt | 4 +++ + gcc/fortran/options.c | 1 + + ...ec_derived_types_initialised_old_style_1.f | 25 +++++++++++++++++ + ...ec_derived_types_initialised_old_style_2.f | 25 +++++++++++++++++ + ...ec_derived_types_initialised_old_style_3.f | 26 ++++++++++++++++++ + 6 files changed, 103 insertions(+), 5 deletions(-) + create mode 100644 gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_1.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_2.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_3.f + +diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c +index 723915822f3..5c8c1b7981b 100644 +--- a/gcc/fortran/decl.c ++++ b/gcc/fortran/decl.c +@@ -2827,12 +2827,29 @@ variable_decl (int elem) + but not components of derived types. */ + else if (gfc_current_state () == COMP_DERIVED) + { +- gfc_error ("Invalid old style initialization for derived type " +- "component at %C"); +- m = MATCH_ERROR; +- goto cleanup; ++ if (flag_dec_old_init) ++ { ++ /* Attempt to match an old-style initializer which is a simple ++ integer or character expression; this will not work with ++ multiple values. */ ++ m = gfc_match_init_expr (&initializer); ++ if (m == MATCH_ERROR) ++ goto cleanup; ++ else if (m == MATCH_YES) ++ { ++ m = gfc_match ("/"); ++ if (m != MATCH_YES) ++ goto cleanup; ++ } ++ } ++ else ++ { ++ gfc_error ("Invalid old style initialization for derived type " ++ "component at %C"); ++ m = MATCH_ERROR; ++ goto cleanup; ++ } + } +- + /* For structure components, read the initializer as a special + expression and let the rest of this function apply the initializer + as usual. */ +diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt +index d527c106bd6..25cc948699b 100644 +--- a/gcc/fortran/lang.opt ++++ b/gcc/fortran/lang.opt +@@ -493,6 +493,10 @@ fdec-non-integer-index + Fortran Var(flag_dec_non_integer_index) + Enable support for non-integer substring indexes. + ++fdec-old-init ++Fortran Var(flag_dec_old_init) ++Enable support for old style initializers in derived types. ++ + fdec-structure + Fortran Var(flag_dec_structure) + Enable support for DEC STRUCTURE/RECORD. +diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +index 9a042f64881..d6bd36c3a8a 100644 +--- a/gcc/fortran/options.c ++++ b/gcc/fortran/options.c +@@ -79,6 +79,7 @@ set_dec_flags (int value) + SET_BITFLAG (flag_dec_char_conversions, value, value); + SET_BITFLAG (flag_dec_duplicates, value, value); + SET_BITFLAG (flag_dec_non_integer_index, value, value); ++ SET_BITFLAG (flag_dec_old_init, value, value); + } + + /* Finalize DEC flags. */ +diff --git a/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_1.f b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_1.f +new file mode 100644 +index 00000000000..eac4f9bfcf1 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_1.f +@@ -0,0 +1,25 @@ ++! { dg-do run } ++! { dg-options "-fdec" } ++! ++! Test old style initializers in derived types ++! ++! Contributed by Jim MacArthur ++! Modified by Mark Eggleston ++! ++ PROGRAM spec_in_var ++ TYPE STRUCT1 ++ INTEGER*4 ID /8/ ++ INTEGER*4 TYPE /5/ ++ INTEGER*8 DEFVAL /0/ ++ CHARACTER*(5) NAME /'tests'/ ++ LOGICAL*1 NIL /0/ ++ END TYPE STRUCT1 ++ ++ TYPE (STRUCT1) SINST ++ ++ IF(SINST%ID.NE.8) STOP 1 ++ IF(SINST%TYPE.NE.5) STOP 2 ++ IF(SINST%DEFVAL.NE.0) STOP 3 ++ IF(SINST%NAME.NE.'tests') STOP 4 ++ IF(SINST%NIL) STOP 5 ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_2.f b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_2.f +new file mode 100644 +index 00000000000..d904c8b2974 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_2.f +@@ -0,0 +1,25 @@ ++! { dg-do run } ++! { dg-options "-std=legacy -fdec-old-init" } ++! ++! Test old style initializers in derived types ++! ++! Contributed by Jim MacArthur ++! Modified by Mark Eggleston ++! ++ PROGRAM spec_in_var ++ TYPE STRUCT1 ++ INTEGER*4 ID /8/ ++ INTEGER*4 TYPE /5/ ++ INTEGER*8 DEFVAL /0/ ++ CHARACTER*(5) NAME /'tests'/ ++ LOGICAL*1 NIL /0/ ++ END TYPE STRUCT1 ++ ++ TYPE (STRUCT1) SINST ++ ++ IF(SINST%ID.NE.8) STOP 1 ++ IF(SINST%TYPE.NE.5) STOP 2 ++ IF(SINST%DEFVAL.NE.0) STOP 3 ++ IF(SINST%NAME.NE.'tests') STOP 4 ++ IF(SINST%NIL) STOP 5 ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_3.f b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_3.f +new file mode 100644 +index 00000000000..58c2b4b66cf +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_3.f +@@ -0,0 +1,26 @@ ++! { dg-do compile } ++! { dg-options "-std=legacy -fdec -fno-dec-old-init" } ++! ++! Test old style initializers in derived types ++! ++! Contributed by Jim MacArthur ++! Modified by Mark Eggleston ++! ++ ++ PROGRAM spec_in_var ++ TYPE STRUCT1 ++ INTEGER*4 ID /8/ ! { dg-error "Invalid old style initialization" } ++ INTEGER*4 TYPE /5/ ! { dg-error "Invalid old style initialization" } ++ INTEGER*8 DEFVAL /0/ ! { dg-error "Invalid old style initialization" } ++ CHARACTER*(5) NAME /'tests'/ ! { dg-error "Invalid old style initialization" } ++ LOGICAL*1 NIL /0/ ! { dg-error "Invalid old style initialization" } ++ END TYPE STRUCT1 ++ ++ TYPE (STRUCT1) SINST ++ ++ IF(SINST%ID.NE.8) STOP 1 ! { dg-error "'id' at \\(1\\) is not a member" } ++ IF(SINST%TYPE.NE.5) STOP 2 ! { dg-error "'type' at \\(1\\) is not a member" } ++ IF(SINST%DEFVAL.NE.0) STOP 3 ! { dg-error "'defval' at \\(1\\) is not a member" } ++ IF(SINST%NAME.NE.'tests') STOP 4 ! { dg-error "'name' at \\(1\\) is not a member" } ++ IF(SINST%NIL) STOP 5 ! { dg-error "'nil' at \\(1\\) is not a member" } ++ END +-- +2.27.0 + diff --git a/gcc11-fortran-fdec-override-kind.patch b/gcc11-fortran-fdec-override-kind.patch new file mode 100644 index 0000000..e1c7b83 --- /dev/null +++ b/gcc11-fortran-fdec-override-kind.patch @@ -0,0 +1,588 @@ +From 786869fd62813e80da9b6545a295d53c36275c19 Mon Sep 17 00:00:00 2001 +From: Mark Eggleston +Date: Fri, 22 Jan 2021 13:12:14 +0000 +Subject: [PATCH 06/10] Allow string length and kind to be specified on a per + variable basis. + +This allows kind/length to be mixed with array specification in +declarations. + +e.g. + + INTEGER*4 x*2, y*8 + CHARACTER names*20(10) + REAL v(100)*8, vv*4(50) + +The per-variable size overrides the kind or length specified for the type. + +Use -fdec-override-kind to enable. Also enabled by -fdec. + +Note: this feature is a merger of two previously separate features. + +Now accepts named constants as kind parameters: + + INTEGER A + PARAMETER (A=2) + INTEGER B*(A) + +Contributed by Mark Eggleston + +Now rejects invalid kind parameters and prints error messages: + + INTEGER X*3 + +caused an internal compiler error. + +Contributed by Mark Eggleston +--- + gcc/fortran/decl.c | 156 ++++++++++++++---- + gcc/fortran/lang.opt | 4 + + gcc/fortran/options.c | 1 + + .../dec_mixed_char_array_declaration_1.f | 13 ++ + .../dec_mixed_char_array_declaration_2.f | 13 ++ + .../dec_mixed_char_array_declaration_3.f | 13 ++ + .../gfortran.dg/dec_spec_in_variable_1.f | 31 ++++ + .../gfortran.dg/dec_spec_in_variable_2.f | 31 ++++ + .../gfortran.dg/dec_spec_in_variable_3.f | 31 ++++ + .../gfortran.dg/dec_spec_in_variable_4.f | 14 ++ + .../gfortran.dg/dec_spec_in_variable_5.f | 19 +++ + .../gfortran.dg/dec_spec_in_variable_6.f | 19 +++ + .../gfortran.dg/dec_spec_in_variable_7.f | 15 ++ + .../gfortran.dg/dec_spec_in_variable_8.f | 14 ++ + 14 files changed, 340 insertions(+), 34 deletions(-) + create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f + +diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c +index 5c8c1b7981b..f7dc9d8263d 100644 +--- a/gcc/fortran/decl.c ++++ b/gcc/fortran/decl.c +@@ -1213,6 +1213,54 @@ syntax: + return MATCH_ERROR; + } + ++/* This matches the nonstandard kind given after a variable name, like: ++ INTEGER x*2, y*4 ++ The per-variable kind will override any kind given in the type ++ declaration. ++*/ ++ ++static match ++match_per_symbol_kind (int *length) ++{ ++ match m; ++ gfc_expr *expr = NULL; ++ ++ m = gfc_match_char ('*'); ++ if (m != MATCH_YES) ++ return m; ++ ++ m = gfc_match_small_literal_int (length, NULL); ++ if (m == MATCH_YES || m == MATCH_ERROR) ++ return m; ++ ++ if (gfc_match_char ('(') == MATCH_NO) ++ return MATCH_ERROR; ++ ++ m = gfc_match_expr (&expr); ++ if (m == MATCH_YES) ++ { ++ m = MATCH_ERROR; // Assume error ++ if (gfc_expr_check_typed (expr, gfc_current_ns, false)) ++ { ++ if ((expr->expr_type == EXPR_CONSTANT) ++ && (expr->ts.type == BT_INTEGER)) ++ { ++ *length = mpz_get_si(expr->value.integer); ++ m = MATCH_YES; ++ } ++ } ++ ++ if (m == MATCH_YES) ++ { ++ if (gfc_match_char (')') == MATCH_NO) ++ m = MATCH_ERROR; ++ } ++ } ++ ++ if (expr != NULL) ++ gfc_free_expr (expr); ++ return m; ++} + + /* Special subroutine for finding a symbol. Check if the name is found + in the current name space. If not, and we're compiling a function or +@@ -2443,6 +2491,35 @@ check_function_name (char *name) + } + + ++static match ++match_character_length_clause (gfc_charlen **cl, bool *cl_deferred, int elem) ++{ ++ gfc_expr* char_len; ++ char_len = NULL; ++ ++ match m = match_char_length (&char_len, cl_deferred, false); ++ if (m == MATCH_YES) ++ { ++ *cl = gfc_new_charlen (gfc_current_ns, NULL); ++ (*cl)->length = char_len; ++ } ++ else if (m == MATCH_NO) ++ { ++ if (elem > 1 ++ && (current_ts.u.cl->length == NULL ++ || current_ts.u.cl->length->expr_type != EXPR_CONSTANT)) ++ { ++ *cl = gfc_new_charlen (gfc_current_ns, NULL); ++ (*cl)->length = gfc_copy_expr (current_ts.u.cl->length); ++ } ++ else ++ *cl = current_ts.u.cl; ++ ++ *cl_deferred = current_ts.deferred; ++ } ++ return m; ++} ++ + /* Match a variable name with an optional initializer. When this + subroutine is called, a variable is expected to be parsed next. + Depending on what is happening at the moment, updates either the +@@ -2453,7 +2530,7 @@ variable_decl (int elem) + { + char name[GFC_MAX_SYMBOL_LEN + 1]; + static unsigned int fill_id = 0; +- gfc_expr *initializer, *char_len; ++ gfc_expr *initializer; + gfc_array_spec *as; + gfc_array_spec *cp_as; /* Extra copy for Cray Pointees. */ + gfc_charlen *cl; +@@ -2462,11 +2539,15 @@ variable_decl (int elem) + match m; + bool t; + gfc_symbol *sym; ++ match cl_match; ++ match kind_match; ++ int overridden_kind; + char c; + + initializer = NULL; + as = NULL; + cp_as = NULL; ++ kind_match = MATCH_NO; + + /* When we get here, we've just matched a list of attributes and + maybe a type and a double colon. The next thing we expect to see +@@ -2519,6 +2600,28 @@ variable_decl (int elem) + + var_locus = gfc_current_locus; + ++ ++ cl = NULL; ++ cl_deferred = false; ++ cl_match = MATCH_NO; ++ ++ /* Check for a character length clause before an array clause */ ++ if (flag_dec_override_kind) ++ { ++ if (current_ts.type == BT_CHARACTER) ++ { ++ cl_match = match_character_length_clause (&cl, &cl_deferred, elem); ++ if (cl_match == MATCH_ERROR) ++ goto cleanup; ++ } ++ else ++ { ++ kind_match = match_per_symbol_kind (&overridden_kind); ++ if (kind_match == MATCH_ERROR) ++ goto cleanup; ++ } ++ } ++ + /* Now we could see the optional array spec. or character length. */ + m = gfc_match_array_spec (&as, true, true); + if (m == MATCH_ERROR) +@@ -2667,40 +2770,12 @@ variable_decl (int elem) + } + } + +- char_len = NULL; +- cl = NULL; +- cl_deferred = false; +- +- if (current_ts.type == BT_CHARACTER) ++ /* Second chance for a character length clause */ ++ if (cl_match == MATCH_NO && current_ts.type == BT_CHARACTER) + { +- switch (match_char_length (&char_len, &cl_deferred, false)) +- { +- case MATCH_YES: +- cl = gfc_new_charlen (gfc_current_ns, NULL); +- +- cl->length = char_len; +- break; +- +- /* Non-constant lengths need to be copied after the first +- element. Also copy assumed lengths. */ +- case MATCH_NO: +- if (elem > 1 +- && (current_ts.u.cl->length == NULL +- || current_ts.u.cl->length->expr_type != EXPR_CONSTANT)) +- { +- cl = gfc_new_charlen (gfc_current_ns, NULL); +- cl->length = gfc_copy_expr (current_ts.u.cl->length); +- } +- else +- cl = current_ts.u.cl; +- +- cl_deferred = current_ts.deferred; +- +- break; +- +- case MATCH_ERROR: +- goto cleanup; +- } ++ m = match_character_length_clause (&cl, &cl_deferred, elem); ++ if (m == MATCH_ERROR) ++ goto cleanup; + } + + /* The dummy arguments and result of the abreviated form of MODULE +@@ -2802,6 +2877,19 @@ variable_decl (int elem) + goto cleanup; + } + ++ if (kind_match == MATCH_YES) ++ { ++ gfc_find_symbol (name, gfc_current_ns, 1, &sym); ++ /* sym *must* be found at this point */ ++ sym->ts.kind = overridden_kind; ++ if (gfc_validate_kind (sym->ts.type, sym->ts.kind, true) < 0) ++ { ++ gfc_error ("Kind %d not supported for type %s at %C", ++ sym->ts.kind, gfc_basic_typename (sym->ts.type)); ++ return MATCH_ERROR; ++ } ++ } ++ + if (!check_function_name (name)) + { + m = MATCH_ERROR; +diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt +index 25cc948699b..4a269ebb22d 100644 +--- a/gcc/fortran/lang.opt ++++ b/gcc/fortran/lang.opt +@@ -493,6 +493,10 @@ fdec-non-integer-index + Fortran Var(flag_dec_non_integer_index) + Enable support for non-integer substring indexes. + ++fdec-override-kind ++Fortran Var(flag_dec_override_kind) ++Enable support for per variable kind specification. ++ + fdec-old-init + Fortran Var(flag_dec_old_init) + Enable support for old style initializers in derived types. +diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +index d6bd36c3a8a..edbab483b36 100644 +--- a/gcc/fortran/options.c ++++ b/gcc/fortran/options.c +@@ -80,6 +80,7 @@ set_dec_flags (int value) + SET_BITFLAG (flag_dec_duplicates, value, value); + SET_BITFLAG (flag_dec_non_integer_index, value, value); + SET_BITFLAG (flag_dec_old_init, value, value); ++ SET_BITFLAG (flag_dec_override_kind, value, value); + } + + /* Finalize DEC flags. */ +diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f +new file mode 100644 +index 00000000000..706ea4112a4 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f +@@ -0,0 +1,13 @@ ++! { dg-do run } ++! { dg-options "-fdec" } ++! ++! Test character declaration with mixed string length and array specification ++! ++! Contributed by Jim MacArthur ++! Modified by Mark Eggleston ++! ++ PROGRAM character_declaration ++ CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/ ++ CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/ ++ if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1 ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f +new file mode 100644 +index 00000000000..26d2acf01de +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f +@@ -0,0 +1,13 @@ ++! { dg-do run } ++! { dg-options "-fdec-override-kind" } ++! ++! Test character declaration with mixed string length and array specification ++! ++! Contributed by Jim MacArthur ++! Modified by Mark Eggleston ++! ++ PROGRAM character_declaration ++ CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/ ++ CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/ ++ if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1 ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f +new file mode 100644 +index 00000000000..76e4f0bdb93 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f +@@ -0,0 +1,13 @@ ++! { dg-do compile } ++! { dg-options "-fdec-override-kind -fno-dec-override-kind" } ++! ++! Test character declaration with mixed string length and array specification ++! ++! Contributed by Jim MacArthur ++! Modified by Mark Eggleston ++! ++ PROGRAM character_declaration ++ CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/ ! { dg-error "Syntax error" } ++ CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/ ++ if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1 ! { dg-error " Operands of comparison operator" } ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f +new file mode 100644 +index 00000000000..edd0f5874b7 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f +@@ -0,0 +1,31 @@ ++! { dg-do run } ++! { dg-options "-fdec" } ++! ++! Test kind specification in variable not in type ++! ++! Contributed by Mark Eggleston ++! ++ program spec_in_var ++ integer*8 ai*1, bi*4, ci ++ real*4 ar*4, br*8, cr ++ ++ ai = 1 ++ ar = 1.0 ++ bi = 2 ++ br = 2.0 ++ ci = 3 ++ cr = 3.0 ++ ++ if (ai .ne. 1) stop 1 ++ if (abs(ar - 1.0) > 1.0D-6) stop 2 ++ if (bi .ne. 2) stop 3 ++ if (abs(br - 2.0) > 1.0D-6) stop 4 ++ if (ci .ne. 3) stop 5 ++ if (abs(cr - 3.0) > 1.0D-6) stop 6 ++ if (kind(ai) .ne. 1) stop 7 ++ if (kind(ar) .ne. 4) stop 8 ++ if (kind(bi) .ne. 4) stop 9 ++ if (kind(br) .ne. 8) stop 10 ++ if (kind(ci) .ne. 8) stop 11 ++ if (kind(cr) .ne. 4) stop 12 ++ end +diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f +new file mode 100644 +index 00000000000..bfaba584dbb +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f +@@ -0,0 +1,31 @@ ++! { dg-do run } ++! { dg-options "-fdec-override-kind" } ++! ++! Test kind specification in variable not in type ++! ++! Contributed by Mark Eggleston ++! ++ program spec_in_var ++ integer*8 ai*1, bi*4, ci ++ real*4 ar*4, br*8, cr ++ ++ ai = 1 ++ ar = 1.0 ++ bi = 2 ++ br = 2.0 ++ ci = 3 ++ cr = 3.0 ++ ++ if (ai .ne. 1) stop 1 ++ if (abs(ar - 1.0) > 1.0D-6) stop 2 ++ if (bi .ne. 2) stop 3 ++ if (abs(br - 2.0) > 1.0D-6) stop 4 ++ if (ci .ne. 3) stop 5 ++ if (abs(cr - 3.0) > 1.0D-6) stop 6 ++ if (kind(ai) .ne. 1) stop 7 ++ if (kind(ar) .ne. 4) stop 8 ++ if (kind(bi) .ne. 4) stop 9 ++ if (kind(br) .ne. 8) stop 10 ++ if (kind(ci) .ne. 8) stop 11 ++ if (kind(cr) .ne. 4) stop 12 ++ end +diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f +new file mode 100644 +index 00000000000..5ff434e7466 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f +@@ -0,0 +1,31 @@ ++! { dg-do compile } ++! { dg-options "-fdec -fno-dec-override-kind" } ++! ++! Test kind specification in variable not in type ++! ++! Contributed by Mark Eggleston ++! ++ program spec_in_var ++ integer*8 ai*1, bi*4, ci ! { dg-error "Syntax error" } ++ real*4 ar*4, br*8, cr ! { dg-error "Syntax error" } ++ ++ ai = 1 ++ ar = 1.0 ++ bi = 2 ++ br = 2.0 ++ ci = 3 ++ cr = 3.0 ++ ++ if (ai .ne. 1) stop 1 ++ if (abs(ar - 1.0) > 1.0D-6) stop 2 ++ if (bi .ne. 2) stop 3 ++ if (abs(br - 2.0) > 1.0D-6) stop 4 ++ if (ci .ne. 3) stop 5 ++ if (abs(cr - 3.0) > 1.0D-6) stop 6 ++ if (kind(ai) .ne. 1) stop 7 ++ if (kind(ar) .ne. 4) stop 8 ++ if (kind(bi) .ne. 4) stop 9 ++ if (kind(br) .ne. 8) stop 10 ++ if (kind(ci) .ne. 8) stop 11 ++ if (kind(cr) .ne. 4) stop 12 ++ end +diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f +new file mode 100644 +index 00000000000..c01980e8b9d +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f +@@ -0,0 +1,14 @@ ++! { dg-do compile } ++! ++! Test kind specification in variable not in type. The per variable ++! kind specification is not enabled so these should fail ++! ++! Contributed by Mark Eggleston ++! ++ program spec_in_var ++ integer a ++ parameter(a=2) ++ integer b*(a) ! { dg-error "Syntax error" } ++ real c*(8) ! { dg-error "Syntax error" } ++ logical d*1_1 ! { dg-error "Syntax error" } ++ end +diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f +new file mode 100644 +index 00000000000..e2f39da3f4f +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f +@@ -0,0 +1,19 @@ ++! { dg-do run } ++! { dg-options "-fdec-override-kind" } ++! ++! Test kind specification in variable not in type ++! ++! Contributed by Mark Eggleston ++! ++ program spec_in_var ++ integer a ++ parameter(a=2) ++ integer b*(a) ++ real c*(8) ++ logical d*(1_1) ++ character e*(a) ++ if (kind(b).ne.2) stop 1 ++ if (kind(c).ne.8) stop 2 ++ if (kind(d).ne.1) stop 3 ++ if (len(e).ne.2) stop 4 ++ end +diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f +new file mode 100644 +index 00000000000..569747874e3 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f +@@ -0,0 +1,19 @@ ++! { dg-do run } ++! { dg-options "-fdec" } ++! ++! Test kind specification in variable not in type ++! ++! Contributed by Mark Eggleston ++! ++ program spec_in_var ++ integer a ++ parameter(a=2) ++ integer b*(a) ++ real c*(8) ++ logical d*(1_1) ++ character e*(a) ++ if (kind(b).ne.2) stop 1 ++ if (kind(c).ne.8) stop 2 ++ if (kind(d).ne.1) stop 3 ++ if (len(e).ne.2) stop 4 ++ end +diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f +new file mode 100644 +index 00000000000..b975bfd15c5 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f +@@ -0,0 +1,15 @@ ++! { dg-do compile } ++! { dg-options "-fdec -fno-dec-override-kind" } ++! ++! Test kind specification in variable not in type as the per variable ++! kind specification is not enables these should fail ++! ++! Contributed by Mark Eggleston ++! ++ program spec_in_var ++ integer a ++ parameter(a=2) ++ integer b*(a) ! { dg-error "Syntax error" } ++ real c*(8) ! { dg-error "Syntax error" } ++ logical d*1_1 ! { dg-error "Syntax error" } ++ end +diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f +new file mode 100644 +index 00000000000..85732e0bd85 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f +@@ -0,0 +1,14 @@ ++! { dg-do compile } ++! { dg-options "-fdec" } ++! ++! Check that invalid kind values are rejected. ++! ++! Contributed by Mark Eggleston ++! ++ program spec_in_var ++ integer a ++ parameter(a=3) ++ integer b*(a) ! { dg-error "Kind 3 not supported" } ++ real c*(78) ! { dg-error "Kind 78 not supported" } ++ logical d*(*) ! { dg-error "Invalid character" } ++ end +-- +2.27.0 + diff --git a/gcc11-fortran-fdec-promotion.patch b/gcc11-fortran-fdec-promotion.patch new file mode 100644 index 0000000..8643405 --- /dev/null +++ b/gcc11-fortran-fdec-promotion.patch @@ -0,0 +1,2093 @@ +From 7a27318818e359a277f2fa5f7dc3932d0fb950f5 Mon Sep 17 00:00:00 2001 +From: Mark Eggleston +Date: Fri, 22 Jan 2021 14:58:07 +0000 +Subject: [PATCH 08/10] Support type promotion in calls to intrinsics + +Use -fdec-promotion or -fdec to enable this feature. + +Merged 2 commits: worked on by Ben Brewer , +Francisco Redondo Marchena and +Jeff Law + +Re-worked by Mark Eggleston +--- + gcc/fortran/check.c | 71 +++++- + gcc/fortran/intrinsic.c | 5 + + gcc/fortran/iresolve.c | 91 ++++--- + gcc/fortran/lang.opt | 4 + + gcc/fortran/options.c | 1 + + gcc/fortran/simplify.c | 240 ++++++++++++++---- + ...trinsic_int_real_array_const_promotion_1.f | 18 ++ + ...trinsic_int_real_array_const_promotion_2.f | 18 ++ + ...trinsic_int_real_array_const_promotion_3.f | 18 ++ + ...dec_intrinsic_int_real_const_promotion_1.f | 90 +++++++ + ...dec_intrinsic_int_real_const_promotion_2.f | 90 +++++++ + ...dec_intrinsic_int_real_const_promotion_3.f | 92 +++++++ + .../dec_intrinsic_int_real_promotion_1.f | 130 ++++++++++ + .../dec_intrinsic_int_real_promotion_2.f | 130 ++++++++++ + .../dec_intrinsic_int_real_promotion_3.f | 130 ++++++++++ + .../dec_intrinsic_int_real_promotion_4.f | 118 +++++++++ + .../dec_intrinsic_int_real_promotion_5.f | 118 +++++++++ + .../dec_intrinsic_int_real_promotion_6.f | 118 +++++++++ + .../dec_intrinsic_int_real_promotion_7.f | 118 +++++++++ + .../gfortran.dg/dec_kind_promotion-1.f | 40 +++ + .../gfortran.dg/dec_kind_promotion-2.f | 40 +++ + .../gfortran.dg/dec_kind_promotion-3.f | 39 +++ + 22 files changed, 1639 insertions(+), 80 deletions(-) + create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_1.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_2.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_3.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_1.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_2.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_3.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_1.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_2.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_3.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_4.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_5.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_6.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_7.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_kind_promotion-1.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_kind_promotion-2.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_kind_promotion-3.f + +diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c +index 623c1cc470e..e20a834a860 100644 +--- a/gcc/fortran/check.c ++++ b/gcc/fortran/check.c +@@ -1396,12 +1396,40 @@ gfc_check_allocated (gfc_expr *array) + } + + ++/* Check function where both arguments must be real or integer ++ and warn if they are different types. */ ++ ++bool ++check_int_real_promotion (gfc_expr *a, gfc_expr *b) ++{ ++ gfc_expr *i; ++ ++ if (!int_or_real_check (a, 0)) ++ return false; ++ ++ if (!int_or_real_check (b, 1)) ++ return false; ++ ++ if (a->ts.type != b->ts.type) ++ { ++ i = (a->ts.type != BT_REAL ? a : b); ++ gfc_warning_now (OPT_Wconversion, "Conversion from INTEGER to REAL " ++ "at %L might lose precision", &i->where); ++ } ++ ++ return true; ++} ++ ++ + /* Common check function where the first argument must be real or + integer and the second argument must be the same as the first. */ + + bool + gfc_check_a_p (gfc_expr *a, gfc_expr *p) + { ++ if (flag_dec_promotion) ++ return check_int_real_promotion (a, p); ++ + if (!int_or_real_check (a, 0)) + return false; + +@@ -3724,6 +3752,41 @@ check_rest (bt type, int kind, gfc_actual_arglist *arglist) + } + + ++/* Check function where all arguments of an argument list must be real ++ or integer. */ ++ ++static bool ++check_rest_int_real (gfc_actual_arglist *arglist) ++{ ++ gfc_actual_arglist *arg, *tmp; ++ gfc_expr *x; ++ int m, n; ++ ++ if (!min_max_args (arglist)) ++ return false; ++ ++ for (arg = arglist, n=1; arg; arg = arg->next, n++) ++ { ++ x = arg->expr; ++ if (x->ts.type != BT_INTEGER && x->ts.type != BT_REAL) ++ { ++ gfc_error ("% argument of %qs intrinsic at %L must be " ++ "INTEGER or REAL", n, gfc_current_intrinsic, &x->where); ++ return false; ++ } ++ ++ for (tmp = arglist, m=1; tmp != arg; tmp = tmp->next, m++) ++ if (!gfc_check_conformance (tmp->expr, x, ++ "arguments 'a%d' and 'a%d' for " ++ "intrinsic '%s'", m, n, ++ gfc_current_intrinsic)) ++ return false; ++ } ++ ++ return true; ++} ++ ++ + bool + gfc_check_min_max (gfc_actual_arglist *arg) + { +@@ -3748,7 +3811,10 @@ gfc_check_min_max (gfc_actual_arglist *arg) + return false; + } + +- return check_rest (x->ts.type, x->ts.kind, arg); ++ if (flag_dec_promotion && x->ts.type != BT_CHARACTER) ++ return check_rest_int_real (arg); ++ else ++ return check_rest (x->ts.type, x->ts.kind, arg); + } + + +@@ -5121,6 +5187,9 @@ gfc_check_shift (gfc_expr *i, gfc_expr *shift) + bool + gfc_check_sign (gfc_expr *a, gfc_expr *b) + { ++ if (flag_dec_promotion) ++ return check_int_real_promotion (a, b); ++ + if (!int_or_real_check (a, 0)) + return false; + +diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c +index e68eff8bdbb..81b3a24c2be 100644 +--- a/gcc/fortran/intrinsic.c ++++ b/gcc/fortran/intrinsic.c +@@ -4467,6 +4467,11 @@ check_arglist (gfc_actual_arglist **ap, gfc_intrinsic_sym *sym, + if (ts.kind == 0) + ts.kind = actual->expr->ts.kind; + ++ /* If kind promotion is allowed don't check for kind if it is smaller */ ++ if (flag_dec_promotion && ts.type == BT_INTEGER) ++ if (actual->expr->ts.kind < ts.kind) ++ ts.kind = actual->expr->ts.kind; ++ + if (!gfc_compare_types (&ts, &actual->expr->ts)) + { + if (error_flag) +diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c +index e17fe45f080..b9cdaff2499 100644 +--- a/gcc/fortran/iresolve.c ++++ b/gcc/fortran/iresolve.c +@@ -817,19 +817,22 @@ gfc_resolve_dble (gfc_expr *f, gfc_expr *a) + void + gfc_resolve_dim (gfc_expr *f, gfc_expr *a, gfc_expr *p) + { +- f->ts.type = a->ts.type; + if (p != NULL) +- f->ts.kind = gfc_kind_max (a,p); +- else +- f->ts.kind = a->ts.kind; +- +- if (p != NULL && a->ts.kind != p->ts.kind) + { +- if (a->ts.kind == gfc_kind_max (a,p)) +- gfc_convert_type (p, &a->ts, 2); ++ f->ts.kind = gfc_kind_max (a,p); ++ if (a->ts.type == BT_REAL || p->ts.type == BT_REAL) ++ f->ts.type = BT_REAL; + else +- gfc_convert_type (a, &p->ts, 2); ++ f->ts.type = BT_INTEGER; ++ ++ if (a->ts.kind != f->ts.kind || a->ts.type != f->ts.type) ++ gfc_convert_type (a, &f->ts, 2); ++ ++ if (p->ts.kind != f->ts.kind || p->ts.type != f->ts.type) ++ gfc_convert_type (p, &f->ts, 2); + } ++ else ++ f->ts = a->ts; + + f->value.function.name + = gfc_get_string ("__dim_%c%d", gfc_type_letter (f->ts.type), f->ts.kind); +@@ -1606,14 +1609,17 @@ gfc_resolve_minmax (const char *name, gfc_expr *f, gfc_actual_arglist *args) + /* Find the largest type kind. */ + for (a = args->next; a; a = a->next) + { ++ if (a->expr-> ts.type == BT_REAL) ++ f->ts.type = BT_REAL; ++ + if (a->expr->ts.kind > f->ts.kind) + f->ts.kind = a->expr->ts.kind; + } + +- /* Convert all parameters to the required kind. */ ++ /* Convert all parameters to the required type and/or kind. */ + for (a = args; a; a = a->next) + { +- if (a->expr->ts.kind != f->ts.kind) ++ if (a->expr->ts.type != f->ts.type || a->expr->ts.kind != f->ts.kind) + gfc_convert_type (a->expr, &f->ts, 2); + } + +@@ -2106,19 +2112,22 @@ gfc_resolve_minval (gfc_expr *f, gfc_expr *array, gfc_expr *dim, + void + gfc_resolve_mod (gfc_expr *f, gfc_expr *a, gfc_expr *p) + { +- f->ts.type = a->ts.type; + if (p != NULL) +- f->ts.kind = gfc_kind_max (a,p); +- else +- f->ts.kind = a->ts.kind; +- +- if (p != NULL && a->ts.kind != p->ts.kind) + { +- if (a->ts.kind == gfc_kind_max (a,p)) +- gfc_convert_type (p, &a->ts, 2); ++ f->ts.kind = gfc_kind_max (a,p); ++ if (a->ts.type == BT_REAL || p->ts.type == BT_REAL) ++ f->ts.type = BT_REAL; + else +- gfc_convert_type (a, &p->ts, 2); ++ f->ts.type = BT_INTEGER; ++ ++ if (a->ts.kind != f->ts.kind || a->ts.type != f->ts.type) ++ gfc_convert_type (a, &f->ts, 2); ++ ++ if (p->ts.kind != f->ts.kind || p->ts.type != f->ts.type) ++ gfc_convert_type (p, &f->ts, 2); + } ++ else ++ f->ts = a->ts; + + f->value.function.name + = gfc_get_string ("__mod_%c%d", gfc_type_letter (f->ts.type), f->ts.kind); +@@ -2128,19 +2137,22 @@ gfc_resolve_mod (gfc_expr *f, gfc_expr *a, gfc_expr *p) + void + gfc_resolve_modulo (gfc_expr *f, gfc_expr *a, gfc_expr *p) + { +- f->ts.type = a->ts.type; + if (p != NULL) +- f->ts.kind = gfc_kind_max (a,p); +- else +- f->ts.kind = a->ts.kind; +- +- if (p != NULL && a->ts.kind != p->ts.kind) + { +- if (a->ts.kind == gfc_kind_max (a,p)) +- gfc_convert_type (p, &a->ts, 2); ++ f->ts.kind = gfc_kind_max (a,p); ++ if (a->ts.type == BT_REAL || p->ts.type == BT_REAL) ++ f->ts.type = BT_REAL; + else +- gfc_convert_type (a, &p->ts, 2); ++ f->ts.type = BT_INTEGER; ++ ++ if (a->ts.kind != f->ts.kind || a->ts.type != f->ts.type) ++ gfc_convert_type (a, &f->ts, 2); ++ ++ if (p->ts.kind != f->ts.kind || p->ts.type != f->ts.type) ++ gfc_convert_type (p, &f->ts, 2); + } ++ else ++ f->ts = a->ts; + + f->value.function.name + = gfc_get_string ("__modulo_%c%d", gfc_type_letter (f->ts.type), +@@ -2515,9 +2527,26 @@ gfc_resolve_shift (gfc_expr *f, gfc_expr *i, gfc_expr *shift ATTRIBUTE_UNUSED) + + + void +-gfc_resolve_sign (gfc_expr *f, gfc_expr *a, gfc_expr *b ATTRIBUTE_UNUSED) ++gfc_resolve_sign (gfc_expr *f, gfc_expr *a, gfc_expr *b) + { +- f->ts = a->ts; ++ if (b != NULL) ++ { ++ f->ts.kind = gfc_kind_max (a, b); ++ if (a->ts.type == BT_REAL || b->ts.type == BT_REAL) ++ f->ts.type = BT_REAL; ++ else ++ f->ts.type = BT_INTEGER; ++ ++ if (a->ts.kind != f->ts.kind || a->ts.type != f->ts.type) ++ gfc_convert_type (a, &f->ts, 2); ++ ++ if (b->ts.kind != f->ts.kind || b->ts.type != f->ts.type) ++ gfc_convert_type (b, &f->ts, 2); ++ } ++ else ++ { ++ f->ts = a->ts; ++ } + f->value.function.name + = gfc_get_string ("__sign_%c%d", gfc_type_letter (a->ts.type), a->ts.kind); + } +diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt +index d886c2f33ed..4ca2f93f2df 100644 +--- a/gcc/fortran/lang.opt ++++ b/gcc/fortran/lang.opt +@@ -505,6 +505,10 @@ fdec-old-init + Fortran Var(flag_dec_old_init) + Enable support for old style initializers in derived types. + ++fdec-promotion ++Fortran Var(flag_dec_promotion) ++Add support for type promotion in intrinsic arguments ++ + fdec-structure + Fortran Var(flag_dec_structure) + Enable support for DEC STRUCTURE/RECORD. +diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +index a946c86790a..15079c7e95a 100644 +--- a/gcc/fortran/options.c ++++ b/gcc/fortran/options.c +@@ -82,6 +82,7 @@ set_dec_flags (int value) + SET_BITFLAG (flag_dec_old_init, value, value); + SET_BITFLAG (flag_dec_override_kind, value, value); + SET_BITFLAG (flag_dec_non_logical_if, value, value); ++ SET_BITFLAG (flag_dec_promotion, value, value); + } + + /* Finalize DEC flags. */ +diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c +index 9900572424f..3419e06fec2 100644 +--- a/gcc/fortran/simplify.c ++++ b/gcc/fortran/simplify.c +@@ -2333,39 +2333,79 @@ gfc_simplify_digits (gfc_expr *x) + } + + ++/* Simplify function which sets the floating-point value of ar from ++ the value of a independently if a is integer of real. */ ++ ++static void ++simplify_int_real_promotion (const gfc_expr *a, const gfc_expr *b, mpfr_t *ar) ++{ ++ if (a->ts.type == BT_REAL) ++ { ++ mpfr_init2 (*ar, (a->ts.kind * 8)); ++ mpfr_set (*ar, a->value.real, GFC_RND_MODE); ++ } ++ else ++ { ++ mpfr_init2 (*ar, (b->ts.kind * 8)); ++ mpfr_set_z (*ar, a->value.integer, GFC_RND_MODE); ++ } ++} ++ ++ ++/* Simplify function which promotes a and b arguments from integer to real if ++ required in ar and br floating-point values. This function returns true if ++ a or b are reals and false otherwise. */ ++ ++static bool ++simplify_int_real_promotion2 (const gfc_expr *a, const gfc_expr *b, mpfr_t *ar, ++ mpfr_t *br) ++{ ++ if (a->ts.type != BT_REAL && b->ts.type != BT_REAL) ++ return false; ++ ++ simplify_int_real_promotion (a, b, ar); ++ simplify_int_real_promotion (b, a, br); ++ ++ return true; ++} ++ ++ + gfc_expr * + gfc_simplify_dim (gfc_expr *x, gfc_expr *y) + { + gfc_expr *result; + int kind; + ++ mpfr_t xr; ++ mpfr_t yr; ++ + if (x->expr_type != EXPR_CONSTANT || y->expr_type != EXPR_CONSTANT) + return NULL; + +- kind = x->ts.kind > y->ts.kind ? x->ts.kind : y->ts.kind; +- result = gfc_get_constant_expr (x->ts.type, kind, &x->where); +- +- switch (x->ts.type) ++ if ((x->ts.type != BT_REAL && x->ts.type != BT_INTEGER) ++ || (y->ts.type != BT_REAL && y->ts.type != BT_INTEGER)) + { +- case BT_INTEGER: +- if (mpz_cmp (x->value.integer, y->value.integer) > 0) +- mpz_sub (result->value.integer, x->value.integer, y->value.integer); +- else +- mpz_set_ui (result->value.integer, 0); +- +- break; +- +- case BT_REAL: +- if (mpfr_cmp (x->value.real, y->value.real) > 0) +- mpfr_sub (result->value.real, x->value.real, y->value.real, +- GFC_RND_MODE); +- else +- mpfr_set_ui (result->value.real, 0, GFC_RND_MODE); ++ gfc_internal_error ("gfc_simplify_dim(): Bad arguments"); ++ return NULL; ++ } + +- break; ++ kind = x->ts.kind > y->ts.kind ? x->ts.kind : y->ts.kind; + +- default: +- gfc_internal_error ("gfc_simplify_dim(): Bad type"); ++ if (simplify_int_real_promotion2 (x, y, &xr, &yr)) ++ { ++ result = gfc_get_constant_expr (BT_REAL, kind, &x->where); ++ if (mpfr_cmp (xr, yr) > 0) ++ mpfr_sub (result->value.real, xr, yr, GFC_RND_MODE); ++ else ++ mpfr_set_ui (result->value.real, 0, GFC_RND_MODE); ++ } ++ else ++ { ++ result = gfc_get_constant_expr (BT_INTEGER, kind, &x->where); ++ if (mpz_cmp (x->value.integer, y->value.integer) > 0) ++ mpz_sub (result->value.integer, x->value.integer, y->value.integer); ++ else ++ mpz_set_ui (result->value.integer, 0); + } + + return range_check (result, "DIM"); +@@ -4953,6 +4993,76 @@ min_max_choose (gfc_expr *arg, gfc_expr *extremum, int sign, bool back_val) + { + int ret; + ++ mpfr_t *arp; ++ mpfr_t *erp; ++ mpfr_t ar; ++ mpfr_t er; ++ ++ if (arg->ts.type != extremum->ts.type) ++ { ++ if (arg->ts.type == BT_REAL) ++ { ++ arp = &arg->value.real; ++ } ++ else ++ { ++ mpfr_init2 (ar, (arg->ts.kind * 8)); ++ mpfr_set_z (ar, arg->value.integer, GFC_RND_MODE); ++ arp = &ar; ++ } ++ ++ if (extremum->ts.type == BT_REAL) ++ { ++ erp = &extremum->value.real; ++ } ++ else ++ { ++ mpfr_init2 (er, (extremum->ts.kind * 8)); ++ mpfr_set_z (er, extremum->value.integer, GFC_RND_MODE); ++ erp = &er; ++ } ++ ++ if (mpfr_nan_p (*erp)) ++ { ++ ret = 1; ++ extremum->ts.type = arg->ts.type; ++ extremum->ts.kind = arg->ts.kind; ++ if (arg->ts.type == BT_INTEGER) ++ { ++ mpz_init2 (extremum->value.integer, (arg->ts.kind * 8)); ++ mpz_set (extremum->value.integer, arg->value.integer); ++ } ++ else ++ { ++ mpfr_init2 (extremum->value.real, (arg->ts.kind * 8)); ++ mpfr_set (extremum->value.real, *arp, GFC_RND_MODE); ++ } ++ } ++ else if (mpfr_nan_p (*arp)) ++ ret = -1; ++ else ++ { ++ ret = mpfr_cmp (*arp, *erp) * sign; ++ if (ret > 0) ++ { ++ extremum->ts.type = arg->ts.type; ++ extremum->ts.kind = arg->ts.kind; ++ if (arg->ts.type == BT_INTEGER) ++ { ++ mpz_init2 (extremum->value.integer, (arg->ts.kind * 8)); ++ mpz_set (extremum->value.integer, arg->value.integer); ++ } ++ else ++ { ++ mpfr_init2 (extremum->value.real, (arg->ts.kind * 8)); ++ mpfr_set (extremum->value.real, *arp, GFC_RND_MODE); ++ } ++ } ++ } ++ ++ return ret; ++ } ++ + switch (arg->ts.type) + { + case BT_INTEGER: +@@ -5912,7 +6022,9 @@ gfc_simplify_mod (gfc_expr *a, gfc_expr *p) + gfc_expr *result; + int kind; + +- /* First check p. */ ++ mpfr_t ar; ++ mpfr_t pr; ++ + if (p->expr_type != EXPR_CONSTANT) + return NULL; + +@@ -5942,16 +6054,24 @@ gfc_simplify_mod (gfc_expr *a, gfc_expr *p) + if (a->expr_type != EXPR_CONSTANT) + return NULL; + ++ if (a->ts.type != BT_REAL && a->ts.type != BT_INTEGER) ++ { ++ gfc_internal_error ("gfc_simplify_mod(): Bad arguments"); ++ return NULL; ++ } ++ + kind = a->ts.kind > p->ts.kind ? a->ts.kind : p->ts.kind; +- result = gfc_get_constant_expr (a->ts.type, kind, &a->where); + +- if (a->ts.type == BT_INTEGER) +- mpz_tdiv_r (result->value.integer, a->value.integer, p->value.integer); +- else ++ if (simplify_int_real_promotion2 (a, p, &ar, &pr)) + { ++ result = gfc_get_constant_expr (BT_REAL, kind, &a->where); + gfc_set_model_kind (kind); +- mpfr_fmod (result->value.real, a->value.real, p->value.real, +- GFC_RND_MODE); ++ mpfr_fmod (result->value.real, ar, pr, GFC_RND_MODE); ++ } ++ else ++ { ++ result = gfc_get_constant_expr (BT_INTEGER, kind, &a->where); ++ mpz_tdiv_r (result->value.integer, a->value.integer, p->value.integer); + } + + return range_check (result, "MOD"); +@@ -5964,7 +6084,9 @@ gfc_simplify_modulo (gfc_expr *a, gfc_expr *p) + gfc_expr *result; + int kind; + +- /* First check p. */ ++ mpfr_t ar; ++ mpfr_t pr; ++ + if (p->expr_type != EXPR_CONSTANT) + return NULL; + +@@ -5991,28 +6113,36 @@ gfc_simplify_modulo (gfc_expr *a, gfc_expr *p) + gfc_internal_error ("gfc_simplify_modulo(): Bad arguments"); + } + ++ if (a->ts.type != BT_REAL && a->ts.type != BT_INTEGER) ++ { ++ gfc_internal_error ("gfc_simplify_modulo(): Bad arguments"); ++ return NULL; ++ } ++ + if (a->expr_type != EXPR_CONSTANT) + return NULL; + + kind = a->ts.kind > p->ts.kind ? a->ts.kind : p->ts.kind; +- result = gfc_get_constant_expr (a->ts.type, kind, &a->where); + +- if (a->ts.type == BT_INTEGER) +- mpz_fdiv_r (result->value.integer, a->value.integer, p->value.integer); +- else ++ if (simplify_int_real_promotion2 (a, p, &ar, &pr)) + { ++ result = gfc_get_constant_expr (BT_REAL, kind, &a->where); + gfc_set_model_kind (kind); +- mpfr_fmod (result->value.real, a->value.real, p->value.real, +- GFC_RND_MODE); ++ mpfr_fmod (result->value.real, ar, pr, GFC_RND_MODE); + if (mpfr_cmp_ui (result->value.real, 0) != 0) +- { +- if (mpfr_signbit (a->value.real) != mpfr_signbit (p->value.real)) +- mpfr_add (result->value.real, result->value.real, p->value.real, +- GFC_RND_MODE); +- } +- else +- mpfr_copysign (result->value.real, result->value.real, +- p->value.real, GFC_RND_MODE); ++ { ++ if (mpfr_signbit (ar) != mpfr_signbit (pr)) ++ mpfr_add (result->value.real, result->value.real, pr, ++ GFC_RND_MODE); ++ } ++ else ++ mpfr_copysign (result->value.real, result->value.real, pr, ++ GFC_RND_MODE); ++ } ++ else ++ { ++ result = gfc_get_constant_expr (BT_INTEGER, kind, &a->where); ++ mpz_fdiv_r (result->value.integer, a->value.integer, p->value.integer); + } + + return range_check (result, "MODULO"); +@@ -7578,27 +7708,41 @@ gfc_expr * + gfc_simplify_sign (gfc_expr *x, gfc_expr *y) + { + gfc_expr *result; ++ bool neg; + + if (x->expr_type != EXPR_CONSTANT || y->expr_type != EXPR_CONSTANT) + return NULL; + + result = gfc_get_constant_expr (x->ts.type, x->ts.kind, &x->where); + ++ switch (y->ts.type) ++ { ++ case BT_INTEGER: ++ neg = (mpz_sgn (y->value.integer) < 0); ++ break; ++ ++ case BT_REAL: ++ neg = (mpfr_sgn (y->value.real) < 0); ++ break; ++ ++ default: ++ gfc_internal_error ("Bad type in gfc_simplify_sign"); ++ } ++ + switch (x->ts.type) + { + case BT_INTEGER: + mpz_abs (result->value.integer, x->value.integer); +- if (mpz_sgn (y->value.integer) < 0) ++ if (neg) + mpz_neg (result->value.integer, result->value.integer); + break; + + case BT_REAL: +- if (flag_sign_zero) ++ if (flag_sign_zero && y->ts.type == BT_REAL) + mpfr_copysign (result->value.real, x->value.real, y->value.real, +- GFC_RND_MODE); ++ GFC_RND_MODE); + else +- mpfr_setsign (result->value.real, x->value.real, +- mpfr_sgn (y->value.real) < 0 ? 1 : 0, GFC_RND_MODE); ++ mpfr_setsign (result->value.real, x->value.real, neg, GFC_RND_MODE); + break; + + default: +diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_1.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_1.f +new file mode 100644 +index 00000000000..25763852139 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_1.f +@@ -0,0 +1,18 @@ ++! { dg-do compile } ++! { dg-options "-fdec" } ++! ++! Test promotion between integers and reals for mod and modulo where ++! A is a constant array and P is zero. ++! ++! Compilation errors are expected ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ program promotion_int_real_array_const ++ real a(2) = mod([12, 34], 0.0)*4 ! { dg-error "shall not be zero" } ++ a = mod([12.0, 34.0], 0)*4 ! { dg-error "shall not be zero" } ++ real b(2) = modulo([12, 34], 0.0)*4 ! { dg-error "shall not be zero" } ++ b = modulo([12.0, 34.0], 0)*4 ! { dg-error "shall not be zero" } ++ end program +diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_2.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_2.f +new file mode 100644 +index 00000000000..b78a46054f4 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_2.f +@@ -0,0 +1,18 @@ ++! { dg-do compile } ++! { dg-options "-fdec-promotion" } ++! ++! Test promotion between integers and reals for mod and modulo where ++! A is a constant array and P is zero. ++! ++! Compilation errors are expected ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ program promotion_int_real_array_const ++ real a(2) = mod([12, 34], 0.0)*4 ! { dg-error "shall not be zero" } ++ a = mod([12.0, 34.0], 0)*4 ! { dg-error "shall not be zero" } ++ real b(2) = modulo([12, 34], 0.0)*4 ! { dg-error "shall not be zero" } ++ b = modulo([12.0, 34.0], 0)*4 ! { dg-error "shall not be zero" } ++ end program +diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_3.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_3.f +new file mode 100644 +index 00000000000..318ab5db97e +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_3.f +@@ -0,0 +1,18 @@ ++! { dg-do compile } ++! { dg-options "-fdec -fno-dec-promotion" } ++! ++! Test promotion between integers and reals for mod and modulo where ++! A is a constant array and P is zero. ++! ++! Compilation errors are expected ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ program promotion_int_real_array_const ++ real a(2) = mod([12, 34], 0.0)*4 ! { dg-error "'a' and 'p' arguments of 'mod'" } ++ a = mod([12.0, 34.0], 0)*4 ! { dg-error "'a' and 'p' arguments of 'mod'" } ++ real b(2) = modulo([12, 34], 0.0)*4 ! { dg-error "'a' and 'p' arguments of 'modulo'" } ++ b = modulo([12.0, 34.0], 0)*4 ! { dg-error "'a' and 'p' arguments of 'modulo'" } ++ end program +diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_1.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_1.f +new file mode 100644 +index 00000000000..27eb2582bb2 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_1.f +@@ -0,0 +1,90 @@ ++! { dg-do run } ++! { dg-options "-fdec -finit-real=snan" } ++! ++! Test promotion between integers and reals in intrinsic operations. ++! These operations are: mod, modulo, dim, sign, min, max, minloc and ++! maxloc. ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ PROGRAM promotion_int_real_const ++ ! array_nan 4th position value is NAN ++ REAL array_nan(4) ++ DATA array_nan(1)/-4.0/ ++ DATA array_nan(2)/3.0/ ++ DATA array_nan(3)/-2/ ++ ++ INTEGER m_i/0/ ++ REAL m_r/0.0/ ++ ++ INTEGER md_i/0/ ++ REAL md_r/0.0/ ++ ++ INTEGER d_i/0/ ++ REAL d_r/0.0/ ++ ++ INTEGER s_i/0/ ++ REAL s_r/0.0/ ++ ++ INTEGER mn_i/0/ ++ REAL mn_r/0.0/ ++ ++ INTEGER mx_i/0/ ++ REAL mx_r/0.0/ ++ ++ m_i = MOD(4, 3) ++ if (m_i .ne. 1) STOP 1 ++ m_r = MOD(4.0, 3.0) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 2 ++ m_r = MOD(4, 3.0) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 ++ m_r = MOD(4.0, 3) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 ++ ++ md_i = MODULO(4, 3) ++ if (md_i .ne. 1) STOP 5 ++ md_r = MODULO(4.0, 3.0) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 6 ++ md_r = MODULO(4, 3.0) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 7 ++ md_r = MODULO(4.0, 3) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 8 ++ ++ d_i = DIM(4, 3) ++ if (d_i .ne. 1) STOP 9 ++ d_r = DIM(4.0, 3.0) ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 10 ++ d_r = DIM(4.0, 3) ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 11 ++ d_r = DIM(3, 4.0) ++ if (abs(d_r) > 1.0D-6) STOP 12 ++ ++ s_i = SIGN(-4, 3) ++ if (s_i .ne. 4) STOP 13 ++ s_r = SIGN(4.0, -3.0) ++ if (abs(s_r - (-4.0)) > 1.0D-6) STOP 14 ++ s_r = SIGN(4.0, -3) ++ if (abs(s_r - (-4.0)) > 1.0D-6) STOP 15 ++ s_r = SIGN(-4, 3.0) ++ if (abs(s_r - 4.0) > 1.0D-6) STOP 16 ++ ++ mx_i = MAX(-4, -3, 2, 1) ++ if (mx_i .ne. 2) STOP 17 ++ mx_r = MAX(-4.0, -3.0, 2.0, 1.0) ++ if (abs(mx_r - 2.0) > 1.0D-6) STOP 18 ++ mx_r = MAX(-4, -3.0, 2.0, 1) ++ if (abs(mx_r - 2.0) > 1.0D-6) STOP 19 ++ mx_i = MAXLOC(array_nan, 1) ++ if (mx_i .ne. 2) STOP 20 ++ ++ mn_i = MIN(-4, -3, 2, 1) ++ if (mn_i .ne. -4) STOP 21 ++ mn_r = MIN(-4.0, -3.0, 2.0, 1.0) ++ if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 22 ++ mn_r = MIN(-4, -3.0, 2.0, 1) ++ if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 23 ++ mn_i = MINLOC(array_nan, 1) ++ if (mn_i .ne. 1) STOP 24 ++ END PROGRAM +diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_2.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_2.f +new file mode 100644 +index 00000000000..bdd017b7280 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_2.f +@@ -0,0 +1,90 @@ ++! { dg-do run } ++! { dg-options "-fdec-promotion -finit-real=snan" } ++! ++! Test promotion between integers and reals in intrinsic operations. ++! These operations are: mod, modulo, dim, sign, min, max, minloc and ++! maxloc. ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ PROGRAM promotion_int_real_const ++ ! array_nan 4th position value is NAN ++ REAL array_nan(4) ++ DATA array_nan(1)/-4.0/ ++ DATA array_nan(2)/3.0/ ++ DATA array_nan(3)/-2/ ++ ++ INTEGER m_i/0/ ++ REAL m_r/0.0/ ++ ++ INTEGER md_i/0/ ++ REAL md_r/0.0/ ++ ++ INTEGER d_i/0/ ++ REAL d_r/0.0/ ++ ++ INTEGER s_i/0/ ++ REAL s_r/0.0/ ++ ++ INTEGER mn_i/0/ ++ REAL mn_r/0.0/ ++ ++ INTEGER mx_i/0/ ++ REAL mx_r/0.0/ ++ ++ m_i = MOD(4, 3) ++ if (m_i .ne. 1) STOP 1 ++ m_r = MOD(4.0, 3.0) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 2 ++ m_r = MOD(4, 3.0) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 ++ m_r = MOD(4.0, 3) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 ++ ++ md_i = MODULO(4, 3) ++ if (md_i .ne. 1) STOP 5 ++ md_r = MODULO(4.0, 3.0) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 6 ++ md_r = MODULO(4, 3.0) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 7 ++ md_r = MODULO(4.0, 3) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 8 ++ ++ d_i = DIM(4, 3) ++ if (d_i .ne. 1) STOP 9 ++ d_r = DIM(4.0, 3.0) ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 10 ++ d_r = DIM(4.0, 3) ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 11 ++ d_r = DIM(3, 4.0) ++ if (abs(d_r) > 1.0D-6) STOP 12 ++ ++ s_i = SIGN(-4, 3) ++ if (s_i .ne. 4) STOP 13 ++ s_r = SIGN(4.0, -3.0) ++ if (abs(s_r - (-4.0)) > 1.0D-6) STOP 14 ++ s_r = SIGN(4.0, -3) ++ if (abs(s_r - (-4.0)) > 1.0D-6) STOP 15 ++ s_r = SIGN(-4, 3.0) ++ if (abs(s_r - 4.0) > 1.0D-6) STOP 16 ++ ++ mx_i = MAX(-4, -3, 2, 1) ++ if (mx_i .ne. 2) STOP 17 ++ mx_r = MAX(-4.0, -3.0, 2.0, 1.0) ++ if (abs(mx_r - 2.0) > 1.0D-6) STOP 18 ++ mx_r = MAX(-4, -3.0, 2.0, 1) ++ if (abs(mx_r - 2.0) > 1.0D-6) STOP 19 ++ mx_i = MAXLOC(array_nan, 1) ++ if (mx_i .ne. 2) STOP 20 ++ ++ mn_i = MIN(-4, -3, 2, 1) ++ if (mn_i .ne. -4) STOP 21 ++ mn_r = MIN(-4.0, -3.0, 2.0, 1.0) ++ if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 22 ++ mn_r = MIN(-4, -3.0, 2.0, 1) ++ if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 23 ++ mn_i = MINLOC(array_nan, 1) ++ if (mn_i .ne. 1) STOP 24 ++ END PROGRAM +diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_3.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_3.f +new file mode 100644 +index 00000000000..ce90a5667d6 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_3.f +@@ -0,0 +1,92 @@ ++! { dg-do compile } ++! { dg-options "-fdec -fno-dec-promotion -finit-real=snan" } ++! ++! Test that there is no promotion between integers and reals in ++! intrinsic operations. ++! ++! These operations are: mod, modulo, dim, sign, min, max, minloc and ++! maxloc. ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ PROGRAM promotion_int_real_const ++ ! array_nan 4th position value is NAN ++ REAL array_nan(4) ++ DATA array_nan(1)/-4.0/ ++ DATA array_nan(2)/3.0/ ++ DATA array_nan(3)/-2/ ++ ++ INTEGER m_i/0/ ++ REAL m_r/0.0/ ++ ++ INTEGER md_i/0/ ++ REAL md_r/0.0/ ++ ++ INTEGER d_i/0/ ++ REAL d_r/0.0/ ++ ++ INTEGER s_i/0/ ++ REAL s_r/0.0/ ++ ++ INTEGER mn_i/0/ ++ REAL mn_r/0.0/ ++ ++ INTEGER mx_i/0/ ++ REAL mx_r/0.0/ ++ ++ m_i = MOD(4, 3) ++ if (m_i .ne. 1) STOP 1 ++ m_r = MOD(4.0, 3.0) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 2 ++ m_r = MOD(4, 3.0) ! { dg-error "'a' and 'p' arguments" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 ++ m_r = MOD(4.0, 3) ! { dg-error "'a' and 'p' arguments" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 ++ ++ md_i = MODULO(4, 3) ++ if (md_i .ne. 1) STOP 5 ++ md_r = MODULO(4.0, 3.0) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 6 ++ md_r = MODULO(4, 3.0) ! { dg-error "'a' and 'p' arguments" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 7 ++ md_r = MODULO(4.0, 3) ! { dg-error "'a' and 'p' arguments" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 8 ++ ++ d_i = DIM(4, 3) ++ if (d_i .ne. 1) STOP 9 ++ d_r = DIM(4.0, 3.0) ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 10 ++ d_r = DIM(4.0, 3) ! { dg-error "'x' and 'y' arguments" } ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 11 ++ d_r = DIM(3, 4.0) ! { dg-error "'x' and 'y' arguments" } ++ if (abs(d_r) > 1.0D-6) STOP 12 ++ ++ s_i = SIGN(-4, 3) ++ if (s_i .ne. 4) STOP 13 ++ s_r = SIGN(4.0, -3.0) ++ if (abs(s_r - (-4.0)) > 1.0D-6) STOP 14 ++ s_r = SIGN(4.0, -3) ! { dg-error "'b' argument" } ++ if (abs(s_r - (-4.0)) > 1.0D-6) STOP 15 ++ s_r = SIGN(-4, 3.0) ! { dg-error "'b' argument" } ++ if (abs(s_r - 4.0) > 1.0D-6) STOP 16 ++ ++ mx_i = MAX(-4, -3, 2, 1) ++ if (mx_i .ne. 2) STOP 17 ++ mx_r = MAX(-4.0, -3.0, 2.0, 1.0) ++ if (abs(mx_r - 2.0) > 1.0D-6) STOP 18 ++ mx_r = MAX(-4, -3.0, 2.0, 1) ! { dg-error "'a2' argument" } ++ if (abs(mx_r - 2.0) > 1.0D-6) STOP 19 ++ mx_i = MAXLOC(array_nan, 1) ++ if (mx_i .ne. 2) STOP 20 ++ ++ mn_i = MIN(-4, -3, 2, 1) ++ if (mn_i .ne. -4) STOP 21 ++ mn_r = MIN(-4.0, -3.0, 2.0, 1.0) ++ if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 22 ++ mn_r = MIN(-4, -3.0, 2.0, 1) ! { dg-error "'a2' argument" } ++ if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 23 ++ mn_i = MINLOC(array_nan, 1) ++ if (mn_i .ne. 1) STOP 24 ++ END PROGRAM +diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_1.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_1.f +new file mode 100644 +index 00000000000..5c2cd931a4b +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_1.f +@@ -0,0 +1,130 @@ ++! { dg-do run } ++! { dg-options "-fdec" } ++! ++! Test promotion between integers and reals in intrinsic operations. ++! These operations are: mod, modulo, dim, sign, min, max, minloc and ++! maxloc. ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ PROGRAM promotion_int_real ++ REAL l/0.0/ ++ INTEGER a_i/4/ ++ INTEGER*4 a2_i/4/ ++ INTEGER b_i/3/ ++ INTEGER*8 b2_i/3/ ++ INTEGER x_i/2/ ++ INTEGER y_i/1/ ++ REAL a_r/4.0/ ++ REAL*4 a2_r/4.0/ ++ REAL b_r/3.0/ ++ REAL*8 b2_r/3.0/ ++ REAL x_r/2.0/ ++ REAL y_r/1.0/ ++ ++ REAL array_nan(4) ++ DATA array_nan(1)/-4.0/ ++ DATA array_nan(2)/3.0/ ++ DATA array_nan(3)/-2/ ++ ++ INTEGER m_i/0/ ++ REAL m_r/0.0/ ++ ++ INTEGER md_i/0/ ++ REAL md_r/0.0/ ++ ++ INTEGER d_i/0/ ++ REAL d_r/0.0/ ++ ++ INTEGER s_i/0/ ++ REAL s_r/0.0/ ++ ++ INTEGER mn_i/0/ ++ REAL mn_r/0.0/ ++ ++ INTEGER mx_i/0/ ++ REAL mx_r/0.0/ ++ ++ ! array_nan 4th position value is NAN ++ array_nan(4) = 0/l ++ ++ m_i = MOD(a_i, b_i) ++ if (m_i .ne. 1) STOP 1 ++ m_i = MOD(a2_i, b2_i) ++ if (m_i .ne. 1) STOP 2 ++ m_r = MOD(a_r, b_r) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 ++ m_r = MOD(a2_r, b2_r) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 ++ m_r = MOD(a_i, b_r) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 5 ++ m_r = MOD(a_r, b_i) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 6 ++ ++ md_i = MODULO(a_i, b_i) ++ if (md_i .ne. 1) STOP 7 ++ md_i = MODULO(a2_i, b2_i) ++ if (md_i .ne. 1) STOP 8 ++ md_r = MODULO(a_r, b_r) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 9 ++ md_r = MODULO(a2_r, b2_r) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 10 ++ md_r = MODULO(a_i, b_r) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 11 ++ md_r = MODULO(a_r, b_i) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 12 ++ ++ d_i = DIM(a_i, b_i) ++ if (d_i .ne. 1) STOP 13 ++ d_i = DIM(a2_i, b2_i) ++ if (d_i .ne. 1) STOP 14 ++ d_r = DIM(a_r, b_r) ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 15 ++ d_r = DIM(a2_r, b2_r) ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 16 ++ d_r = DIM(a_r, b_i) ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 17 ++ d_r = DIM(b_i, a_r) ++ if (abs(d_r) > 1.0D-6) STOP 18 ++ ++ s_i = SIGN(-a_i, b_i) ++ if (s_i .ne. 4) STOP 19 ++ s_i = SIGN(-a2_i, b2_i) ++ if (s_i .ne. 4) STOP 20 ++ s_r = SIGN(a_r, -b_r) ++ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 21 ++ s_r = SIGN(a2_r, -b2_r) ++ if (abs(s_r - (-a2_r)) > 1.0D-6) STOP 22 ++ s_r = SIGN(a_r, -b_i) ++ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 23 ++ s_r = SIGN(-a_i, b_r) ++ if (abs(s_r - a_r) > 1.0D-6) STOP 24 ++ ++ mx_i = MAX(-a_i, -b_i, x_i, y_i) ++ if (mx_i .ne. x_i) STOP 25 ++ mx_i = MAX(-a2_i, -b2_i, x_i, y_i) ++ if (mx_i .ne. x_i) STOP 26 ++ mx_r = MAX(-a_r, -b_r, x_r, y_r) ++ if (abs(mx_r - x_r) > 1.0D-6) STOP 27 ++ mx_r = MAX(-a_r, -b_r, x_r, y_r) ++ if (abs(mx_r - x_r) > 1.0D-6) STOP 28 ++ mx_r = MAX(-a_i, -b_r, x_r, y_i) ++ if (abs(mx_r - x_r) > 1.0D-6) STOP 29 ++ mx_i = MAXLOC(array_nan, 1) ++ if (mx_i .ne. 2) STOP 30 ++ ++ mn_i = MIN(-a_i, -b_i, x_i, y_i) ++ if (mn_i .ne. -a_i) STOP 31 ++ mn_i = MIN(-a2_i, -b2_i, x_i, y_i) ++ if (mn_i .ne. -a2_i) STOP 32 ++ mn_r = MIN(-a_r, -b_r, x_r, y_r) ++ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 33 ++ mn_r = MIN(-a2_r, -b2_r, x_r, y_r) ++ if (abs(mn_r - (-a2_r)) > 1.0D-6) STOP 34 ++ mn_r = MIN(-a_i, -b_r, x_r, y_i) ++ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 35 ++ mn_i = MINLOC(array_nan, 1) ++ if (mn_i .ne. 1) STOP 36 ++ END PROGRAM +diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_2.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_2.f +new file mode 100644 +index 00000000000..d64d468f7d1 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_2.f +@@ -0,0 +1,130 @@ ++! { dg-do run } ++! { dg-options "-fdec-promotion" } ++! ++! Test promotion between integers and reals in intrinsic operations. ++! These operations are: mod, modulo, dim, sign, min, max, minloc and ++! maxloc. ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ PROGRAM promotion_int_real ++ REAL l/0.0/ ++ INTEGER a_i/4/ ++ INTEGER*4 a2_i/4/ ++ INTEGER b_i/3/ ++ INTEGER*8 b2_i/3/ ++ INTEGER x_i/2/ ++ INTEGER y_i/1/ ++ REAL a_r/4.0/ ++ REAL*4 a2_r/4.0/ ++ REAL b_r/3.0/ ++ REAL*8 b2_r/3.0/ ++ REAL x_r/2.0/ ++ REAL y_r/1.0/ ++ ++ REAL array_nan(4) ++ DATA array_nan(1)/-4.0/ ++ DATA array_nan(2)/3.0/ ++ DATA array_nan(3)/-2/ ++ ++ INTEGER m_i/0/ ++ REAL m_r/0.0/ ++ ++ INTEGER md_i/0/ ++ REAL md_r/0.0/ ++ ++ INTEGER d_i/0/ ++ REAL d_r/0.0/ ++ ++ INTEGER s_i/0/ ++ REAL s_r/0.0/ ++ ++ INTEGER mn_i/0/ ++ REAL mn_r/0.0/ ++ ++ INTEGER mx_i/0/ ++ REAL mx_r/0.0/ ++ ++ ! array_nan 4th position value is NAN ++ array_nan(4) = 0/l ++ ++ m_i = MOD(a_i, b_i) ++ if (m_i .ne. 1) STOP 1 ++ m_i = MOD(a2_i, b2_i) ++ if (m_i .ne. 1) STOP 2 ++ m_r = MOD(a_r, b_r) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 ++ m_r = MOD(a2_r, b2_r) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 ++ m_r = MOD(a_i, b_r) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 5 ++ m_r = MOD(a_r, b_i) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 6 ++ ++ md_i = MODULO(a_i, b_i) ++ if (md_i .ne. 1) STOP 7 ++ md_i = MODULO(a2_i, b2_i) ++ if (md_i .ne. 1) STOP 8 ++ md_r = MODULO(a_r, b_r) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 9 ++ md_r = MODULO(a2_r, b2_r) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 10 ++ md_r = MODULO(a_i, b_r) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 11 ++ md_r = MODULO(a_r, b_i) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 12 ++ ++ d_i = DIM(a_i, b_i) ++ if (d_i .ne. 1) STOP 13 ++ d_i = DIM(a2_i, b2_i) ++ if (d_i .ne. 1) STOP 14 ++ d_r = DIM(a_r, b_r) ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 15 ++ d_r = DIM(a2_r, b2_r) ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 16 ++ d_r = DIM(a_r, b_i) ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 17 ++ d_r = DIM(b_i, a_r) ++ if (abs(d_r) > 1.0D-6) STOP 18 ++ ++ s_i = SIGN(-a_i, b_i) ++ if (s_i .ne. 4) STOP 19 ++ s_i = SIGN(-a2_i, b2_i) ++ if (s_i .ne. 4) STOP 20 ++ s_r = SIGN(a_r, -b_r) ++ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 21 ++ s_r = SIGN(a2_r, -b2_r) ++ if (abs(s_r - (-a2_r)) > 1.0D-6) STOP 22 ++ s_r = SIGN(a_r, -b_i) ++ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 23 ++ s_r = SIGN(-a_i, b_r) ++ if (abs(s_r - a_r) > 1.0D-6) STOP 24 ++ ++ mx_i = MAX(-a_i, -b_i, x_i, y_i) ++ if (mx_i .ne. x_i) STOP 25 ++ mx_i = MAX(-a2_i, -b2_i, x_i, y_i) ++ if (mx_i .ne. x_i) STOP 26 ++ mx_r = MAX(-a_r, -b_r, x_r, y_r) ++ if (abs(mx_r - x_r) > 1.0D-6) STOP 27 ++ mx_r = MAX(-a_r, -b_r, x_r, y_r) ++ if (abs(mx_r - x_r) > 1.0D-6) STOP 28 ++ mx_r = MAX(-a_i, -b_r, x_r, y_i) ++ if (abs(mx_r - x_r) > 1.0D-6) STOP 29 ++ mx_i = MAXLOC(array_nan, 1) ++ if (mx_i .ne. 2) STOP 30 ++ ++ mn_i = MIN(-a_i, -b_i, x_i, y_i) ++ if (mn_i .ne. -a_i) STOP 31 ++ mn_i = MIN(-a2_i, -b2_i, x_i, y_i) ++ if (mn_i .ne. -a2_i) STOP 32 ++ mn_r = MIN(-a_r, -b_r, x_r, y_r) ++ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 33 ++ mn_r = MIN(-a2_r, -b2_r, x_r, y_r) ++ if (abs(mn_r - (-a2_r)) > 1.0D-6) STOP 34 ++ mn_r = MIN(-a_i, -b_r, x_r, y_i) ++ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 35 ++ mn_i = MINLOC(array_nan, 1) ++ if (mn_i .ne. 1) STOP 36 ++ END PROGRAM +diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_3.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_3.f +new file mode 100644 +index 00000000000..0708b666633 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_3.f +@@ -0,0 +1,130 @@ ++! { dg-do compile } ++! { dg-options "-fdec -fno-dec-promotion" } ++! ++! Test promotion between integers and reals in intrinsic operations. ++! These operations are: mod, modulo, dim, sign, min, max, minloc and ++! maxloc. ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ PROGRAM promotion_int_real ++ REAL l/0.0/ ++ INTEGER a_i/4/ ++ INTEGER*4 a2_i/4/ ++ INTEGER b_i/3/ ++ INTEGER*8 b2_i/3/ ++ INTEGER x_i/2/ ++ INTEGER y_i/1/ ++ REAL a_r/4.0/ ++ REAL*4 a2_r/4.0/ ++ REAL b_r/3.0/ ++ REAL*8 b2_r/3.0/ ++ REAL x_r/2.0/ ++ REAL y_r/1.0/ ++ ++ REAL array_nan(4) ++ DATA array_nan(1)/-4.0/ ++ DATA array_nan(2)/3.0/ ++ DATA array_nan(3)/-2/ ++ ++ INTEGER m_i/0/ ++ REAL m_r/0.0/ ++ ++ INTEGER md_i/0/ ++ REAL md_r/0.0/ ++ ++ INTEGER d_i/0/ ++ REAL d_r/0.0/ ++ ++ INTEGER s_i/0/ ++ REAL s_r/0.0/ ++ ++ INTEGER mn_i/0/ ++ REAL mn_r/0.0/ ++ ++ INTEGER mx_i/0/ ++ REAL mx_r/0.0/ ++ ++ ! array_nan 4th position value is NAN ++ array_nan(4) = 0/l ++ ++ m_i = MOD(a_i, b_i) ++ if (m_i .ne. 1) STOP 1 ++ m_i = MOD(a2_i, b2_i) ++ if (m_i .ne. 1) STOP 2 ++ m_r = MOD(a_r, b_r) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 ++ m_r = MOD(a2_r, b2_r) ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 ++ m_r = MOD(a_i, b_r) ! { dg-error "'a' and 'p' arguments" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 5 ++ m_r = MOD(a_r, b_i) ! { dg-error "'a' and 'p' arguments" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 6 ++ ++ md_i = MODULO(a_i, b_i) ++ if (md_i .ne. 1) STOP 7 ++ md_i = MODULO(a2_i, b2_i) ++ if (md_i .ne. 1) STOP 8 ++ md_r = MODULO(a_r, b_r) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 9 ++ md_r = MODULO(a2_r, b2_r) ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 10 ++ md_r = MODULO(a_i, b_r) ! { dg-error "'a' and 'p' arguments" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 11 ++ md_r = MODULO(a_r, b_i) ! { dg-error "'a' and 'p' arguments" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 12 ++ ++ d_i = DIM(a_i, b_i) ++ if (d_i .ne. 1) STOP 13 ++ d_i = DIM(a2_i, b2_i) ++ if (d_i .ne. 1) STOP 14 ++ d_r = DIM(a_r, b_r) ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 15 ++ d_r = DIM(a2_r, b2_r) ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 16 ++ d_r = DIM(a_r, b_i) ! { dg-error "'x' and 'y' arguments" } ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 17 ++ d_r = DIM(b_i, a_r) ! { dg-error "'x' and 'y' arguments" } ++ if (abs(d_r) > 1.0D-6) STOP 18 ++ ++ s_i = SIGN(-a_i, b_i) ++ if (s_i .ne. 4) STOP 19 ++ s_i = SIGN(-a2_i, b2_i) ! { dg-error "'b' argument" } ++ if (s_i .ne. 4) STOP 20 ++ s_r = SIGN(a_r, -b_r) ++ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 21 ++ s_r = SIGN(a2_r, -b2_r) ! { dg-error "'b' argument" } ++ if (abs(s_r - (-a2_r)) > 1.0D-6) STOP 22 ++ s_r = SIGN(a_r, -b_i) ! { dg-error "'b' argument" } ++ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 23 ++ s_r = SIGN(-a_i, b_r) ! { dg-error "'b' argument" } ++ if (abs(s_r - a_r) > 1.0D-6) STOP 24 ++ ++ mx_i = MAX(-a_i, -b_i, x_i, y_i) ++ if (mx_i .ne. x_i) STOP 25 ++ mx_i = MAX(-a2_i, -b2_i, x_i, y_i) ++ if (mx_i .ne. x_i) STOP 26 ++ mx_r = MAX(-a_r, -b_r, x_r, y_r) ++ if (abs(mx_r - x_r) > 1.0D-6) STOP 27 ++ mx_r = MAX(-a_r, -b_r, x_r, y_r) ++ if (abs(mx_r - x_r) > 1.0D-6) STOP 28 ++ mx_r = MAX(-a_i, -b_r, x_r, y_i) ! { dg-error "'a2' argument" } ++ if (abs(mx_r - x_r) > 1.0D-6) STOP 29 ++ mx_i = MAXLOC(array_nan, 1) ++ if (mx_i .ne. 2) STOP 30 ++ ++ mn_i = MIN(-a_i, -b_i, x_i, y_i) ++ if (mn_i .ne. -a_i) STOP 31 ++ mn_i = MIN(-a2_i, -b2_i, x_i, y_i) ++ if (mn_i .ne. -a2_i) STOP 32 ++ mn_r = MIN(-a_r, -b_r, x_r, y_r) ++ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 33 ++ mn_r = MIN(-a2_r, -b2_r, x_r, y_r) ++ if (abs(mn_r - (-a2_r)) > 1.0D-6) STOP 34 ++ mn_r = MIN(-a_i, -b_r, x_r, y_i) ! { dg-error "'a2' argument" } ++ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 35 ++ mn_i = MINLOC(array_nan, 1) ++ if (mn_i .ne. 1) STOP 36 ++ END PROGRAM +diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_4.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_4.f +new file mode 100644 +index 00000000000..efa4f236410 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_4.f +@@ -0,0 +1,118 @@ ++! { dg-do compile } ++! { dg-options "-fdec" } ++! ++! Test promotion between integers and reals in intrinsic operations. ++! These operations are: mod, modulo, dim, sign, min, max, minloc and ++! maxloc. ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ PROGRAM promotion_int_real ++ REAL l/0.0/ ++ LOGICAL a_l ++ LOGICAL*4 a2_l ++ LOGICAL b_l ++ LOGICAL*8 b2_l ++ LOGICAL x_l ++ LOGICAL y_l ++ CHARACTER a_c ++ CHARACTER*4 a2_c ++ CHARACTER b_c ++ CHARACTER*8 b2_c ++ CHARACTER x_c ++ CHARACTER y_c ++ ++ INTEGER m_i/0/ ++ REAL m_r/0.0/ ++ ++ INTEGER md_i/0/ ++ REAL md_r/0.0/ ++ ++ INTEGER d_i/0/ ++ REAL d_r/0.0/ ++ ++ INTEGER s_i/0/ ++ REAL s_r/0.0/ ++ ++ INTEGER mn_i/0/ ++ REAL mn_r/0.0/ ++ ++ INTEGER mx_i/0/ ++ REAL mx_r/0.0/ ++ ++ m_i = MOD(a_l, b_l) ! { dg-error "" } ++ if (m_i .ne. 1) STOP 1 ++ m_i = MOD(a2_l, b2_l) ! { dg-error "" } ++ if (m_i .ne. 1) STOP 2 ++ m_r = MOD(a_c, b_c) ! { dg-error "" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 ++ m_r = MOD(a2_c, b2_c) ! { dg-error "" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 ++ m_r = MOD(a_l, b_c) ! { dg-error "" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 5 ++ m_r = MOD(a_c, b_l) ! { dg-error "" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 6 ++ ++ md_i = MODULO(a_l, b_l) ! { dg-error "" } ++ if (md_i .ne. 1) STOP 7 ++ md_i = MODULO(a2_l, b2_l) ! { dg-error "" } ++ if (md_i .ne. 1) STOP 8 ++ md_r = MODULO(a_c, b_c) ! { dg-error "" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 9 ++ md_r = MODULO(a2_c, b2_c) ! { dg-error "" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 10 ++ md_r = MODULO(a_l, b_c) ! { dg-error "" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 11 ++ md_r = MODULO(a_c, b_l) ! { dg-error "" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 12 ++ ++ d_i = DIM(a_l, b_l) ! { dg-error "" } ++ if (d_i .ne. 1) STOP 13 ++ d_i = DIM(a2_l, b2_l) ! { dg-error "" } ++ if (d_i .ne. 1) STOP 14 ++ d_r = DIM(a_c, b_c) ! { dg-error "" } ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 15 ++ d_r = DIM(a2_c, b2_c) ! { dg-error "" } ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 16 ++ d_r = DIM(a_c, b_l) ! { dg-error "" } ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 17 ++ d_r = DIM(b_l, a_c) ! { dg-error "" } ++ if (abs(d_r) > 1.0D-6) STOP 18 ++ ++ s_i = SIGN(-a_l, b_l) ! { dg-error "" } ++ if (s_i .ne. 4) STOP 19 ++ s_i = SIGN(-a2_l, b2_l) ! { dg-error "" } ++ if (s_i .ne. 4) STOP 20 ++ s_r = SIGN(a_c, -b_c) ! { dg-error "" } ++ if (abs(s_r - (-a_c)) > 1.0D-6) STOP 21 ! { dg-error "" } ++ s_r = SIGN(a2_c, -b2_c) ! { dg-error "" } ++ if (abs(s_r - (-a2_c)) > 1.0D-6) STOP 22 ! { dg-error "" } ++ s_r = SIGN(a_c, -b_l) ! { dg-error "" } ++ if (abs(s_r - (-a_c)) > 1.0D-6) STOP 23 ! { dg-error "" } ++ s_r = SIGN(-a_l, b_c) ! { dg-error "" } ++ if (abs(s_r - a_c) > 1.0D-6) STOP 24 ! { dg-error "" } ++ ++ mx_i = MAX(-a_l, -b_l, x_l, y_l) ! { dg-error "" } ++ if (mx_i .ne. x_l) STOP 25 ! { dg-error "" } ++ mx_i = MAX(-a2_l, -b2_l, x_l, y_l) ! { dg-error "" } ++ if (mx_i .ne. x_l) STOP 26 ! { dg-error "" } ++ mx_r = MAX(-a_c, -b_c, x_c, y_c) ! { dg-error "" } ++ if (abs(mx_r - x_c) > 1.0D-6) STOP 27 ! { dg-error "" } ++ mx_r = MAX(-a_c, -b_c, x_c, y_c) ! { dg-error "" } ++ if (abs(mx_r - x_c) > 1.0D-6) STOP 28 ! { dg-error "" } ++ mx_r = MAX(-a_l, -b_c, x_c, y_l) ! { dg-error "" } ++ if (abs(mx_r - x_c) > 1.0D-6) STOP 29 ! { dg-error "" } ++ ++ mn_i = MIN(-a_l, -b_l, x_l, y_l) ! { dg-error "" } ++ if (mn_i .ne. -a_l) STOP 31 ! { dg-error "" } ++ mn_i = MIN(-a2_l, -b2_l, x_l, y_l) ! { dg-error "" } ++ if (mn_i .ne. -a2_l) STOP 32 ! { dg-error "" } ++ mn_r = MIN(-a_c, -b_c, x_c, y_c) ! { dg-error "" } ++ if (abs(mn_r - (-a_c)) > 1.0D-6) STOP 33 ! { dg-error "" } ++ mn_r = MIN(-a2_c, -b2_c, x_c, y_c) ! { dg-error "" } ++ if (abs(mn_r - (-a2_c)) > 1.0D-6) STOP 34 ! { dg-error "" } ++ mn_r = MIN(-a_l, -b_c, x_c, y_l) ! { dg-error "" } ++ if (abs(mn_r - (-a_c)) > 1.0D-6) STOP 35 ! { dg-error "" } ++ END PROGRAM +diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_5.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_5.f +new file mode 100644 +index 00000000000..d023af5086d +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_5.f +@@ -0,0 +1,118 @@ ++! { dg-do compile } ++! { dg-options "-fdec-promotion" } ++! ++! Test promotion between integers and reals in intrinsic operations. ++! These operations are: mod, modulo, dim, sign, min, max, minloc and ++! maxloc. ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ PROGRAM promotion_int_real ++ REAL l/0.0/ ++ LOGICAL a_l ++ LOGICAL*4 a2_l ++ LOGICAL b_l ++ LOGICAL*8 b2_l ++ LOGICAL x_l ++ LOGICAL y_l ++ CHARACTER a_c ++ CHARACTER*4 a2_c ++ CHARACTER b_c ++ CHARACTER*8 b2_c ++ CHARACTER x_c ++ CHARACTER y_c ++ ++ INTEGER m_i/0/ ++ REAL m_r/0.0/ ++ ++ INTEGER md_i/0/ ++ REAL md_r/0.0/ ++ ++ INTEGER d_i/0/ ++ REAL d_r/0.0/ ++ ++ INTEGER s_i/0/ ++ REAL s_r/0.0/ ++ ++ INTEGER mn_i/0/ ++ REAL mn_r/0.0/ ++ ++ INTEGER mx_i/0/ ++ REAL mx_r/0.0/ ++ ++ m_i = MOD(a_l, b_l) ! { dg-error "" } ++ if (m_i .ne. 1) STOP 1 ++ m_i = MOD(a2_l, b2_l) ! { dg-error "" } ++ if (m_i .ne. 1) STOP 2 ++ m_r = MOD(a_c, b_c) ! { dg-error "" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 ++ m_r = MOD(a2_c, b2_c) ! { dg-error "" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 ++ m_r = MOD(a_l, b_c) ! { dg-error "" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 5 ++ m_r = MOD(a_c, b_l) ! { dg-error "" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 6 ++ ++ md_i = MODULO(a_l, b_l) ! { dg-error "" } ++ if (md_i .ne. 1) STOP 7 ++ md_i = MODULO(a2_l, b2_l) ! { dg-error "" } ++ if (md_i .ne. 1) STOP 8 ++ md_r = MODULO(a_c, b_c) ! { dg-error "" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 9 ++ md_r = MODULO(a2_c, b2_c) ! { dg-error "" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 10 ++ md_r = MODULO(a_l, b_c) ! { dg-error "" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 11 ++ md_r = MODULO(a_c, b_l) ! { dg-error "" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 12 ++ ++ d_i = DIM(a_l, b_l) ! { dg-error "" } ++ if (d_i .ne. 1) STOP 13 ++ d_i = DIM(a2_l, b2_l) ! { dg-error "" } ++ if (d_i .ne. 1) STOP 14 ++ d_r = DIM(a_c, b_c) ! { dg-error "" } ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 15 ++ d_r = DIM(a2_c, b2_c) ! { dg-error "" } ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 16 ++ d_r = DIM(a_c, b_l) ! { dg-error "" } ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 17 ++ d_r = DIM(b_l, a_c) ! { dg-error "" } ++ if (abs(d_r) > 1.0D-6) STOP 18 ++ ++ s_i = SIGN(-a_l, b_l) ! { dg-error "" } ++ if (s_i .ne. 4) STOP 19 ++ s_i = SIGN(-a2_l, b2_l) ! { dg-error "" } ++ if (s_i .ne. 4) STOP 20 ++ s_r = SIGN(a_c, -b_c) ! { dg-error "" } ++ if (abs(s_r - (-a_c)) > 1.0D-6) STOP 21 ! { dg-error "" } ++ s_r = SIGN(a2_c, -b2_c) ! { dg-error "" } ++ if (abs(s_r - (-a2_c)) > 1.0D-6) STOP 22 ! { dg-error "" } ++ s_r = SIGN(a_c, -b_l) ! { dg-error "" } ++ if (abs(s_r - (-a_c)) > 1.0D-6) STOP 23 ! { dg-error "" } ++ s_r = SIGN(-a_l, b_c) ! { dg-error "" } ++ if (abs(s_r - a_c) > 1.0D-6) STOP 24 ! { dg-error "" } ++ ++ mx_i = MAX(-a_l, -b_l, x_l, y_l) ! { dg-error "" } ++ if (mx_i .ne. x_l) STOP 25 ! { dg-error "" } ++ mx_i = MAX(-a2_l, -b2_l, x_l, y_l) ! { dg-error "" } ++ if (mx_i .ne. x_l) STOP 26 ! { dg-error "" } ++ mx_r = MAX(-a_c, -b_c, x_c, y_c) ! { dg-error "" } ++ if (abs(mx_r - x_c) > 1.0D-6) STOP 27 ! { dg-error "" } ++ mx_r = MAX(-a_c, -b_c, x_c, y_c) ! { dg-error "" } ++ if (abs(mx_r - x_c) > 1.0D-6) STOP 28 ! { dg-error "" } ++ mx_r = MAX(-a_l, -b_c, x_c, y_l) ! { dg-error "" } ++ if (abs(mx_r - x_c) > 1.0D-6) STOP 29 ! { dg-error "" } ++ ++ mn_i = MIN(-a_l, -b_l, x_l, y_l) ! { dg-error "" } ++ if (mn_i .ne. -a_l) STOP 31 ! { dg-error "" } ++ mn_i = MIN(-a2_l, -b2_l, x_l, y_l) ! { dg-error "" } ++ if (mn_i .ne. -a2_l) STOP 32 ! { dg-error "" } ++ mn_r = MIN(-a_c, -b_c, x_c, y_c) ! { dg-error "" } ++ if (abs(mn_r - (-a_c)) > 1.0D-6) STOP 33 ! { dg-error "" } ++ mn_r = MIN(-a2_c, -b2_c, x_c, y_c) ! { dg-error "" } ++ if (abs(mn_r - (-a2_c)) > 1.0D-6) STOP 34 ! { dg-error "" } ++ mn_r = MIN(-a_l, -b_c, x_c, y_l) ! { dg-error "" } ++ if (abs(mn_r - (-a_c)) > 1.0D-6) STOP 35 ! { dg-error "" } ++ END PROGRAM +diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_6.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_6.f +new file mode 100644 +index 00000000000..00f8fb88f1b +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_6.f +@@ -0,0 +1,118 @@ ++! { dg-do compile } ++! { dg-options "-fdec" } ++! ++! Test promotion between integers and reals in intrinsic operations. ++! These operations are: mod, modulo, dim, sign, min, max, minloc and ++! maxloc. ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ PROGRAM promotion_int_real ++ REAL l/0.0/ ++ INTEGER a_i/4/ ++ INTEGER*4 a2_i/4/ ++ CHARACTER b_c ++ CHARACTER*8 b2_c ++ INTEGER x_i/2/ ++ CHARACTER y_c ++ REAL a_r/4.0/ ++ REAL*4 a2_r/4.0/ ++ LOGICAL b_l ++ LOGICAL*8 b2_l ++ REAL x_r/2.0/ ++ LOGICAL y_l ++ ++ INTEGER m_i/0/ ++ REAL m_r/0.0/ ++ ++ INTEGER md_i/0/ ++ REAL md_r/0.0/ ++ ++ INTEGER d_i/0/ ++ REAL d_r/0.0/ ++ ++ INTEGER s_i/0/ ++ REAL s_r/0.0/ ++ ++ INTEGER mn_i/0/ ++ REAL mn_r/0.0/ ++ ++ INTEGER mx_i/0/ ++ REAL mx_r/0.0/ ++ ++ m_i = MOD(a_i, b_c) ! { dg-error "" } ++ if (m_i .ne. 1) STOP 1 ++ m_i = MOD(a2_i, b2_c) ! { dg-error "" } ++ if (m_i .ne. 1) STOP 2 ++ m_r = MOD(a_r, b_l) ! { dg-error "" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 ++ m_r = MOD(a2_r, b2_l) ! { dg-error "" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 ++ m_r = MOD(a_i, b_l) ! { dg-error "" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 5 ++ m_r = MOD(a_r, b_c) ! { dg-error "" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 6 ++ ++ md_i = MODULO(a_i, b_c) ! { dg-error "" } ++ if (md_i .ne. 1) STOP 7 ++ md_i = MODULO(a2_i, b2_c) ! { dg-error "" } ++ if (md_i .ne. 1) STOP 8 ++ md_r = MODULO(a_r, b_l) ! { dg-error "" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 9 ++ md_r = MODULO(a2_r, b2_l) ! { dg-error "" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 10 ++ md_r = MODULO(a_i, b_l) ! { dg-error "" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 11 ++ md_r = MODULO(a_r, b_c) ! { dg-error "" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 12 ++ ++ d_i = DIM(a_i, b_c) ! { dg-error "" } ++ if (d_i .ne. 1) STOP 13 ++ d_i = DIM(a2_i, b2_c) ! { dg-error "" } ++ if (d_i .ne. 1) STOP 14 ++ d_r = DIM(a_r, b_l) ! { dg-error "" } ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 15 ++ d_r = DIM(a2_r, b2_l) ! { dg-error "" } ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 16 ++ d_r = DIM(a_r, b_c) ! { dg-error "" } ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 17 ++ d_r = DIM(b_c, a_r) ! { dg-error "" } ++ if (abs(d_r) > 1.0D-6) STOP 18 ++ ++ s_i = SIGN(-a_i, b_c) ! { dg-error "" } ++ if (s_i .ne. 4) STOP 19 ++ s_i = SIGN(-a2_i, b2_c) ! { dg-error "" } ++ if (s_i .ne. 4) STOP 20 ++ s_r = SIGN(a_r, -b_l) ! { dg-error "" } ++ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 21 ++ s_r = SIGN(a2_r, -b2_l) ! { dg-error "" } ++ if (abs(s_r - (-a2_r)) > 1.0D-6) STOP 22 ++ s_r = SIGN(a_r, -b_c) ! { dg-error "" } ++ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 23 ++ s_r = SIGN(-a_i, b_l) ! { dg-error "" } ++ if (abs(s_r - a_r) > 1.0D-6) STOP 24 ++ ++ mx_i = MAX(-a_i, -b_c, x_i, y_c) ! { dg-error "" } ++ if (mx_i .ne. x_i) STOP 25 ++ mx_i = MAX(-a2_i, -b2_c, x_i, y_c) ! { dg-error "" } ++ if (mx_i .ne. x_i) STOP 26 ++ mx_r = MAX(-a_r, -b_l, x_r, y_l) ! { dg-error "" } ++ if (abs(mx_r - x_r) > 1.0D-6) STOP 27 ++ mx_r = MAX(-a_r, -b_l, x_r, y_l) ! { dg-error "" } ++ if (abs(mx_r - x_r) > 1.0D-6) STOP 28 ++ mx_r = MAX(-a_i, -b_l, x_r, y_c) ! { dg-error "" } ++ if (abs(mx_r - x_r) > 1.0D-6) STOP 29 ++ ++ mn_i = MIN(-a_i, -b_c, x_i, y_c) ! { dg-error "" } ++ if (mn_i .ne. -a_i) STOP 31 ++ mn_i = MIN(-a2_i, -b2_c, x_i, y_c) ! { dg-error "" } ++ if (mn_i .ne. -a2_i) STOP 32 ++ mn_r = MIN(-a_r, -b_l, x_r, y_l) ! { dg-error "" } ++ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 33 ++ mn_r = MIN(-a2_r, -b2_l, x_r, y_l) ! { dg-error "" } ++ if (abs(mn_r - (-a2_r)) > 1.0D-6) STOP 34 ++ mn_r = MIN(-a_i, -b_l, x_r, y_c) ! { dg-error "" } ++ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 35 ++ END PROGRAM +diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_7.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_7.f +new file mode 100644 +index 00000000000..1d4150d81c0 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_7.f +@@ -0,0 +1,118 @@ ++! { dg-do compile } ++! { dg-options "-fdec-promotion" } ++! ++! Test promotion between integers and reals in intrinsic operations. ++! These operations are: mod, modulo, dim, sign, min, max, minloc and ++! maxloc. ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ PROGRAM promotion_int_real ++ REAL l/0.0/ ++ INTEGER a_i/4/ ++ INTEGER*4 a2_i/4/ ++ CHARACTER b_c ++ CHARACTER*8 b2_c ++ INTEGER x_i/2/ ++ CHARACTER y_c ++ REAL a_r/4.0/ ++ REAL*4 a2_r/4.0/ ++ LOGICAL b_l ++ LOGICAL*8 b2_l ++ REAL x_r/2.0/ ++ LOGICAL y_l ++ ++ INTEGER m_i/0/ ++ REAL m_r/0.0/ ++ ++ INTEGER md_i/0/ ++ REAL md_r/0.0/ ++ ++ INTEGER d_i/0/ ++ REAL d_r/0.0/ ++ ++ INTEGER s_i/0/ ++ REAL s_r/0.0/ ++ ++ INTEGER mn_i/0/ ++ REAL mn_r/0.0/ ++ ++ INTEGER mx_i/0/ ++ REAL mx_r/0.0/ ++ ++ m_i = MOD(a_i, b_c) ! { dg-error "" } ++ if (m_i .ne. 1) STOP 1 ++ m_i = MOD(a2_i, b2_c) ! { dg-error "" } ++ if (m_i .ne. 1) STOP 2 ++ m_r = MOD(a_r, b_l) ! { dg-error "" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 ++ m_r = MOD(a2_r, b2_l) ! { dg-error "" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 ++ m_r = MOD(a_i, b_l) ! { dg-error "" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 5 ++ m_r = MOD(a_r, b_c) ! { dg-error "" } ++ if (abs(m_r - 1.0) > 1.0D-6) STOP 6 ++ ++ md_i = MODULO(a_i, b_c) ! { dg-error "" } ++ if (md_i .ne. 1) STOP 7 ++ md_i = MODULO(a2_i, b2_c) ! { dg-error "" } ++ if (md_i .ne. 1) STOP 8 ++ md_r = MODULO(a_r, b_l) ! { dg-error "" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 9 ++ md_r = MODULO(a2_r, b2_l) ! { dg-error "" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 10 ++ md_r = MODULO(a_i, b_l) ! { dg-error "" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 11 ++ md_r = MODULO(a_r, b_c) ! { dg-error "" } ++ if (abs(md_r - 1.0) > 1.0D-6) STOP 12 ++ ++ d_i = DIM(a_i, b_c) ! { dg-error "" } ++ if (d_i .ne. 1) STOP 13 ++ d_i = DIM(a2_i, b2_c) ! { dg-error "" } ++ if (d_i .ne. 1) STOP 14 ++ d_r = DIM(a_r, b_l) ! { dg-error "" } ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 15 ++ d_r = DIM(a2_r, b2_l) ! { dg-error "" } ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 16 ++ d_r = DIM(a_r, b_c) ! { dg-error "" } ++ if (abs(d_r - 1.0) > 1.0D-6) STOP 17 ++ d_r = DIM(b_c, a_r) ! { dg-error "" } ++ if (abs(d_r) > 1.0D-6) STOP 18 ++ ++ s_i = SIGN(-a_i, b_c) ! { dg-error "" } ++ if (s_i .ne. 4) STOP 19 ++ s_i = SIGN(-a2_i, b2_c) ! { dg-error "" } ++ if (s_i .ne. 4) STOP 20 ++ s_r = SIGN(a_r, -b_l) ! { dg-error "" } ++ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 21 ++ s_r = SIGN(a2_r, -b2_l) ! { dg-error "" } ++ if (abs(s_r - (-a2_r)) > 1.0D-6) STOP 22 ++ s_r = SIGN(a_r, -b_c) ! { dg-error "" } ++ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 23 ++ s_r = SIGN(-a_i, b_l) ! { dg-error "" } ++ if (abs(s_r - a_r) > 1.0D-6) STOP 24 ++ ++ mx_i = MAX(-a_i, -b_c, x_i, y_c) ! { dg-error "" } ++ if (mx_i .ne. x_i) STOP 25 ++ mx_i = MAX(-a2_i, -b2_c, x_i, y_c) ! { dg-error "" } ++ if (mx_i .ne. x_i) STOP 26 ++ mx_r = MAX(-a_r, -b_l, x_r, y_l) ! { dg-error "" } ++ if (abs(mx_r - x_r) > 1.0D-6) STOP 27 ++ mx_r = MAX(-a_r, -b_l, x_r, y_l) ! { dg-error "" } ++ if (abs(mx_r - x_r) > 1.0D-6) STOP 28 ++ mx_r = MAX(-a_i, -b_l, x_r, y_c) ! { dg-error "" } ++ if (abs(mx_r - x_r) > 1.0D-6) STOP 29 ++ ++ mn_i = MIN(-a_i, -b_c, x_i, y_c) ! { dg-error "" } ++ if (mn_i .ne. -a_i) STOP 31 ++ mn_i = MIN(-a2_i, -b2_c, x_i, y_c) ! { dg-error "" } ++ if (mn_i .ne. -a2_i) STOP 32 ++ mn_r = MIN(-a_r, -b_l, x_r, y_l) ! { dg-error "" } ++ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 33 ++ mn_r = MIN(-a2_r, -b2_l, x_r, y_l) ! { dg-error "" } ++ if (abs(mn_r - (-a2_r)) > 1.0D-6) STOP 34 ++ mn_r = MIN(-a_i, -b_l, x_r, y_c) ! { dg-error "" } ++ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 35 ++ END PROGRAM +diff --git a/gcc/testsuite/gfortran.dg/dec_kind_promotion-1.f b/gcc/testsuite/gfortran.dg/dec_kind_promotion-1.f +new file mode 100644 +index 00000000000..435bf98350c +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_kind_promotion-1.f +@@ -0,0 +1,40 @@ ++!{ dg-do run } ++!{ dg-options "-fdec" } ++! ++! integer types of a smaller kind than expected should be ++! accepted by type specific intrinsic functions ++! ++! Contributed by Mark Eggleston ++! ++ program test_small_type_promtion ++ implicit none ++ integer(1) :: a = 1 ++ integer :: i ++ if (iiabs(-9_1).ne.9) stop 1 ++ if (iabs(-9_1).ne.9) stop 2 ++ if (iabs(-9_2).ne.9) stop 3 ++ if (jiabs(-9_1).ne.9) stop 4 ++ if (jiabs(-9_2).ne.9) stop 5 ++ if (iishft(1_1, 2).ne.4) stop 6 ++ if (jishft(1_1, 2).ne.4) stop 7 ++ if (jishft(1_2, 2).ne.4) stop 8 ++ if (kishft(1_1, 2).ne.4) stop 9 ++ if (kishft(1_2, 2).ne.4) stop 10 ++ if (kishft(1_4, 2).ne.4) stop 11 ++ if (imod(17_1, 3).ne.2) stop 12 ++ if (jmod(17_1, 3).ne.2) stop 13 ++ if (jmod(17_2, 3).ne.2) stop 14 ++ if (kmod(17_1, 3).ne.2) stop 15 ++ if (kmod(17_2, 3).ne.2) stop 16 ++ if (kmod(17_4, 3).ne.2) stop 17 ++ if (inot(5_1).ne.-6) stop 18 ++ if (jnot(5_1).ne.-6) stop 19 ++ if (jnot(5_2).ne.-6) stop 20 ++ if (knot(5_1).ne.-6) stop 21 ++ if (knot(5_2).ne.-6) stop 22 ++ if (knot(5_4).ne.-6) stop 23 ++ if (isign(-77_1, 1).ne.77) stop 24 ++ if (isign(-77_1, -1).ne.-77) stop 25 ++ if (isign(-77_2, 1).ne.77) stop 26 ++ if (isign(-77_2, -1).ne.-77) stop 27 ++ end program +diff --git a/gcc/testsuite/gfortran.dg/dec_kind_promotion-2.f b/gcc/testsuite/gfortran.dg/dec_kind_promotion-2.f +new file mode 100644 +index 00000000000..7b1697ca665 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_kind_promotion-2.f +@@ -0,0 +1,40 @@ ++!{ dg-do run } ++!{ dg-options "-fdec-intrinsic-ints -fdec-promotion" } ++! ++! integer types of a smaller kind than expected should be ++! accepted by type specific intrinsic functions ++! ++! Contributed by Mark Eggleston ++! ++ program test_small_type_promtion ++ implicit none ++ integer(1) :: a = 1 ++ integer :: i ++ if (iiabs(-9_1).ne.9) stop 1 ++ if (iabs(-9_1).ne.9) stop 2 ++ if (iabs(-9_2).ne.9) stop 3 ++ if (jiabs(-9_1).ne.9) stop 4 ++ if (jiabs(-9_2).ne.9) stop 5 ++ if (iishft(1_1, 2).ne.4) stop 6 ++ if (jishft(1_1, 2).ne.4) stop 7 ++ if (jishft(1_2, 2).ne.4) stop 8 ++ if (kishft(1_1, 2).ne.4) stop 9 ++ if (kishft(1_2, 2).ne.4) stop 10 ++ if (kishft(1_4, 2).ne.4) stop 11 ++ if (imod(17_1, 3).ne.2) stop 12 ++ if (jmod(17_1, 3).ne.2) stop 13 ++ if (jmod(17_2, 3).ne.2) stop 14 ++ if (kmod(17_1, 3).ne.2) stop 15 ++ if (kmod(17_2, 3).ne.2) stop 16 ++ if (kmod(17_4, 3).ne.2) stop 17 ++ if (inot(5_1).ne.-6) stop 18 ++ if (jnot(5_1).ne.-6) stop 19 ++ if (jnot(5_2).ne.-6) stop 20 ++ if (knot(5_1).ne.-6) stop 21 ++ if (knot(5_2).ne.-6) stop 22 ++ if (knot(5_4).ne.-6) stop 23 ++ if (isign(-77_1, 1).ne.77) stop 24 ++ if (isign(-77_1, -1).ne.-77) stop 25 ++ if (isign(-77_2, 1).ne.77) stop 26 ++ if (isign(-77_2, -1).ne.-77) stop 27 ++ end program +diff --git a/gcc/testsuite/gfortran.dg/dec_kind_promotion-3.f b/gcc/testsuite/gfortran.dg/dec_kind_promotion-3.f +new file mode 100644 +index 00000000000..db8dff6c55d +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_kind_promotion-3.f +@@ -0,0 +1,39 @@ ++!{ dg-do compile } ++!{ dg-options "-fdec -fno-dec-promotion" } ++! ++! integer types of a smaller kind than expected should be ++! accepted by type specific intrinsic functions ++! ++! Contributed by Mark Eggleston ++! ++ program test_small_type_promtion ++ integer(1) :: a = 1 ++ integer :: i ++ if (iiabs(-9_1).ne.9) stop 1 ++ if (iabs(-9_1).ne.9) stop 2 ! { dg-error "type mismatch in argument" } ++ if (iabs(-9_2).ne.9) stop 3 ! { dg-error "type mismatch in argument" } ++ if (jiabs(-9_1).ne.9) stop 4 ++ if (jiabs(-9_2).ne.9) stop 5 ++ if (iishft(1_1, 2).ne.4) stop 6 ++ if (jishft(1_1, 2).ne.4) stop 7 ++ if (jishft(1_2, 2).ne.4) stop 8 ++ if (kishft(1_1, 2).ne.4) stop 9 ++ if (kishft(1_2, 2).ne.4) stop 10 ++ if (kishft(1_4, 2).ne.4) stop 11 ++ if (imod(17_1, 3).ne.2) stop 12 ++ if (jmod(17_1, 3).ne.2) stop 13 ++ if (jmod(17_2, 3).ne.2) stop 14 ++ if (kmod(17_1, 3).ne.2) stop 15 ++ if (kmod(17_2, 3).ne.2) stop 16 ++ if (kmod(17_4, 3).ne.2) stop 17 ++ if (inot(5_1).ne.-6) stop 18 ++ if (jnot(5_1).ne.-6) stop 19 ++ if (jnot(5_2).ne.-6) stop 20 ++ if (knot(5_1).ne.-6) stop 21 ++ if (knot(5_2).ne.-6) stop 22 ++ if (knot(5_4).ne.-6) stop 23 ++ if (isign(-77_1, 1).ne.77) stop 24 ! { dg-error "type mismatch in argument" } ++ if (isign(-77_1, -1).ne.-77) stop 25 ! { dg-error "type mismatch in argument" } ++ if (isign(-77_2, 1).ne.77) stop 26 ! { dg-error "type mismatch in argument" } ++ if (isign(-77_2, -1).ne.-77) stop 27 ! { dg-error "type mismatch in argument" } ++ end program +-- +2.27.0 + diff --git a/gcc11-fortran-fdec-sequence.patch b/gcc11-fortran-fdec-sequence.patch new file mode 100644 index 0000000..cef8b09 --- /dev/null +++ b/gcc11-fortran-fdec-sequence.patch @@ -0,0 +1,262 @@ +From bb76446db10c21860a4e19569ce3e350d8a2b59f Mon Sep 17 00:00:00 2001 +From: Mark Eggleston +Date: Fri, 22 Jan 2021 15:00:44 +0000 +Subject: [PATCH 09/10] Add the SEQUENCE attribute by default if it's not + present. + +Use -fdec-sequence to enable this feature. Also enabled by -fdec. +--- + gcc/fortran/lang.opt | 4 ++ + gcc/fortran/options.c | 1 + + gcc/fortran/resolve.c | 13 ++++- + ...dd_SEQUENCE_to_COMMON_block_by_default_1.f | 57 +++++++++++++++++++ + ...dd_SEQUENCE_to_COMMON_block_by_default_2.f | 57 +++++++++++++++++++ + ...dd_SEQUENCE_to_COMMON_block_by_default_3.f | 57 +++++++++++++++++++ + 6 files changed, 186 insertions(+), 3 deletions(-) + create mode 100644 gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_1.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_2.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_3.f + +diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt +index 4ca2f93f2df..019c798cf09 100644 +--- a/gcc/fortran/lang.opt ++++ b/gcc/fortran/lang.opt +@@ -509,6 +509,10 @@ fdec-promotion + Fortran Var(flag_dec_promotion) + Add support for type promotion in intrinsic arguments + ++fdec-sequence ++Fortran Var(flag_dec_sequence) ++Add the SEQUENCE attribute by default if it's not present ++ + fdec-structure + Fortran Var(flag_dec_structure) + Enable support for DEC STRUCTURE/RECORD. +diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +index 15079c7e95a..050f56fdc25 100644 +--- a/gcc/fortran/options.c ++++ b/gcc/fortran/options.c +@@ -83,6 +83,7 @@ set_dec_flags (int value) + SET_BITFLAG (flag_dec_override_kind, value, value); + SET_BITFLAG (flag_dec_non_logical_if, value, value); + SET_BITFLAG (flag_dec_promotion, value, value); ++ SET_BITFLAG (flag_dec_sequence, value, value); + } + + /* Finalize DEC flags. */ +diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c +index 07dd039f3bf..fe7d0cc5944 100644 +--- a/gcc/fortran/resolve.c ++++ b/gcc/fortran/resolve.c +@@ -978,9 +978,16 @@ resolve_common_vars (gfc_common_head *common_block, bool named_common) + + if (!(csym->ts.u.derived->attr.sequence + || csym->ts.u.derived->attr.is_bind_c)) +- gfc_error_now ("Derived type variable %qs in COMMON at %L " +- "has neither the SEQUENCE nor the BIND(C) " +- "attribute", csym->name, &csym->declared_at); ++ { ++ if (flag_dec_sequence) ++ /* Assume sequence. */ ++ csym->ts.u.derived->attr.sequence = 1; ++ else ++ gfc_error_now ("Derived type variable '%s' in COMMON at %L " ++ "has neither the SEQUENCE nor the BIND(C) " ++ "attribute", csym->name, &csym->declared_at); ++ } ++ + if (csym->ts.u.derived->attr.alloc_comp) + gfc_error_now ("Derived type variable %qs in COMMON at %L " + "has an ultimate component that is " +diff --git a/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_1.f b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_1.f +new file mode 100644 +index 00000000000..fe7b39625eb +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_1.f +@@ -0,0 +1,57 @@ ++! { dg-do run } ++! { dg-options "-fdec" } ++! ++! Test add default SEQUENCE attribute derived types appearing in ++! COMMON blocks and EQUIVALENCE statements. ++! ++! Contributed by Francisco Redondo Marchena ++! Modified by Mark Eggleston ++! ++ MODULE SEQ ++ TYPE STRUCT1 ++ INTEGER*4 ID ++ INTEGER*4 TYPE ++ INTEGER*8 DEFVAL ++ CHARACTER*(4) NAME ++ LOGICAL*1 NIL ++ END TYPE STRUCT1 ++ END MODULE ++ ++ SUBROUTINE A ++ USE SEQ ++ TYPE (STRUCT1) S ++ COMMON /BLOCK1/ S ++ IF (S%ID.NE.5) STOP 1 ++ IF (S%TYPE.NE.1000) STOP 2 ++ IF (S%DEFVAL.NE.-99) STOP 3 ++ IF (S%NAME.NE."JANE") STOP 4 ++ IF (S%NIL.NEQV..FALSE.) STOP 5 ++ END SUBROUTINE ++ ++ PROGRAM sequence_att_common ++ USE SEQ ++ IMPLICIT NONE ++ TYPE (STRUCT1) S1 ++ TYPE (STRUCT1) S2 ++ TYPE (STRUCT1) S3 ++ ++ EQUIVALENCE (S1,S2) ++ COMMON /BLOCK1/ S3 ++ ++ S1%ID = 5 ++ S1%TYPE = 1000 ++ S1%DEFVAL = -99 ++ S1%NAME = "JANE" ++ S1%NIL = .FALSE. ++ ++ IF (S2%ID.NE.5) STOP 1 ++ IF (S2%TYPE.NE.1000) STOP 2 ++ IF (S2%DEFVAL.NE.-99) STOP 3 ++ IF (S2%NAME.NE."JANE") STOP 4 ++ IF (S2%NIL.NEQV..FALSE.) STOP 5 ++ ++ S3 = S1 ++ ++ CALL A ++ ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_2.f b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_2.f +new file mode 100644 +index 00000000000..83512f0f3a2 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_2.f +@@ -0,0 +1,57 @@ ++! { dg-do run } ++! { dg-options "-fdec-sequence" } ++! ++! Test add default SEQUENCE attribute derived types appearing in ++! COMMON blocks and EQUIVALENCE statements. ++! ++! Contributed by Francisco Redondo Marchena ++! Modified by Mark Eggleston ++! ++ MODULE SEQ ++ TYPE STRUCT1 ++ INTEGER*4 ID ++ INTEGER*4 TYPE ++ INTEGER*8 DEFVAL ++ CHARACTER*(4) NAME ++ LOGICAL*1 NIL ++ END TYPE STRUCT1 ++ END MODULE ++ ++ SUBROUTINE A ++ USE SEQ ++ TYPE (STRUCT1) S ++ COMMON /BLOCK1/ S ++ IF (S%ID.NE.5) STOP 1 ++ IF (S%TYPE.NE.1000) STOP 2 ++ IF (S%DEFVAL.NE.-99) STOP 3 ++ IF (S%NAME.NE."JANE") STOP 4 ++ IF (S%NIL.NEQV..FALSE.) STOP 5 ++ END SUBROUTINE ++ ++ PROGRAM sequence_att_common ++ USE SEQ ++ IMPLICIT NONE ++ TYPE (STRUCT1) S1 ++ TYPE (STRUCT1) S2 ++ TYPE (STRUCT1) S3 ++ ++ EQUIVALENCE (S1,S2) ++ COMMON /BLOCK1/ S3 ++ ++ S1%ID = 5 ++ S1%TYPE = 1000 ++ S1%DEFVAL = -99 ++ S1%NAME = "JANE" ++ S1%NIL = .FALSE. ++ ++ IF (S2%ID.NE.5) STOP 1 ++ IF (S2%TYPE.NE.1000) STOP 2 ++ IF (S2%DEFVAL.NE.-99) STOP 3 ++ IF (S2%NAME.NE."JANE") STOP 4 ++ IF (S2%NIL.NEQV..FALSE.) STOP 5 ++ ++ S3 = S1 ++ ++ CALL A ++ ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_3.f b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_3.f +new file mode 100644 +index 00000000000..26cd59f9090 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_3.f +@@ -0,0 +1,57 @@ ++! { dg-do compile } ++! { dg-options "-fdec -fno-dec-sequence" } ++! ++! Test add default SEQUENCE attribute derived types appearing in ++! COMMON blocks and EQUIVALENCE statements. ++! ++! Contributed by Francisco Redondo Marchena ++! Modified by Mark Eggleston ++! ++ MODULE SEQ ++ TYPE STRUCT1 ++ INTEGER*4 ID ++ INTEGER*4 TYPE ++ INTEGER*8 DEFVAL ++ CHARACTER*(4) NAME ++ LOGICAL*1 NIL ++ END TYPE STRUCT1 ++ END MODULE ++ ++ SUBROUTINE A ++ USE SEQ ++ TYPE (STRUCT1) S ! { dg-error "Derived type variable" } ++ COMMON /BLOCK1/ S ++ IF (S%ID.NE.5) STOP 1 ++ IF (S%TYPE.NE.1000) STOP 2 ++ IF (S%DEFVAL.NE.-99) STOP 3 ++ IF (S%NAME.NE."JANE") STOP 4 ++ IF (S%NIL.NEQV..FALSE.) STOP 5 ++ END SUBROUTINE ++ ++ PROGRAM sequence_att_common ++ USE SEQ ++ IMPLICIT NONE ++ TYPE (STRUCT1) S1 ++ TYPE (STRUCT1) S2 ++ TYPE (STRUCT1) S3 ! { dg-error "Derived type variable" } ++ ++ EQUIVALENCE (S1,S2) ! { dg-error "Derived type variable" } ++ COMMON /BLOCK1/ S3 ++ ++ S1%ID = 5 ++ S1%TYPE = 1000 ++ S1%DEFVAL = -99 ++ S1%NAME = "JANE" ++ S1%NIL = .FALSE. ++ ++ IF (S2%ID.NE.5) STOP 1 ++ IF (S2%TYPE.NE.1000) STOP 2 ++ IF (S2%DEFVAL.NE.-99) STOP 3 ++ IF (S2%NAME.NE."JANE") STOP 4 ++ IF (S2%NIL.NEQV..FALSE.) STOP 5 ++ ++ S3 = S1 ++ ++ CALL A ++ ++ END +-- +2.27.0 + diff --git a/gcc11-fortran-flogical-as-integer.patch b/gcc11-fortran-flogical-as-integer.patch new file mode 100644 index 0000000..41cbf60 --- /dev/null +++ b/gcc11-fortran-flogical-as-integer.patch @@ -0,0 +1,305 @@ +From 9b45f3063dfd2b893e7963a4828c1b0afecdc68a Mon Sep 17 00:00:00 2001 +From: Mark Eggleston +Date: Fri, 22 Jan 2021 12:41:46 +0000 +Subject: [PATCH 02/10] Convert LOGICAL to INTEGER for arithmetic ops, and vice + versa + +We allow converting LOGICAL types to INTEGER when doing arithmetic +operations, and converting INTEGER types to LOGICAL for use in +boolean operations. + +This feature is enabled with the -flogical-as-integer flag. + +Note: using this feature will disable bitwise logical operations enabled by +-fdec. +--- + gcc/fortran/lang.opt | 4 ++ + gcc/fortran/resolve.c | 55 ++++++++++++++++++- + .../logical_to_integer_and_vice_versa_1.f | 31 +++++++++++ + .../logical_to_integer_and_vice_versa_2.f | 31 +++++++++++ + .../logical_to_integer_and_vice_versa_3.f | 33 +++++++++++ + .../logical_to_integer_and_vice_versa_4.f | 33 +++++++++++ + 6 files changed, 186 insertions(+), 1 deletion(-) + create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f + create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f + create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f + create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f + +diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt +index 52bd522051e..c4da248f07c 100644 +--- a/gcc/fortran/lang.opt ++++ b/gcc/fortran/lang.opt +@@ -497,6 +497,10 @@ fdec-static + Fortran Var(flag_dec_static) + Enable DEC-style STATIC and AUTOMATIC attributes. + ++flogical-as-integer ++Fortran Var(flag_logical_as_integer) ++Convert from integer to logical or logical to integer for arithmetic operations. ++ + fdefault-double-8 + Fortran Var(flag_default_double) + Set the default double precision kind to an 8 byte wide type. +diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c +index c075d0fa0c4..4b90cb59902 100644 +--- a/gcc/fortran/resolve.c ++++ b/gcc/fortran/resolve.c +@@ -3915,7 +3915,6 @@ lookup_uop_fuzzy (const char *op, gfc_symtree *uop) + return gfc_closest_fuzzy_match (op, candidates); + } + +- + /* Callback finding an impure function as an operand to an .and. or + .or. expression. Remember the last function warned about to + avoid double warnings when recursing. */ +@@ -3975,6 +3974,22 @@ convert_hollerith_to_character (gfc_expr *e) + } + } + ++/* If E is a logical, convert it to an integer and issue a warning ++ for the conversion. */ ++ ++static void ++convert_integer_to_logical (gfc_expr *e) ++{ ++ if (e->ts.type == BT_INTEGER) ++ { ++ /* Convert to LOGICAL */ ++ gfc_typespec t; ++ t.type = BT_LOGICAL; ++ t.kind = 1; ++ gfc_convert_type_warn (e, &t, 2, 1); ++ } ++} ++ + /* Convert to numeric and issue a warning for the conversion. */ + + static void +@@ -3987,6 +4002,22 @@ convert_to_numeric (gfc_expr *a, gfc_expr *b) + gfc_convert_type_warn (a, &t, 2, 1); + } + ++/* If E is a logical, convert it to an integer and issue a warning ++ for the conversion. */ ++ ++static void ++convert_logical_to_integer (gfc_expr *e) ++{ ++ if (e->ts.type == BT_LOGICAL) ++ { ++ /* Convert to INTEGER */ ++ gfc_typespec t; ++ t.type = BT_INTEGER; ++ t.kind = 1; ++ gfc_convert_type_warn (e, &t, 2, 1); ++ } ++} ++ + /* Resolve an operator expression node. This can involve replacing the + operation with a user defined function call. */ + +@@ -4072,6 +4103,12 @@ resolve_operator (gfc_expr *e) + case INTRINSIC_TIMES: + case INTRINSIC_DIVIDE: + case INTRINSIC_POWER: ++ if (flag_logical_as_integer) ++ { ++ convert_logical_to_integer (op1); ++ convert_logical_to_integer (op2); ++ } ++ + if (gfc_numeric_ts (&op1->ts) && gfc_numeric_ts (&op2->ts)) + { + gfc_type_convert_binary (e, 1); +@@ -4108,6 +4145,13 @@ resolve_operator (gfc_expr *e) + case INTRINSIC_OR: + case INTRINSIC_EQV: + case INTRINSIC_NEQV: ++ ++ if (flag_logical_as_integer) ++ { ++ convert_integer_to_logical (op1); ++ convert_integer_to_logical (op2); ++ } ++ + if (op1->ts.type == BT_LOGICAL && op2->ts.type == BT_LOGICAL) + { + e->ts.type = BT_LOGICAL; +@@ -4158,6 +4202,9 @@ resolve_operator (gfc_expr *e) + goto simplify_op; + } + ++ if (flag_logical_as_integer) ++ convert_integer_to_logical (op1); ++ + if (op1->ts.type == BT_LOGICAL) + { + e->ts.type = BT_LOGICAL; +@@ -4198,6 +4245,12 @@ resolve_operator (gfc_expr *e) + convert_hollerith_to_character (op2); + } + ++ if (flag_logical_as_integer) ++ { ++ convert_logical_to_integer (op1); ++ convert_logical_to_integer (op2); ++ } ++ + if (op1->ts.type == BT_CHARACTER && op2->ts.type == BT_CHARACTER + && op1->ts.kind == op2->ts.kind) + { +diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f +new file mode 100644 +index 00000000000..938a91d9e9a +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f +@@ -0,0 +1,31 @@ ++! { dg-do run } ++! { dg-options "-std=legacy -flogical-as-integer" } ++! ++! Test conversion between logical and integer for logical operators ++! ++! Test case contributed by Jim MacArthur ++! Modified for -flogical-as-integer by Mark Eggleston ++! ++! ++ PROGRAM logical_integer_conversion ++ LOGICAL lpos /.true./ ++ INTEGER ineg/0/ ++ INTEGER ires ++ LOGICAL lres ++ ++ ! Test Logicals converted to Integers ++ if ((lpos.AND.ineg).EQ.1) STOP 3 ++ if ((ineg.AND.lpos).NE.0) STOP 4 ++ ires = (.true..AND.0) ++ if (ires.NE.0) STOP 5 ++ ires = (1.AND..false.) ++ if (ires.EQ.1) STOP 6 ++ ++ ! Test Integers converted to Logicals ++ if (lpos.EQ.ineg) STOP 7 ++ if (ineg.EQ.lpos) STOP 8 ++ lres = (.true..EQ.0) ++ if (lres) STOP 9 ++ lres = (1.EQ..false.) ++ if (lres) STOP 10 ++ END +diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f +new file mode 100644 +index 00000000000..9f146202ba5 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f +@@ -0,0 +1,31 @@ ++! { dg-do compile } ++! { dg-options "-std=legacy -flogical-as-integer -fno-logical-as-integer" } ++! ++! Based on logical_to_integer_and_vice_versa_1.f but with option disabled ++! to test for error messages. ++! ++! Test case contributed by by Mark Eggleston ++! ++! ++ PROGRAM logical_integer_conversion ++ LOGICAL lpos /.true./ ++ INTEGER ineg/0/ ++ INTEGER ires ++ LOGICAL lres ++ ++ ! Test Logicals converted to Integers ++ if ((lpos.AND.ineg).EQ.1) STOP 3 ! { dg-error "Operands of logical operator" } ++ if ((ineg.AND.lpos).NE.0) STOP 4 ! { dg-error "Operands of logical operator" } ++ ires = (.true..AND.0) ! { dg-error "Operands of logical operator" } ++ if (ires.NE.0) STOP 5 ++ ires = (1.AND..false.) ! { dg-error "Operands of logical operator" } ++ if (ires.EQ.1) STOP 6 ++ ++ ! Test Integers converted to Logicals ++ if (lpos.EQ.ineg) STOP 7 ! { dg-error "Operands of comparison operator" } ++ if (ineg.EQ.lpos) STOP 8 ! { dg-error "Operands of comparison operator" } ++ lres = (.true..EQ.0) ! { dg-error "Operands of comparison operator" } ++ if (lres) STOP 9 ++ lres = (1.EQ..false.) ! { dg-error "Operands of comparison operator" } ++ if (lres) STOP 10 ++ END +diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f +new file mode 100644 +index 00000000000..446873eb2dc +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f +@@ -0,0 +1,33 @@ ++! { dg-do compile } ++! { dg-options "-std=legacy -flogical-as-integer" } ++! ++! Test conversion between logical and integer for logical operators ++! ++ program test ++ logical f /.false./ ++ logical t /.true./ ++ real x ++ ++ x = 7.7 ++ x = x + t*3.0 ++ if (abs(x - 10.7).gt.0.00001) stop 1 ++ x = x + .false.*5.0 ++ if (abs(x - 10.7).gt.0.00001) stop 2 ++ x = x - .true.*5.0 ++ if (abs(x - 5.7).gt.0.00001) stop 3 ++ x = x + t ++ if (abs(x - 6.7).gt.0.00001) stop 4 ++ x = x + f ++ if (abs(x - 6.7).gt.0.00001) stop 5 ++ x = x - t ++ if (abs(x - 5.7).gt.0.00001) stop 6 ++ x = x - f ++ if (abs(x - 5.7).gt.0.00001) stop 7 ++ x = x**.true. ++ if (abs(x - 5.7).gt.0.00001) stop 8 ++ x = x**.false. ++ if (abs(x - 1.0).gt.0.00001) stop 9 ++ x = x/t ++ if (abs(x - 1.0).gt.0.00001) stop 10 ++ if ((x/.false.).le.huge(x)) stop 11 ++ end +diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f +new file mode 100644 +index 00000000000..4301a4988d8 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f +@@ -0,0 +1,33 @@ ++! { dg-do compile } ++! { dg-options "-std=legacy -flogical-as-integer -fno-logical-as-integer" } ++! ++! Test conversion between logical and integer for logical operators ++! ++ program test ++ logical f /.false./ ++ logical t /.true./ ++ real x ++ ++ x = 7.7 ++ x = x + t*3.0 ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 10.7).gt.0.00001) stop 1 ++ x = x + .false.*5.0 ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 10.7).gt.0.00001) stop 2 ++ x = x - .true.*5.0 ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 5.7).gt.0.00001) stop 3 ++ x = x + t ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 6.7).gt.0.00001) stop 4 ++ x = x + f ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 6.7).gt.0.00001) stop 5 ++ x = x - t ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 5.7).gt.0.00001) stop 6 ++ x = x - f ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 5.7).gt.0.00001) stop 7 ++ x = x**.true. ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 5.7).gt.0.00001) stop 8 ++ x = x**.false. ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 1.0).gt.0.00001) stop 9 ++ x = x/t ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 1.0).gt.0.00001) stop 10 ++ if ((x/.false.).le.huge(x)) stop 11 ! { dg-error "Operands of binary numeric" } ++ end +-- +2.27.0 + From 89aaf2fccac8d279d2e82e0601574969c00e6833 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 31 Jan 2021 12:16:46 +0100 Subject: [PATCH 026/293] 10.2.1-10 --- gcc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 99687e5..ca5f5b5 100644 --- a/gcc.spec +++ b/gcc.spec @@ -795,7 +795,7 @@ to NVidia PTX capable devices if available. %patch11 -p0 -b .d-shared-libphobos~ %patch12 -p0 -b .pr98338-workaround~ -%if %{?rhel} >= 9 +%if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ %patch101 -p1 -b .fortran-flogical-as-integer~ %patch102 -p1 -b .fortran-fdec-ichar~ From c8c738d102b74ad5b08ea5bc144ed2470d8e6a21 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 10 Feb 2021 20:11:45 +0100 Subject: [PATCH 027/293] 11.0.0-0.19 --- .gitignore | 1 + gcc.spec | 25 ++++++++++++++++++++++--- sources | 2 +- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 8c3ed5f..c1d8adb 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ /gcc-11.0.0-20210119.tar.xz /gcc-11.0.0-20210123.tar.xz /gcc-11.0.0-20210130.tar.xz +/gcc-11.0.0-20210210.tar.xz diff --git a/gcc.spec b/gcc.spec index ca5f5b5..bbb4c5e 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20210130 -%global gitrev 17ea13f46910e81a4891636c35aec2b3dabe5879 +%global DATE 20210210 +%global gitrev ca24474172e3b0805f9f016bf2a6ef0352aeb755 %global gcc_version 11.0.0 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.18%{?dist} +Release: %{gcc_release}.19%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3093,6 +3093,25 @@ end %endif %changelog +* Wed Feb 10 2021 Jakub Jelinek 11.0.0-0.19 +- update from trunk + - PRs analyzer/93355, analyzer/96374, analyzer/98575, analyzer/98918, + c++/20408, c++/84494, c++/90926, c++/95192, c++/96199, c++/96462, + c++/96905, c++/97804, c++/97878, c++/98295, c++/98326, c++/98355, + c++/98531, c++/98570, c++/98717, c++/98802, c++/98835, c++/98899, + c++/98926, c++/98929, c++/98944, c++/98947, c++/98951, c++/98994, + c/97882, c/97932, d/98910, d/98921, debug/98656, driver/98943, + fortran/91862, fortran/98913, libstdc++/70303, libstdc++/99021, + lto/96591, lto/98912, lto/98971, middle-end/97172, middle-end/97487, + middle-end/97971, middle-end/98465, middle-end/98974, + middle-end/99004, preprocessor/98882, rtl-optimization/96015, + target/97510, target/98172, target/98537, target/98743, target/98957, + testsuite/98243, testsuite/98325, tree-optimization/97960, + tree-optimization/98287, tree-optimization/98499, + tree-optimization/98848, tree-optimization/98855, + tree-optimization/98863, tree-optimization/98928, + tree-optimization/98937, tree-optimization/99017 + * Sat Jan 30 2021 Jakub Jelinek 11.0.0-0.18 - update from trunk - PRs ada/98228, bootstrap/98839, c++/33661, c++/88548, c++/94775, diff --git a/sources b/sources index aae8777..e6789ef 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-11.0.0-20210130.tar.xz) = 8f7a43910a8097a146987c1f336cd51fff2c236ecdf3e1e46b87a6f0336f40483922d997d8a95f26b35b97e91879fbb3a3840492ef823110a280f29745d437f8 +SHA512 (gcc-11.0.0-20210210.tar.xz) = 7820ba74e26edc4bb89e63b5b6010dff672b844ba69697a78fcc00b5163f377aa6e352d4f52aa62325ff13ee6778ac23683f7b489404de3a9bb66ceae738f319 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 7cfa254bd759bf6039a4c60f509910dbd0dcfb1c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 10 Feb 2021 23:12:13 +0100 Subject: [PATCH 028/293] 11.0.0-0.19 --- gcc11-hack.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc11-hack.patch b/gcc11-hack.patch index ba80c24..3a5f3f3 100644 --- a/gcc11-hack.patch +++ b/gcc11-hack.patch @@ -100,7 +100,7 @@ --- libcpp/expr.c.jj 2019-01-09 13:01:22.415535734 +0100 +++ libcpp/expr.c 2019-01-11 18:16:23.444726882 +0100 -@@ -788,16 +788,17 @@ cpp_classify_number (cpp_reader *pfile, +@@ -803,16 +803,17 @@ cpp_classify_number (cpp_reader *pfile, if ((result & CPP_N_WIDTH) == CPP_N_LARGE && CPP_OPTION (pfile, cpp_warn_long_long)) { @@ -123,4 +123,4 @@ + : N_("use of C99 long long integer constant")); } - result |= CPP_N_INTEGER; + if ((result & CPP_N_SIZE_T) == CPP_N_SIZE_T From 9b91a5481906298ed85361f99721171043abf120 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 11 Feb 2021 22:29:33 +0100 Subject: [PATCH 029/293] 11.0.0-0.19 --- gcc.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gcc.spec b/gcc.spec index bbb4c5e..c6cbd4a 100644 --- a/gcc.spec +++ b/gcc.spec @@ -809,6 +809,9 @@ to NVidia PTX capable devices if available. %endif rm -f libgomp/testsuite/*/*task-detach* +%ifarch %{arm} +rm -f gcc/testsuite/go.test/test/fixedbugs/issue19182.go +%endif echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE From 59cfaa7b4da901b826853d89e71f6133c47e8fb0 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 12 Feb 2021 16:58:07 +0100 Subject: [PATCH 030/293] Fix up help descriptions. --- gcc11-fortran-fdec-promotion.patch | 2 +- gcc11-fortran-fdec-sequence.patch | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc11-fortran-fdec-promotion.patch b/gcc11-fortran-fdec-promotion.patch index 8643405..36e0ff0 100644 --- a/gcc11-fortran-fdec-promotion.patch +++ b/gcc11-fortran-fdec-promotion.patch @@ -335,7 +335,7 @@ index d886c2f33ed..4ca2f93f2df 100644 +fdec-promotion +Fortran Var(flag_dec_promotion) -+Add support for type promotion in intrinsic arguments ++Add support for type promotion in intrinsic arguments. + fdec-structure Fortran Var(flag_dec_structure) diff --git a/gcc11-fortran-fdec-sequence.patch b/gcc11-fortran-fdec-sequence.patch index cef8b09..7b9ce71 100644 --- a/gcc11-fortran-fdec-sequence.patch +++ b/gcc11-fortran-fdec-sequence.patch @@ -23,11 +23,11 @@ index 4ca2f93f2df..019c798cf09 100644 +++ b/gcc/fortran/lang.opt @@ -509,6 +509,10 @@ fdec-promotion Fortran Var(flag_dec_promotion) - Add support for type promotion in intrinsic arguments + Add support for type promotion in intrinsic arguments. +fdec-sequence +Fortran Var(flag_dec_sequence) -+Add the SEQUENCE attribute by default if it's not present ++Add the SEQUENCE attribute by default if it's not present. + fdec-structure Fortran Var(flag_dec_structure) From 7ddd78661a654eebcc2ef9dbc991fafac95e7ed6 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 25 Feb 2021 10:41:54 +0100 Subject: [PATCH 031/293] 11.0.0-0.20 --- .gitignore | 1 + gcc.spec | 38 +++++++++++++++++++++++++++++++++++--- sources | 2 +- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index c1d8adb..afef67f 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,4 @@ /gcc-11.0.0-20210123.tar.xz /gcc-11.0.0-20210130.tar.xz /gcc-11.0.0-20210210.tar.xz +/gcc-11.0.0-20210225.tar.xz diff --git a/gcc.spec b/gcc.spec index c6cbd4a..0089508 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20210210 -%global gitrev ca24474172e3b0805f9f016bf2a6ef0352aeb755 +%global DATE 20210225 +%global gitrev 441dcf7e3bfd4aae42bb0d520cfc904fb14f84aa %global gcc_version 11.0.0 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.19%{?dist} +Release: %{gcc_release}.20%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3096,6 +3096,38 @@ end %endif %changelog +* Thu Feb 25 2021 Jakub Jelinek 11.0.0-0.20 +- update from trunk + - PRs analyzer/94596, analyzer/98969, analyzer/99196, c++/94034, c++/94546, + c++/95468, c++/95888, c++/96251, c++/96926, c++/97246, c++/97582, + c++/97742, c++/98718, c++/98741, c++/98988, c++/99023, c++/99030, + c++/99031, c++/99033, c++/99035, c++/99039, c++/99040, c++/99062, + c++/99063, c++/99071, c++/99072, c++/99074, c++/99116, c++/99132, + c++/99150, c++/99153, c++/99174, c++/99208, c/97172, c/99055, c/99136, + c/99224, debug/96997, debug/98755, fortran/98342, fortran/98686, + fortran/98897, fortran/98979, fortran/99010, fortran/99027, + fortran/99043, fortran/99060, fortran/99111, fortran/99124, + fortran/99146, fortran/99171, fortran/99206, fortran/99226, + inline-asm/98096, inline-asm/99123, ipa/97346, ipa/99003, ipa/99029, + ipa/99034, jit/99126, libfortran/95647, libfortran/98825, + libgcc/99236, libstdc++/88881, libstdc++/97549, libstdc++/98389, + libstdc++/99058, libstdc++/99077, libstdc++/99096, libstdc++/99181, + libstdc++/99261, middle-end/38474, middle-end/99007, middle-end/99109, + middle-end/99122, preprocessor/96391, rtl-optimization/96264, + rtl-optimization/98439, rtl-optimization/98791, + rtl-optimization/98872, rtl-optimization/99054, sanitizer/99106, + sanitizer/99168, target/85074, target/96166, target/97417, + target/98491, target/98657, target/98931, target/98998, target/99025, + target/99041, target/99100, target/99104, target/99113, target/99134, + target/99157, testsuite/99173, translation/99167, + tree-optimization/38474, tree-optimization/92879, + tree-optimization/98772, tree-optimization/99002, + tree-optimization/99024, tree-optimization/99026, + tree-optimization/99079, tree-optimization/99142, + tree-optimization/99149, tree-optimization/99165, + tree-optimization/99204, tree-optimization/99220, + tree-optimization/99225 + * Wed Feb 10 2021 Jakub Jelinek 11.0.0-0.19 - update from trunk - PRs analyzer/93355, analyzer/96374, analyzer/98575, analyzer/98918, diff --git a/sources b/sources index e6789ef..5301735 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-11.0.0-20210210.tar.xz) = 7820ba74e26edc4bb89e63b5b6010dff672b844ba69697a78fcc00b5163f377aa6e352d4f52aa62325ff13ee6778ac23683f7b489404de3a9bb66ceae738f319 +SHA512 (gcc-11.0.0-20210225.tar.xz) = 9aad03aa5dcc198fda4c465021ac4a0d62012aefdd1fdfa1019aaa8fabfe812bd82aa66997ddd219a7388881b5f2d24d9dd8eb754d7dfeae159af0ceeeef851b SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From c3f10cec8a00fba964edbe090e36ce4f80f83477 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 7 Mar 2021 10:18:50 +0100 Subject: [PATCH 032/293] 11.0.1-0.1 --- .gitignore | 1 + gcc.spec | 41 ++++++++++++--- gcc11-pr98338-workaround.patch | 17 ------- gcc11-pr99378-revert.patch | 21 ++++++++ gcc11-pr99388.patch | 92 ++++++++++++++++++++++++++++++++++ sources | 2 +- update-gcc.sh | 2 +- 7 files changed, 150 insertions(+), 26 deletions(-) delete mode 100644 gcc11-pr98338-workaround.patch create mode 100644 gcc11-pr99378-revert.patch create mode 100644 gcc11-pr99388.patch diff --git a/.gitignore b/.gitignore index afef67f..c33f299 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ /gcc-11.0.0-20210130.tar.xz /gcc-11.0.0-20210210.tar.xz /gcc-11.0.0-20210225.tar.xz +/gcc-11.0.1-20210307.tar.xz diff --git a/gcc.spec b/gcc.spec index 0089508..1dda96c 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,6 +1,6 @@ -%global DATE 20210225 -%global gitrev 441dcf7e3bfd4aae42bb0d520cfc904fb14f84aa -%global gcc_version 11.0.0 +%global DATE 20210307 +%global gitrev e13870b7c083e39ab17cc827bab5cb45387e8f19 +%global gcc_version 11.0.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. @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.20%{?dist} +Release: %{gcc_release}.1%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -271,7 +271,8 @@ Patch8: gcc11-foffload-default.patch Patch9: gcc11-Wno-format-security.patch Patch10: gcc11-rh1574936.patch Patch11: gcc11-d-shared-libphobos.patch -Patch12: gcc11-pr98338-workaround.patch +Patch12: gcc11-pr99378-revert.patch +Patch13: gcc11-pr99388.patch Patch100: gcc11-fortran-fdec-duplicates.patch Patch101: gcc11-fortran-flogical-as-integer.patch @@ -793,7 +794,8 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr98338-workaround~ +%patch12 -p0 -b .pr99378-revert~ +%patch13 -p0 -b .pr99388~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -808,7 +810,6 @@ to NVidia PTX capable devices if available. %patch109 -p1 -b .fortran-fdec-add-missing-indexes~ %endif -rm -f libgomp/testsuite/*/*task-detach* %ifarch %{arm} rm -f gcc/testsuite/go.test/test/fixedbugs/issue19182.go %endif @@ -3096,6 +3097,32 @@ end %endif %changelog +* Sun Mar 7 2021 Jakub Jelinek 11.0.1-0.1 +- update from trunk + - PRs ada/98996, ada/99020, ada/99095, ada/99264, analyzer/96374, + analyzer/99193, bootstrap/92002, bootstrap/98590, c++/82959, + c++/88146, c++/90333, c++/94521, c++/95451, c++/95615, c++/95616, + c++/95675, c++/95822, c++/96078, c++/96330, c++/96443, c++/96474, + c++/96960, c++/97034, c++/97587, c++/98118, c++/98318, c++/98810, + c++/98990, c++/99009, c++/99103, c++/99120, c++/99166, c++/99170, + c++/99176, c++/99213, c++/99245, c++/99251, c++/99287, c++/99294, + c++/99344, c++/99362, c++/99365, c++/99374, c++/99377, c++/99389, + c/99137, c/99275, c/99304, c/99323, c/99324, c/99325, c/99363, + d/99337, debug/66668, debug/99090, debug/99319, fortran/57871, + fortran/99300, fortran/99303, fortran/99355, gcov-profile/97461, + gcov-profile/99105, gcov-profile/99385, gcov-profile/99406, ipa/98078, + ipa/98338, libbacktrace/98818, libfortran/81986, libfortran/99218, + libgomp/98738, libstdc++/99265, libstdc++/99270, libstdc++/99301, + libstdc++/99382, libstdc++/99396, middle-end/93235, middle-end/94655, + middle-end/95757, middle-end/96963, middle-end/97172, + middle-end/97855, middle-end/99276, middle-end/99281, + middle-end/99295, middle-end/99322, other/99288, + rtl-optimization/99376, target/44107, target/48097, target/95798, + target/98996, target/99085, target/99234, target/99271, target/99279, + target/99313, target/99321, target/99381, testsuite/99233, + tree-optimization/80635, tree-optimization/99253 +- fix debug info for __fp16 constants (PR debug/99388) + * Thu Feb 25 2021 Jakub Jelinek 11.0.0-0.20 - update from trunk - PRs analyzer/94596, analyzer/98969, analyzer/99196, c++/94034, c++/94546, diff --git a/gcc11-pr98338-workaround.patch b/gcc11-pr98338-workaround.patch deleted file mode 100644 index 0c8e248..0000000 --- a/gcc11-pr98338-workaround.patch +++ /dev/null @@ -1,17 +0,0 @@ -2020-12-17 Jakub Jelinek - - PR bootstrap/98338 - * range-op.cc (operator_plus::op2_range): Tail-call op1_range - to work-around ICF profile merging ICE during profiledbootstrap. - ---- gcc/range-op.cc.jj 2020-12-17 16:06:39.789526868 +0100 -+++ gcc/range-op.cc 2020-12-17 16:19:18.127240700 +0100 -@@ -950,7 +950,7 @@ operator_plus::op2_range (irange &r, tre - const irange &lhs, - const irange &op1) const - { -- return range_op_handler (MINUS_EXPR, type)->fold_range (r, type, lhs, op1); -+ return op1_range (r, type, lhs, op1); - } - - diff --git a/gcc11-pr99378-revert.patch b/gcc11-pr99378-revert.patch new file mode 100644 index 0000000..bd043cb --- /dev/null +++ b/gcc11-pr99378-revert.patch @@ -0,0 +1,21 @@ +Revert: +2021-03-05 Vladimir N. Makarov + + PR target/99378 + * lra-constraints.c (process_address_1): Skip decomposing address + for asm insn operand with unknown constraint. + +--- gcc/lra-constraints.c ++++ gcc/lra-constraints.c +@@ -3450,9 +3450,8 @@ process_address_1 (int nop, bool check_only_p, + i.e. bcst_mem_operand in i386 backend. */ + else if (MEM_P (mem) + && !(INSN_CODE (curr_insn) < 0 +- && (cn == CONSTRAINT__UNKNOWN +- || (get_constraint_type (cn) == CT_FIXED_FORM +- && constraint_satisfied_p (op, cn))))) ++ && get_constraint_type (cn) == CT_FIXED_FORM ++ && constraint_satisfied_p (op, cn))) + decompose_mem_address (&ad, mem); + else if (GET_CODE (op) == SUBREG + && MEM_P (SUBREG_REG (op))) diff --git a/gcc11-pr99388.patch b/gcc11-pr99388.patch new file mode 100644 index 0000000..4ecfdc0 --- /dev/null +++ b/gcc11-pr99388.patch @@ -0,0 +1,92 @@ +2021-03-04 Jakub Jelinek + + PR debug/99388 + * dwarf2out.c (insert_float): Change return type from void to + unsigned, handle GET_MODE_SIZE (mode) == 2 and return element size. + (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): + Adjust callers. + +--- gcc/dwarf2out.c.jj 2021-03-03 09:53:55.391191719 +0100 ++++ gcc/dwarf2out.c 2021-03-04 15:51:23.174396552 +0100 +@@ -3825,7 +3825,7 @@ static void add_data_member_location_att + static bool add_const_value_attribute (dw_die_ref, rtx); + static void insert_int (HOST_WIDE_INT, unsigned, unsigned char *); + static void insert_wide_int (const wide_int &, unsigned char *, int); +-static void insert_float (const_rtx, unsigned char *); ++static unsigned insert_float (const_rtx, unsigned char *); + static rtx rtl_for_decl_location (tree); + static bool add_location_or_const_value_attribute (dw_die_ref, tree, bool); + static bool tree_add_const_value_attribute (dw_die_ref, tree); +@@ -16292,11 +16292,12 @@ mem_loc_descriptor (rtx rtl, machine_mod + scalar_float_mode float_mode = as_a (mode); + unsigned int length = GET_MODE_SIZE (float_mode); + unsigned char *array = ggc_vec_alloc (length); ++ unsigned int elt_size = insert_float (rtl, array); + +- insert_float (rtl, array); + mem_loc_result->dw_loc_oprnd2.val_class = dw_val_class_vec; +- mem_loc_result->dw_loc_oprnd2.v.val_vec.length = length / 4; +- mem_loc_result->dw_loc_oprnd2.v.val_vec.elt_size = 4; ++ mem_loc_result->dw_loc_oprnd2.v.val_vec.length ++ = length / elt_size; ++ mem_loc_result->dw_loc_oprnd2.v.val_vec.elt_size = elt_size; + mem_loc_result->dw_loc_oprnd2.v.val_vec.array = array; + } + } +@@ -16866,11 +16867,11 @@ loc_descriptor (rtx rtl, machine_mode mo + { + unsigned int length = GET_MODE_SIZE (smode); + unsigned char *array = ggc_vec_alloc (length); ++ unsigned int elt_size = insert_float (rtl, array); + +- insert_float (rtl, array); + loc_result->dw_loc_oprnd2.val_class = dw_val_class_vec; +- loc_result->dw_loc_oprnd2.v.val_vec.length = length / 4; +- loc_result->dw_loc_oprnd2.v.val_vec.elt_size = 4; ++ loc_result->dw_loc_oprnd2.v.val_vec.length = length / elt_size; ++ loc_result->dw_loc_oprnd2.v.val_vec.elt_size = elt_size; + loc_result->dw_loc_oprnd2.v.val_vec.array = array; + } + } +@@ -19689,7 +19690,7 @@ insert_wide_int (const wide_int &val, un + + /* Writes floating point values to dw_vec_const array. */ + +-static void ++static unsigned + insert_float (const_rtx rtl, unsigned char *array) + { + long val[4]; +@@ -19699,11 +19700,19 @@ insert_float (const_rtx rtl, unsigned ch + real_to_target (val, CONST_DOUBLE_REAL_VALUE (rtl), mode); + + /* real_to_target puts 32-bit pieces in each long. Pack them. */ ++ if (GET_MODE_SIZE (mode) < 4) ++ { ++ gcc_assert (GET_MODE_SIZE (mode) == 2); ++ insert_int (val[0], 2, array); ++ return 2; ++ } ++ + for (i = 0; i < GET_MODE_SIZE (mode) / 4; i++) + { + insert_int (val[i], 4, array); + array += 4; + } ++ return 4; + } + + /* Attach a DW_AT_const_value attribute for a variable or a parameter which +@@ -19752,9 +19761,10 @@ add_const_value_attribute (dw_die_ref di + scalar_float_mode mode = as_a (GET_MODE (rtl)); + unsigned int length = GET_MODE_SIZE (mode); + unsigned char *array = ggc_vec_alloc (length); ++ unsigned int elt_size = insert_float (rtl, array); + +- insert_float (rtl, array); +- add_AT_vec (die, DW_AT_const_value, length / 4, 4, array); ++ add_AT_vec (die, DW_AT_const_value, length / elt_size, elt_size, ++ array); + } + return true; + diff --git a/sources b/sources index 5301735..cd3423a 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-11.0.0-20210225.tar.xz) = 9aad03aa5dcc198fda4c465021ac4a0d62012aefdd1fdfa1019aaa8fabfe812bd82aa66997ddd219a7388881b5f2d24d9dd8eb754d7dfeae159af0ceeeef851b +SHA512 (gcc-11.0.1-20210307.tar.xz) = 1efa50991f55de59270af6ff134fc1818ca23e30bdc064f79916e358e46daf301a8d2d3e1afcde58a00a521e8bc2136f8cc5f21c5e05ccd80fa8e5c7e9324e9b SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 diff --git a/update-gcc.sh b/update-gcc.sh index dc695f2..a0fe80c 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -3,5 +3,5 @@ git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 d=`date --iso | sed 's/-//g'` -git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-11.0.0-$d/ $1 | xz -9e > gcc-11.0.0-$d.tar.xz +git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-11.0.1-$d/ $1 | xz -9e > gcc-11.0.1-$d.tar.xz rm -rf gcc-dir.tmp From e25bc116370a6221bf85184b240daaa213518641 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 19 Mar 2021 15:52:54 +0100 Subject: [PATCH 033/293] 11.0.1-0.2 --- .gitignore | 2 + gcc.spec | 125 +++++++--- gcc11-isl-dl2.patch | 71 ++++++ gcc11-pr91710.patch | 96 ++++++++ gcc11-pr99230.patch | 137 +++++++++++ gcc11-pr99378-revert.patch | 101 ++++++-- gcc11-pr99490.patch | 473 +++++++++++++++++++++++++++++++++++++ gcc11-pr99562.patch | 39 +++ gcc11-pr99650.patch | 44 ++++ sources | 3 +- 10 files changed, 1047 insertions(+), 44 deletions(-) create mode 100644 gcc11-isl-dl2.patch create mode 100644 gcc11-pr91710.patch create mode 100644 gcc11-pr99230.patch create mode 100644 gcc11-pr99490.patch create mode 100644 gcc11-pr99562.patch create mode 100644 gcc11-pr99650.patch diff --git a/.gitignore b/.gitignore index c33f299..1c11cc9 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,5 @@ /gcc-11.0.0-20210210.tar.xz /gcc-11.0.0-20210225.tar.xz /gcc-11.0.1-20210307.tar.xz +/gcc-11.0.1-20210319.tar.xz +/isl-0.18.tar.bz2 diff --git a/gcc.spec b/gcc.spec index 1dda96c..e7286c9 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,4 +1,4 @@ -%global DATE 20210307 +%global DATE 20210319 %global gitrev e13870b7c083e39ab17cc827bab5cb45387e8f19 %global gcc_version 11.0.1 %global gcc_major 11 @@ -145,7 +145,8 @@ Source1: nvptx-tools-%{nvptx_tools_gitrev}.tar.xz # git --git-dir=newlib-cygwin-dir.tmp/.git archive --prefix=newlib-cygwin-%%{newlib_cygwin_gitrev}/ %%{newlib_cygwin_gitrev} ":(exclude)newlib/libc/sys/linux/include/rpc/*.[hx]" | xz -9e > newlib-cygwin-%%{newlib_cygwin_gitrev}.tar.xz # rm -rf newlib-cygwin-dir.tmp Source2: newlib-cygwin-%{newlib_cygwin_gitrev}.tar.xz -%global isl_version 0.16.1 +%global isl_version 0.18 +Source3: https://gcc.gnu.org/pub/gcc/infrastructure/isl-%{isl_version}.tar.bz2 URL: http://gcc.gnu.org # Need binutils with -pie support >= 2.14.90.0.4-4 # Need binutils which can omit dot symbols and overlap .opd on ppc64 >= 2.15.91.0.2-4 @@ -201,15 +202,6 @@ BuildRequires: gcc-gnat >= 3.1, libgnat >= 3.1 %ifarch ia64 BuildRequires: libunwind >= 0.98 %endif -%if %{build_isl} -BuildRequires: isl = %{isl_version} -BuildRequires: isl-devel = %{isl_version} -%if 0%{?__isa_bits} == 64 -Requires: libisl.so.15()(64bit) -%else -Requires: libisl.so.15 -%endif -%endif %if %{build_libstdcxx_docs} BuildRequires: doxygen >= 1.7.1 BuildRequires: graphviz, dblatex, texlive-collection-latex, docbook5-style-xsl @@ -265,14 +257,20 @@ Patch2: gcc11-sparc-config-detection.patch Patch3: gcc11-libgomp-omp_h-multilib.patch Patch4: gcc11-libtool-no-rpath.patch Patch5: gcc11-isl-dl.patch -Patch6: gcc11-libstdc++-docs.patch -Patch7: gcc11-no-add-needed.patch -Patch8: gcc11-foffload-default.patch -Patch9: gcc11-Wno-format-security.patch -Patch10: gcc11-rh1574936.patch -Patch11: gcc11-d-shared-libphobos.patch -Patch12: gcc11-pr99378-revert.patch -Patch13: gcc11-pr99388.patch +Patch6: gcc11-isl-dl2.patch +Patch7: gcc11-libstdc++-docs.patch +Patch8: gcc11-no-add-needed.patch +Patch9: gcc11-foffload-default.patch +Patch10: gcc11-Wno-format-security.patch +Patch11: gcc11-rh1574936.patch +Patch12: gcc11-d-shared-libphobos.patch +Patch13: gcc11-pr99378-revert.patch +Patch14: gcc11-pr99388.patch +Patch15: gcc11-pr91710.patch +Patch16: gcc11-pr99230.patch +Patch17: gcc11-pr99490.patch +Patch18: gcc11-pr99562.patch +Patch19: gcc11-pr99650.patch Patch100: gcc11-fortran-fdec-duplicates.patch Patch101: gcc11-fortran-flogical-as-integer.patch @@ -776,26 +774,32 @@ by default add PTX code into the binaries, which can be offloaded to NVidia PTX capable devices if available. %prep -%setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 +%setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 -a 3 %patch0 -p0 -b .hack~ %patch2 -p0 -b .sparc-config-detection~ %patch3 -p0 -b .libgomp-omp_h-multilib~ %patch4 -p0 -b .libtool-no-rpath~ %if %{build_isl} %patch5 -p0 -b .isl-dl~ +%patch6 -p0 -b .isl-dl2~ %endif %if %{build_libstdcxx_docs} -%patch6 -p0 -b .libstdc++-docs~ +%patch7 -p0 -b .libstdc++-docs~ %endif -%patch7 -p0 -b .no-add-needed~ -%patch8 -p0 -b .foffload-default~ -%patch9 -p0 -b .Wno-format-security~ +%patch8 -p0 -b .no-add-needed~ +%patch9 -p0 -b .foffload-default~ +%patch10 -p0 -b .Wno-format-security~ %if 0%{?fedora} >= 29 || 0%{?rhel} > 7 -%patch10 -p0 -b .rh1574936~ +%patch11 -p0 -b .rh1574936~ %endif -%patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr99378-revert~ -%patch13 -p0 -b .pr99388~ +%patch12 -p0 -b .d-shared-libphobos~ +%patch13 -p0 -b .pr99378-revert~ +%patch14 -p0 -b .pr99388~ +%patch15 -p0 -b .pr91710~ +%patch16 -p0 -b .pr99230~ +%patch17 -p0 -b .pr99490~ +%patch18 -p0 -b .pr99562~ +%patch19 -p0 -b .pr99650~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -910,6 +914,28 @@ rm -rf obj-%{gcc_target_platform} mkdir obj-%{gcc_target_platform} cd obj-%{gcc_target_platform} +%if %{build_isl} +mkdir isl-build isl-install +%ifarch s390 s390x +ISL_FLAG_PIC=-fPIC +%else +ISL_FLAG_PIC=-fpic +%endif +cd isl-build +sed -i 's|libisl|libgcc11privateisl|g' \ + ../../isl-%{isl_version}/Makefile.{am,in} +../../isl-%{isl_version}/configure \ + CC=/usr/bin/gcc CXX=/usr/bin/g++ \ + CFLAGS="${CFLAGS:-%optflags} $ISL_FLAG_PIC" --prefix=`cd ..; pwd`/isl-install +make %{?_smp_mflags} +make install +cd ../isl-install/lib +rm libgcc11privateisl.so{,.15} +mv libgcc11privateisl.so.15.3.0 libisl.so.15 +ln -sf libisl.so.15 libisl.so +cd ../.. +%endif + enablelgo= enablelada= enablelobjc= @@ -953,7 +979,7 @@ CONFIGURE_OPTS="\ %endif --enable-plugin --enable-initfini-array \ %if %{build_isl} - --with-isl \ + --with-isl=`pwd`/isl-install \ %else --without-isl \ %endif @@ -1097,6 +1123,10 @@ make jit.sphinx.html make jit.sphinx.install-html jit_htmldir=`pwd`/../../rpm.doc/libgccjit-devel/html cd .. +%if %{build_isl} +cp -a isl-install/lib/libisl.so.15 gcc/ +%endif + # Make generated man pages even if Pod::Man is not new enough perl -pi -e 's/head3/head2/' ../contrib/texi2pod.pl for i in ../gcc/doc/*.texi; do @@ -1223,6 +1253,10 @@ chmod 644 %{buildroot}%{_infodir}/gnat* FULLPATH=%{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} FULLEPATH=%{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} +%if %{build_isl} +cp -a isl-install/lib/libisl.so.15 $FULLPATH/ +%endif + # fix some things ln -sf gcc %{buildroot}%{_prefix}/bin/cc rm -f %{buildroot}%{_prefix}/lib/cpp @@ -2296,6 +2330,9 @@ end %if %{build_libasan} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libsanitizer.spec %endif +%if %{build_isl} +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libisl.so.* +%endif %ifarch sparcv9 ppc %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/crt*.o @@ -3097,6 +3134,36 @@ end %endif %changelog +* Fri Mar 19 2021 Jakub Jelinek 11.0.1-0.2 +- update from trunk + - PRs c++/90448, c++/96268, c++/96749, c++/97973, c++/98480, c++/98704, + c++/99047, c++/99108, c++/99238, c++/99248, c++/99285, c++/99423, + c++/99436, c++/99459, c++/99472, c++/99496, c++/99500, c++/99507, + c++/99508, c++/99509, c++/99528, c++/99601, c++/99613, c++/99617, + fortran/49278, fortran/96983, fortran/97927, fortran/98858, + fortran/99125, fortran/99205, fortran/99345, fortran/99514, + fortran/99545, ipa/99517, libstdc++/99172, libstdc++/99341, + libstdc++/99413, libstdc++/99536, libstdc++/99537, middle-end/97631, + middle-end/98266, middle-end/99502, middle-end/99641, objc++/49070, + sanitizer/98920, target/98092, target/98959, target/99070, + target/99094, target/99102, target/99422, target/99437, target/99454, + target/99463, target/99464, target/99492, target/99504, target/99542, + target/99563, target/99592, target/99600, testsuite/97680, + testsuite/98245, testsuite/99292, testsuite/99498, testsuite/99626, + testsuite/99636, tree-optimization/98834, tree-optimization/99305, + tree-optimization/99489, tree-optimization/99510, + tree-optimization/99523, tree-optimization/99544 + - fix ARM ICE in neon_output_shift_immediate (#1922599, PR target/99593) +- avoid false positive aarch64 -Wpsabi notes in some cases (PR target/91710) +- fix a -fcompare-debug failure caused by C FE bug (PR debug/99230) +- fix up -gdwarf-5 -gsplit-dwarf ranges handling (PR debug/99490) +- fix up handling of > 64 bit constants in dwarf2out (PR debug/99562, + PR debug/66728) +- reject invalid C++ structured bindings that need reference to void + (PR c++/99650) +- include private isl 0.18 in the package instead of relying on old + distro version + * Sun Mar 7 2021 Jakub Jelinek 11.0.1-0.1 - update from trunk - PRs ada/98996, ada/99020, ada/99095, ada/99264, analyzer/96374, diff --git a/gcc11-isl-dl2.patch b/gcc11-isl-dl2.patch new file mode 100644 index 0000000..ac14ed3 --- /dev/null +++ b/gcc11-isl-dl2.patch @@ -0,0 +1,71 @@ +2011-04-04 Jakub Jelinek + + * toplev.c (toplev_main_argv): New variable. + (toplev_main): Initialize it. + * graphite.c (init_isl_pointers): Load libisl.so.15 from gcc's private + directory. + +--- gcc/toplev.c.jj 2008-12-09 23:59:10.000000000 +0100 ++++ gcc/toplev.c 2009-01-27 14:33:52.000000000 +0100 +@@ -117,6 +117,8 @@ static void compile_file (void); + /* True if we don't need a backend (e.g. preprocessing only). */ + static bool no_backend; + ++const char **toplev_main_argv; ++ + /* Decoded options, and number of such options. */ + struct cl_decoded_option *save_decoded_options; + unsigned int save_decoded_options_count; +@@ -2287,6 +2289,8 @@ toplev::main (int argc, char **argv) + + expandargv (&argc, &argv); + ++ toplev_main_argv = CONST_CAST2 (const char **, char **, argv); ++ + /* Initialization of GCC's environment, and diagnostics. */ + general_init (argv[0], m_init_signals); + +--- gcc/graphite.c.jj 2010-12-01 10:24:32.000000000 -0500 ++++ gcc/graphite.c 2010-12-01 11:46:07.832118193 -0500 +@@ -64,11 +64,39 @@ __typeof (isl_pointers__) isl_pointers__ + static bool + init_isl_pointers (void) + { +- void *h; ++ void *h = NULL; ++ extern const char **toplev_main_argv; ++ char *buf, *p; ++ size_t len; + + if (isl_pointers__.inited) + return isl_pointers__.h != NULL; +- h = dlopen ("libisl.so.15", RTLD_LAZY); ++ len = progname - toplev_main_argv[0]; ++ buf = XALLOCAVAR (char, len + sizeof "libisl.so.15"); ++ memcpy (buf, toplev_main_argv[0], len); ++ strcpy (buf + len, "libisl.so.15"); ++ len += sizeof "libisl.so.15"; ++ p = strstr (buf, "/libexec/"); ++ if (p != NULL) ++ { ++ while (1) ++ { ++ char *q = strstr (p + 8, "/libexec/"); ++ if (q == NULL) ++ break; ++ p = q; ++ } ++ memmove (p + 4, p + 8, len - (p + 8 - buf)); ++ h = dlopen (buf, RTLD_LAZY); ++ if (h == NULL) ++ { ++ len = progname - toplev_main_argv[0]; ++ memcpy (buf, toplev_main_argv[0], len); ++ strcpy (buf + len, "libisl.so.15"); ++ } ++ } ++ if (h == NULL) ++ h = dlopen (buf, RTLD_LAZY); + isl_pointers__.h = h; + if (h == NULL) + return false; diff --git a/gcc11-pr91710.patch b/gcc11-pr91710.patch new file mode 100644 index 0000000..fde604c --- /dev/null +++ b/gcc11-pr91710.patch @@ -0,0 +1,96 @@ +2021-03-18 Jakub Jelinek + + PR target/91710 + * config/aarch64/aarch64.c (aarch64_function_arg_alignment): Change + abi_break argument from bool * to unsigned *, store there the pre-GCC 9 + alignment. + (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Adjust callers. + (aarch64_function_arg_regno_p): Likewise. Only emit -Wpsabi note if + the old and new alignment after applying MIN/MAX to it is different. + + * gcc.target/aarch64/pr91710.c: New test. + +--- gcc/config/aarch64/aarch64.c.jj 2021-03-18 15:14:51.721425223 +0100 ++++ gcc/config/aarch64/aarch64.c 2021-03-18 16:35:04.437115447 +0100 +@@ -5938,9 +5938,9 @@ aarch64_vfp_is_call_candidate (cumulativ + + static unsigned int + aarch64_function_arg_alignment (machine_mode mode, const_tree type, +- bool *abi_break) ++ unsigned int *abi_break) + { +- *abi_break = false; ++ *abi_break = 0; + if (!type) + return GET_MODE_ALIGNMENT (mode); + +@@ -5982,7 +5982,7 @@ aarch64_function_arg_alignment (machine_ + + if (bitfield_alignment > alignment) + { +- *abi_break = true; ++ *abi_break = alignment; + return bitfield_alignment; + } + +@@ -6004,7 +6004,7 @@ aarch64_layout_arg (cumulative_args_t pc + int ncrn, nvrn, nregs; + bool allocate_ncrn, allocate_nvrn; + HOST_WIDE_INT size; +- bool abi_break; ++ unsigned int abi_break; + + /* We need to do this once per argument. */ + if (pcum->aapcs_arg_processed) +@@ -6322,14 +6322,19 @@ aarch64_function_arg_regno_p (unsigned r + static unsigned int + aarch64_function_arg_boundary (machine_mode mode, const_tree type) + { +- bool abi_break; ++ unsigned int abi_break; + unsigned int alignment = aarch64_function_arg_alignment (mode, type, + &abi_break); ++ alignment = MIN (MAX (alignment, PARM_BOUNDARY), STACK_BOUNDARY); + if (abi_break & warn_psabi) +- inform (input_location, "parameter passing for argument of type " +- "%qT changed in GCC 9.1", type); ++ { ++ abi_break = MIN (MAX (abi_break, PARM_BOUNDARY), STACK_BOUNDARY); ++ if (alignment != abi_break) ++ inform (input_location, "parameter passing for argument of type " ++ "%qT changed in GCC 9.1", type); ++ } + +- return MIN (MAX (alignment, PARM_BOUNDARY), STACK_BOUNDARY); ++ return alignment; + } + + /* Implement TARGET_GET_RAW_RESULT_MODE and TARGET_GET_RAW_ARG_MODE. */ +@@ -16616,7 +16621,7 @@ aarch64_gimplify_va_arg_expr (tree valis + f_stack, NULL_TREE); + size = int_size_in_bytes (type); + +- bool abi_break; ++ unsigned int abi_break; + align + = aarch64_function_arg_alignment (mode, type, &abi_break) / BITS_PER_UNIT; + +--- gcc/testsuite/gcc.target/aarch64/pr91710.c.jj 2021-03-18 16:42:33.529232710 +0100 ++++ gcc/testsuite/gcc.target/aarch64/pr91710.c 2021-03-18 16:42:07.271518121 +0100 +@@ -0,0 +1,16 @@ ++/* PR target/91710 */ ++/* { dg-do compile } */ ++ ++struct S { unsigned int i:4; }; ++ ++unsigned int test1(struct S s) { /* { dg-bogus "parameter passing for argument of type" } */ ++ return s.i; ++} ++ ++unsigned int test2(unsigned x, struct S s) { /* { dg-bogus "parameter passing for argument of type" } */ ++ return x - s.i; ++} ++ ++unsigned int test3(unsigned x, unsigned y, struct S s) { /* { dg-bogus "parameter passing for argument of type" } */ ++ return x - y - s.i; ++} diff --git a/gcc11-pr99230.patch b/gcc11-pr99230.patch new file mode 100644 index 0000000..75cf6d2 --- /dev/null +++ b/gcc11-pr99230.patch @@ -0,0 +1,137 @@ +2021-03-18 Jakub Jelinek + + PR debug/99230 + * c-gimplify.c (c_genericize_control_stmt): Handle STATEMENT_LIST. + + * cp-gimplify.c (cp_genericize_r) : Remove + special code, instead call c_genericize_control_stmt. + + * gcc.dg/pr99230.c: New test. + +--- gcc/c-family/c-gimplify.c.jj 2021-01-04 10:25:50.402102825 +0100 ++++ gcc/c-family/c-gimplify.c 2021-03-17 19:19:20.052702095 +0100 +@@ -497,6 +497,35 @@ c_genericize_control_stmt (tree *stmt_p, + genericize_omp_for_stmt (stmt_p, walk_subtrees, data, func, lh); + break; + ++ case STATEMENT_LIST: ++ if (TREE_SIDE_EFFECTS (stmt)) ++ { ++ tree_stmt_iterator i; ++ int nondebug_stmts = 0; ++ bool clear_side_effects = true; ++ /* Genericization can clear TREE_SIDE_EFFECTS, e.g. when ++ transforming an IF_STMT into COND_EXPR. If such stmt ++ appears in a STATEMENT_LIST that contains only that ++ stmt and some DEBUG_BEGIN_STMTs, without -g where the ++ STATEMENT_LIST wouldn't be present at all the resulting ++ expression wouldn't have TREE_SIDE_EFFECTS set, so make sure ++ to clear it even on the STATEMENT_LIST in such cases. */ ++ for (i = tsi_start (stmt); !tsi_end_p (i); tsi_next (&i)) ++ { ++ tree t = tsi_stmt (i); ++ if (TREE_CODE (t) != DEBUG_BEGIN_STMT && nondebug_stmts < 2) ++ nondebug_stmts++; ++ walk_tree_1 (tsi_stmt_ptr (i), func, data, NULL, lh); ++ if (TREE_CODE (t) != DEBUG_BEGIN_STMT ++ && (nondebug_stmts > 1 || TREE_SIDE_EFFECTS (tsi_stmt (i)))) ++ clear_side_effects = false; ++ } ++ if (clear_side_effects) ++ TREE_SIDE_EFFECTS (stmt) = 0; ++ *walk_subtrees = 0; ++ } ++ break; ++ + default: + break; + } +--- gcc/cp/cp-gimplify.c.jj 2021-03-04 09:42:27.602123905 +0100 ++++ gcc/cp/cp-gimplify.c 2021-03-17 19:38:42.743888589 +0100 +@@ -1464,35 +1464,6 @@ cp_genericize_r (tree *stmt_p, int *walk + walk_subtrees = 0; + break; + +- case STATEMENT_LIST: +- if (TREE_SIDE_EFFECTS (stmt)) +- { +- tree_stmt_iterator i; +- int nondebug_stmts = 0; +- bool clear_side_effects = true; +- /* Genericization can clear TREE_SIDE_EFFECTS, e.g. when +- transforming an IF_STMT into COND_EXPR. If such stmt +- appears in a STATEMENT_LIST that contains only that +- stmt and some DEBUG_BEGIN_STMTs, without -g where the +- STATEMENT_LIST wouldn't be present at all the resulting +- expression wouldn't have TREE_SIDE_EFFECTS set, so make sure +- to clear it even on the STATEMENT_LIST in such cases. */ +- for (i = tsi_start (stmt); !tsi_end_p (i); tsi_next (&i)) +- { +- tree t = tsi_stmt (i); +- if (TREE_CODE (t) != DEBUG_BEGIN_STMT && nondebug_stmts < 2) +- nondebug_stmts++; +- cp_walk_tree (tsi_stmt_ptr (i), cp_genericize_r, data, NULL); +- if (TREE_CODE (t) != DEBUG_BEGIN_STMT +- && (nondebug_stmts > 1 || TREE_SIDE_EFFECTS (tsi_stmt (i)))) +- clear_side_effects = false; +- } +- if (clear_side_effects) +- TREE_SIDE_EFFECTS (stmt) = 0; +- *walk_subtrees = 0; +- } +- break; +- + case OMP_DISTRIBUTE: + /* Need to explicitly instantiate copy ctors on class iterators of + composite distribute parallel for. */ +@@ -1566,6 +1537,7 @@ cp_genericize_r (tree *stmt_p, int *walk + case OMP_SIMD: + case OMP_LOOP: + case OACC_LOOP: ++ case STATEMENT_LIST: + /* These cases are handled by shared code. */ + c_genericize_control_stmt (stmt_p, walk_subtrees, data, + cp_genericize_r, cp_walk_subtrees); +--- gcc/testsuite/gcc.dg/pr99230.c.jj 2021-03-17 19:34:26.633711074 +0100 ++++ gcc/testsuite/gcc.dg/pr99230.c 2021-03-17 19:33:30.210332887 +0100 +@@ -0,0 +1,40 @@ ++/* PR debug/99230 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 --param logical-op-non-short-circuit=0 -fcompare-debug --param=jump-table-max-growth-ratio-for-speed=5000" } */ ++ ++extern void fn2 (void); ++extern void fn3 (int); ++int a, b; ++void ++fn1 (void) ++{ ++ int c; ++ short d; ++ switch (a) { ++ case 22000: ++ fn2 (); ++ case 22300: ++ b = 0; ++ case 22600: ++ case 22601: ++ case 22900: ++ fn3 (1); ++ case 20100: ++ fn3 (2); ++ case 20200: ++ fn3 (3); ++ case 20300: ++ fn3 (4); ++ case 20400: ++ fn3 (5); ++ case 20310: ++ fn3 (4); ++ case 20410: ++ fn3 (5); ++ } ++ if (d || c) { ++ do ++ ; ++ while (0); ++ } ++} diff --git a/gcc11-pr99378-revert.patch b/gcc11-pr99378-revert.patch index bd043cb..ea7f937 100644 --- a/gcc11-pr99378-revert.patch +++ b/gcc11-pr99378-revert.patch @@ -1,21 +1,94 @@ Revert: +2021-03-18 Vladimir N. Makarov + + PR target/99422 + * lra-constraints.c (process_address_1): Use lookup_constraint + only for a single constraint. + +2021-03-10 Vladimir N. Makarov + + PR target/99422 + * lra-constraints.c (process_address_1): Don't check unknown + constraint, use X for empty constraint. + +2021-03-09 Vladimir N. Makarov + + PR target/99454 + * lra-constraints.c (process_address_1): Process constraint 'g' + separately and digital constraints containing more one digit. + +2021-03-09 Vladimir N. Makarov + + PR target/99454 + * lra-constraints.c (process_address_1): Process 0..9 constraints + in process_address_1. + +2021-03-08 Vladimir N. Makarov + + PR target/99422 + * lra-constraints.c (skip_contraint_modifiers): New function. + (process_address_1): Use it before lookup_constraint call. + 2021-03-05 Vladimir N. Makarov PR target/99378 * lra-constraints.c (process_address_1): Skip decomposing address for asm insn operand with unknown constraint. ---- gcc/lra-constraints.c -+++ gcc/lra-constraints.c -@@ -3450,9 +3450,8 @@ process_address_1 (int nop, bool check_only_p, - i.e. bcst_mem_operand in i386 backend. */ - else if (MEM_P (mem) - && !(INSN_CODE (curr_insn) < 0 -- && (cn == CONSTRAINT__UNKNOWN -- || (get_constraint_type (cn) == CT_FIXED_FORM -- && constraint_satisfied_p (op, cn))))) -+ && get_constraint_type (cn) == CT_FIXED_FORM -+ && constraint_satisfied_p (op, cn))) - decompose_mem_address (&ad, mem); - else if (GET_CODE (op) == SUBREG - && MEM_P (SUBREG_REG (op))) +--- gcc/lra-constraints.c.jj 2021-03-19 13:53:38.094778251 +0100 ++++ gcc/lra-constraints.c 2021-03-19 14:23:16.017389900 +0100 +@@ -3392,21 +3392,6 @@ equiv_address_substitution (struct addre + return change_p; + } + +-/* Skip all modifiers and whitespaces in constraint STR and return the +- result. */ +-static const char * +-skip_contraint_modifiers (const char *str) +-{ +- for (;;str++) +- switch (*str) +- { +- case '+' : case '&' : case '=': case '*': case ' ': case '\t': +- case '$': case '^' : case '%': case '?': case '!': +- break; +- default: return str; +- } +-} +- + /* Major function to make reloads for an address in operand NOP or + check its correctness (If CHECK_ONLY_P is true). The supported + cases are: +@@ -3441,8 +3426,8 @@ process_address_1 (int nop, bool check_o + HOST_WIDE_INT scale; + rtx op = *curr_id->operand_loc[nop]; + rtx mem = extract_mem_from_operand (op); +- const char *constraint; +- enum constraint_num cn; ++ const char *constraint = curr_static_id->operand[nop].constraint; ++ enum constraint_num cn = lookup_constraint (constraint); + bool change_p = false; + + if (MEM_P (mem) +@@ -3450,21 +3435,6 @@ process_address_1 (int nop, bool check_o + && GET_CODE (XEXP (mem, 0)) == SCRATCH) + return false; + +- constraint +- = skip_contraint_modifiers (curr_static_id->operand[nop].constraint); +- if (IN_RANGE (constraint[0], '0', '9')) +- { +- char *end; +- unsigned long dup = strtoul (constraint, &end, 10); +- constraint +- = skip_contraint_modifiers (curr_static_id->operand[dup].constraint); +- } +- if (*skip_contraint_modifiers (constraint +- + CONSTRAINT_LEN (constraint[0], +- constraint)) != '\0') +- cn = CONSTRAINT__UNKNOWN; +- else +- cn = lookup_constraint (*constraint == '\0' ? "X" : constraint); + if (insn_extra_address_constraint (cn) + /* When we find an asm operand with an address constraint that + doesn't satisfy address_operand to begin with, we clear diff --git a/gcc11-pr99490.patch b/gcc11-pr99490.patch new file mode 100644 index 0000000..abda126 --- /dev/null +++ b/gcc11-pr99490.patch @@ -0,0 +1,473 @@ +2021-03-12 Jakub Jelinek + + PR debug/99490 + * dwarf2out.c (debug_ranges_dwo_section): New variable. + (DW_RANGES_IDX_SKELETON): Define. + (struct dw_ranges): Add begin_entry and end_entry members. + (DEBUG_DWO_RNGLISTS_SECTION): Define. + (add_ranges_num): Adjust r initializer for addition of *_entry + members. + (add_ranges_by_labels): For -gsplit-dwarf and force_direct, + set idx to DW_RANGES_IDX_SKELETON. + (index_rnglists): Don't set r->idx if it is equal to + DW_RANGES_IDX_SKELETON. Initialize r->begin_entry and + r->end_entry for -gsplit-dwarf if those will be needed by + output_rnglists. + (output_rnglists): Add DWO argument. If true, switch to + debug_ranges_dwo_section rather than debug_ranges_section. + Adjust l1/l2 label indexes. Only output the offset table when + dwo is true and don't include in there the skeleton range + entry if present. For -gsplit-dwarf, skip ranges that belong + to the other rnglists section. Change return type from void + to bool and return true if there are any range entries for + the other section. For dwarf_split_debug_info use + DW_RLE_startx_endx, DW_RLE_startx_length and DW_RLE_base_addressx + entries instead of DW_RLE_start_end, DW_RLE_start_length and + DW_RLE_base_address. + (init_sections_and_labels): Initialize debug_ranges_dwo_section + if -gsplit-dwarf and DWARF >= 5. Adjust ranges_section_label + and range_base_label indexes. + (dwarf2out_finish): Call index_rnglists earlier before finalizing + .debug_addr. Never emit DW_AT_rnglists_base attribute. For + -gsplit-dwarf and DWARF >= 5 call output_rnglists up to twice + with different dwo arguments. + (dwarf2out_c_finalize): Clear debug_ranges_dwo_section. + +--- gcc/dwarf2out.c.jj 2021-03-10 17:36:37.037537129 +0100 ++++ gcc/dwarf2out.c 2021-03-11 12:50:00.402418873 +0100 +@@ -171,6 +171,7 @@ static GTY(()) section *debug_line_str_s + static GTY(()) section *debug_str_dwo_section; + static GTY(()) section *debug_str_offsets_section; + static GTY(()) section *debug_ranges_section; ++static GTY(()) section *debug_ranges_dwo_section; + static GTY(()) section *debug_frame_section; + + /* Maximum size (in bytes) of an artificially generated label. */ +@@ -3152,11 +3153,17 @@ struct GTY(()) dw_ranges { + /* If this is positive, it's a block number, otherwise it's a + bitwise-negated index into dw_ranges_by_label. */ + int num; ++ /* If idx is equal to DW_RANGES_IDX_SKELETON, it should be emitted ++ into .debug_rnglists section rather than .debug_rnglists.dwo ++ for -gsplit-dwarf and DWARF >= 5. */ ++#define DW_RANGES_IDX_SKELETON ((1U << 31) - 1) + /* Index for the range list for DW_FORM_rnglistx. */ + unsigned int idx : 31; + /* True if this range might be possibly in a different section + from previous entry. */ + unsigned int maybe_new_sec : 1; ++ addr_table_entry *begin_entry; ++ addr_table_entry *end_entry; + }; + + /* A structure to hold a macinfo entry. */ +@@ -4099,6 +4106,9 @@ new_addr_loc_descr (rtx addr, enum dtpre + #ifndef DEBUG_RNGLISTS_SECTION + #define DEBUG_RNGLISTS_SECTION ".debug_rnglists" + #endif ++#ifndef DEBUG_DWO_RNGLISTS_SECTION ++#define DEBUG_DWO_RNGLISTS_SECTION ".debug_rnglists.dwo" ++#endif + #ifndef DEBUG_LINE_STR_SECTION + #define DEBUG_LINE_STR_SECTION ".debug_line_str" + #endif +@@ -11751,7 +11761,7 @@ output_aranges (void) + static unsigned int + add_ranges_num (int num, bool maybe_new_sec) + { +- dw_ranges r = { NULL, num, 0, maybe_new_sec }; ++ dw_ranges r = { NULL, num, 0, maybe_new_sec, NULL, NULL }; + vec_safe_push (ranges_table, r); + return vec_safe_length (ranges_table) - 1; + } +@@ -11796,6 +11806,8 @@ add_ranges_by_labels (dw_die_ref die, co + add_AT_range_list (die, DW_AT_ranges, offset, force_direct); + *added = true; + note_rnglist_head (offset); ++ if (dwarf_split_debug_info && force_direct) ++ (*ranges_table)[offset].idx = DW_RANGES_IDX_SKELETON; + } + } + +@@ -11921,23 +11933,87 @@ asm_outputs_debug_line_str (void) + } + + +-/* Assign .debug_rnglists indexes. */ ++/* Assign .debug_rnglists indexes and unique indexes into the debug_addr ++ section when needed. */ + + static void + index_rnglists (void) + { + unsigned i; + dw_ranges *r; ++ bool base = false; ++ unsigned int len = vec_safe_length (ranges_table); + + FOR_EACH_VEC_SAFE_ELT (ranges_table, i, r) +- if (r->label) +- r->idx = rnglist_idx++; ++ { ++ if (r->label && r->idx != DW_RANGES_IDX_SKELETON) ++ r->idx = rnglist_idx++; ++ ++ if (!have_multiple_function_sections) ++ continue; ++ int block_num = r->num; ++ if (HAVE_AS_LEB128 && (r->label || r->maybe_new_sec)) ++ base = false; ++ if (block_num > 0) ++ { ++ char blabel[MAX_ARTIFICIAL_LABEL_BYTES]; ++ char elabel[MAX_ARTIFICIAL_LABEL_BYTES]; ++ ++ ASM_GENERATE_INTERNAL_LABEL (blabel, BLOCK_BEGIN_LABEL, block_num); ++ ASM_GENERATE_INTERNAL_LABEL (elabel, BLOCK_END_LABEL, block_num); ++ ++ if (HAVE_AS_LEB128) ++ { ++ if (!base) ++ { ++ dw_ranges *r2 = NULL; ++ if (i < len - 1) ++ r2 = &(*ranges_table)[i + 1]; ++ if (r2 ++ && r2->num != 0 ++ && r2->label == NULL ++ && !r2->maybe_new_sec) ++ { ++ r->begin_entry ++ = add_addr_table_entry (xstrdup (blabel), ++ ate_kind_label); ++ base = true; ++ } ++ } ++ if (base) ++ continue; ++ r->begin_entry ++ = add_addr_table_entry (xstrdup (blabel), ate_kind_label); ++ } ++ else ++ { ++ r->begin_entry ++ = add_addr_table_entry (xstrdup (blabel), ate_kind_label); ++ r->end_entry ++ = add_addr_table_entry (xstrdup (elabel), ate_kind_label); ++ } ++ } ++ ++ /* Negative block_num stands for an index into ranges_by_label. */ ++ else if (block_num < 0) ++ { ++ int lab_idx = - block_num - 1; ++ const char *blabel = (*ranges_by_label)[lab_idx].begin; ++ const char *elabel = (*ranges_by_label)[lab_idx].end; ++ ++ r->begin_entry ++ = add_addr_table_entry (xstrdup (blabel), ate_kind_label); ++ if (!HAVE_AS_LEB128) ++ r->end_entry ++ = add_addr_table_entry (xstrdup (elabel), ate_kind_label); ++ } ++ } + } + +-/* Emit .debug_rnglists section. */ ++/* Emit .debug_rnglists or (when DWO is true) .debug_rnglists.dwo section. */ + +-static void +-output_rnglists (unsigned generation) ++static bool ++output_rnglists (unsigned generation, bool dwo) + { + unsigned i; + dw_ranges *r; +@@ -11945,14 +12021,19 @@ output_rnglists (unsigned generation) + char l2[MAX_ARTIFICIAL_LABEL_BYTES]; + char basebuf[MAX_ARTIFICIAL_LABEL_BYTES]; + +- switch_to_section (debug_ranges_section); +- ASM_OUTPUT_LABEL (asm_out_file, ranges_section_label); ++ if (dwo) ++ switch_to_section (debug_ranges_dwo_section); ++ else ++ { ++ switch_to_section (debug_ranges_section); ++ ASM_OUTPUT_LABEL (asm_out_file, ranges_section_label); ++ } + /* There are up to 4 unique ranges labels per generation. + See also init_sections_and_labels. */ + ASM_GENERATE_INTERNAL_LABEL (l1, DEBUG_RANGES_SECTION_LABEL, +- 2 + generation * 4); ++ 2 + 2 * dwo + generation * 6); + ASM_GENERATE_INTERNAL_LABEL (l2, DEBUG_RANGES_SECTION_LABEL, +- 3 + generation * 4); ++ 3 + 2 * dwo + generation * 6); + if (DWARF_INITIAL_LENGTH_SIZE - dwarf_offset_size == 4) + dw2_asm_output_data (4, 0xffffffff, + "Initial length escape value indicating " +@@ -11969,13 +12050,13 @@ output_rnglists (unsigned generation) + the offset table plus corresponding DW_FORM_rnglistx uleb128 indexes + into it are usually larger than just DW_FORM_sec_offset offsets + into the .debug_rnglists section. */ +- dw2_asm_output_data (4, dwarf_split_debug_info ? rnglist_idx : 0, ++ dw2_asm_output_data (4, dwo ? rnglist_idx : 0, + "Offset Entry Count"); +- if (dwarf_split_debug_info) ++ if (dwo) + { + ASM_OUTPUT_LABEL (asm_out_file, ranges_base_label); + FOR_EACH_VEC_SAFE_ELT (ranges_table, i, r) +- if (r->label) ++ if (r->label && r->idx != DW_RANGES_IDX_SKELETON) + dw2_asm_output_delta (dwarf_offset_size, r->label, + ranges_base_label, NULL); + } +@@ -11983,15 +12064,32 @@ output_rnglists (unsigned generation) + const char *lab = ""; + unsigned int len = vec_safe_length (ranges_table); + const char *base = NULL; ++ bool skipping = false; ++ bool ret = false; + FOR_EACH_VEC_SAFE_ELT (ranges_table, i, r) + { + int block_num = r->num; + + if (r->label) + { ++ if (dwarf_split_debug_info) ++ { ++ if ((r->idx == DW_RANGES_IDX_SKELETON) == dwo) ++ { ++ ret = true; ++ skipping = true; ++ continue; ++ } ++ } + ASM_OUTPUT_LABEL (asm_out_file, r->label); + lab = r->label; + } ++ if (skipping) ++ { ++ if (block_num == 0) ++ skipping = false; ++ continue; ++ } + if (HAVE_AS_LEB128 && (r->label || r->maybe_new_sec)) + base = NULL; + if (block_num > 0) +@@ -12027,10 +12125,23 @@ output_rnglists (unsigned generation) + && r2->label == NULL + && !r2->maybe_new_sec) + { +- dw2_asm_output_data (1, DW_RLE_base_address, +- "DW_RLE_base_address (%s)", lab); +- dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel, +- "Base address (%s)", lab); ++ if (dwarf_split_debug_info) ++ { ++ dw2_asm_output_data (1, DW_RLE_base_addressx, ++ "DW_RLE_base_addressx (%s)", ++ lab); ++ dw2_asm_output_data_uleb128 (r->begin_entry->index, ++ "Base address index " ++ "(%s)", blabel); ++ } ++ else ++ { ++ dw2_asm_output_data (1, DW_RLE_base_address, ++ "DW_RLE_base_address (%s)", ++ lab); ++ dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel, ++ "Base address (%s)", lab); ++ } + strcpy (basebuf, blabel); + base = basebuf; + } +@@ -12045,13 +12156,35 @@ output_rnglists (unsigned generation) + "Range end address (%s)", lab); + continue; + } +- dw2_asm_output_data (1, DW_RLE_start_length, +- "DW_RLE_start_length (%s)", lab); +- dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel, +- "Range begin address (%s)", lab); ++ if (dwarf_split_debug_info) ++ { ++ dw2_asm_output_data (1, DW_RLE_startx_length, ++ "DW_RLE_startx_length (%s)", lab); ++ dw2_asm_output_data_uleb128 (r->begin_entry->index, ++ "Range begin address index " ++ "(%s)", blabel); ++ } ++ else ++ { ++ dw2_asm_output_data (1, DW_RLE_start_length, ++ "DW_RLE_start_length (%s)", lab); ++ dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel, ++ "Range begin address (%s)", lab); ++ } + dw2_asm_output_delta_uleb128 (elabel, blabel, + "Range length (%s)", lab); + } ++ else if (dwarf_split_debug_info) ++ { ++ dw2_asm_output_data (1, DW_RLE_startx_endx, ++ "DW_RLE_startx_endx (%s)", lab); ++ dw2_asm_output_data_uleb128 (r->begin_entry->index, ++ "Range begin address index " ++ "(%s)", blabel); ++ dw2_asm_output_data_uleb128 (r->end_entry->index, ++ "Range end address index " ++ "(%s)", elabel); ++ } + else + { + dw2_asm_output_data (1, DW_RLE_start_end, +@@ -12074,13 +12207,35 @@ output_rnglists (unsigned generation) + gcc_unreachable (); + if (HAVE_AS_LEB128) + { +- dw2_asm_output_data (1, DW_RLE_start_length, +- "DW_RLE_start_length (%s)", lab); +- dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel, +- "Range begin address (%s)", lab); ++ if (dwarf_split_debug_info) ++ { ++ dw2_asm_output_data (1, DW_RLE_startx_length, ++ "DW_RLE_startx_length (%s)", lab); ++ dw2_asm_output_data_uleb128 (r->begin_entry->index, ++ "Range begin address index " ++ "(%s)", blabel); ++ } ++ else ++ { ++ dw2_asm_output_data (1, DW_RLE_start_length, ++ "DW_RLE_start_length (%s)", lab); ++ dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel, ++ "Range begin address (%s)", lab); ++ } + dw2_asm_output_delta_uleb128 (elabel, blabel, + "Range length (%s)", lab); + } ++ else if (dwarf_split_debug_info) ++ { ++ dw2_asm_output_data (1, DW_RLE_startx_endx, ++ "DW_RLE_startx_endx (%s)", lab); ++ dw2_asm_output_data_uleb128 (r->begin_entry->index, ++ "Range begin address index " ++ "(%s)", blabel); ++ dw2_asm_output_data_uleb128 (r->end_entry->index, ++ "Range end address index " ++ "(%s)", elabel); ++ } + else + { + dw2_asm_output_data (1, DW_RLE_start_end, +@@ -12096,6 +12251,7 @@ output_rnglists (unsigned generation) + "DW_RLE_end_of_list (%s)", lab); + } + ASM_OUTPUT_LABEL (asm_out_file, l2); ++ return ret; + } + + /* Data structure containing information about input files. */ +@@ -28823,6 +28979,10 @@ init_sections_and_labels (bool early_lto + debug_macinfo_section = get_section (debug_macinfo_section_name, + SECTION_DEBUG | SECTION_EXCLUDE, + NULL); ++ if (dwarf_version >= 5) ++ debug_ranges_dwo_section ++ = get_section (DEBUG_DWO_RNGLISTS_SECTION, ++ SECTION_DEBUG | SECTION_EXCLUDE, NULL); + } + debug_aranges_section = get_section (DEBUG_ARANGES_SECTION, + SECTION_DEBUG, NULL); +@@ -28857,15 +29017,15 @@ init_sections_and_labels (bool early_lto + ASM_GENERATE_INTERNAL_LABEL (debug_line_section_label, + DEBUG_LINE_SECTION_LABEL, + init_sections_and_labels_generation); +- /* There are up to 4 unique ranges labels per generation. ++ /* There are up to 6 unique ranges labels per generation. + See also output_rnglists. */ + ASM_GENERATE_INTERNAL_LABEL (ranges_section_label, + DEBUG_RANGES_SECTION_LABEL, +- init_sections_and_labels_generation * 4); ++ init_sections_and_labels_generation * 6); + if (dwarf_version >= 5 && dwarf_split_debug_info) + ASM_GENERATE_INTERNAL_LABEL (ranges_base_label, + DEBUG_RANGES_SECTION_LABEL, +- 1 + init_sections_and_labels_generation * 4); ++ 1 + init_sections_and_labels_generation * 6); + ASM_GENERATE_INTERNAL_LABEL (debug_addr_section_label, + DEBUG_ADDR_SECTION_LABEL, + init_sections_and_labels_generation); +@@ -31665,6 +31825,9 @@ dwarf2out_finish (const char *filename) + index_location_lists (comp_unit_die ()); + } + ++ if (dwarf_version >= 5 && !vec_safe_is_empty (ranges_table)) ++ index_rnglists (); ++ + if (addr_index_table != NULL) + { + unsigned int index = 0; +@@ -31730,9 +31893,6 @@ dwarf2out_finish (const char *filename) + int mark; + struct md5_ctx ctx; + +- if (dwarf_version >= 5 && !vec_safe_is_empty (ranges_table)) +- index_rnglists (); +- + /* Compute a checksum of the comp_unit to use as the dwo_id. */ + md5_init_ctx (&ctx); + mark = 0; +@@ -31752,10 +31912,7 @@ dwarf2out_finish (const char *filename) + comp-unit DIE. */ + if (!vec_safe_is_empty (ranges_table)) + { +- if (dwarf_version >= 5) +- add_AT_lineptr (main_comp_unit_die, DW_AT_rnglists_base, +- ranges_base_label); +- else ++ if (dwarf_version < 5) + add_AT_lineptr (main_comp_unit_die, DW_AT_GNU_ranges_base, + ranges_section_label); + } +@@ -31833,7 +31990,26 @@ dwarf2out_finish (const char *filename) + if (!vec_safe_is_empty (ranges_table)) + { + if (dwarf_version >= 5) +- output_rnglists (generation); ++ { ++ if (dwarf_split_debug_info) ++ { ++ /* We don't know right now whether there are any ++ ranges for .debug_rnglists and any for .debug_rnglists.dwo. ++ Depending on into which of those two belongs the first ++ ranges_table entry, emit that section first and that ++ output_rnglists call will return if the other kind of ++ ranges needs to be emitted as well. */ ++ if ((*ranges_table)[0].idx == DW_RANGES_IDX_SKELETON) ++ { ++ if (output_rnglists (generation, false)) ++ output_rnglists (generation, true); ++ } ++ else if (output_rnglists (generation, true)) ++ output_rnglists (generation, false); ++ } ++ else ++ output_rnglists (generation, false); ++ } + else + output_ranges (); + } +@@ -32457,6 +32633,7 @@ dwarf2out_c_finalize (void) + debug_str_dwo_section = NULL; + debug_str_offsets_section = NULL; + debug_ranges_section = NULL; ++ debug_ranges_dwo_section = NULL; + debug_frame_section = NULL; + fde_vec = NULL; + debug_str_hash = NULL; diff --git a/gcc11-pr99562.patch b/gcc11-pr99562.patch new file mode 100644 index 0000000..1ef63a6 --- /dev/null +++ b/gcc11-pr99562.patch @@ -0,0 +1,39 @@ +2021-03-13 Jakub Jelinek + + PR debug/99562 + PR debug/66728 + * dwarf2out.c (get_full_len): Use get_precision rather than + min_precision. + (add_const_value_attribute): Make sure add_AT_wide argument has + precision prec rather than some very wide one. + +--- gcc/dwarf2out.c.jj 2021-03-11 14:01:43.385194205 +0100 ++++ gcc/dwarf2out.c 2021-03-12 17:34:49.365207265 +0100 +@@ -385,13 +385,12 @@ dump_struct_debug (tree type, enum debug + #endif + + /* Get the number of HOST_WIDE_INTs needed to represent the precision +- of the number. Some constants have a large uniform precision, so +- we get the precision needed for the actual value of the number. */ ++ of the number. */ + + static unsigned int + get_full_len (const wide_int &op) + { +- int prec = wi::min_precision (op, UNSIGNED); ++ int prec = wi::get_precision (op); + return ((prec + HOST_BITS_PER_WIDE_INT - 1) + / HOST_BITS_PER_WIDE_INT); + } +@@ -19732,8 +19731,9 @@ add_const_value_attribute (dw_die_ref di + { + wide_int w1 = rtx_mode_t (rtl, MAX_MODE_INT); + unsigned int prec = MIN (wi::min_precision (w1, UNSIGNED), +- (unsigned int)CONST_WIDE_INT_NUNITS (rtl) * HOST_BITS_PER_WIDE_INT); +- wide_int w = wi::zext (w1, prec); ++ (unsigned int) CONST_WIDE_INT_NUNITS (rtl) ++ * HOST_BITS_PER_WIDE_INT); ++ wide_int w = wide_int::from (w1, prec, UNSIGNED); + add_AT_wide (die, DW_AT_const_value, w); + } + return true; diff --git a/gcc11-pr99650.patch b/gcc11-pr99650.patch new file mode 100644 index 0000000..031c272 --- /dev/null +++ b/gcc11-pr99650.patch @@ -0,0 +1,44 @@ +2021-03-18 Jakub Jelinek + + PR c++/99650 + * decl.c (cp_finish_decomp): Diagnose void initializers when + using tuple_element and get. + + * g++.dg/cpp1z/decomp55.C: New test. + +--- gcc/cp/decl.c.jj 2021-03-16 21:17:41.014498713 +0100 ++++ gcc/cp/decl.c 2021-03-18 19:31:22.430149523 +0100 +@@ -8629,6 +8629,11 @@ cp_finish_decomp (tree decl, tree first, + : get_tuple_element_type (type, i)); + input_location = sloc; + ++ if (VOID_TYPE_P (eltype)) ++ { ++ error ("forming reference to void"); ++ eltype = error_mark_node; ++ } + if (init == error_mark_node || eltype == error_mark_node) + { + inform (dloc, "in initialization of structured binding " +--- gcc/testsuite/g++.dg/cpp1z/decomp55.C.jj 2021-03-18 19:43:07.958457494 +0100 ++++ gcc/testsuite/g++.dg/cpp1z/decomp55.C 2021-03-18 19:42:35.099815746 +0100 +@@ -0,0 +1,19 @@ ++// PR c++/99650 ++// { dg-do compile { target c++17 } } ++ ++namespace std { ++ template struct tuple_size; ++ template struct tuple_element; ++} ++ ++struct A { ++ int i; ++ template void get() { } ++}; ++ ++template<> struct std::tuple_size { static const int value = 2; }; ++template struct std::tuple_element { using type = void; }; ++ ++A a = { 42 }; ++auto [ x, y ] = a; // { dg-error "forming reference to void" } ++// { dg-message "in initialization of structured binding variable 'x'" "" { target *-*-* } .-1 } diff --git a/sources b/sources index cd3423a..877c36e 100644 --- a/sources +++ b/sources @@ -1,3 +1,4 @@ -SHA512 (gcc-11.0.1-20210307.tar.xz) = 1efa50991f55de59270af6ff134fc1818ca23e30bdc064f79916e358e46daf301a8d2d3e1afcde58a00a521e8bc2136f8cc5f21c5e05ccd80fa8e5c7e9324e9b +SHA512 (gcc-11.0.1-20210319.tar.xz) = 5e8469f34601f9fd30439509129a738f61c61357f260cc6addffdea1a6b14eba0cf7030ad6e32dd000f08b0fbba13e90d6618e5d699658000675cdfe22c919f1 +SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 8b3a7b2201c19435fce6b6ba983843bb95ac666a Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 19 Mar 2021 15:54:46 +0100 Subject: [PATCH 034/293] 11.0.1-0.2 --- gcc.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc.spec b/gcc.spec index e7286c9..48d9672 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ %global DATE 20210319 -%global gitrev e13870b7c083e39ab17cc827bab5cb45387e8f19 +%global gitrev e4dd2d1e93fef51f05cef0ed942fdc7dfd83dafd %global gcc_version 11.0.1 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.1%{?dist} +Release: %{gcc_release}.2%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD From eb3f14c7132dcf33d1dd58e5e363f785b573ad16 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 19 Mar 2021 18:42:46 +0100 Subject: [PATCH 035/293] 11.0.1-0.2 --- gcc.spec | 2 + gcc11-pr99341-revert.patch | 176 +++++++++++++++++++++++++++++++++++++ 2 files changed, 178 insertions(+) create mode 100644 gcc11-pr99341-revert.patch diff --git a/gcc.spec b/gcc.spec index 48d9672..3c432b2 100644 --- a/gcc.spec +++ b/gcc.spec @@ -271,6 +271,7 @@ Patch16: gcc11-pr99230.patch Patch17: gcc11-pr99490.patch Patch18: gcc11-pr99562.patch Patch19: gcc11-pr99650.patch +Patch20: gcc11-pr99341-revert.patch Patch100: gcc11-fortran-fdec-duplicates.patch Patch101: gcc11-fortran-flogical-as-integer.patch @@ -800,6 +801,7 @@ to NVidia PTX capable devices if available. %patch17 -p0 -b .pr99490~ %patch18 -p0 -b .pr99562~ %patch19 -p0 -b .pr99650~ +%patch20 -p0 -b .pr99341-revert~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ diff --git a/gcc11-pr99341-revert.patch b/gcc11-pr99341-revert.patch new file mode 100644 index 0000000..c7419cb --- /dev/null +++ b/gcc11-pr99341-revert.patch @@ -0,0 +1,176 @@ +libstdc++: Remove symbols for new std::call_once implementation [PR 99341] + +This removes the new symbols added for the new futex-based +std::call_once implementation. These symbols were new on trunk, so not +in any released version. However, they are already present in some +beta distro releases (Fedora Linux 34) and in Fedora Linux rawhide. This +change can be locally reverted by distros that need to keep the symbols +present until affected packages have been rebuilt. + +Revert: +2021-03-12 Jonathan Wakely + + PR libstdc++/99341 + * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Remove + std::once_flag symbols. + * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: + Likewise. + * config/abi/pre/gnu.ver: Likewise. + * src/c++11/mutex.cc [_GLIBCXX_HAVE_LINUX_FUTEX] + (struct __once_flag_compat): Remove. + (_ZNSt9once_flag11_M_activateEv): Remove. + (_ZNSt9once_flag9_M_finishEb): Remove. + +--- libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt ++++ libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt +@@ -4086,6 +4086,8 @@ FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt9once_flag11_M_activateEv@@GLIBCXX_3.4.29 ++FUNC:_ZNSt9once_flag9_M_finishEb@@GLIBCXX_3.4.29 + FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4 + FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4 + FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4 +--- libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt ++++ libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt +@@ -4086,6 +4086,8 @@ FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt9once_flag11_M_activateEv@@GLIBCXX_3.4.29 ++FUNC:_ZNSt9once_flag9_M_finishEb@@GLIBCXX_3.4.29 + FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4 + FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4 + FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4 +--- libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt ++++ libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt +@@ -4086,6 +4086,8 @@ FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt9once_flag11_M_activateEv@@GLIBCXX_3.4.29 ++FUNC:_ZNSt9once_flag9_M_finishEb@@GLIBCXX_3.4.29 + FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4 + FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4 + FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4 +--- libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt ++++ libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt +@@ -4086,6 +4086,8 @@ FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt9once_flag11_M_activateEv@@GLIBCXX_3.4.29 ++FUNC:_ZNSt9once_flag9_M_finishEb@@GLIBCXX_3.4.29 + FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4 + FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4 + FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4 +--- libstdc++-v3/config/abi/pre/gnu.ver ++++ libstdc++-v3/config/abi/pre/gnu.ver +@@ -2388,6 +2388,11 @@ GLIBCXX_3.4.29 { + _ZNKRSt7__cxx1118basic_stringstreamI[cw]St11char_traitsI[cw]ESaI[cw]EE3strEv; + _ZNSt7__cxx1118basic_stringstreamI[cw]St11char_traitsI[cw]ESaI[cw]EE3strEONS_12basic_stringI[cw]S2_S3_EE; + ++ # std::once_flag::_M_activate() ++ _ZNSt9once_flag11_M_activateEv; ++ # std::once_flag::_M_finish(bool) ++ _ZNSt9once_flag9_M_finishEb; ++ + # std::to_chars(char*, char*, [float|double|long double]) + _ZSt8to_charsPcS_[def]; + # std::to_chars(char*, char*, [float|double|long double], chars_format) +--- libstdc++-v3/src/c++11/mutex.cc ++++ libstdc++-v3/src/c++11/mutex.cc +@@ -26,6 +26,90 @@ + + #ifdef _GLIBCXX_HAS_GTHREADS + ++#if defined _GLIBCXX_SHARED && ! _GLIBCXX_INLINE_VERSION ++ ++#ifdef _GLIBCXX_HAVE_LINUX_FUTEX ++# include ++# include ++# include ++ ++namespace std _GLIBCXX_VISIBILITY(default) ++{ ++_GLIBCXX_BEGIN_NAMESPACE_VERSION ++ ++struct __once_flag_compat ++{ ++ enum _Bits : int { _Init = 0, _Active = 1, _Done = 2 }; ++ int _M_once = 0; ++ bool _M_activate(); ++ void _M_finish(bool returning) noexcept; ++}; ++ ++bool ++__once_flag_compat::_M_activate() ++{ ++ if (__gnu_cxx::__is_single_threaded()) ++ { ++ if (_M_once == _Bits::_Done) ++ return false; ++ _M_once = _Bits::_Active; ++ return true; ++ } ++ ++ while (true) ++ { ++ int expected = _Bits::_Init; ++ constexpr int active = _Bits::_Active; ++ if (__atomic_compare_exchange_n(&_M_once, &expected, active, false, ++ __ATOMIC_ACQ_REL, ++ __ATOMIC_ACQUIRE)) ++ { ++ // This thread is now doing an active execution. ++ return true; ++ } ++ ++ if (expected == _Bits::_Done) ++ return false; // A returning execution happened, this is passive. ++ ++ // Otherwise, an active execution is happening. Wait for it to finish. ++ constexpr int futex_wait = 128; // FUTEX_WAIT_PRIVATE ++ syscall (SYS_futex, &_M_once, futex_wait, expected, 0); ++ } ++} ++ ++void ++std::__once_flag_compat::_M_finish(bool returning) noexcept ++{ ++ const int newval = returning ? _Bits::_Done : _Bits::_Init; ++ if (__gnu_cxx::__is_single_threaded()) ++ { ++ __glibcxx_assert(_M_once == _Bits::_Active); ++ _M_once = newval; ++ } ++ else ++ { ++ int prev [[maybe_unused]] ++ = __atomic_exchange_n(&_M_once, newval, __ATOMIC_RELEASE); ++ __glibcxx_assert(prev & _Bits::_Active); ++ // Wake any other threads waiting for this execution to finish. ++ constexpr int futex_wake = 129; // FUTEX_WAKE_PRIVATE ++ syscall (SYS_futex, &_M_once, futex_wake, INT_MAX); ++ } ++} ++ ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wattribute-alias" ++extern "C" bool _ZNSt9once_flag11_M_activateEv() ++ __attribute__((alias ("_ZNSt18__once_flag_compat11_M_activateEv"))); ++extern "C" void _ZNSt9once_flag9_M_finishEb() noexcept ++ __attribute__((alias ("_ZNSt18__once_flag_compat9_M_finishEb"))); ++#pragma GCC diagnostic pop ++ ++_GLIBCXX_END_NAMESPACE_VERSION ++} // namespace std ++#endif // FUTEX ++#endif // ONCE_FLAG_COMPAT && SHARED && ! INLINE_VERSION ++ + namespace std _GLIBCXX_VISIBILITY(default) + { + _GLIBCXX_BEGIN_NAMESPACE_VERSION From f8c38830d9c61e33d7daa8873cb12fb6f8f6fd66 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 24 Mar 2021 11:50:05 +0100 Subject: [PATCH 036/293] 11.0.1-0.3.fc34 --- .gitignore | 1 + gcc.spec | 38 +++++----- gcc11-pr99230.patch | 137 ------------------------------------- gcc11-pr99378-revert.patch | 94 ------------------------- gcc11-pr99388.patch | 92 ------------------------- gcc11-pr99562.patch | 39 ----------- gcc11-pr99650.patch | 44 ------------ sources | 2 +- 8 files changed, 21 insertions(+), 426 deletions(-) delete mode 100644 gcc11-pr99230.patch delete mode 100644 gcc11-pr99378-revert.patch delete mode 100644 gcc11-pr99388.patch delete mode 100644 gcc11-pr99562.patch delete mode 100644 gcc11-pr99650.patch diff --git a/.gitignore b/.gitignore index 1c11cc9..5b2898a 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ /gcc-11.0.1-20210307.tar.xz /gcc-11.0.1-20210319.tar.xz /isl-0.18.tar.bz2 +/gcc-11.0.1-20210324.tar.xz diff --git a/gcc.spec b/gcc.spec index 3c432b2..40465a2 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20210319 -%global gitrev e4dd2d1e93fef51f05cef0ed942fdc7dfd83dafd +%global DATE 20210324 +%global gitrev aae01c864baeefadc9bb5312de389116f77ccb83 %global gcc_version 11.0.1 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.2%{?dist} +Release: %{gcc_release}.3%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -264,14 +264,9 @@ Patch9: gcc11-foffload-default.patch Patch10: gcc11-Wno-format-security.patch Patch11: gcc11-rh1574936.patch Patch12: gcc11-d-shared-libphobos.patch -Patch13: gcc11-pr99378-revert.patch -Patch14: gcc11-pr99388.patch -Patch15: gcc11-pr91710.patch -Patch16: gcc11-pr99230.patch -Patch17: gcc11-pr99490.patch -Patch18: gcc11-pr99562.patch -Patch19: gcc11-pr99650.patch -Patch20: gcc11-pr99341-revert.patch +Patch13: gcc11-pr91710.patch +Patch14: gcc11-pr99490.patch +Patch15: gcc11-pr99341-revert.patch Patch100: gcc11-fortran-fdec-duplicates.patch Patch101: gcc11-fortran-flogical-as-integer.patch @@ -794,14 +789,9 @@ to NVidia PTX capable devices if available. %patch11 -p0 -b .rh1574936~ %endif %patch12 -p0 -b .d-shared-libphobos~ -%patch13 -p0 -b .pr99378-revert~ -%patch14 -p0 -b .pr99388~ -%patch15 -p0 -b .pr91710~ -%patch16 -p0 -b .pr99230~ -%patch17 -p0 -b .pr99490~ -%patch18 -p0 -b .pr99562~ -%patch19 -p0 -b .pr99650~ -%patch20 -p0 -b .pr99341-revert~ +%patch13 -p0 -b .pr91710~ +%patch14 -p0 -b .pr99490~ +%patch15 -p0 -b .pr99341-revert~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3136,6 +3126,16 @@ end %endif %changelog +* Wed Mar 24 2021 Jakub Jelinek 11.0.1-0.3 +- update from trunk + - PRs analyzer/99614, c++/99239, c++/99283, c++/99318, c++/99425, c++/99456, + c++/99480, c++/99687, c/99588, fortran/93660, fortran/99688, + rtl-optimization/99680, target/97252, target/97926, target/98914, + target/99540, target/99581, target/99652, target/99660, target/99661, + target/99663, target/99679, target/99702, target/99704, target/99733, + tree-optimization/99296, tree-optimization/99656, + tree-optimization/99694, tree-optimization/99721 + * Fri Mar 19 2021 Jakub Jelinek 11.0.1-0.2 - update from trunk - PRs c++/90448, c++/96268, c++/96749, c++/97973, c++/98480, c++/98704, diff --git a/gcc11-pr99230.patch b/gcc11-pr99230.patch deleted file mode 100644 index 75cf6d2..0000000 --- a/gcc11-pr99230.patch +++ /dev/null @@ -1,137 +0,0 @@ -2021-03-18 Jakub Jelinek - - PR debug/99230 - * c-gimplify.c (c_genericize_control_stmt): Handle STATEMENT_LIST. - - * cp-gimplify.c (cp_genericize_r) : Remove - special code, instead call c_genericize_control_stmt. - - * gcc.dg/pr99230.c: New test. - ---- gcc/c-family/c-gimplify.c.jj 2021-01-04 10:25:50.402102825 +0100 -+++ gcc/c-family/c-gimplify.c 2021-03-17 19:19:20.052702095 +0100 -@@ -497,6 +497,35 @@ c_genericize_control_stmt (tree *stmt_p, - genericize_omp_for_stmt (stmt_p, walk_subtrees, data, func, lh); - break; - -+ case STATEMENT_LIST: -+ if (TREE_SIDE_EFFECTS (stmt)) -+ { -+ tree_stmt_iterator i; -+ int nondebug_stmts = 0; -+ bool clear_side_effects = true; -+ /* Genericization can clear TREE_SIDE_EFFECTS, e.g. when -+ transforming an IF_STMT into COND_EXPR. If such stmt -+ appears in a STATEMENT_LIST that contains only that -+ stmt and some DEBUG_BEGIN_STMTs, without -g where the -+ STATEMENT_LIST wouldn't be present at all the resulting -+ expression wouldn't have TREE_SIDE_EFFECTS set, so make sure -+ to clear it even on the STATEMENT_LIST in such cases. */ -+ for (i = tsi_start (stmt); !tsi_end_p (i); tsi_next (&i)) -+ { -+ tree t = tsi_stmt (i); -+ if (TREE_CODE (t) != DEBUG_BEGIN_STMT && nondebug_stmts < 2) -+ nondebug_stmts++; -+ walk_tree_1 (tsi_stmt_ptr (i), func, data, NULL, lh); -+ if (TREE_CODE (t) != DEBUG_BEGIN_STMT -+ && (nondebug_stmts > 1 || TREE_SIDE_EFFECTS (tsi_stmt (i)))) -+ clear_side_effects = false; -+ } -+ if (clear_side_effects) -+ TREE_SIDE_EFFECTS (stmt) = 0; -+ *walk_subtrees = 0; -+ } -+ break; -+ - default: - break; - } ---- gcc/cp/cp-gimplify.c.jj 2021-03-04 09:42:27.602123905 +0100 -+++ gcc/cp/cp-gimplify.c 2021-03-17 19:38:42.743888589 +0100 -@@ -1464,35 +1464,6 @@ cp_genericize_r (tree *stmt_p, int *walk - walk_subtrees = 0; - break; - -- case STATEMENT_LIST: -- if (TREE_SIDE_EFFECTS (stmt)) -- { -- tree_stmt_iterator i; -- int nondebug_stmts = 0; -- bool clear_side_effects = true; -- /* Genericization can clear TREE_SIDE_EFFECTS, e.g. when -- transforming an IF_STMT into COND_EXPR. If such stmt -- appears in a STATEMENT_LIST that contains only that -- stmt and some DEBUG_BEGIN_STMTs, without -g where the -- STATEMENT_LIST wouldn't be present at all the resulting -- expression wouldn't have TREE_SIDE_EFFECTS set, so make sure -- to clear it even on the STATEMENT_LIST in such cases. */ -- for (i = tsi_start (stmt); !tsi_end_p (i); tsi_next (&i)) -- { -- tree t = tsi_stmt (i); -- if (TREE_CODE (t) != DEBUG_BEGIN_STMT && nondebug_stmts < 2) -- nondebug_stmts++; -- cp_walk_tree (tsi_stmt_ptr (i), cp_genericize_r, data, NULL); -- if (TREE_CODE (t) != DEBUG_BEGIN_STMT -- && (nondebug_stmts > 1 || TREE_SIDE_EFFECTS (tsi_stmt (i)))) -- clear_side_effects = false; -- } -- if (clear_side_effects) -- TREE_SIDE_EFFECTS (stmt) = 0; -- *walk_subtrees = 0; -- } -- break; -- - case OMP_DISTRIBUTE: - /* Need to explicitly instantiate copy ctors on class iterators of - composite distribute parallel for. */ -@@ -1566,6 +1537,7 @@ cp_genericize_r (tree *stmt_p, int *walk - case OMP_SIMD: - case OMP_LOOP: - case OACC_LOOP: -+ case STATEMENT_LIST: - /* These cases are handled by shared code. */ - c_genericize_control_stmt (stmt_p, walk_subtrees, data, - cp_genericize_r, cp_walk_subtrees); ---- gcc/testsuite/gcc.dg/pr99230.c.jj 2021-03-17 19:34:26.633711074 +0100 -+++ gcc/testsuite/gcc.dg/pr99230.c 2021-03-17 19:33:30.210332887 +0100 -@@ -0,0 +1,40 @@ -+/* PR debug/99230 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 --param logical-op-non-short-circuit=0 -fcompare-debug --param=jump-table-max-growth-ratio-for-speed=5000" } */ -+ -+extern void fn2 (void); -+extern void fn3 (int); -+int a, b; -+void -+fn1 (void) -+{ -+ int c; -+ short d; -+ switch (a) { -+ case 22000: -+ fn2 (); -+ case 22300: -+ b = 0; -+ case 22600: -+ case 22601: -+ case 22900: -+ fn3 (1); -+ case 20100: -+ fn3 (2); -+ case 20200: -+ fn3 (3); -+ case 20300: -+ fn3 (4); -+ case 20400: -+ fn3 (5); -+ case 20310: -+ fn3 (4); -+ case 20410: -+ fn3 (5); -+ } -+ if (d || c) { -+ do -+ ; -+ while (0); -+ } -+} diff --git a/gcc11-pr99378-revert.patch b/gcc11-pr99378-revert.patch deleted file mode 100644 index ea7f937..0000000 --- a/gcc11-pr99378-revert.patch +++ /dev/null @@ -1,94 +0,0 @@ -Revert: -2021-03-18 Vladimir N. Makarov - - PR target/99422 - * lra-constraints.c (process_address_1): Use lookup_constraint - only for a single constraint. - -2021-03-10 Vladimir N. Makarov - - PR target/99422 - * lra-constraints.c (process_address_1): Don't check unknown - constraint, use X for empty constraint. - -2021-03-09 Vladimir N. Makarov - - PR target/99454 - * lra-constraints.c (process_address_1): Process constraint 'g' - separately and digital constraints containing more one digit. - -2021-03-09 Vladimir N. Makarov - - PR target/99454 - * lra-constraints.c (process_address_1): Process 0..9 constraints - in process_address_1. - -2021-03-08 Vladimir N. Makarov - - PR target/99422 - * lra-constraints.c (skip_contraint_modifiers): New function. - (process_address_1): Use it before lookup_constraint call. - -2021-03-05 Vladimir N. Makarov - - PR target/99378 - * lra-constraints.c (process_address_1): Skip decomposing address - for asm insn operand with unknown constraint. - ---- gcc/lra-constraints.c.jj 2021-03-19 13:53:38.094778251 +0100 -+++ gcc/lra-constraints.c 2021-03-19 14:23:16.017389900 +0100 -@@ -3392,21 +3392,6 @@ equiv_address_substitution (struct addre - return change_p; - } - --/* Skip all modifiers and whitespaces in constraint STR and return the -- result. */ --static const char * --skip_contraint_modifiers (const char *str) --{ -- for (;;str++) -- switch (*str) -- { -- case '+' : case '&' : case '=': case '*': case ' ': case '\t': -- case '$': case '^' : case '%': case '?': case '!': -- break; -- default: return str; -- } --} -- - /* Major function to make reloads for an address in operand NOP or - check its correctness (If CHECK_ONLY_P is true). The supported - cases are: -@@ -3441,8 +3426,8 @@ process_address_1 (int nop, bool check_o - HOST_WIDE_INT scale; - rtx op = *curr_id->operand_loc[nop]; - rtx mem = extract_mem_from_operand (op); -- const char *constraint; -- enum constraint_num cn; -+ const char *constraint = curr_static_id->operand[nop].constraint; -+ enum constraint_num cn = lookup_constraint (constraint); - bool change_p = false; - - if (MEM_P (mem) -@@ -3450,21 +3435,6 @@ process_address_1 (int nop, bool check_o - && GET_CODE (XEXP (mem, 0)) == SCRATCH) - return false; - -- constraint -- = skip_contraint_modifiers (curr_static_id->operand[nop].constraint); -- if (IN_RANGE (constraint[0], '0', '9')) -- { -- char *end; -- unsigned long dup = strtoul (constraint, &end, 10); -- constraint -- = skip_contraint_modifiers (curr_static_id->operand[dup].constraint); -- } -- if (*skip_contraint_modifiers (constraint -- + CONSTRAINT_LEN (constraint[0], -- constraint)) != '\0') -- cn = CONSTRAINT__UNKNOWN; -- else -- cn = lookup_constraint (*constraint == '\0' ? "X" : constraint); - if (insn_extra_address_constraint (cn) - /* When we find an asm operand with an address constraint that - doesn't satisfy address_operand to begin with, we clear diff --git a/gcc11-pr99388.patch b/gcc11-pr99388.patch deleted file mode 100644 index 4ecfdc0..0000000 --- a/gcc11-pr99388.patch +++ /dev/null @@ -1,92 +0,0 @@ -2021-03-04 Jakub Jelinek - - PR debug/99388 - * dwarf2out.c (insert_float): Change return type from void to - unsigned, handle GET_MODE_SIZE (mode) == 2 and return element size. - (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): - Adjust callers. - ---- gcc/dwarf2out.c.jj 2021-03-03 09:53:55.391191719 +0100 -+++ gcc/dwarf2out.c 2021-03-04 15:51:23.174396552 +0100 -@@ -3825,7 +3825,7 @@ static void add_data_member_location_att - static bool add_const_value_attribute (dw_die_ref, rtx); - static void insert_int (HOST_WIDE_INT, unsigned, unsigned char *); - static void insert_wide_int (const wide_int &, unsigned char *, int); --static void insert_float (const_rtx, unsigned char *); -+static unsigned insert_float (const_rtx, unsigned char *); - static rtx rtl_for_decl_location (tree); - static bool add_location_or_const_value_attribute (dw_die_ref, tree, bool); - static bool tree_add_const_value_attribute (dw_die_ref, tree); -@@ -16292,11 +16292,12 @@ mem_loc_descriptor (rtx rtl, machine_mod - scalar_float_mode float_mode = as_a (mode); - unsigned int length = GET_MODE_SIZE (float_mode); - unsigned char *array = ggc_vec_alloc (length); -+ unsigned int elt_size = insert_float (rtl, array); - -- insert_float (rtl, array); - mem_loc_result->dw_loc_oprnd2.val_class = dw_val_class_vec; -- mem_loc_result->dw_loc_oprnd2.v.val_vec.length = length / 4; -- mem_loc_result->dw_loc_oprnd2.v.val_vec.elt_size = 4; -+ mem_loc_result->dw_loc_oprnd2.v.val_vec.length -+ = length / elt_size; -+ mem_loc_result->dw_loc_oprnd2.v.val_vec.elt_size = elt_size; - mem_loc_result->dw_loc_oprnd2.v.val_vec.array = array; - } - } -@@ -16866,11 +16867,11 @@ loc_descriptor (rtx rtl, machine_mode mo - { - unsigned int length = GET_MODE_SIZE (smode); - unsigned char *array = ggc_vec_alloc (length); -+ unsigned int elt_size = insert_float (rtl, array); - -- insert_float (rtl, array); - loc_result->dw_loc_oprnd2.val_class = dw_val_class_vec; -- loc_result->dw_loc_oprnd2.v.val_vec.length = length / 4; -- loc_result->dw_loc_oprnd2.v.val_vec.elt_size = 4; -+ loc_result->dw_loc_oprnd2.v.val_vec.length = length / elt_size; -+ loc_result->dw_loc_oprnd2.v.val_vec.elt_size = elt_size; - loc_result->dw_loc_oprnd2.v.val_vec.array = array; - } - } -@@ -19689,7 +19690,7 @@ insert_wide_int (const wide_int &val, un - - /* Writes floating point values to dw_vec_const array. */ - --static void -+static unsigned - insert_float (const_rtx rtl, unsigned char *array) - { - long val[4]; -@@ -19699,11 +19700,19 @@ insert_float (const_rtx rtl, unsigned ch - real_to_target (val, CONST_DOUBLE_REAL_VALUE (rtl), mode); - - /* real_to_target puts 32-bit pieces in each long. Pack them. */ -+ if (GET_MODE_SIZE (mode) < 4) -+ { -+ gcc_assert (GET_MODE_SIZE (mode) == 2); -+ insert_int (val[0], 2, array); -+ return 2; -+ } -+ - for (i = 0; i < GET_MODE_SIZE (mode) / 4; i++) - { - insert_int (val[i], 4, array); - array += 4; - } -+ return 4; - } - - /* Attach a DW_AT_const_value attribute for a variable or a parameter which -@@ -19752,9 +19761,10 @@ add_const_value_attribute (dw_die_ref di - scalar_float_mode mode = as_a (GET_MODE (rtl)); - unsigned int length = GET_MODE_SIZE (mode); - unsigned char *array = ggc_vec_alloc (length); -+ unsigned int elt_size = insert_float (rtl, array); - -- insert_float (rtl, array); -- add_AT_vec (die, DW_AT_const_value, length / 4, 4, array); -+ add_AT_vec (die, DW_AT_const_value, length / elt_size, elt_size, -+ array); - } - return true; - diff --git a/gcc11-pr99562.patch b/gcc11-pr99562.patch deleted file mode 100644 index 1ef63a6..0000000 --- a/gcc11-pr99562.patch +++ /dev/null @@ -1,39 +0,0 @@ -2021-03-13 Jakub Jelinek - - PR debug/99562 - PR debug/66728 - * dwarf2out.c (get_full_len): Use get_precision rather than - min_precision. - (add_const_value_attribute): Make sure add_AT_wide argument has - precision prec rather than some very wide one. - ---- gcc/dwarf2out.c.jj 2021-03-11 14:01:43.385194205 +0100 -+++ gcc/dwarf2out.c 2021-03-12 17:34:49.365207265 +0100 -@@ -385,13 +385,12 @@ dump_struct_debug (tree type, enum debug - #endif - - /* Get the number of HOST_WIDE_INTs needed to represent the precision -- of the number. Some constants have a large uniform precision, so -- we get the precision needed for the actual value of the number. */ -+ of the number. */ - - static unsigned int - get_full_len (const wide_int &op) - { -- int prec = wi::min_precision (op, UNSIGNED); -+ int prec = wi::get_precision (op); - return ((prec + HOST_BITS_PER_WIDE_INT - 1) - / HOST_BITS_PER_WIDE_INT); - } -@@ -19732,8 +19731,9 @@ add_const_value_attribute (dw_die_ref di - { - wide_int w1 = rtx_mode_t (rtl, MAX_MODE_INT); - unsigned int prec = MIN (wi::min_precision (w1, UNSIGNED), -- (unsigned int)CONST_WIDE_INT_NUNITS (rtl) * HOST_BITS_PER_WIDE_INT); -- wide_int w = wi::zext (w1, prec); -+ (unsigned int) CONST_WIDE_INT_NUNITS (rtl) -+ * HOST_BITS_PER_WIDE_INT); -+ wide_int w = wide_int::from (w1, prec, UNSIGNED); - add_AT_wide (die, DW_AT_const_value, w); - } - return true; diff --git a/gcc11-pr99650.patch b/gcc11-pr99650.patch deleted file mode 100644 index 031c272..0000000 --- a/gcc11-pr99650.patch +++ /dev/null @@ -1,44 +0,0 @@ -2021-03-18 Jakub Jelinek - - PR c++/99650 - * decl.c (cp_finish_decomp): Diagnose void initializers when - using tuple_element and get. - - * g++.dg/cpp1z/decomp55.C: New test. - ---- gcc/cp/decl.c.jj 2021-03-16 21:17:41.014498713 +0100 -+++ gcc/cp/decl.c 2021-03-18 19:31:22.430149523 +0100 -@@ -8629,6 +8629,11 @@ cp_finish_decomp (tree decl, tree first, - : get_tuple_element_type (type, i)); - input_location = sloc; - -+ if (VOID_TYPE_P (eltype)) -+ { -+ error ("forming reference to void"); -+ eltype = error_mark_node; -+ } - if (init == error_mark_node || eltype == error_mark_node) - { - inform (dloc, "in initialization of structured binding " ---- gcc/testsuite/g++.dg/cpp1z/decomp55.C.jj 2021-03-18 19:43:07.958457494 +0100 -+++ gcc/testsuite/g++.dg/cpp1z/decomp55.C 2021-03-18 19:42:35.099815746 +0100 -@@ -0,0 +1,19 @@ -+// PR c++/99650 -+// { dg-do compile { target c++17 } } -+ -+namespace std { -+ template struct tuple_size; -+ template struct tuple_element; -+} -+ -+struct A { -+ int i; -+ template void get() { } -+}; -+ -+template<> struct std::tuple_size { static const int value = 2; }; -+template struct std::tuple_element { using type = void; }; -+ -+A a = { 42 }; -+auto [ x, y ] = a; // { dg-error "forming reference to void" } -+// { dg-message "in initialization of structured binding variable 'x'" "" { target *-*-* } .-1 } diff --git a/sources b/sources index 877c36e..030c3fa 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.0.1-20210319.tar.xz) = 5e8469f34601f9fd30439509129a738f61c61357f260cc6addffdea1a6b14eba0cf7030ad6e32dd000f08b0fbba13e90d6618e5d699658000675cdfe22c919f1 +SHA512 (gcc-11.0.1-20210324.tar.xz) = 3f7fb2bb2098b021efe5e3dcf128a91525adc49ace1ad4120bbccc95827c45affe9beacfff43b03a0da30fcb6f8ea1a22ab7bd05f2aed05b0541f8c2ca4cfd0c SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From cee86e0c2374f1207988b5f89fb7dd74c6932b83 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 5 Apr 2021 15:52:58 +0200 Subject: [PATCH 037/293] 11.0.1-0.4 --- gcc.spec | 39 +++- gcc11-pr99490.patch | 473 -------------------------------------------- 2 files changed, 32 insertions(+), 480 deletions(-) delete mode 100644 gcc11-pr99490.patch diff --git a/gcc.spec b/gcc.spec index 40465a2..7ed9a7c 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20210324 -%global gitrev aae01c864baeefadc9bb5312de389116f77ccb83 +%global DATE 20210405 +%global gitrev 669f363681ba1022eb5fcdb2502ad0ef01cb8f37 %global gcc_version 11.0.1 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.3%{?dist} +Release: %{gcc_release}.4%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -265,8 +265,7 @@ Patch10: gcc11-Wno-format-security.patch Patch11: gcc11-rh1574936.patch Patch12: gcc11-d-shared-libphobos.patch Patch13: gcc11-pr91710.patch -Patch14: gcc11-pr99490.patch -Patch15: gcc11-pr99341-revert.patch +Patch14: gcc11-pr99341-revert.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 .pr91710~ -%patch14 -p0 -b .pr99490~ -%patch15 -p0 -b .pr99341-revert~ +%patch14 -p0 -b .pr99341-revert~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3126,6 +3124,33 @@ end %endif %changelog +* Mon Apr 5 2021 Jakub Jelinek 11.0.1-0.4 +- update from trunk + - PRs ada/99802, analyzer/93695, analyzer/99044, analyzer/99716, + analyzer/99771, bootstrap/98860, c++/90664, c++/91217, c++/91416, + c++/94751, c++/97900, c++/97938, c++/98352, c++/99331, c++/99445, + c++/99565, c++/99583, c++/99584, c++/99586, c++/99643, c++/99672, + c++/99705, c++/99745, c++/99790, c++/99815, c++/99831, c++/99869, + d/91595, d/99691, debug/99334, fortran/99369, fortran/99602, + fortran/99651, fortran/99818, fortran/99840, ipa/98265, ipa/99122, + ipa/99466, ipa/99751, libstdc++/99533, lto/99447, middle-end/65182, + rtl-optimization/97141, rtl-optimization/98726, + rtl-optimization/99863, target/96974, target/97653, target/98119, + target/98136, target/98209, target/99037, target/99133, target/99216, + target/99555, target/99718, target/99724, target/99727, target/99744, + target/99753, target/99766, target/99773, target/99786, target/99808, + target/99813, target/99820, target/99822, testsuite/98125, + tree-optimization/48483, tree-optimization/55060, + tree-optimization/59970, tree-optimization/61112, + tree-optimization/61677, tree-optimization/61869, + tree-optimization/96573, tree-optimization/96974, + tree-optimization/97009, tree-optimization/98268, + tree-optimization/99726, tree-optimization/99746, + tree-optimization/99777, tree-optimization/99807, + tree-optimization/99824, tree-optimization/99825, + tree-optimization/99856, tree-optimization/99863, + tree-optimization/99882 + * Wed Mar 24 2021 Jakub Jelinek 11.0.1-0.3 - update from trunk - PRs analyzer/99614, c++/99239, c++/99283, c++/99318, c++/99425, c++/99456, diff --git a/gcc11-pr99490.patch b/gcc11-pr99490.patch deleted file mode 100644 index abda126..0000000 --- a/gcc11-pr99490.patch +++ /dev/null @@ -1,473 +0,0 @@ -2021-03-12 Jakub Jelinek - - PR debug/99490 - * dwarf2out.c (debug_ranges_dwo_section): New variable. - (DW_RANGES_IDX_SKELETON): Define. - (struct dw_ranges): Add begin_entry and end_entry members. - (DEBUG_DWO_RNGLISTS_SECTION): Define. - (add_ranges_num): Adjust r initializer for addition of *_entry - members. - (add_ranges_by_labels): For -gsplit-dwarf and force_direct, - set idx to DW_RANGES_IDX_SKELETON. - (index_rnglists): Don't set r->idx if it is equal to - DW_RANGES_IDX_SKELETON. Initialize r->begin_entry and - r->end_entry for -gsplit-dwarf if those will be needed by - output_rnglists. - (output_rnglists): Add DWO argument. If true, switch to - debug_ranges_dwo_section rather than debug_ranges_section. - Adjust l1/l2 label indexes. Only output the offset table when - dwo is true and don't include in there the skeleton range - entry if present. For -gsplit-dwarf, skip ranges that belong - to the other rnglists section. Change return type from void - to bool and return true if there are any range entries for - the other section. For dwarf_split_debug_info use - DW_RLE_startx_endx, DW_RLE_startx_length and DW_RLE_base_addressx - entries instead of DW_RLE_start_end, DW_RLE_start_length and - DW_RLE_base_address. - (init_sections_and_labels): Initialize debug_ranges_dwo_section - if -gsplit-dwarf and DWARF >= 5. Adjust ranges_section_label - and range_base_label indexes. - (dwarf2out_finish): Call index_rnglists earlier before finalizing - .debug_addr. Never emit DW_AT_rnglists_base attribute. For - -gsplit-dwarf and DWARF >= 5 call output_rnglists up to twice - with different dwo arguments. - (dwarf2out_c_finalize): Clear debug_ranges_dwo_section. - ---- gcc/dwarf2out.c.jj 2021-03-10 17:36:37.037537129 +0100 -+++ gcc/dwarf2out.c 2021-03-11 12:50:00.402418873 +0100 -@@ -171,6 +171,7 @@ static GTY(()) section *debug_line_str_s - static GTY(()) section *debug_str_dwo_section; - static GTY(()) section *debug_str_offsets_section; - static GTY(()) section *debug_ranges_section; -+static GTY(()) section *debug_ranges_dwo_section; - static GTY(()) section *debug_frame_section; - - /* Maximum size (in bytes) of an artificially generated label. */ -@@ -3152,11 +3153,17 @@ struct GTY(()) dw_ranges { - /* If this is positive, it's a block number, otherwise it's a - bitwise-negated index into dw_ranges_by_label. */ - int num; -+ /* If idx is equal to DW_RANGES_IDX_SKELETON, it should be emitted -+ into .debug_rnglists section rather than .debug_rnglists.dwo -+ for -gsplit-dwarf and DWARF >= 5. */ -+#define DW_RANGES_IDX_SKELETON ((1U << 31) - 1) - /* Index for the range list for DW_FORM_rnglistx. */ - unsigned int idx : 31; - /* True if this range might be possibly in a different section - from previous entry. */ - unsigned int maybe_new_sec : 1; -+ addr_table_entry *begin_entry; -+ addr_table_entry *end_entry; - }; - - /* A structure to hold a macinfo entry. */ -@@ -4099,6 +4106,9 @@ new_addr_loc_descr (rtx addr, enum dtpre - #ifndef DEBUG_RNGLISTS_SECTION - #define DEBUG_RNGLISTS_SECTION ".debug_rnglists" - #endif -+#ifndef DEBUG_DWO_RNGLISTS_SECTION -+#define DEBUG_DWO_RNGLISTS_SECTION ".debug_rnglists.dwo" -+#endif - #ifndef DEBUG_LINE_STR_SECTION - #define DEBUG_LINE_STR_SECTION ".debug_line_str" - #endif -@@ -11751,7 +11761,7 @@ output_aranges (void) - static unsigned int - add_ranges_num (int num, bool maybe_new_sec) - { -- dw_ranges r = { NULL, num, 0, maybe_new_sec }; -+ dw_ranges r = { NULL, num, 0, maybe_new_sec, NULL, NULL }; - vec_safe_push (ranges_table, r); - return vec_safe_length (ranges_table) - 1; - } -@@ -11796,6 +11806,8 @@ add_ranges_by_labels (dw_die_ref die, co - add_AT_range_list (die, DW_AT_ranges, offset, force_direct); - *added = true; - note_rnglist_head (offset); -+ if (dwarf_split_debug_info && force_direct) -+ (*ranges_table)[offset].idx = DW_RANGES_IDX_SKELETON; - } - } - -@@ -11921,23 +11933,87 @@ asm_outputs_debug_line_str (void) - } - - --/* Assign .debug_rnglists indexes. */ -+/* Assign .debug_rnglists indexes and unique indexes into the debug_addr -+ section when needed. */ - - static void - index_rnglists (void) - { - unsigned i; - dw_ranges *r; -+ bool base = false; -+ unsigned int len = vec_safe_length (ranges_table); - - FOR_EACH_VEC_SAFE_ELT (ranges_table, i, r) -- if (r->label) -- r->idx = rnglist_idx++; -+ { -+ if (r->label && r->idx != DW_RANGES_IDX_SKELETON) -+ r->idx = rnglist_idx++; -+ -+ if (!have_multiple_function_sections) -+ continue; -+ int block_num = r->num; -+ if (HAVE_AS_LEB128 && (r->label || r->maybe_new_sec)) -+ base = false; -+ if (block_num > 0) -+ { -+ char blabel[MAX_ARTIFICIAL_LABEL_BYTES]; -+ char elabel[MAX_ARTIFICIAL_LABEL_BYTES]; -+ -+ ASM_GENERATE_INTERNAL_LABEL (blabel, BLOCK_BEGIN_LABEL, block_num); -+ ASM_GENERATE_INTERNAL_LABEL (elabel, BLOCK_END_LABEL, block_num); -+ -+ if (HAVE_AS_LEB128) -+ { -+ if (!base) -+ { -+ dw_ranges *r2 = NULL; -+ if (i < len - 1) -+ r2 = &(*ranges_table)[i + 1]; -+ if (r2 -+ && r2->num != 0 -+ && r2->label == NULL -+ && !r2->maybe_new_sec) -+ { -+ r->begin_entry -+ = add_addr_table_entry (xstrdup (blabel), -+ ate_kind_label); -+ base = true; -+ } -+ } -+ if (base) -+ continue; -+ r->begin_entry -+ = add_addr_table_entry (xstrdup (blabel), ate_kind_label); -+ } -+ else -+ { -+ r->begin_entry -+ = add_addr_table_entry (xstrdup (blabel), ate_kind_label); -+ r->end_entry -+ = add_addr_table_entry (xstrdup (elabel), ate_kind_label); -+ } -+ } -+ -+ /* Negative block_num stands for an index into ranges_by_label. */ -+ else if (block_num < 0) -+ { -+ int lab_idx = - block_num - 1; -+ const char *blabel = (*ranges_by_label)[lab_idx].begin; -+ const char *elabel = (*ranges_by_label)[lab_idx].end; -+ -+ r->begin_entry -+ = add_addr_table_entry (xstrdup (blabel), ate_kind_label); -+ if (!HAVE_AS_LEB128) -+ r->end_entry -+ = add_addr_table_entry (xstrdup (elabel), ate_kind_label); -+ } -+ } - } - --/* Emit .debug_rnglists section. */ -+/* Emit .debug_rnglists or (when DWO is true) .debug_rnglists.dwo section. */ - --static void --output_rnglists (unsigned generation) -+static bool -+output_rnglists (unsigned generation, bool dwo) - { - unsigned i; - dw_ranges *r; -@@ -11945,14 +12021,19 @@ output_rnglists (unsigned generation) - char l2[MAX_ARTIFICIAL_LABEL_BYTES]; - char basebuf[MAX_ARTIFICIAL_LABEL_BYTES]; - -- switch_to_section (debug_ranges_section); -- ASM_OUTPUT_LABEL (asm_out_file, ranges_section_label); -+ if (dwo) -+ switch_to_section (debug_ranges_dwo_section); -+ else -+ { -+ switch_to_section (debug_ranges_section); -+ ASM_OUTPUT_LABEL (asm_out_file, ranges_section_label); -+ } - /* There are up to 4 unique ranges labels per generation. - See also init_sections_and_labels. */ - ASM_GENERATE_INTERNAL_LABEL (l1, DEBUG_RANGES_SECTION_LABEL, -- 2 + generation * 4); -+ 2 + 2 * dwo + generation * 6); - ASM_GENERATE_INTERNAL_LABEL (l2, DEBUG_RANGES_SECTION_LABEL, -- 3 + generation * 4); -+ 3 + 2 * dwo + generation * 6); - if (DWARF_INITIAL_LENGTH_SIZE - dwarf_offset_size == 4) - dw2_asm_output_data (4, 0xffffffff, - "Initial length escape value indicating " -@@ -11969,13 +12050,13 @@ output_rnglists (unsigned generation) - the offset table plus corresponding DW_FORM_rnglistx uleb128 indexes - into it are usually larger than just DW_FORM_sec_offset offsets - into the .debug_rnglists section. */ -- dw2_asm_output_data (4, dwarf_split_debug_info ? rnglist_idx : 0, -+ dw2_asm_output_data (4, dwo ? rnglist_idx : 0, - "Offset Entry Count"); -- if (dwarf_split_debug_info) -+ if (dwo) - { - ASM_OUTPUT_LABEL (asm_out_file, ranges_base_label); - FOR_EACH_VEC_SAFE_ELT (ranges_table, i, r) -- if (r->label) -+ if (r->label && r->idx != DW_RANGES_IDX_SKELETON) - dw2_asm_output_delta (dwarf_offset_size, r->label, - ranges_base_label, NULL); - } -@@ -11983,15 +12064,32 @@ output_rnglists (unsigned generation) - const char *lab = ""; - unsigned int len = vec_safe_length (ranges_table); - const char *base = NULL; -+ bool skipping = false; -+ bool ret = false; - FOR_EACH_VEC_SAFE_ELT (ranges_table, i, r) - { - int block_num = r->num; - - if (r->label) - { -+ if (dwarf_split_debug_info) -+ { -+ if ((r->idx == DW_RANGES_IDX_SKELETON) == dwo) -+ { -+ ret = true; -+ skipping = true; -+ continue; -+ } -+ } - ASM_OUTPUT_LABEL (asm_out_file, r->label); - lab = r->label; - } -+ if (skipping) -+ { -+ if (block_num == 0) -+ skipping = false; -+ continue; -+ } - if (HAVE_AS_LEB128 && (r->label || r->maybe_new_sec)) - base = NULL; - if (block_num > 0) -@@ -12027,10 +12125,23 @@ output_rnglists (unsigned generation) - && r2->label == NULL - && !r2->maybe_new_sec) - { -- dw2_asm_output_data (1, DW_RLE_base_address, -- "DW_RLE_base_address (%s)", lab); -- dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel, -- "Base address (%s)", lab); -+ if (dwarf_split_debug_info) -+ { -+ dw2_asm_output_data (1, DW_RLE_base_addressx, -+ "DW_RLE_base_addressx (%s)", -+ lab); -+ dw2_asm_output_data_uleb128 (r->begin_entry->index, -+ "Base address index " -+ "(%s)", blabel); -+ } -+ else -+ { -+ dw2_asm_output_data (1, DW_RLE_base_address, -+ "DW_RLE_base_address (%s)", -+ lab); -+ dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel, -+ "Base address (%s)", lab); -+ } - strcpy (basebuf, blabel); - base = basebuf; - } -@@ -12045,13 +12156,35 @@ output_rnglists (unsigned generation) - "Range end address (%s)", lab); - continue; - } -- dw2_asm_output_data (1, DW_RLE_start_length, -- "DW_RLE_start_length (%s)", lab); -- dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel, -- "Range begin address (%s)", lab); -+ if (dwarf_split_debug_info) -+ { -+ dw2_asm_output_data (1, DW_RLE_startx_length, -+ "DW_RLE_startx_length (%s)", lab); -+ dw2_asm_output_data_uleb128 (r->begin_entry->index, -+ "Range begin address index " -+ "(%s)", blabel); -+ } -+ else -+ { -+ dw2_asm_output_data (1, DW_RLE_start_length, -+ "DW_RLE_start_length (%s)", lab); -+ dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel, -+ "Range begin address (%s)", lab); -+ } - dw2_asm_output_delta_uleb128 (elabel, blabel, - "Range length (%s)", lab); - } -+ else if (dwarf_split_debug_info) -+ { -+ dw2_asm_output_data (1, DW_RLE_startx_endx, -+ "DW_RLE_startx_endx (%s)", lab); -+ dw2_asm_output_data_uleb128 (r->begin_entry->index, -+ "Range begin address index " -+ "(%s)", blabel); -+ dw2_asm_output_data_uleb128 (r->end_entry->index, -+ "Range end address index " -+ "(%s)", elabel); -+ } - else - { - dw2_asm_output_data (1, DW_RLE_start_end, -@@ -12074,13 +12207,35 @@ output_rnglists (unsigned generation) - gcc_unreachable (); - if (HAVE_AS_LEB128) - { -- dw2_asm_output_data (1, DW_RLE_start_length, -- "DW_RLE_start_length (%s)", lab); -- dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel, -- "Range begin address (%s)", lab); -+ if (dwarf_split_debug_info) -+ { -+ dw2_asm_output_data (1, DW_RLE_startx_length, -+ "DW_RLE_startx_length (%s)", lab); -+ dw2_asm_output_data_uleb128 (r->begin_entry->index, -+ "Range begin address index " -+ "(%s)", blabel); -+ } -+ else -+ { -+ dw2_asm_output_data (1, DW_RLE_start_length, -+ "DW_RLE_start_length (%s)", lab); -+ dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel, -+ "Range begin address (%s)", lab); -+ } - dw2_asm_output_delta_uleb128 (elabel, blabel, - "Range length (%s)", lab); - } -+ else if (dwarf_split_debug_info) -+ { -+ dw2_asm_output_data (1, DW_RLE_startx_endx, -+ "DW_RLE_startx_endx (%s)", lab); -+ dw2_asm_output_data_uleb128 (r->begin_entry->index, -+ "Range begin address index " -+ "(%s)", blabel); -+ dw2_asm_output_data_uleb128 (r->end_entry->index, -+ "Range end address index " -+ "(%s)", elabel); -+ } - else - { - dw2_asm_output_data (1, DW_RLE_start_end, -@@ -12096,6 +12251,7 @@ output_rnglists (unsigned generation) - "DW_RLE_end_of_list (%s)", lab); - } - ASM_OUTPUT_LABEL (asm_out_file, l2); -+ return ret; - } - - /* Data structure containing information about input files. */ -@@ -28823,6 +28979,10 @@ init_sections_and_labels (bool early_lto - debug_macinfo_section = get_section (debug_macinfo_section_name, - SECTION_DEBUG | SECTION_EXCLUDE, - NULL); -+ if (dwarf_version >= 5) -+ debug_ranges_dwo_section -+ = get_section (DEBUG_DWO_RNGLISTS_SECTION, -+ SECTION_DEBUG | SECTION_EXCLUDE, NULL); - } - debug_aranges_section = get_section (DEBUG_ARANGES_SECTION, - SECTION_DEBUG, NULL); -@@ -28857,15 +29017,15 @@ init_sections_and_labels (bool early_lto - ASM_GENERATE_INTERNAL_LABEL (debug_line_section_label, - DEBUG_LINE_SECTION_LABEL, - init_sections_and_labels_generation); -- /* There are up to 4 unique ranges labels per generation. -+ /* There are up to 6 unique ranges labels per generation. - See also output_rnglists. */ - ASM_GENERATE_INTERNAL_LABEL (ranges_section_label, - DEBUG_RANGES_SECTION_LABEL, -- init_sections_and_labels_generation * 4); -+ init_sections_and_labels_generation * 6); - if (dwarf_version >= 5 && dwarf_split_debug_info) - ASM_GENERATE_INTERNAL_LABEL (ranges_base_label, - DEBUG_RANGES_SECTION_LABEL, -- 1 + init_sections_and_labels_generation * 4); -+ 1 + init_sections_and_labels_generation * 6); - ASM_GENERATE_INTERNAL_LABEL (debug_addr_section_label, - DEBUG_ADDR_SECTION_LABEL, - init_sections_and_labels_generation); -@@ -31665,6 +31825,9 @@ dwarf2out_finish (const char *filename) - index_location_lists (comp_unit_die ()); - } - -+ if (dwarf_version >= 5 && !vec_safe_is_empty (ranges_table)) -+ index_rnglists (); -+ - if (addr_index_table != NULL) - { - unsigned int index = 0; -@@ -31730,9 +31893,6 @@ dwarf2out_finish (const char *filename) - int mark; - struct md5_ctx ctx; - -- if (dwarf_version >= 5 && !vec_safe_is_empty (ranges_table)) -- index_rnglists (); -- - /* Compute a checksum of the comp_unit to use as the dwo_id. */ - md5_init_ctx (&ctx); - mark = 0; -@@ -31752,10 +31912,7 @@ dwarf2out_finish (const char *filename) - comp-unit DIE. */ - if (!vec_safe_is_empty (ranges_table)) - { -- if (dwarf_version >= 5) -- add_AT_lineptr (main_comp_unit_die, DW_AT_rnglists_base, -- ranges_base_label); -- else -+ if (dwarf_version < 5) - add_AT_lineptr (main_comp_unit_die, DW_AT_GNU_ranges_base, - ranges_section_label); - } -@@ -31833,7 +31990,26 @@ dwarf2out_finish (const char *filename) - if (!vec_safe_is_empty (ranges_table)) - { - if (dwarf_version >= 5) -- output_rnglists (generation); -+ { -+ if (dwarf_split_debug_info) -+ { -+ /* We don't know right now whether there are any -+ ranges for .debug_rnglists and any for .debug_rnglists.dwo. -+ Depending on into which of those two belongs the first -+ ranges_table entry, emit that section first and that -+ output_rnglists call will return if the other kind of -+ ranges needs to be emitted as well. */ -+ if ((*ranges_table)[0].idx == DW_RANGES_IDX_SKELETON) -+ { -+ if (output_rnglists (generation, false)) -+ output_rnglists (generation, true); -+ } -+ else if (output_rnglists (generation, true)) -+ output_rnglists (generation, false); -+ } -+ else -+ output_rnglists (generation, false); -+ } - else - output_ranges (); - } -@@ -32457,6 +32633,7 @@ dwarf2out_c_finalize (void) - debug_str_dwo_section = NULL; - debug_str_offsets_section = NULL; - debug_ranges_section = NULL; -+ debug_ranges_dwo_section = NULL; - debug_frame_section = NULL; - fde_vec = NULL; - debug_str_hash = NULL; From f817c30ff88ceaba6247705434d42493cd3ca542 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 5 Apr 2021 15:59:27 +0200 Subject: [PATCH 038/293] 11.0.1-0.4 --- .gitignore | 1 + sources | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 5b2898a..bf38ed9 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,4 @@ /gcc-11.0.1-20210319.tar.xz /isl-0.18.tar.bz2 /gcc-11.0.1-20210324.tar.xz +/gcc-11.0.1-20210405.tar.xz diff --git a/sources b/sources index 030c3fa..25006ea 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.0.1-20210324.tar.xz) = 3f7fb2bb2098b021efe5e3dcf128a91525adc49ace1ad4120bbccc95827c45affe9beacfff43b03a0da30fcb6f8ea1a22ab7bd05f2aed05b0541f8c2ca4cfd0c +SHA512 (gcc-11.0.1-20210405.tar.xz) = c4b10ae9197c1ce568c68f00185f8ae466af86b5f26f2ff280bafbc75d65b59a51998c6dccc512afc26843748345422b40a823a5f361e43661ded988ae733f1b SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From c38b60d6f82afb878930cc5afe6f9bba03f129ed Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 8 Apr 2021 14:10:22 +0200 Subject: [PATCH 039/293] Tweak defaults for %%{rhel} >= 9. --- gcc.spec | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 7ed9a7c..cd4febb 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1009,8 +1009,12 @@ CONFIGURE_OPTS="\ %endif %endif %ifarch ppc64le +%if 0%{?rhel} >= 9 + --with-cpu-32=power9 --with-tune-32=power9 --with-cpu-64=power9 --with-tune-64=power9 \ +%else --with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 \ %endif +%endif %ifarch ppc --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32 %endif @@ -1040,7 +1044,7 @@ CONFIGURE_OPTS="\ %if 0%{?rhel} >= 7 %if 0%{?rhel} > 7 %if 0%{?rhel} > 8 - --with-arch=z13 --with-tune=arch13 \ + --with-arch=z14 --with-tune=z15 \ %else --with-arch=z13 --with-tune=z14 \ %endif @@ -3124,6 +3128,9 @@ end %endif %changelog +- for %%{rhel} >= 9, default to -march=z14 -mtune=z15 on s390x and + to -mcpu=power9 -mtune=power9 on ppc64le + * Mon Apr 5 2021 Jakub Jelinek 11.0.1-0.4 - update from trunk - PRs ada/99802, analyzer/93695, analyzer/99044, analyzer/99716, From 8ad393378c111f06d981e96aa08b4664e3d40fcd Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 8 Apr 2021 14:17:18 +0200 Subject: [PATCH 040/293] Change >= 9 to == 9 for now. --- gcc.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gcc.spec b/gcc.spec index cd4febb..7509960 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1009,7 +1009,7 @@ CONFIGURE_OPTS="\ %endif %endif %ifarch ppc64le -%if 0%{?rhel} >= 9 +%if 0%{?rhel} == 9 --with-cpu-32=power9 --with-tune-32=power9 --with-cpu-64=power9 --with-tune-64=power9 \ %else --with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 \ @@ -1044,7 +1044,11 @@ CONFIGURE_OPTS="\ %if 0%{?rhel} >= 7 %if 0%{?rhel} > 7 %if 0%{?rhel} > 8 +%if 0%{?rhel} == 9 --with-arch=z14 --with-tune=z15 \ +%else + --with-arch=z13 --with-tune=arch13 \ +%endif %else --with-arch=z13 --with-tune=z14 \ %endif @@ -3128,7 +3132,7 @@ end %endif %changelog -- for %%{rhel} >= 9, default to -march=z14 -mtune=z15 on s390x and +- for %%{rhel} == 9, default to -march=z14 -mtune=z15 on s390x and to -mcpu=power9 -mtune=power9 on ppc64le * Mon Apr 5 2021 Jakub Jelinek 11.0.1-0.4 From 541204d67be307b7377e59ae3d52d495561ff596 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 18 Apr 2021 16:41:25 +0200 Subject: [PATCH 041/293] 11.0.1-0.5 --- .gitignore | 1 + gcc.spec | 47 ++++++++++++++++++---- gcc11-pr91710.patch | 96 --------------------------------------------- sources | 2 +- 4 files changed, 42 insertions(+), 104 deletions(-) delete mode 100644 gcc11-pr91710.patch diff --git a/.gitignore b/.gitignore index bf38ed9..94709df 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ /isl-0.18.tar.bz2 /gcc-11.0.1-20210324.tar.xz /gcc-11.0.1-20210405.tar.xz +/gcc-11.0.1-20210418.tar.xz diff --git a/gcc.spec b/gcc.spec index 7509960..a7a4fa4 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20210405 -%global gitrev 669f363681ba1022eb5fcdb2502ad0ef01cb8f37 +%global DATE 20210418 +%global gitrev 8047a824dd92293d2ab13b33e1a0c5c8b4c83256 %global gcc_version 11.0.1 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.4%{?dist} +Release: %{gcc_release}.5%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -264,8 +264,7 @@ Patch9: gcc11-foffload-default.patch Patch10: gcc11-Wno-format-security.patch Patch11: gcc11-rh1574936.patch Patch12: gcc11-d-shared-libphobos.patch -Patch13: gcc11-pr91710.patch -Patch14: gcc11-pr99341-revert.patch +Patch13: gcc11-pr99341-revert.patch Patch100: gcc11-fortran-fdec-duplicates.patch Patch101: gcc11-fortran-flogical-as-integer.patch @@ -788,8 +787,7 @@ to NVidia PTX capable devices if available. %patch11 -p0 -b .rh1574936~ %endif %patch12 -p0 -b .d-shared-libphobos~ -%patch13 -p0 -b .pr91710~ -%patch14 -p0 -b .pr99341-revert~ +%patch13 -p0 -b .pr99341-revert~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3132,6 +3130,41 @@ end %endif %changelog +* Sun Apr 18 2021 Jakub Jelinek 11.0.1-0.5 +- update from trunk + - PRs analyzer/98599, analyzer/99042, analyzer/99212, analyzer/99774, + analyzer/99886, analyzer/99906, analyzer/100011, c++/41723, c++/49951, + c++/52202, c++/52625, c++/58123, c++/80456, c++/83476, c++/88742, + c++/90215, c++/90479, c++/90674, c++/91241, c++/91849, c++/91933, + c++/92918, c++/93085, c++/93295, c++/93314, c++/93867, c++/94529, + c++/95317, c++/95486, c++/95870, c++/96311, c++/96673, c++/96873, + c++/97121, c++/97134, c++/97679, c++/97974, c++/98440, c++/98800, + c++/98852, c++/99008, c++/99066, c++/99118, c++/99180, c++/99201, + c++/99380, c++/99478, c++/99700, c++/99803, c++/99806, c++/99833, + c++/99844, c++/99850, c++/99859, c++/99874, c++/99885, c++/99899, + c++/99901, c++/99961, c++/99994, c++/100006, c++/100032, c++/100054, + c++/100078, c++/100079, c++/100091, c++/100101, c++/100111, c/98852, + c/99420, c/99972, c/99990, d/99812, d/99914, d/99917, debug/99830, + fortran/63797, fortran/99307, fortran/99817, fortran/100018, + fortran/100094, jit/100096, libfortran/78314, libgomp/99984, + libstdc++/96657, libstdc++/99402, libstdc++/99433, libstdc++/99805, + libstdc++/99985, libstdc++/99995, libstdc++/100044, libstdc++/100060, + lto/98599, lto/99849, lto/99857, middle-end/55288, middle-end/84877, + middle-end/84991, middle-end/84992, middle-end/86058, + middle-end/90779, middle-end/98088, middle-end/99883, + middle-end/99989, preprocessor/99446, rtl-optimization/98601, + rtl-optimization/98689, rtl-optimization/99596, + rtl-optimization/99905, rtl-optimization/99929, + rtl-optimization/100066, sanitizer/99877, sanitizer/100114, + target/87763, target/99246, target/99647, target/99648, target/99748, + target/99767, target/99781, target/99872, target/100028, + target/100048, target/100056, target/100067, target/100075, + testsuite/99955, testsuite/100071, testsuite/100073, + tree-optimization/82800, tree-optimization/97513, + tree-optimization/98736, tree-optimization/99873, + tree-optimization/99880, tree-optimization/99924, + tree-optimization/99947, tree-optimization/99954, + tree-optimization/100053 - for %%{rhel} == 9, default to -march=z14 -mtune=z15 on s390x and to -mcpu=power9 -mtune=power9 on ppc64le diff --git a/gcc11-pr91710.patch b/gcc11-pr91710.patch deleted file mode 100644 index fde604c..0000000 --- a/gcc11-pr91710.patch +++ /dev/null @@ -1,96 +0,0 @@ -2021-03-18 Jakub Jelinek - - PR target/91710 - * config/aarch64/aarch64.c (aarch64_function_arg_alignment): Change - abi_break argument from bool * to unsigned *, store there the pre-GCC 9 - alignment. - (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Adjust callers. - (aarch64_function_arg_regno_p): Likewise. Only emit -Wpsabi note if - the old and new alignment after applying MIN/MAX to it is different. - - * gcc.target/aarch64/pr91710.c: New test. - ---- gcc/config/aarch64/aarch64.c.jj 2021-03-18 15:14:51.721425223 +0100 -+++ gcc/config/aarch64/aarch64.c 2021-03-18 16:35:04.437115447 +0100 -@@ -5938,9 +5938,9 @@ aarch64_vfp_is_call_candidate (cumulativ - - static unsigned int - aarch64_function_arg_alignment (machine_mode mode, const_tree type, -- bool *abi_break) -+ unsigned int *abi_break) - { -- *abi_break = false; -+ *abi_break = 0; - if (!type) - return GET_MODE_ALIGNMENT (mode); - -@@ -5982,7 +5982,7 @@ aarch64_function_arg_alignment (machine_ - - if (bitfield_alignment > alignment) - { -- *abi_break = true; -+ *abi_break = alignment; - return bitfield_alignment; - } - -@@ -6004,7 +6004,7 @@ aarch64_layout_arg (cumulative_args_t pc - int ncrn, nvrn, nregs; - bool allocate_ncrn, allocate_nvrn; - HOST_WIDE_INT size; -- bool abi_break; -+ unsigned int abi_break; - - /* We need to do this once per argument. */ - if (pcum->aapcs_arg_processed) -@@ -6322,14 +6322,19 @@ aarch64_function_arg_regno_p (unsigned r - static unsigned int - aarch64_function_arg_boundary (machine_mode mode, const_tree type) - { -- bool abi_break; -+ unsigned int abi_break; - unsigned int alignment = aarch64_function_arg_alignment (mode, type, - &abi_break); -+ alignment = MIN (MAX (alignment, PARM_BOUNDARY), STACK_BOUNDARY); - if (abi_break & warn_psabi) -- inform (input_location, "parameter passing for argument of type " -- "%qT changed in GCC 9.1", type); -+ { -+ abi_break = MIN (MAX (abi_break, PARM_BOUNDARY), STACK_BOUNDARY); -+ if (alignment != abi_break) -+ inform (input_location, "parameter passing for argument of type " -+ "%qT changed in GCC 9.1", type); -+ } - -- return MIN (MAX (alignment, PARM_BOUNDARY), STACK_BOUNDARY); -+ return alignment; - } - - /* Implement TARGET_GET_RAW_RESULT_MODE and TARGET_GET_RAW_ARG_MODE. */ -@@ -16616,7 +16621,7 @@ aarch64_gimplify_va_arg_expr (tree valis - f_stack, NULL_TREE); - size = int_size_in_bytes (type); - -- bool abi_break; -+ unsigned int abi_break; - align - = aarch64_function_arg_alignment (mode, type, &abi_break) / BITS_PER_UNIT; - ---- gcc/testsuite/gcc.target/aarch64/pr91710.c.jj 2021-03-18 16:42:33.529232710 +0100 -+++ gcc/testsuite/gcc.target/aarch64/pr91710.c 2021-03-18 16:42:07.271518121 +0100 -@@ -0,0 +1,16 @@ -+/* PR target/91710 */ -+/* { dg-do compile } */ -+ -+struct S { unsigned int i:4; }; -+ -+unsigned int test1(struct S s) { /* { dg-bogus "parameter passing for argument of type" } */ -+ return s.i; -+} -+ -+unsigned int test2(unsigned x, struct S s) { /* { dg-bogus "parameter passing for argument of type" } */ -+ return x - s.i; -+} -+ -+unsigned int test3(unsigned x, unsigned y, struct S s) { /* { dg-bogus "parameter passing for argument of type" } */ -+ return x - y - s.i; -+} diff --git a/sources b/sources index 25006ea..065a048 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.0.1-20210405.tar.xz) = c4b10ae9197c1ce568c68f00185f8ae466af86b5f26f2ff280bafbc75d65b59a51998c6dccc512afc26843748345422b40a823a5f361e43661ded988ae733f1b +SHA512 (gcc-11.0.1-20210418.tar.xz) = 7b6870beafff15d806e26f353f0504189c42e4eb06bee142a19e0b75dcc7912a772206557d5f8bd6425414b54aa54abc0ee75b92b2ed0ada6d7a07c8ec944dae SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 93f9e68547698664f452060ba56c4dbfea1b9195 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 22 Apr 2021 19:15:37 +0200 Subject: [PATCH 042/293] 11.0.1-0.6 --- .gitignore | 1 + gcc.spec | 20 ++++++- gcc11-dg-ice.patch | 113 +++++++++++++++++++++++++++++++++++++ gcc11-libstdc++-docs.patch | 4 +- gcc11-pr100148.patch | 71 +++++++++++++++++++++++ sources | 2 +- 6 files changed, 205 insertions(+), 6 deletions(-) create mode 100644 gcc11-dg-ice.patch create mode 100644 gcc11-pr100148.patch diff --git a/.gitignore b/.gitignore index 94709df..7d5eb0c 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,4 @@ /gcc-11.0.1-20210324.tar.xz /gcc-11.0.1-20210405.tar.xz /gcc-11.0.1-20210418.tar.xz +/gcc-11.0.1-20210422.tar.xz diff --git a/gcc.spec b/gcc.spec index a7a4fa4..f93584c 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20210418 -%global gitrev 8047a824dd92293d2ab13b33e1a0c5c8b4c83256 +%global DATE 20210422 +%global gitrev 8047c64ba5baee42eb0744563b2f44da8b464154 %global gcc_version 11.0.1 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.5%{?dist} +Release: %{gcc_release}.6%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -265,6 +265,8 @@ Patch10: gcc11-Wno-format-security.patch Patch11: gcc11-rh1574936.patch Patch12: gcc11-d-shared-libphobos.patch Patch13: gcc11-pr99341-revert.patch +Patch14: gcc11-pr100148.patch +Patch15: gcc11-dg-ice.patch Patch100: gcc11-fortran-fdec-duplicates.patch Patch101: gcc11-fortran-flogical-as-integer.patch @@ -788,6 +790,8 @@ to NVidia PTX capable devices if available. %endif %patch12 -p0 -b .d-shared-libphobos~ %patch13 -p0 -b .pr99341-revert~ +%patch14 -p0 -b .pr100148~ +%patch15 -p0 -b .dg-ice~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3130,6 +3134,16 @@ end %endif %changelog +* Wed Apr 22 2021 Jakub Jelinek 11.0.1-0.6 +- update from trunk and releases/gcc-11 branch + - GCC 11.1-rc1 + - PRs ada/99360, c++/97536, c/100143, d/98058, d/98457, d/98494, d/98584, + d/99794, demangler/100177, fortran/100110, libstdc++/95983, + libstdc++/100146, libstdc++/100164, preprocessor/100142, + rtl-optimization/99927, target/100108, testsuite/100176, + tree-optimization/100081 +- fix a cprop -fcompare-debug bug (PR rtl-optimization/100148) + * Sun Apr 18 2021 Jakub Jelinek 11.0.1-0.5 - update from trunk - PRs analyzer/98599, analyzer/99042, analyzer/99212, analyzer/99774, diff --git a/gcc11-dg-ice.patch b/gcc11-dg-ice.patch new file mode 100644 index 0000000..de9944c --- /dev/null +++ b/gcc11-dg-ice.patch @@ -0,0 +1,113 @@ +testsuite: Add -fchecking to dg-ice tests + +In --enable-checking=release builds (which is the default on release +branches), I'm getting various extra FAILs that don't appear in +--enable-checking=yes builds. + +XPASS: g++.dg/cpp0x/constexpr-52830.C -std=c++14 (internal compiler error) +FAIL: g++.dg/cpp0x/constexpr-52830.C -std=c++14 (test for excess errors) +XPASS: g++.dg/cpp0x/constexpr-52830.C -std=c++17 (internal compiler error) +FAIL: g++.dg/cpp0x/constexpr-52830.C -std=c++17 (test for excess errors) +XPASS: g++.dg/cpp0x/constexpr-52830.C -std=c++2a (internal compiler error) +FAIL: g++.dg/cpp0x/constexpr-52830.C -std=c++2a (test for excess errors) +FAIL: g++.dg/cpp0x/vt-88982.C -std=c++14 (test for excess errors) +FAIL: g++.dg/cpp0x/vt-88982.C -std=c++17 (test for excess errors) +FAIL: g++.dg/cpp0x/vt-88982.C -std=c++2a (test for excess errors) +FAIL: g++.dg/cpp1y/auto-fn61.C -std=c++14 (test for excess errors) +FAIL: g++.dg/cpp1y/auto-fn61.C -std=c++17 (test for excess errors) +FAIL: g++.dg/cpp1y/auto-fn61.C -std=c++2a (test for excess errors) +FAIL: g++.dg/cpp1z/constexpr-lambda26.C -std=c++17 (test for excess errors) +FAIL: g++.dg/cpp1z/constexpr-lambda26.C -std=c++2a (test for excess errors) +FAIL: g++.dg/cpp2a/nontype-class39.C -std=c++2a (test for excess errors) +FAIL: c-c++-common/goacc/kernels-decompose-ice-1.c -std=c++14 (test for excess errors) +FAIL: c-c++-common/goacc/kernels-decompose-ice-1.c -std=c++17 (test for excess errors) +FAIL: c-c++-common/goacc/kernels-decompose-ice-1.c -std=c++2a (test for excess errors) +FAIL: c-c++-common/goacc/kernels-decompose-ice-1.c -std=c++98 (test for excess errors) +FAIL: c-c++-common/goacc/kernels-decompose-ice-2.c -std=c++14 (test for excess errors) +FAIL: c-c++-common/goacc/kernels-decompose-ice-2.c -std=c++17 (test for excess errors) +FAIL: c-c++-common/goacc/kernels-decompose-ice-2.c -std=c++2a (test for excess errors) +FAIL: c-c++-common/goacc/kernels-decompose-ice-2.c -std=c++98 (test for excess errors) + +These are tests that have dg-ice and most of those ICEs are checking ICEs +which go away in release checking when -fno-checking is the default. + +The following patch adds -fchecking option to those. + +2021-04-21 Jakub Jelinek + + * g++.dg/cpp1z/constexpr-lambda26.C: Add dg-additional-options + -fchecking. + * g++.dg/cpp1y/auto-fn61.C: Likewise. + * g++.dg/cpp2a/nontype-class39.C: Likewise. + * g++.dg/cpp0x/constexpr-52830.C: Likewise. + * g++.dg/cpp0x/vt-88982.C: Likewise. + * c-c++-common/goacc/kernels-decompose-ice-1.c: Add -fchecking to + dg-additional-options. + * c-c++-common/goacc/kernels-decompose-ice-2.c: Likewise. + +--- gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-1.c ++++ gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-1.c +@@ -1,7 +1,7 @@ + /* Test OpenACC 'kernels' construct decomposition. */ + + /* { dg-additional-options "-fopt-info-omp-all" } */ +-/* { dg-additional-options "--param=openacc-kernels=decompose" } */ ++/* { dg-additional-options "-fchecking --param=openacc-kernels=decompose" } */ + /* { dg-ice "TODO" } + { dg-prune-output "during GIMPLE pass: omplower" } */ + +--- gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-2.c ++++ gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-2.c +@@ -1,6 +1,6 @@ + /* Test OpenACC 'kernels' construct decomposition. */ + +-/* { dg-additional-options "--param=openacc-kernels=decompose" } */ ++/* { dg-additional-options "-fchecking --param=openacc-kernels=decompose" } */ + /* { dg-ice "TODO" } + { dg-prune-output "during GIMPLE pass: omplower" } */ + +--- gcc/testsuite/g++.dg/cpp0x/constexpr-52830.C ++++ gcc/testsuite/g++.dg/cpp0x/constexpr-52830.C +@@ -1,5 +1,6 @@ + // PR c++/52830 + // { dg-do compile { target c++11 } } ++// { dg-additional-options "-fchecking" } + // { dg-ice "comptypes" } + + template struct eif { typedef void type; }; +--- gcc/testsuite/g++.dg/cpp0x/vt-88982.C ++++ gcc/testsuite/g++.dg/cpp0x/vt-88982.C +@@ -1,5 +1,6 @@ + // PR c++/88982 + // { dg-do compile { target c++11 } } ++// { dg-additional-options "-fchecking" } + // { dg-ice "tsubst_pack_expansion" } + + template struct A { +--- gcc/testsuite/g++.dg/cpp1y/auto-fn61.C ++++ gcc/testsuite/g++.dg/cpp1y/auto-fn61.C +@@ -1,5 +1,6 @@ + // PR c++/88003 + // { dg-do compile { target c++14 } } ++// { dg-additional-options "-fchecking" } + // { dg-ice "poplevel_class" } + + auto test() { +--- gcc/testsuite/g++.dg/cpp1z/constexpr-lambda26.C ++++ gcc/testsuite/g++.dg/cpp1z/constexpr-lambda26.C +@@ -1,5 +1,6 @@ + // PR c++/87765 + // { dg-do compile { target c++17 } } ++// { dg-additional-options "-fchecking" } + // { dg-ice "cxx_eval_constant_expression" } + + template +--- gcc/testsuite/g++.dg/cpp2a/nontype-class39.C ++++ gcc/testsuite/g++.dg/cpp2a/nontype-class39.C +@@ -1,5 +1,6 @@ + // PR c++/89565 + // { dg-do compile { target c++20 } } ++// { dg-additional-options "-fchecking" } + // { dg-ice "resolve_args" } + + template diff --git a/gcc11-libstdc++-docs.patch b/gcc11-libstdc++-docs.patch index 9ea9f88..ec29880 100644 --- a/gcc11-libstdc++-docs.patch +++ b/gcc11-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 11.0.0 ++ Release 11.0.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 11.0.0 release, ++ for the 11.0.1 release, + online for each GCC release and diff --git a/gcc11-pr100148.patch b/gcc11-pr100148.patch new file mode 100644 index 0000000..4d21845 --- /dev/null +++ b/gcc11-pr100148.patch @@ -0,0 +1,71 @@ +cprop: Fix -fcompare-debug bug in constprop_register [PR100148] + +The following testcase shows different behavior between -g and -g0 +in constprop_register, if a flags register setter is separated +from a conditional jump using those flags with -g by a DEBUG_INSN. +As it uses just NEXT_INSN, for -g it will look at the DEBUG_INSN which is +not a conditional jump, while otherwise it would look at the conditional +jump and call cprop_jump. + +2021-04-21 Jakub Jelinek + + PR rtl-optimization/100148 + * cprop.c (constprop_register): Use next_nondebug_insn instead of + NEXT_INSN. + + * g++.dg/opt/pr100148.C: New test. + +--- gcc/cprop.c ++++ gcc/cprop.c +@@ -1007,16 +1007,18 @@ static int + constprop_register (rtx from, rtx src, rtx_insn *insn) + { + rtx sset; ++ rtx_insn *next_insn; + + /* Check for reg or cc0 setting instructions followed by + conditional branch instructions first. */ + if ((sset = single_set (insn)) != NULL +- && NEXT_INSN (insn) +- && any_condjump_p (NEXT_INSN (insn)) && onlyjump_p (NEXT_INSN (insn))) ++ && (next_insn = next_nondebug_insn (insn)) != NULL ++ && any_condjump_p (next_insn) ++ && onlyjump_p (next_insn)) + { + rtx dest = SET_DEST (sset); + if ((REG_P (dest) || CC0_P (dest)) +- && cprop_jump (BLOCK_FOR_INSN (insn), insn, NEXT_INSN (insn), ++ && cprop_jump (BLOCK_FOR_INSN (insn), insn, next_insn, + from, src)) + return 1; + } +--- gcc/testsuite/g++.dg/opt/pr100148.C ++++ gcc/testsuite/g++.dg/opt/pr100148.C +@@ -0,0 +1,27 @@ ++// PR rtl-optimization/100148 ++// { dg-do compile } ++// { dg-options "-O2 -fno-dce -fno-tree-dce -fno-tree-dominator-opts -fno-tree-sink -fcompare-debug" } ++ ++int i; ++enum E { } e, ee; ++ ++bool ++baz (int) ++{ ++ return ee; ++} ++ ++bool bar (); ++bool a, b; ++ ++void ++foo () ++{ ++ switch (ee) ++ { ++ case 0: ++ e = E (a ? : i); ++ case 1: ++ !(b || baz (0) && bar ()); ++ } ++} diff --git a/sources b/sources index 065a048..251a285 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.0.1-20210418.tar.xz) = 7b6870beafff15d806e26f353f0504189c42e4eb06bee142a19e0b75dcc7912a772206557d5f8bd6425414b54aa54abc0ee75b92b2ed0ada6d7a07c8ec944dae +SHA512 (gcc-11.0.1-20210422.tar.xz) = b2eac2bc381998bd2794fe764b11a5d6a7aa2d7d2b64ccc1e02fd22644157b566db4f0e52ab40750c23852eef8e17b4bdf49df1c3ad9a80570a46db4c95be07b SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 72c4542d1526933fee0e97f55357e8cf33d0e1b3 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 22 Apr 2021 19:16:42 +0200 Subject: [PATCH 043/293] 11.0.1-0.6 --- gcc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index f93584c..0e77e8f 100644 --- a/gcc.spec +++ b/gcc.spec @@ -3134,7 +3134,7 @@ end %endif %changelog -* Wed Apr 22 2021 Jakub Jelinek 11.0.1-0.6 +* Thu Apr 22 2021 Jakub Jelinek 11.0.1-0.6 - update from trunk and releases/gcc-11 branch - GCC 11.1-rc1 - PRs ada/99360, c++/97536, c/100143, d/98058, d/98457, d/98494, d/98584, From 7b59d695b5d5db09513ab19638423baca9cea268 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 23 Apr 2021 20:26:51 +0200 Subject: [PATCH 044/293] 11.0.1-0.7 --- .gitignore | 1 + gcc.spec | 11 ++++++++--- sources | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 7d5eb0c..ba611f7 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,4 @@ /gcc-11.0.1-20210405.tar.xz /gcc-11.0.1-20210418.tar.xz /gcc-11.0.1-20210422.tar.xz +/gcc-11.0.1-20210423.tar.xz diff --git a/gcc.spec b/gcc.spec index 0e77e8f..5c1f61e 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20210422 -%global gitrev 8047c64ba5baee42eb0744563b2f44da8b464154 +%global DATE 20210423 +%global gitrev c76c301ee2291a548ade37778a77407e520967e5 %global gcc_version 11.0.1 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.6%{?dist} +Release: %{gcc_release}.7%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3134,6 +3134,11 @@ end %endif %changelog +* Fri Apr 23 2021 Jakub Jelinek 11.0.1-0.7 +- update from trunk and releases/gcc-11 branch + - GCC 11.1-rc2 + - PRs libstdc++/100179, target/100182 + * Thu Apr 22 2021 Jakub Jelinek 11.0.1-0.6 - update from trunk and releases/gcc-11 branch - GCC 11.1-rc1 diff --git a/sources b/sources index 251a285..f67b7b5 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.0.1-20210422.tar.xz) = b2eac2bc381998bd2794fe764b11a5d6a7aa2d7d2b64ccc1e02fd22644157b566db4f0e52ab40750c23852eef8e17b4bdf49df1c3ad9a80570a46db4c95be07b +SHA512 (gcc-11.0.1-20210423.tar.xz) = c8fec68ef812d623285658e88d958537b4d5d8bbbecf4f6b6393e56a4866785bcd559e6995c35e52a96f4679039c473386f8ba4e3be7d423867a3552c90ea46c SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 9173737427d683124fe2403daf3f80e6b690751d Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 28 Apr 2021 14:04:34 +0200 Subject: [PATCH 045/293] 11.1.1-1 --- .gitignore | 1 + gcc.spec | 27 ++++++--- gcc11-dg-ice.patch | 113 ------------------------------------- gcc11-libstdc++-docs.patch | 4 +- gcc11-pr100148.patch | 71 ----------------------- gcc11-pr100298.patch | 17 ++++++ gcc11-pr100302.patch | 34 +++++++++++ sources | 2 +- update-gcc.sh | 2 +- 9 files changed, 74 insertions(+), 197 deletions(-) delete mode 100644 gcc11-dg-ice.patch delete mode 100644 gcc11-pr100148.patch create mode 100644 gcc11-pr100298.patch create mode 100644 gcc11-pr100302.patch diff --git a/.gitignore b/.gitignore index ba611f7..d9fedf8 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,4 @@ /gcc-11.0.1-20210418.tar.xz /gcc-11.0.1-20210422.tar.xz /gcc-11.0.1-20210423.tar.xz +/gcc-11.1.1-20210428.tar.xz diff --git a/gcc.spec b/gcc.spec index 5c1f61e..78c7f57 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20210423 -%global gitrev c76c301ee2291a548ade37778a77407e520967e5 -%global gcc_version 11.0.1 +%global DATE 20210428 +%global gitrev eb4b27fdf644012c40fe49ba8440594770dd8289 +%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 0 +%global gcc_release 1 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.7%{?dist} +Release: %{gcc_release}%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -265,8 +265,8 @@ Patch10: gcc11-Wno-format-security.patch Patch11: gcc11-rh1574936.patch Patch12: gcc11-d-shared-libphobos.patch Patch13: gcc11-pr99341-revert.patch -Patch14: gcc11-pr100148.patch -Patch15: gcc11-dg-ice.patch +Patch14: gcc11-pr100302.patch +Patch15: gcc11-pr100298.patch Patch100: gcc11-fortran-fdec-duplicates.patch Patch101: gcc11-fortran-flogical-as-integer.patch @@ -790,8 +790,8 @@ to NVidia PTX capable devices if available. %endif %patch12 -p0 -b .d-shared-libphobos~ %patch13 -p0 -b .pr99341-revert~ -%patch14 -p0 -b .pr100148~ -%patch15 -p0 -b .dg-ice~ +%patch14 -p0 -b .pr100302~ +%patch15 -p0 -b .pr100298~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3134,6 +3134,15 @@ end %endif %changelog +* Wed Apr 28 2021 Jakub Jelinek 11.1.1-1 +- update from releases/gcc-11-branch + - GCC 11.1 release + - PRs c++/93383, c++/95291, c++/96380, c++/99200, c++/99683, c++/100161, + debug/100255, fortran/100154, fortran/100218, libstdc++/100290, + rtl-optimization/100254, target/98952, target/100200, + tree-optimization/100239 +- fix ICE in aarch64_add_offset_1_temporaries (PR target/100302) + * Fri Apr 23 2021 Jakub Jelinek 11.0.1-0.7 - update from trunk and releases/gcc-11 branch - GCC 11.1-rc2 diff --git a/gcc11-dg-ice.patch b/gcc11-dg-ice.patch deleted file mode 100644 index de9944c..0000000 --- a/gcc11-dg-ice.patch +++ /dev/null @@ -1,113 +0,0 @@ -testsuite: Add -fchecking to dg-ice tests - -In --enable-checking=release builds (which is the default on release -branches), I'm getting various extra FAILs that don't appear in ---enable-checking=yes builds. - -XPASS: g++.dg/cpp0x/constexpr-52830.C -std=c++14 (internal compiler error) -FAIL: g++.dg/cpp0x/constexpr-52830.C -std=c++14 (test for excess errors) -XPASS: g++.dg/cpp0x/constexpr-52830.C -std=c++17 (internal compiler error) -FAIL: g++.dg/cpp0x/constexpr-52830.C -std=c++17 (test for excess errors) -XPASS: g++.dg/cpp0x/constexpr-52830.C -std=c++2a (internal compiler error) -FAIL: g++.dg/cpp0x/constexpr-52830.C -std=c++2a (test for excess errors) -FAIL: g++.dg/cpp0x/vt-88982.C -std=c++14 (test for excess errors) -FAIL: g++.dg/cpp0x/vt-88982.C -std=c++17 (test for excess errors) -FAIL: g++.dg/cpp0x/vt-88982.C -std=c++2a (test for excess errors) -FAIL: g++.dg/cpp1y/auto-fn61.C -std=c++14 (test for excess errors) -FAIL: g++.dg/cpp1y/auto-fn61.C -std=c++17 (test for excess errors) -FAIL: g++.dg/cpp1y/auto-fn61.C -std=c++2a (test for excess errors) -FAIL: g++.dg/cpp1z/constexpr-lambda26.C -std=c++17 (test for excess errors) -FAIL: g++.dg/cpp1z/constexpr-lambda26.C -std=c++2a (test for excess errors) -FAIL: g++.dg/cpp2a/nontype-class39.C -std=c++2a (test for excess errors) -FAIL: c-c++-common/goacc/kernels-decompose-ice-1.c -std=c++14 (test for excess errors) -FAIL: c-c++-common/goacc/kernels-decompose-ice-1.c -std=c++17 (test for excess errors) -FAIL: c-c++-common/goacc/kernels-decompose-ice-1.c -std=c++2a (test for excess errors) -FAIL: c-c++-common/goacc/kernels-decompose-ice-1.c -std=c++98 (test for excess errors) -FAIL: c-c++-common/goacc/kernels-decompose-ice-2.c -std=c++14 (test for excess errors) -FAIL: c-c++-common/goacc/kernels-decompose-ice-2.c -std=c++17 (test for excess errors) -FAIL: c-c++-common/goacc/kernels-decompose-ice-2.c -std=c++2a (test for excess errors) -FAIL: c-c++-common/goacc/kernels-decompose-ice-2.c -std=c++98 (test for excess errors) - -These are tests that have dg-ice and most of those ICEs are checking ICEs -which go away in release checking when -fno-checking is the default. - -The following patch adds -fchecking option to those. - -2021-04-21 Jakub Jelinek - - * g++.dg/cpp1z/constexpr-lambda26.C: Add dg-additional-options - -fchecking. - * g++.dg/cpp1y/auto-fn61.C: Likewise. - * g++.dg/cpp2a/nontype-class39.C: Likewise. - * g++.dg/cpp0x/constexpr-52830.C: Likewise. - * g++.dg/cpp0x/vt-88982.C: Likewise. - * c-c++-common/goacc/kernels-decompose-ice-1.c: Add -fchecking to - dg-additional-options. - * c-c++-common/goacc/kernels-decompose-ice-2.c: Likewise. - ---- gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-1.c -+++ gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-1.c -@@ -1,7 +1,7 @@ - /* Test OpenACC 'kernels' construct decomposition. */ - - /* { dg-additional-options "-fopt-info-omp-all" } */ --/* { dg-additional-options "--param=openacc-kernels=decompose" } */ -+/* { dg-additional-options "-fchecking --param=openacc-kernels=decompose" } */ - /* { dg-ice "TODO" } - { dg-prune-output "during GIMPLE pass: omplower" } */ - ---- gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-2.c -+++ gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-2.c -@@ -1,6 +1,6 @@ - /* Test OpenACC 'kernels' construct decomposition. */ - --/* { dg-additional-options "--param=openacc-kernels=decompose" } */ -+/* { dg-additional-options "-fchecking --param=openacc-kernels=decompose" } */ - /* { dg-ice "TODO" } - { dg-prune-output "during GIMPLE pass: omplower" } */ - ---- gcc/testsuite/g++.dg/cpp0x/constexpr-52830.C -+++ gcc/testsuite/g++.dg/cpp0x/constexpr-52830.C -@@ -1,5 +1,6 @@ - // PR c++/52830 - // { dg-do compile { target c++11 } } -+// { dg-additional-options "-fchecking" } - // { dg-ice "comptypes" } - - template struct eif { typedef void type; }; ---- gcc/testsuite/g++.dg/cpp0x/vt-88982.C -+++ gcc/testsuite/g++.dg/cpp0x/vt-88982.C -@@ -1,5 +1,6 @@ - // PR c++/88982 - // { dg-do compile { target c++11 } } -+// { dg-additional-options "-fchecking" } - // { dg-ice "tsubst_pack_expansion" } - - template struct A { ---- gcc/testsuite/g++.dg/cpp1y/auto-fn61.C -+++ gcc/testsuite/g++.dg/cpp1y/auto-fn61.C -@@ -1,5 +1,6 @@ - // PR c++/88003 - // { dg-do compile { target c++14 } } -+// { dg-additional-options "-fchecking" } - // { dg-ice "poplevel_class" } - - auto test() { ---- gcc/testsuite/g++.dg/cpp1z/constexpr-lambda26.C -+++ gcc/testsuite/g++.dg/cpp1z/constexpr-lambda26.C -@@ -1,5 +1,6 @@ - // PR c++/87765 - // { dg-do compile { target c++17 } } -+// { dg-additional-options "-fchecking" } - // { dg-ice "cxx_eval_constant_expression" } - - template ---- gcc/testsuite/g++.dg/cpp2a/nontype-class39.C -+++ gcc/testsuite/g++.dg/cpp2a/nontype-class39.C -@@ -1,5 +1,6 @@ - // PR c++/89565 - // { dg-do compile { target c++20 } } -+// { dg-additional-options "-fchecking" } - // { dg-ice "resolve_args" } - - template diff --git a/gcc11-libstdc++-docs.patch b/gcc11-libstdc++-docs.patch index ec29880..7213d2c 100644 --- a/gcc11-libstdc++-docs.patch +++ b/gcc11-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 11.0.1 ++ Release 11.1.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 11.0.1 release, ++ for the 11.1.1 release, + online for each GCC release and diff --git a/gcc11-pr100148.patch b/gcc11-pr100148.patch deleted file mode 100644 index 4d21845..0000000 --- a/gcc11-pr100148.patch +++ /dev/null @@ -1,71 +0,0 @@ -cprop: Fix -fcompare-debug bug in constprop_register [PR100148] - -The following testcase shows different behavior between -g and -g0 -in constprop_register, if a flags register setter is separated -from a conditional jump using those flags with -g by a DEBUG_INSN. -As it uses just NEXT_INSN, for -g it will look at the DEBUG_INSN which is -not a conditional jump, while otherwise it would look at the conditional -jump and call cprop_jump. - -2021-04-21 Jakub Jelinek - - PR rtl-optimization/100148 - * cprop.c (constprop_register): Use next_nondebug_insn instead of - NEXT_INSN. - - * g++.dg/opt/pr100148.C: New test. - ---- gcc/cprop.c -+++ gcc/cprop.c -@@ -1007,16 +1007,18 @@ static int - constprop_register (rtx from, rtx src, rtx_insn *insn) - { - rtx sset; -+ rtx_insn *next_insn; - - /* Check for reg or cc0 setting instructions followed by - conditional branch instructions first. */ - if ((sset = single_set (insn)) != NULL -- && NEXT_INSN (insn) -- && any_condjump_p (NEXT_INSN (insn)) && onlyjump_p (NEXT_INSN (insn))) -+ && (next_insn = next_nondebug_insn (insn)) != NULL -+ && any_condjump_p (next_insn) -+ && onlyjump_p (next_insn)) - { - rtx dest = SET_DEST (sset); - if ((REG_P (dest) || CC0_P (dest)) -- && cprop_jump (BLOCK_FOR_INSN (insn), insn, NEXT_INSN (insn), -+ && cprop_jump (BLOCK_FOR_INSN (insn), insn, next_insn, - from, src)) - return 1; - } ---- gcc/testsuite/g++.dg/opt/pr100148.C -+++ gcc/testsuite/g++.dg/opt/pr100148.C -@@ -0,0 +1,27 @@ -+// PR rtl-optimization/100148 -+// { dg-do compile } -+// { dg-options "-O2 -fno-dce -fno-tree-dce -fno-tree-dominator-opts -fno-tree-sink -fcompare-debug" } -+ -+int i; -+enum E { } e, ee; -+ -+bool -+baz (int) -+{ -+ return ee; -+} -+ -+bool bar (); -+bool a, b; -+ -+void -+foo () -+{ -+ switch (ee) -+ { -+ case 0: -+ e = E (a ? : i); -+ case 1: -+ !(b || baz (0) && bar ()); -+ } -+} diff --git a/gcc11-pr100298.patch b/gcc11-pr100298.patch new file mode 100644 index 0000000..80ffe13 --- /dev/null +++ b/gcc11-pr100298.patch @@ -0,0 +1,17 @@ +2021-04-28 Jonathan Wakely + + PR libstdc++/100298 + * include/bits/std_thread.h (thread::hardware_concurrency): Add + missing noexcept to inline definition for non-gthreads targets. + +--- libstdc++-v3/include/bits/std_thread.h ++++ libstdc++-v3/include/bits/std_thread.h +@@ -270,7 +270,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + #ifndef _GLIBCXX_HAS_GTHREADS + inline void thread::join() { std::__throw_system_error(EINVAL); } + inline void thread::detach() { std::__throw_system_error(EINVAL); } +- inline unsigned int thread::hardware_concurrency() { return 0; } ++ inline unsigned int thread::hardware_concurrency() noexcept { return 0; } + #endif + + inline void diff --git a/gcc11-pr100302.patch b/gcc11-pr100302.patch new file mode 100644 index 0000000..3c5cf76 --- /dev/null +++ b/gcc11-pr100302.patch @@ -0,0 +1,34 @@ +2021-04-28 Jakub Jelinek + + PR target/100302 + * config/aarch64/aarch64.c (aarch64_add_offset_1_temporaries): Use + absu_hwi instead of abs_hwi. + + * gcc.target/aarch64/sve/pr100302.c: New test. + +--- gcc/config/aarch64/aarch64.c.jj 2021-04-28 10:43:06.313337362 +0200 ++++ gcc/config/aarch64/aarch64.c 2021-04-28 11:01:10.567243000 +0200 +@@ -4736,7 +4736,7 @@ aarch64_mov128_immediate (rtx imm) + static unsigned int + aarch64_add_offset_1_temporaries (HOST_WIDE_INT offset) + { +- return abs_hwi (offset) < 0x1000000 ? 0 : 1; ++ return absu_hwi (offset) < 0x1000000 ? 0 : 1; + } + + /* A subroutine of aarch64_add_offset. Set DEST to SRC + OFFSET for +--- gcc/testsuite/gcc.target/aarch64/sve/pr100302.c.jj 2021-04-28 10:49:19.337176274 +0200 ++++ gcc/testsuite/gcc.target/aarch64/sve/pr100302.c 2021-04-28 10:42:48.342537828 +0200 +@@ -0,0 +1,12 @@ ++/* PR target/100302 */ ++/* { dg-do compile } */ ++/* { dg-options "-march=armv8.2-a+sve -O1 -ftree-loop-vectorize -fno-tree-scev-cprop --param vect-partial-vector-usage=0 -fvect-cost-model=unlimited" } */ ++ ++long int x; ++ ++void ++foo (void) ++{ ++ for (x = 0; x >= 0; ++x) ++ ; ++} diff --git a/sources b/sources index f67b7b5..0cb1fb1 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.0.1-20210423.tar.xz) = c8fec68ef812d623285658e88d958537b4d5d8bbbecf4f6b6393e56a4866785bcd559e6995c35e52a96f4679039c473386f8ba4e3be7d423867a3552c90ea46c +SHA512 (gcc-11.1.1-20210428.tar.xz) = c9dbb4b65a36f39f3e2b98d5a1b2ae68a541cea775a10df6ab32fcbc369f9e17e196de8b9d85280f7a9c59f911e56490ba32bc72e71817e5cec9c54bf9eecfb5 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 diff --git a/update-gcc.sh b/update-gcc.sh index a0fe80c..67b42a0 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -3,5 +3,5 @@ git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 d=`date --iso | sed 's/-//g'` -git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-11.0.1-$d/ $1 | xz -9e > gcc-11.0.1-$d.tar.xz +git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-11.1.1-$d/ $1 | xz -9e > gcc-11.1.1-$d.tar.xz rm -rf gcc-dir.tmp From 0177c06558eac9e9565588f7ac6c63163f81580b Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Wed, 28 Apr 2021 14:26:47 +0200 Subject: [PATCH 046/293] Make kernel rebuild CI gating test mandatory. This makes baseos-qe.koji-build.scratch-build.validation a mandatory CI gating test. This test was requested by kernel folks and is now in place for binutils, glibc and annobin too. --- gating.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gating.yaml b/gating.yaml index c6030c9..cb47dc6 100644 --- a/gating.yaml +++ b/gating.yaml @@ -5,6 +5,7 @@ decision_context: bodhi_update_push_stable subject_type: koji_build rules: - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} + - !PassingTestCaseRule {test_case_name: baseos-qe.koji-build.scratch-build.validation} --- !Policy product_versions: - rhel-9 @@ -12,3 +13,4 @@ decision_context: osci_compose_gate rules: - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1-gating.functional} - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1-gating-p9.functional} + - !PassingTestCaseRule {test_case_name: baseos-qe.koji-build.scratch-build.validation} From f172832272f0cdab59e38652293d8f63864e1be5 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 12 May 2021 15:56:07 +0200 Subject: [PATCH 047/293] 11.1.1-2 --- .gitignore | 1 + gcc.spec | 26 +++++++--- gcc11-pr100298.patch | 17 ------- gcc11-pr100302.patch | 34 ------------- gcc11-pr100379.patch | 115 +++++++++++++++++++++++++++++++++++++++++++ sources | 2 +- 6 files changed, 136 insertions(+), 59 deletions(-) delete mode 100644 gcc11-pr100298.patch delete mode 100644 gcc11-pr100302.patch create mode 100644 gcc11-pr100379.patch diff --git a/.gitignore b/.gitignore index d9fedf8..8156692 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,4 @@ /gcc-11.0.1-20210422.tar.xz /gcc-11.0.1-20210423.tar.xz /gcc-11.1.1-20210428.tar.xz +/gcc-11.1.1-20210512.tar.xz diff --git a/gcc.spec b/gcc.spec index 78c7f57..1fcaa56 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20210428 -%global gitrev eb4b27fdf644012c40fe49ba8440594770dd8289 +%global DATE 20210512 +%global gitrev 2274d6c6dc94803fb17a8466bace08a15b387509 %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 1 +%global gcc_release 2 %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-pr100302.patch -Patch15: gcc11-pr100298.patch +Patch14: gcc11-pr100379.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 .pr100302~ -%patch15 -p0 -b .pr100298~ +%patch14 -p0 -b .pr100379~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3134,6 +3132,20 @@ end %endif %changelog +* 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, + ipa/100308, libgomp/100352, libstdc++/99006, libstdc++/99453, + libstdc++/100259, libstdc++/100298, libstdc++/100384, + rtl-optimization/84878, rtl-optimization/100225, + rtl-optimization/100230, rtl-optimization/100263, + rtl-optimization/100411, target/99988, target/100217, target/100232, + target/100236, target/100270, target/100305, target/100311, + target/100375, target/100402, tree-optimization/96513, + tree-optimization/100253, tree-optimization/100278, + tree-optimization/100329, tree-optimization/100414 +- fix build with removed linux/cyclades.h header (PR sanitizer/100379) + * Wed Apr 28 2021 Jakub Jelinek 11.1.1-1 - update from releases/gcc-11-branch - GCC 11.1 release diff --git a/gcc11-pr100298.patch b/gcc11-pr100298.patch deleted file mode 100644 index 80ffe13..0000000 --- a/gcc11-pr100298.patch +++ /dev/null @@ -1,17 +0,0 @@ -2021-04-28 Jonathan Wakely - - PR libstdc++/100298 - * include/bits/std_thread.h (thread::hardware_concurrency): Add - missing noexcept to inline definition for non-gthreads targets. - ---- libstdc++-v3/include/bits/std_thread.h -+++ libstdc++-v3/include/bits/std_thread.h -@@ -270,7 +270,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION - #ifndef _GLIBCXX_HAS_GTHREADS - inline void thread::join() { std::__throw_system_error(EINVAL); } - inline void thread::detach() { std::__throw_system_error(EINVAL); } -- inline unsigned int thread::hardware_concurrency() { return 0; } -+ inline unsigned int thread::hardware_concurrency() noexcept { return 0; } - #endif - - inline void diff --git a/gcc11-pr100302.patch b/gcc11-pr100302.patch deleted file mode 100644 index 3c5cf76..0000000 --- a/gcc11-pr100302.patch +++ /dev/null @@ -1,34 +0,0 @@ -2021-04-28 Jakub Jelinek - - PR target/100302 - * config/aarch64/aarch64.c (aarch64_add_offset_1_temporaries): Use - absu_hwi instead of abs_hwi. - - * gcc.target/aarch64/sve/pr100302.c: New test. - ---- gcc/config/aarch64/aarch64.c.jj 2021-04-28 10:43:06.313337362 +0200 -+++ gcc/config/aarch64/aarch64.c 2021-04-28 11:01:10.567243000 +0200 -@@ -4736,7 +4736,7 @@ aarch64_mov128_immediate (rtx imm) - static unsigned int - aarch64_add_offset_1_temporaries (HOST_WIDE_INT offset) - { -- return abs_hwi (offset) < 0x1000000 ? 0 : 1; -+ return absu_hwi (offset) < 0x1000000 ? 0 : 1; - } - - /* A subroutine of aarch64_add_offset. Set DEST to SRC + OFFSET for ---- gcc/testsuite/gcc.target/aarch64/sve/pr100302.c.jj 2021-04-28 10:49:19.337176274 +0200 -+++ gcc/testsuite/gcc.target/aarch64/sve/pr100302.c 2021-04-28 10:42:48.342537828 +0200 -@@ -0,0 +1,12 @@ -+/* PR target/100302 */ -+/* { dg-do compile } */ -+/* { dg-options "-march=armv8.2-a+sve -O1 -ftree-loop-vectorize -fno-tree-scev-cprop --param vect-partial-vector-usage=0 -fvect-cost-model=unlimited" } */ -+ -+long int x; -+ -+void -+foo (void) -+{ -+ for (x = 0; x >= 0; ++x) -+ ; -+} diff --git a/gcc11-pr100379.patch b/gcc11-pr100379.patch new file mode 100644 index 0000000..cd5d66e --- /dev/null +++ b/gcc11-pr100379.patch @@ -0,0 +1,115 @@ +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/sources b/sources index 0cb1fb1..3e78a57 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.1.1-20210428.tar.xz) = c9dbb4b65a36f39f3e2b98d5a1b2ae68a541cea775a10df6ab32fcbc369f9e17e196de8b9d85280f7a9c59f911e56490ba32bc72e71817e5cec9c54bf9eecfb5 +SHA512 (gcc-11.1.1-20210512.tar.xz) = 6cc7d8a3a641182c1d7d0d74097daef8c98a6feeedcb73fd1414831fec94930ec35baba11b67bc729bde1ed827799df33b7982799d4d2a07a189375d1262d8c8 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From a31fadcc0916b680141bf3ffe79743c24ddd2c46 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 12 May 2021 17:15:45 +0200 Subject: [PATCH 048/293] 11.1.1-2 --- gcc.spec | 3 ++ gcc11-pr100566.patch | 69 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 gcc11-pr100566.patch diff --git a/gcc.spec b/gcc.spec index 1fcaa56..f2ac97e 100644 --- a/gcc.spec +++ b/gcc.spec @@ -266,6 +266,7 @@ Patch11: gcc11-rh1574936.patch Patch12: gcc11-d-shared-libphobos.patch Patch13: gcc11-pr99341-revert.patch Patch14: gcc11-pr100379.patch +Patch15: gcc11-pr100566.patch Patch100: gcc11-fortran-fdec-duplicates.patch Patch101: gcc11-fortran-flogical-as-integer.patch @@ -790,6 +791,7 @@ to NVidia PTX capable devices if available. %patch12 -p0 -b .d-shared-libphobos~ %patch13 -p0 -b .pr99341-revert~ %patch14 -p0 -b .pr100379~ +%patch15 -p0 -b .pr100566~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3145,6 +3147,7 @@ end tree-optimization/100253, tree-optimization/100278, tree-optimization/100329, tree-optimization/100414 - fix build with removed linux/cyclades.h header (PR sanitizer/100379) +- fix up mausezahn miscompilation (#1958887, PR tree-optimization/100566) * Wed Apr 28 2021 Jakub Jelinek 11.1.1-1 - update from releases/gcc-11-branch diff --git a/gcc11-pr100566.patch b/gcc11-pr100566.patch new file mode 100644 index 0000000..6134be2 --- /dev/null +++ b/gcc11-pr100566.patch @@ -0,0 +1,69 @@ +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; ++} From 604b6369b8f2a45e0b5cf2a0cb809f48406cf975 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 31 May 2021 17:27:31 +0200 Subject: [PATCH 049/293] 11.1.1-3 --- .gitignore | 1 + gcc.spec | 24 ++++++--- gcc11-pr100379.patch | 115 ------------------------------------------- gcc11-pr100566.patch | 69 -------------------------- gcc11-pr100797.patch | 91 ++++++++++++++++++++++++++++++++++ sources | 2 +- 6 files changed, 110 insertions(+), 192 deletions(-) delete mode 100644 gcc11-pr100379.patch delete mode 100644 gcc11-pr100566.patch create mode 100644 gcc11-pr100797.patch 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 From a2a6a491f5876342d076cc0f5cdf34067fc5d1d7 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Mon, 14 Jun 2021 12:39:20 +0200 Subject: [PATCH 050/293] NVR bump to enable rebuild in side tag --- gcc.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 7ee667b..e2cfbe4 100644 --- a/gcc.spec +++ b/gcc.spec @@ -4,7 +4,7 @@ %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 3 +%global gcc_release 4 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -3132,6 +3132,9 @@ end %endif %changelog +* Mon Jun 14 2021 Florian Weimer - 11.1.1-4 +- NVR bump to enable rebuild in side tag + * 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, From 063f63dafb219b990a54ae8e4f4e93ed226cdb13 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 17 Jun 2021 10:57:18 +0200 Subject: [PATCH 051/293] 11.1.1-5 --- gcc.spec | 25 ++++++++++-- gcc11-pr100797.patch | 91 -------------------------------------------- 2 files changed, 21 insertions(+), 95 deletions(-) delete mode 100644 gcc11-pr100797.patch diff --git a/gcc.spec b/gcc.spec index e2cfbe4..c3ec569 100644 --- a/gcc.spec +++ b/gcc.spec @@ -4,7 +4,7 @@ %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 4 +%global gcc_release 5 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -265,7 +265,6 @@ Patch10: gcc11-Wno-format-security.patch Patch11: gcc11-rh1574936.patch Patch12: gcc11-d-shared-libphobos.patch Patch13: gcc11-pr99341-revert.patch -Patch14: gcc11-pr100797.patch Patch100: gcc11-fortran-fdec-duplicates.patch Patch101: gcc11-fortran-flogical-as-integer.patch @@ -789,7 +788,6 @@ to NVidia PTX capable devices if available. %endif %patch12 -p0 -b .d-shared-libphobos~ %patch13 -p0 -b .pr99341-revert~ -%patch14 -p0 -b .pr100797~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3132,7 +3130,26 @@ end %endif %changelog -* Mon Jun 14 2021 Florian Weimer - 11.1.1-4 +* Thu Jun 17 2021 Jakub Jelinek 11.1.1-5 +- update from releases/gcc-11-branch + - PRs bootstrap/100731, c++/91706, c++/91859, c++/95719, c++/100065, + c++/100102, c++/100580, c++/100666, c++/100796, c++/100797, + c++/100862, c++/100946, c++/100963, c++/101029, c++/101078, c/100902, + c/100920, d/100882, d/100935, d/100964, d/100967, d/100999, + debug/100852, fortran/82376, fortran/98301, fortran/99839, + fortran/100965, ipa/100791, libstdc++/98842, libstdc++/100475, + libstdc++/100577, libstdc++/100631, libstdc++/100639, + libstdc++/100676, libstdc++/100690, libstdc++/100768, + libstdc++/100770, libstdc++/100824, libstdc++/100833, + libstdc++/100889, libstdc++/100894, libstdc++/100900, + libstdc++/100982, libstdc++/101034, libstdc++/101055, + middle-end/100576, middle-end/100898, middle-end/101009, + preprocessor/100646, rtl-optimization/100342, rtl-optimization/100590, + rtl-optimization/101008, target/100333, target/100885, target/100887, + target/101046, testsuite/100750, tree-optimization/100934, + tree-optimization/100981 + +* Mon Jun 14 2021 Florian Weimer 11.1.1-4 - NVR bump to enable rebuild in side tag * Mon May 31 2021 Jakub Jelinek 11.1.1-3 diff --git a/gcc11-pr100797.patch b/gcc11-pr100797.patch deleted file mode 100644 index ff85ade..0000000 --- a/gcc11-pr100797.patch +++ /dev/null @@ -1,91 +0,0 @@ -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 (); -+} From db78d97ae57d58a7bf256346c62c3a7d3e642ae4 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 17 Jun 2021 11:02:32 +0200 Subject: [PATCH 052/293] 11.1.1-5 --- .gitignore | 1 + gcc.spec | 4 ++-- sources | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index b815574..80a9e24 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,4 @@ /gcc-11.1.1-20210428.tar.xz /gcc-11.1.1-20210512.tar.xz /gcc-11.1.1-20210531.tar.xz +/gcc-11.1.1-20210617.tar.xz diff --git a/gcc.spec b/gcc.spec index c3ec569..3416e99 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20210531 -%global gitrev e8a00355f6fd6fe219de22855d92c351911519da +%global DATE 20210617 +%global gitrev f7ca2f99f1015466fd59cd72a3dad1080c230f6a %global gcc_version 11.1.1 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to diff --git a/sources b/sources index 7c9c540..afa2c19 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.1.1-20210531.tar.xz) = e09a4e70d672c354b8b08660ecbe33cfb0b49fd67a6afb9c1b261aef9a6ed4daf2a15b616d62ce230cd556f6cbbd137038f6a4d109d4a9a84758e7be3a77a93d +SHA512 (gcc-11.1.1-20210617.tar.xz) = d39082995a1a2dc577b290c44c894ce7f819e30d58ad0697366e38112772a5cb9ea60213db416ce34b4a7f0f0d80dd9087ddab7279bd8018e0e5c20dadf49256 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From e931d8bd48b902e3a6dd3baf03dfaceb19f49b54 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 23 Jun 2021 15:36:05 +0200 Subject: [PATCH 053/293] 11.1.1-6 --- .gitignore | 1 + gcc.spec | 17 ++++++++++++++--- sources | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 80a9e24..30f9dbb 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,4 @@ /gcc-11.1.1-20210512.tar.xz /gcc-11.1.1-20210531.tar.xz /gcc-11.1.1-20210617.tar.xz +/gcc-11.1.1-20210623.tar.xz diff --git a/gcc.spec b/gcc.spec index 3416e99..73a3090 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20210617 -%global gitrev f7ca2f99f1015466fd59cd72a3dad1080c230f6a +%global DATE 20210623 +%global gitrev cab23df287db6bf4e3d8207e72726b40a4b11058 %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 5 +%global gcc_release 6 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -3130,6 +3130,17 @@ end %endif %changelog +* Wed Jun 23 2021 Jakub Jelinek 11.1.1-6 +- update from releases/gcc-11-branch + - PRs c++/100876, c++/100879, c++/101106, c/100619, c/100783, fortran/95501, + fortran/95502, fortran/100283, fortran/101123, inline-asm/100785, + libstdc++/91488, libstdc++/95833, libstdc++/100806, libstdc++/100940, + middle-end/100250, middle-end/100307, middle-end/100574, + middle-end/100684, middle-end/100732, middle-end/100876, + middle-end/101062, middle-end/101167, target/99842, target/99939, + target/100310, target/100777, target/100856, target/100871, + target/101016 + * Thu Jun 17 2021 Jakub Jelinek 11.1.1-5 - update from releases/gcc-11-branch - PRs bootstrap/100731, c++/91706, c++/91859, c++/95719, c++/100065, diff --git a/sources b/sources index afa2c19..34f42b5 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.1.1-20210617.tar.xz) = d39082995a1a2dc577b290c44c894ce7f819e30d58ad0697366e38112772a5cb9ea60213db416ce34b4a7f0f0d80dd9087ddab7279bd8018e0e5c20dadf49256 +SHA512 (gcc-11.1.1-20210623.tar.xz) = 2d639148af6a8b25127735df8fc4a29dbda3fe835caeaf1cc9d3c4373d69444f1b2c93cc751cbf19076c1ff412fcb8cfacce41c12985b0c7429260c89c62a894 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From c19375a4b90d840b8cd19b3c0c22350c0ea34e42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kadl=C4=8D=C3=ADk?= Date: Fri, 9 Jul 2021 15:36:20 +0200 Subject: [PATCH 054/293] Replace a deprecated method in executing CI --- plans/ci.fmf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plans/ci.fmf b/plans/ci.fmf index 1ad2c12..85710d6 100644 --- a/plans/ci.fmf +++ b/plans/ci.fmf @@ -3,4 +3,4 @@ discover: how: fmf directory: tests execute: - how: beakerlib + how: tmt From c603d8434856f984eb1d586813750d2a5e8e33f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kadl=C4=8D=C3=ADk?= Date: Fri, 9 Jul 2021 15:36:20 +0200 Subject: [PATCH 055/293] Import RHEL's regression test for #1965951 --- .../main.fmf | 16 ++++++ .../reproducer.cc | 12 ++++ .../runtest.sh | 55 +++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/main.fmf create mode 100644 tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/reproducer.cc create mode 100755 tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/runtest.sh diff --git a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/main.fmf b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/main.fmf new file mode 100644 index 0000000..c699de0 --- /dev/null +++ b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/main.fmf @@ -0,0 +1,16 @@ +summary: Test for BZ#1965951 (Wrong-code regression starting with gcc 8.5) +description: | + Bug summary: Wrong-code regression starting with gcc 8.5 + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1965951 +contact: Vaclav Kadlcik +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc-c++ +duration: 15m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1965951 +extra-summary: /tools/gcc/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5 +extra-task: /tools/gcc/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5 diff --git a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/reproducer.cc b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/reproducer.cc new file mode 100644 index 0000000..40b0c81 --- /dev/null +++ b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/reproducer.cc @@ -0,0 +1,12 @@ +#include +struct S1 { virtual ~S1() = default; }; +struct S2 { virtual void f1() = 0; }; +struct S3: S1, S2 { + void f1() { f2(); } + virtual void f2() = 0; +}; +struct S4: S3 { + void f2() { std::cout << "called\n"; } + using S2::f1; +}; +int main() { S4().f1(); } diff --git a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/runtest.sh b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/runtest.sh new file mode 100755 index 0000000..d8d69d0 --- /dev/null +++ b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/runtest.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5 +# Description: Test for BZ#1965951 (Wrong-code regression starting with gcc 8.5) +# Author: Vaclav Kadlcik +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +GCC="${GCC:-$(type -P gcc)}" +PACKAGE=$(rpm --qf '%{name}\n' -qf $GCC | head -1) +PACKAGES="${PACKAGE} ${PACKAGE}-c++" + +rlJournalStart + rlPhaseStartSetup + rlLogInfo "PACKAGES=$PACKAGES" + rlRun "dnf -y install $PACKAGES" 0-255 + rlAssertRpm --all + rlRun "TmpDir=\$(mktemp -d)" + rlRun "cp reproducer.cc $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun 'g++ -o reproducer reproducer.cc' + rlRun './reproducer' + rlPhaseEnd + + rlPhaseStartCleanup + rlRun 'popd' + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd From ceebf1784f958de89d571b2c54b9bba22a80024d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kadl=C4=8D=C3=ADk?= Date: Fri, 9 Jul 2021 15:36:20 +0200 Subject: [PATCH 056/293] Import RHEL's regression test for #1960701 --- .../main.fmf | 16 ++++++ .../reproducer.cc | 14 +++++ .../runtest.sh | 55 +++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf create mode 100644 tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/reproducer.cc create mode 100755 tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf new file mode 100644 index 0000000..ae2fc2b --- /dev/null +++ b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf @@ -0,0 +1,16 @@ +summary: Test for BZ#1960701 (Wrong-code regression starting with gcc 8.2) +description: | + Bug summary: Wrong-code regression starting with gcc 8.2 + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1960701 +contact: Vaclav Kadlcik +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc-c++ +duration: 15m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1960701 +extra-summary: /tools/gcc/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2 +extra-task: /tools/gcc/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2 diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/reproducer.cc b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/reproducer.cc new file mode 100644 index 0000000..6ebd8e0 --- /dev/null +++ b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/reproducer.cc @@ -0,0 +1,14 @@ +#include + +struct T { + unsigned a; + float b {8.}; +}; + +int main() +{ + T t = {1}; + std::vector tt = {{1}, {2}}; + if (t.a != 1 || t.b != 8.0f || tt[0].a != 1 || tt[0].b != 8.0f || tt[1].a != 2 || tt[1].b != 8.0f) + __builtin_abort (); +} diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh new file mode 100755 index 0000000..196486b --- /dev/null +++ b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2 +# Description: Test for BZ#1960701 (Wrong-code regression starting with gcc 8.2) +# Author: Vaclav Kadlcik +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +GCC="${GCC:-$(type -P gcc)}" +PACKAGE=$(rpm --qf '%{name}\n' -qf $GCC | head -1) +PACKAGES="${PACKAGE} ${PACKAGE}-c++" + +rlJournalStart + rlPhaseStartSetup + rlLogInfo "PACKAGES=$PACKAGES" + rlRun "dnf -y install $PACKAGES" 0-255 + rlAssertRpm --all + rlRun "TmpDir=\$(mktemp -d)" + rlRun "cp reproducer.cc $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun 'g++ -o reproducer -Wall -Wextra -std=c++17 reproducer.cc' + rlRun './reproducer' + rlPhaseEnd + + rlPhaseStartCleanup + rlRun 'popd' + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd From 4b84269ff63acf7f586cdbd471cc763ee412fa57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kadl=C4=8D=C3=ADk?= Date: Fri, 9 Jul 2021 15:36:20 +0200 Subject: [PATCH 057/293] Import RHEL's regression test for #1939638 --- .../main.fmf | 17 +++++++ .../runtest.sh | 50 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/main.fmf create mode 100755 tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/runtest.sh diff --git a/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/main.fmf b/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/main.fmf new file mode 100644 index 0000000..4cfef47 --- /dev/null +++ b/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/main.fmf @@ -0,0 +1,17 @@ +summary: Test for BZ#1939638 (gcc-toolset-10-libasan-devel depends on the wrong) +description: | + Bug summary: gcc-toolset-10-libasan-devel depends on the wrong libasan + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1939638 +contact: Alexandra Hájková +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +- libasan +duration: 5m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1939638 +extra-summary: /tools/gcc/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong +extra-task: /tools/gcc/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong diff --git a/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/runtest.sh b/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/runtest.sh new file mode 100755 index 0000000..1d29c6c --- /dev/null +++ b/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/runtest.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong +# Description: Test for BZ#1939638 (gcc-toolset-10-libasan-devel depends on the wrong) +# Author: Alexandra Hájková +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "echo 'int main () { return 0; }' | gcc -xc -fsanitize=address -" &> log + rlAssertNotGrep "cannot find /usr/lib64/libasan" log + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd From 3507c942bdf291e90c9c13da910426d1e6b5f495 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kadl=C4=8D=C3=ADk?= Date: Fri, 9 Jul 2021 15:36:20 +0200 Subject: [PATCH 058/293] Import RHEL's regression test for #1927579 --- .../alloc1.f90 | 5 ++ .../main.fmf | 17 +++++++ .../runtest.sh | 51 +++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 tests/Regression/bz1927579-libgfortran-seems-to-be-missing/alloc1.f90 create mode 100644 tests/Regression/bz1927579-libgfortran-seems-to-be-missing/main.fmf create mode 100755 tests/Regression/bz1927579-libgfortran-seems-to-be-missing/runtest.sh diff --git a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/alloc1.f90 b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/alloc1.f90 new file mode 100644 index 0000000..8765255 --- /dev/null +++ b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/alloc1.f90 @@ -0,0 +1,5 @@ +program test_allocated + integer :: i = 4 + real(4), allocatable :: x(:) + if (.not. allocated(x)) allocate(x(i)) +end program test_allocated diff --git a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/main.fmf b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/main.fmf new file mode 100644 index 0000000..d6b5ead --- /dev/null +++ b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/main.fmf @@ -0,0 +1,17 @@ +summary: Test for BZ#1927579 (libgfortran seems to be missing) +description: | + Bug summary: libgfortran seems to be missing _gfortran_os_error_at + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1927579 +contact: Alexandra Hájková +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +- gcc-gfortran +duration: 5m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1927579 +extra-summary: /tools/gcc/Regression/bz1927579-libgfortran-seems-to-be-missing +extra-task: /tools/gcc/Regression/bz1927579-libgfortran-seems-to-be-missing diff --git a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/runtest.sh b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/runtest.sh new file mode 100755 index 0000000..e635213 --- /dev/null +++ b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/runtest.sh @@ -0,0 +1,51 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1927579-libgfortran-seems-to-be-missing +# Description: Test for BZ#1927579 (libgfortran seems to be missing) +# Author: Alexandra Hájková +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "cp alloc1.f90 $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "gfortran alloc1.f90" &> log + rlAssertNotGrep "alloc1.f90:(.text+0x131): undefined reference" log + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd From 63133c7e37d19693188370dd378fc270d6edca71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kadl=C4=8D=C3=ADk?= Date: Fri, 9 Jul 2021 15:36:20 +0200 Subject: [PATCH 059/293] Import RHEL's regression test for #1896093 --- .../main.fmf | 16 ++++++ .../runtest.sh | 56 +++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/main.fmf create mode 100755 tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/runtest.sh diff --git a/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/main.fmf b/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/main.fmf new file mode 100644 index 0000000..c1da31b --- /dev/null +++ b/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/main.fmf @@ -0,0 +1,16 @@ +summary: Test for BZ#1896093 (Compiling with -flto=auto fails if make is not) +description: | + Bug summary: Compiling with -flto=auto fails if make is not installed + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1896093 +contact: Alexandra Hájková +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +duration: 5m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1896093 +extra-summary: /tools/gcc/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not +extra-task: /tools/gcc/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not diff --git a/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/runtest.sh b/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/runtest.sh new file mode 100755 index 0000000..a23ce5c --- /dev/null +++ b/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/runtest.sh @@ -0,0 +1,56 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not +# Description: Test for BZ#1896093 (Compiling with -flto=auto fails if make is not) +# Author: Alexandra Hájková +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2020 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" + +rlJournalStart + rlPhaseStartSetup + MAKE_WAS_PRESENT=false + rpm -q make &>/dev/null && MAKE_WAS_PRESENT=true + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "pushd $TmpDir" + rlRun "rpm -e --nodeps make" 0,1 + rlPhaseEnd + + rlPhaseStartTest + echo "void main() { }" | gcc -x c -flto=auto - &> log + rlAssertNotGrep "lto-wrapper: fatal error: execvp: No such file or directory" log + rlPhaseEnd + + rlPhaseStartCleanup + if $MAKE_WAS_PRESENT; then + rpm -q make &>/dev/null || rlRun "yum -y install make" + fi + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd From dc53defcf35cec20c720e2bb1a7fcfcf12c53bf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kadl=C4=8D=C3=ADk?= Date: Fri, 9 Jul 2021 15:36:20 +0200 Subject: [PATCH 060/293] Import RHEL's regression test for #1893340 --- .../b.gdb | 2 + .../main.fmf | 17 ++++++ .../runtest.sh | 52 +++++++++++++++++++ .../test.c | 6 +++ 4 files changed, 77 insertions(+) create mode 100644 tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/b.gdb create mode 100644 tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/main.fmf create mode 100755 tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/runtest.sh create mode 100644 tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/test.c diff --git a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/b.gdb b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/b.gdb new file mode 100644 index 0000000..341301d --- /dev/null +++ b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/b.gdb @@ -0,0 +1,2 @@ +info functions foo +q diff --git a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/main.fmf b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/main.fmf new file mode 100644 index 0000000..7054cbd --- /dev/null +++ b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/main.fmf @@ -0,0 +1,17 @@ +summary: Test for BZ#1893340 (Variadic arguments are missing from debugging data) +description: | + Bug summary: Variadic arguments are missing from debugging data when building with -flto + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1893340 +contact: Alexandra Hájková +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +- gdb +duration: 5m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1893340 +extra-summary: /tools/gcc/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data +extra-task: /tools/gcc/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data diff --git a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/runtest.sh b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/runtest.sh new file mode 100755 index 0000000..f2dd2ca --- /dev/null +++ b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/runtest.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data +# Description: Test for BZ#1893340 (Variadic arguments are missing from debugging data) +# Author: Alexandra Hájková +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "cp test.c b.gdb $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "gcc -fPIC -shared -o libtest.so -O0 -g test.c" + rlRun "gdb -x b.gdb libtest.so > gdb.log" + rlAssertGrep "void foo(int, ...);" gdb.log + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/test.c b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/test.c new file mode 100644 index 0000000..3de5962 --- /dev/null +++ b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/test.c @@ -0,0 +1,6 @@ +#include +void foo(int args, ...) { + va_list ap; + va_start(ap, args); + va_end(ap); +} From 698535f4a231c7544d926902afd2f38688a69c69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kadl=C4=8D=C3=ADk?= Date: Fri, 9 Jul 2021 15:36:20 +0200 Subject: [PATCH 061/293] Import RHEL's regression test for #1878841 --- .../main.fmf | 16 ++++++ .../runtest.sh | 52 +++++++++++++++++++ .../tst.c | 6 +++ 3 files changed, 74 insertions(+) create mode 100644 tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/main.fmf create mode 100755 tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/runtest.sh create mode 100644 tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/tst.c diff --git a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/main.fmf b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/main.fmf new file mode 100644 index 0000000..8167f92 --- /dev/null +++ b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/main.fmf @@ -0,0 +1,16 @@ +summary: Test for BZ#1878841 (GOMP_parallel_loop_nonmonotonic_dynamic and) +description: | + Bug summary: GOMP_parallel_loop_nonmonotonic_dynamic and GOMP_loop_nonmonotonic_dynamic_next missing + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1878841 +contact: Alexandra Hájková +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +duration: 5m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1878841 +extra-summary: /tools/gcc/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and +extra-task: /tools/gcc/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and diff --git a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/runtest.sh b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/runtest.sh new file mode 100755 index 0000000..83c42ef --- /dev/null +++ b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/runtest.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and +# Description: Test for BZ#1878841 (GOMP_parallel_loop_nonmonotonic_dynamic and) +# Author: Alexandra Hájková +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2020 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" +TESTPROG="tst" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "cp $TESTPROG.c $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "gcc -fopenmp $TESTPROG.c &> log" + rlAssertNotGrep "undefined reference to `GOMP_parallel_loop_nonmonotonic_dynamic`" log + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/tst.c b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/tst.c new file mode 100644 index 0000000..741559e --- /dev/null +++ b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/tst.c @@ -0,0 +1,6 @@ +#include +int main () +{ + #pragma omp parallel for schedule(dynamic) + for (int i = 0; i < 10; i++); +} From a191d6bffd3151856ce0a604fb9811142fc6fe7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kadl=C4=8D=C3=ADk?= Date: Fri, 9 Jul 2021 15:36:20 +0200 Subject: [PATCH 062/293] Import RHEL's regression test for #1853900 --- .../main.fmf | 17 ++++++ .../runtest.sh | 52 +++++++++++++++++++ .../test.cc | 7 +++ 3 files changed, 76 insertions(+) create mode 100644 tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/main.fmf create mode 100755 tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/runtest.sh create mode 100644 tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/test.cc diff --git a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/main.fmf b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/main.fmf new file mode 100644 index 0000000..1540389 --- /dev/null +++ b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/main.fmf @@ -0,0 +1,17 @@ +summary: Test for BZ#1853900 (typeinfo for stdcodecvt_utf8 not found + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1853900 +contact: Alexandra Hájková +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +- gcc-c++ +duration: 10m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1853900 +extra-summary: /tools/gcc/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul +extra-task: /tools/gcc/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul diff --git a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/runtest.sh b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/runtest.sh new file mode 100755 index 0000000..a6eb4ed --- /dev/null +++ b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/runtest.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul +# Description: Test for BZ#1853900 (typeinfo for stdcodecvt_utf8 +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2020 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" +TESTPROG="test.cc" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "cp $TESTPROG $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "g++ -std=c++17 $TESTPROG &> log" + rlAssertNotGrep "hidden symbol " log + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/test.cc b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/test.cc new file mode 100644 index 0000000..075633f --- /dev/null +++ b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/test.cc @@ -0,0 +1,7 @@ +#include + +namespace fs = std::filesystem; +int main() { + fs::create_directory("sandbox"); + fs::remove_all("sandbox"); +} From 196b71d183d376e8d45535a22b48422bdaadde8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kadl=C4=8D=C3=ADk?= Date: Fri, 9 Jul 2021 15:36:20 +0200 Subject: [PATCH 063/293] Import RHEL's regression test for #1852781 --- .../main.fmf | 17 ++++++ .../runtest.sh | 55 +++++++++++++++++++ .../x.c | 8 +++ 3 files changed, 80 insertions(+) create mode 100644 tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/main.fmf create mode 100755 tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/runtest.sh create mode 100644 tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/x.c diff --git a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/main.fmf b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/main.fmf new file mode 100644 index 0000000..1c87a12 --- /dev/null +++ b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/main.fmf @@ -0,0 +1,17 @@ +summary: Test for BZ#1852781 (Compiling with -flto and -g removes CET support) +description: | + Bug summary: Compiling with -flto and -g removes CET support + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1852781 +contact: Alexandra Hájková +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +- binutils +duration: 15m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1852781 +extra-summary: /tools/gcc/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support +extra-task: /tools/gcc/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support diff --git a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/runtest.sh b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/runtest.sh new file mode 100755 index 0000000..84cae8f --- /dev/null +++ b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/runtest.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support +# Description: Test for BZ#1852781 (Compiling with -flto and -g removes CET support) +# Author: Alexandra Hájková +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2020 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" +TESTPROG="x" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "cp $TESTPROG.c $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "gcc -flto -c -fcf-protection -g $TESTPROG.c" + rlRun "gcc -flto -Wl,-z,cet-report=error -fcf-protection -g $TESTPROG.o &> log" + rlAssertNotGrep " missing IBT and SHSTK properties" log + rlRun "readelf --wide --notes a.out | grep IBT &> log" + rlAsserGrep "IBT, SHSTK" log + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/x.c b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/x.c new file mode 100644 index 0000000..64fffec --- /dev/null +++ b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/x.c @@ -0,0 +1,8 @@ +#include + +int +main () +{ + printf ("hello\n"); + return 0; +} From c07adb54e0d48c05ec8d9b9af12bbd136f056b12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kadl=C4=8D=C3=ADk?= Date: Fri, 9 Jul 2021 15:36:20 +0200 Subject: [PATCH 064/293] Import RHEL's regression test for #1815504 --- .../main.fmf | 12 +++++ .../runtest.sh | 50 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 tests/Regression/bz1815504-Regression-in-the-line-information-debug/main.fmf create mode 100755 tests/Regression/bz1815504-Regression-in-the-line-information-debug/runtest.sh diff --git a/tests/Regression/bz1815504-Regression-in-the-line-information-debug/main.fmf b/tests/Regression/bz1815504-Regression-in-the-line-information-debug/main.fmf new file mode 100644 index 0000000..82cdc4e --- /dev/null +++ b/tests/Regression/bz1815504-Regression-in-the-line-information-debug/main.fmf @@ -0,0 +1,12 @@ +summary: Test for BZ#1815504 (Regression in the line information debug) +description: | + Bug summary: Regression in the line information debug information generated by gcc + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1815504 +recommend: +- gcc +- valgrind +duration: 5m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1815504 +extra-summary: /tools/gcc/Regression/bz1815504-Regression-in-the-line-information-debug +extra-task: /tools/gcc/Regression/bz1815504-Regression-in-the-line-information-debug diff --git a/tests/Regression/bz1815504-Regression-in-the-line-information-debug/runtest.sh b/tests/Regression/bz1815504-Regression-in-the-line-information-debug/runtest.sh new file mode 100755 index 0000000..585e76c --- /dev/null +++ b/tests/Regression/bz1815504-Regression-in-the-line-information-debug/runtest.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1815504-Regression-in-the-line-information-debug +# Description: Test for BZ#1815504 (Regression in the line information debug) +# Author: Alexandra Hájková +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "valgrind -q date &> log" 0 + rlAssertNotGrep "Can't handle inlined call info entry with line number" log + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd From b492bb6d0d08d8f4e640f9861a16f8e6c219e00f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 21 Jul 2021 23:51:54 +0000 Subject: [PATCH 065/293] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gcc.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 73a3090..2492567 100644 --- a/gcc.spec +++ b/gcc.spec @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist} +Release: %{gcc_release}%{?dist}.1 # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3130,6 +3130,9 @@ end %endif %changelog +* Wed Jul 21 2021 Fedora Release Engineering - 11.1.1-6.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Wed Jun 23 2021 Jakub Jelinek 11.1.1-6 - update from releases/gcc-11-branch - PRs c++/100876, c++/100879, c++/101106, c/100619, c/100783, fortran/95501, From 012193ab2c44a344c3d942e72c5c28ce66428ceb Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 26 Jul 2021 19:58:01 +0200 Subject: [PATCH 066/293] 11.1.1-7 --- .gitignore | 1 + gcc.spec | 33 +++++++++++++++++++++++++++------ sources | 2 +- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 30f9dbb..d12a258 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,4 @@ /gcc-11.1.1-20210531.tar.xz /gcc-11.1.1-20210617.tar.xz /gcc-11.1.1-20210623.tar.xz +/gcc-11.1.1-20210726.tar.xz diff --git a/gcc.spec b/gcc.spec index 2492567..447be7e 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20210623 -%global gitrev cab23df287db6bf4e3d8207e72726b40a4b11058 +%global DATE 20210726 +%global gitrev 0b934a97129b060f95533a6b6ddf87141195728a %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 6 +%global gcc_release 7 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist}.1 +Release: %{gcc_release}%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3130,8 +3130,29 @@ end %endif %changelog -* Wed Jul 21 2021 Fedora Release Engineering - 11.1.1-6.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild +* Mon Jul 26 2021 Jakub Jelinek 11.1.1-7 +- update from releases/gcc-11-branch + - PRs ada/101094, analyzer/100244, analyzer/100615, analyzer/101082, + bootstrap/100246, c++/100138, c++/100752, c++/100838, c++/100918, + c++/101040, c++/101087, c++/101098, c++/101181, c++/101182, + c++/101194, c++/101210, c++/101233, c++/101247, c++/101361, + c++/101443, c++/101516, c++/86355, c++/95520, c++/97420, c++/98832, + c/101171, c/101176, d/101273, d/101282, debug/101266, driver/101383, + fortran/100227, fortran/100949, fortran/93524, go/101407, ipa/101066, + libstdc++/100387, libstdc++/101411, libstdc++/101427, + middle-end/100672, middle-end/101156, middle-end/101172, + middle-end/101291, middle-end/101423, middle-end/101535, + middle-end/94366, target/100152, target/100809, target/101023, + target/101129, target/101142, target/101175, target/101185, + target/101235, target/101377, target/101384, target/101395, + testsuite/100422, tree-optimization/100299, tree-optimization/100778, + tree-optimization/100923, tree-optimization/101014, + tree-optimization/101025, tree-optimization/101088, + tree-optimization/101105, tree-optimization/101148, + tree-optimization/101151, tree-optimization/101158, + tree-optimization/101173, tree-optimization/101223, + tree-optimization/101229, tree-optimization/101280, + tree-optimization/101394, tree-optimization/101445 * Wed Jun 23 2021 Jakub Jelinek 11.1.1-6 - update from releases/gcc-11-branch diff --git a/sources b/sources index 34f42b5..26dc9a5 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.1.1-20210623.tar.xz) = 2d639148af6a8b25127735df8fc4a29dbda3fe835caeaf1cc9d3c4373d69444f1b2c93cc751cbf19076c1ff412fcb8cfacce41c12985b0c7429260c89c62a894 +SHA512 (gcc-11.1.1-20210726.tar.xz) = fcc8b1c0c5488363998bb3d7871052ec0ee198bebe05f4b11b4fb67153a91b6461ade116b3cbe49efc2a167176e05b2997b8796586a42bdc879c2bef1579ab77 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 517529187fad464cad2f554540a733171f9598c1 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 26 Jul 2021 20:08:16 +0200 Subject: [PATCH 067/293] 11.1.1-7 --- gcc11-foffload-default.patch | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gcc11-foffload-default.patch b/gcc11-foffload-default.patch index 3329d2a..d1aae64 100644 --- a/gcc11-foffload-default.patch +++ b/gcc11-foffload-default.patch @@ -16,7 +16,7 @@ libgomp/ --- gcc/gcc.c.jj 2017-01-17 10:28:40.000000000 +0100 +++ gcc/gcc.c 2017-01-20 16:26:29.649962902 +0100 -@@ -290,6 +290,10 @@ static const char *spec_host_machine = D +@@ -319,6 +319,10 @@ static const char *spec_host_machine = D static char *offload_targets = NULL; @@ -27,7 +27,7 @@ libgomp/ /* Nonzero if cross-compiling. When -b is used, the value comes from the `specs' file. */ -@@ -4457,7 +4461,10 @@ process_command (unsigned int decoded_op +@@ -4828,7 +4832,10 @@ process_command (unsigned int decoded_op /* If the user didn't specify any, default to all configured offload targets. */ if (ENABLE_OFFLOADING && offload_targets == NULL) @@ -37,9 +37,9 @@ libgomp/ + offload_targets_default = true; + } - if (output_file - && strcmp (output_file, "-") != 0 -@@ -7693,6 +7700,8 @@ driver::maybe_putenv_OFFLOAD_TARGETS () + /* Handle -gtoggle as it would later in toplev.c:process_options to + make the debug-level-gt spec function work as expected. */ +@@ -8494,6 +8501,8 @@ driver::maybe_putenv_OFFLOAD_TARGETS () obstack_grow (&collect_obstack, offload_targets, strlen (offload_targets) + 1); xputenv (XOBFINISH (&collect_obstack, char *)); From 307b04232931f0da763d35539a203970190bd2be Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 27 Jul 2021 14:30:00 +0200 Subject: [PATCH 068/293] - enable LTO profiledbootstrap on x86_64, i?86, ppc64le and s390x --- gcc.spec | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gcc.spec b/gcc.spec index 447be7e..14e576e 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1077,6 +1077,9 @@ CONFIGURE_OPTS="\ %endif %ifnarch sparc sparcv9 ppc --build=%{gcc_target_platform} \ +%endif +%ifarch x86_64 %{ix86} ppc64le s390x + --with-build-config=bootstrap-lto --enable-link-serialization=1 \ %endif " @@ -3130,6 +3133,8 @@ end %endif %changelog +- enable LTO profiledbootstrap on x86_64, i?86, ppc64le and s390x + * Mon Jul 26 2021 Jakub Jelinek 11.1.1-7 - update from releases/gcc-11-branch - PRs ada/101094, analyzer/100244, analyzer/100615, analyzer/101082, From 3839c55548cf1c444972cc0d75147f84d4bbc3e9 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 28 Jul 2021 11:23:09 +0200 Subject: [PATCH 069/293] 11.2.1-1 --- .gitignore | 1 + gcc.spec | 16 +++++++++++----- gcc11-libstdc++-docs.patch | 4 ++-- sources | 2 +- update-gcc.sh | 2 +- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index d12a258..641caa7 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,4 @@ /gcc-11.1.1-20210617.tar.xz /gcc-11.1.1-20210623.tar.xz /gcc-11.1.1-20210726.tar.xz +/gcc-11.2.1-20210728.tar.xz diff --git a/gcc.spec b/gcc.spec index 14e576e..e465466 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20210726 -%global gitrev 0b934a97129b060f95533a6b6ddf87141195728a -%global gcc_version 11.1.1 +%global DATE 20210728 +%global gitrev 134ab8155c937122663513b76afa8e64ad61fe99 +%global gcc_version 11.2.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 7 +%global gcc_release 1 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -1078,8 +1078,10 @@ CONFIGURE_OPTS="\ %ifnarch sparc sparcv9 ppc --build=%{gcc_target_platform} \ %endif +%if 0%{?fedora} >= 35 %ifarch x86_64 %{ix86} ppc64le s390x --with-build-config=bootstrap-lto --enable-link-serialization=1 \ +%endif %endif " @@ -3133,7 +3135,11 @@ end %endif %changelog -- enable LTO profiledbootstrap on x86_64, i?86, ppc64le and s390x +* Wed Jul 28 2021 Jakub Jelinek 11.2.1-1 +- update from releases/gcc-11-branch + - GCC 11.2 release + - PRs middle-end/101586, rtl-optimization/101562 +- enable LTO profiledbootstrap on x86_64, i?86, ppc64le and s390x for f35+ * Mon Jul 26 2021 Jakub Jelinek 11.1.1-7 - update from releases/gcc-11-branch diff --git a/gcc11-libstdc++-docs.patch b/gcc11-libstdc++-docs.patch index 7213d2c..4b4f9f8 100644 --- a/gcc11-libstdc++-docs.patch +++ b/gcc11-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 11.1.1 ++ Release 11.2.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 11.1.1 release, ++ for the 11.2.1 release, + online for each GCC release and diff --git a/sources b/sources index 26dc9a5..f0b890a 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.1.1-20210726.tar.xz) = fcc8b1c0c5488363998bb3d7871052ec0ee198bebe05f4b11b4fb67153a91b6461ade116b3cbe49efc2a167176e05b2997b8796586a42bdc879c2bef1579ab77 +SHA512 (gcc-11.2.1-20210728.tar.xz) = 2234298652f882151aead486bb22481ba8181df69b9c7c5d73b8aa505ace58462fcd0b482680f466e2d21dc47e869651c7dbf224b65791ca47204dab01e89e7c SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 diff --git a/update-gcc.sh b/update-gcc.sh index 67b42a0..644b209 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -3,5 +3,5 @@ git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 d=`date --iso | sed 's/-//g'` -git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-11.1.1-$d/ $1 | xz -9e > gcc-11.1.1-$d.tar.xz +git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-11.2.1-$d/ $1 | xz -9e > gcc-11.2.1-$d.tar.xz rm -rf gcc-dir.tmp From 878cf31641035e62111d01b1ff9e2274c89e48b7 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 30 Jul 2021 14:56:24 +0200 Subject: [PATCH 070/293] 11.2.1-2 --- gcc.spec | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gcc.spec b/gcc.spec index e465466..38bd3b2 100644 --- a/gcc.spec +++ b/gcc.spec @@ -4,7 +4,7 @@ %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 1 +%global gcc_release 2 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -1078,10 +1078,8 @@ CONFIGURE_OPTS="\ %ifnarch sparc sparcv9 ppc --build=%{gcc_target_platform} \ %endif -%if 0%{?fedora} >= 35 -%ifarch x86_64 %{ix86} ppc64le s390x +%if 0%{?fedora} >= 35 || 9%{?rhel} >= 9 --with-build-config=bootstrap-lto --enable-link-serialization=1 \ -%endif %endif " @@ -3135,6 +3133,9 @@ end %endif %changelog +* Fri Jul 30 2021 Jakub Jelinek 11.2.1-2 +- enable LTO profiledbootstrap on all arches, and also for RHEL9+ + * Wed Jul 28 2021 Jakub Jelinek 11.2.1-1 - update from releases/gcc-11-branch - GCC 11.2 release From ba0a2baa8627e806ae5be20b49a1a359d1011ad7 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 30 Jul 2021 15:40:09 +0200 Subject: [PATCH 071/293] 11.2.1-2 --- gcc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 38bd3b2..4103504 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1078,7 +1078,7 @@ CONFIGURE_OPTS="\ %ifnarch sparc sparcv9 ppc --build=%{gcc_target_platform} \ %endif -%if 0%{?fedora} >= 35 || 9%{?rhel} >= 9 +%if 0%{?fedora} >= 35 || 0%{?rhel} >= 9 --with-build-config=bootstrap-lto --enable-link-serialization=1 \ %endif " From 892f8cf6becc318092dd1dab5f71c9f205be7081 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 23 Aug 2021 12:35:29 +0200 Subject: [PATCH 072/293] 11.2.1-3 --- .gitignore | 1 + gcc.spec | 40 +++- gcc11-libgcc-link.patch | 57 ++++++ gcc11-pr101786.patch | 66 +++++++ gcc11-stringify-__VA_OPT__.patch | 308 +++++++++++++++++++++++++++++++ sources | 2 +- 6 files changed, 467 insertions(+), 7 deletions(-) create mode 100644 gcc11-libgcc-link.patch create mode 100644 gcc11-pr101786.patch create mode 100644 gcc11-stringify-__VA_OPT__.patch diff --git a/.gitignore b/.gitignore index 641caa7..beab83d 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,4 @@ /gcc-11.1.1-20210623.tar.xz /gcc-11.1.1-20210726.tar.xz /gcc-11.2.1-20210728.tar.xz +/gcc-11.2.1-20210823.tar.xz diff --git a/gcc.spec b/gcc.spec index 4103504..dcc7fb5 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20210728 -%global gitrev 134ab8155c937122663513b76afa8e64ad61fe99 +%global DATE 20210823 +%global gitrev b558c8e931f0c36cda40bd60f5cdeb92452e91b5 %global gcc_version 11.2.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 @@ -250,6 +250,8 @@ Obsoletes: gcc-gnat < %{version}-%{release} Obsoletes: gcc-java < %{version}-%{release} AutoReq: true Provides: bundled(libiberty) +Provides: bundled(libbacktrace) +Provides: bundled(libffi) Provides: gcc(major) = %{gcc_major} Patch0: gcc11-hack.patch @@ -265,6 +267,9 @@ Patch10: gcc11-Wno-format-security.patch Patch11: gcc11-rh1574936.patch Patch12: gcc11-d-shared-libphobos.patch Patch13: gcc11-pr99341-revert.patch +Patch14: gcc11-libgcc-link.patch +Patch15: gcc11-pr101786.patch +Patch16: gcc11-stringify-__VA_OPT__.patch Patch100: gcc11-fortran-fdec-duplicates.patch Patch101: gcc11-fortran-flogical-as-integer.patch @@ -788,6 +793,9 @@ to NVidia PTX capable devices if available. %endif %patch12 -p0 -b .d-shared-libphobos~ %patch13 -p0 -b .pr99341-revert~ +%patch14 -p0 -b .libgcc-link~ +%patch15 -p0 -b .pr101786~ +%patch16 -p0 -b .stringify-__VA_OPT__~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -1092,9 +1100,9 @@ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \ $CONFIGURE_OPTS %ifarch sparc sparcv9 sparc64 -make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap +make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" LDFLAGS_FOR_TARGET=-Wl,-z,relro,-z,now bootstrap %else -make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap +make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" LDFLAGS_FOR_TARGET=-Wl,-z,relro,-z,now profiledbootstrap %endif CC="`%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-cc`" @@ -2091,7 +2099,7 @@ end %ldconfig_scriptlets -n libgccjit -%ldconfig_scriptlets -n libgquadmath +%ldconfig_scriptlets -n libquadmath %ldconfig_scriptlets -n libitm @@ -3133,6 +3141,26 @@ end %endif %changelog +* Mon Aug 23 2021 Jakub Jelinek 11.2.1-3 +- update from releases/gcc-11-branch + - PRs c++/100828, c++/101663, c++/101725, c++/101759, c/100150, c/101512, + d/96435, d/101127, d/101441, d/101490, d/101619, d/101640, d/101664, + debug/101905, fortran/99351, fortran/101084, fortran/101514, + fortran/101536, fortran/101564, gcov-profile/89961, + gcov-profile/100788, ipa/100600, ipa/101261, ipa/101726, + libstdc++/100139, libstdc++/101056, libstdc++/101258, + libstdc++/101510, libstdc++/101866, middle-end/101624, + preprocessor/101638, sanitizer/101749, target/94780, target/100952, + target/101132, target/101531, target/101723, testsuite/101969, + tree-optimization/101373, tree-optimization/101505, + tree-optimization/101868 +- add bundled(libbacktrace) and bundled(libffi) provides +- build target shared libraries with -Wl,-z,relro,-z,now +- improve generated code with extern thread_local constinit vars + with trivial dtors +- add support for C++20 #__VA_OPT__ +- fix up %%ldconfig_scriptlets + * Fri Jul 30 2021 Jakub Jelinek 11.2.1-2 - enable LTO profiledbootstrap on all arches, and also for RHEL9+ diff --git a/gcc11-libgcc-link.patch b/gcc11-libgcc-link.patch new file mode 100644 index 0000000..8551934 --- /dev/null +++ b/gcc11-libgcc-link.patch @@ -0,0 +1,57 @@ +libgcc: Honor LDFLAGS_FOR_TARGET when linking libgcc_s + +When building gcc with some specific LDFLAGS_FOR_TARGET, e.g. +LDFLAGS_FOR_TARGET=-Wl,-z,relro,-z,now +those flags propagate info linking of target shared libraries, +e.g. lib{ubsan,tsan,stdc++,quadmath,objc,lsan,itm,gphobos,gdruntime,gomp,go,gfortran,atomic,asan}.so.* +but there is one important exception, libgcc_s.so.* linking ignores it. + +The following patch fixes that. + +Bootstrapped/regtested on x86_64-linux with LDFLAGS_FOR_TARGET=-Wl,-z,relro,-z,now +and verified that libgcc_s.so.* is BIND_NOW when it previously wasn't, and +without any LDFLAGS_FOR_TARGET on x86_64-linux and i686-linux. +There on x86_64-linux I've verified that the libgcc_s.so.1 linking command +line for -m64 is identical except for whitespace to one without the patch, +and for -m32 multilib $(LDFLAGS) actually do supply there an extra -m32 +that also repeats later in the @multilib_flags@, which should be harmless. + +2021-08-04 Jakub Jelinek + + * config/t-slibgcc (SHLIB_LINK): Add $(LDFLAGS). + * config/t-slibgcc-darwin (SHLIB_LINK): Likewise. + * config/t-slibgcc-vms (SHLIB_LINK): Likewise. + +--- libgcc/config/t-slibgcc ++++ libgcc/config/t-slibgcc +@@ -32,7 +32,7 @@ SHLIB_INSTALL_SOLINK = $(LN_S) $(SHLIB_SONAME) \ + $(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK) + + SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ +- $(SHLIB_LDFLAGS) \ ++ $(SHLIB_LDFLAGS) $(LDFLAGS) \ + -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \ + $(SHLIB_OBJS) $(SHLIB_LC) && \ + rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \ +--- libgcc/config/t-slibgcc-darwin ++++ libgcc/config/t-slibgcc-darwin +@@ -15,7 +15,7 @@ SHLIB_LC = -lc + # Note that this version is used for the loader, not the linker; the linker + # uses the stub versions named by the versioned members of $(INSTALL_FILES). + +-SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -dynamiclib -nodefaultlibs \ ++SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) $(LDFLAGS) -dynamiclib -nodefaultlibs \ + -install_name @shlib_slibdir@/$(SHLIB_INSTALL_NAME) \ + -single_module -o $(SHLIB_DIR)/$(SHLIB_SONAME) \ + -Wl,-exported_symbols_list,$(SHLIB_MAP) \ +--- libgcc/config/t-slibgcc-vms ++++ libgcc/config/t-slibgcc-vms +@@ -22,7 +22,7 @@ SHLIB_LINK = \ + objdump --syms $(SHLIB_OBJS) | \ + $(SHLIB_SYMVEC) >> SYMVEC_$$$$.opt ; \ + echo "case_sensitive=NO" >> SYMVEC_$$$$.opt; \ +- $(CC) $(LIBGCC2_CFLAGS) -nodefaultlibs \ ++ $(CC) $(LIBGCC2_CFLAGS) $(LDFLAGS) -nodefaultlibs \ + -shared --for-linker=/noinform -o $(SHLIB_NAME) $(SHLIB_OBJS) \ + --for-linker=SYMVEC_$$$$.opt \ + --for-linker=gsmatch=equal,$(shlib_version) diff --git a/gcc11-pr101786.patch b/gcc11-pr101786.patch new file mode 100644 index 0000000..427c10a --- /dev/null +++ b/gcc11-pr101786.patch @@ -0,0 +1,66 @@ +c++: Optimize constinit thread_local vars [PR101786] + +The paper that introduced constinit mentioned in rationale that constinit +can be used on externs as well and that it can be used to avoid the +thread_local initialization wrappers, because the standard requires that +if constinit is present on any declaration, it is also present on the +initialization declaration, even if it is in some other TU etc. + +There is a small problem though, we use the tls wrappers not just if +the thread_local variable needs dynamic initialization, but also when +it has static initialization, but non-trivial destructor, as the +"dynamic initialization" in that case needs to register the destructor. + +So, the following patch optimizes constinit thread_local vars only +if we can prove they will not have non-trivial destructors. That includes +the case where we have incomplete type where we don't know and need to +conservatively assume the type will have non-trivial destructor at the +initializing declaration side. + +2021-08-11 Jakub Jelinek + + PR c++/101786 + * decl2.c (var_defined_without_dynamic_init): Return true for + DECL_DECLARED_CONSTINIT_P with complete type and trivial destructor. + + * g++.dg/cpp2a/constinit16.C: New test. + +--- gcc/cp/decl2.c ++++ gcc/cp/decl2.c +@@ -3447,6 +3447,12 @@ set_guard (tree guard) + static bool + var_defined_without_dynamic_init (tree var) + { ++ /* constinit vars are guaranteed to not have dynamic initializer, ++ but still registering the destructor counts as dynamic initialization. */ ++ if (DECL_DECLARED_CONSTINIT_P (var) ++ && COMPLETE_TYPE_P (TREE_TYPE (var)) ++ && !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (var))) ++ return true; + /* If it's defined in another TU, we can't tell. */ + if (DECL_EXTERNAL (var)) + return false; +--- gcc/testsuite/g++.dg/cpp2a/constinit16.C ++++ gcc/testsuite/g++.dg/cpp2a/constinit16.C +@@ -0,0 +1,21 @@ ++// PR c++/101786 ++// { dg-do compile { target c++20 } } ++// { dg-add-options tls } ++// { dg-require-alias "" } ++// { dg-require-effective-target tls_runtime } ++// { dg-final { scan-assembler-not "_ZTH17mythreadlocalvar1" } } ++// { dg-final { scan-assembler "_ZTH17mythreadlocalvar2" } } ++// { dg-final { scan-assembler-not "_ZTH17mythreadlocalvar3" } } ++// { dg-final { scan-assembler "_ZTH17mythreadlocalvar4" } } ++ ++extern thread_local constinit int mythreadlocalvar1; ++struct S; ++extern thread_local constinit S mythreadlocalvar2; ++struct T { int t; }; ++extern thread_local constinit T mythreadlocalvar3; ++struct U { int u; ~U (); }; ++extern thread_local constinit U mythreadlocalvar4; ++int foo () { return mythreadlocalvar1; } ++S *bar () { return &mythreadlocalvar2; } ++T *baz () { return &mythreadlocalvar3; } ++U *qux () { return &mythreadlocalvar4; } diff --git a/gcc11-stringify-__VA_OPT__.patch b/gcc11-stringify-__VA_OPT__.patch new file mode 100644 index 0000000..3a2a71f --- /dev/null +++ b/gcc11-stringify-__VA_OPT__.patch @@ -0,0 +1,308 @@ +c++: Add C++20 #__VA_OPT__ support + +The following patch implements C++20 # __VA_OPT__ (...) support. +Testcases cover what I came up with myself and what LLVM has for #__VA_OPT__ +in its testsuite and the string literals are identical between the two +compilers on the va-opt-5.c testcase. + +2021-08-17 Jakub Jelinek + +libcpp/ + * macro.c (vaopt_state): Add m_stringify member. + (vaopt_state::vaopt_state): Initialize it. + (vaopt_state::update): Overwrite it. + (vaopt_state::stringify): New method. + (stringify_arg): Replace arg argument with first, count arguments + and add va_opt argument. Use first instead of arg->first and + count instead of arg->count, for va_opt add paste_tokens handling. + (paste_tokens): Fix up len calculation. Don't spell rhs twice, + instead use %.*s to supply lhs and rhs spelling lengths. Don't call + _cpp_backup_tokens here. + (paste_all_tokens): Call it here instead. + (replace_args): Adjust stringify_arg caller. For vaopt_state::END + if stringify is true handle __VA_OPT__ stringification. + (create_iso_definition): Handle # __VA_OPT__ similarly to # macro_arg. +gcc/testsuite/ + * c-c++-common/cpp/va-opt-5.c: New test. + * c-c++-common/cpp/va-opt-6.c: New test. + +--- libcpp/macro.c ++++ libcpp/macro.c +@@ -118,6 +118,7 @@ class vaopt_state { + m_arg (arg), + m_variadic (is_variadic), + m_last_was_paste (false), ++ m_stringify (false), + m_state (0), + m_paste_location (0), + m_location (0), +@@ -145,6 +146,7 @@ class vaopt_state { + } + ++m_state; + m_location = token->src_loc; ++ m_stringify = (token->flags & STRINGIFY_ARG) != 0; + return BEGIN; + } + else if (m_state == 1) +@@ -234,6 +236,12 @@ class vaopt_state { + return m_state == 0; + } + ++ /* Return true for # __VA_OPT__. */ ++ bool stringify () const ++ { ++ return m_stringify; ++ } ++ + private: + + /* The cpp_reader. */ +@@ -247,6 +255,8 @@ class vaopt_state { + /* If true, the previous token was ##. This is used to detect when + a paste occurs at the end of the sequence. */ + bool m_last_was_paste; ++ /* True for #__VA_OPT__. */ ++ bool m_stringify; + + /* The state variable: + 0 means not parsing +@@ -284,7 +294,8 @@ static _cpp_buff *collect_args (cpp_reader *, const cpp_hashnode *, + static cpp_context *next_context (cpp_reader *); + static const cpp_token *padding_token (cpp_reader *, const cpp_token *); + static const cpp_token *new_string_token (cpp_reader *, uchar *, unsigned int); +-static const cpp_token *stringify_arg (cpp_reader *, macro_arg *); ++static const cpp_token *stringify_arg (cpp_reader *, const cpp_token **, ++ unsigned int, bool); + static void paste_all_tokens (cpp_reader *, const cpp_token *); + static bool paste_tokens (cpp_reader *, location_t, + const cpp_token **, const cpp_token *); +@@ -818,10 +829,11 @@ cpp_quote_string (uchar *dest, const uchar *src, unsigned int len) + return dest; + } + +-/* Convert a token sequence ARG to a single string token according to +- the rules of the ISO C #-operator. */ ++/* Convert a token sequence FIRST to FIRST+COUNT-1 to a single string token ++ according to the rules of the ISO C #-operator. */ + static const cpp_token * +-stringify_arg (cpp_reader *pfile, macro_arg *arg) ++stringify_arg (cpp_reader *pfile, const cpp_token **first, unsigned int count, ++ bool va_opt) + { + unsigned char *dest; + unsigned int i, escape_it, backslash_count = 0; +@@ -834,9 +846,27 @@ stringify_arg (cpp_reader *pfile, macro_arg *arg) + *dest++ = '"'; + + /* Loop, reading in the argument's tokens. */ +- for (i = 0; i < arg->count; i++) ++ for (i = 0; i < count; i++) + { +- const cpp_token *token = arg->first[i]; ++ const cpp_token *token = first[i]; ++ ++ if (va_opt && (token->flags & PASTE_LEFT)) ++ { ++ location_t virt_loc = pfile->invocation_location; ++ const cpp_token *rhs; ++ do ++ { ++ if (i == count) ++ abort (); ++ rhs = first[++i]; ++ if (!paste_tokens (pfile, virt_loc, &token, rhs)) ++ { ++ --i; ++ break; ++ } ++ } ++ while (rhs->flags & PASTE_LEFT); ++ } + + if (token->type == CPP_PADDING) + { +@@ -923,7 +953,7 @@ paste_tokens (cpp_reader *pfile, location_t location, + cpp_token *lhs; + unsigned int len; + +- len = cpp_token_len (*plhs) + cpp_token_len (rhs) + 1; ++ len = cpp_token_len (*plhs) + cpp_token_len (rhs) + 2; + buf = (unsigned char *) alloca (len); + end = lhsend = cpp_spell_token (pfile, *plhs, buf, true); + +@@ -949,8 +979,10 @@ paste_tokens (cpp_reader *pfile, location_t location, + location_t saved_loc = lhs->src_loc; + + _cpp_pop_buffer (pfile); +- _cpp_backup_tokens (pfile, 1); +- *lhsend = '\0'; ++ ++ unsigned char *rhsstart = lhsend; ++ if ((*plhs)->type == CPP_DIV && rhs->type != CPP_EQ) ++ rhsstart++; + + /* We have to remove the PASTE_LEFT flag from the old lhs, but + we want to keep the new location. */ +@@ -962,8 +994,10 @@ paste_tokens (cpp_reader *pfile, location_t location, + /* Mandatory error for all apart from assembler. */ + if (CPP_OPTION (pfile, lang) != CLK_ASM) + cpp_error_with_line (pfile, CPP_DL_ERROR, location, 0, +- "pasting \"%s\" and \"%s\" does not give a valid preprocessing token", +- buf, cpp_token_as_text (pfile, rhs)); ++ "pasting \"%.*s\" and \"%.*s\" does not give " ++ "a valid preprocessing token", ++ (int) (lhsend - buf), buf, ++ (int) (end - rhsstart), rhsstart); + return false; + } + +@@ -1039,7 +1073,10 @@ paste_all_tokens (cpp_reader *pfile, const cpp_token *lhs) + abort (); + } + if (!paste_tokens (pfile, virt_loc, &lhs, rhs)) +- break; ++ { ++ _cpp_backup_tokens (pfile, 1); ++ break; ++ } + } + while (rhs->flags & PASTE_LEFT); + +@@ -1906,7 +1943,8 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, + if (src->flags & STRINGIFY_ARG) + { + if (!arg->stringified) +- arg->stringified = stringify_arg (pfile, arg); ++ arg->stringified = stringify_arg (pfile, arg->first, arg->count, ++ false); + } + else if ((src->flags & PASTE_LEFT) + || (src != macro->exp.tokens && (src[-1].flags & PASTE_LEFT))) +@@ -2029,7 +2067,24 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, + paste_flag = tokens_buff_last_token_ptr (buff); + } + +- if (src->flags & PASTE_LEFT) ++ if (vaopt_tracker.stringify ()) ++ { ++ unsigned int count ++ = start ? paste_flag - start : tokens_buff_count (buff); ++ const cpp_token *t ++ = stringify_arg (pfile, ++ start ? start + 1 ++ : (const cpp_token **) (buff->base), ++ count, true); ++ while (count--) ++ tokens_buff_remove_last_token (buff); ++ if (src->flags & PASTE_LEFT) ++ copy_paste_flag (pfile, &t, src); ++ tokens_buff_add_token (buff, virt_locs, ++ t, t->src_loc, t->src_loc, ++ NULL, 0); ++ } ++ else if (src->flags & PASTE_LEFT) + { + /* With a non-empty __VA_OPT__ on the LHS of ##, the last + token should be flagged PASTE_LEFT. */ +@@ -3585,7 +3640,10 @@ create_iso_definition (cpp_reader *pfile) + function-like macros when lexing the subsequent token. */ + if (macro->count > 1 && token[-1].type == CPP_HASH && macro->fun_like) + { +- if (token->type == CPP_MACRO_ARG) ++ if (token->type == CPP_MACRO_ARG ++ || (macro->variadic ++ && token->type == CPP_NAME ++ && token->val.node.node == pfile->spec_nodes.n__VA_OPT__)) + { + if (token->flags & PREV_WHITE) + token->flags |= SP_PREV_WHITE; +--- gcc/testsuite/c-c++-common/cpp/va-opt-5.c ++++ gcc/testsuite/c-c++-common/cpp/va-opt-5.c +@@ -0,0 +1,67 @@ ++/* { dg-do run } */ ++/* { dg-options "-std=gnu99" { target c } } */ ++/* { dg-options "-std=c++20" { target c++ } } */ ++ ++#define lparen ( ++#define a0 fooa0 ++#define a1 fooa1 a0 ++#define a2 fooa2 a1 ++#define a3 fooa3 a2 ++#define a() b lparen ) ++#define b() c lparen ) ++#define c() d lparen ) ++#define g h ++#define i(j) j ++#define f(...) #__VA_OPT__(g i(0)) ++#define k(x,...) # __VA_OPT__(x) #x #__VA_OPT__(__VA_ARGS__) ++#define l(x,...) #__VA_OPT__(a1 x) ++#define m(x,...) "a()" #__VA_OPT__(a3 __VA_ARGS__ x ## __VA_ARGS__ ## x ## c a3) "a()" ++#define n(x,...) = #__VA_OPT__(a3 __VA_ARGS__ x ## __VA_ARGS__ ## x ## c a3) #x #__VA_OPT__(a0 __VA_ARGS__ x ## __VA_ARGS__ ## x ## c a0) ; ++#define o(x, ...) #__VA_OPT__(x##x x##x) ++#define p(x, ...) #__VA_OPT__(_Pragma ("foobar")) ++#define q(...) #__VA_OPT__(/* foo */x/* bar */) ++const char *v1 = f(); ++const char *v2 = f(123); ++const char *v3 = k(1); ++const char *v4 = k(1, 2, 3 ); ++const char *v5 = l(a()); ++const char *v6 = l(a1 a(), 1); ++const char *v7 = m(); ++const char *v8 = m(,); ++const char *v9 = m(,a3); ++const char *v10 = m(a3,a(),a0); ++const char *v11 n() ++const char *v12 n(,) ++const char *v13 n(,a0) ++const char *v14 n(a0, a(),a0) ++const char *v15 = o(, 0); ++const char *v16 = p(0); ++const char *v17 = p(0, 1); ++const char *v18 = q(); ++const char *v19 = q(1); ++ ++int ++main () ++{ ++ if (__builtin_strcmp (v1, "") ++ || __builtin_strcmp (v2, "g i(0)") ++ || __builtin_strcmp (v3, "1") ++ || __builtin_strcmp (v4, "112, 3") ++ || __builtin_strcmp (v5, "") ++ || __builtin_strcmp (v6, "a1 fooa1 fooa0 b ( )") ++ || __builtin_strcmp (v7, "a()a()") ++ || __builtin_strcmp (v8, "a()a()") ++ || __builtin_strcmp (v9, "a()a3 fooa3 fooa2 fooa1 fooa0 a3c a3a()") ++ || __builtin_strcmp (v10, "a()a3 b ( ),fooa0 a3a(),a0a3c a3a()") ++ || __builtin_strcmp (v11, "") ++ || __builtin_strcmp (v12, "") ++ || __builtin_strcmp (v13, "a3 fooa0 a0c a3a0 fooa0 a0c a0") ++ || __builtin_strcmp (v14, "a3 b ( ),fooa0 a0a(),a0a0c a3a0a0 b ( ),fooa0 a0a(),a0a0c a0") ++ || __builtin_strcmp (v15, "") ++ || __builtin_strcmp (v16, "") ++ || __builtin_strcmp (v17, "_Pragma (\"foobar\")") ++ || __builtin_strcmp (v18, "") ++ || __builtin_strcmp (v19, "x")) ++ __builtin_abort (); ++ return 0; ++} +--- gcc/testsuite/c-c++-common/cpp/va-opt-6.c ++++ gcc/testsuite/c-c++-common/cpp/va-opt-6.c +@@ -0,0 +1,17 @@ ++/* { dg-do preprocess } */ ++/* { dg-options "-std=gnu99" { target c } } */ ++/* { dg-options "-std=c++20" { target c++ } } */ ++ ++#define a "" ++#define b(...) a ## #__VA_OPT__(1) /* { dg-error "pasting \"a\" and \"\"\"\" does not give a valid preprocessing token" } */ ++#define c(...) a ## #__VA_OPT__(1) /* { dg-error "pasting \"a\" and \"\"1\"\" does not give a valid preprocessing token" } */ ++#define d(...) #__VA_OPT__(1) ## ! ++#define e(...) #__VA_OPT__(1) ## ! ++#define f(...) #__VA_OPT__(. ## !) ++#define g(...) #__VA_OPT__(. ## !) ++b() ++c(1) ++d( ) /* { dg-error "pasting \"\"\"\" and \"!\" does not give a valid preprocessing token" } */ ++e( 1 ) /* { dg-error "pasting \"\"1\"\" and \"!\" does not give a valid preprocessing token" } */ ++f() ++g(0) /* { dg-error "pasting \".\" and \"!\" does not give a valid preprocessing token" } */ diff --git a/sources b/sources index f0b890a..b2beae2 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.2.1-20210728.tar.xz) = 2234298652f882151aead486bb22481ba8181df69b9c7c5d73b8aa505ace58462fcd0b482680f466e2d21dc47e869651c7dbf224b65791ca47204dab01e89e7c +SHA512 (gcc-11.2.1-20210823.tar.xz) = 1ef37ca5f54c437cc01402ff9ba9599ae5e4db25f93efdf627a353596f88f9b377f1bb7b2b8406f6a09bcc1da310ccc58f88767d59efcd54cf1d46a7134ebf4f SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 68a50d69641ae8678c139a37a7c37ee37e26c5c8 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 12 Oct 2021 12:33:59 +0200 Subject: [PATCH 073/293] 11.2.1-4 --- .gitignore | 1 + gcc.spec | 38 ++++++++++++++++++++++++++++++++--- gcc11-pr102642.patch | 47 ++++++++++++++++++++++++++++++++++++++++++++ sources | 2 +- 4 files changed, 84 insertions(+), 4 deletions(-) create mode 100644 gcc11-pr102642.patch diff --git a/.gitignore b/.gitignore index beab83d..8d7c493 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,4 @@ /gcc-11.1.1-20210726.tar.xz /gcc-11.2.1-20210728.tar.xz /gcc-11.2.1-20210823.tar.xz +/gcc-11.2.1-20211012.tar.xz diff --git a/gcc.spec b/gcc.spec index dcc7fb5..9dac6e6 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20210823 -%global gitrev b558c8e931f0c36cda40bd60f5cdeb92452e91b5 +%global DATE 20211012 +%global gitrev 7e514c5f733dbaac439b226e7b3c741a45ee50a1 %global gcc_version 11.2.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 3 +%global gcc_release 4 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -270,6 +270,7 @@ Patch13: gcc11-pr99341-revert.patch Patch14: gcc11-libgcc-link.patch Patch15: gcc11-pr101786.patch Patch16: gcc11-stringify-__VA_OPT__.patch +Patch17: gcc11-pr102642.patch Patch100: gcc11-fortran-fdec-duplicates.patch Patch101: gcc11-fortran-flogical-as-integer.patch @@ -792,10 +793,13 @@ to NVidia PTX capable devices if available. %patch11 -p0 -b .rh1574936~ %endif %patch12 -p0 -b .d-shared-libphobos~ +%if 0%{?fedora} == 34 %patch13 -p0 -b .pr99341-revert~ +%endif %patch14 -p0 -b .libgcc-link~ %patch15 -p0 -b .pr101786~ %patch16 -p0 -b .stringify-__VA_OPT__~ +%patch17 -p0 -b .pr102642~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3141,6 +3145,34 @@ end %endif %changelog +* Tue Oct 12 2021 Jakub Jelinek 11.2.1-4 +- update from releases/gcc-11-branch + - PRs ada/101970, c++/60318, c++/64697, c++/88578, c++/91292, c++/95567, + c++/98216, c++/98486, c++/99904, c++/100495, c++/101344, c++/101592, + c++/101803, c++/101883, c++/102163, c++/102295, c++/102305, + c++/102412, c++/102454, c++/102496, c++/102535, c++/102547, + c++/102548, c++/102640, d/102185, d/102574, debug/102373, + debug/102441, fortran/46691, fortran/82314, fortran/85130, + fortran/87737, fortran/98490, fortran/99819, fortran/100950, + fortran/101327, fortran/101349, fortran/102113, fortran/102287, + fortran/102311, fortran/102366, fortran/102458, fortran/102520, + ipa/97565, libgomp/96661, libstdc++/100180, libstdc++/100285, + libstdc++/100286, libstdc++/100351, libstdc++/100682, + libstdc++/101965, middle-end/101824, middle-end/101949, + rtl-optimization/102306, sanitizer/102515, target/94630, target/97142, + target/100734, target/101471, target/101472, target/101492, + target/101549, target/101849, target/101934, target/102035, + target/102107, target/102115, target/102166, target/102222, + target/102224, target/102498, tree-optimization/101925, + tree-optimization/102046, tree-optimization/102124, + tree-optimization/102400, tree-optimization/102451, + tree-optimization/102622 +- remove the PR libstdc++/99341 workaround for Fedora 35 and later, + the std::once_flag::_M_activate() and std::once_flag::_M_finish(bool) + symbols (mangled as _ZNSt9once_flag11_M_activateEv and + _ZNSt9once_flag9_M_finishEb) aren't part of upstream GCC 11 and were + present only because not all packaged have been successfully rebuilt + * Mon Aug 23 2021 Jakub Jelinek 11.2.1-3 - update from releases/gcc-11-branch - PRs c++/100828, c++/101663, c++/101725, c++/101759, c/100150, c/101512, diff --git a/gcc11-pr102642.patch b/gcc11-pr102642.patch new file mode 100644 index 0000000..598794b --- /dev/null +++ b/gcc11-pr102642.patch @@ -0,0 +1,47 @@ +2021-10-11 Jakub Jelinek + + PR c++/102642 + * name-lookup.c (push_local_extern_decl_alias): Don't call + set_decl_tls_model on error_mark_node. + * parser.c (cp_parser_omp_declare_target): Likewise. + + * g++.dg/tls/pr102642.C: New test. + +--- gcc/cp/name-lookup.c.jj 2021-10-01 10:30:07.674588541 +0200 ++++ gcc/cp/name-lookup.c 2021-10-11 12:43:39.261051228 +0200 +@@ -3474,7 +3474,9 @@ push_local_extern_decl_alias (tree decl) + push_nested_namespace (ns); + alias = do_pushdecl (alias, /* hiding= */true); + pop_nested_namespace (ns); +- if (VAR_P (decl) && CP_DECL_THREAD_LOCAL_P (decl)) ++ if (VAR_P (decl) ++ && CP_DECL_THREAD_LOCAL_P (decl) ++ && alias != error_mark_node) + set_decl_tls_model (alias, DECL_TLS_MODEL (decl)); + } + } +--- gcc/cp/parser.c.jj 2021-10-09 10:14:24.043098112 +0200 ++++ gcc/cp/parser.c 2021-10-11 12:47:21.220874667 +0200 +@@ -45665,7 +45666,8 @@ cp_parser_omp_declare_target (cp_parser + if (VAR_OR_FUNCTION_DECL_P (t) + && DECL_LOCAL_DECL_P (t) + && DECL_LANG_SPECIFIC (t) +- && DECL_LOCAL_DECL_ALIAS (t)) ++ && DECL_LOCAL_DECL_ALIAS (t) ++ && DECL_LOCAL_DECL_ALIAS (t) != error_mark_node) + handle_omp_declare_target_clause (c, DECL_LOCAL_DECL_ALIAS (t), + device_type); + } +--- gcc/testsuite/g++.dg/tls/pr102642.C.jj 2021-10-11 13:00:35.889503002 +0200 ++++ gcc/testsuite/g++.dg/tls/pr102642.C 2021-10-11 13:00:20.388724721 +0200 +@@ -0,0 +1,10 @@ ++// PR c++/102642 ++// { dg-do compile { target c++11 } } ++ ++thread_local int *z; // { dg-message "previous declaration" } ++ ++void ++foo () ++{ ++ extern thread_local int z; // { dg-error "conflicting declaration" } ++} diff --git a/sources b/sources index b2beae2..837dc16 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.2.1-20210823.tar.xz) = 1ef37ca5f54c437cc01402ff9ba9599ae5e4db25f93efdf627a353596f88f9b377f1bb7b2b8406f6a09bcc1da310ccc58f88767d59efcd54cf1d46a7134ebf4f +SHA512 (gcc-11.2.1-20211012.tar.xz) = cfd92e6d147e5f9173d040cadf440eae2b6f0e884270346b33685e4f6a143275ebcbfa39f4888e2cbd7e0dc7c51c0d254de44ec6ca57063f0b41591eb4a58410 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 27b6bb48cf4746a43e86a5720be69707731cb9a1 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 12 Oct 2021 12:35:17 +0200 Subject: [PATCH 074/293] 11.2.1-4 --- gcc.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/gcc.spec b/gcc.spec index 9dac6e6..e154721 100644 --- a/gcc.spec +++ b/gcc.spec @@ -3172,6 +3172,7 @@ end symbols (mangled as _ZNSt9once_flag11_M_activateEv and _ZNSt9once_flag9_M_finishEb) aren't part of upstream GCC 11 and were present only because not all packaged have been successfully rebuilt + (#1961541) * Mon Aug 23 2021 Jakub Jelinek 11.2.1-3 - update from releases/gcc-11-branch From 3b91dbe507b1e81051fe3a318440d9806a36ad8b Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 14 Oct 2021 10:37:56 +0200 Subject: [PATCH 075/293] Add mwaitintrin.h. --- gcc.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gcc.spec b/gcc.spec index e154721..73dbb6f 100644 --- a/gcc.spec +++ b/gcc.spec @@ -2273,6 +2273,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/hresetintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/keylockerintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avxvnniintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mwaitintrin.h %endif %ifarch ia64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ia64intrin.h @@ -3145,6 +3146,8 @@ end %endif %changelog +- add mwaitintrin.h on x86 (#2013860) + * Tue Oct 12 2021 Jakub Jelinek 11.2.1-4 - update from releases/gcc-11-branch - PRs ada/101970, c++/60318, c++/64697, c++/88578, c++/91292, c++/95567, From 3659d992cdeb8b5730dbd6f7801d63fd171cf65b Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 18 Oct 2021 19:45:26 +0200 Subject: [PATCH 076/293] 11.2.1-5 --- .gitignore | 1 + gcc.spec | 22 +++++++++++++++++++--- sources | 2 +- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 8d7c493..d46df6b 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,4 @@ /gcc-11.2.1-20210728.tar.xz /gcc-11.2.1-20210823.tar.xz /gcc-11.2.1-20211012.tar.xz +/gcc-11.2.1-20211018.tar.xz diff --git a/gcc.spec b/gcc.spec index 73dbb6f..270490b 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20211012 -%global gitrev 7e514c5f733dbaac439b226e7b3c741a45ee50a1 +%global DATE 20211018 +%global gitrev d6f9b521b3fafab22aa00ff239862bed57fa8dad %global gcc_version 11.2.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 4 +%global gcc_release 5 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -1091,7 +1091,9 @@ CONFIGURE_OPTS="\ --build=%{gcc_target_platform} \ %endif %if 0%{?fedora} >= 35 || 0%{?rhel} >= 9 +%ifnarch %{arm} --with-build-config=bootstrap-lto --enable-link-serialization=1 \ +%endif %endif " @@ -3146,7 +3148,21 @@ end %endif %changelog +* Mon Oct 18 2021 Jakub Jelinek 11.2.1-5 +- update from releases/gcc-11-branch + - PRs fortran/102716, libstdc++/65816, libstdc++/90787, libstdc++/99876, + libstdc++/100187, libstdc++/100237, libstdc++/100249, + libstdc++/100287, libstdc++/100606, libstdc++/100863, + libstdc++/101483, libstdc++/101583, libstdc++/101589, + libstdc++/101599, libstdc++/101761, libstdc++/101870, + libstdc++/101923, libstdc++/101960, libstdc++/102048, + libstdc++/102074, libstdc++/102270, libstdc++/102280, + libstdc++/102425, libstdc++/102592, libstdc++/102667, + rtl-optimization/102627, target/100340, target/102588 - add mwaitintrin.h on x86 (#2013860) +- disable LTO bootstrap on 32-bit arm, 6 days long build and counting + isn't acceptable, build boxes don't have enough memory and are too + slow * Tue Oct 12 2021 Jakub Jelinek 11.2.1-4 - update from releases/gcc-11-branch diff --git a/sources b/sources index 837dc16..ea09505 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.2.1-20211012.tar.xz) = cfd92e6d147e5f9173d040cadf440eae2b6f0e884270346b33685e4f6a143275ebcbfa39f4888e2cbd7e0dc7c51c0d254de44ec6ca57063f0b41591eb4a58410 +SHA512 (gcc-11.2.1-20211018.tar.xz) = 891705d0b37e3cffb3d092d2292877db01ab42ecb49e443ad747e56881ddc153e8973ec95b9774ced5ee8d4e8c09fd7d33837540abe8dc50bccb6a4824d285c6 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 80be3f02eafcc0b1cccef029f831a420b7829c42 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 19 Oct 2021 17:53:26 +0200 Subject: [PATCH 077/293] 11.2.1-6 --- .gitignore | 1 + gcc.spec | 11 ++++++++--- sources | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index d46df6b..a1edf7b 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,4 @@ /gcc-11.2.1-20210823.tar.xz /gcc-11.2.1-20211012.tar.xz /gcc-11.2.1-20211018.tar.xz +/gcc-11.2.1-20211019.tar.xz diff --git a/gcc.spec b/gcc.spec index 270490b..9fe1607 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20211018 -%global gitrev d6f9b521b3fafab22aa00ff239862bed57fa8dad +%global DATE 20211019 +%global gitrev 0990a48aaf68b56a3737fdb290328df1da9095cc %global gcc_version 11.2.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 5 +%global gcc_release 6 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -3148,6 +3148,11 @@ end %endif %changelog +* Tue Oct 19 2021 Jakub Jelinek 11.2.1-6 +- update from releases/gcc-11-branch + - PRs target/100208, target/100316, target/102761 +- fix up libstdc++ docs build + * Mon Oct 18 2021 Jakub Jelinek 11.2.1-5 - update from releases/gcc-11-branch - PRs fortran/102716, libstdc++/65816, libstdc++/90787, libstdc++/99876, diff --git a/sources b/sources index ea09505..385d24d 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.2.1-20211018.tar.xz) = 891705d0b37e3cffb3d092d2292877db01ab42ecb49e443ad747e56881ddc153e8973ec95b9774ced5ee8d4e8c09fd7d33837540abe8dc50bccb6a4824d285c6 +SHA512 (gcc-11.2.1-20211019.tar.xz) = 08c85e39d028446730372cfbe13a708f240d9a20d89429542fa5c8190a7e9bc13c6734ad068152b4644a7ae561d8c76b9633289e9b20735bbca0d034cf1eea82 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 671fc7ba16012e3269434c1e3034006994713475 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 3 Dec 2021 17:10:08 +0100 Subject: [PATCH 078/293] 11.2.1-7 --- .gitignore | 1 + gcc.spec | 37 +++++- gcc11-pr102642.patch | 47 ------- gcc11-stringify-__VA_OPT__-2.patch | 197 +++++++++++++++++++++++++++++ sources | 2 +- 5 files changed, 231 insertions(+), 53 deletions(-) delete mode 100644 gcc11-pr102642.patch create mode 100644 gcc11-stringify-__VA_OPT__-2.patch diff --git a/.gitignore b/.gitignore index a1edf7b..dbccc8a 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,4 @@ /gcc-11.2.1-20211012.tar.xz /gcc-11.2.1-20211018.tar.xz /gcc-11.2.1-20211019.tar.xz +/gcc-11.2.1-20211203.tar.xz diff --git a/gcc.spec b/gcc.spec index 9fe1607..a310bcf 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20211019 -%global gitrev 0990a48aaf68b56a3737fdb290328df1da9095cc +%global DATE 20211203 +%global gitrev e41308252e835ddedcabfd4a98240080c6583a43 %global gcc_version 11.2.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 6 +%global gcc_release 7 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -270,7 +270,7 @@ Patch13: gcc11-pr99341-revert.patch Patch14: gcc11-libgcc-link.patch Patch15: gcc11-pr101786.patch Patch16: gcc11-stringify-__VA_OPT__.patch -Patch17: gcc11-pr102642.patch +Patch17: gcc11-stringify-__VA_OPT__-2.patch Patch100: gcc11-fortran-fdec-duplicates.patch Patch101: gcc11-fortran-flogical-as-integer.patch @@ -799,7 +799,7 @@ to NVidia PTX capable devices if available. %patch14 -p0 -b .libgcc-link~ %patch15 -p0 -b .pr101786~ %patch16 -p0 -b .stringify-__VA_OPT__~ -%patch17 -p0 -b .pr102642~ +%patch17 -p0 -b .stringify-__VA_OPT__-2~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3148,6 +3148,33 @@ end %endif %changelog +* Fri Dec 3 2021 Jakub Jelinek 11.2.1-7 +- update from releases/gcc-11-branch + - PRs ada/100486, c++/70796, c++/92746, c++/93286, c++/94490, c++/102642, + c++/102786, debug/101378, debug/103046, debug/103315, fortran/87711, + fortran/87851, fortran/97896, fortran/99061, fortran/99348, + fortran/102521, fortran/102685, fortran/102715, fortran/102745, + fortran/102816, fortran/102817, fortran/102917, fortran/103137, + fortran/103138, fortran/103392, gcov-profile/100520, ipa/102714, + ipa/102762, ipa/103052, ipa/103246, ipa/103267, libstdc++/96416, + libstdc++/98421, libstdc++/100117, libstdc++/100153, libstdc++/100748, + libstdc++/101571, libstdc++/101608, libstdc++/102894, + libstdc++/103022, libstdc++/103086, libstdc++/103133, + libstdc++/103240, libstdc++/103381, middle-end/64888, + middle-end/101480, middle-end/102431, middle-end/102518, + middle-end/103059, middle-end/103181, middle-end/103248, + middle-end/103384, preprocessor/103130, rtl-optimization/102356, + rtl-optimization/102842, target/101985, target/102976, target/102991, + target/103205, target/103274, target/103275, testsuite/102690, + tree-optimization/100393, tree-optimization/102139, + tree-optimization/102505, tree-optimization/102572, + tree-optimization/102788, tree-optimization/102789, + tree-optimization/102798, tree-optimization/102970, + tree-optimization/103192, tree-optimization/103204, + tree-optimization/103237, tree-optimization/103255, + tree-optimization/103435 +- fix up #__VA_OPT__ handling (PR preprocessor/103415) + * Tue Oct 19 2021 Jakub Jelinek 11.2.1-6 - update from releases/gcc-11-branch - PRs target/100208, target/100316, target/102761 diff --git a/gcc11-pr102642.patch b/gcc11-pr102642.patch deleted file mode 100644 index 598794b..0000000 --- a/gcc11-pr102642.patch +++ /dev/null @@ -1,47 +0,0 @@ -2021-10-11 Jakub Jelinek - - PR c++/102642 - * name-lookup.c (push_local_extern_decl_alias): Don't call - set_decl_tls_model on error_mark_node. - * parser.c (cp_parser_omp_declare_target): Likewise. - - * g++.dg/tls/pr102642.C: New test. - ---- gcc/cp/name-lookup.c.jj 2021-10-01 10:30:07.674588541 +0200 -+++ gcc/cp/name-lookup.c 2021-10-11 12:43:39.261051228 +0200 -@@ -3474,7 +3474,9 @@ push_local_extern_decl_alias (tree decl) - push_nested_namespace (ns); - alias = do_pushdecl (alias, /* hiding= */true); - pop_nested_namespace (ns); -- if (VAR_P (decl) && CP_DECL_THREAD_LOCAL_P (decl)) -+ if (VAR_P (decl) -+ && CP_DECL_THREAD_LOCAL_P (decl) -+ && alias != error_mark_node) - set_decl_tls_model (alias, DECL_TLS_MODEL (decl)); - } - } ---- gcc/cp/parser.c.jj 2021-10-09 10:14:24.043098112 +0200 -+++ gcc/cp/parser.c 2021-10-11 12:47:21.220874667 +0200 -@@ -45665,7 +45666,8 @@ cp_parser_omp_declare_target (cp_parser - if (VAR_OR_FUNCTION_DECL_P (t) - && DECL_LOCAL_DECL_P (t) - && DECL_LANG_SPECIFIC (t) -- && DECL_LOCAL_DECL_ALIAS (t)) -+ && DECL_LOCAL_DECL_ALIAS (t) -+ && DECL_LOCAL_DECL_ALIAS (t) != error_mark_node) - handle_omp_declare_target_clause (c, DECL_LOCAL_DECL_ALIAS (t), - device_type); - } ---- gcc/testsuite/g++.dg/tls/pr102642.C.jj 2021-10-11 13:00:35.889503002 +0200 -+++ gcc/testsuite/g++.dg/tls/pr102642.C 2021-10-11 13:00:20.388724721 +0200 -@@ -0,0 +1,10 @@ -+// PR c++/102642 -+// { dg-do compile { target c++11 } } -+ -+thread_local int *z; // { dg-message "previous declaration" } -+ -+void -+foo () -+{ -+ extern thread_local int z; // { dg-error "conflicting declaration" } -+} diff --git a/gcc11-stringify-__VA_OPT__-2.patch b/gcc11-stringify-__VA_OPT__-2.patch new file mode 100644 index 0000000..987f738 --- /dev/null +++ b/gcc11-stringify-__VA_OPT__-2.patch @@ -0,0 +1,197 @@ +libcpp: Fix up #__VA_OPT__ handling [PR103415] + +stringify_arg uses pfile->u_buff to create the string literal. +Unfortunately, paste_tokens -> _cpp_lex_direct -> lex_number -> _cpp_unaligned_alloc +can in some cases use pfile->u_buff too, which results in losing everything +prepared for the string literal until the token pasting. + +The following patch fixes that by not calling paste_token during the +construction of the string literal, but doing that before. All the tokens +we are processing have been pushed into a token buffer using +tokens_buff_add_token so it is fine if we paste some of them in that buffer +(successful pasting creates a new token in that buffer), move following +tokens if any to make it contiguous, pop (throw away) the extra tokens at +the end and then do stringify_arg. + +Also, paste_tokens now copies over PREV_WHITE and PREV_FALLTHROUGH flags +from the original lhs token to the replacement token. Copying that way +the PREV_WHITE flag is needed for the #__VA_OPT__ handling and copying +over PREV_FALLTHROUGH fixes the new Wimplicit-fallthrough-38.c test. + +2021-12-01 Jakub Jelinek + + PR preprocessor/103415 +libcpp/ + * macro.c (stringify_arg): Remove va_opt argument and va_opt handling. + (paste_tokens): On successful paste or in PREV_WHITE and + PREV_FALLTHROUGH flags from the *plhs token to the new token. + (replace_args): Adjust stringify_arg callers. For #__VA_OPT__, + perform token pasting in a separate loop before stringify_arg call. +gcc/testsuite/ + * c-c++-common/cpp/va-opt-8.c: New test. + * c-c++-common/Wimplicit-fallthrough-38.c: New test. + +--- libcpp/macro.c.jj ++++ libcpp/macro.c +@@ -295,7 +295,7 @@ static cpp_context *next_context (cpp_reader *); + static const cpp_token *padding_token (cpp_reader *, const cpp_token *); + static const cpp_token *new_string_token (cpp_reader *, uchar *, unsigned int); + static const cpp_token *stringify_arg (cpp_reader *, const cpp_token **, +- unsigned int, bool); ++ unsigned int); + static void paste_all_tokens (cpp_reader *, const cpp_token *); + static bool paste_tokens (cpp_reader *, location_t, + const cpp_token **, const cpp_token *); +@@ -834,8 +834,7 @@ cpp_quote_string (uchar *dest, const uchar *src, unsigned int len) + /* Convert a token sequence FIRST to FIRST+COUNT-1 to a single string token + according to the rules of the ISO C #-operator. */ + static const cpp_token * +-stringify_arg (cpp_reader *pfile, const cpp_token **first, unsigned int count, +- bool va_opt) ++stringify_arg (cpp_reader *pfile, const cpp_token **first, unsigned int count) + { + unsigned char *dest; + unsigned int i, escape_it, backslash_count = 0; +@@ -852,24 +851,6 @@ stringify_arg (cpp_reader *pfile, const cpp_token **first, unsigned int count, + { + const cpp_token *token = first[i]; + +- if (va_opt && (token->flags & PASTE_LEFT)) +- { +- location_t virt_loc = pfile->invocation_location; +- const cpp_token *rhs; +- do +- { +- if (i == count) +- abort (); +- rhs = first[++i]; +- if (!paste_tokens (pfile, virt_loc, &token, rhs)) +- { +- --i; +- break; +- } +- } +- while (rhs->flags & PASTE_LEFT); +- } +- + if (token->type == CPP_PADDING) + { + if (source == NULL +@@ -1003,6 +984,7 @@ paste_tokens (cpp_reader *pfile, location_t location, + return false; + } + ++ lhs->flags |= (*plhs)->flags & (PREV_WHITE | PREV_FALLTHROUGH); + *plhs = lhs; + _cpp_pop_buffer (pfile); + return true; +@@ -1945,8 +1927,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, + if (src->flags & STRINGIFY_ARG) + { + if (!arg->stringified) +- arg->stringified = stringify_arg (pfile, arg->first, arg->count, +- false); ++ arg->stringified = stringify_arg (pfile, arg->first, arg->count); + } + else if ((src->flags & PASTE_LEFT) + || (src != macro->exp.tokens && (src[-1].flags & PASTE_LEFT))) +@@ -2066,11 +2047,46 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, + { + unsigned int count + = start ? paste_flag - start : tokens_buff_count (buff); +- const cpp_token *t +- = stringify_arg (pfile, +- start ? start + 1 +- : (const cpp_token **) (buff->base), +- count, true); ++ const cpp_token **first ++ = start ? start + 1 ++ : (const cpp_token **) (buff->base); ++ unsigned int i, j; ++ ++ /* Paste any tokens that need to be pasted before calling ++ stringify_arg, because stringify_arg uses pfile->u_buff ++ which paste_tokens can use as well. */ ++ for (i = 0, j = 0; i < count; i++, j++) ++ { ++ const cpp_token *token = first[i]; ++ ++ if (token->flags & PASTE_LEFT) ++ { ++ location_t virt_loc = pfile->invocation_location; ++ const cpp_token *rhs; ++ do ++ { ++ if (i == count) ++ abort (); ++ rhs = first[++i]; ++ if (!paste_tokens (pfile, virt_loc, &token, rhs)) ++ { ++ --i; ++ break; ++ } ++ } ++ while (rhs->flags & PASTE_LEFT); ++ } ++ ++ first[j] = token; ++ } ++ if (j != i) ++ { ++ while (i-- != j) ++ tokens_buff_remove_last_token (buff); ++ count = j; ++ } ++ ++ const cpp_token *t = stringify_arg (pfile, first, count); + while (count--) + tokens_buff_remove_last_token (buff); + if (src->flags & PASTE_LEFT) +--- gcc/testsuite/c-c++-common/cpp/va-opt-8.c.jj ++++ gcc/testsuite/c-c++-common/cpp/va-opt-8.c +@@ -0,0 +1,18 @@ ++/* PR preprocessor/103415 */ ++/* { dg-do run } */ ++/* { dg-options "-std=gnu99" { target c } } */ ++/* { dg-options "-std=c++20" { target c++ } } */ ++ ++#define n(x, ...) = #__VA_OPT__(x##3) ++#define o(x, ...) #__VA_OPT__(x##__VA_ARGS__##9) ++const char *c n(1 2, 4); ++const char *d = o(5 6, 7 8); ++ ++int ++main () ++{ ++ if (__builtin_strcmp (c, "1 23") ++ || __builtin_strcmp (d, "5 67 89")) ++ __builtin_abort (); ++ return 0; ++} +--- gcc/testsuite/c-c++-common/Wimplicit-fallthrough-38.c.jj ++++ gcc/testsuite/c-c++-common/Wimplicit-fallthrough-38.c +@@ -0,0 +1,24 @@ ++/* { dg-do compile } */ ++/* { dg-options "-Wimplicit-fallthrough=3" } */ ++ ++#define FOO \ ++int \ ++foo (int a) \ ++{ \ ++ switch (a) \ ++ { \ ++ case 1: \ ++ ++a; \ ++ /* FALLTHRU */ \ ++ case 2: \ ++ ++a; \ ++ /* FALLTHRU */ \ ++ ca##se 3: \ ++ ++a; \ ++ default: \ ++ break; \ ++ } \ ++ return a; \ ++} ++ ++FOO diff --git a/sources b/sources index 385d24d..a7e012b 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.2.1-20211019.tar.xz) = 08c85e39d028446730372cfbe13a708f240d9a20d89429542fa5c8190a7e9bc13c6734ad068152b4644a7ae561d8c76b9633289e9b20735bbca0d034cf1eea82 +SHA512 (gcc-11.2.1-20211203.tar.xz) = 3cf64d3af541b9e80a2d5dd95a1257afefda554cfa16b757a7f861701e3da2d6917dbb1f4cd74301ffaf45e92c441642b8c589a10698a9103a216620f0849626 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From cdf92292afdca58fae56c2e927cf4f3fa22d2789 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 8 Jan 2022 12:35:44 +0100 Subject: [PATCH 079/293] 12.0.0-0.3 --- .gitignore | 1 + gcc.spec | 874 ++---------------- gcc11-Wno-format-security.patch | 27 - gcc11-foffload-default.patch | 116 --- gcc11-libgcc-link.patch | 57 -- gcc11-pr101786.patch | 66 -- gcc11-pr99341-revert.patch | 176 ---- gcc11-stringify-__VA_OPT__-2.patch | 197 ---- gcc11-stringify-__VA_OPT__.patch | 308 ------ gcc12-Wno-format-security.patch | 58 ++ ...os.patch => gcc12-d-shared-libphobos.patch | 0 ...c12-fortran-fdec-add-missing-indexes.patch | 0 ...tch => gcc12-fortran-fdec-duplicates.patch | 0 ...ar.patch => gcc12-fortran-fdec-ichar.patch | 0 ...gcc12-fortran-fdec-non-integer-index.patch | 0 ...=> gcc12-fortran-fdec-non-logical-if.patch | 0 ...patch => gcc12-fortran-fdec-old-init.patch | 0 ... => gcc12-fortran-fdec-override-kind.patch | 0 ...atch => gcc12-fortran-fdec-promotion.patch | 0 ...patch => gcc12-fortran-fdec-sequence.patch | 0 ...=> gcc12-fortran-flogical-as-integer.patch | 0 gcc11-hack.patch => gcc12-hack.patch | 0 gcc11-isl-dl.patch => gcc12-isl-dl.patch | 0 gcc11-isl-dl2.patch => gcc12-isl-dl2.patch | 8 +- ...atch => gcc12-libgomp-omp_h-multilib.patch | 0 ...+-docs.patch => gcc12-libstdc++-docs.patch | 4 +- ...path.patch => gcc12-libtool-no-rpath.patch | 0 ...-needed.patch => gcc12-no-add-needed.patch | 0 ...1-rh1574936.patch => gcc12-rh1574936.patch | 0 ...atch => gcc12-sparc-config-detection.patch | 0 sources | 2 +- update-gcc.sh | 2 +- 32 files changed, 161 insertions(+), 1735 deletions(-) delete mode 100644 gcc11-Wno-format-security.patch delete mode 100644 gcc11-foffload-default.patch delete mode 100644 gcc11-libgcc-link.patch delete mode 100644 gcc11-pr101786.patch delete mode 100644 gcc11-pr99341-revert.patch delete mode 100644 gcc11-stringify-__VA_OPT__-2.patch delete mode 100644 gcc11-stringify-__VA_OPT__.patch create mode 100644 gcc12-Wno-format-security.patch rename gcc11-d-shared-libphobos.patch => gcc12-d-shared-libphobos.patch (100%) rename gcc11-fortran-fdec-add-missing-indexes.patch => gcc12-fortran-fdec-add-missing-indexes.patch (100%) rename gcc11-fortran-fdec-duplicates.patch => gcc12-fortran-fdec-duplicates.patch (100%) rename gcc11-fortran-fdec-ichar.patch => gcc12-fortran-fdec-ichar.patch (100%) rename gcc11-fortran-fdec-non-integer-index.patch => gcc12-fortran-fdec-non-integer-index.patch (100%) rename gcc11-fortran-fdec-non-logical-if.patch => gcc12-fortran-fdec-non-logical-if.patch (100%) rename gcc11-fortran-fdec-old-init.patch => gcc12-fortran-fdec-old-init.patch (100%) rename gcc11-fortran-fdec-override-kind.patch => gcc12-fortran-fdec-override-kind.patch (100%) rename gcc11-fortran-fdec-promotion.patch => gcc12-fortran-fdec-promotion.patch (100%) rename gcc11-fortran-fdec-sequence.patch => gcc12-fortran-fdec-sequence.patch (100%) rename gcc11-fortran-flogical-as-integer.patch => gcc12-fortran-flogical-as-integer.patch (100%) rename gcc11-hack.patch => gcc12-hack.patch (100%) rename gcc11-isl-dl.patch => gcc12-isl-dl.patch (100%) rename gcc11-isl-dl2.patch => gcc12-isl-dl2.patch (90%) rename gcc11-libgomp-omp_h-multilib.patch => gcc12-libgomp-omp_h-multilib.patch (100%) rename gcc11-libstdc++-docs.patch => gcc12-libstdc++-docs.patch (96%) rename gcc11-libtool-no-rpath.patch => gcc12-libtool-no-rpath.patch (100%) rename gcc11-no-add-needed.patch => gcc12-no-add-needed.patch (100%) rename gcc11-rh1574936.patch => gcc12-rh1574936.patch (100%) rename gcc11-sparc-config-detection.patch => gcc12-sparc-config-detection.patch (100%) diff --git a/.gitignore b/.gitignore index dbccc8a..0cb9ebd 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,4 @@ /gcc-11.2.1-20211018.tar.xz /gcc-11.2.1-20211019.tar.xz /gcc-11.2.1-20211203.tar.xz +/gcc-12.0.0-20220108.tar.xz diff --git a/gcc.spec b/gcc.spec index a310bcf..6fe59ed 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20211203 -%global gitrev e41308252e835ddedcabfd4a98240080c6583a43 -%global gcc_version 11.2.1 -%global gcc_major 11 +%global DATE 20220108 +%global gitrev 6bd6f878235efd1d0787892e7e2f73c5edf514cc +%global gcc_version 12.0.0 +%global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 7 +%global gcc_release 0 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist} +Release: %{gcc_release}.3%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -199,6 +199,10 @@ BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc. # Ada requires Ada to build BuildRequires: gcc-gnat >= 3.1, libgnat >= 3.1 %endif +%if %{build_d} +# D requires D to build +BuildRequires: gcc-gdc >= 11.0.0, libgphobos-static >= 11.0.0 +%endif %ifarch ia64 BuildRequires: libunwind >= 0.98 %endif @@ -254,34 +258,28 @@ Provides: bundled(libbacktrace) Provides: bundled(libffi) Provides: gcc(major) = %{gcc_major} -Patch0: gcc11-hack.patch -Patch2: gcc11-sparc-config-detection.patch -Patch3: gcc11-libgomp-omp_h-multilib.patch -Patch4: gcc11-libtool-no-rpath.patch -Patch5: gcc11-isl-dl.patch -Patch6: gcc11-isl-dl2.patch -Patch7: gcc11-libstdc++-docs.patch -Patch8: gcc11-no-add-needed.patch -Patch9: gcc11-foffload-default.patch -Patch10: gcc11-Wno-format-security.patch -Patch11: gcc11-rh1574936.patch -Patch12: gcc11-d-shared-libphobos.patch -Patch13: gcc11-pr99341-revert.patch -Patch14: gcc11-libgcc-link.patch -Patch15: gcc11-pr101786.patch -Patch16: gcc11-stringify-__VA_OPT__.patch -Patch17: gcc11-stringify-__VA_OPT__-2.patch +Patch0: gcc12-hack.patch +Patch2: gcc12-sparc-config-detection.patch +Patch3: gcc12-libgomp-omp_h-multilib.patch +Patch4: gcc12-libtool-no-rpath.patch +Patch5: gcc12-isl-dl.patch +Patch6: gcc12-isl-dl2.patch +Patch7: gcc12-libstdc++-docs.patch +Patch8: gcc12-no-add-needed.patch +Patch9: gcc12-Wno-format-security.patch +Patch10: gcc12-rh1574936.patch +Patch11: gcc12-d-shared-libphobos.patch -Patch100: gcc11-fortran-fdec-duplicates.patch -Patch101: gcc11-fortran-flogical-as-integer.patch -Patch102: gcc11-fortran-fdec-ichar.patch -Patch103: gcc11-fortran-fdec-non-integer-index.patch -Patch104: gcc11-fortran-fdec-old-init.patch -Patch105: gcc11-fortran-fdec-override-kind.patch -Patch106: gcc11-fortran-fdec-non-logical-if.patch -Patch107: gcc11-fortran-fdec-promotion.patch -Patch108: gcc11-fortran-fdec-sequence.patch -Patch109: gcc11-fortran-fdec-add-missing-indexes.patch +Patch100: gcc12-fortran-fdec-duplicates.patch +Patch101: gcc12-fortran-flogical-as-integer.patch +Patch102: gcc12-fortran-fdec-ichar.patch +Patch103: gcc12-fortran-fdec-non-integer-index.patch +Patch104: gcc12-fortran-fdec-old-init.patch +Patch105: gcc12-fortran-fdec-override-kind.patch +Patch106: gcc12-fortran-fdec-non-logical-if.patch +Patch107: gcc12-fortran-fdec-promotion.patch +Patch108: gcc12-fortran-fdec-sequence.patch +Patch109: gcc12-fortran-fdec-add-missing-indexes.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -303,7 +301,7 @@ Patch109: gcc11-fortran-fdec-add-missing-indexes.patch %if %{build_go} # Avoid stripping these libraries and binaries. %global __os_install_post \ -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.19.* \ +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.20.* \ chmod 644 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -311,7 +309,7 @@ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/test2json \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/vet \ %__os_install_post \ -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.19.* \ +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.20.* \ chmod 755 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 755 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -322,11 +320,11 @@ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} %endif %description -The gcc package contains the GNU Compiler Collection version 11. +The gcc package contains the GNU Compiler Collection version 12. You'll need this package in order to compile C code. %package -n libgcc -Summary: GCC version 11 shared support library +Summary: GCC version 12 shared support library Autoreq: false %if !%{build_ada} Obsoletes: libgnat < %{version}-%{release} @@ -787,19 +785,11 @@ to NVidia PTX capable devices if available. %patch7 -p0 -b .libstdc++-docs~ %endif %patch8 -p0 -b .no-add-needed~ -%patch9 -p0 -b .foffload-default~ -%patch10 -p0 -b .Wno-format-security~ +%patch9 -p0 -b .Wno-format-security~ %if 0%{?fedora} >= 29 || 0%{?rhel} > 7 -%patch11 -p0 -b .rh1574936~ +%patch10 -p0 -b .rh1574936~ %endif -%patch12 -p0 -b .d-shared-libphobos~ -%if 0%{?fedora} == 34 -%patch13 -p0 -b .pr99341-revert~ -%endif -%patch14 -p0 -b .libgcc-link~ -%patch15 -p0 -b .pr101786~ -%patch16 -p0 -b .stringify-__VA_OPT__~ -%patch17 -p0 -b .stringify-__VA_OPT__-2~ +%patch11 -p0 -b .d-shared-libphobos~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -817,6 +807,8 @@ to NVidia PTX capable devices if available. %ifarch %{arm} rm -f gcc/testsuite/go.test/test/fixedbugs/issue19182.go %endif +rm -f libphobos/testsuite/libphobos.gc/forkgc2.d +#rm -rf libphobos/testsuite/libphobos.gc echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE @@ -922,7 +914,7 @@ ISL_FLAG_PIC=-fPIC ISL_FLAG_PIC=-fpic %endif cd isl-build -sed -i 's|libisl|libgcc11privateisl|g' \ +sed -i 's|libisl|libgcc12privateisl|g' \ ../../isl-%{isl_version}/Makefile.{am,in} ../../isl-%{isl_version}/configure \ CC=/usr/bin/gcc CXX=/usr/bin/g++ \ @@ -930,8 +922,8 @@ sed -i 's|libisl|libgcc11privateisl|g' \ make %{?_smp_mflags} make install cd ../isl-install/lib -rm libgcc11privateisl.so{,.15} -mv libgcc11privateisl.so.15.3.0 libisl.so.15 +rm libgcc12privateisl.so{,.15} +mv libgcc12privateisl.so.15.3.0 libisl.so.15 ln -sf libisl.so.15 libisl.so cd ../.. %endif @@ -985,7 +977,7 @@ CONFIGURE_OPTS="\ %endif %if %{build_offload_nvptx} --enable-offload-targets=nvptx-none \ - --without-cuda-driver \ + --without-cuda-driver --enable-offload-defaulted \ %endif %if 0%{?fedora} >= 21 || 0%{?rhel} >= 7 %if %{attr_ifunc} @@ -1184,7 +1176,7 @@ done) (cd libphobos; for i in ChangeLog*; do cp -p $i ../rpm.doc/libphobos/$i.libphobos done -cp -a src/LICENSE*.txt libdruntime/LICENSE ../rpm.doc/libphobos/) +cp -a src/LICENSE*.txt libdruntime/LICENSE.txt ../rpm.doc/libphobos/) %endif %if %{build_libquadmath} (cd libquadmath; for i in ChangeLog* COPYING.LIB; do @@ -1463,14 +1455,14 @@ ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../libgfortran.so.5.* libgfortran.so ln -sf ../../../libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../libgo.so.19.* libgo.so +ln -sf ../../../libgo.so.20.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../libquadmath.so.0.* libquadmath.so %endif %if %{build_d} -ln -sf ../../../libgdruntime.so.2.* libgdruntime.so -ln -sf ../../../libgphobos.so.2.* libgphobos.so +ln -sf ../../../libgdruntime.so.3.* libgdruntime.so +ln -sf ../../../libgphobos.so.3.* libgphobos.so %endif %if %{build_libitm} ln -sf ../../../libitm.so.1.* libitm.so @@ -1479,7 +1471,7 @@ ln -sf ../../../libitm.so.1.* libitm.so ln -sf ../../../libatomic.so.1.* libatomic.so %endif %if %{build_libasan} -ln -sf ../../../libasan.so.6.* libasan.so +ln -sf ../../../libasan.so.8.* libasan.so mv ../../../libasan_preinit.o libasan_preinit.o %endif %if %{build_libubsan} @@ -1493,14 +1485,14 @@ ln -sf ../../../../%{_lib}/libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../../%{_lib}/libgfortran.so.5.* libgfortran.so ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../../%{_lib}/libgo.so.19.* libgo.so +ln -sf ../../../../%{_lib}/libgo.so.20.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so %endif %if %{build_d} -ln -sf ../../../../%{_lib}/libgdruntime.so.2.* libgdruntime.so -ln -sf ../../../../%{_lib}/libgphobos.so.2.* libgphobos.so +ln -sf ../../../../%{_lib}/libgdruntime.so.3.* libgdruntime.so +ln -sf ../../../../%{_lib}/libgphobos.so.3.* libgphobos.so %endif %if %{build_libitm} ln -sf ../../../../%{_lib}/libitm.so.1.* libitm.so @@ -1509,7 +1501,7 @@ ln -sf ../../../../%{_lib}/libitm.so.1.* libitm.so ln -sf ../../../../%{_lib}/libatomic.so.1.* libatomic.so %endif %if %{build_libasan} -ln -sf ../../../../%{_lib}/libasan.so.6.* libasan.so +ln -sf ../../../../%{_lib}/libasan.so.8.* libasan.so mv ../../../../%{_lib}/libasan_preinit.o libasan_preinit.o %endif %if %{build_libubsan} @@ -1517,7 +1509,7 @@ ln -sf ../../../../%{_lib}/libubsan.so.1.* libubsan.so %endif %if %{build_libtsan} rm -f libtsan.so -echo 'INPUT ( %{_prefix}/%{_lib}/'`echo ../../../../%{_lib}/libtsan.so.0.* | sed 's,^.*libt,libt,'`' )' > libtsan.so +echo 'INPUT ( %{_prefix}/%{_lib}/'`echo ../../../../%{_lib}/libtsan.so.2.* | sed 's,^.*libt,libt,'`' )' > libtsan.so mv ../../../../%{_lib}/libtsan_preinit.o libtsan_preinit.o %endif %if %{build_liblsan} @@ -1577,28 +1569,28 @@ mv -f $FULLPATH/ada{include,lib} $FULLLPATH/ pushd $FULLLPATH/adalib if [ "%{_lib}" = "lib" ]; then ln -sf ../../../../../libgnarl-*.so libgnarl.so -ln -sf ../../../../../libgnarl-*.so libgnarl-11.so +ln -sf ../../../../../libgnarl-*.so libgnarl-12.so ln -sf ../../../../../libgnat-*.so libgnat.so -ln -sf ../../../../../libgnat-*.so libgnat-11.so +ln -sf ../../../../../libgnat-*.so libgnat-12.so else ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl.so -ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-11.so +ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-12.so ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat.so -ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-11.so +ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-12.so fi popd else pushd $FULLPATH/adalib if [ "%{_lib}" = "lib" ]; then ln -sf ../../../../libgnarl-*.so libgnarl.so -ln -sf ../../../../libgnarl-*.so libgnarl-11.so +ln -sf ../../../../libgnarl-*.so libgnarl-12.so ln -sf ../../../../libgnat-*.so libgnat.so -ln -sf ../../../../libgnat-*.so libgnat-11.so +ln -sf ../../../../libgnat-*.so libgnat-12.so else ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so -ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-11.so +ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-12.so ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so -ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-11.so +ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-12.so fi popd fi @@ -1613,8 +1605,8 @@ ln -sf ../`echo ../../../../lib/libgfortran.so.5.* | sed s~/lib/~/lib64/~` 64/li ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.19.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.19.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.20.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.20.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -1623,10 +1615,10 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libquadmath.so.0.* | sed ' %endif %if %{build_d} rm -f libgdruntime.so libgphobos.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgdruntime.so.2.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgdruntime.so.2.* | sed 's,^.*libg,libg,'`' )' > 64/libgdruntime.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgphobos.so.2.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgphobos.so.2.* | sed 's,^.*libg,libg,'`' )' > 64/libgphobos.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgdruntime.so.3.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgdruntime.so.3.* | sed 's,^.*libg,libg,'`' )' > 64/libgdruntime.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgphobos.so.3.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgphobos.so.3.* | sed 's,^.*libg,libg,'`' )' > 64/libgphobos.so %endif %if %{build_libitm} rm -f libitm.so @@ -1640,8 +1632,8 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libatomic.so.1.* | sed 's, %endif %if %{build_libasan} rm -f libasan.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libasan.so.6.* | sed 's,^.*liba,liba,'`' )' > libasan.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libasan.so.6.* | sed 's,^.*liba,liba,'`' )' > 64/libasan.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libasan.so.8.* | sed 's,^.*liba,liba,'`' )' > libasan.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libasan.so.8.* | sed 's,^.*liba,liba,'`' )' > 64/libasan.so mv ../../../../lib64/libasan_preinit.o 64/libasan_preinit.o %endif %if %{build_libubsan} @@ -1712,8 +1704,8 @@ ln -sf ../`echo ../../../../lib64/libgfortran.so.5.* | sed s~/../lib64/~/~` 32/l ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.19.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.19.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.20.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.20.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -1722,10 +1714,10 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libquadmath.so.0.* | sed ' %endif %if %{build_d} rm -f libgdruntime.so libgphobos.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgdruntime.so.2.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgdruntime.so.2.* | sed 's,^.*libg,libg,'`' )' > 32/libgdruntime.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgphobos.so.2.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgphobos.so.2.* | sed 's,^.*libg,libg,'`' )' > 32/libgphobos.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgdruntime.so.3.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgdruntime.so.3.* | sed 's,^.*libg,libg,'`' )' > 32/libgdruntime.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgphobos.so.3.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgphobos.so.3.* | sed 's,^.*libg,libg,'`' )' > 32/libgphobos.so %endif %if %{build_libitm} rm -f libitm.so @@ -1739,8 +1731,8 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libatomic.so.1.* | sed 's, %endif %if %{build_libasan} rm -f libasan.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libasan.so.6.* | sed 's,^.*liba,liba,'`' )' > libasan.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libasan.so.6.* | sed 's,^.*liba,liba,'`' )' > 32/libasan.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libasan.so.8.* | sed 's,^.*liba,liba,'`' )' > libasan.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libasan.so.8.* | sed 's,^.*liba,liba,'`' )' > 32/libasan.so mv ../../../../lib/libasan_preinit.o 32/libasan_preinit.o %endif %if %{build_libubsan} @@ -1877,8 +1869,8 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libcc1.so.0.* chmod 755 %{buildroot}%{_prefix}/%{_lib}/libquadmath.so.0.* %endif %if %{build_d} -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgdruntime.so.2.* -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgphobos.so.2.* +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgdruntime.so.3.* +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgphobos.so.3.* %endif %if %{build_libitm} chmod 755 %{buildroot}%{_prefix}/%{_lib}/libitm.so.1.* @@ -1887,20 +1879,20 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libitm.so.1.* chmod 755 %{buildroot}%{_prefix}/%{_lib}/libatomic.so.1.* %endif %if %{build_libasan} -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libasan.so.6.* +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libasan.so.8.* %endif %if %{build_libubsan} chmod 755 %{buildroot}%{_prefix}/%{_lib}/libubsan.so.1.* %endif %if %{build_libtsan} -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libtsan.so.0.* +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libtsan.so.2.* %endif %if %{build_liblsan} chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.* %endif %if %{build_go} # Avoid stripping these libraries and binaries. -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.19.* +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.20.* chmod 644 %{buildroot}%{_prefix}/bin/go.gcc chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo @@ -2276,6 +2268,8 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/keylockerintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avxvnniintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mwaitintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512fp16intrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512fp16vlintrin.h %endif %ifarch ia64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ia64intrin.h @@ -2300,6 +2294,9 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/tmmintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/smmintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amo.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/nmmintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/immintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/x86gprintrin.h %endif %ifarch %{arm} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/unwind-arm-common.h @@ -2714,8 +2711,8 @@ end %doc rpm.doc/gdc/* %files -n libgphobos -%{_prefix}/%{_lib}/libgdruntime.so.2* -%{_prefix}/%{_lib}/libgphobos.so.2* +%{_prefix}/%{_lib}/libgdruntime.so.3* +%{_prefix}/%{_lib}/libgphobos.so.3* %doc rpm.doc/libphobos/* %files -n libgphobos-static @@ -2920,7 +2917,7 @@ end %if %{build_libasan} %files -n libasan -%{_prefix}/%{_lib}/libasan.so.6* +%{_prefix}/%{_lib}/libasan.so.8* %files -n libasan-static %dir %{_prefix}/lib/gcc @@ -2968,7 +2965,7 @@ end %if %{build_libtsan} %files -n libtsan -%{_prefix}/%{_lib}/libtsan.so.0* +%{_prefix}/%{_lib}/libtsan.so.2* %files -n libtsan-static %dir %{_prefix}/lib/gcc @@ -3040,7 +3037,7 @@ end %doc rpm.doc/go/* %files -n libgo -%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.19* +%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.20* %doc rpm.doc/libgo/* %files -n libgo-devel @@ -3148,688 +3145,5 @@ end %endif %changelog -* Fri Dec 3 2021 Jakub Jelinek 11.2.1-7 -- update from releases/gcc-11-branch - - PRs ada/100486, c++/70796, c++/92746, c++/93286, c++/94490, c++/102642, - c++/102786, debug/101378, debug/103046, debug/103315, fortran/87711, - fortran/87851, fortran/97896, fortran/99061, fortran/99348, - fortran/102521, fortran/102685, fortran/102715, fortran/102745, - fortran/102816, fortran/102817, fortran/102917, fortran/103137, - fortran/103138, fortran/103392, gcov-profile/100520, ipa/102714, - ipa/102762, ipa/103052, ipa/103246, ipa/103267, libstdc++/96416, - libstdc++/98421, libstdc++/100117, libstdc++/100153, libstdc++/100748, - libstdc++/101571, libstdc++/101608, libstdc++/102894, - libstdc++/103022, libstdc++/103086, libstdc++/103133, - libstdc++/103240, libstdc++/103381, middle-end/64888, - middle-end/101480, middle-end/102431, middle-end/102518, - middle-end/103059, middle-end/103181, middle-end/103248, - middle-end/103384, preprocessor/103130, rtl-optimization/102356, - rtl-optimization/102842, target/101985, target/102976, target/102991, - target/103205, target/103274, target/103275, testsuite/102690, - tree-optimization/100393, tree-optimization/102139, - tree-optimization/102505, tree-optimization/102572, - tree-optimization/102788, tree-optimization/102789, - tree-optimization/102798, tree-optimization/102970, - tree-optimization/103192, tree-optimization/103204, - tree-optimization/103237, tree-optimization/103255, - tree-optimization/103435 -- fix up #__VA_OPT__ handling (PR preprocessor/103415) - -* Tue Oct 19 2021 Jakub Jelinek 11.2.1-6 -- update from releases/gcc-11-branch - - PRs target/100208, target/100316, target/102761 -- fix up libstdc++ docs build - -* Mon Oct 18 2021 Jakub Jelinek 11.2.1-5 -- update from releases/gcc-11-branch - - PRs fortran/102716, libstdc++/65816, libstdc++/90787, libstdc++/99876, - libstdc++/100187, libstdc++/100237, libstdc++/100249, - libstdc++/100287, libstdc++/100606, libstdc++/100863, - libstdc++/101483, libstdc++/101583, libstdc++/101589, - libstdc++/101599, libstdc++/101761, libstdc++/101870, - libstdc++/101923, libstdc++/101960, libstdc++/102048, - libstdc++/102074, libstdc++/102270, libstdc++/102280, - libstdc++/102425, libstdc++/102592, libstdc++/102667, - rtl-optimization/102627, target/100340, target/102588 -- add mwaitintrin.h on x86 (#2013860) -- disable LTO bootstrap on 32-bit arm, 6 days long build and counting - isn't acceptable, build boxes don't have enough memory and are too - slow - -* Tue Oct 12 2021 Jakub Jelinek 11.2.1-4 -- update from releases/gcc-11-branch - - PRs ada/101970, c++/60318, c++/64697, c++/88578, c++/91292, c++/95567, - c++/98216, c++/98486, c++/99904, c++/100495, c++/101344, c++/101592, - c++/101803, c++/101883, c++/102163, c++/102295, c++/102305, - c++/102412, c++/102454, c++/102496, c++/102535, c++/102547, - c++/102548, c++/102640, d/102185, d/102574, debug/102373, - debug/102441, fortran/46691, fortran/82314, fortran/85130, - fortran/87737, fortran/98490, fortran/99819, fortran/100950, - fortran/101327, fortran/101349, fortran/102113, fortran/102287, - fortran/102311, fortran/102366, fortran/102458, fortran/102520, - ipa/97565, libgomp/96661, libstdc++/100180, libstdc++/100285, - libstdc++/100286, libstdc++/100351, libstdc++/100682, - libstdc++/101965, middle-end/101824, middle-end/101949, - rtl-optimization/102306, sanitizer/102515, target/94630, target/97142, - target/100734, target/101471, target/101472, target/101492, - target/101549, target/101849, target/101934, target/102035, - target/102107, target/102115, target/102166, target/102222, - target/102224, target/102498, tree-optimization/101925, - tree-optimization/102046, tree-optimization/102124, - tree-optimization/102400, tree-optimization/102451, - tree-optimization/102622 -- remove the PR libstdc++/99341 workaround for Fedora 35 and later, - the std::once_flag::_M_activate() and std::once_flag::_M_finish(bool) - symbols (mangled as _ZNSt9once_flag11_M_activateEv and - _ZNSt9once_flag9_M_finishEb) aren't part of upstream GCC 11 and were - present only because not all packaged have been successfully rebuilt - (#1961541) - -* Mon Aug 23 2021 Jakub Jelinek 11.2.1-3 -- update from releases/gcc-11-branch - - PRs c++/100828, c++/101663, c++/101725, c++/101759, c/100150, c/101512, - d/96435, d/101127, d/101441, d/101490, d/101619, d/101640, d/101664, - debug/101905, fortran/99351, fortran/101084, fortran/101514, - fortran/101536, fortran/101564, gcov-profile/89961, - gcov-profile/100788, ipa/100600, ipa/101261, ipa/101726, - libstdc++/100139, libstdc++/101056, libstdc++/101258, - libstdc++/101510, libstdc++/101866, middle-end/101624, - preprocessor/101638, sanitizer/101749, target/94780, target/100952, - target/101132, target/101531, target/101723, testsuite/101969, - tree-optimization/101373, tree-optimization/101505, - tree-optimization/101868 -- add bundled(libbacktrace) and bundled(libffi) provides -- build target shared libraries with -Wl,-z,relro,-z,now -- improve generated code with extern thread_local constinit vars - with trivial dtors -- add support for C++20 #__VA_OPT__ -- fix up %%ldconfig_scriptlets - -* Fri Jul 30 2021 Jakub Jelinek 11.2.1-2 -- enable LTO profiledbootstrap on all arches, and also for RHEL9+ - -* Wed Jul 28 2021 Jakub Jelinek 11.2.1-1 -- update from releases/gcc-11-branch - - GCC 11.2 release - - PRs middle-end/101586, rtl-optimization/101562 -- enable LTO profiledbootstrap on x86_64, i?86, ppc64le and s390x for f35+ - -* Mon Jul 26 2021 Jakub Jelinek 11.1.1-7 -- update from releases/gcc-11-branch - - PRs ada/101094, analyzer/100244, analyzer/100615, analyzer/101082, - bootstrap/100246, c++/100138, c++/100752, c++/100838, c++/100918, - c++/101040, c++/101087, c++/101098, c++/101181, c++/101182, - c++/101194, c++/101210, c++/101233, c++/101247, c++/101361, - c++/101443, c++/101516, c++/86355, c++/95520, c++/97420, c++/98832, - c/101171, c/101176, d/101273, d/101282, debug/101266, driver/101383, - fortran/100227, fortran/100949, fortran/93524, go/101407, ipa/101066, - libstdc++/100387, libstdc++/101411, libstdc++/101427, - middle-end/100672, middle-end/101156, middle-end/101172, - middle-end/101291, middle-end/101423, middle-end/101535, - middle-end/94366, target/100152, target/100809, target/101023, - target/101129, target/101142, target/101175, target/101185, - target/101235, target/101377, target/101384, target/101395, - testsuite/100422, tree-optimization/100299, tree-optimization/100778, - tree-optimization/100923, tree-optimization/101014, - tree-optimization/101025, tree-optimization/101088, - tree-optimization/101105, tree-optimization/101148, - tree-optimization/101151, tree-optimization/101158, - tree-optimization/101173, tree-optimization/101223, - tree-optimization/101229, tree-optimization/101280, - tree-optimization/101394, tree-optimization/101445 - -* Wed Jun 23 2021 Jakub Jelinek 11.1.1-6 -- update from releases/gcc-11-branch - - PRs c++/100876, c++/100879, c++/101106, c/100619, c/100783, fortran/95501, - fortran/95502, fortran/100283, fortran/101123, inline-asm/100785, - libstdc++/91488, libstdc++/95833, libstdc++/100806, libstdc++/100940, - middle-end/100250, middle-end/100307, middle-end/100574, - middle-end/100684, middle-end/100732, middle-end/100876, - middle-end/101062, middle-end/101167, target/99842, target/99939, - target/100310, target/100777, target/100856, target/100871, - target/101016 - -* Thu Jun 17 2021 Jakub Jelinek 11.1.1-5 -- update from releases/gcc-11-branch - - PRs bootstrap/100731, c++/91706, c++/91859, c++/95719, c++/100065, - c++/100102, c++/100580, c++/100666, c++/100796, c++/100797, - c++/100862, c++/100946, c++/100963, c++/101029, c++/101078, c/100902, - c/100920, d/100882, d/100935, d/100964, d/100967, d/100999, - debug/100852, fortran/82376, fortran/98301, fortran/99839, - fortran/100965, ipa/100791, libstdc++/98842, libstdc++/100475, - libstdc++/100577, libstdc++/100631, libstdc++/100639, - libstdc++/100676, libstdc++/100690, libstdc++/100768, - libstdc++/100770, libstdc++/100824, libstdc++/100833, - libstdc++/100889, libstdc++/100894, libstdc++/100900, - libstdc++/100982, libstdc++/101034, libstdc++/101055, - middle-end/100576, middle-end/100898, middle-end/101009, - preprocessor/100646, rtl-optimization/100342, rtl-optimization/100590, - rtl-optimization/101008, target/100333, target/100885, target/100887, - target/101046, testsuite/100750, tree-optimization/100934, - tree-optimization/100981 - -* Mon Jun 14 2021 Florian Weimer 11.1.1-4 -- NVR bump to enable rebuild in side tag - -* 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, - ipa/100308, libgomp/100352, libstdc++/99006, libstdc++/99453, - libstdc++/100259, libstdc++/100298, libstdc++/100384, - rtl-optimization/84878, rtl-optimization/100225, - rtl-optimization/100230, rtl-optimization/100263, - rtl-optimization/100411, target/99988, target/100217, target/100232, - target/100236, target/100270, target/100305, target/100311, - target/100375, target/100402, tree-optimization/96513, - tree-optimization/100253, tree-optimization/100278, - tree-optimization/100329, tree-optimization/100414 -- fix build with removed linux/cyclades.h header (PR sanitizer/100379) -- fix up mausezahn miscompilation (#1958887, PR tree-optimization/100566) - -* Wed Apr 28 2021 Jakub Jelinek 11.1.1-1 -- update from releases/gcc-11-branch - - GCC 11.1 release - - PRs c++/93383, c++/95291, c++/96380, c++/99200, c++/99683, c++/100161, - debug/100255, fortran/100154, fortran/100218, libstdc++/100290, - rtl-optimization/100254, target/98952, target/100200, - tree-optimization/100239 -- fix ICE in aarch64_add_offset_1_temporaries (PR target/100302) - -* Fri Apr 23 2021 Jakub Jelinek 11.0.1-0.7 -- update from trunk and releases/gcc-11 branch - - GCC 11.1-rc2 - - PRs libstdc++/100179, target/100182 - -* Thu Apr 22 2021 Jakub Jelinek 11.0.1-0.6 -- update from trunk and releases/gcc-11 branch - - GCC 11.1-rc1 - - PRs ada/99360, c++/97536, c/100143, d/98058, d/98457, d/98494, d/98584, - d/99794, demangler/100177, fortran/100110, libstdc++/95983, - libstdc++/100146, libstdc++/100164, preprocessor/100142, - rtl-optimization/99927, target/100108, testsuite/100176, - tree-optimization/100081 -- fix a cprop -fcompare-debug bug (PR rtl-optimization/100148) - -* Sun Apr 18 2021 Jakub Jelinek 11.0.1-0.5 -- update from trunk - - PRs analyzer/98599, analyzer/99042, analyzer/99212, analyzer/99774, - analyzer/99886, analyzer/99906, analyzer/100011, c++/41723, c++/49951, - c++/52202, c++/52625, c++/58123, c++/80456, c++/83476, c++/88742, - c++/90215, c++/90479, c++/90674, c++/91241, c++/91849, c++/91933, - c++/92918, c++/93085, c++/93295, c++/93314, c++/93867, c++/94529, - c++/95317, c++/95486, c++/95870, c++/96311, c++/96673, c++/96873, - c++/97121, c++/97134, c++/97679, c++/97974, c++/98440, c++/98800, - c++/98852, c++/99008, c++/99066, c++/99118, c++/99180, c++/99201, - c++/99380, c++/99478, c++/99700, c++/99803, c++/99806, c++/99833, - c++/99844, c++/99850, c++/99859, c++/99874, c++/99885, c++/99899, - c++/99901, c++/99961, c++/99994, c++/100006, c++/100032, c++/100054, - c++/100078, c++/100079, c++/100091, c++/100101, c++/100111, c/98852, - c/99420, c/99972, c/99990, d/99812, d/99914, d/99917, debug/99830, - fortran/63797, fortran/99307, fortran/99817, fortran/100018, - fortran/100094, jit/100096, libfortran/78314, libgomp/99984, - libstdc++/96657, libstdc++/99402, libstdc++/99433, libstdc++/99805, - libstdc++/99985, libstdc++/99995, libstdc++/100044, libstdc++/100060, - lto/98599, lto/99849, lto/99857, middle-end/55288, middle-end/84877, - middle-end/84991, middle-end/84992, middle-end/86058, - middle-end/90779, middle-end/98088, middle-end/99883, - middle-end/99989, preprocessor/99446, rtl-optimization/98601, - rtl-optimization/98689, rtl-optimization/99596, - rtl-optimization/99905, rtl-optimization/99929, - rtl-optimization/100066, sanitizer/99877, sanitizer/100114, - target/87763, target/99246, target/99647, target/99648, target/99748, - target/99767, target/99781, target/99872, target/100028, - target/100048, target/100056, target/100067, target/100075, - testsuite/99955, testsuite/100071, testsuite/100073, - tree-optimization/82800, tree-optimization/97513, - tree-optimization/98736, tree-optimization/99873, - tree-optimization/99880, tree-optimization/99924, - tree-optimization/99947, tree-optimization/99954, - tree-optimization/100053 -- for %%{rhel} == 9, default to -march=z14 -mtune=z15 on s390x and - to -mcpu=power9 -mtune=power9 on ppc64le - -* Mon Apr 5 2021 Jakub Jelinek 11.0.1-0.4 -- update from trunk - - PRs ada/99802, analyzer/93695, analyzer/99044, analyzer/99716, - analyzer/99771, bootstrap/98860, c++/90664, c++/91217, c++/91416, - c++/94751, c++/97900, c++/97938, c++/98352, c++/99331, c++/99445, - c++/99565, c++/99583, c++/99584, c++/99586, c++/99643, c++/99672, - c++/99705, c++/99745, c++/99790, c++/99815, c++/99831, c++/99869, - d/91595, d/99691, debug/99334, fortran/99369, fortran/99602, - fortran/99651, fortran/99818, fortran/99840, ipa/98265, ipa/99122, - ipa/99466, ipa/99751, libstdc++/99533, lto/99447, middle-end/65182, - rtl-optimization/97141, rtl-optimization/98726, - rtl-optimization/99863, target/96974, target/97653, target/98119, - target/98136, target/98209, target/99037, target/99133, target/99216, - target/99555, target/99718, target/99724, target/99727, target/99744, - target/99753, target/99766, target/99773, target/99786, target/99808, - target/99813, target/99820, target/99822, testsuite/98125, - tree-optimization/48483, tree-optimization/55060, - tree-optimization/59970, tree-optimization/61112, - tree-optimization/61677, tree-optimization/61869, - tree-optimization/96573, tree-optimization/96974, - tree-optimization/97009, tree-optimization/98268, - tree-optimization/99726, tree-optimization/99746, - tree-optimization/99777, tree-optimization/99807, - tree-optimization/99824, tree-optimization/99825, - tree-optimization/99856, tree-optimization/99863, - tree-optimization/99882 - -* Wed Mar 24 2021 Jakub Jelinek 11.0.1-0.3 -- update from trunk - - PRs analyzer/99614, c++/99239, c++/99283, c++/99318, c++/99425, c++/99456, - c++/99480, c++/99687, c/99588, fortran/93660, fortran/99688, - rtl-optimization/99680, target/97252, target/97926, target/98914, - target/99540, target/99581, target/99652, target/99660, target/99661, - target/99663, target/99679, target/99702, target/99704, target/99733, - tree-optimization/99296, tree-optimization/99656, - tree-optimization/99694, tree-optimization/99721 - -* Fri Mar 19 2021 Jakub Jelinek 11.0.1-0.2 -- update from trunk - - PRs c++/90448, c++/96268, c++/96749, c++/97973, c++/98480, c++/98704, - c++/99047, c++/99108, c++/99238, c++/99248, c++/99285, c++/99423, - c++/99436, c++/99459, c++/99472, c++/99496, c++/99500, c++/99507, - c++/99508, c++/99509, c++/99528, c++/99601, c++/99613, c++/99617, - fortran/49278, fortran/96983, fortran/97927, fortran/98858, - fortran/99125, fortran/99205, fortran/99345, fortran/99514, - fortran/99545, ipa/99517, libstdc++/99172, libstdc++/99341, - libstdc++/99413, libstdc++/99536, libstdc++/99537, middle-end/97631, - middle-end/98266, middle-end/99502, middle-end/99641, objc++/49070, - sanitizer/98920, target/98092, target/98959, target/99070, - target/99094, target/99102, target/99422, target/99437, target/99454, - target/99463, target/99464, target/99492, target/99504, target/99542, - target/99563, target/99592, target/99600, testsuite/97680, - testsuite/98245, testsuite/99292, testsuite/99498, testsuite/99626, - testsuite/99636, tree-optimization/98834, tree-optimization/99305, - tree-optimization/99489, tree-optimization/99510, - tree-optimization/99523, tree-optimization/99544 - - fix ARM ICE in neon_output_shift_immediate (#1922599, PR target/99593) -- avoid false positive aarch64 -Wpsabi notes in some cases (PR target/91710) -- fix a -fcompare-debug failure caused by C FE bug (PR debug/99230) -- fix up -gdwarf-5 -gsplit-dwarf ranges handling (PR debug/99490) -- fix up handling of > 64 bit constants in dwarf2out (PR debug/99562, - PR debug/66728) -- reject invalid C++ structured bindings that need reference to void - (PR c++/99650) -- include private isl 0.18 in the package instead of relying on old - distro version - -* Sun Mar 7 2021 Jakub Jelinek 11.0.1-0.1 -- update from trunk - - PRs ada/98996, ada/99020, ada/99095, ada/99264, analyzer/96374, - analyzer/99193, bootstrap/92002, bootstrap/98590, c++/82959, - c++/88146, c++/90333, c++/94521, c++/95451, c++/95615, c++/95616, - c++/95675, c++/95822, c++/96078, c++/96330, c++/96443, c++/96474, - c++/96960, c++/97034, c++/97587, c++/98118, c++/98318, c++/98810, - c++/98990, c++/99009, c++/99103, c++/99120, c++/99166, c++/99170, - c++/99176, c++/99213, c++/99245, c++/99251, c++/99287, c++/99294, - c++/99344, c++/99362, c++/99365, c++/99374, c++/99377, c++/99389, - c/99137, c/99275, c/99304, c/99323, c/99324, c/99325, c/99363, - d/99337, debug/66668, debug/99090, debug/99319, fortran/57871, - fortran/99300, fortran/99303, fortran/99355, gcov-profile/97461, - gcov-profile/99105, gcov-profile/99385, gcov-profile/99406, ipa/98078, - ipa/98338, libbacktrace/98818, libfortran/81986, libfortran/99218, - libgomp/98738, libstdc++/99265, libstdc++/99270, libstdc++/99301, - libstdc++/99382, libstdc++/99396, middle-end/93235, middle-end/94655, - middle-end/95757, middle-end/96963, middle-end/97172, - middle-end/97855, middle-end/99276, middle-end/99281, - middle-end/99295, middle-end/99322, other/99288, - rtl-optimization/99376, target/44107, target/48097, target/95798, - target/98996, target/99085, target/99234, target/99271, target/99279, - target/99313, target/99321, target/99381, testsuite/99233, - tree-optimization/80635, tree-optimization/99253 -- fix debug info for __fp16 constants (PR debug/99388) - -* Thu Feb 25 2021 Jakub Jelinek 11.0.0-0.20 -- update from trunk - - PRs analyzer/94596, analyzer/98969, analyzer/99196, c++/94034, c++/94546, - c++/95468, c++/95888, c++/96251, c++/96926, c++/97246, c++/97582, - c++/97742, c++/98718, c++/98741, c++/98988, c++/99023, c++/99030, - c++/99031, c++/99033, c++/99035, c++/99039, c++/99040, c++/99062, - c++/99063, c++/99071, c++/99072, c++/99074, c++/99116, c++/99132, - c++/99150, c++/99153, c++/99174, c++/99208, c/97172, c/99055, c/99136, - c/99224, debug/96997, debug/98755, fortran/98342, fortran/98686, - fortran/98897, fortran/98979, fortran/99010, fortran/99027, - fortran/99043, fortran/99060, fortran/99111, fortran/99124, - fortran/99146, fortran/99171, fortran/99206, fortran/99226, - inline-asm/98096, inline-asm/99123, ipa/97346, ipa/99003, ipa/99029, - ipa/99034, jit/99126, libfortran/95647, libfortran/98825, - libgcc/99236, libstdc++/88881, libstdc++/97549, libstdc++/98389, - libstdc++/99058, libstdc++/99077, libstdc++/99096, libstdc++/99181, - libstdc++/99261, middle-end/38474, middle-end/99007, middle-end/99109, - middle-end/99122, preprocessor/96391, rtl-optimization/96264, - rtl-optimization/98439, rtl-optimization/98791, - rtl-optimization/98872, rtl-optimization/99054, sanitizer/99106, - sanitizer/99168, target/85074, target/96166, target/97417, - target/98491, target/98657, target/98931, target/98998, target/99025, - target/99041, target/99100, target/99104, target/99113, target/99134, - target/99157, testsuite/99173, translation/99167, - tree-optimization/38474, tree-optimization/92879, - tree-optimization/98772, tree-optimization/99002, - tree-optimization/99024, tree-optimization/99026, - tree-optimization/99079, tree-optimization/99142, - tree-optimization/99149, tree-optimization/99165, - tree-optimization/99204, tree-optimization/99220, - tree-optimization/99225 - -* Wed Feb 10 2021 Jakub Jelinek 11.0.0-0.19 -- update from trunk - - PRs analyzer/93355, analyzer/96374, analyzer/98575, analyzer/98918, - c++/20408, c++/84494, c++/90926, c++/95192, c++/96199, c++/96462, - c++/96905, c++/97804, c++/97878, c++/98295, c++/98326, c++/98355, - c++/98531, c++/98570, c++/98717, c++/98802, c++/98835, c++/98899, - c++/98926, c++/98929, c++/98944, c++/98947, c++/98951, c++/98994, - c/97882, c/97932, d/98910, d/98921, debug/98656, driver/98943, - fortran/91862, fortran/98913, libstdc++/70303, libstdc++/99021, - lto/96591, lto/98912, lto/98971, middle-end/97172, middle-end/97487, - middle-end/97971, middle-end/98465, middle-end/98974, - middle-end/99004, preprocessor/98882, rtl-optimization/96015, - target/97510, target/98172, target/98537, target/98743, target/98957, - testsuite/98243, testsuite/98325, tree-optimization/97960, - tree-optimization/98287, tree-optimization/98499, - tree-optimization/98848, tree-optimization/98855, - tree-optimization/98863, tree-optimization/98928, - tree-optimization/98937, tree-optimization/99017 - -* Sat Jan 30 2021 Jakub Jelinek 11.0.0-0.18 -- update from trunk - - PRs ada/98228, bootstrap/98839, c++/33661, c++/88548, c++/94775, - c++/96137, c++/97474, c++/97566, c++/97874, c++/98463, c++/98646, - c++/98770, c++/98841, c++/98843, c++/98847, d/98806, debug/98331, - debug/98811, fortran/67539, fortran/70070, fortran/86470, - fortran/93924, fortran/93925, fortran/96843, fortran/98472, - fortran/98517, libstdc++/66414, lto/85574, middle-end/98726, - middle-end/98807, rtl-optimization/80960, rtl-optimization/97684, - rtl-optimization/98144, rtl-optimization/98863, sanitizer/98828, - target/97701, target/98730, target/98799, target/98827, target/98833, - target/98849, target/98853, testsuite/98771, testsuite/98870, - tree-optimization/97260, tree-optimization/97627, - tree-optimization/98854, tree-optimization/98866 - -* Sat Jan 23 2021 Jakub Jelinek 11.0.0-0.17 -- update from trunk - - PRs ada/98740, c++/41437, c++/58993, c++/71879, c++/82613, c++/95434, - c++/96623, c++/97399, c++/97966, c++/98333, c++/98530, c++/98545, - c++/98624, c++/98659, c++/98744, fortran/96320, fortran/98476, - fortran/98565, fortran/98757, fortran/98763, gcov-profile/98739, - ipa/97673, ipa/98330, ipa/98690, middle-end/98664, middle-end/98773, - middle-end/98793, rtl-optimization/92294, rtl-optimization/98694, - rtl-optimization/98722, rtl-optimization/98777, sanitizer/95693, - target/79251, target/96372, target/96891, target/98065, target/98093, - target/98348, target/98636, testsuite/97301, testsuite/98241, - testsuite/98795, tree-optimization/47059, tree-optimization/90248, - tree-optimization/96674, tree-optimization/98255, - tree-optimization/98535, tree-optimization/98758, - tree-optimization/98766, tree-optimization/98786 - - ensure for empty CUs -gdwarf-5 emits at least the required 0th directory - and filename entry in the .debug_line section (#1919243, PR debug/98796) -- fix aarch64 bug where emitted ubfix insn can't be assembled - (PR target/98681) - -* Wed Jan 20 2021 Jakub Jelinek 11.0.0-0.16 -- fix DWARF5 -g -flto -ffat-lto-objects, so that LTO sections can be stripped - off later (PR debug/98765) -- fix GOMP_task caller stack corruption on s390x -- libgccjit DWARF5 fixes (PR debug/98751) - -* Tue Jan 19 2021 Jakub Jelinek 11.0.0-0.15 -- update from trunk - - PRs debug/98708, debug/98716, ipa/98222, libstdc++/98725, target/97847, - testsuite/97299, testsuite/97494, testsuite/97987, - tree-optimization/96271 - - fix miscompilation of portable signed multiplication overflow check - (#1916576, PR tree-optimization/98727) - - switch to DWARF 5 by default -- fix PRs c++/98672, c++/98687, c++/98742, middle-end/98638, - tree-optimization/98721 - -* Sat Jan 16 2021 Jakub Jelinek 11.0.0-0.14 -- update from trunk - - PRs ada/98595, analyzer/98679, bootstrap/98696, c++/63707, c++/98231, - c++/98372, c++/98538, c++/98591, c++/98626, c++/98642, fortran/98661, - ipa/98652, jit/98586, libgomp/65099, libstdc++/98466, libstdc++/98471, - preprocessor/95253, target/70454, target/71233, target/88836, - target/95905, target/96938, target/98667, target/98671, target/98676, - testsuite/96098, testsuite/96147, tree-optimization/92645, - tree-optimization/96376, tree-optimization/96669, - tree-optimization/96681, tree-optimization/96688, - tree-optimization/96691, tree-optimization/98455, - tree-optimization/98597, tree-optimization/98640, - tree-optimization/98674, tree-optimization/98685 - - fix up pmovzx permutation SSE4.1 patterns (#1916240, PR target/98670) - -* Wed Jan 13 2021 Jakub Jelinek 11.0.0-0.13 -- update from trunk - - PRs analyzer/98628, c++/97284, c++/98481, c++/98556, c++/98611, c++/98620, - c/98592, debug/97714, jit/98615, libstdc++/98613, - rtl-optimization/98603, target/97875, target/97969, target/98612, - testsuite/98225, testsuite/98602, tree-optimization/91403, - tree-optimization/95731, tree-optimization/95852, - tree-optimization/95867, tree-optimization/98526, - tree-optimization/98550, tree-optimization/98629 - - fix ICEs in print_mem_ref (#1915400, #1915437, #1915781, PR c/98597) - -* Sat Jan 9 2021 Jakub Jelinek 11.0.0-0.12 -- update from trunk - - PRs analyzer/97072, analyzer/97074, analyzer/98073, analyzer/98223, - analyzer/98293, analyzer/98564, analyzer/98580, bootstrap/98324, - bootstrap/98506, c++/82099, c++/95768, c++/96045, c++/96504, - c++/97597, c++/98206, c++/98305, c++/98316, c++/98329, c++/98332, - c++/98353, c++/98413, c++/98441, c++/98469, c++/98515, c++/98551, - c/98029, d/98427, fortran/83118, fortran/93701, fortran/93794, - fortran/93833, fortran/97612, fortran/97694, fortran/97723, - fortran/98022, fortran/98458, libstdc++/98384, middle-end/98160, - middle-end/98578, other/98437, rtl-optimization/97144, - rtl-optimization/97978, rtl-optimization/98214, - rtl-optimization/98334, rtl-optimization/98403, target/89057, - target/96793, target/97269, target/98461, target/98482, target/98495, - target/98521, target/98522, target/98567, target/98585, - testsuite/98489, testsuite/98566, tree-optimization/56719, - tree-optimization/94785, tree-optimization/94802, - tree-optimization/94994, tree-optimization/95401, - tree-optimization/95582, tree-optimization/95771, - tree-optimization/96239, tree-optimization/96782, - tree-optimization/96928, tree-optimization/96930, - tree-optimization/98282, tree-optimization/98291, - tree-optimization/98302, tree-optimization/98308, - tree-optimization/98371, tree-optimization/98381, - tree-optimization/98393, tree-optimization/98428, - tree-optimization/98464, tree-optimization/98474, - tree-optimization/98513, tree-optimization/98514, - tree-optimization/98516, tree-optimization/98544, - tree-optimization/98560, tree-optimization/98568 - -* Wed Dec 23 2020 Jakub Jelinek 11.0.0-0.11 -- update from trunk - - PRs bootstrap/98300, bootstrap/98380, bootstrap/98412, c++/67343, - c++/93480, c++/96840, c++/98340, c++/98343, c++/98353, c++/98383, - c/98047, c/98260, d/98067, fortran/83118, fortran/92587, - fortran/96012, fortran/98284, fortran/98307, go/98402, - libstdc++/46447, libstdc++/93151, libstdc++/96083, libstdc++/98319, - libstdc++/98344, libstdc++/98370, libstdc++/98374, libstdc++/98377, - middle-end/98366, other/98400, other/98409, rtl-optimization/98271, - rtl-optimization/98276, rtl-optimization/98289, - rtl-optimization/98347, sanitizer/97868, target/96793, target/98146, - target/98177, target/98280, tree-optimization/96239, - tree-optimization/97750, tree-optimization/98272, - tree-optimization/98279, tree-optimization/98378, - tree-optimization/98407 - -* Thu Dec 17 2020 Jakub Jelinek 11.0.0-0.10 -- apply workaround for profiledbootstrap x86_64 failure -- put g++-mapper-server into the right directory - -* Wed Dec 16 2020 Jakub Jelinek 11.0.0-0.8 -- update from trunk - - PRs ada/98230, bootstrap/98188, c++/57111, c++/59238, c++/68451, - c++/78173, c++/91506, c++/93083, c++/96299, c++/97093, c++/97517, - c++/98043, c++/98103, c++/98122, c++/98126, c++/98130, c++/98187, - c++/98193, c/97981, c/98200, d/98277, fortran/90207, fortran/98016, - fortran/98022, gcov-profile/98273, libstdc++/98108, libstdc++/98226, - lto/98275, middle-end/94600, middle-end/98160, middle-end/98166, - middle-end/98183, middle-end/98190, middle-end/98205, - middle-end/98264, rtl-optimization/97092, rtl-optimization/97421, - rtl-optimization/98212, rtl-optimization/98229, sanitizer/98204, - target/58901, target/66791, target/92469, target/94440, target/95294, - target/96226, target/96470, target/97865, target/97872, target/98100, - target/98147, target/98152, target/98161, target/98162, target/98219, - target/98274, testsuite/95900, testsuite/98123, testsuite/98156, - testsuite/98239, testsuite/98240, testsuite/98242, testsuite/98244, - tree-optimization/95582, tree-optimization/96094, - tree-optimization/96232, tree-optimization/96272, - tree-optimization/96344, tree-optimization/96685, - tree-optimization/97559, tree-optimization/97929, - tree-optimization/98069, tree-optimization/98113, - tree-optimization/98117, tree-optimization/98137, - tree-optimization/98169, tree-optimization/98174, - tree-optimization/98180, tree-optimization/98182, - tree-optimization/98191, tree-optimization/98192, - tree-optimization/98199, tree-optimization/98211, - tree-optimization/98213, tree-optimization/98235, - tree-optimization/98256 - - C++20 modules support - - fix up __patchable_function_entries handling when gcc is configured - against recent binutils (#1907945) -- fix up handling of non-memory VIEW_CONVERT_EXPRs in PRE - (PR tree-optimization/98282) - -* Fri Dec 4 2020 Jakub Jelinek 11.0.0-0.7 -- update from trunk - - PRs bootstrap/97983, c++/80780, c++/90629, c++/93093, c++/97187, - c++/97947, c++/97975, c++/97993, c++/98019, c++/98054, c++/98072, - c++/98104, c++/98107, c++/98115, c++/98116, c/65455, c/92935, c/97880, - c/98087, d/87788, d/87818, d/98025, debug/97989, fortran/95342, - fortran/98010, fortran/98011, fortran/98013, ipa/88702, ipa/98057, - ipa/98075, jit/97867, libgcc/97543, libgcc/97643, libstdc++/65480, - libstdc++/68735, libstdc++/93121, libstdc++/98001, libstdc++/98003, - middle-end/89428, middle-end/92936, middle-end/92940, - middle-end/93195, middle-end/93197, middle-end/94527, - middle-end/97373, middle-end/97595, middle-end/98070, - middle-end/98082, middle-end/98099, other/98027, plugins/98059, - preprocessor/97602, rtl-optimization/97459, rtl-optimization/97777, - rtl-optimization/97954, rtl-optimization/98037, target/96607, - target/96906, target/97642, target/97770, target/97939, target/98063, - target/98079, target/98086, testsuite/98002, testsuite/98036, - testsuite/98085, tree-optimization/14799, tree-optimization/88702, - tree-optimization/96679, tree-optimization/96708, - tree-optimization/97630, tree-optimization/97953, - tree-optimization/97979, tree-optimization/97997, - tree-optimization/98024, tree-optimization/98048, - tree-optimization/98064, tree-optimization/98066, - tree-optimization/98084 - -* Thu Nov 26 2020 Jakub Jelinek 11.0.0-0.6 -- update from trunk - - PRs bootstrap/94982, bootstrap/97622, bootstrap/97933, c++/97899, c/97958, - fortran/85796, libstdc++/67791, libstdc++/97935, libstdc++/97936, - libstdc++/97944, middle-end/97943, middle-end/97956, - rtl-optimization/95862, target/91816, target/97534, target/97950, - tree-optimization/96929, tree-optimization/97849, - tree-optimization/97964 - -* Tue Nov 24 2020 Jakub Jelinek 11.0.0-0.5 -- update from trunk - - PRs c++/94695, c++/97427, c++/97839, c++/97846, c++/97881, c++/97904, - c/95630, d/97889, libstdc++/97948, tree-optimization/95853 - -* Sat Nov 21 2020 Jakub Jelinek 11.0.0-0.4 -- update from trunk - - PRs ada/97805, ada/97859, analyzer/97668, analyzer/97893, bootstrap/57076, - bootstrap/97666, bootstrap/97857, c++/25814, c++/52830, c++/63287, - c++/67453, c++/78209, c++/81660, c++/87765, c++/88115, c++/88982, - c++/89565, c++/90799, c++/91318, c++/93107, c++/93907, c++/95808, - c++/97388, c++/97412, c++/97453, c++/97479, c++/97518, c++/97523, - c++/97632, c++/97663, c++/97670, c++/97675, c++/97762, c++/97790, - c++/97871, c++/97877, c++/97895, c++/97905, c++/97918, c/90628, - c/97748, c/97860, d/97644, d/97842, d/97843, debug/97060, debug/97599, - debug/97718, driver/97574, fortran/90111, fortran/92793, - fortran/94358, fortran/95847, fortran/97652, fortran/97655, - fortran/97768, fortran/97782, ipa/97578, ipa/97660, ipa/97695, - ipa/97698, ipa/97816, jit/87291, libstdc++/55394, libstdc++/66146, - libstdc++/83938, libstdc++/84323, libstdc++/88101, libstdc++/92285, - libstdc++/92546, libstdc++/93421, libstdc++/93456, libstdc++/94971, - libstdc++/95989, libstdc++/96269, libstdc++/96958, libstdc++/97415, - libstdc++/97600, libstdc++/97613, libstdc++/97719, libstdc++/97729, - libstdc++/97731, libstdc++/97758, libstdc++/97798, libstdc++/97828, - libstdc++/97869, lto/97290, lto/97508, middle-end/85811, - middle-end/95673, middle-end/97267, middle-end/97556, - middle-end/97579, middle-end/97840, middle-end/97862, - middle-end/97879, objc/77404, objc/90707, objc/97854, other/97911, - pch/86674, pch/97593, preprocessor/97858, rtl-optimization/92180, - rtl-optimization/97705, sanitizer/95634, target/31799, target/85486, - target/91489, target/93449, target/96307, target/96770, target/96791, - target/96933, target/96967, target/96998, target/97140, target/97194, - target/97205, target/97326, target/97528, target/97532, target/97540, - target/97638, target/97682, target/97685, target/97715, target/97726, - target/97727, target/97730, target/97870, target/97873, - testsuite/80219, testsuite/85303, testsuite/97117, testsuite/97688, - testsuite/97788, testsuite/97797, testsuite/97803, - tree-optimization/80928, tree-optimization/83072, - tree-optimization/91029, tree-optimization/93781, - tree-optimization/94406, tree-optimization/96671, - tree-optimization/96789, tree-optimization/97223, - tree-optimization/97424, tree-optimization/97558, - tree-optimization/97609, tree-optimization/97623, - tree-optimization/97626, tree-optimization/97633, - tree-optimization/97650, tree-optimization/97678, - tree-optimization/97690, tree-optimization/97693, - tree-optimization/97706, tree-optimization/97709, - tree-optimization/97721, tree-optimization/97725, - tree-optimization/97732, tree-optimization/97733, - tree-optimization/97736, tree-optimization/97737, - tree-optimization/97741, tree-optimization/97746, - tree-optimization/97753, tree-optimization/97760, - tree-optimization/97761, tree-optimization/97764, - tree-optimization/97765, tree-optimization/97767, - tree-optimization/97769, tree-optimization/97780, - tree-optimization/97806, tree-optimization/97812, - tree-optimization/97830, tree-optimization/97835, - tree-optimization/97838, tree-optimization/97886, - tree-optimization/97888, tree-optimization/97897, - tree-optimization/97901 -- add BuildRequires: make and Requires: make, the latter for -flto reasons - -* Thu Oct 29 2020 Jakub Jelinek 11.0.0-0.3 -- update from trunk - - PRs ada/97504, analyzer/96608, analyzer/97489, analyzer/97514, - analyzer/97568, analyzer/97608, bootstrap/97451, c++/82239, c++/86773, - c++/91741, c++/94799, c++/95132, c++/96241, c++/96575, c++/96675, - c++/96742, c++/97328, c++/97438, c++/97511, c++/97573, c/94722, - c/97463, fortran/45516, fortran/97454, gcov-profile/97461, ipa/97445, - ipa/97576, ipa/97586, libstdc++/94268, libstdc++/95592, - libstdc++/95609, libstdc++/95917, libstdc++/96713, libstdc++/97512, - libstdc++/97570, lto/96680, lto/97524, middle-end/92942, - middle-end/97521, middle-end/97552, rtl-optimization/97249, - rtl-optimization/97439, rtl-optimization/97497, sanitizer/97414, - target/87767, target/95151, target/95458, target/97360, target/97502, - target/97506, target/97535, testsuite/81690, testsuite/97590, - tree-optimization/66552, tree-optimization/97164, - tree-optimization/97360, tree-optimization/97456, - tree-optimization/97457, tree-optimization/97466, - tree-optimization/97467, tree-optimization/97486, - tree-optimization/97488, tree-optimization/97496, - tree-optimization/97500, tree-optimization/97501, - tree-optimization/97503, tree-optimization/97505, - tree-optimization/97515, tree-optimization/97520, - tree-optimization/97538, tree-optimization/97539, - tree-optimization/97546, tree-optimization/97555, - tree-optimization/97560, tree-optimization/97567, - tree-optimization/97615 -- for ELN default to -march=x86-64-v2 for x86 64-bit compilation and - for s390x to -march=z13 -mtune=arch13 - -* Mon Oct 19 2020 Jakub Jelinek 11.0.0-0.2 +* Sat Jan 8 2022 Jakub Jelinek 12.0.0-0.3 - new package diff --git a/gcc11-Wno-format-security.patch b/gcc11-Wno-format-security.patch deleted file mode 100644 index 974ea44..0000000 --- a/gcc11-Wno-format-security.patch +++ /dev/null @@ -1,27 +0,0 @@ -2017-02-25 Jakub Jelinek - - * configure.ac: When adding -Wno-format, also add -Wno-format-security. - * configure: Regenerated. - ---- gcc/configure.ac.jj 2017-02-13 12:20:53.000000000 +0100 -+++ gcc/configure.ac 2017-02-25 12:42:32.859175403 +0100 -@@ -480,7 +480,7 @@ AC_ARG_ENABLE(build-format-warnings, - AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]), - [],[enable_build_format_warnings=yes]) - AS_IF([test $enable_build_format_warnings = no], -- [wf_opt=-Wno-format],[wf_opt=]) -+ [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=]) - ACX_PROG_CXX_WARNING_OPTS( - m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ], - [-Wcast-qual -Wno-error=format-diag $wf_opt])), ---- gcc/configure.jj 2017-02-13 12:20:52.000000000 +0100 -+++ gcc/configure 2017-02-25 12:42:50.041946391 +0100 -@@ -6647,7 +6647,7 @@ else - fi - - if test $enable_build_format_warnings = no; then : -- wf_opt=-Wno-format -+ wf_opt="-Wno-format -Wno-format-security" - else - wf_opt= - fi diff --git a/gcc11-foffload-default.patch b/gcc11-foffload-default.patch deleted file mode 100644 index d1aae64..0000000 --- a/gcc11-foffload-default.patch +++ /dev/null @@ -1,116 +0,0 @@ -2019-01-17 Jakub Jelinek - - * gcc.c (offload_targets_default): New variable. - (process_command): Set it if -foffload is defaulted. - (driver::maybe_putenv_OFFLOAD_TARGETS): Add OFFLOAD_TARGET_DEFAULT=1 - into environment if -foffload has been defaulted. - * lto-wrapper.c (OFFLOAD_TARGET_DEFAULT_ENV): Define. - (compile_offload_image): If OFFLOAD_TARGET_DEFAULT - is in the environment, don't fail if corresponding mkoffload - can't be found. - (compile_images_for_offload_targets): Likewise. Free and clear - offload_names if no valid offload is found. -libgomp/ - * target.c (gomp_load_plugin_for_device): If a plugin can't be - dlopened, assume it has no devices silently. - ---- gcc/gcc.c.jj 2017-01-17 10:28:40.000000000 +0100 -+++ gcc/gcc.c 2017-01-20 16:26:29.649962902 +0100 -@@ -319,6 +319,10 @@ static const char *spec_host_machine = D - - static char *offload_targets = NULL; - -+/* Set to true if -foffload has not been used and offload_targets -+ is set to the configured in default. */ -+static bool offload_targets_default; -+ - /* Nonzero if cross-compiling. - When -b is used, the value comes from the `specs' file. */ - -@@ -4828,7 +4832,10 @@ process_command (unsigned int decoded_op - /* If the user didn't specify any, default to all configured offload - targets. */ - if (ENABLE_OFFLOADING && offload_targets == NULL) -- handle_foffload_option (OFFLOAD_TARGETS); -+ { -+ handle_foffload_option (OFFLOAD_TARGETS); -+ offload_targets_default = true; -+ } - - /* Handle -gtoggle as it would later in toplev.c:process_options to - make the debug-level-gt spec function work as expected. */ -@@ -8494,6 +8501,8 @@ driver::maybe_putenv_OFFLOAD_TARGETS () - obstack_grow (&collect_obstack, offload_targets, - strlen (offload_targets) + 1); - xputenv (XOBFINISH (&collect_obstack, char *)); -+ if (offload_targets_default) -+ xputenv ("OFFLOAD_TARGET_DEFAULT=1"); - } - - free (offload_targets); ---- gcc/lto-wrapper.c.jj 2017-01-01 12:45:34.000000000 +0100 -+++ gcc/lto-wrapper.c 2017-01-20 16:34:18.294016997 +0100 -@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3. - /* Environment variable, used for passing the names of offload targets from GCC - driver to lto-wrapper. */ - #define OFFLOAD_TARGET_NAMES_ENV "OFFLOAD_TARGET_NAMES" -+#define OFFLOAD_TARGET_DEFAULT_ENV "OFFLOAD_TARGET_DEFAULT" - - /* By default there is no special suffix for target executables. */ - #ifdef TARGET_EXECUTABLE_SUFFIX -@@ -906,6 +907,12 @@ compile_offload_image (const char *targe - break; - } - -+ if (!compiler && getenv (OFFLOAD_TARGET_DEFAULT_ENV)) -+ { -+ free_array_of_ptrs ((void **) paths, n_paths); -+ return NULL; -+ } -+ - if (!compiler) - fatal_error (input_location, - "could not find %s in %s (consider using %<-B%>)", -@@ -975,6 +982,7 @@ compile_images_for_offload_targets (unsi - if (!target_names) - return; - unsigned num_targets = parse_env_var (target_names, &names, NULL); -+ int next_name_entry = 0; - - const char *compiler_path = getenv ("COMPILER_PATH"); - if (!compiler_path) -@@ -985,13 +993,19 @@ compile_images_for_offload_targets (unsi - offload_names = XCNEWVEC (char *, num_targets + 1); - for (unsigned i = 0; i < num_targets; i++) - { -- offload_names[i] -+ offload_names[next_name_entry] - = compile_offload_image (names[i], compiler_path, in_argc, in_argv, - compiler_opts, compiler_opt_count, - linker_opts, linker_opt_count); -- if (!offload_names[i]) -- fatal_error (input_location, -- "problem with building target image for %s", names[i]); -+ if (!offload_names[next_name_entry]) -+ continue; -+ next_name_entry++; -+ } -+ -+ if (next_name_entry == 0) -+ { -+ free (offload_names); -+ offload_names = NULL; - } - - out: ---- libgomp/target.c.jj 2017-01-01 12:45:52.000000000 +0100 -+++ libgomp/target.c 2017-01-20 20:12:13.756710875 +0100 -@@ -2356,7 +2356,7 @@ gomp_load_plugin_for_device (struct gomp - - void *plugin_handle = dlopen (plugin_name, RTLD_LAZY); - if (!plugin_handle) -- goto dl_fail; -+ return 0; - - /* Check if all required functions are available in the plugin and store - their handlers. None of the symbols can legitimately be NULL, diff --git a/gcc11-libgcc-link.patch b/gcc11-libgcc-link.patch deleted file mode 100644 index 8551934..0000000 --- a/gcc11-libgcc-link.patch +++ /dev/null @@ -1,57 +0,0 @@ -libgcc: Honor LDFLAGS_FOR_TARGET when linking libgcc_s - -When building gcc with some specific LDFLAGS_FOR_TARGET, e.g. -LDFLAGS_FOR_TARGET=-Wl,-z,relro,-z,now -those flags propagate info linking of target shared libraries, -e.g. lib{ubsan,tsan,stdc++,quadmath,objc,lsan,itm,gphobos,gdruntime,gomp,go,gfortran,atomic,asan}.so.* -but there is one important exception, libgcc_s.so.* linking ignores it. - -The following patch fixes that. - -Bootstrapped/regtested on x86_64-linux with LDFLAGS_FOR_TARGET=-Wl,-z,relro,-z,now -and verified that libgcc_s.so.* is BIND_NOW when it previously wasn't, and -without any LDFLAGS_FOR_TARGET on x86_64-linux and i686-linux. -There on x86_64-linux I've verified that the libgcc_s.so.1 linking command -line for -m64 is identical except for whitespace to one without the patch, -and for -m32 multilib $(LDFLAGS) actually do supply there an extra -m32 -that also repeats later in the @multilib_flags@, which should be harmless. - -2021-08-04 Jakub Jelinek - - * config/t-slibgcc (SHLIB_LINK): Add $(LDFLAGS). - * config/t-slibgcc-darwin (SHLIB_LINK): Likewise. - * config/t-slibgcc-vms (SHLIB_LINK): Likewise. - ---- libgcc/config/t-slibgcc -+++ libgcc/config/t-slibgcc -@@ -32,7 +32,7 @@ SHLIB_INSTALL_SOLINK = $(LN_S) $(SHLIB_SONAME) \ - $(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK) - - SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ -- $(SHLIB_LDFLAGS) \ -+ $(SHLIB_LDFLAGS) $(LDFLAGS) \ - -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \ - $(SHLIB_OBJS) $(SHLIB_LC) && \ - rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \ ---- libgcc/config/t-slibgcc-darwin -+++ libgcc/config/t-slibgcc-darwin -@@ -15,7 +15,7 @@ SHLIB_LC = -lc - # Note that this version is used for the loader, not the linker; the linker - # uses the stub versions named by the versioned members of $(INSTALL_FILES). - --SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -dynamiclib -nodefaultlibs \ -+SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) $(LDFLAGS) -dynamiclib -nodefaultlibs \ - -install_name @shlib_slibdir@/$(SHLIB_INSTALL_NAME) \ - -single_module -o $(SHLIB_DIR)/$(SHLIB_SONAME) \ - -Wl,-exported_symbols_list,$(SHLIB_MAP) \ ---- libgcc/config/t-slibgcc-vms -+++ libgcc/config/t-slibgcc-vms -@@ -22,7 +22,7 @@ SHLIB_LINK = \ - objdump --syms $(SHLIB_OBJS) | \ - $(SHLIB_SYMVEC) >> SYMVEC_$$$$.opt ; \ - echo "case_sensitive=NO" >> SYMVEC_$$$$.opt; \ -- $(CC) $(LIBGCC2_CFLAGS) -nodefaultlibs \ -+ $(CC) $(LIBGCC2_CFLAGS) $(LDFLAGS) -nodefaultlibs \ - -shared --for-linker=/noinform -o $(SHLIB_NAME) $(SHLIB_OBJS) \ - --for-linker=SYMVEC_$$$$.opt \ - --for-linker=gsmatch=equal,$(shlib_version) diff --git a/gcc11-pr101786.patch b/gcc11-pr101786.patch deleted file mode 100644 index 427c10a..0000000 --- a/gcc11-pr101786.patch +++ /dev/null @@ -1,66 +0,0 @@ -c++: Optimize constinit thread_local vars [PR101786] - -The paper that introduced constinit mentioned in rationale that constinit -can be used on externs as well and that it can be used to avoid the -thread_local initialization wrappers, because the standard requires that -if constinit is present on any declaration, it is also present on the -initialization declaration, even if it is in some other TU etc. - -There is a small problem though, we use the tls wrappers not just if -the thread_local variable needs dynamic initialization, but also when -it has static initialization, but non-trivial destructor, as the -"dynamic initialization" in that case needs to register the destructor. - -So, the following patch optimizes constinit thread_local vars only -if we can prove they will not have non-trivial destructors. That includes -the case where we have incomplete type where we don't know and need to -conservatively assume the type will have non-trivial destructor at the -initializing declaration side. - -2021-08-11 Jakub Jelinek - - PR c++/101786 - * decl2.c (var_defined_without_dynamic_init): Return true for - DECL_DECLARED_CONSTINIT_P with complete type and trivial destructor. - - * g++.dg/cpp2a/constinit16.C: New test. - ---- gcc/cp/decl2.c -+++ gcc/cp/decl2.c -@@ -3447,6 +3447,12 @@ set_guard (tree guard) - static bool - var_defined_without_dynamic_init (tree var) - { -+ /* constinit vars are guaranteed to not have dynamic initializer, -+ but still registering the destructor counts as dynamic initialization. */ -+ if (DECL_DECLARED_CONSTINIT_P (var) -+ && COMPLETE_TYPE_P (TREE_TYPE (var)) -+ && !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (var))) -+ return true; - /* If it's defined in another TU, we can't tell. */ - if (DECL_EXTERNAL (var)) - return false; ---- gcc/testsuite/g++.dg/cpp2a/constinit16.C -+++ gcc/testsuite/g++.dg/cpp2a/constinit16.C -@@ -0,0 +1,21 @@ -+// PR c++/101786 -+// { dg-do compile { target c++20 } } -+// { dg-add-options tls } -+// { dg-require-alias "" } -+// { dg-require-effective-target tls_runtime } -+// { dg-final { scan-assembler-not "_ZTH17mythreadlocalvar1" } } -+// { dg-final { scan-assembler "_ZTH17mythreadlocalvar2" } } -+// { dg-final { scan-assembler-not "_ZTH17mythreadlocalvar3" } } -+// { dg-final { scan-assembler "_ZTH17mythreadlocalvar4" } } -+ -+extern thread_local constinit int mythreadlocalvar1; -+struct S; -+extern thread_local constinit S mythreadlocalvar2; -+struct T { int t; }; -+extern thread_local constinit T mythreadlocalvar3; -+struct U { int u; ~U (); }; -+extern thread_local constinit U mythreadlocalvar4; -+int foo () { return mythreadlocalvar1; } -+S *bar () { return &mythreadlocalvar2; } -+T *baz () { return &mythreadlocalvar3; } -+U *qux () { return &mythreadlocalvar4; } diff --git a/gcc11-pr99341-revert.patch b/gcc11-pr99341-revert.patch deleted file mode 100644 index c7419cb..0000000 --- a/gcc11-pr99341-revert.patch +++ /dev/null @@ -1,176 +0,0 @@ -libstdc++: Remove symbols for new std::call_once implementation [PR 99341] - -This removes the new symbols added for the new futex-based -std::call_once implementation. These symbols were new on trunk, so not -in any released version. However, they are already present in some -beta distro releases (Fedora Linux 34) and in Fedora Linux rawhide. This -change can be locally reverted by distros that need to keep the symbols -present until affected packages have been rebuilt. - -Revert: -2021-03-12 Jonathan Wakely - - PR libstdc++/99341 - * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Remove - std::once_flag symbols. - * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Likewise. - * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Likewise. - * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: - Likewise. - * config/abi/pre/gnu.ver: Likewise. - * src/c++11/mutex.cc [_GLIBCXX_HAVE_LINUX_FUTEX] - (struct __once_flag_compat): Remove. - (_ZNSt9once_flag11_M_activateEv): Remove. - (_ZNSt9once_flag9_M_finishEb): Remove. - ---- libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt -+++ libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt -@@ -4086,6 +4086,8 @@ FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX - FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 - FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 - FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -+FUNC:_ZNSt9once_flag11_M_activateEv@@GLIBCXX_3.4.29 -+FUNC:_ZNSt9once_flag9_M_finishEb@@GLIBCXX_3.4.29 - FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4 - FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4 - FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4 ---- libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt -+++ libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt -@@ -4086,6 +4086,8 @@ FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX - FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 - FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 - FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -+FUNC:_ZNSt9once_flag11_M_activateEv@@GLIBCXX_3.4.29 -+FUNC:_ZNSt9once_flag9_M_finishEb@@GLIBCXX_3.4.29 - FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4 - FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4 - FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4 ---- libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt -+++ libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt -@@ -4086,6 +4086,8 @@ FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX - FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 - FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 - FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -+FUNC:_ZNSt9once_flag11_M_activateEv@@GLIBCXX_3.4.29 -+FUNC:_ZNSt9once_flag9_M_finishEb@@GLIBCXX_3.4.29 - FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4 - FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4 - FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4 ---- libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt -+++ libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt -@@ -4086,6 +4086,8 @@ FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX - FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 - FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 - FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -+FUNC:_ZNSt9once_flag11_M_activateEv@@GLIBCXX_3.4.29 -+FUNC:_ZNSt9once_flag9_M_finishEb@@GLIBCXX_3.4.29 - FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4 - FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4 - FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4 ---- libstdc++-v3/config/abi/pre/gnu.ver -+++ libstdc++-v3/config/abi/pre/gnu.ver -@@ -2388,6 +2388,11 @@ GLIBCXX_3.4.29 { - _ZNKRSt7__cxx1118basic_stringstreamI[cw]St11char_traitsI[cw]ESaI[cw]EE3strEv; - _ZNSt7__cxx1118basic_stringstreamI[cw]St11char_traitsI[cw]ESaI[cw]EE3strEONS_12basic_stringI[cw]S2_S3_EE; - -+ # std::once_flag::_M_activate() -+ _ZNSt9once_flag11_M_activateEv; -+ # std::once_flag::_M_finish(bool) -+ _ZNSt9once_flag9_M_finishEb; -+ - # std::to_chars(char*, char*, [float|double|long double]) - _ZSt8to_charsPcS_[def]; - # std::to_chars(char*, char*, [float|double|long double], chars_format) ---- libstdc++-v3/src/c++11/mutex.cc -+++ libstdc++-v3/src/c++11/mutex.cc -@@ -26,6 +26,90 @@ - - #ifdef _GLIBCXX_HAS_GTHREADS - -+#if defined _GLIBCXX_SHARED && ! _GLIBCXX_INLINE_VERSION -+ -+#ifdef _GLIBCXX_HAVE_LINUX_FUTEX -+# include -+# include -+# include -+ -+namespace std _GLIBCXX_VISIBILITY(default) -+{ -+_GLIBCXX_BEGIN_NAMESPACE_VERSION -+ -+struct __once_flag_compat -+{ -+ enum _Bits : int { _Init = 0, _Active = 1, _Done = 2 }; -+ int _M_once = 0; -+ bool _M_activate(); -+ void _M_finish(bool returning) noexcept; -+}; -+ -+bool -+__once_flag_compat::_M_activate() -+{ -+ if (__gnu_cxx::__is_single_threaded()) -+ { -+ if (_M_once == _Bits::_Done) -+ return false; -+ _M_once = _Bits::_Active; -+ return true; -+ } -+ -+ while (true) -+ { -+ int expected = _Bits::_Init; -+ constexpr int active = _Bits::_Active; -+ if (__atomic_compare_exchange_n(&_M_once, &expected, active, false, -+ __ATOMIC_ACQ_REL, -+ __ATOMIC_ACQUIRE)) -+ { -+ // This thread is now doing an active execution. -+ return true; -+ } -+ -+ if (expected == _Bits::_Done) -+ return false; // A returning execution happened, this is passive. -+ -+ // Otherwise, an active execution is happening. Wait for it to finish. -+ constexpr int futex_wait = 128; // FUTEX_WAIT_PRIVATE -+ syscall (SYS_futex, &_M_once, futex_wait, expected, 0); -+ } -+} -+ -+void -+std::__once_flag_compat::_M_finish(bool returning) noexcept -+{ -+ const int newval = returning ? _Bits::_Done : _Bits::_Init; -+ if (__gnu_cxx::__is_single_threaded()) -+ { -+ __glibcxx_assert(_M_once == _Bits::_Active); -+ _M_once = newval; -+ } -+ else -+ { -+ int prev [[maybe_unused]] -+ = __atomic_exchange_n(&_M_once, newval, __ATOMIC_RELEASE); -+ __glibcxx_assert(prev & _Bits::_Active); -+ // Wake any other threads waiting for this execution to finish. -+ constexpr int futex_wake = 129; // FUTEX_WAKE_PRIVATE -+ syscall (SYS_futex, &_M_once, futex_wake, INT_MAX); -+ } -+} -+ -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wattribute-alias" -+extern "C" bool _ZNSt9once_flag11_M_activateEv() -+ __attribute__((alias ("_ZNSt18__once_flag_compat11_M_activateEv"))); -+extern "C" void _ZNSt9once_flag9_M_finishEb() noexcept -+ __attribute__((alias ("_ZNSt18__once_flag_compat9_M_finishEb"))); -+#pragma GCC diagnostic pop -+ -+_GLIBCXX_END_NAMESPACE_VERSION -+} // namespace std -+#endif // FUTEX -+#endif // ONCE_FLAG_COMPAT && SHARED && ! INLINE_VERSION -+ - namespace std _GLIBCXX_VISIBILITY(default) - { - _GLIBCXX_BEGIN_NAMESPACE_VERSION diff --git a/gcc11-stringify-__VA_OPT__-2.patch b/gcc11-stringify-__VA_OPT__-2.patch deleted file mode 100644 index 987f738..0000000 --- a/gcc11-stringify-__VA_OPT__-2.patch +++ /dev/null @@ -1,197 +0,0 @@ -libcpp: Fix up #__VA_OPT__ handling [PR103415] - -stringify_arg uses pfile->u_buff to create the string literal. -Unfortunately, paste_tokens -> _cpp_lex_direct -> lex_number -> _cpp_unaligned_alloc -can in some cases use pfile->u_buff too, which results in losing everything -prepared for the string literal until the token pasting. - -The following patch fixes that by not calling paste_token during the -construction of the string literal, but doing that before. All the tokens -we are processing have been pushed into a token buffer using -tokens_buff_add_token so it is fine if we paste some of them in that buffer -(successful pasting creates a new token in that buffer), move following -tokens if any to make it contiguous, pop (throw away) the extra tokens at -the end and then do stringify_arg. - -Also, paste_tokens now copies over PREV_WHITE and PREV_FALLTHROUGH flags -from the original lhs token to the replacement token. Copying that way -the PREV_WHITE flag is needed for the #__VA_OPT__ handling and copying -over PREV_FALLTHROUGH fixes the new Wimplicit-fallthrough-38.c test. - -2021-12-01 Jakub Jelinek - - PR preprocessor/103415 -libcpp/ - * macro.c (stringify_arg): Remove va_opt argument and va_opt handling. - (paste_tokens): On successful paste or in PREV_WHITE and - PREV_FALLTHROUGH flags from the *plhs token to the new token. - (replace_args): Adjust stringify_arg callers. For #__VA_OPT__, - perform token pasting in a separate loop before stringify_arg call. -gcc/testsuite/ - * c-c++-common/cpp/va-opt-8.c: New test. - * c-c++-common/Wimplicit-fallthrough-38.c: New test. - ---- libcpp/macro.c.jj -+++ libcpp/macro.c -@@ -295,7 +295,7 @@ static cpp_context *next_context (cpp_reader *); - static const cpp_token *padding_token (cpp_reader *, const cpp_token *); - static const cpp_token *new_string_token (cpp_reader *, uchar *, unsigned int); - static const cpp_token *stringify_arg (cpp_reader *, const cpp_token **, -- unsigned int, bool); -+ unsigned int); - static void paste_all_tokens (cpp_reader *, const cpp_token *); - static bool paste_tokens (cpp_reader *, location_t, - const cpp_token **, const cpp_token *); -@@ -834,8 +834,7 @@ cpp_quote_string (uchar *dest, const uchar *src, unsigned int len) - /* Convert a token sequence FIRST to FIRST+COUNT-1 to a single string token - according to the rules of the ISO C #-operator. */ - static const cpp_token * --stringify_arg (cpp_reader *pfile, const cpp_token **first, unsigned int count, -- bool va_opt) -+stringify_arg (cpp_reader *pfile, const cpp_token **first, unsigned int count) - { - unsigned char *dest; - unsigned int i, escape_it, backslash_count = 0; -@@ -852,24 +851,6 @@ stringify_arg (cpp_reader *pfile, const cpp_token **first, unsigned int count, - { - const cpp_token *token = first[i]; - -- if (va_opt && (token->flags & PASTE_LEFT)) -- { -- location_t virt_loc = pfile->invocation_location; -- const cpp_token *rhs; -- do -- { -- if (i == count) -- abort (); -- rhs = first[++i]; -- if (!paste_tokens (pfile, virt_loc, &token, rhs)) -- { -- --i; -- break; -- } -- } -- while (rhs->flags & PASTE_LEFT); -- } -- - if (token->type == CPP_PADDING) - { - if (source == NULL -@@ -1003,6 +984,7 @@ paste_tokens (cpp_reader *pfile, location_t location, - return false; - } - -+ lhs->flags |= (*plhs)->flags & (PREV_WHITE | PREV_FALLTHROUGH); - *plhs = lhs; - _cpp_pop_buffer (pfile); - return true; -@@ -1945,8 +1927,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, - if (src->flags & STRINGIFY_ARG) - { - if (!arg->stringified) -- arg->stringified = stringify_arg (pfile, arg->first, arg->count, -- false); -+ arg->stringified = stringify_arg (pfile, arg->first, arg->count); - } - else if ((src->flags & PASTE_LEFT) - || (src != macro->exp.tokens && (src[-1].flags & PASTE_LEFT))) -@@ -2066,11 +2047,46 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, - { - unsigned int count - = start ? paste_flag - start : tokens_buff_count (buff); -- const cpp_token *t -- = stringify_arg (pfile, -- start ? start + 1 -- : (const cpp_token **) (buff->base), -- count, true); -+ const cpp_token **first -+ = start ? start + 1 -+ : (const cpp_token **) (buff->base); -+ unsigned int i, j; -+ -+ /* Paste any tokens that need to be pasted before calling -+ stringify_arg, because stringify_arg uses pfile->u_buff -+ which paste_tokens can use as well. */ -+ for (i = 0, j = 0; i < count; i++, j++) -+ { -+ const cpp_token *token = first[i]; -+ -+ if (token->flags & PASTE_LEFT) -+ { -+ location_t virt_loc = pfile->invocation_location; -+ const cpp_token *rhs; -+ do -+ { -+ if (i == count) -+ abort (); -+ rhs = first[++i]; -+ if (!paste_tokens (pfile, virt_loc, &token, rhs)) -+ { -+ --i; -+ break; -+ } -+ } -+ while (rhs->flags & PASTE_LEFT); -+ } -+ -+ first[j] = token; -+ } -+ if (j != i) -+ { -+ while (i-- != j) -+ tokens_buff_remove_last_token (buff); -+ count = j; -+ } -+ -+ const cpp_token *t = stringify_arg (pfile, first, count); - while (count--) - tokens_buff_remove_last_token (buff); - if (src->flags & PASTE_LEFT) ---- gcc/testsuite/c-c++-common/cpp/va-opt-8.c.jj -+++ gcc/testsuite/c-c++-common/cpp/va-opt-8.c -@@ -0,0 +1,18 @@ -+/* PR preprocessor/103415 */ -+/* { dg-do run } */ -+/* { dg-options "-std=gnu99" { target c } } */ -+/* { dg-options "-std=c++20" { target c++ } } */ -+ -+#define n(x, ...) = #__VA_OPT__(x##3) -+#define o(x, ...) #__VA_OPT__(x##__VA_ARGS__##9) -+const char *c n(1 2, 4); -+const char *d = o(5 6, 7 8); -+ -+int -+main () -+{ -+ if (__builtin_strcmp (c, "1 23") -+ || __builtin_strcmp (d, "5 67 89")) -+ __builtin_abort (); -+ return 0; -+} ---- gcc/testsuite/c-c++-common/Wimplicit-fallthrough-38.c.jj -+++ gcc/testsuite/c-c++-common/Wimplicit-fallthrough-38.c -@@ -0,0 +1,24 @@ -+/* { dg-do compile } */ -+/* { dg-options "-Wimplicit-fallthrough=3" } */ -+ -+#define FOO \ -+int \ -+foo (int a) \ -+{ \ -+ switch (a) \ -+ { \ -+ case 1: \ -+ ++a; \ -+ /* FALLTHRU */ \ -+ case 2: \ -+ ++a; \ -+ /* FALLTHRU */ \ -+ ca##se 3: \ -+ ++a; \ -+ default: \ -+ break; \ -+ } \ -+ return a; \ -+} -+ -+FOO diff --git a/gcc11-stringify-__VA_OPT__.patch b/gcc11-stringify-__VA_OPT__.patch deleted file mode 100644 index 3a2a71f..0000000 --- a/gcc11-stringify-__VA_OPT__.patch +++ /dev/null @@ -1,308 +0,0 @@ -c++: Add C++20 #__VA_OPT__ support - -The following patch implements C++20 # __VA_OPT__ (...) support. -Testcases cover what I came up with myself and what LLVM has for #__VA_OPT__ -in its testsuite and the string literals are identical between the two -compilers on the va-opt-5.c testcase. - -2021-08-17 Jakub Jelinek - -libcpp/ - * macro.c (vaopt_state): Add m_stringify member. - (vaopt_state::vaopt_state): Initialize it. - (vaopt_state::update): Overwrite it. - (vaopt_state::stringify): New method. - (stringify_arg): Replace arg argument with first, count arguments - and add va_opt argument. Use first instead of arg->first and - count instead of arg->count, for va_opt add paste_tokens handling. - (paste_tokens): Fix up len calculation. Don't spell rhs twice, - instead use %.*s to supply lhs and rhs spelling lengths. Don't call - _cpp_backup_tokens here. - (paste_all_tokens): Call it here instead. - (replace_args): Adjust stringify_arg caller. For vaopt_state::END - if stringify is true handle __VA_OPT__ stringification. - (create_iso_definition): Handle # __VA_OPT__ similarly to # macro_arg. -gcc/testsuite/ - * c-c++-common/cpp/va-opt-5.c: New test. - * c-c++-common/cpp/va-opt-6.c: New test. - ---- libcpp/macro.c -+++ libcpp/macro.c -@@ -118,6 +118,7 @@ class vaopt_state { - m_arg (arg), - m_variadic (is_variadic), - m_last_was_paste (false), -+ m_stringify (false), - m_state (0), - m_paste_location (0), - m_location (0), -@@ -145,6 +146,7 @@ class vaopt_state { - } - ++m_state; - m_location = token->src_loc; -+ m_stringify = (token->flags & STRINGIFY_ARG) != 0; - return BEGIN; - } - else if (m_state == 1) -@@ -234,6 +236,12 @@ class vaopt_state { - return m_state == 0; - } - -+ /* Return true for # __VA_OPT__. */ -+ bool stringify () const -+ { -+ return m_stringify; -+ } -+ - private: - - /* The cpp_reader. */ -@@ -247,6 +255,8 @@ class vaopt_state { - /* If true, the previous token was ##. This is used to detect when - a paste occurs at the end of the sequence. */ - bool m_last_was_paste; -+ /* True for #__VA_OPT__. */ -+ bool m_stringify; - - /* The state variable: - 0 means not parsing -@@ -284,7 +294,8 @@ static _cpp_buff *collect_args (cpp_reader *, const cpp_hashnode *, - static cpp_context *next_context (cpp_reader *); - static const cpp_token *padding_token (cpp_reader *, const cpp_token *); - static const cpp_token *new_string_token (cpp_reader *, uchar *, unsigned int); --static const cpp_token *stringify_arg (cpp_reader *, macro_arg *); -+static const cpp_token *stringify_arg (cpp_reader *, const cpp_token **, -+ unsigned int, bool); - static void paste_all_tokens (cpp_reader *, const cpp_token *); - static bool paste_tokens (cpp_reader *, location_t, - const cpp_token **, const cpp_token *); -@@ -818,10 +829,11 @@ cpp_quote_string (uchar *dest, const uchar *src, unsigned int len) - return dest; - } - --/* Convert a token sequence ARG to a single string token according to -- the rules of the ISO C #-operator. */ -+/* Convert a token sequence FIRST to FIRST+COUNT-1 to a single string token -+ according to the rules of the ISO C #-operator. */ - static const cpp_token * --stringify_arg (cpp_reader *pfile, macro_arg *arg) -+stringify_arg (cpp_reader *pfile, const cpp_token **first, unsigned int count, -+ bool va_opt) - { - unsigned char *dest; - unsigned int i, escape_it, backslash_count = 0; -@@ -834,9 +846,27 @@ stringify_arg (cpp_reader *pfile, macro_arg *arg) - *dest++ = '"'; - - /* Loop, reading in the argument's tokens. */ -- for (i = 0; i < arg->count; i++) -+ for (i = 0; i < count; i++) - { -- const cpp_token *token = arg->first[i]; -+ const cpp_token *token = first[i]; -+ -+ if (va_opt && (token->flags & PASTE_LEFT)) -+ { -+ location_t virt_loc = pfile->invocation_location; -+ const cpp_token *rhs; -+ do -+ { -+ if (i == count) -+ abort (); -+ rhs = first[++i]; -+ if (!paste_tokens (pfile, virt_loc, &token, rhs)) -+ { -+ --i; -+ break; -+ } -+ } -+ while (rhs->flags & PASTE_LEFT); -+ } - - if (token->type == CPP_PADDING) - { -@@ -923,7 +953,7 @@ paste_tokens (cpp_reader *pfile, location_t location, - cpp_token *lhs; - unsigned int len; - -- len = cpp_token_len (*plhs) + cpp_token_len (rhs) + 1; -+ len = cpp_token_len (*plhs) + cpp_token_len (rhs) + 2; - buf = (unsigned char *) alloca (len); - end = lhsend = cpp_spell_token (pfile, *plhs, buf, true); - -@@ -949,8 +979,10 @@ paste_tokens (cpp_reader *pfile, location_t location, - location_t saved_loc = lhs->src_loc; - - _cpp_pop_buffer (pfile); -- _cpp_backup_tokens (pfile, 1); -- *lhsend = '\0'; -+ -+ unsigned char *rhsstart = lhsend; -+ if ((*plhs)->type == CPP_DIV && rhs->type != CPP_EQ) -+ rhsstart++; - - /* We have to remove the PASTE_LEFT flag from the old lhs, but - we want to keep the new location. */ -@@ -962,8 +994,10 @@ paste_tokens (cpp_reader *pfile, location_t location, - /* Mandatory error for all apart from assembler. */ - if (CPP_OPTION (pfile, lang) != CLK_ASM) - cpp_error_with_line (pfile, CPP_DL_ERROR, location, 0, -- "pasting \"%s\" and \"%s\" does not give a valid preprocessing token", -- buf, cpp_token_as_text (pfile, rhs)); -+ "pasting \"%.*s\" and \"%.*s\" does not give " -+ "a valid preprocessing token", -+ (int) (lhsend - buf), buf, -+ (int) (end - rhsstart), rhsstart); - return false; - } - -@@ -1039,7 +1073,10 @@ paste_all_tokens (cpp_reader *pfile, const cpp_token *lhs) - abort (); - } - if (!paste_tokens (pfile, virt_loc, &lhs, rhs)) -- break; -+ { -+ _cpp_backup_tokens (pfile, 1); -+ break; -+ } - } - while (rhs->flags & PASTE_LEFT); - -@@ -1906,7 +1943,8 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, - if (src->flags & STRINGIFY_ARG) - { - if (!arg->stringified) -- arg->stringified = stringify_arg (pfile, arg); -+ arg->stringified = stringify_arg (pfile, arg->first, arg->count, -+ false); - } - else if ((src->flags & PASTE_LEFT) - || (src != macro->exp.tokens && (src[-1].flags & PASTE_LEFT))) -@@ -2029,7 +2067,24 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, - paste_flag = tokens_buff_last_token_ptr (buff); - } - -- if (src->flags & PASTE_LEFT) -+ if (vaopt_tracker.stringify ()) -+ { -+ unsigned int count -+ = start ? paste_flag - start : tokens_buff_count (buff); -+ const cpp_token *t -+ = stringify_arg (pfile, -+ start ? start + 1 -+ : (const cpp_token **) (buff->base), -+ count, true); -+ while (count--) -+ tokens_buff_remove_last_token (buff); -+ if (src->flags & PASTE_LEFT) -+ copy_paste_flag (pfile, &t, src); -+ tokens_buff_add_token (buff, virt_locs, -+ t, t->src_loc, t->src_loc, -+ NULL, 0); -+ } -+ else if (src->flags & PASTE_LEFT) - { - /* With a non-empty __VA_OPT__ on the LHS of ##, the last - token should be flagged PASTE_LEFT. */ -@@ -3585,7 +3640,10 @@ create_iso_definition (cpp_reader *pfile) - function-like macros when lexing the subsequent token. */ - if (macro->count > 1 && token[-1].type == CPP_HASH && macro->fun_like) - { -- if (token->type == CPP_MACRO_ARG) -+ if (token->type == CPP_MACRO_ARG -+ || (macro->variadic -+ && token->type == CPP_NAME -+ && token->val.node.node == pfile->spec_nodes.n__VA_OPT__)) - { - if (token->flags & PREV_WHITE) - token->flags |= SP_PREV_WHITE; ---- gcc/testsuite/c-c++-common/cpp/va-opt-5.c -+++ gcc/testsuite/c-c++-common/cpp/va-opt-5.c -@@ -0,0 +1,67 @@ -+/* { dg-do run } */ -+/* { dg-options "-std=gnu99" { target c } } */ -+/* { dg-options "-std=c++20" { target c++ } } */ -+ -+#define lparen ( -+#define a0 fooa0 -+#define a1 fooa1 a0 -+#define a2 fooa2 a1 -+#define a3 fooa3 a2 -+#define a() b lparen ) -+#define b() c lparen ) -+#define c() d lparen ) -+#define g h -+#define i(j) j -+#define f(...) #__VA_OPT__(g i(0)) -+#define k(x,...) # __VA_OPT__(x) #x #__VA_OPT__(__VA_ARGS__) -+#define l(x,...) #__VA_OPT__(a1 x) -+#define m(x,...) "a()" #__VA_OPT__(a3 __VA_ARGS__ x ## __VA_ARGS__ ## x ## c a3) "a()" -+#define n(x,...) = #__VA_OPT__(a3 __VA_ARGS__ x ## __VA_ARGS__ ## x ## c a3) #x #__VA_OPT__(a0 __VA_ARGS__ x ## __VA_ARGS__ ## x ## c a0) ; -+#define o(x, ...) #__VA_OPT__(x##x x##x) -+#define p(x, ...) #__VA_OPT__(_Pragma ("foobar")) -+#define q(...) #__VA_OPT__(/* foo */x/* bar */) -+const char *v1 = f(); -+const char *v2 = f(123); -+const char *v3 = k(1); -+const char *v4 = k(1, 2, 3 ); -+const char *v5 = l(a()); -+const char *v6 = l(a1 a(), 1); -+const char *v7 = m(); -+const char *v8 = m(,); -+const char *v9 = m(,a3); -+const char *v10 = m(a3,a(),a0); -+const char *v11 n() -+const char *v12 n(,) -+const char *v13 n(,a0) -+const char *v14 n(a0, a(),a0) -+const char *v15 = o(, 0); -+const char *v16 = p(0); -+const char *v17 = p(0, 1); -+const char *v18 = q(); -+const char *v19 = q(1); -+ -+int -+main () -+{ -+ if (__builtin_strcmp (v1, "") -+ || __builtin_strcmp (v2, "g i(0)") -+ || __builtin_strcmp (v3, "1") -+ || __builtin_strcmp (v4, "112, 3") -+ || __builtin_strcmp (v5, "") -+ || __builtin_strcmp (v6, "a1 fooa1 fooa0 b ( )") -+ || __builtin_strcmp (v7, "a()a()") -+ || __builtin_strcmp (v8, "a()a()") -+ || __builtin_strcmp (v9, "a()a3 fooa3 fooa2 fooa1 fooa0 a3c a3a()") -+ || __builtin_strcmp (v10, "a()a3 b ( ),fooa0 a3a(),a0a3c a3a()") -+ || __builtin_strcmp (v11, "") -+ || __builtin_strcmp (v12, "") -+ || __builtin_strcmp (v13, "a3 fooa0 a0c a3a0 fooa0 a0c a0") -+ || __builtin_strcmp (v14, "a3 b ( ),fooa0 a0a(),a0a0c a3a0a0 b ( ),fooa0 a0a(),a0a0c a0") -+ || __builtin_strcmp (v15, "") -+ || __builtin_strcmp (v16, "") -+ || __builtin_strcmp (v17, "_Pragma (\"foobar\")") -+ || __builtin_strcmp (v18, "") -+ || __builtin_strcmp (v19, "x")) -+ __builtin_abort (); -+ return 0; -+} ---- gcc/testsuite/c-c++-common/cpp/va-opt-6.c -+++ gcc/testsuite/c-c++-common/cpp/va-opt-6.c -@@ -0,0 +1,17 @@ -+/* { dg-do preprocess } */ -+/* { dg-options "-std=gnu99" { target c } } */ -+/* { dg-options "-std=c++20" { target c++ } } */ -+ -+#define a "" -+#define b(...) a ## #__VA_OPT__(1) /* { dg-error "pasting \"a\" and \"\"\"\" does not give a valid preprocessing token" } */ -+#define c(...) a ## #__VA_OPT__(1) /* { dg-error "pasting \"a\" and \"\"1\"\" does not give a valid preprocessing token" } */ -+#define d(...) #__VA_OPT__(1) ## ! -+#define e(...) #__VA_OPT__(1) ## ! -+#define f(...) #__VA_OPT__(. ## !) -+#define g(...) #__VA_OPT__(. ## !) -+b() -+c(1) -+d( ) /* { dg-error "pasting \"\"\"\" and \"!\" does not give a valid preprocessing token" } */ -+e( 1 ) /* { dg-error "pasting \"\"1\"\" and \"!\" does not give a valid preprocessing token" } */ -+f() -+g(0) /* { dg-error "pasting \".\" and \"!\" does not give a valid preprocessing token" } */ diff --git a/gcc12-Wno-format-security.patch b/gcc12-Wno-format-security.patch new file mode 100644 index 0000000..3abf63b --- /dev/null +++ b/gcc12-Wno-format-security.patch @@ -0,0 +1,58 @@ +2022-01-07 Jakub Jelinek + + * Makefile.tpl (GOCFLAGS, GDCFLAGS): Filter out -Wformat-security. + * Makefile.in: Regenerated. + +2017-02-25 Jakub Jelinek + + * configure.ac: When adding -Wno-format, also add -Wno-format-security. + * configure: Regenerated. + +--- gcc/configure.ac.jj 2017-02-13 12:20:53.000000000 +0100 ++++ gcc/configure.ac 2017-02-25 12:42:32.859175403 +0100 +@@ -480,7 +480,7 @@ AC_ARG_ENABLE(build-format-warnings, + AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]), + [],[enable_build_format_warnings=yes]) + AS_IF([test $enable_build_format_warnings = no], +- [wf_opt=-Wno-format],[wf_opt=]) ++ [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=]) + ACX_PROG_CXX_WARNING_OPTS( + m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ], + [-Wcast-qual -Wno-error=format-diag $wf_opt])), +--- gcc/configure.jj 2017-02-13 12:20:52.000000000 +0100 ++++ gcc/configure 2017-02-25 12:42:50.041946391 +0100 +@@ -6647,7 +6647,7 @@ else + fi + + if test $enable_build_format_warnings = no; then : +- wf_opt=-Wno-format ++ wf_opt="-Wno-format -Wno-format-security" + else + wf_opt= + fi +--- Makefile.tpl.jj 2021-12-30 15:12:42.188164847 +0100 ++++ Makefile.tpl 2022-01-07 12:06:12.115550714 +0100 +@@ -447,8 +447,8 @@ LDFLAGS = @LDFLAGS@ + LIBCFLAGS = $(CFLAGS) + CXXFLAGS = @CXXFLAGS@ + LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates +-GOCFLAGS = $(CFLAGS) +-GDCFLAGS = $(CFLAGS) ++GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) ++GDCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) + + # Pass additional PGO and LTO compiler options to the PGO build. + BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS) +--- Makefile.in.jj 2021-12-30 15:12:42.188164847 +0100 ++++ Makefile.in 2022-01-07 12:06:27.335334561 +0100 +@@ -444,8 +444,8 @@ LDFLAGS = @LDFLAGS@ + LIBCFLAGS = $(CFLAGS) + CXXFLAGS = @CXXFLAGS@ + LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates +-GOCFLAGS = $(CFLAGS) +-GDCFLAGS = $(CFLAGS) ++GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) ++GDCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) + + # Pass additional PGO and LTO compiler options to the PGO build. + BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS) diff --git a/gcc11-d-shared-libphobos.patch b/gcc12-d-shared-libphobos.patch similarity index 100% rename from gcc11-d-shared-libphobos.patch rename to gcc12-d-shared-libphobos.patch diff --git a/gcc11-fortran-fdec-add-missing-indexes.patch b/gcc12-fortran-fdec-add-missing-indexes.patch similarity index 100% rename from gcc11-fortran-fdec-add-missing-indexes.patch rename to gcc12-fortran-fdec-add-missing-indexes.patch diff --git a/gcc11-fortran-fdec-duplicates.patch b/gcc12-fortran-fdec-duplicates.patch similarity index 100% rename from gcc11-fortran-fdec-duplicates.patch rename to gcc12-fortran-fdec-duplicates.patch diff --git a/gcc11-fortran-fdec-ichar.patch b/gcc12-fortran-fdec-ichar.patch similarity index 100% rename from gcc11-fortran-fdec-ichar.patch rename to gcc12-fortran-fdec-ichar.patch diff --git a/gcc11-fortran-fdec-non-integer-index.patch b/gcc12-fortran-fdec-non-integer-index.patch similarity index 100% rename from gcc11-fortran-fdec-non-integer-index.patch rename to gcc12-fortran-fdec-non-integer-index.patch diff --git a/gcc11-fortran-fdec-non-logical-if.patch b/gcc12-fortran-fdec-non-logical-if.patch similarity index 100% rename from gcc11-fortran-fdec-non-logical-if.patch rename to gcc12-fortran-fdec-non-logical-if.patch diff --git a/gcc11-fortran-fdec-old-init.patch b/gcc12-fortran-fdec-old-init.patch similarity index 100% rename from gcc11-fortran-fdec-old-init.patch rename to gcc12-fortran-fdec-old-init.patch diff --git a/gcc11-fortran-fdec-override-kind.patch b/gcc12-fortran-fdec-override-kind.patch similarity index 100% rename from gcc11-fortran-fdec-override-kind.patch rename to gcc12-fortran-fdec-override-kind.patch diff --git a/gcc11-fortran-fdec-promotion.patch b/gcc12-fortran-fdec-promotion.patch similarity index 100% rename from gcc11-fortran-fdec-promotion.patch rename to gcc12-fortran-fdec-promotion.patch diff --git a/gcc11-fortran-fdec-sequence.patch b/gcc12-fortran-fdec-sequence.patch similarity index 100% rename from gcc11-fortran-fdec-sequence.patch rename to gcc12-fortran-fdec-sequence.patch diff --git a/gcc11-fortran-flogical-as-integer.patch b/gcc12-fortran-flogical-as-integer.patch similarity index 100% rename from gcc11-fortran-flogical-as-integer.patch rename to gcc12-fortran-flogical-as-integer.patch diff --git a/gcc11-hack.patch b/gcc12-hack.patch similarity index 100% rename from gcc11-hack.patch rename to gcc12-hack.patch diff --git a/gcc11-isl-dl.patch b/gcc12-isl-dl.patch similarity index 100% rename from gcc11-isl-dl.patch rename to gcc12-isl-dl.patch diff --git a/gcc11-isl-dl2.patch b/gcc12-isl-dl2.patch similarity index 90% rename from gcc11-isl-dl2.patch rename to gcc12-isl-dl2.patch index ac14ed3..e16672c 100644 --- a/gcc11-isl-dl2.patch +++ b/gcc12-isl-dl2.patch @@ -7,16 +7,16 @@ --- gcc/toplev.c.jj 2008-12-09 23:59:10.000000000 +0100 +++ gcc/toplev.c 2009-01-27 14:33:52.000000000 +0100 -@@ -117,6 +117,8 @@ static void compile_file (void); - /* True if we don't need a backend (e.g. preprocessing only). */ - static bool no_backend; +@@ -113,6 +113,8 @@ static void finalize (bool); + static void crash_signal (int) ATTRIBUTE_NORETURN; + static void compile_file (void); +const char **toplev_main_argv; + /* Decoded options, and number of such options. */ struct cl_decoded_option *save_decoded_options; unsigned int save_decoded_options_count; -@@ -2287,6 +2289,8 @@ toplev::main (int argc, char **argv) +@@ -2239,6 +2241,8 @@ toplev::main (int argc, char **argv) expandargv (&argc, &argv); diff --git a/gcc11-libgomp-omp_h-multilib.patch b/gcc12-libgomp-omp_h-multilib.patch similarity index 100% rename from gcc11-libgomp-omp_h-multilib.patch rename to gcc12-libgomp-omp_h-multilib.patch diff --git a/gcc11-libstdc++-docs.patch b/gcc12-libstdc++-docs.patch similarity index 96% rename from gcc11-libstdc++-docs.patch rename to gcc12-libstdc++-docs.patch index 4b4f9f8..25aa718 100644 --- a/gcc11-libstdc++-docs.patch +++ b/gcc12-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 11.2.1 ++ Release 12.0.0 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 11.2.1 release, ++ for the 12.0.0 release, + online for each GCC release and diff --git a/gcc11-libtool-no-rpath.patch b/gcc12-libtool-no-rpath.patch similarity index 100% rename from gcc11-libtool-no-rpath.patch rename to gcc12-libtool-no-rpath.patch diff --git a/gcc11-no-add-needed.patch b/gcc12-no-add-needed.patch similarity index 100% rename from gcc11-no-add-needed.patch rename to gcc12-no-add-needed.patch diff --git a/gcc11-rh1574936.patch b/gcc12-rh1574936.patch similarity index 100% rename from gcc11-rh1574936.patch rename to gcc12-rh1574936.patch diff --git a/gcc11-sparc-config-detection.patch b/gcc12-sparc-config-detection.patch similarity index 100% rename from gcc11-sparc-config-detection.patch rename to gcc12-sparc-config-detection.patch diff --git a/sources b/sources index a7e012b..102dae1 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-11.2.1-20211203.tar.xz) = 3cf64d3af541b9e80a2d5dd95a1257afefda554cfa16b757a7f861701e3da2d6917dbb1f4cd74301ffaf45e92c441642b8c589a10698a9103a216620f0849626 +SHA512 (gcc-12.0.0-20220108.tar.xz) = 4248211feab3970d24b0862ad61f8c089ae21311c2b56b2ac0a298cf9126b2255a4f8ba44677683bb5862e34e34d433e3c6a20747b55e242c57981fafc9e9641 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 diff --git a/update-gcc.sh b/update-gcc.sh index 644b209..4592048 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -3,5 +3,5 @@ git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 d=`date --iso | sed 's/-//g'` -git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-11.2.1-$d/ $1 | xz -9e > gcc-11.2.1-$d.tar.xz +git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-12.0.0-$d/ $1 | xz -9e > gcc-12.0.0-$d.tar.xz rm -rf gcc-dir.tmp From b84a98262a42f80d20f9c45e6a06409a7211cc5c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 12 Jan 2022 19:22:01 +0100 Subject: [PATCH 080/293] 12.0.0-0.4 --- .gitignore | 1 + gcc.spec | 23 ++++++++++++++++++++--- sources | 2 +- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 0cb9ebd..50a607b 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,4 @@ /gcc-11.2.1-20211019.tar.xz /gcc-11.2.1-20211203.tar.xz /gcc-12.0.0-20220108.tar.xz +/gcc-12.0.0-20220112.tar.xz diff --git a/gcc.spec b/gcc.spec index 6fe59ed..36d048b 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20220108 -%global gitrev 6bd6f878235efd1d0787892e7e2f73c5edf514cc +%global DATE 20220112 +%global gitrev 02bedaf9591e39142014a459343337348fee575a %global gcc_version 12.0.0 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.3%{?dist} +Release: %{gcc_release}.4%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3145,5 +3145,22 @@ end %endif %changelog +* Wed Jan 12 2022 Jakub Jelinek 12.0.0-0.4 +- update from trunk + - PRs ada/79724, analyzer/102692, analyzer/103940, c++/89074, c++/103480, + c++/100588, c++/101597, c++/103783, c++/103831, c++/103879, + c++/103912, c++/103946, c/101537, c/103881, fortran/82207, + fortran/101762, fortran/103366, fortran/103777, fortran/103789, + libstdc++/77760, libstdc++/100017, libstdc++/103726, libstdc++/103866, + libstdc++/103891, libstdc++/103955, middle-end/70090, + middle-end/101530, rtl-optimization/98782, rtl-optimization/103974, + target/53652, target/102024, target/102239, target/103465, + target/103804, target/103861, testsuite/102935, testsuite/103820, + tree-optimization/76174, tree-optimization/83541, + tree-optimization/100359, tree-optimization/103551, + tree-optimization/103821, tree-optimization/103948, + tree-optimization/103961, tree-optimization/103971, + tree-optimization/103977, tree-optimization/103990 + * Sat Jan 8 2022 Jakub Jelinek 12.0.0-0.3 - new package diff --git a/sources b/sources index 102dae1..9e1447f 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.0-20220108.tar.xz) = 4248211feab3970d24b0862ad61f8c089ae21311c2b56b2ac0a298cf9126b2255a4f8ba44677683bb5862e34e34d433e3c6a20747b55e242c57981fafc9e9641 +SHA512 (gcc-12.0.0-20220112.tar.xz) = 255a735b718c1d2e0fff6679a8dbcf4548c50a6cd018450bdb5cfb8d66d9e0a8ad0f000acbd711a04d218771c4603338f154864049d165c0c53f5c5c3f05c8aa SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 804d4ab44beabf6bcb181a640b64f940184e3876 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 15 Jan 2022 00:15:31 +0100 Subject: [PATCH 081/293] 12.0.0-0.5 --- .gitignore | 1 + gcc.spec | 21 ++++++++++++++++++--- sources | 2 +- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 50a607b..d7b450a 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,4 @@ /gcc-11.2.1-20211203.tar.xz /gcc-12.0.0-20220108.tar.xz /gcc-12.0.0-20220112.tar.xz +/gcc-12.0.0-20220115.tar.xz diff --git a/gcc.spec b/gcc.spec index 36d048b..b08c733 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20220112 -%global gitrev 02bedaf9591e39142014a459343337348fee575a +%global DATE 20220115 +%global gitrev d8c9e50646a688fa39fd228289164868692b3474 %global gcc_version 12.0.0 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.4%{?dist} +Release: %{gcc_release}.5%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -2297,6 +2297,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/nmmintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/immintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/x86gprintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/rs6000-vecdefines.h %endif %ifarch %{arm} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/unwind-arm-common.h @@ -3145,6 +3146,20 @@ end %endif %changelog +* Sat Jan 15 2022 Jakub Jelinek 12.0.0-0.5 +- update from trunk + - PRs ada/104027, analyzer/104029, c++/70417, c++/103705, c++/103991, + c/104002, fortran/67804, fortran/99256, fortran/103782, + libfortran/104006, libstdc++/91260, libstdc++/91383, libstdc++/95065, + libstdc++/103992, middle-end/100280, middle-end/101475, + middle-end/104026, target/94790, target/98737, target/100637, + target/103935, target/103941, target/104001, target/104003, + target/104014, tree-optimization/83072, tree-optimization/83073, + tree-optimization/96707, tree-optimization/97909, + tree-optimization/102192, tree-optimization/103989, + tree-optimization/104009, tree-optimization/104015 +- include rs6000-vecdefines.h on ppc* (#2040825) + * Wed Jan 12 2022 Jakub Jelinek 12.0.0-0.4 - update from trunk - PRs ada/79724, analyzer/102692, analyzer/103940, c++/89074, c++/103480, diff --git a/sources b/sources index 9e1447f..62293b2 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.0-20220112.tar.xz) = 255a735b718c1d2e0fff6679a8dbcf4548c50a6cd018450bdb5cfb8d66d9e0a8ad0f000acbd711a04d218771c4603338f154864049d165c0c53f5c5c3f05c8aa +SHA512 (gcc-12.0.0-20220115.tar.xz) = 27eb968a3dc3387ef381c8b58a874eec2db6c57cf71ca9c6492d9078776b9d5d29e2d4ccd643568e6e4967ec7a6b531690d51d9355e2ef66bb2978dc08b8005f SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From dca274fd43c5b243531f8cd5b480f7ddeee773d6 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 15 Jan 2022 00:19:21 +0100 Subject: [PATCH 082/293] 12.0.0-0.5.1 --- gcc.spec | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index b08c733..598eb4d 100644 --- a/gcc.spec +++ b/gcc.spec @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.5%{?dist} +Release: %{gcc_release}.5.1%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -993,6 +993,9 @@ CONFIGURE_OPTS="\ %ifarch sparc sparcv9 sparc64 ppc ppc64 ppc64le ppc64p7 s390 s390x alpha --with-long-double-128 \ %endif +%ifarch ppc64le + --with-long-double-format=ieee \ +%endif %ifarch sparc --disable-linux-futex \ %endif @@ -3146,6 +3149,9 @@ end %endif %changelog +* Sat Jan 15 2022 Jakub Jelinek 12.0.0-0.5.1 +- default to -mabi=ieeelongdouble on ppc64le + * Sat Jan 15 2022 Jakub Jelinek 12.0.0-0.5 - update from trunk - PRs ada/104027, analyzer/104029, c++/70417, c++/103705, c++/103991, From 595f09c493ae429b7e84bc6740c121fe3853ba36 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 18 Jan 2022 14:22:46 +0100 Subject: [PATCH 083/293] 12.0.1-0.1 --- .gitignore | 1 + gcc.spec | 22 +++++----- gcc12-fortran-fdec-add-missing-indexes.patch | 16 ++++---- gcc12-fortran-fdec-duplicates.patch | 16 ++++---- gcc12-fortran-fdec-ichar.patch | 16 ++++---- gcc12-fortran-fdec-non-integer-index.patch | 16 ++++---- gcc12-fortran-fdec-non-logical-if.patch | 16 ++++---- gcc12-fortran-fdec-old-init.patch | 16 ++++---- gcc12-fortran-fdec-override-kind.patch | 16 ++++---- gcc12-fortran-fdec-promotion.patch | 40 +++++++++---------- gcc12-fortran-fdec-sequence.patch | 16 ++++---- gcc12-fortran-flogical-as-integer.patch | 8 ++-- gcc12-hack.patch | 8 ++-- gcc12-isl-dl.patch | 8 ++-- gcc12-isl-dl2.patch | 12 +++--- gcc12-libstdc++-docs.patch | 4 +- gcc12-pr104025.patch | 42 ++++++++++++++++++++ sources | 2 +- update-gcc.sh | 2 +- 19 files changed, 162 insertions(+), 115 deletions(-) create mode 100644 gcc12-pr104025.patch diff --git a/.gitignore b/.gitignore index d7b450a..21dcf61 100644 --- a/.gitignore +++ b/.gitignore @@ -57,3 +57,4 @@ /gcc-12.0.0-20220108.tar.xz /gcc-12.0.0-20220112.tar.xz /gcc-12.0.0-20220115.tar.xz +/gcc-12.0.1-20220118.tar.xz diff --git a/gcc.spec b/gcc.spec index 598eb4d..29ddb2f 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,6 +1,6 @@ -%global DATE 20220115 -%global gitrev d8c9e50646a688fa39fd228289164868692b3474 -%global gcc_version 12.0.0 +%global DATE 20220118 +%global gitrev 880787aef7a985a80f88a14f830fb554a33b1a87 +%global gcc_version 12.0.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.5.1%{?dist} +Release: %{gcc_release}.1%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -269,6 +269,7 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch +Patch12: gcc12-pr104025.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -790,6 +791,7 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ +%patch12 -p0 -b .pr104025~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -993,9 +995,6 @@ CONFIGURE_OPTS="\ %ifarch sparc sparcv9 sparc64 ppc ppc64 ppc64le ppc64p7 s390 s390x alpha --with-long-double-128 \ %endif -%ifarch ppc64le - --with-long-double-format=ieee \ -%endif %ifarch sparc --disable-linux-futex \ %endif @@ -3149,8 +3148,13 @@ end %endif %changelog -* Sat Jan 15 2022 Jakub Jelinek 12.0.0-0.5.1 -- default to -mabi=ieeelongdouble on ppc64le +* Tue Jan 18 2022 Jakub Jelinek 12.0.1-0.1 +- update from trunk + - PRs c++/104031, c/63272, fortran/83079, fortran/87711, fortran/97896, + libstdc++/103650, libstdc++/104080, middle-end/101292, target/103124, + target/103973, target/104005, testsuite/104035, testsuite/104037, + tree-optimization/80532, tree-optimization/101941, + tree-optimization/104064 * Sat Jan 15 2022 Jakub Jelinek 12.0.0-0.5 - update from trunk diff --git a/gcc12-fortran-fdec-add-missing-indexes.patch b/gcc12-fortran-fdec-add-missing-indexes.patch index d707b94..529868f 100644 --- a/gcc12-fortran-fdec-add-missing-indexes.patch +++ b/gcc12-fortran-fdec-add-missing-indexes.patch @@ -6,8 +6,8 @@ Subject: [PATCH 10/10] Fill in missing array dimensions using the lower bound Use -fdec-add-missing-indexes to enable feature. Also enabled by fdec. --- gcc/fortran/lang.opt | 8 ++++++++ - gcc/fortran/options.c | 1 + - gcc/fortran/resolve.c | 24 ++++++++++++++++++++++++ + gcc/fortran/options.cc | 1 + + gcc/fortran/resolve.cc | 24 ++++++++++++++++++++++++ gcc/testsuite/gfortran.dg/array_6.f90 | 23 +++++++++++++++++++++++ gcc/testsuite/gfortran.dg/array_7.f90 | 23 +++++++++++++++++++++++ gcc/testsuite/gfortran.dg/array_8.f90 | 23 +++++++++++++++++++++++ @@ -42,10 +42,10 @@ index 019c798cf09..f27de88ea3f 100644 fdec-blank-format-item Fortran Var(flag_dec_blank_format_item) Enable the use of blank format items in format strings. -diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc index 050f56fdc25..c3b2822685d 100644 ---- a/gcc/fortran/options.c -+++ b/gcc/fortran/options.c +--- a/gcc/fortran/options.cc ++++ b/gcc/fortran/options.cc @@ -84,6 +84,7 @@ set_dec_flags (int value) SET_BITFLAG (flag_dec_non_logical_if, value, value); SET_BITFLAG (flag_dec_promotion, value, value); @@ -54,10 +54,10 @@ index 050f56fdc25..c3b2822685d 100644 } /* Finalize DEC flags. */ -diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c +diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index fe7d0cc5944..0efeedab46e 100644 ---- a/gcc/fortran/resolve.c -+++ b/gcc/fortran/resolve.c +--- a/gcc/fortran/resolve.cc ++++ b/gcc/fortran/resolve.cc @@ -4806,6 +4806,30 @@ compare_spec_to_ref (gfc_array_ref *ar) if (ar->type == AR_FULL) return true; diff --git a/gcc12-fortran-fdec-duplicates.patch b/gcc12-fortran-fdec-duplicates.patch index b5d1104..5298baa 100644 --- a/gcc12-fortran-fdec-duplicates.patch +++ b/gcc12-fortran-fdec-duplicates.patch @@ -9,8 +9,8 @@ Some fixes by Jim MacArthur Addition of -fdec-duplicates by Mark Eggleston --- gcc/fortran/lang.opt | 4 ++++ - gcc/fortran/options.c | 1 + - gcc/fortran/symbol.c | 21 +++++++++++++++++-- + gcc/fortran/options.cc | 1 + + gcc/fortran/symbol.cc | 21 +++++++++++++++++-- .../gfortran.dg/duplicate_type_4.f90 | 13 ++++++++++++ .../gfortran.dg/duplicate_type_5.f90 | 13 ++++++++++++ .../gfortran.dg/duplicate_type_6.f90 | 13 ++++++++++++ @@ -40,10 +40,10 @@ index 2b1977c523b..52bd522051e 100644 fdec-include Fortran Var(flag_dec_include) Enable legacy parsing of INCLUDE as statement. -diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc index 3a0b98bf1ec..f19ba87f8a0 100644 ---- a/gcc/fortran/options.c -+++ b/gcc/fortran/options.c +--- a/gcc/fortran/options.cc ++++ b/gcc/fortran/options.cc @@ -77,6 +77,7 @@ set_dec_flags (int value) SET_BITFLAG (flag_dec_format_defaults, value, value); SET_BITFLAG (flag_dec_blank_format_item, value, value); @@ -52,10 +52,10 @@ index 3a0b98bf1ec..f19ba87f8a0 100644 } /* Finalize DEC flags. */ -diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c +diff --git a/gcc/fortran/symbol.cc b/gcc/fortran/symbol.cc index 3b988d1be22..9843175cc2a 100644 ---- a/gcc/fortran/symbol.c -+++ b/gcc/fortran/symbol.c +--- a/gcc/fortran/symbol.cc ++++ b/gcc/fortran/symbol.cc @@ -1995,6 +1995,8 @@ gfc_add_type (gfc_symbol *sym, gfc_typespec *ts, locus *where) if (sym->attr.result && type == BT_UNKNOWN && sym->ns->proc_name) type = sym->ns->proc_name->ts.type; diff --git a/gcc12-fortran-fdec-ichar.patch b/gcc12-fortran-fdec-ichar.patch index e7b0522..900b054 100644 --- a/gcc12-fortran-fdec-ichar.patch +++ b/gcc12-fortran-fdec-ichar.patch @@ -5,16 +5,16 @@ Subject: [PATCH 03/10] Allow more than one character as argument to ICHAR Use -fdec to enable. --- - gcc/fortran/check.c | 2 +- - gcc/fortran/simplify.c | 4 ++-- + gcc/fortran/check.cc | 2 +- + gcc/fortran/simplify.cc | 4 ++-- .../gfortran.dg/dec_ichar_with_string_1.f | 21 +++++++++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/dec_ichar_with_string_1.f -diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c +diff --git a/gcc/fortran/check.cc b/gcc/fortran/check.cc index 82db8e4e1b2..623c1cc470e 100644 ---- a/gcc/fortran/check.c -+++ b/gcc/fortran/check.c +--- a/gcc/fortran/check.cc ++++ b/gcc/fortran/check.cc @@ -3157,7 +3157,7 @@ gfc_check_ichar_iachar (gfc_expr *c, gfc_expr *kind) else return true; @@ -24,10 +24,10 @@ index 82db8e4e1b2..623c1cc470e 100644 { gfc_error ("Argument of %s at %L must be of length one", gfc_current_intrinsic, &c->where); -diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c +diff --git a/gcc/fortran/simplify.cc b/gcc/fortran/simplify.cc index 23317a2e2d9..9900572424f 100644 ---- a/gcc/fortran/simplify.c -+++ b/gcc/fortran/simplify.c +--- a/gcc/fortran/simplify.cc ++++ b/gcc/fortran/simplify.cc @@ -3261,7 +3261,7 @@ gfc_simplify_iachar (gfc_expr *e, gfc_expr *kind) if (e->expr_type != EXPR_CONSTANT) return NULL; diff --git a/gcc12-fortran-fdec-non-integer-index.patch b/gcc12-fortran-fdec-non-integer-index.patch index 074df3b..2c168fe 100644 --- a/gcc12-fortran-fdec-non-integer-index.patch +++ b/gcc12-fortran-fdec-non-integer-index.patch @@ -6,8 +6,8 @@ Subject: [PATCH 04/10] Allow non-integer substring indexes Use -fdec-non-integer-index compiler flag to enable. Also enabled by -fdec. --- gcc/fortran/lang.opt | 4 ++++ - gcc/fortran/options.c | 1 + - gcc/fortran/resolve.c | 20 +++++++++++++++++++ + gcc/fortran/options.cc | 1 + + gcc/fortran/resolve.cc | 20 +++++++++++++++++++ .../dec_not_integer_substring_indexes_1.f | 18 +++++++++++++++++ .../dec_not_integer_substring_indexes_2.f | 18 +++++++++++++++++ .../dec_not_integer_substring_indexes_3.f | 18 +++++++++++++++++ @@ -31,10 +31,10 @@ index c4da248f07c..d527c106bd6 100644 fdec-structure Fortran Var(flag_dec_structure) Enable support for DEC STRUCTURE/RECORD. -diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc index f19ba87f8a0..9a042f64881 100644 ---- a/gcc/fortran/options.c -+++ b/gcc/fortran/options.c +--- a/gcc/fortran/options.cc ++++ b/gcc/fortran/options.cc @@ -78,6 +78,7 @@ set_dec_flags (int value) SET_BITFLAG (flag_dec_blank_format_item, value, value); SET_BITFLAG (flag_dec_char_conversions, value, value); @@ -43,10 +43,10 @@ index f19ba87f8a0..9a042f64881 100644 } /* Finalize DEC flags. */ -diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c +diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index 4b90cb59902..bc0df0fdb99 100644 ---- a/gcc/fortran/resolve.c -+++ b/gcc/fortran/resolve.c +--- a/gcc/fortran/resolve.cc ++++ b/gcc/fortran/resolve.cc @@ -5131,6 +5131,16 @@ gfc_resolve_substring (gfc_ref *ref, bool *equal_length) if (!gfc_resolve_expr (ref->u.ss.start)) return false; diff --git a/gcc12-fortran-fdec-non-logical-if.patch b/gcc12-fortran-fdec-non-logical-if.patch index 0133d23..24a8fa4 100644 --- a/gcc12-fortran-fdec-non-logical-if.patch +++ b/gcc12-fortran-fdec-non-logical-if.patch @@ -6,8 +6,8 @@ Subject: [PATCH 07/10] Allow non-logical expressions in IF statements Use -fdec-non-logical-if to enable feature. Also enabled using -fdec. --- gcc/fortran/lang.opt | 4 ++ - gcc/fortran/options.c | 1 + - gcc/fortran/resolve.c | 60 ++++++++++++++++--- + gcc/fortran/options.cc | 1 + + gcc/fortran/resolve.cc | 60 ++++++++++++++++--- ...gical_expressions_if_statements_blocks_1.f | 25 ++++++++ ...gical_expressions_if_statements_blocks_2.f | 25 ++++++++ ...gical_expressions_if_statements_blocks_3.f | 25 ++++++++ @@ -37,10 +37,10 @@ index 4a269ebb22d..d886c2f33ed 100644 fdec-old-init Fortran Var(flag_dec_old_init) Enable support for old style initializers in derived types. -diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc index edbab483b36..a946c86790a 100644 ---- a/gcc/fortran/options.c -+++ b/gcc/fortran/options.c +--- a/gcc/fortran/options.cc ++++ b/gcc/fortran/options.cc @@ -81,6 +81,7 @@ set_dec_flags (int value) SET_BITFLAG (flag_dec_non_integer_index, value, value); SET_BITFLAG (flag_dec_old_init, value, value); @@ -49,10 +49,10 @@ index edbab483b36..a946c86790a 100644 } /* Finalize DEC flags. */ -diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c +diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index bc0df0fdb99..07dd039f3bf 100644 ---- a/gcc/fortran/resolve.c -+++ b/gcc/fortran/resolve.c +--- a/gcc/fortran/resolve.cc ++++ b/gcc/fortran/resolve.cc @@ -10789,10 +10789,31 @@ gfc_resolve_blocks (gfc_code *b, gfc_namespace *ns) switch (b->op) { diff --git a/gcc12-fortran-fdec-old-init.patch b/gcc12-fortran-fdec-old-init.patch index 8554f2e..d5661c8 100644 --- a/gcc12-fortran-fdec-old-init.patch +++ b/gcc12-fortran-fdec-old-init.patch @@ -9,9 +9,9 @@ Only single value expressions are allowed at the moment. Use -fdec-old-init to enable. Also enabled by -fdec. --- - gcc/fortran/decl.c | 27 +++++++++++++++---- + gcc/fortran/decl.cc | 27 +++++++++++++++---- gcc/fortran/lang.opt | 4 +++ - gcc/fortran/options.c | 1 + + gcc/fortran/options.cc | 1 + ...ec_derived_types_initialised_old_style_1.f | 25 +++++++++++++++++ ...ec_derived_types_initialised_old_style_2.f | 25 +++++++++++++++++ ...ec_derived_types_initialised_old_style_3.f | 26 ++++++++++++++++++ @@ -20,10 +20,10 @@ Use -fdec-old-init to enable. Also enabled by -fdec. create mode 100644 gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_2.f create mode 100644 gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_3.f -diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c +diff --git a/gcc/fortran/decl.cc b/gcc/fortran/decl.cc index 723915822f3..5c8c1b7981b 100644 ---- a/gcc/fortran/decl.c -+++ b/gcc/fortran/decl.c +--- a/gcc/fortran/decl.cc ++++ b/gcc/fortran/decl.cc @@ -2827,12 +2827,29 @@ variable_decl (int elem) but not components of derived types. */ else if (gfc_current_state () == COMP_DERIVED) @@ -74,10 +74,10 @@ index d527c106bd6..25cc948699b 100644 fdec-structure Fortran Var(flag_dec_structure) Enable support for DEC STRUCTURE/RECORD. -diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc index 9a042f64881..d6bd36c3a8a 100644 ---- a/gcc/fortran/options.c -+++ b/gcc/fortran/options.c +--- a/gcc/fortran/options.cc ++++ b/gcc/fortran/options.cc @@ -79,6 +79,7 @@ set_dec_flags (int value) SET_BITFLAG (flag_dec_char_conversions, value, value); SET_BITFLAG (flag_dec_duplicates, value, value); diff --git a/gcc12-fortran-fdec-override-kind.patch b/gcc12-fortran-fdec-override-kind.patch index e1c7b83..4df6ead 100644 --- a/gcc12-fortran-fdec-override-kind.patch +++ b/gcc12-fortran-fdec-override-kind.patch @@ -35,9 +35,9 @@ caused an internal compiler error. Contributed by Mark Eggleston --- - gcc/fortran/decl.c | 156 ++++++++++++++---- + gcc/fortran/decl.cc | 156 ++++++++++++++---- gcc/fortran/lang.opt | 4 + - gcc/fortran/options.c | 1 + + gcc/fortran/options.cc | 1 + .../dec_mixed_char_array_declaration_1.f | 13 ++ .../dec_mixed_char_array_declaration_2.f | 13 ++ .../dec_mixed_char_array_declaration_3.f | 13 ++ @@ -62,10 +62,10 @@ Contributed by Mark Eggleston create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f -diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c +diff --git a/gcc/fortran/decl.cc b/gcc/fortran/decl.cc index 5c8c1b7981b..f7dc9d8263d 100644 ---- a/gcc/fortran/decl.c -+++ b/gcc/fortran/decl.c +--- a/gcc/fortran/decl.cc ++++ b/gcc/fortran/decl.cc @@ -1213,6 +1213,54 @@ syntax: return MATCH_ERROR; } @@ -292,10 +292,10 @@ index 25cc948699b..4a269ebb22d 100644 fdec-old-init Fortran Var(flag_dec_old_init) Enable support for old style initializers in derived types. -diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc index d6bd36c3a8a..edbab483b36 100644 ---- a/gcc/fortran/options.c -+++ b/gcc/fortran/options.c +--- a/gcc/fortran/options.cc ++++ b/gcc/fortran/options.cc @@ -80,6 +80,7 @@ set_dec_flags (int value) SET_BITFLAG (flag_dec_duplicates, value, value); SET_BITFLAG (flag_dec_non_integer_index, value, value); diff --git a/gcc12-fortran-fdec-promotion.patch b/gcc12-fortran-fdec-promotion.patch index 36e0ff0..a20d151 100644 --- a/gcc12-fortran-fdec-promotion.patch +++ b/gcc12-fortran-fdec-promotion.patch @@ -11,12 +11,12 @@ Jeff Law Re-worked by Mark Eggleston --- - gcc/fortran/check.c | 71 +++++- - gcc/fortran/intrinsic.c | 5 + - gcc/fortran/iresolve.c | 91 ++++--- + gcc/fortran/check.cc | 71 +++++- + gcc/fortran/intrinsic.cc | 5 + + gcc/fortran/iresolve.cc | 91 ++++--- gcc/fortran/lang.opt | 4 + - gcc/fortran/options.c | 1 + - gcc/fortran/simplify.c | 240 ++++++++++++++---- + gcc/fortran/options.cc | 1 + + gcc/fortran/simplify.cc | 240 ++++++++++++++---- ...trinsic_int_real_array_const_promotion_1.f | 18 ++ ...trinsic_int_real_array_const_promotion_2.f | 18 ++ ...trinsic_int_real_array_const_promotion_3.f | 18 ++ @@ -51,10 +51,10 @@ Re-worked by Mark Eggleston create mode 100644 gcc/testsuite/gfortran.dg/dec_kind_promotion-2.f create mode 100644 gcc/testsuite/gfortran.dg/dec_kind_promotion-3.f -diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c +diff --git a/gcc/fortran/check.cc b/gcc/fortran/check.cc index 623c1cc470e..e20a834a860 100644 ---- a/gcc/fortran/check.c -+++ b/gcc/fortran/check.c +--- a/gcc/fortran/check.cc ++++ b/gcc/fortran/check.cc @@ -1396,12 +1396,40 @@ gfc_check_allocated (gfc_expr *array) } @@ -160,10 +160,10 @@ index 623c1cc470e..e20a834a860 100644 if (!int_or_real_check (a, 0)) return false; -diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c +diff --git a/gcc/fortran/intrinsic.cc b/gcc/fortran/intrinsic.cc index e68eff8bdbb..81b3a24c2be 100644 ---- a/gcc/fortran/intrinsic.c -+++ b/gcc/fortran/intrinsic.c +--- a/gcc/fortran/intrinsic.cc ++++ b/gcc/fortran/intrinsic.cc @@ -4467,6 +4467,11 @@ check_arglist (gfc_actual_arglist **ap, gfc_intrinsic_sym *sym, if (ts.kind == 0) ts.kind = actual->expr->ts.kind; @@ -176,10 +176,10 @@ index e68eff8bdbb..81b3a24c2be 100644 if (!gfc_compare_types (&ts, &actual->expr->ts)) { if (error_flag) -diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c +diff --git a/gcc/fortran/iresolve.cc b/gcc/fortran/iresolve.cc index e17fe45f080..b9cdaff2499 100644 ---- a/gcc/fortran/iresolve.c -+++ b/gcc/fortran/iresolve.c +--- a/gcc/fortran/iresolve.cc ++++ b/gcc/fortran/iresolve.cc @@ -817,19 +817,22 @@ gfc_resolve_dble (gfc_expr *f, gfc_expr *a) void gfc_resolve_dim (gfc_expr *f, gfc_expr *a, gfc_expr *p) @@ -340,10 +340,10 @@ index d886c2f33ed..4ca2f93f2df 100644 fdec-structure Fortran Var(flag_dec_structure) Enable support for DEC STRUCTURE/RECORD. -diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc index a946c86790a..15079c7e95a 100644 ---- a/gcc/fortran/options.c -+++ b/gcc/fortran/options.c +--- a/gcc/fortran/options.cc ++++ b/gcc/fortran/options.cc @@ -82,6 +82,7 @@ set_dec_flags (int value) SET_BITFLAG (flag_dec_old_init, value, value); SET_BITFLAG (flag_dec_override_kind, value, value); @@ -352,10 +352,10 @@ index a946c86790a..15079c7e95a 100644 } /* Finalize DEC flags. */ -diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c +diff --git a/gcc/fortran/simplify.cc b/gcc/fortran/simplify.cc index 9900572424f..3419e06fec2 100644 ---- a/gcc/fortran/simplify.c -+++ b/gcc/fortran/simplify.c +--- a/gcc/fortran/simplify.cc ++++ b/gcc/fortran/simplify.cc @@ -2333,39 +2333,79 @@ gfc_simplify_digits (gfc_expr *x) } diff --git a/gcc12-fortran-fdec-sequence.patch b/gcc12-fortran-fdec-sequence.patch index 7b9ce71..d79348e 100644 --- a/gcc12-fortran-fdec-sequence.patch +++ b/gcc12-fortran-fdec-sequence.patch @@ -7,8 +7,8 @@ Subject: [PATCH 09/10] Add the SEQUENCE attribute by default if it's not Use -fdec-sequence to enable this feature. Also enabled by -fdec. --- gcc/fortran/lang.opt | 4 ++ - gcc/fortran/options.c | 1 + - gcc/fortran/resolve.c | 13 ++++- + gcc/fortran/options.cc | 1 + + gcc/fortran/resolve.cc | 13 ++++- ...dd_SEQUENCE_to_COMMON_block_by_default_1.f | 57 +++++++++++++++++++ ...dd_SEQUENCE_to_COMMON_block_by_default_2.f | 57 +++++++++++++++++++ ...dd_SEQUENCE_to_COMMON_block_by_default_3.f | 57 +++++++++++++++++++ @@ -32,10 +32,10 @@ index 4ca2f93f2df..019c798cf09 100644 fdec-structure Fortran Var(flag_dec_structure) Enable support for DEC STRUCTURE/RECORD. -diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc index 15079c7e95a..050f56fdc25 100644 ---- a/gcc/fortran/options.c -+++ b/gcc/fortran/options.c +--- a/gcc/fortran/options.cc ++++ b/gcc/fortran/options.cc @@ -83,6 +83,7 @@ set_dec_flags (int value) SET_BITFLAG (flag_dec_override_kind, value, value); SET_BITFLAG (flag_dec_non_logical_if, value, value); @@ -44,10 +44,10 @@ index 15079c7e95a..050f56fdc25 100644 } /* Finalize DEC flags. */ -diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c +diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index 07dd039f3bf..fe7d0cc5944 100644 ---- a/gcc/fortran/resolve.c -+++ b/gcc/fortran/resolve.c +--- a/gcc/fortran/resolve.cc ++++ b/gcc/fortran/resolve.cc @@ -978,9 +978,16 @@ resolve_common_vars (gfc_common_head *common_block, bool named_common) if (!(csym->ts.u.derived->attr.sequence diff --git a/gcc12-fortran-flogical-as-integer.patch b/gcc12-fortran-flogical-as-integer.patch index 41cbf60..28df5e1 100644 --- a/gcc12-fortran-flogical-as-integer.patch +++ b/gcc12-fortran-flogical-as-integer.patch @@ -14,7 +14,7 @@ Note: using this feature will disable bitwise logical operations enabled by -fdec. --- gcc/fortran/lang.opt | 4 ++ - gcc/fortran/resolve.c | 55 ++++++++++++++++++- + gcc/fortran/resolve.cc | 55 ++++++++++++++++++- .../logical_to_integer_and_vice_versa_1.f | 31 +++++++++++ .../logical_to_integer_and_vice_versa_2.f | 31 +++++++++++ .../logical_to_integer_and_vice_versa_3.f | 33 +++++++++++ @@ -40,10 +40,10 @@ index 52bd522051e..c4da248f07c 100644 fdefault-double-8 Fortran Var(flag_default_double) Set the default double precision kind to an 8 byte wide type. -diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c +diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index c075d0fa0c4..4b90cb59902 100644 ---- a/gcc/fortran/resolve.c -+++ b/gcc/fortran/resolve.c +--- a/gcc/fortran/resolve.cc ++++ b/gcc/fortran/resolve.cc @@ -3915,7 +3915,6 @@ lookup_uop_fuzzy (const char *op, gfc_symtree *uop) return gfc_closest_fuzzy_match (op, candidates); } diff --git a/gcc12-hack.patch b/gcc12-hack.patch index 3a5f3f3..e98649e 100644 --- a/gcc12-hack.patch +++ b/gcc12-hack.patch @@ -65,8 +65,8 @@ GOCFLAGS="$(GOCFLAGS) $${flags}" \ GDCFLAGS="$(GDCFLAGS) $${flags}" \ CXXFLAGS="$(CXXFLAGS) $${flags}" \ ---- libcpp/macro.c.jj 2019-01-09 13:01:21.420552123 +0100 -+++ libcpp/macro.c 2019-01-11 18:18:17.736876285 +0100 +--- libcpp/macro.cc.jj 2019-01-09 13:01:21.420552123 +0100 ++++ libcpp/macro.cc 2019-01-11 18:18:17.736876285 +0100 @@ -3256,8 +3256,6 @@ static cpp_macro * create_iso_definition (cpp_reader *pfile) { @@ -98,8 +98,8 @@ goto out; } ---- libcpp/expr.c.jj 2019-01-09 13:01:22.415535734 +0100 -+++ libcpp/expr.c 2019-01-11 18:16:23.444726882 +0100 +--- libcpp/expr.cc.jj 2019-01-09 13:01:22.415535734 +0100 ++++ libcpp/expr.cc 2019-01-11 18:16:23.444726882 +0100 @@ -803,16 +803,17 @@ cpp_classify_number (cpp_reader *pfile, if ((result & CPP_N_WIDTH) == CPP_N_LARGE && CPP_OPTION (pfile, cpp_warn_long_long)) diff --git a/gcc12-isl-dl.patch b/gcc12-isl-dl.patch index b3982f9..825fb88 100644 --- a/gcc12-isl-dl.patch +++ b/gcc12-isl-dl.patch @@ -626,8 +626,8 @@ +extern const char *get_isl_version (bool); #endif ---- gcc/graphite.c.jj 2015-11-04 14:15:32.000000000 +0100 -+++ gcc/graphite.c 2015-11-04 14:56:02.645536409 +0100 +--- gcc/graphite.cc.jj 2015-11-04 14:15:32.000000000 +0100 ++++ gcc/graphite.cc 2015-11-04 14:56:02.645536409 +0100 @@ -60,6 +60,35 @@ along with GCC; see the file COPYING3. #include "tree-into-ssa.h" #include "graphite.h" @@ -695,8 +695,8 @@ #else /* If isl is not available: #ifndef HAVE_isl. */ static void ---- gcc/toplev.c.jj 2017-02-19 13:02:31.000000000 +0100 -+++ gcc/toplev.c 2017-02-19 16:50:25.536301350 +0100 +--- gcc/toplev.cc.jj 2017-02-19 13:02:31.000000000 +0100 ++++ gcc/toplev.cc 2017-02-19 16:50:25.536301350 +0100 @@ -94,6 +94,7 @@ along with GCC; see the file COPYING3. #ifdef HAVE_isl diff --git a/gcc12-isl-dl2.patch b/gcc12-isl-dl2.patch index e16672c..5402a8e 100644 --- a/gcc12-isl-dl2.patch +++ b/gcc12-isl-dl2.patch @@ -1,12 +1,12 @@ 2011-04-04 Jakub Jelinek - * toplev.c (toplev_main_argv): New variable. + * toplev.cc (toplev_main_argv): New variable. (toplev_main): Initialize it. - * graphite.c (init_isl_pointers): Load libisl.so.15 from gcc's private + * graphite.cc (init_isl_pointers): Load libisl.so.15 from gcc's private directory. ---- gcc/toplev.c.jj 2008-12-09 23:59:10.000000000 +0100 -+++ gcc/toplev.c 2009-01-27 14:33:52.000000000 +0100 +--- gcc/toplev.cc.jj 2008-12-09 23:59:10.000000000 +0100 ++++ gcc/toplev.cc 2009-01-27 14:33:52.000000000 +0100 @@ -113,6 +113,8 @@ static void finalize (bool); static void crash_signal (int) ATTRIBUTE_NORETURN; static void compile_file (void); @@ -25,8 +25,8 @@ /* Initialization of GCC's environment, and diagnostics. */ general_init (argv[0], m_init_signals); ---- gcc/graphite.c.jj 2010-12-01 10:24:32.000000000 -0500 -+++ gcc/graphite.c 2010-12-01 11:46:07.832118193 -0500 +--- gcc/graphite.cc.jj 2010-12-01 10:24:32.000000000 -0500 ++++ gcc/graphite.cc 2010-12-01 11:46:07.832118193 -0500 @@ -64,11 +64,39 @@ __typeof (isl_pointers__) isl_pointers__ static bool init_isl_pointers (void) diff --git a/gcc12-libstdc++-docs.patch b/gcc12-libstdc++-docs.patch index 25aa718..cdcd435 100644 --- a/gcc12-libstdc++-docs.patch +++ b/gcc12-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 12.0.0 ++ Release 12.0.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 12.0.0 release, ++ for the 12.0.1 release, + online for each GCC release and diff --git a/gcc12-pr104025.patch b/gcc12-pr104025.patch new file mode 100644 index 0000000..3010236 --- /dev/null +++ b/gcc12-pr104025.patch @@ -0,0 +1,42 @@ +2022-01-18 Jakub Jelinek + + PR c++/104025 + * parser.cc (cp_parser_id_expression): Save and restore input_location + around cp_parser_skip_entire_template_parameter_list call for + -Wmissing-template-keyword. + + * g++.dg/warn/pr104025.C: New test. + +--- gcc/cp/parser.cc.jj 2022-01-17 18:05:04.797307506 +0100 ++++ gcc/cp/parser.cc 2022-01-17 20:27:33.642711859 +0100 +@@ -6254,6 +6254,7 @@ cp_parser_id_expression (cp_parser *pars + OPT_Wmissing_template_keyword)) + { + saved_token_sentinel toks (parser->lexer, STS_ROLLBACK); ++ iloc_sentinel ils (UNKNOWN_LOCATION); + if (cp_parser_skip_entire_template_parameter_list (parser) + /* An operator after the > suggests that the > ends a + template-id; a name or literal suggests that the > is an +--- gcc/testsuite/g++.dg/warn/pr104025.C.jj 2022-01-17 20:31:17.320591249 +0100 ++++ gcc/testsuite/g++.dg/warn/pr104025.C 2022-01-17 20:31:09.068706373 +0100 +@@ -0,0 +1,20 @@ ++// PR c++/104025 ++// { dg-do compile } ++// { dg-options "-Wmissing-template-keyword -fcompare-debug" } ++ ++void bar (int); ++ ++struct S { int i; }; ++ ++template ++struct T ++{ ++ int m; ++ C c; ++ void foo () ++ { ++ bar (c.i < m); ++ } ++}; ++ ++template void T::foo (); diff --git a/sources b/sources index 62293b2..5e6f821 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.0-20220115.tar.xz) = 27eb968a3dc3387ef381c8b58a874eec2db6c57cf71ca9c6492d9078776b9d5d29e2d4ccd643568e6e4967ec7a6b531690d51d9355e2ef66bb2978dc08b8005f +SHA512 (gcc-12.0.1-20220118.tar.xz) = 903418bda48240537a0f7b74687e70042d56cea7bc079319380098c3465079d064083e5d6bad4d9d44bcf7e7f929dd6f692ab638ff40824e8f2f2712991f9290 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 diff --git a/update-gcc.sh b/update-gcc.sh index 4592048..b9e8330 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -3,5 +3,5 @@ git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 d=`date --iso | sed 's/-//g'` -git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-12.0.0-$d/ $1 | xz -9e > gcc-12.0.0-$d.tar.xz +git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-12.0.1-$d/ $1 | xz -9e > gcc-12.0.1-$d.tar.xz rm -rf gcc-dir.tmp From 1d6884964d93b8c51c5da6c9f20c7661169c50e7 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 18 Jan 2022 14:52:08 +0100 Subject: [PATCH 084/293] 12.0.1-0.1.1 --- gcc.spec | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 29ddb2f..10fce4c 100644 --- a/gcc.spec +++ b/gcc.spec @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.1%{?dist} +Release: %{gcc_release}.1.1%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -995,6 +995,9 @@ CONFIGURE_OPTS="\ %ifarch sparc sparcv9 sparc64 ppc ppc64 ppc64le ppc64p7 s390 s390x alpha --with-long-double-128 \ %endif +%ifarch ppc64le + --with-long-double-format=ieee \ +%endif %ifarch sparc --disable-linux-futex \ %endif @@ -3148,6 +3151,9 @@ end %endif %changelog +* Tue Jan 18 2022 Jakub Jelinek 12.0.1-0.1.1 +- default to -mabi=ieeelongdouble on ppc64le + * Tue Jan 18 2022 Jakub Jelinek 12.0.1-0.1 - update from trunk - PRs c++/104031, c/63272, fortran/83079, fortran/87711, fortran/97896, From b2295576ca1b84d438365cd3b1d6063e958c0284 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 18 Jan 2022 21:54:19 +0100 Subject: [PATCH 085/293] 12.0.0-0.2 --- gcc.spec | 16 ++++-- gcc12-pr104103.patch | 20 +++++++ gcc12-pr104104.patch | 121 +++++++++++++++++++++++++++++++++++++++++++ sources | 2 +- 4 files changed, 155 insertions(+), 4 deletions(-) create mode 100644 gcc12-pr104103.patch create mode 100644 gcc12-pr104104.patch diff --git a/gcc.spec b/gcc.spec index 10fce4c..5379e6f 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ %global DATE 20220118 -%global gitrev 880787aef7a985a80f88a14f830fb554a33b1a87 +%global gitrev c682bc883d1a29c3f697f065af23759f3d6757bc %global gcc_version 12.0.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.1.1%{?dist} +Release: %{gcc_release}.2%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -270,6 +270,8 @@ Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch Patch12: gcc12-pr104025.patch +Patch13: gcc12-pr104103.patch +Patch14: gcc12-pr104104.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -792,6 +794,8 @@ to NVidia PTX capable devices if available. %endif %patch11 -p0 -b .d-shared-libphobos~ %patch12 -p0 -b .pr104025~ +%patch13 -p0 -b .pr104103~ +%patch14 -p0 -b .pr104104~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3151,8 +3155,14 @@ end %endif %changelog -* Tue Jan 18 2022 Jakub Jelinek 12.0.1-0.1.1 +* Tue Jan 18 2022 Jakub Jelinek 12.0.1-0.2 +- update from trunk + - PRs c++/104007, c++/104074, fortran/103692, ipa/103989, libstdc++/101124, + libstdc++/104098, middle-end/103163, tree-optimization/103987, + tree-optimization/104038 - default to -mabi=ieeelongdouble on ppc64le +- fix -Wdangling-pointer with -fsanitize=address (PR middle-end/104103) +- fix -masm=intel (PR target/104104) * Tue Jan 18 2022 Jakub Jelinek 12.0.1-0.1 - update from trunk diff --git a/gcc12-pr104103.patch b/gcc12-pr104103.patch new file mode 100644 index 0000000..cdf421d --- /dev/null +++ b/gcc12-pr104103.patch @@ -0,0 +1,20 @@ +2022-01-18 Jakub Jelinek + + PR middle-end/104103 + * gimple-ssa-warn-access.cc (pass_waccess::check_call): Don't check + .ASAN_MARK calls. + +--- gcc/gimple-ssa-warn-access.cc.jj 2022-01-16 20:55:46.783932110 +0100 ++++ gcc/gimple-ssa-warn-access.cc 2022-01-18 20:56:13.697780325 +0100 +@@ -4232,6 +4232,11 @@ pass_waccess::check_call (gcall *stmt) + if (gimple_call_builtin_p (stmt, BUILT_IN_NORMAL)) + check_builtin (stmt); + ++ /* .ASAN_MARK doesn't access any vars, only modifies shadow memory. */ ++ if (gimple_call_internal_p (stmt) ++ && gimple_call_internal_fn (stmt) == IFN_ASAN_MARK) ++ return; ++ + if (!m_early_checks_p) + if (tree callee = gimple_call_fndecl (stmt)) + { diff --git a/gcc12-pr104104.patch b/gcc12-pr104104.patch new file mode 100644 index 0000000..d81b3f0 --- /dev/null +++ b/gcc12-pr104104.patch @@ -0,0 +1,121 @@ +2022-01-18 Jakub Jelinek + + PR target/104104 + * config/i386/sse.md + (__, + avx512fp16_sh_v8hf, + avx512dq_mul3, _permvar, + avx2_perm_1, avx512f_perm_1, + avx512dq_rangep, + avx512dq_ranges, + _getmant, + avx512f_vgetmant): + Use vxorps\t%x0, %x0, %x0 instead of vxorps\t{%x0, %x0, %x0}. + + * gcc.target/i386/pr104104.c: New test. + +--- gcc/config/i386/sse.md.jj 2022-01-18 11:58:59.156988142 +0100 ++++ gcc/config/i386/sse.md 2022-01-18 21:20:40.022477778 +0100 +@@ -6539,7 +6539,7 @@ (define_insn "__< + { + if (TARGET_DEST_FALSE_DEP_FOR_GLC + && ) +- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); ++ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); + return "v\t{%2, %1, %0|%0, %1, %2}"; + } + [(set_attr "type" "ssemul") +@@ -6750,7 +6750,7 @@ (define_insn "avx512fp16_ + { + if (TARGET_DEST_FALSE_DEP_FOR_GLC + && ) +- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); ++ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); + return "vsh\t{%2, %1, %0|%0, %1, %2}"; + } + [(set_attr "type" "ssemul") +@@ -15222,7 +15222,7 @@ (define_insn "avx512dq_mul3 + && !reg_mentioned_p (operands[0], operands[1]) + && !reg_mentioned_p (operands[0], operands[2])) +- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); ++ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); + return "vpmullq\t{%2, %1, %0|%0, %1, %2}"; + } + [(set_attr "type" "sseimul") +@@ -24658,7 +24658,7 @@ (define_insn "_permvar + && !reg_mentioned_p (operands[0], operands[1]) + && !reg_mentioned_p (operands[0], operands[2])) +- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); ++ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); + return "vperm\t{%1, %2, %0|%0, %2, %1}"; + } + [(set_attr "type" "sselog") +@@ -24900,7 +24900,7 @@ (define_insn "avx2_perm_1 + && !reg_mentioned_p (operands[0], operands[1])) +- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); ++ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); + return "vperm\t{%2, %1, %0|%0, %1, %2}"; + } + [(set_attr "type" "sselog") +@@ -24975,7 +24975,7 @@ (define_insn "avx512f_perm_1 + && !reg_mentioned_p (operands[0], operands[1])) +- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); ++ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); + return "vperm\t{%2, %1, %0|%0, %1, %2}"; + } + [(set_attr "type" "sselog") +@@ -26880,7 +26880,7 @@ (define_insn "avx512dq_rangep + && !reg_mentioned_p (operands[0], operands[1]) + && !reg_mentioned_p (operands[0], operands[2])) +- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); ++ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); + return "vrange\t{%3, %2, %1, %0|%0, %1, %2, %3}"; + } + [(set_attr "type" "sse") +@@ -26903,7 +26903,7 @@ (define_insn "avx512dq_ranges + && !reg_mentioned_p (operands[0], operands[1]) + && !reg_mentioned_p (operands[0], operands[2])) +- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); ++ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); + return "vrange\t{%3, %2, %1, %0|%0, %1, %2, %3}"; + } + [(set_attr "type" "sse") +@@ -26949,7 +26949,7 @@ (define_insn "_getmant + && MEM_P (operands[1])) +- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); ++ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); + return "vgetmant\t{%2, %1, %0|%0, %1, %2}"; + } + [(set_attr "prefix" "evex") +@@ -26971,7 +26971,7 @@ (define_insn "avx512f_vgetmant + && !reg_mentioned_p (operands[0], operands[1]) + && !reg_mentioned_p (operands[0], operands[2])) +- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); ++ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); + return "vgetmant\t{%3, %2, %1, %0|%0, %1, %2, %3}"; + } + [(set_attr "prefix" "evex") +--- gcc/testsuite/gcc.target/i386/pr104104.c.jj 2022-01-18 21:38:17.007906673 +0100 ++++ gcc/testsuite/gcc.target/i386/pr104104.c 2022-01-18 21:36:10.475623148 +0100 +@@ -0,0 +1,10 @@ ++/* PR target/104104 */ ++/* { dg-do assemble { target vect_simd_clones } } */ ++/* { dg-require-effective-target masm_intel } */ ++/* { dg-options "-march=alderlake -masm=intel -O1 -fallow-store-data-races -funroll-all-loops" } */ ++ ++__attribute__ ((simd)) short int ++foo (void) ++{ ++ return 0; ++} diff --git a/sources b/sources index 5e6f821..43d2957 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.1-20220118.tar.xz) = 903418bda48240537a0f7b74687e70042d56cea7bc079319380098c3465079d064083e5d6bad4d9d44bcf7e7f929dd6f692ab638ff40824e8f2f2712991f9290 +SHA512 (gcc-12.0.1-20220118.tar.xz) = 5fab239e915e71a8986a122e3f897f2236f21f0f183da33cad2ace8f34823cd8f32c7c0dfceffbfeae17cd99b656f242d30ddeb94eaafe3edf858ea88ec59016 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From dc6e17c8c28155f3e0da86ad723ff5b15c85b11a Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 19 Jan 2022 17:00:04 +0100 Subject: [PATCH 086/293] Fix up gcc12-fortran-fdec-promotion.patch patch. --- gcc12-fortran-fdec-promotion.patch | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/gcc12-fortran-fdec-promotion.patch b/gcc12-fortran-fdec-promotion.patch index a20d151..870d62a 100644 --- a/gcc12-fortran-fdec-promotion.patch +++ b/gcc12-fortran-fdec-promotion.patch @@ -180,7 +180,7 @@ diff --git a/gcc/fortran/iresolve.cc b/gcc/fortran/iresolve.cc index e17fe45f080..b9cdaff2499 100644 --- a/gcc/fortran/iresolve.cc +++ b/gcc/fortran/iresolve.cc -@@ -817,19 +817,22 @@ gfc_resolve_dble (gfc_expr *f, gfc_expr *a) +@@ -834,19 +834,22 @@ gfc_resolve_dble (gfc_expr *f, gfc_expr void gfc_resolve_dim (gfc_expr *f, gfc_expr *a, gfc_expr *p) { @@ -211,8 +211,8 @@ index e17fe45f080..b9cdaff2499 100644 + f->ts = a->ts; f->value.function.name - = gfc_get_string ("__dim_%c%d", gfc_type_letter (f->ts.type), f->ts.kind); -@@ -1606,14 +1609,17 @@ gfc_resolve_minmax (const char *name, gfc_expr *f, gfc_actual_arglist *args) + = gfc_get_string ("__dim_%c%d", gfc_type_letter (f->ts.type), +@@ -1622,14 +1625,17 @@ gfc_resolve_minmax (const char *name, gf /* Find the largest type kind. */ for (a = args->next; a; a = a->next) { @@ -232,7 +232,7 @@ index e17fe45f080..b9cdaff2499 100644 gfc_convert_type (a->expr, &f->ts, 2); } -@@ -2106,19 +2112,22 @@ gfc_resolve_minval (gfc_expr *f, gfc_expr *array, gfc_expr *dim, +@@ -2130,19 +2136,22 @@ gfc_resolve_minval (gfc_expr *f, gfc_exp void gfc_resolve_mod (gfc_expr *f, gfc_expr *a, gfc_expr *p) { @@ -263,8 +263,8 @@ index e17fe45f080..b9cdaff2499 100644 + f->ts = a->ts; f->value.function.name - = gfc_get_string ("__mod_%c%d", gfc_type_letter (f->ts.type), f->ts.kind); -@@ -2128,19 +2137,22 @@ gfc_resolve_mod (gfc_expr *f, gfc_expr *a, gfc_expr *p) + = gfc_get_string ("__mod_%c%d", gfc_type_letter (f->ts.type), +@@ -2153,19 +2162,22 @@ gfc_resolve_mod (gfc_expr *f, gfc_expr * void gfc_resolve_modulo (gfc_expr *f, gfc_expr *a, gfc_expr *p) { @@ -296,7 +296,7 @@ index e17fe45f080..b9cdaff2499 100644 f->value.function.name = gfc_get_string ("__modulo_%c%d", gfc_type_letter (f->ts.type), -@@ -2515,9 +2527,26 @@ gfc_resolve_shift (gfc_expr *f, gfc_expr *i, gfc_expr *shift ATTRIBUTE_UNUSED) +@@ -2543,9 +2555,26 @@ gfc_resolve_shift (gfc_expr *f, gfc_expr void @@ -323,8 +323,8 @@ index e17fe45f080..b9cdaff2499 100644 + f->ts = a->ts; + } f->value.function.name - = gfc_get_string ("__sign_%c%d", gfc_type_letter (a->ts.type), a->ts.kind); - } + = gfc_get_string ("__sign_%c%d", gfc_type_letter (a->ts.type), + gfc_type_abi_kind (&a->ts)); diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt index d886c2f33ed..4ca2f93f2df 100644 --- a/gcc/fortran/lang.opt From b8dc449a650a5ad7fb9ff5d23af2f654916ca91c Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 20 Jan 2022 03:59:43 +0000 Subject: [PATCH 087/293] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gcc.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 5379e6f..05b55f8 100644 --- a/gcc.spec +++ b/gcc.spec @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.2%{?dist} +Release: %{gcc_release}.2%{?dist}.1 # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3155,6 +3155,9 @@ end %endif %changelog +* Thu Jan 20 2022 Fedora Release Engineering - 12.0.1-0.2.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Tue Jan 18 2022 Jakub Jelinek 12.0.1-0.2 - update from trunk - PRs c++/104007, c++/104074, fortran/103692, ipa/103989, libstdc++/101124, From 067e0a8c2ecb0694dc7815cd7bffc799b4c96d9a Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 25 Jan 2022 14:02:53 +0100 Subject: [PATCH 088/293] 12.0.1-0.3 --- .gitignore | 1 + gcc.spec | 47 +- gcc12-ifcvt-revert.patch | 1054 ++++++++++++++++++++++++++++++++++++++ gcc12-pr104025.patch | 42 -- gcc12-pr104103.patch | 20 - gcc12-pr104104.patch | 121 ----- gcc12-pr104194.patch | 92 ++++ gcc12-pr94193.patch | 39 ++ sources | 2 +- 9 files changed, 1226 insertions(+), 192 deletions(-) create mode 100644 gcc12-ifcvt-revert.patch delete mode 100644 gcc12-pr104025.patch delete mode 100644 gcc12-pr104103.patch delete mode 100644 gcc12-pr104104.patch create mode 100644 gcc12-pr104194.patch create mode 100644 gcc12-pr94193.patch diff --git a/.gitignore b/.gitignore index 21dcf61..990b516 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,4 @@ /gcc-12.0.0-20220112.tar.xz /gcc-12.0.0-20220115.tar.xz /gcc-12.0.1-20220118.tar.xz +/gcc-12.0.1-20220125.tar.xz diff --git a/gcc.spec b/gcc.spec index 5379e6f..49a94f6 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,4 +1,4 @@ -%global DATE 20220118 +%global DATE 20220125 %global gitrev c682bc883d1a29c3f697f065af23759f3d6757bc %global gcc_version 12.0.1 %global gcc_major 12 @@ -11,6 +11,7 @@ %global _performance_build 1 # Hardening slows the compiler way too much. %undefine _hardened_build +%undefine _auto_set_build_flags %if 0%{?fedora} > 27 || 0%{?rhel} > 7 # Until annobin is fixed (#1519165). %undefine _annotated_build @@ -119,7 +120,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.2%{?dist} +Release: %{gcc_release}.3%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -269,9 +270,9 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch -Patch12: gcc12-pr104025.patch -Patch13: gcc12-pr104103.patch -Patch14: gcc12-pr104104.patch +Patch12: gcc12-pr104194.patch +Patch13: gcc12-pr94193.patch +Patch14: gcc12-ifcvt-revert.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -793,9 +794,9 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr104025~ -%patch13 -p0 -b .pr104103~ -%patch14 -p0 -b .pr104104~ +%patch12 -p0 -b .pr104194~ +%patch13 -p0 -b .pr94193~ +%patch14 -p0 -b .ifcvt-revert~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3155,6 +3156,36 @@ end %endif %changelog +* Tue Jan 24 2022 Jakub Jelinek 12.0.1-0.3 +- update from trunk + - PRs ada/103538, analyzer/94362, analyzer/103685, analyzer/104062, + analyzer/104089, analyzer/104150, analyzer/104159, bootstrap/104135, + bootstrap/104170, c++/20040, c++/55227, c++/91911, c++/101072, + c++/101405, c++/101715, c++/102300, c++/102338, c++/103631, + c++/103672, c++/103681, c++/104025, c++/104055, c++/104084, + c++/104134, c++/104139, c++/104148, c++/104173, c++/104182, + c++/104197, c/104115, debug/103874, fortran/102621, fortran/103695, + fortran/104127, libgcc/104207, libstdc++/87193, libstdc++/104019, + libstdc++/104032, libstdc++/104099, libstdc++/104101, + libstdc++/104123, libstdc++/104174, middle-end/100786, + middle-end/102860, middle-end/104069, middle-end/104076, + middle-end/104140, other/104176, other/104181, preprocessor/104030, + rtl-optimization/102478, sanitizer/99673, sanitizer/104158, + target/64821, target/94193, target/100784, target/102517, + target/103676, target/103771, target/104090, target/104136, + target/104188, testsuite/102833, testsuite/103763, testsuite/104021, + testsuite/104022, testsuite/104109, tree-optimization/100089, + tree-optimization/100740, tree-optimization/101508, + tree-optimization/101972, tree-optimization/102087, + tree-optimization/102131, tree-optimization/103721, + tree-optimization/103997, tree-optimization/104112, + tree-optimization/104114, tree-optimization/104152, + tree-optimization/104156, tree-optimization/104214 + - don't emit C++ mangling aliases for compatibility with GCC 8.1 ppc64le + IEEE quad long double (PR target/104172) +- mark IEEE quad long double in DWARF as implicit typedef to _Float128 + (PR debug/104194) + * Tue Jan 18 2022 Jakub Jelinek 12.0.1-0.2 - update from trunk - PRs c++/104007, c++/104074, fortran/103692, ipa/103989, libstdc++/101124, diff --git a/gcc12-ifcvt-revert.patch b/gcc12-ifcvt-revert.patch new file mode 100644 index 0000000..2261669 --- /dev/null +++ b/gcc12-ifcvt-revert.patch @@ -0,0 +1,1054 @@ +Revert r12-674{3,4,5,6,7,8,9}, as there are several PRs reported against +those changes: PR104153, PR104154 and PR104198 at least. + +--- gcc/config/rs6000/rs6000.cc ++++ gcc/config/rs6000/rs6000.cc +@@ -16373,10 +16373,10 @@ rs6000_emit_minmax (rtx dest, enum rtx_code code, rtx op0, rtx op1) + c = GEU; + + if (code == SMAX || code == UMAX) +- target = emit_conditional_move (dest, { c, op0, op1, mode }, ++ target = emit_conditional_move (dest, c, op0, op1, mode, + op0, op1, mode, 0); + else +- target = emit_conditional_move (dest, { c, op0, op1, mode }, ++ target = emit_conditional_move (dest, c, op0, op1, mode, + op1, op0, mode, 0); + gcc_assert (target); + if (target != dest) +@@ -22769,7 +22769,7 @@ rs6000_emit_swsqrt (rtx dst, rtx src, bool recip) + + if (mode == SFmode) + { +- rtx target = emit_conditional_move (e, { GT, src, zero, mode }, ++ rtx target = emit_conditional_move (e, GT, src, zero, mode, + e, zero, mode, 0); + if (target != e) + emit_move_insn (e, target); +--- gcc/expmed.cc ++++ gcc/expmed.cc +@@ -4124,8 +4124,8 @@ expand_sdiv_pow2 (scalar_int_mode mode, rtx op0, HOST_WIDE_INT d) + temp = force_reg (mode, temp); + + /* Construct "temp2 = (temp2 < 0) ? temp : temp2". */ +- temp2 = emit_conditional_move (temp2, { LT, temp2, const0_rtx, mode }, +- temp, temp2, mode, 0); ++ temp2 = emit_conditional_move (temp2, LT, temp2, const0_rtx, ++ mode, temp, temp2, mode, 0); + if (temp2) + { + rtx_insn *seq = get_insns (); +@@ -6127,10 +6127,10 @@ emit_store_flag (rtx target, enum rtx_code code, rtx op0, rtx op1, + return 0; + + if (and_them) +- tem = emit_conditional_move (target, { code, op0, op1, mode }, ++ tem = emit_conditional_move (target, code, op0, op1, mode, + tem, const0_rtx, GET_MODE (tem), 0); + else +- tem = emit_conditional_move (target, { code, op0, op1, mode }, ++ tem = emit_conditional_move (target, code, op0, op1, mode, + trueval, tem, GET_MODE (tem), 0); + + if (tem == 0) +--- gcc/expr.cc ++++ gcc/expr.cc +@@ -8824,9 +8824,8 @@ expand_cond_expr_using_cmove (tree treeop0 ATTRIBUTE_UNUSED, + op2 = gen_lowpart (mode, op2); + + /* Try to emit the conditional move. */ +- insn = emit_conditional_move (temp, +- { comparison_code, op00, op01, +- comparison_mode }, ++ insn = emit_conditional_move (temp, comparison_code, ++ op00, op01, comparison_mode, + op1, op2, mode, + unsignedp); + +@@ -9717,9 +9716,8 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode, + start_sequence (); + + /* Try to emit the conditional move. */ +- insn = emit_conditional_move (target, +- { comparison_code, +- op0, cmpop1, mode }, ++ insn = emit_conditional_move (target, comparison_code, ++ op0, cmpop1, mode, + op0, op1, mode, + unsignedp); + +--- gcc/ifcvt.cc ++++ gcc/ifcvt.cc +@@ -83,7 +83,7 @@ static rtx_insn *last_active_insn (basic_block, int); + static rtx_insn *find_active_insn_before (basic_block, rtx_insn *); + static rtx_insn *find_active_insn_after (basic_block, rtx_insn *); + static basic_block block_fallthru (basic_block); +-static rtx cond_exec_get_condition (rtx_insn *, bool); ++static rtx cond_exec_get_condition (rtx_insn *); + static rtx noce_get_condition (rtx_insn *, rtx_insn **, bool); + static int noce_operand_ok (const_rtx); + static void merge_if_block (ce_if_block *); +@@ -98,14 +98,6 @@ static int dead_or_predicable (basic_block, basic_block, basic_block, + edge, int); + static void noce_emit_move_insn (rtx, rtx); + static rtx_insn *block_has_only_trap (basic_block); +-static void need_cmov_or_rewire (basic_block, hash_set *, +- hash_map *); +-static bool noce_convert_multiple_sets_1 (struct noce_if_info *, +- hash_set *, +- hash_map *, +- auto_vec *, +- auto_vec *, +- auto_vec *, int *); + + /* Count the number of non-jump active insns in BB. */ + +@@ -433,7 +425,7 @@ cond_exec_process_insns (ce_if_block *ce_info ATTRIBUTE_UNUSED, + /* Return the condition for a jump. Do not do any special processing. */ + + static rtx +-cond_exec_get_condition (rtx_insn *jump, bool get_reversed = false) ++cond_exec_get_condition (rtx_insn *jump) + { + rtx test_if, cond; + +@@ -445,10 +437,8 @@ cond_exec_get_condition (rtx_insn *jump, bool get_reversed = false) + + /* If this branches to JUMP_LABEL when the condition is false, + reverse the condition. */ +- if (get_reversed +- || (GET_CODE (XEXP (test_if, 2)) == LABEL_REF +- && label_ref_label (XEXP (test_if, 2)) +- == JUMP_LABEL (jump))) ++ if (GET_CODE (XEXP (test_if, 2)) == LABEL_REF ++ && label_ref_label (XEXP (test_if, 2)) == JUMP_LABEL (jump)) + { + enum rtx_code rev = reversed_comparison_code (cond, jump); + if (rev == UNKNOWN) +@@ -780,7 +770,7 @@ static int noce_try_addcc (struct noce_if_info *); + static int noce_try_store_flag_constants (struct noce_if_info *); + static int noce_try_store_flag_mask (struct noce_if_info *); + static rtx noce_emit_cmove (struct noce_if_info *, rtx, enum rtx_code, rtx, +- rtx, rtx, rtx, rtx = NULL, rtx = NULL); ++ rtx, rtx, rtx); + static int noce_try_cmove (struct noce_if_info *); + static int noce_try_cmove_arith (struct noce_if_info *); + static rtx noce_get_alt_condition (struct noce_if_info *, rtx, rtx_insn **); +@@ -1719,8 +1709,7 @@ noce_try_store_flag_mask (struct noce_if_info *if_info) + + static rtx + noce_emit_cmove (struct noce_if_info *if_info, rtx x, enum rtx_code code, +- rtx cmp_a, rtx cmp_b, rtx vfalse, rtx vtrue, rtx cc_cmp, +- rtx rev_cc_cmp) ++ rtx cmp_a, rtx cmp_b, rtx vfalse, rtx vtrue) + { + rtx target ATTRIBUTE_UNUSED; + int unsignedp ATTRIBUTE_UNUSED; +@@ -1752,30 +1741,23 @@ noce_emit_cmove (struct noce_if_info *if_info, rtx x, enum rtx_code code, + end_sequence (); + } + +- unsignedp = (code == LTU || code == GEU +- || code == LEU || code == GTU); +- +- if (cc_cmp != NULL_RTX && rev_cc_cmp != NULL_RTX) +- target = emit_conditional_move (x, cc_cmp, rev_cc_cmp, +- vtrue, vfalse, GET_MODE (x)); +- else ++ /* Don't even try if the comparison operands are weird ++ except that the target supports cbranchcc4. */ ++ if (! general_operand (cmp_a, GET_MODE (cmp_a)) ++ || ! general_operand (cmp_b, GET_MODE (cmp_b))) + { +- /* Don't even try if the comparison operands are weird +- except that the target supports cbranchcc4. */ +- if (! general_operand (cmp_a, GET_MODE (cmp_a)) +- || ! general_operand (cmp_b, GET_MODE (cmp_b))) +- { +- if (!have_cbranchcc4 +- || GET_MODE_CLASS (GET_MODE (cmp_a)) != MODE_CC +- || cmp_b != const0_rtx) +- return NULL_RTX; +- } +- +- target = emit_conditional_move (x, { code, cmp_a, cmp_b, VOIDmode }, +- vtrue, vfalse, GET_MODE (x), +- unsignedp); ++ if (!have_cbranchcc4 ++ || GET_MODE_CLASS (GET_MODE (cmp_a)) != MODE_CC ++ || cmp_b != const0_rtx) ++ return NULL_RTX; + } + ++ unsignedp = (code == LTU || code == GEU ++ || code == LEU || code == GTU); ++ ++ target = emit_conditional_move (x, code, cmp_a, cmp_b, VOIDmode, ++ vtrue, vfalse, GET_MODE (x), ++ unsignedp); + if (target) + return target; + +@@ -1811,9 +1793,8 @@ noce_emit_cmove (struct noce_if_info *if_info, rtx x, enum rtx_code code, + + promoted_target = gen_reg_rtx (GET_MODE (reg_vtrue)); + +- target = emit_conditional_move (promoted_target, +- { code, cmp_a, cmp_b, VOIDmode }, +- reg_vtrue, reg_vfalse, ++ target = emit_conditional_move (promoted_target, code, cmp_a, cmp_b, ++ VOIDmode, reg_vtrue, reg_vfalse, + GET_MODE (reg_vtrue), unsignedp); + /* Nope, couldn't do it in that mode either. */ + if (!target) +@@ -3160,50 +3141,6 @@ bb_valid_for_noce_process_p (basic_block test_bb, rtx cond, + return false; + } + +-/* Helper function to emit a cmov sequence encapsulated in +- start_sequence () and end_sequence (). If NEED_CMOV is true +- we call noce_emit_cmove to create a cmove sequence. Otherwise emit +- a simple move. If successful, store the first instruction of the +- sequence in TEMP_DEST and the sequence costs in SEQ_COST. */ +- +-static rtx_insn* +-try_emit_cmove_seq (struct noce_if_info *if_info, rtx temp, +- rtx cond, rtx new_val, rtx old_val, bool need_cmov, +- unsigned *cost, rtx *temp_dest, +- rtx cc_cmp = NULL, rtx rev_cc_cmp = NULL) +-{ +- rtx_insn *seq = NULL; +- *cost = 0; +- +- rtx x = XEXP (cond, 0); +- rtx y = XEXP (cond, 1); +- rtx_code cond_code = GET_CODE (cond); +- +- start_sequence (); +- +- if (need_cmov) +- *temp_dest = noce_emit_cmove (if_info, temp, cond_code, +- x, y, new_val, old_val, cc_cmp, rev_cc_cmp); +- else +- { +- *temp_dest = temp; +- if (if_info->then_else_reversed) +- noce_emit_move_insn (temp, old_val); +- else +- noce_emit_move_insn (temp, new_val); +- } +- +- if (*temp_dest != NULL_RTX) +- { +- seq = get_insns (); +- *cost = seq_cost (seq, if_info->speed_p); +- } +- +- end_sequence (); +- +- return seq; +-} +- + /* We have something like: + + if (x > y) +@@ -3261,6 +3198,7 @@ noce_convert_multiple_sets (struct noce_if_info *if_info) + rtx cond = noce_get_condition (jump, &cond_earliest, false); + rtx x = XEXP (cond, 0); + rtx y = XEXP (cond, 1); ++ rtx_code cond_code = GET_CODE (cond); + + /* The true targets for a conditional move. */ + auto_vec targets; +@@ -3269,139 +3207,8 @@ noce_convert_multiple_sets (struct noce_if_info *if_info) + auto_vec temporaries; + /* The insns we've emitted. */ + auto_vec unmodified_insns; +- +- hash_set need_no_cmov; +- hash_map rewired_src; +- +- need_cmov_or_rewire (then_bb, &need_no_cmov, &rewired_src); +- +- int last_needs_comparison = -1; +- +- bool ok = noce_convert_multiple_sets_1 +- (if_info, &need_no_cmov, &rewired_src, &targets, &temporaries, +- &unmodified_insns, &last_needs_comparison); +- if (!ok) +- return false; +- +- /* If there are insns that overwrite part of the initial +- comparison, we can still omit creating temporaries for +- the last of them. +- As the second try will always create a less expensive, +- valid sequence, we do not need to compare and can discard +- the first one. */ +- if (last_needs_comparison != -1) +- { +- end_sequence (); +- start_sequence (); +- ok = noce_convert_multiple_sets_1 +- (if_info, &need_no_cmov, &rewired_src, &targets, &temporaries, +- &unmodified_insns, &last_needs_comparison); +- /* Actually we should not fail anymore if we reached here, +- but better still check. */ +- if (!ok) +- return false; +- } +- +- /* We must have seen some sort of insn to insert, otherwise we were +- given an empty BB to convert, and we can't handle that. */ +- gcc_assert (!unmodified_insns.is_empty ()); +- +- /* Now fixup the assignments. */ +- for (unsigned i = 0; i < targets.length (); i++) +- if (targets[i] != temporaries[i]) +- noce_emit_move_insn (targets[i], temporaries[i]); +- +- /* Actually emit the sequence if it isn't too expensive. */ +- rtx_insn *seq = get_insns (); +- +- if (!targetm.noce_conversion_profitable_p (seq, if_info)) +- { +- end_sequence (); +- return FALSE; +- } +- +- for (insn = seq; insn; insn = NEXT_INSN (insn)) +- set_used_flags (insn); +- +- /* Mark all our temporaries and targets as used. */ +- for (unsigned i = 0; i < targets.length (); i++) +- { +- set_used_flags (temporaries[i]); +- set_used_flags (targets[i]); +- } +- +- set_used_flags (cond); +- set_used_flags (x); +- set_used_flags (y); +- +- unshare_all_rtl_in_chain (seq); +- end_sequence (); +- +- if (!seq) +- return FALSE; +- +- for (insn = seq; insn; insn = NEXT_INSN (insn)) +- if (JUMP_P (insn) +- || recog_memoized (insn) == -1) +- return FALSE; +- +- emit_insn_before_setloc (seq, if_info->jump, +- INSN_LOCATION (unmodified_insns.last ())); +- +- /* Clean up THEN_BB and the edges in and out of it. */ +- remove_edge (find_edge (test_bb, join_bb)); +- remove_edge (find_edge (then_bb, join_bb)); +- redirect_edge_and_branch_force (single_succ_edge (test_bb), join_bb); +- delete_basic_block (then_bb); +- num_true_changes++; +- +- /* Maybe merge blocks now the jump is simple enough. */ +- if (can_merge_blocks_p (test_bb, join_bb)) +- { +- merge_blocks (test_bb, join_bb); +- num_true_changes++; +- } +- +- num_updated_if_blocks++; +- if_info->transform_name = "noce_convert_multiple_sets"; +- return TRUE; +-} +- +-/* This goes through all relevant insns of IF_INFO->then_bb and tries to +- create conditional moves. In case a simple move sufficis the insn +- should be listed in NEED_NO_CMOV. The rewired-src cases should be +- specified via REWIRED_SRC. TARGETS, TEMPORARIES and UNMODIFIED_INSNS +- are specified and used in noce_convert_multiple_sets and should be passed +- to this function.. */ +- +-static bool +-noce_convert_multiple_sets_1 (struct noce_if_info *if_info, +- hash_set *need_no_cmov, +- hash_map *rewired_src, +- auto_vec *targets, +- auto_vec *temporaries, +- auto_vec *unmodified_insns, +- int *last_needs_comparison) +-{ +- basic_block then_bb = if_info->then_bb; +- rtx_insn *jump = if_info->jump; +- rtx_insn *cond_earliest; +- +- /* Decompose the condition attached to the jump. */ +- rtx cond = noce_get_condition (jump, &cond_earliest, false); +- +- rtx cc_cmp = cond_exec_get_condition (jump); +- rtx rev_cc_cmp = cond_exec_get_condition (jump, /* get_reversed */ true); +- +- rtx_insn *insn; + int count = 0; + +- targets->truncate (0); +- temporaries->truncate (0); +- unmodified_insns->truncate (0); +- +- bool second_try = *last_needs_comparison != -1; +- + FOR_BB_INSNS (then_bb, insn) + { + /* Skip over non-insns. */ +@@ -3412,53 +3219,26 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, + gcc_checking_assert (set); + + rtx target = SET_DEST (set); +- rtx temp; +- ++ rtx temp = gen_reg_rtx (GET_MODE (target)); + rtx new_val = SET_SRC (set); +- if (int *ii = rewired_src->get (insn)) +- new_val = simplify_replace_rtx (new_val, (*targets)[*ii], +- (*temporaries)[*ii]); + rtx old_val = target; + +- /* As we are transforming +- if (x > y) +- { +- a = b; +- c = d; +- } +- into +- a = (x > y) ... +- c = (x > y) ... +- +- we potentially check x > y before every set. +- Even though the check might be removed by subsequent passes, this means +- that we cannot transform +- if (x > y) +- { +- x = y; +- ... +- } +- into +- x = (x > y) ... +- ... +- since this would invalidate x and the following to-be-removed checks. +- Therefore we introduce a temporary every time we are about to +- overwrite a variable used in the check. Costing of a sequence with +- these is going to be inaccurate so only use temporaries when +- needed. +- +- If performing a second try, we know how many insns require a +- temporary. For the last of these, we can omit creating one. */ +- if (reg_overlap_mentioned_p (target, cond) +- && (!second_try || count < *last_needs_comparison)) +- temp = gen_reg_rtx (GET_MODE (target)); +- else +- temp = target; +- +- /* We have identified swap-style idioms before. A normal +- set will need to be a cmov while the first instruction of a swap-style +- idiom can be a regular move. This helps with costing. */ +- bool need_cmov = !need_no_cmov->contains (insn); ++ /* If we were supposed to read from an earlier write in this block, ++ we've changed the register allocation. Rewire the read. While ++ we are looking, also try to catch a swap idiom. */ ++ for (int i = count - 1; i >= 0; --i) ++ if (reg_overlap_mentioned_p (new_val, targets[i])) ++ { ++ /* Catch a "swap" style idiom. */ ++ if (find_reg_note (insn, REG_DEAD, new_val) != NULL_RTX) ++ /* The write to targets[i] is only live until the read ++ here. As the condition codes match, we can propagate ++ the set to here. */ ++ new_val = SET_SRC (single_set (unmodified_insns[i])); ++ else ++ new_val = temporaries[i]; ++ break; ++ } + + /* If we had a non-canonical conditional jump (i.e. one where + the fallthrough is to the "else" case) we need to reverse +@@ -3478,9 +3258,7 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, + we'll end up trying to emit r4:HI = cond ? (r1:SI) : (r3:HI). + Wrap the two cmove operands into subregs if appropriate to prevent + that. */ +- +- if (!CONSTANT_P (new_val) +- && GET_MODE (new_val) != GET_MODE (temp)) ++ if (GET_MODE (new_val) != GET_MODE (temp)) + { + machine_mode src_mode = GET_MODE (new_val); + machine_mode dst_mode = GET_MODE (temp); +@@ -3491,8 +3269,7 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, + } + new_val = lowpart_subreg (dst_mode, new_val, src_mode); + } +- if (!CONSTANT_P (old_val) +- && GET_MODE (old_val) != GET_MODE (temp)) ++ if (GET_MODE (old_val) != GET_MODE (temp)) + { + machine_mode src_mode = GET_MODE (old_val); + machine_mode dst_mode = GET_MODE (temp); +@@ -3504,80 +3281,101 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, + old_val = lowpart_subreg (dst_mode, old_val, src_mode); + } + +- /* Try emitting a conditional move passing the backend the +- canonicalized comparison. The backend is then able to +- recognize expressions like +- +- if (x > y) +- y = x; +- +- as min/max and emit an insn, accordingly. */ +- unsigned cost1 = 0, cost2 = 0; +- rtx_insn *seq, *seq1, *seq2; +- rtx temp_dest = NULL_RTX, temp_dest1 = NULL_RTX, temp_dest2 = NULL_RTX; ++ /* Actually emit the conditional move. */ ++ rtx temp_dest = noce_emit_cmove (if_info, temp, cond_code, ++ x, y, new_val, old_val); + +- seq1 = try_emit_cmove_seq (if_info, temp, cond, +- new_val, old_val, need_cmov, +- &cost1, &temp_dest1); +- +- /* Here, we try to pass the backend a non-canonicalized cc comparison +- as well. This allows the backend to emit a cmov directly without +- creating an additional compare for each. If successful, costing +- is easier and this sequence is usually preferred. */ +- seq2 = try_emit_cmove_seq (if_info, target, cond, +- new_val, old_val, need_cmov, +- &cost2, &temp_dest2, cc_cmp, rev_cc_cmp); +- +- /* Check which version is less expensive. */ +- if (seq1 != NULL_RTX && (cost1 <= cost2 || seq2 == NULL_RTX)) +- { +- seq = seq1; +- temp_dest = temp_dest1; +- if (!second_try) +- *last_needs_comparison = count; +- } +- else if (seq2 != NULL_RTX) +- { +- seq = seq2; +- temp_dest = temp_dest2; +- } +- else ++ /* If we failed to expand the conditional move, drop out and don't ++ try to continue. */ ++ if (temp_dest == NULL_RTX) + { +- /* Nothing worked, bail out. */ + end_sequence (); + return FALSE; + } + +- /* End the sub sequence and emit to the main sequence. */ +- emit_insn (seq); +- + /* Bookkeeping. */ + count++; +- targets->safe_push (target); +- temporaries->safe_push (temp_dest); +- unmodified_insns->safe_push (insn); ++ targets.safe_push (target); ++ temporaries.safe_push (temp_dest); ++ unmodified_insns.safe_push (insn); + } + +- return true; +-} ++ /* We must have seen some sort of insn to insert, otherwise we were ++ given an empty BB to convert, and we can't handle that. */ ++ gcc_assert (!unmodified_insns.is_empty ()); ++ ++ /* Now fixup the assignments. */ ++ for (int i = 0; i < count; i++) ++ noce_emit_move_insn (targets[i], temporaries[i]); ++ ++ /* Actually emit the sequence if it isn't too expensive. */ ++ rtx_insn *seq = get_insns (); ++ ++ if (!targetm.noce_conversion_profitable_p (seq, if_info)) ++ { ++ end_sequence (); ++ return FALSE; ++ } ++ ++ for (insn = seq; insn; insn = NEXT_INSN (insn)) ++ set_used_flags (insn); ++ ++ /* Mark all our temporaries and targets as used. */ ++ for (int i = 0; i < count; i++) ++ { ++ set_used_flags (temporaries[i]); ++ set_used_flags (targets[i]); ++ } + ++ set_used_flags (cond); ++ set_used_flags (x); ++ set_used_flags (y); + ++ unshare_all_rtl_in_chain (seq); ++ end_sequence (); ++ ++ if (!seq) ++ return FALSE; ++ ++ for (insn = seq; insn; insn = NEXT_INSN (insn)) ++ if (JUMP_P (insn) ++ || recog_memoized (insn) == -1) ++ return FALSE; ++ ++ emit_insn_before_setloc (seq, if_info->jump, ++ INSN_LOCATION (unmodified_insns.last ())); ++ ++ /* Clean up THEN_BB and the edges in and out of it. */ ++ remove_edge (find_edge (test_bb, join_bb)); ++ remove_edge (find_edge (then_bb, join_bb)); ++ redirect_edge_and_branch_force (single_succ_edge (test_bb), join_bb); ++ delete_basic_block (then_bb); ++ num_true_changes++; ++ ++ /* Maybe merge blocks now the jump is simple enough. */ ++ if (can_merge_blocks_p (test_bb, join_bb)) ++ { ++ merge_blocks (test_bb, join_bb); ++ num_true_changes++; ++ } ++ ++ num_updated_if_blocks++; ++ if_info->transform_name = "noce_convert_multiple_sets"; ++ return TRUE; ++} + + /* Return true iff basic block TEST_BB is comprised of only + (SET (REG) (REG)) insns suitable for conversion to a series + of conditional moves. Also check that we have more than one set + (other routines can handle a single set better than we would), and +- fewer than PARAM_MAX_RTL_IF_CONVERSION_INSNS sets. While going +- through the insns store the sum of their potential costs in COST. */ ++ fewer than PARAM_MAX_RTL_IF_CONVERSION_INSNS sets. */ + + static bool +-bb_ok_for_noce_convert_multiple_sets (basic_block test_bb, unsigned *cost) ++bb_ok_for_noce_convert_multiple_sets (basic_block test_bb) + { + rtx_insn *insn; + unsigned count = 0; + unsigned param = param_max_rtl_if_conversion_insns; +- bool speed_p = optimize_bb_for_speed_p (test_bb); +- unsigned potential_cost = 0; + + FOR_BB_INSNS (test_bb, insn) + { +@@ -3600,9 +3398,9 @@ bb_ok_for_noce_convert_multiple_sets (basic_block test_bb, unsigned *cost) + if (!REG_P (dest)) + return false; + +- if (!((REG_P (src) || CONSTANT_P (src)) +- || (GET_CODE (src) == SUBREG && REG_P (SUBREG_REG (src)) +- && subreg_lowpart_p (src)))) ++ if (!(REG_P (src) ++ || (GET_CODE (src) == SUBREG && REG_P (SUBREG_REG (src)) ++ && subreg_lowpart_p (src)))) + return false; + + /* Destination must be appropriate for a conditional write. */ +@@ -3613,13 +3411,9 @@ bb_ok_for_noce_convert_multiple_sets (basic_block test_bb, unsigned *cost) + if (!can_conditionally_move_p (GET_MODE (dest))) + return false; + +- potential_cost += insn_cost (insn, speed_p); +- + count++; + } + +- *cost += potential_cost; +- + /* If we would only put out one conditional move, the other strategies + this pass tries are better optimized and will be more appropriate. + Some targets want to strictly limit the number of conditional moves +@@ -3667,24 +3461,11 @@ noce_process_if_block (struct noce_if_info *if_info) + to calculate a value for x. + ??? For future expansion, further expand the "multiple X" rules. */ + +- /* First look for multiple SETS. The original costs already include +- a base cost of COSTS_N_INSNS (2): one instruction for the compare +- (which we will be needing either way) and one instruction for the +- branch. When comparing costs we want to use the branch instruction +- cost and the sets vs. the cmovs generated here. Therefore subtract +- the costs of the compare before checking. +- ??? Actually, instead of the branch instruction costs we might want +- to use COSTS_N_INSNS (BRANCH_COST ()) as in other places. */ +- +- unsigned potential_cost = if_info->original_cost - COSTS_N_INSNS (1); +- unsigned old_cost = if_info->original_cost; ++ /* First look for multiple SETS. */ + if (!else_bb + && HAVE_conditional_move +- && bb_ok_for_noce_convert_multiple_sets (then_bb, &potential_cost)) ++ && bb_ok_for_noce_convert_multiple_sets (then_bb)) + { +- /* Temporarily set the original costs to what we estimated so +- we can determine if the transformation is worth it. */ +- if_info->original_cost = potential_cost; + if (noce_convert_multiple_sets (if_info)) + { + if (dump_file && if_info->transform_name) +@@ -3692,9 +3473,6 @@ noce_process_if_block (struct noce_if_info *if_info) + if_info->transform_name); + return TRUE; + } +- +- /* Restore the original costs. */ +- if_info->original_cost = old_cost; + } + + bool speed_p = optimize_bb_for_speed_p (test_bb); +@@ -4036,89 +3814,6 @@ check_cond_move_block (basic_block bb, + return TRUE; + } + +-/* Find local swap-style idioms in BB and mark the first insn (1) +- that is only a temporary as not needing a conditional move as +- it is going to be dead afterwards anyway. +- +- (1) int tmp = a; +- a = b; +- b = tmp; +- +- ifcvt +- --> +- +- tmp = a; +- a = cond ? b : a_old; +- b = cond ? tmp : b_old; +- +- Additionally, store the index of insns like (2) when a subsequent +- SET reads from their destination. +- +- (2) int c = a; +- int d = c; +- +- ifcvt +- --> +- +- c = cond ? a : c_old; +- d = cond ? d : c; // Need to use c rather than c_old here. +-*/ +- +-static void +-need_cmov_or_rewire (basic_block bb, +- hash_set *need_no_cmov, +- hash_map *rewired_src) +-{ +- rtx_insn *insn; +- int count = 0; +- auto_vec insns; +- auto_vec dests; +- +- /* Iterate over all SETs, storing the destinations +- in DEST. +- - If we hit a SET that reads from a destination +- that we have seen before and the corresponding register +- is dead afterwards, the register does not need to be +- moved conditionally. +- - If we encounter a previously changed register, +- rewire the read to the original source. */ +- FOR_BB_INSNS (bb, insn) +- { +- rtx set, src, dest; +- +- if (!active_insn_p (insn)) +- continue; +- +- set = single_set (insn); +- if (set == NULL_RTX) +- continue; +- +- src = SET_SRC (set); +- if (SUBREG_P (src)) +- src = SUBREG_REG (src); +- dest = SET_DEST (set); +- +- /* Check if the current SET's source is the same +- as any previously seen destination. +- This is quadratic but the number of insns in BB +- is bounded by PARAM_MAX_RTL_IF_CONVERSION_INSNS. */ +- if (REG_P (src)) +- for (int i = count - 1; i >= 0; --i) +- if (reg_overlap_mentioned_p (src, dests[i])) +- { +- if (find_reg_note (insn, REG_DEAD, src) != NULL_RTX) +- need_no_cmov->add (insns[i]); +- else +- rewired_src->put (insn, i); +- } +- +- insns.safe_push (insn); +- dests.safe_push (dest); +- +- count++; +- } +-} +- + /* Given a basic block BB suitable for conditional move conversion, + a condition COND, and pointer maps THEN_VALS and ELSE_VALS containing + the register values depending on COND, emit the insns in the block as +--- gcc/optabs.cc ++++ gcc/optabs.cc +@@ -52,8 +52,6 @@ static void prepare_float_lib_cmp (rtx, rtx, enum rtx_code, rtx *, + static rtx expand_unop_direct (machine_mode, optab, rtx, rtx, int); + static void emit_libcall_block_1 (rtx_insn *, rtx, rtx, rtx, bool); + +-static rtx emit_conditional_move_1 (rtx, rtx, rtx, rtx, machine_mode); +- + /* Debug facility for use in GDB. */ + void debug_optab_libfuncs (void); + +@@ -626,13 +624,12 @@ expand_doubleword_shift_condmove (scalar_int_mode op1_mode, optab binoptab, + + /* Select between them. Do the INTO half first because INTO_SUPERWORD + might be the current value of OUTOF_TARGET. */ +- if (!emit_conditional_move (into_target, { cmp_code, cmp1, cmp2, op1_mode }, ++ if (!emit_conditional_move (into_target, cmp_code, cmp1, cmp2, op1_mode, + into_target, into_superword, word_mode, false)) + return false; + + if (outof_target != 0) +- if (!emit_conditional_move (outof_target, +- { cmp_code, cmp1, cmp2, op1_mode }, ++ if (!emit_conditional_move (outof_target, cmp_code, cmp1, cmp2, op1_mode, + outof_target, outof_superword, + word_mode, false)) + return false; +@@ -4854,8 +4851,8 @@ emit_indirect_jump (rtx loc) + is not supported. */ + + rtx +-emit_conditional_move (rtx target, struct rtx_comparison comp, +- rtx op2, rtx op3, ++emit_conditional_move (rtx target, enum rtx_code code, rtx op0, rtx op1, ++ machine_mode cmode, rtx op2, rtx op3, + machine_mode mode, int unsignedp) + { + rtx comparison; +@@ -4877,33 +4874,31 @@ emit_conditional_move (rtx target, struct rtx_comparison comp, + /* If one operand is constant, make it the second one. Only do this + if the other operand is not constant as well. */ + +- if (swap_commutative_operands_p (comp.op0, comp.op1)) ++ if (swap_commutative_operands_p (op0, op1)) + { +- std::swap (comp.op0, comp.op1); +- comp.code = swap_condition (comp.code); ++ std::swap (op0, op1); ++ code = swap_condition (code); + } + + /* get_condition will prefer to generate LT and GT even if the old + comparison was against zero, so undo that canonicalization here since + comparisons against zero are cheaper. */ ++ if (code == LT && op1 == const1_rtx) ++ code = LE, op1 = const0_rtx; ++ else if (code == GT && op1 == constm1_rtx) ++ code = GE, op1 = const0_rtx; + +- if (comp.code == LT && comp.op1 == const1_rtx) +- comp.code = LE, comp.op1 = const0_rtx; +- else if (comp.code == GT && comp.op1 == constm1_rtx) +- comp.code = GE, comp.op1 = const0_rtx; +- +- if (comp.mode == VOIDmode) +- comp.mode = GET_MODE (comp.op0); ++ if (cmode == VOIDmode) ++ cmode = GET_MODE (op0); + +- enum rtx_code orig_code = comp.code; ++ enum rtx_code orig_code = code; + bool swapped = false; + if (swap_commutative_operands_p (op2, op3) +- && ((reversed = +- reversed_comparison_code_parts (comp.code, comp.op0, comp.op1, NULL)) +- != UNKNOWN)) ++ && ((reversed = reversed_comparison_code_parts (code, op0, op1, NULL)) ++ != UNKNOWN)) + { + std::swap (op2, op3); +- comp.code = reversed; ++ code = reversed; + swapped = true; + } + +@@ -4920,10 +4915,8 @@ emit_conditional_move (rtx target, struct rtx_comparison comp, + + for (int pass = 0; ; pass++) + { +- comp.code = unsignedp ? unsigned_condition (comp.code) : comp.code; +- comparison = +- simplify_gen_relational (comp.code, VOIDmode, +- comp.mode, comp.op0, comp.op1); ++ code = unsignedp ? unsigned_condition (code) : code; ++ comparison = simplify_gen_relational (code, VOIDmode, cmode, op0, op1); + + /* We can get const0_rtx or const_true_rtx in some circumstances. Just + punt and let the caller figure out how best to deal with this +@@ -4934,16 +4927,24 @@ emit_conditional_move (rtx target, struct rtx_comparison comp, + save_pending_stack_adjust (&save); + last = get_last_insn (); + do_pending_stack_adjust (); +- machine_mode cmpmode = comp.mode; ++ machine_mode cmpmode = cmode; + prepare_cmp_insn (XEXP (comparison, 0), XEXP (comparison, 1), + GET_CODE (comparison), NULL_RTX, unsignedp, + OPTAB_WIDEN, &comparison, &cmpmode); + if (comparison) + { +- rtx res = emit_conditional_move_1 (target, comparison, +- op2, op3, mode); +- if (res != NULL_RTX) +- return res; ++ class expand_operand ops[4]; ++ ++ create_output_operand (&ops[0], target, mode); ++ create_fixed_operand (&ops[1], comparison); ++ create_input_operand (&ops[2], op2, mode); ++ create_input_operand (&ops[3], op3, mode); ++ if (maybe_expand_insn (icode, 4, ops)) ++ { ++ if (ops[0].value != target) ++ convert_move (target, ops[0].value, false); ++ return target; ++ } + } + delete_insns_since (last); + restore_pending_stack_adjust (&save); +@@ -4955,88 +4956,17 @@ emit_conditional_move (rtx target, struct rtx_comparison comp, + /* If the preferred op2/op3 order is not usable, retry with other + operand order, perhaps it will expand successfully. */ + if (swapped) +- comp.code = orig_code; +- else if ((reversed = +- reversed_comparison_code_parts (orig_code, comp.op0, comp.op1, ++ code = orig_code; ++ else if ((reversed = reversed_comparison_code_parts (orig_code, op0, op1, + NULL)) + != UNKNOWN) +- comp.code = reversed; ++ code = reversed; + else + return NULL_RTX; + std::swap (op2, op3); + } + } + +-/* Helper function that, in addition to COMPARISON, also tries +- the reversed REV_COMPARISON with swapped OP2 and OP3. As opposed +- to when we pass the specific constituents of a comparison, no +- additional insns are emitted for it. It might still be necessary +- to emit more than one insn for the final conditional move, though. */ +- +-rtx +-emit_conditional_move (rtx target, rtx comparison, rtx rev_comparison, +- rtx op2, rtx op3, machine_mode mode) +-{ +- rtx res = emit_conditional_move_1 (target, comparison, op2, op3, mode); +- +- if (res != NULL_RTX) +- return res; +- +- return emit_conditional_move_1 (target, rev_comparison, op3, op2, mode); +-} +- +-/* Helper for emitting a conditional move. */ +- +-static rtx +-emit_conditional_move_1 (rtx target, rtx comparison, +- rtx op2, rtx op3, machine_mode mode) +-{ +- enum insn_code icode; +- +- if (comparison == NULL_RTX || !COMPARISON_P (comparison)) +- return NULL_RTX; +- +- /* If the two source operands are identical, that's just a move. +- As the comparison comes in non-canonicalized, we must make +- sure not to discard any possible side effects. If there are +- side effects, just let the target handle it. */ +- if (!side_effects_p (comparison) && rtx_equal_p (op2, op3)) +- { +- if (!target) +- target = gen_reg_rtx (mode); +- +- emit_move_insn (target, op3); +- return target; +- } +- +- if (mode == VOIDmode) +- mode = GET_MODE (op2); +- +- icode = direct_optab_handler (movcc_optab, mode); +- +- if (icode == CODE_FOR_nothing) +- return NULL_RTX; +- +- if (!target) +- target = gen_reg_rtx (mode); +- +- class expand_operand ops[4]; +- +- create_output_operand (&ops[0], target, mode); +- create_fixed_operand (&ops[1], comparison); +- create_input_operand (&ops[2], op2, mode); +- create_input_operand (&ops[3], op3, mode); +- +- if (maybe_expand_insn (icode, 4, ops)) +- { +- if (ops[0].value != target) +- convert_move (target, ops[0].value, false); +- return target; +- } +- +- return NULL_RTX; +-} +- + + /* Emit a conditional negate or bitwise complement using the + negcc or notcc optabs if available. Return NULL_RTX if such operations +--- gcc/optabs.h ++++ gcc/optabs.h +@@ -279,8 +279,8 @@ extern void emit_indirect_jump (rtx); + #endif + + /* Emit a conditional move operation. */ +-rtx emit_conditional_move (rtx, rtx_comparison, rtx, rtx, machine_mode, int); +-rtx emit_conditional_move (rtx, rtx, rtx, rtx, rtx, machine_mode); ++rtx emit_conditional_move (rtx, enum rtx_code, rtx, rtx, machine_mode, ++ rtx, rtx, machine_mode, int); + + /* Emit a conditional negate or bitwise complement operation. */ + rtx emit_conditional_neg_or_complement (rtx, rtx_code, machine_mode, rtx, +--- gcc/rtl.h ++++ gcc/rtl.h +@@ -4604,16 +4604,7 @@ word_register_operation_p (const_rtx x) + return true; + } + } +- +-/* Holds an rtx comparison to simplify passing many parameters pertaining to a +- single comparison. */ +- +-struct rtx_comparison { +- rtx_code code; +- rtx op0, op1; +- machine_mode mode; +-}; +- ++ + /* gtype-desc.cc. */ + extern void gt_ggc_mx (rtx &); + extern void gt_pch_nx (rtx &); diff --git a/gcc12-pr104025.patch b/gcc12-pr104025.patch deleted file mode 100644 index 3010236..0000000 --- a/gcc12-pr104025.patch +++ /dev/null @@ -1,42 +0,0 @@ -2022-01-18 Jakub Jelinek - - PR c++/104025 - * parser.cc (cp_parser_id_expression): Save and restore input_location - around cp_parser_skip_entire_template_parameter_list call for - -Wmissing-template-keyword. - - * g++.dg/warn/pr104025.C: New test. - ---- gcc/cp/parser.cc.jj 2022-01-17 18:05:04.797307506 +0100 -+++ gcc/cp/parser.cc 2022-01-17 20:27:33.642711859 +0100 -@@ -6254,6 +6254,7 @@ cp_parser_id_expression (cp_parser *pars - OPT_Wmissing_template_keyword)) - { - saved_token_sentinel toks (parser->lexer, STS_ROLLBACK); -+ iloc_sentinel ils (UNKNOWN_LOCATION); - if (cp_parser_skip_entire_template_parameter_list (parser) - /* An operator after the > suggests that the > ends a - template-id; a name or literal suggests that the > is an ---- gcc/testsuite/g++.dg/warn/pr104025.C.jj 2022-01-17 20:31:17.320591249 +0100 -+++ gcc/testsuite/g++.dg/warn/pr104025.C 2022-01-17 20:31:09.068706373 +0100 -@@ -0,0 +1,20 @@ -+// PR c++/104025 -+// { dg-do compile } -+// { dg-options "-Wmissing-template-keyword -fcompare-debug" } -+ -+void bar (int); -+ -+struct S { int i; }; -+ -+template -+struct T -+{ -+ int m; -+ C c; -+ void foo () -+ { -+ bar (c.i < m); -+ } -+}; -+ -+template void T::foo (); diff --git a/gcc12-pr104103.patch b/gcc12-pr104103.patch deleted file mode 100644 index cdf421d..0000000 --- a/gcc12-pr104103.patch +++ /dev/null @@ -1,20 +0,0 @@ -2022-01-18 Jakub Jelinek - - PR middle-end/104103 - * gimple-ssa-warn-access.cc (pass_waccess::check_call): Don't check - .ASAN_MARK calls. - ---- gcc/gimple-ssa-warn-access.cc.jj 2022-01-16 20:55:46.783932110 +0100 -+++ gcc/gimple-ssa-warn-access.cc 2022-01-18 20:56:13.697780325 +0100 -@@ -4232,6 +4232,11 @@ pass_waccess::check_call (gcall *stmt) - if (gimple_call_builtin_p (stmt, BUILT_IN_NORMAL)) - check_builtin (stmt); - -+ /* .ASAN_MARK doesn't access any vars, only modifies shadow memory. */ -+ if (gimple_call_internal_p (stmt) -+ && gimple_call_internal_fn (stmt) == IFN_ASAN_MARK) -+ return; -+ - if (!m_early_checks_p) - if (tree callee = gimple_call_fndecl (stmt)) - { diff --git a/gcc12-pr104104.patch b/gcc12-pr104104.patch deleted file mode 100644 index d81b3f0..0000000 --- a/gcc12-pr104104.patch +++ /dev/null @@ -1,121 +0,0 @@ -2022-01-18 Jakub Jelinek - - PR target/104104 - * config/i386/sse.md - (__, - avx512fp16_sh_v8hf, - avx512dq_mul3, _permvar, - avx2_perm_1, avx512f_perm_1, - avx512dq_rangep, - avx512dq_ranges, - _getmant, - avx512f_vgetmant): - Use vxorps\t%x0, %x0, %x0 instead of vxorps\t{%x0, %x0, %x0}. - - * gcc.target/i386/pr104104.c: New test. - ---- gcc/config/i386/sse.md.jj 2022-01-18 11:58:59.156988142 +0100 -+++ gcc/config/i386/sse.md 2022-01-18 21:20:40.022477778 +0100 -@@ -6539,7 +6539,7 @@ (define_insn "__< - { - if (TARGET_DEST_FALSE_DEP_FOR_GLC - && ) -- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); -+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); - return "v\t{%2, %1, %0|%0, %1, %2}"; - } - [(set_attr "type" "ssemul") -@@ -6750,7 +6750,7 @@ (define_insn "avx512fp16_ - { - if (TARGET_DEST_FALSE_DEP_FOR_GLC - && ) -- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); -+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); - return "vsh\t{%2, %1, %0|%0, %1, %2}"; - } - [(set_attr "type" "ssemul") -@@ -15222,7 +15222,7 @@ (define_insn "avx512dq_mul3 - && !reg_mentioned_p (operands[0], operands[1]) - && !reg_mentioned_p (operands[0], operands[2])) -- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); -+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); - return "vpmullq\t{%2, %1, %0|%0, %1, %2}"; - } - [(set_attr "type" "sseimul") -@@ -24658,7 +24658,7 @@ (define_insn "_permvar - && !reg_mentioned_p (operands[0], operands[1]) - && !reg_mentioned_p (operands[0], operands[2])) -- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); -+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); - return "vperm\t{%1, %2, %0|%0, %2, %1}"; - } - [(set_attr "type" "sselog") -@@ -24900,7 +24900,7 @@ (define_insn "avx2_perm_1 - && !reg_mentioned_p (operands[0], operands[1])) -- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); -+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); - return "vperm\t{%2, %1, %0|%0, %1, %2}"; - } - [(set_attr "type" "sselog") -@@ -24975,7 +24975,7 @@ (define_insn "avx512f_perm_1 - && !reg_mentioned_p (operands[0], operands[1])) -- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); -+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); - return "vperm\t{%2, %1, %0|%0, %1, %2}"; - } - [(set_attr "type" "sselog") -@@ -26880,7 +26880,7 @@ (define_insn "avx512dq_rangep - && !reg_mentioned_p (operands[0], operands[1]) - && !reg_mentioned_p (operands[0], operands[2])) -- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); -+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); - return "vrange\t{%3, %2, %1, %0|%0, %1, %2, %3}"; - } - [(set_attr "type" "sse") -@@ -26903,7 +26903,7 @@ (define_insn "avx512dq_ranges - && !reg_mentioned_p (operands[0], operands[1]) - && !reg_mentioned_p (operands[0], operands[2])) -- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); -+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); - return "vrange\t{%3, %2, %1, %0|%0, %1, %2, %3}"; - } - [(set_attr "type" "sse") -@@ -26949,7 +26949,7 @@ (define_insn "_getmant - && MEM_P (operands[1])) -- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); -+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); - return "vgetmant\t{%2, %1, %0|%0, %1, %2}"; - } - [(set_attr "prefix" "evex") -@@ -26971,7 +26971,7 @@ (define_insn "avx512f_vgetmant - && !reg_mentioned_p (operands[0], operands[1]) - && !reg_mentioned_p (operands[0], operands[2])) -- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands); -+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands); - return "vgetmant\t{%3, %2, %1, %0|%0, %1, %2, %3}"; - } - [(set_attr "prefix" "evex") ---- gcc/testsuite/gcc.target/i386/pr104104.c.jj 2022-01-18 21:38:17.007906673 +0100 -+++ gcc/testsuite/gcc.target/i386/pr104104.c 2022-01-18 21:36:10.475623148 +0100 -@@ -0,0 +1,10 @@ -+/* PR target/104104 */ -+/* { dg-do assemble { target vect_simd_clones } } */ -+/* { dg-require-effective-target masm_intel } */ -+/* { dg-options "-march=alderlake -masm=intel -O1 -fallow-store-data-races -funroll-all-loops" } */ -+ -+__attribute__ ((simd)) short int -+foo (void) -+{ -+ return 0; -+} diff --git a/gcc12-pr104194.patch b/gcc12-pr104194.patch new file mode 100644 index 0000000..f0747c7 --- /dev/null +++ b/gcc12-pr104194.patch @@ -0,0 +1,92 @@ +2022-01-25 Jakub Jelinek + + PR debug/104194 + * dwarf2out.cc (long_double_as_float128): New function. + (modified_type_die): For powerpc64le IEEE 754 quad long double + and complex long double emit those as DW_TAG_typedef to + _Float128 or complex _Float128 base type. + +--- gcc/dwarf2out.cc.jj 2022-01-25 05:47:53.987454934 +0100 ++++ gcc/dwarf2out.cc 2022-01-25 11:54:25.100522089 +0100 +@@ -13568,6 +13568,47 @@ qualified_die_p (dw_die_ref die, int *ma + return type; + } + ++/* If TYPE is long double or complex long double that ++ should be emitted as artificial typedef to _Float128 or ++ complex _Float128, return the type it should be emitted as. ++ This is done in case the target already supports 16-byte ++ composite floating point type (ibm_extended_format). */ ++ ++static tree ++long_double_as_float128 (tree type) ++{ ++ if (type != long_double_type_node ++ && type != complex_long_double_type_node) ++ return NULL_TREE; ++ ++ machine_mode mode, fmode; ++ if (TREE_CODE (type) == COMPLEX_TYPE) ++ mode = TYPE_MODE (TREE_TYPE (type)); ++ else ++ mode = TYPE_MODE (type); ++ if (known_eq (GET_MODE_SIZE (mode), 16) && !MODE_COMPOSITE_P (mode)) ++ FOR_EACH_MODE_IN_CLASS (fmode, MODE_FLOAT) ++ if (known_eq (GET_MODE_SIZE (fmode), 16) ++ && MODE_COMPOSITE_P (fmode)) ++ { ++ if (type == long_double_type_node) ++ { ++ if (float128_type_node ++ && (TYPE_MODE (float128_type_node) ++ == TYPE_MODE (type))) ++ return float128_type_node; ++ return NULL_TREE; ++ } ++ for (int i = 0; i < NUM_FLOATN_NX_TYPES; i++) ++ if (COMPLEX_FLOATN_NX_TYPE_NODE (i) != NULL_TREE ++ && (TYPE_MODE (COMPLEX_FLOATN_NX_TYPE_NODE (i)) ++ == TYPE_MODE (type))) ++ return COMPLEX_FLOATN_NX_TYPE_NODE (i); ++ } ++ ++ return NULL_TREE; ++} ++ + /* Given a pointer to an arbitrary ..._TYPE tree node, return a debugging + entry that chains the modifiers specified by CV_QUALS in front of the + given type. REVERSE is true if the type is to be interpreted in the +@@ -13848,7 +13889,32 @@ modified_type_die (tree type, int cv_qua + } + else if (is_base_type (type)) + { +- mod_type_die = base_type_die (type, reverse); ++ /* If a target supports long double as different floating point ++ modes with the same 16-byte size, use normal DW_TAG_base_type ++ only for the composite (ibm_extended_real_format) type and ++ for the other for the time being emit instead a "_Float128" ++ or "complex _Float128" DW_TAG_base_type and a "long double" ++ or "complex long double" typedef to it. */ ++ if (tree other_type = long_double_as_float128 (type)) ++ { ++ dw_die_ref other_die; ++ if (TYPE_NAME (other_type)) ++ other_die ++ = modified_type_die (other_type, TYPE_UNQUALIFIED, reverse, ++ context_die); ++ else ++ { ++ other_die = base_type_die (type, reverse); ++ add_child_die (comp_unit_die (), other_die); ++ add_name_attribute (other_die, ++ TREE_CODE (type) == COMPLEX_TYPE ++ ? "complex _Float128" : "_Float128"); ++ } ++ mod_type_die = new_die_raw (DW_TAG_typedef); ++ add_AT_die_ref (mod_type_die, DW_AT_type, other_die); ++ } ++ else ++ mod_type_die = base_type_die (type, reverse); + + /* The DIE with DW_AT_endianity is placed right after the naked DIE. */ + if (reverse_base_type) diff --git a/gcc12-pr94193.patch b/gcc12-pr94193.patch new file mode 100644 index 0000000..e669a81 --- /dev/null +++ b/gcc12-pr94193.patch @@ -0,0 +1,39 @@ +2022-01-25 Jakub Jelinek + + PR target/94193 + * config/rs6000/rs6000.md (feclearexceptsi, feraiseexceptsi): + Use general_operand instead of const_int_operand, drop constraint + and FAIL if operands[1] is not CONST_INT_P. + +--- gcc/config/rs6000/rs6000.md.jj 2022-01-25 05:48:01.497340303 +0100 ++++ gcc/config/rs6000/rs6000.md 2022-01-25 13:48:13.752709482 +0100 +@@ -6959,12 +6959,12 @@ (define_expand "fegetroundsi" + ;; Because of these restrictions, this only expands on the desired + ;; cases and fallback to a call to libc on any other case. + (define_expand "feclearexceptsi" +- [(use (match_operand:SI 1 "const_int_operand" "n")) ++ [(use (match_operand:SI 1 "general_operand")) + (set (match_operand:SI 0 "gpc_reg_operand") + (const_int 0))] + "TARGET_HARD_FLOAT" + { +- if (!OPTION_GLIBC) ++ if (!OPTION_GLIBC || !CONST_INT_P (operands[1])) + FAIL; + + unsigned int fe = INTVAL (operands[1]); +@@ -6999,12 +6999,12 @@ (define_expand "feclearexceptsi" + ;; Because of these restrictions, this only expands on the desired + ;; cases and fallback to a call to libc on any other case. + (define_expand "feraiseexceptsi" +- [(use (match_operand:SI 1 "const_int_operand" "n")) ++ [(use (match_operand:SI 1 "general_operand")) + (set (match_operand:SI 0 "gpc_reg_operand") + (const_int 0))] + "TARGET_HARD_FLOAT" + { +- if (!OPTION_GLIBC) ++ if (!OPTION_GLIBC || !CONST_INT_P (operands[1])) + FAIL; + + unsigned int fe = INTVAL (operands[1]); diff --git a/sources b/sources index 43d2957..fcd533a 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.1-20220118.tar.xz) = 5fab239e915e71a8986a122e3f897f2236f21f0f183da33cad2ace8f34823cd8f32c7c0dfceffbfeae17cd99b656f242d30ddeb94eaafe3edf858ea88ec59016 +SHA512 (gcc-12.0.1-20220125.tar.xz) = 09c4b7d7fe3e8a2c0f4181da717e476c0868b2bb1c86cdd22482ee4235aebb9eb0c89b5f87b9a0e6852e0cc2876b652c60457996a86dc6e9b9b02ca2ff87613f SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 7e47121cf7dc9330f7e6b32ef1fab8dad37a9702 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 25 Jan 2022 14:26:06 +0100 Subject: [PATCH 089/293] 12.0.1-0.3 --- gcc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 49a94f6..c788889 100644 --- a/gcc.spec +++ b/gcc.spec @@ -3156,7 +3156,7 @@ end %endif %changelog -* Tue Jan 24 2022 Jakub Jelinek 12.0.1-0.3 +* Tue Jan 25 2022 Jakub Jelinek 12.0.1-0.3 - update from trunk - PRs ada/103538, analyzer/94362, analyzer/103685, analyzer/104062, analyzer/104089, analyzer/104150, analyzer/104159, bootstrap/104135, From f5c21772fcce386eafbc1fa45a6321254a572dd8 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 25 Jan 2022 15:24:01 +0100 Subject: [PATCH 090/293] 12.0.1-0.3 --- gcc12-Wno-format-security.patch | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc12-Wno-format-security.patch b/gcc12-Wno-format-security.patch index 3abf63b..43e482a 100644 --- a/gcc12-Wno-format-security.patch +++ b/gcc12-Wno-format-security.patch @@ -10,7 +10,7 @@ --- gcc/configure.ac.jj 2017-02-13 12:20:53.000000000 +0100 +++ gcc/configure.ac 2017-02-25 12:42:32.859175403 +0100 -@@ -480,7 +480,7 @@ AC_ARG_ENABLE(build-format-warnings, +@@ -570,7 +570,7 @@ AC_ARG_ENABLE(build-format-warnings, AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]), [],[enable_build_format_warnings=yes]) AS_IF([test $enable_build_format_warnings = no], @@ -18,10 +18,10 @@ + [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=]) ACX_PROG_CXX_WARNING_OPTS( m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ], - [-Wcast-qual -Wno-error=format-diag $wf_opt])), + [-Wcast-qual $wf_opt])), --- gcc/configure.jj 2017-02-13 12:20:52.000000000 +0100 +++ gcc/configure 2017-02-25 12:42:50.041946391 +0100 -@@ -6647,7 +6647,7 @@ else +@@ -7077,7 +7077,7 @@ else fi if test $enable_build_format_warnings = no; then : From 66ac9cc1b62a4ac8582403acc5b7a572b8f354df Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 25 Jan 2022 16:15:16 +0100 Subject: [PATCH 091/293] Fix gitrev. --- gcc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index c788889..805b3e8 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ %global DATE 20220125 -%global gitrev c682bc883d1a29c3f697f065af23759f3d6757bc +%global gitrev 03182470d2d2b272f06500184acab6b8ed78d8ad %global gcc_version 12.0.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to From 398138b5f3809856b98eb4241b3c9f70da3fce9b Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 29 Jan 2022 11:05:44 +0100 Subject: [PATCH 092/293] 12.0.1-0.4 --- .gitignore | 1 + gcc.spec | 47 +++++++-- gcc12-pr103514-revert.patch | 27 +++++ gcc12-pr104194.patch | 92 ----------------- gcc12-pr104253.patch | 200 ++++++++++++++++++++++++++++++++++++ gcc12-pr94193.patch | 39 ------- gcc12-pr95424-revert.patch | 27 +++++ sources | 2 +- 8 files changed, 295 insertions(+), 140 deletions(-) create mode 100644 gcc12-pr103514-revert.patch delete mode 100644 gcc12-pr104194.patch create mode 100644 gcc12-pr104253.patch delete mode 100644 gcc12-pr94193.patch create mode 100644 gcc12-pr95424-revert.patch diff --git a/.gitignore b/.gitignore index 990b516..147c853 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,4 @@ /gcc-12.0.0-20220115.tar.xz /gcc-12.0.1-20220118.tar.xz /gcc-12.0.1-20220125.tar.xz +/gcc-12.0.1-20220129.tar.xz diff --git a/gcc.spec b/gcc.spec index 805b3e8..c7723e4 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20220125 -%global gitrev 03182470d2d2b272f06500184acab6b8ed78d8ad +%global DATE 20220129 +%global gitrev 8b49e9256e108bb3d436946b481cfa6bb11bd1c8 %global gcc_version 12.0.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to @@ -120,7 +120,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.3%{?dist} +Release: %{gcc_release}.4%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -270,9 +270,10 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch -Patch12: gcc12-pr104194.patch -Patch13: gcc12-pr94193.patch +Patch12: gcc12-pr103514-revert.patch +Patch13: gcc12-pr95424-revert.patch Patch14: gcc12-ifcvt-revert.patch +Patch15: gcc12-pr104253.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -794,9 +795,10 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr104194~ -%patch13 -p0 -b .pr94193~ +%patch12 -p0 -b .pr103514-revert~ +%patch13 -p0 -b .pr95424-revert~ %patch14 -p0 -b .ifcvt-revert~ +%patch15 -p0 -b .pr104253~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -973,6 +975,7 @@ CONFIGURE_OPTS="\ %endif --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \ --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only \ + --enable-libstdcxx-backtrace \ %ifnarch %{mips} --with-linker-hash-style=gnu \ %endif @@ -1530,6 +1533,7 @@ mv ../../../../%{_lib}/liblsan_preinit.o liblsan_preinit.o fi mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++fs.*a $FULLLPATH/ +mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++_libbacktrace.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libsupc++.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libgfortran.*a $FULLLPATH/ %if %{build_objc} @@ -1661,6 +1665,8 @@ ln -sf lib32/libstdc++.a libstdc++.a ln -sf ../lib64/libstdc++.a 64/libstdc++.a ln -sf lib32/libstdc++fs.a libstdc++fs.a ln -sf ../lib64/libstdc++fs.a 64/libstdc++fs.a +ln -sf lib32/libstdc++_libbacktrace.a libstdc++_libbacktrace.a +ln -sf ../lib64/libstdc++_libbacktrace.a 64/libstdc++_libbacktrace.a ln -sf lib32/libsupc++.a libsupc++.a ln -sf ../lib64/libsupc++.a 64/libsupc++.a %if %{build_libquadmath} @@ -1762,6 +1768,8 @@ ln -sf ../lib32/libstdc++.a 32/libstdc++.a ln -sf lib64/libstdc++.a libstdc++.a ln -sf ../lib32/libstdc++fs.a 32/libstdc++fs.a ln -sf lib64/libstdc++fs.a libstdc++fs.a +ln -sf ../lib32/libstdc++_libbacktrace.a 32/libstdc++_libbacktrace.a +ln -sf lib64/libstdc++_libbacktrace.a libstdc++_libbacktrace.a ln -sf ../lib32/libsupc++.a 32/libsupc++.a ln -sf lib64/libsupc++.a libsupc++.a %if %{build_libquadmath} @@ -1809,6 +1817,7 @@ ln -sf lib64/adalib adalib ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libgfortran.a 32/libgfortran.a ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libstdc++.a 32/libstdc++.a ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libstdc++fs.a 32/libstdc++fs.a +ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libstdc++_libbacktrace.a 32/libstdc++_libbacktrace.a ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libsupc++.a 32/libsupc++.a %if %{build_libquadmath} ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libquadmath.a 32/libquadmath.a @@ -1856,7 +1865,7 @@ for d in . $FULLLSUBDIR; do -o -name libitm.a -o -name liblsan.a \ -o -name libobjc.a -o -name libgdruntime.a -o -name libgphobos.a \ -o -name libquadmath.a -o -name libstdc++.a \ - -o -name libstdc++fs.a -o -name libsupc++.a \ + -o -name libstdc++fs.a -o -name libstdc++_libbacktrace.a -o -name libsupc++.a \ -o -name libtsan.a -o -name libubsan.a \) -a -type f`; do cp -a $f $RPM_BUILD_ROOT%{_prefix}/lib/debug%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/$d/ done @@ -2498,6 +2507,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++.so %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++fs.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++_libbacktrace.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libsupc++.a %endif %ifarch %{multilib_64_archs} @@ -2505,6 +2515,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++.so %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++fs.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++_libbacktrace.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libsupc++.a %endif %ifarch sparcv9 ppc %{multilib_64_archs} @@ -2513,6 +2524,7 @@ end %ifarch sparcv9 sparc64 ppc ppc64 ppc64p7 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++fs.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++_libbacktrace.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libsupc++.a %endif %doc rpm.doc/changelogs/gcc/cp/ChangeLog* @@ -2545,13 +2557,16 @@ end %ifarch sparcv9 ppc %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++fs.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++_libbacktrace.a %endif %ifarch sparc64 ppc64 ppc64p7 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++fs.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++_libbacktrace.a %endif %ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++fs.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++_libbacktrace.a %endif %doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README* @@ -3156,6 +3171,22 @@ end %endif %changelog +* Sat Jan 29 2022 Jakub Jelinek 12.0.1-0.4 +- update from trunk + - PRs ada/104258, analyzer/104224, analyzer/104247, bootstrap/67102, + c++/51344, c++/59950, c++/82632, c++/92752, c++/92944, c++/99895, + c++/100030, c++/100198, c++/100282, c++/101532, c++/101988, + c++/103057, c++/103341, c++/103678, c++/104206, c++/104225, + c++/104226, c++/104235, c++/104245, fortran/84784, fortran/103790, + fortran/104128, fortran/104212, fortran/104227, libfortran/104233, + libstdc++/100516, libstdc++/104161, libstdc++/104217, + libstdc++/104259, lto/104237, middle-end/103642, target/103702, + target/104201, target/104213, target/104239, testsuite/70230, + tree-optimization/104196, tree-optimization/104203, + tree-optimization/104263, tree-optimization/104267, web/104254 +- configure with --enable-libstdcxx-backtrace and package + libstdc++_libbacktrace.a + * Tue Jan 25 2022 Jakub Jelinek 12.0.1-0.3 - update from trunk - PRs ada/103538, analyzer/94362, analyzer/103685, analyzer/104062, diff --git a/gcc12-pr103514-revert.patch b/gcc12-pr103514-revert.patch new file mode 100644 index 0000000..ac95059 --- /dev/null +++ b/gcc12-pr103514-revert.patch @@ -0,0 +1,27 @@ +2022-01-28 Navid Rahimi + +gcc/ + PR tree-optimization/103514 + * match.pd (a & b) ^ (a == b) -> !(a | b): New optimization. + (a & b) == (a ^ b) -> !(a | b): New optimization. + +gcc/testsuite + * gcc.dg/tree-ssa/pr103514.c: Testcase for this optimization. + +--- gcc/match.pd ++++ gcc/match.pd +@@ -1784,14 +1784,6 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) + (negate (nop_convert? (bit_not @0))) + (plus (view_convert @0) { build_each_one_cst (type); })) + +-/* (a & b) ^ (a == b) -> !(a | b) */ +-/* (a & b) == (a ^ b) -> !(a | b) */ +-(for first_op (bit_xor eq) +- second_op (eq bit_xor) +- (simplify +- (first_op:c (bit_and:c truth_valued_p@0 truth_valued_p@1) (second_op:c @0 @1)) +- (bit_not (bit_ior @0 @1)))) +- + /* Convert ~ (A - 1) or ~ (A + -1) to -A. */ + (simplify + (bit_not (convert? (minus @0 integer_each_onep))) diff --git a/gcc12-pr104194.patch b/gcc12-pr104194.patch deleted file mode 100644 index f0747c7..0000000 --- a/gcc12-pr104194.patch +++ /dev/null @@ -1,92 +0,0 @@ -2022-01-25 Jakub Jelinek - - PR debug/104194 - * dwarf2out.cc (long_double_as_float128): New function. - (modified_type_die): For powerpc64le IEEE 754 quad long double - and complex long double emit those as DW_TAG_typedef to - _Float128 or complex _Float128 base type. - ---- gcc/dwarf2out.cc.jj 2022-01-25 05:47:53.987454934 +0100 -+++ gcc/dwarf2out.cc 2022-01-25 11:54:25.100522089 +0100 -@@ -13568,6 +13568,47 @@ qualified_die_p (dw_die_ref die, int *ma - return type; - } - -+/* If TYPE is long double or complex long double that -+ should be emitted as artificial typedef to _Float128 or -+ complex _Float128, return the type it should be emitted as. -+ This is done in case the target already supports 16-byte -+ composite floating point type (ibm_extended_format). */ -+ -+static tree -+long_double_as_float128 (tree type) -+{ -+ if (type != long_double_type_node -+ && type != complex_long_double_type_node) -+ return NULL_TREE; -+ -+ machine_mode mode, fmode; -+ if (TREE_CODE (type) == COMPLEX_TYPE) -+ mode = TYPE_MODE (TREE_TYPE (type)); -+ else -+ mode = TYPE_MODE (type); -+ if (known_eq (GET_MODE_SIZE (mode), 16) && !MODE_COMPOSITE_P (mode)) -+ FOR_EACH_MODE_IN_CLASS (fmode, MODE_FLOAT) -+ if (known_eq (GET_MODE_SIZE (fmode), 16) -+ && MODE_COMPOSITE_P (fmode)) -+ { -+ if (type == long_double_type_node) -+ { -+ if (float128_type_node -+ && (TYPE_MODE (float128_type_node) -+ == TYPE_MODE (type))) -+ return float128_type_node; -+ return NULL_TREE; -+ } -+ for (int i = 0; i < NUM_FLOATN_NX_TYPES; i++) -+ if (COMPLEX_FLOATN_NX_TYPE_NODE (i) != NULL_TREE -+ && (TYPE_MODE (COMPLEX_FLOATN_NX_TYPE_NODE (i)) -+ == TYPE_MODE (type))) -+ return COMPLEX_FLOATN_NX_TYPE_NODE (i); -+ } -+ -+ return NULL_TREE; -+} -+ - /* Given a pointer to an arbitrary ..._TYPE tree node, return a debugging - entry that chains the modifiers specified by CV_QUALS in front of the - given type. REVERSE is true if the type is to be interpreted in the -@@ -13848,7 +13889,32 @@ modified_type_die (tree type, int cv_qua - } - else if (is_base_type (type)) - { -- mod_type_die = base_type_die (type, reverse); -+ /* If a target supports long double as different floating point -+ modes with the same 16-byte size, use normal DW_TAG_base_type -+ only for the composite (ibm_extended_real_format) type and -+ for the other for the time being emit instead a "_Float128" -+ or "complex _Float128" DW_TAG_base_type and a "long double" -+ or "complex long double" typedef to it. */ -+ if (tree other_type = long_double_as_float128 (type)) -+ { -+ dw_die_ref other_die; -+ if (TYPE_NAME (other_type)) -+ other_die -+ = modified_type_die (other_type, TYPE_UNQUALIFIED, reverse, -+ context_die); -+ else -+ { -+ other_die = base_type_die (type, reverse); -+ add_child_die (comp_unit_die (), other_die); -+ add_name_attribute (other_die, -+ TREE_CODE (type) == COMPLEX_TYPE -+ ? "complex _Float128" : "_Float128"); -+ } -+ mod_type_die = new_die_raw (DW_TAG_typedef); -+ add_AT_die_ref (mod_type_die, DW_AT_type, other_die); -+ } -+ else -+ mod_type_die = base_type_die (type, reverse); - - /* The DIE with DW_AT_endianity is placed right after the naked DIE. */ - if (reverse_base_type) diff --git a/gcc12-pr104253.patch b/gcc12-pr104253.patch new file mode 100644 index 0000000..5560524 --- /dev/null +++ b/gcc12-pr104253.patch @@ -0,0 +1,200 @@ +If you are on a PowerPC system where the default long double is IEEE +128-bit, GCC will use the wrong names for some of the conversion functions +for the __ibm128 type. + +What is happening is when the defult long double is IEEE 128-bit, the +various convert, truncation, and extend functions did not specify a +default name for the conversion. The machine indepentent portions of the +compiler would construct a call with an 'if' name (IFmode being the mode +for IBM 128-bit floating point). This patch specifies to use the +tradiational 'tf' name for these conversion functions. + +2022-01-28 Michael Meissner + +gcc/ + PR target/104253 + * config/rs6000/rs6000.cc (init_float128_ibm): Use the TF names + for builtin conversions between __ibm128 and DImode when long + double uses the IEEE 128-bit format. + +gcc/testsuite/ + PR target/104253 + * gcc.target/powerpc/pr104253.c: New test. +--- + gcc/config/rs6000/rs6000.cc | 6 + + gcc/testsuite/gcc.target/powerpc/pr104253.c | 154 ++++++++++++++++++++ + 2 files changed, 160 insertions(+) + create mode 100644 gcc/testsuite/gcc.target/powerpc/pr104253.c + +--- gcc/config/rs6000/rs6000.cc ++++ gcc/config/rs6000/rs6000.cc +@@ -11113,6 +11113,12 @@ init_float128_ibm (machine_mode mode) + set_conv_libfunc (trunc_optab, DDmode, mode, "__dpd_trunctfdd"); + set_conv_libfunc (sext_optab, TDmode, mode, "__dpd_extendtftd"); + ++ set_conv_libfunc (sfix_optab, DImode, mode, "__fixtfdi"); ++ set_conv_libfunc (ufix_optab, DImode, mode, "__fixunstfdi"); ++ ++ set_conv_libfunc (sfloat_optab, mode, DImode, "__floatditf"); ++ set_conv_libfunc (ufloat_optab, mode, DImode, "__floatunditf"); ++ + if (TARGET_POWERPC64) + { + set_conv_libfunc (sfix_optab, TImode, mode, "__fixtfti"); +--- gcc/testsuite/gcc.target/powerpc/pr104253.c ++++ gcc/testsuite/gcc.target/powerpc/pr104253.c +@@ -0,0 +1,154 @@ ++/* ++ * Require float128 support because __ibm128 currently is not enabled unless we ++ * also have __float128 support. ++ */ ++ ++/* { dg-do run } */ ++/* { require-effective-target ppc_float128_sw } */ ++/* { dg-options "-O2 -mvsx -mfloat128" } */ ++ ++/* ++ * PR target/104253 ++ * ++ * Verify that the various conversions to and from __ibm128 work. When the ++ * default for long double is changed to IEEE 128-bit, originally GCC would ++ * call the functions using an 'if' name instead of 'tf. ++ */ ++ ++#include ++ ++extern float ibm128_to_sf (__ibm128) __attribute__((noinline)); ++extern double ibm128_to_df (__ibm128) __attribute__((noinline)); ++extern int ibm128_to_si (__ibm128) __attribute__((noinline)); ++extern long long ibm128_to_di (__ibm128) __attribute__((noinline)); ++extern unsigned int ibm128_to_usi (__ibm128) __attribute__((noinline)); ++extern unsigned long long ibm128_to_udi (__ibm128) __attribute__((noinline)); ++ ++extern __ibm128 sf_to_ibm128 (float) __attribute__((noinline)); ++extern __ibm128 df_to_ibm128 (double) __attribute__((noinline)); ++extern __ibm128 si_to_ibm128 (int) __attribute__((noinline)); ++extern __ibm128 di_to_ibm128 (long long) __attribute__((noinline)); ++extern __ibm128 usi_to_ibm128 (unsigned int) __attribute__((noinline)); ++extern __ibm128 udi_to_ibm128 (unsigned long long) __attribute__((noinline)); ++ ++float ++ibm128_to_sf (__ibm128 x) ++{ ++ return x; ++} ++ ++double ++ibm128_to_df (__ibm128 x) ++{ ++ return x; ++} ++ ++int ++ibm128_to_si (__ibm128 x) ++{ ++ return x; ++} ++ ++long long ++ibm128_to_di (__ibm128 x) ++{ ++ return x; ++} ++ ++unsigned int ++ibm128_to_usi (__ibm128 x) ++{ ++ return x; ++} ++ ++unsigned long long ++ibm128_to_udi (__ibm128 x) ++{ ++ return x; ++} ++ ++__ibm128 ++sf_to_ibm128 (float x) ++{ ++ return x; ++} ++ ++__ibm128 ++df_to_ibm128 (double x) ++{ ++ return x; ++} ++ ++__ibm128 ++si_to_ibm128 (int x) ++{ ++ return x; ++} ++ ++__ibm128 ++di_to_ibm128 (long long x) ++{ ++ return x; ++} ++ ++__ibm128 ++usi_to_ibm128 (unsigned int x) ++{ ++ return x; ++} ++ ++__ibm128 ++udi_to_ibm128 (unsigned long long x) ++{ ++ return x; ++} ++ ++volatile float seven_sf = 7.0f; ++volatile double seven_df = 7.0; ++volatile int seven_si = 7; ++volatile long long seven_di = 7LL; ++volatile unsigned int seven_usi = 7U; ++volatile unsigned long long seven_udi = 7ULL; ++volatile __ibm128 seven_ibm128 = 7.0; ++ ++int ++main (void) ++{ ++ if (seven_ibm128 != sf_to_ibm128 (seven_sf)) ++ abort (); ++ ++ if (seven_ibm128 != df_to_ibm128 (seven_df)) ++ abort (); ++ ++ if (seven_ibm128 != si_to_ibm128 (seven_si)) ++ abort (); ++ ++ if (seven_ibm128 != di_to_ibm128 (seven_di)) ++ abort (); ++ ++ if (seven_ibm128 != usi_to_ibm128 (seven_usi)) ++ abort (); ++ ++ if (seven_ibm128 != udi_to_ibm128 (seven_udi)) ++ abort (); ++ ++ if (seven_sf != ibm128_to_sf (seven_ibm128)) ++ abort (); ++ ++ if (seven_df != ibm128_to_df (seven_ibm128)) ++ abort (); ++ ++ if (seven_si != ibm128_to_si (seven_ibm128)) ++ abort (); ++ ++ if (seven_di != ibm128_to_di (seven_ibm128)) ++ abort (); ++ ++ if (seven_usi != ibm128_to_usi (seven_ibm128)) ++ abort (); ++ ++ if (seven_udi != ibm128_to_udi (seven_ibm128)) ++ abort (); ++ ++ return 0; ++} diff --git a/gcc12-pr94193.patch b/gcc12-pr94193.patch deleted file mode 100644 index e669a81..0000000 --- a/gcc12-pr94193.patch +++ /dev/null @@ -1,39 +0,0 @@ -2022-01-25 Jakub Jelinek - - PR target/94193 - * config/rs6000/rs6000.md (feclearexceptsi, feraiseexceptsi): - Use general_operand instead of const_int_operand, drop constraint - and FAIL if operands[1] is not CONST_INT_P. - ---- gcc/config/rs6000/rs6000.md.jj 2022-01-25 05:48:01.497340303 +0100 -+++ gcc/config/rs6000/rs6000.md 2022-01-25 13:48:13.752709482 +0100 -@@ -6959,12 +6959,12 @@ (define_expand "fegetroundsi" - ;; Because of these restrictions, this only expands on the desired - ;; cases and fallback to a call to libc on any other case. - (define_expand "feclearexceptsi" -- [(use (match_operand:SI 1 "const_int_operand" "n")) -+ [(use (match_operand:SI 1 "general_operand")) - (set (match_operand:SI 0 "gpc_reg_operand") - (const_int 0))] - "TARGET_HARD_FLOAT" - { -- if (!OPTION_GLIBC) -+ if (!OPTION_GLIBC || !CONST_INT_P (operands[1])) - FAIL; - - unsigned int fe = INTVAL (operands[1]); -@@ -6999,12 +6999,12 @@ (define_expand "feclearexceptsi" - ;; Because of these restrictions, this only expands on the desired - ;; cases and fallback to a call to libc on any other case. - (define_expand "feraiseexceptsi" -- [(use (match_operand:SI 1 "const_int_operand" "n")) -+ [(use (match_operand:SI 1 "general_operand")) - (set (match_operand:SI 0 "gpc_reg_operand") - (const_int 0))] - "TARGET_HARD_FLOAT" - { -- if (!OPTION_GLIBC) -+ if (!OPTION_GLIBC || !CONST_INT_P (operands[1])) - FAIL; - - unsigned int fe = INTVAL (operands[1]); diff --git a/gcc12-pr95424-revert.patch b/gcc12-pr95424-revert.patch new file mode 100644 index 0000000..6d36f8b --- /dev/null +++ b/gcc12-pr95424-revert.patch @@ -0,0 +1,27 @@ +2022-01-28 Zhao Wei Liew + + PR tree-optimization/95424 + * match.pd: Simplify 1 / X where X is an integer. + +--- gcc/match.pd ++++ gcc/match.pd +@@ -435,19 +435,6 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) + && TYPE_UNSIGNED (type)) + (trunc_divmod @0 @1)))) + +- /* 1 / X -> X == 1 for unsigned integer X. +- 1 / X -> X >= -1 && X <= 1 ? X : 0 for signed integer X. +- But not for 1 / 0 so that we can get proper warnings and errors, +- and not for 1-bit integers as they are edge cases better handled elsewhere. */ +-(simplify +- (trunc_div integer_onep@0 @1) +- (if (INTEGRAL_TYPE_P (type) && !integer_zerop (@1) && TYPE_PRECISION (type) > 1) +- (if (TYPE_UNSIGNED (type)) +- (eq @1 { build_one_cst (type); }) +- (with { tree utype = unsigned_type_for (type); } +- (cond (le (plus (convert:utype @1) { build_one_cst (utype); }) { build_int_cst (utype, 2); }) +- @1 { build_zero_cst (type); }))))) +- + /* Combine two successive divisions. Note that combining ceil_div + and floor_div is trickier and combining round_div even more so. */ + (for div (trunc_div exact_div) diff --git a/sources b/sources index fcd533a..0938001 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.1-20220125.tar.xz) = 09c4b7d7fe3e8a2c0f4181da717e476c0868b2bb1c86cdd22482ee4235aebb9eb0c89b5f87b9a0e6852e0cc2876b652c60457996a86dc6e9b9b02ca2ff87613f +SHA512 (gcc-12.0.1-20220129.tar.xz) = 119e7c7a4cf54c17e5b9195c4933c738c9689bf1af33b13a97a277077f78910cd4e1b76fa1ef83572d9bbb964e4c352f79de53f636a4c6505c946f3cfb0fc1f7 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 3628c9a446e71c46fc00d54d635cdc6d98823114 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 2 Feb 2022 22:30:59 +0100 Subject: [PATCH 093/293] 12.0.1-0.5 --- .gitignore | 1 + gcc.spec | 34 ++++++++---- gcc12-pr103514-revert.patch | 27 ---------- gcc12-pr104334.patch | 104 ++++++++++++++++++++++++++++++++++++ gcc12-pr95424-revert.patch | 27 ---------- sources | 2 +- 6 files changed, 129 insertions(+), 66 deletions(-) delete mode 100644 gcc12-pr103514-revert.patch create mode 100644 gcc12-pr104334.patch delete mode 100644 gcc12-pr95424-revert.patch diff --git a/.gitignore b/.gitignore index 147c853..bf35d3e 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,4 @@ /gcc-12.0.1-20220118.tar.xz /gcc-12.0.1-20220125.tar.xz /gcc-12.0.1-20220129.tar.xz +/gcc-12.0.1-20220202.tar.xz diff --git a/gcc.spec b/gcc.spec index c7723e4..0758dc1 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20220129 -%global gitrev 8b49e9256e108bb3d436946b481cfa6bb11bd1c8 +%global DATE 20220202 +%global gitrev fb6057a2be99e071993fb54a5d338ab0febba8ff %global gcc_version 12.0.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to @@ -120,7 +120,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.4%{?dist} +Release: %{gcc_release}.5%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -270,10 +270,9 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch -Patch12: gcc12-pr103514-revert.patch -Patch13: gcc12-pr95424-revert.patch -Patch14: gcc12-ifcvt-revert.patch -Patch15: gcc12-pr104253.patch +Patch12: gcc12-pr104334.patch +Patch13: gcc12-ifcvt-revert.patch +Patch14: gcc12-pr104253.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -795,10 +794,9 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr103514-revert~ -%patch13 -p0 -b .pr95424-revert~ -%patch14 -p0 -b .ifcvt-revert~ -%patch15 -p0 -b .pr104253~ +%patch12 -p0 -b .pr104334~ +%patch13 -p0 -b .ifcvt-revert~ +%patch14 -p0 -b .pr104253~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3171,6 +3169,20 @@ end %endif %changelog +* Wed Feb 2 2022 Jakub Jelinek 12.0.1-0.5 +- update from trunk + - PRs analyzer/104270, c++/101874, c++/102414, c++/102434, c++/103186, + c++/104291, c++/104294, d/104287, demangler/98886, demangler/99935, + fortran/104331, libstdc++/101831, libstdc++/104301, lto/104333, + middle-end/104232, middle-end/104307, middle-end/95115, + preprocessor/104147, rtl-optimization/101260, target/94372, + target/100428, target/104189, target/104298, target/104323, + tree-optimization/95424, tree-optimization/100499, + tree-optimization/102819, tree-optimization/103169, + tree-optimization/103514, tree-optimization/104279, + tree-optimization/104280, tree-optimization/104281 +- fix a VRP bug with 1-3 bit precision types (PR tree-optimization/104334) + * Sat Jan 29 2022 Jakub Jelinek 12.0.1-0.4 - update from trunk - PRs ada/104258, analyzer/104224, analyzer/104247, bootstrap/67102, diff --git a/gcc12-pr103514-revert.patch b/gcc12-pr103514-revert.patch deleted file mode 100644 index ac95059..0000000 --- a/gcc12-pr103514-revert.patch +++ /dev/null @@ -1,27 +0,0 @@ -2022-01-28 Navid Rahimi - -gcc/ - PR tree-optimization/103514 - * match.pd (a & b) ^ (a == b) -> !(a | b): New optimization. - (a & b) == (a ^ b) -> !(a | b): New optimization. - -gcc/testsuite - * gcc.dg/tree-ssa/pr103514.c: Testcase for this optimization. - ---- gcc/match.pd -+++ gcc/match.pd -@@ -1784,14 +1784,6 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) - (negate (nop_convert? (bit_not @0))) - (plus (view_convert @0) { build_each_one_cst (type); })) - --/* (a & b) ^ (a == b) -> !(a | b) */ --/* (a & b) == (a ^ b) -> !(a | b) */ --(for first_op (bit_xor eq) -- second_op (eq bit_xor) -- (simplify -- (first_op:c (bit_and:c truth_valued_p@0 truth_valued_p@1) (second_op:c @0 @1)) -- (bit_not (bit_ior @0 @1)))) -- - /* Convert ~ (A - 1) or ~ (A + -1) to -A. */ - (simplify - (bit_not (convert? (minus @0 integer_each_onep))) diff --git a/gcc12-pr104334.patch b/gcc12-pr104334.patch new file mode 100644 index 0000000..9b61272 --- /dev/null +++ b/gcc12-pr104334.patch @@ -0,0 +1,104 @@ +2022-02-02 Jakub Jelinek + + PR tree-optimization/104334 + * range-op.cc (range_operator::wi_fold_in_parts): Change lh_range + and rh_range type to widest_int and subtract in widest_int. Remove + ov_rh, ov_lh and sign vars, always perform comparisons as signed + and use >, < and == operators for it. + + * g++.dg/opt/pr104334.C: New test. + +--- gcc/range-op.cc.jj 2022-01-13 22:29:15.345831749 +0100 ++++ gcc/range-op.cc 2022-02-02 16:10:07.422148772 +0100 +@@ -144,22 +144,21 @@ range_operator::wi_fold_in_parts (irange + const wide_int &rh_lb, + const wide_int &rh_ub) const + { +- wi::overflow_type ov_rh, ov_lh; + int_range_max tmp; +- wide_int rh_range = wi::sub (rh_ub, rh_lb, TYPE_SIGN (type), &ov_rh); +- wide_int lh_range = wi::sub (lh_ub, lh_lb, TYPE_SIGN (type), &ov_lh); +- signop sign = TYPE_SIGN (type);; ++ widest_int rh_range = wi::sub (widest_int::from (rh_ub, TYPE_SIGN (type)), ++ widest_int::from (rh_lb, TYPE_SIGN (type))); ++ widest_int lh_range = wi::sub (widest_int::from (lh_ub, TYPE_SIGN (type)), ++ widest_int::from (lh_lb, TYPE_SIGN (type))); + // If there are 2, 3, or 4 values in the RH range, do them separately. + // Call wi_fold_in_parts to check the RH side. +- if (wi::gt_p (rh_range, 0, sign) && wi::lt_p (rh_range, 4, sign) +- && ov_rh == wi::OVF_NONE) ++ if (rh_range > 0 && rh_range < 4) + { + wi_fold_in_parts (r, type, lh_lb, lh_ub, rh_lb, rh_lb); +- if (wi::gt_p (rh_range, 1, sign)) ++ if (rh_range > 1) + { + wi_fold_in_parts (tmp, type, lh_lb, lh_ub, rh_lb + 1, rh_lb + 1); + r.union_ (tmp); +- if (wi::eq_p (rh_range, 3)) ++ if (rh_range == 3) + { + wi_fold_in_parts (tmp, type, lh_lb, lh_ub, rh_lb + 2, rh_lb + 2); + r.union_ (tmp); +@@ -170,15 +169,14 @@ range_operator::wi_fold_in_parts (irange + } + // Otherise check for 2, 3, or 4 values in the LH range and split them up. + // The RH side has been checked, so no recursion needed. +- else if (wi::gt_p (lh_range, 0, sign) && wi::lt_p (lh_range, 4, sign) +- && ov_lh == wi::OVF_NONE) ++ else if (lh_range > 0 && lh_range < 4) + { + wi_fold (r, type, lh_lb, lh_lb, rh_lb, rh_ub); +- if (wi::gt_p (lh_range, 1, sign)) ++ if (lh_range > 1) + { + wi_fold (tmp, type, lh_lb + 1, lh_lb + 1, rh_lb, rh_ub); + r.union_ (tmp); +- if (wi::eq_p (lh_range, 3)) ++ if (lh_range == 3) + { + wi_fold (tmp, type, lh_lb + 2, lh_lb + 2, rh_lb, rh_ub); + r.union_ (tmp); +--- gcc/testsuite/g++.dg/opt/pr104334.C.jj 2022-02-02 14:35:51.184657968 +0100 ++++ gcc/testsuite/g++.dg/opt/pr104334.C 2022-02-02 14:37:14.888478594 +0100 +@@ -0,0 +1,40 @@ ++// PR tree-optimization/104334 ++// { dg-do run { target c++11 } } ++// { dg-options "-O2 --param logical-op-non-short-circuit=0" } ++ ++enum class A { A0, A1, A2, A3 }; ++int x; ++ ++__attribute__((noipa)) void ++baz () ++{ ++ x = 1; ++} ++ ++struct B { ++ unsigned b : 2; ++ ++ A ++ foo () const ++ { ++ return static_cast (b); ++ } ++ ++ __attribute__((noinline)) void ++ bar () ++ { ++ if (foo () == A::A2 || foo () == A::A3) ++ baz (); ++ } ++}; ++ ++int ++main () ++{ ++ B c; ++ c.b = 2; ++ c.bar (); ++ if (x != 1) ++ __builtin_abort (); ++ return 0; ++} diff --git a/gcc12-pr95424-revert.patch b/gcc12-pr95424-revert.patch deleted file mode 100644 index 6d36f8b..0000000 --- a/gcc12-pr95424-revert.patch +++ /dev/null @@ -1,27 +0,0 @@ -2022-01-28 Zhao Wei Liew - - PR tree-optimization/95424 - * match.pd: Simplify 1 / X where X is an integer. - ---- gcc/match.pd -+++ gcc/match.pd -@@ -435,19 +435,6 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) - && TYPE_UNSIGNED (type)) - (trunc_divmod @0 @1)))) - -- /* 1 / X -> X == 1 for unsigned integer X. -- 1 / X -> X >= -1 && X <= 1 ? X : 0 for signed integer X. -- But not for 1 / 0 so that we can get proper warnings and errors, -- and not for 1-bit integers as they are edge cases better handled elsewhere. */ --(simplify -- (trunc_div integer_onep@0 @1) -- (if (INTEGRAL_TYPE_P (type) && !integer_zerop (@1) && TYPE_PRECISION (type) > 1) -- (if (TYPE_UNSIGNED (type)) -- (eq @1 { build_one_cst (type); }) -- (with { tree utype = unsigned_type_for (type); } -- (cond (le (plus (convert:utype @1) { build_one_cst (utype); }) { build_int_cst (utype, 2); }) -- @1 { build_zero_cst (type); }))))) -- - /* Combine two successive divisions. Note that combining ceil_div - and floor_div is trickier and combining round_div even more so. */ - (for div (trunc_div exact_div) diff --git a/sources b/sources index 0938001..542d582 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.1-20220129.tar.xz) = 119e7c7a4cf54c17e5b9195c4933c738c9689bf1af33b13a97a277077f78910cd4e1b76fa1ef83572d9bbb964e4c352f79de53f636a4c6505c946f3cfb0fc1f7 +SHA512 (gcc-12.0.1-20220202.tar.xz) = cc0a217d96107064adb121075303b359b16b40d32744eff8fa671255d5b9f34245385b10158a6d4558a1d2fbb2627525c1d50ec6e295541bb2334625b4ae9d30 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 62d2a570da41e8c28ced4e64c9cf7c497f1e15d2 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 5 Feb 2022 11:37:58 +0100 Subject: [PATCH 094/293] 12.0.1-0.6 --- .gitignore | 1 + gcc.spec | 26 +++++++---- gcc12-pr104334.patch | 104 ------------------------------------------- sources | 2 +- 4 files changed, 19 insertions(+), 114 deletions(-) delete mode 100644 gcc12-pr104334.patch diff --git a/.gitignore b/.gitignore index bf35d3e..c53c35a 100644 --- a/.gitignore +++ b/.gitignore @@ -61,3 +61,4 @@ /gcc-12.0.1-20220125.tar.xz /gcc-12.0.1-20220129.tar.xz /gcc-12.0.1-20220202.tar.xz +/gcc-12.0.1-20220205.tar.xz diff --git a/gcc.spec b/gcc.spec index 0758dc1..3695272 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20220202 -%global gitrev fb6057a2be99e071993fb54a5d338ab0febba8ff +%global DATE 20220205 +%global gitrev 76de92944e8628662e44eab3065caad0a3c0e032 %global gcc_version 12.0.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to @@ -120,7 +120,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.5%{?dist} +Release: %{gcc_release}.6%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -270,9 +270,8 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch -Patch12: gcc12-pr104334.patch -Patch13: gcc12-ifcvt-revert.patch -Patch14: gcc12-pr104253.patch +Patch12: gcc12-ifcvt-revert.patch +Patch13: gcc12-pr104253.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -794,9 +793,8 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr104334~ -%patch13 -p0 -b .ifcvt-revert~ -%patch14 -p0 -b .pr104253~ +%patch12 -p0 -b .ifcvt-revert~ +%patch13 -p0 -b .pr104253~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3169,6 +3167,16 @@ end %endif %changelog +* Sat Feb 5 2022 Jakub Jelinek 12.0.1-0.6 +- update from trunk + - PRs analyzer/104369, c++/92385, c++/104079, c++/104300, c++/104302, + debug/104337, debug/104366, fortran/104311, fortran/104328, + middle-end/90348, middle-end/104092, middle-end/104260, + rtl-optimization/101885, target/95082, target/100808, target/103686, + target/104219, target/104362, target/104380, tree-optimization/103641, + tree-optimization/104119, tree-optimization/104356, + tree-optimization/104389 + * Wed Feb 2 2022 Jakub Jelinek 12.0.1-0.5 - update from trunk - PRs analyzer/104270, c++/101874, c++/102414, c++/102434, c++/103186, diff --git a/gcc12-pr104334.patch b/gcc12-pr104334.patch deleted file mode 100644 index 9b61272..0000000 --- a/gcc12-pr104334.patch +++ /dev/null @@ -1,104 +0,0 @@ -2022-02-02 Jakub Jelinek - - PR tree-optimization/104334 - * range-op.cc (range_operator::wi_fold_in_parts): Change lh_range - and rh_range type to widest_int and subtract in widest_int. Remove - ov_rh, ov_lh and sign vars, always perform comparisons as signed - and use >, < and == operators for it. - - * g++.dg/opt/pr104334.C: New test. - ---- gcc/range-op.cc.jj 2022-01-13 22:29:15.345831749 +0100 -+++ gcc/range-op.cc 2022-02-02 16:10:07.422148772 +0100 -@@ -144,22 +144,21 @@ range_operator::wi_fold_in_parts (irange - const wide_int &rh_lb, - const wide_int &rh_ub) const - { -- wi::overflow_type ov_rh, ov_lh; - int_range_max tmp; -- wide_int rh_range = wi::sub (rh_ub, rh_lb, TYPE_SIGN (type), &ov_rh); -- wide_int lh_range = wi::sub (lh_ub, lh_lb, TYPE_SIGN (type), &ov_lh); -- signop sign = TYPE_SIGN (type);; -+ widest_int rh_range = wi::sub (widest_int::from (rh_ub, TYPE_SIGN (type)), -+ widest_int::from (rh_lb, TYPE_SIGN (type))); -+ widest_int lh_range = wi::sub (widest_int::from (lh_ub, TYPE_SIGN (type)), -+ widest_int::from (lh_lb, TYPE_SIGN (type))); - // If there are 2, 3, or 4 values in the RH range, do them separately. - // Call wi_fold_in_parts to check the RH side. -- if (wi::gt_p (rh_range, 0, sign) && wi::lt_p (rh_range, 4, sign) -- && ov_rh == wi::OVF_NONE) -+ if (rh_range > 0 && rh_range < 4) - { - wi_fold_in_parts (r, type, lh_lb, lh_ub, rh_lb, rh_lb); -- if (wi::gt_p (rh_range, 1, sign)) -+ if (rh_range > 1) - { - wi_fold_in_parts (tmp, type, lh_lb, lh_ub, rh_lb + 1, rh_lb + 1); - r.union_ (tmp); -- if (wi::eq_p (rh_range, 3)) -+ if (rh_range == 3) - { - wi_fold_in_parts (tmp, type, lh_lb, lh_ub, rh_lb + 2, rh_lb + 2); - r.union_ (tmp); -@@ -170,15 +169,14 @@ range_operator::wi_fold_in_parts (irange - } - // Otherise check for 2, 3, or 4 values in the LH range and split them up. - // The RH side has been checked, so no recursion needed. -- else if (wi::gt_p (lh_range, 0, sign) && wi::lt_p (lh_range, 4, sign) -- && ov_lh == wi::OVF_NONE) -+ else if (lh_range > 0 && lh_range < 4) - { - wi_fold (r, type, lh_lb, lh_lb, rh_lb, rh_ub); -- if (wi::gt_p (lh_range, 1, sign)) -+ if (lh_range > 1) - { - wi_fold (tmp, type, lh_lb + 1, lh_lb + 1, rh_lb, rh_ub); - r.union_ (tmp); -- if (wi::eq_p (lh_range, 3)) -+ if (lh_range == 3) - { - wi_fold (tmp, type, lh_lb + 2, lh_lb + 2, rh_lb, rh_ub); - r.union_ (tmp); ---- gcc/testsuite/g++.dg/opt/pr104334.C.jj 2022-02-02 14:35:51.184657968 +0100 -+++ gcc/testsuite/g++.dg/opt/pr104334.C 2022-02-02 14:37:14.888478594 +0100 -@@ -0,0 +1,40 @@ -+// PR tree-optimization/104334 -+// { dg-do run { target c++11 } } -+// { dg-options "-O2 --param logical-op-non-short-circuit=0" } -+ -+enum class A { A0, A1, A2, A3 }; -+int x; -+ -+__attribute__((noipa)) void -+baz () -+{ -+ x = 1; -+} -+ -+struct B { -+ unsigned b : 2; -+ -+ A -+ foo () const -+ { -+ return static_cast (b); -+ } -+ -+ __attribute__((noinline)) void -+ bar () -+ { -+ if (foo () == A::A2 || foo () == A::A3) -+ baz (); -+ } -+}; -+ -+int -+main () -+{ -+ B c; -+ c.b = 2; -+ c.bar (); -+ if (x != 1) -+ __builtin_abort (); -+ return 0; -+} diff --git a/sources b/sources index 542d582..09baf06 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.1-20220202.tar.xz) = cc0a217d96107064adb121075303b359b16b40d32744eff8fa671255d5b9f34245385b10158a6d4558a1d2fbb2627525c1d50ec6e295541bb2334625b4ae9d30 +SHA512 (gcc-12.0.1-20220205.tar.xz) = fdfcf57df5df9ec765c2017a76bfad1d1f02124f5e51078232c841cdb02848db3a55c3adf6f303e7545617b3df5a0ed84d9eee89f6e9b3fd1db27297736e44be SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From f58fc62400f4681345eeafc53d0149eeff774e54 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 12 Feb 2022 19:36:08 +0100 Subject: [PATCH 095/293] 12.0.1-0.7 --- .gitignore | 1 + gcc.spec | 51 ++++++++++++++++------ gcc12-ifcvt-revert.patch | 91 +++++++++++++++++++++++++++++++++++++++- gcc12-pr104513.patch | 49 ++++++++++++++++++++++ sources | 2 +- 5 files changed, 178 insertions(+), 16 deletions(-) create mode 100644 gcc12-pr104513.patch diff --git a/.gitignore b/.gitignore index c53c35a..b81e2a3 100644 --- a/.gitignore +++ b/.gitignore @@ -62,3 +62,4 @@ /gcc-12.0.1-20220129.tar.xz /gcc-12.0.1-20220202.tar.xz /gcc-12.0.1-20220205.tar.xz +/gcc-12.0.1-20220212.tar.xz diff --git a/gcc.spec b/gcc.spec index 3695272..c4a52ba 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20220205 -%global gitrev 76de92944e8628662e44eab3065caad0a3c0e032 +%global DATE 20220212 +%global gitrev dfda32cd0cba98db0f084f7d4ded68140e925e41 %global gcc_version 12.0.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to @@ -120,7 +120,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.6%{?dist} +Release: %{gcc_release}.7%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -304,7 +304,7 @@ Patch109: gcc12-fortran-fdec-add-missing-indexes.patch %if %{build_go} # Avoid stripping these libraries and binaries. %global __os_install_post \ -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.20.* \ +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.21.* \ chmod 644 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -312,7 +312,7 @@ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/test2json \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/vet \ %__os_install_post \ -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.20.* \ +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.21.* \ chmod 755 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 755 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -1464,7 +1464,7 @@ ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../libgfortran.so.5.* libgfortran.so ln -sf ../../../libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../libgo.so.20.* libgo.so +ln -sf ../../../libgo.so.21.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../libquadmath.so.0.* libquadmath.so @@ -1494,7 +1494,7 @@ ln -sf ../../../../%{_lib}/libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../../%{_lib}/libgfortran.so.5.* libgfortran.so ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../../%{_lib}/libgo.so.20.* libgo.so +ln -sf ../../../../%{_lib}/libgo.so.21.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so @@ -1615,8 +1615,8 @@ ln -sf ../`echo ../../../../lib/libgfortran.so.5.* | sed s~/lib/~/lib64/~` 64/li ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.20.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.20.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.21.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.21.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -1716,8 +1716,8 @@ ln -sf ../`echo ../../../../lib64/libgfortran.so.5.* | sed s~/../lib64/~/~` 32/l ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.20.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.20.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.21.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.21.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -1907,7 +1907,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.* %endif %if %{build_go} # Avoid stripping these libraries and binaries. -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.20.* +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.21.* chmod 644 %{buildroot}%{_prefix}/bin/go.gcc chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo @@ -3059,7 +3059,7 @@ end %doc rpm.doc/go/* %files -n libgo -%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.20* +%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.21* %doc rpm.doc/libgo/* %files -n libgo-devel @@ -3167,6 +3167,31 @@ end %endif %changelog +* Sat Feb 12 2022 Jakub Jelinek 12.0.1-0.7 +- update from trunk + - PRs analyzer/98797, analyzer/101081, analyzer/102052, analyzer/103872, + analyzer/104274, analyzer/104417, analyzer/104452, c++/80951, + c++/96242, c++/96876, c++/102204, c++/103706, c++/103752, c++/104033, + c++/104379, c++/104403, c++/104410, c++/104425, c++/104432, + c++/104472, c/104427, debug/104407, fortran/66193, fortran/104329, + libgomp/104385, libstdc++/104442, middle-end/100775, + middle-end/104402, middle-end/104446, middle-end/104450, + middle-end/104464, middle-end/104467, middle-end/104496, + rtl-optimization/104059, rtl-optimization/104153, + rtl-optimization/104198, rtl-optimization/104400, + rtl-optimization/104459, sanitizer/104449, target/35513, target/79754, + target/97005, target/97040, target/100593, target/102140, + target/103627, target/104117, target/104283, target/104327, + target/104345, target/104364, target/104441, target/104451, + target/104453, target/104456, target/104458, target/104462, + target/104469, target/104474, target/104502, testsuite/104481, + tree-optimization/102832, tree-optimization/104288, + tree-optimization/104373, tree-optimization/104420, + tree-optimization/104445, tree-optimization/104466, + tree-optimization/104479, tree-optimization/104499 +- fix handling of return in arm constexpr ctors and on all arches return in + constexpr dtors (PR c++/104513) + * Sat Feb 5 2022 Jakub Jelinek 12.0.1-0.6 - update from trunk - PRs analyzer/104369, c++/92385, c++/104079, c++/104300, c++/104302, diff --git a/gcc12-ifcvt-revert.patch b/gcc12-ifcvt-revert.patch index 2261669..dd13271 100644 --- a/gcc12-ifcvt-revert.patch +++ b/gcc12-ifcvt-revert.patch @@ -1,6 +1,93 @@ -Revert r12-674{3,4,5,6,7,8,9}, as there are several PRs reported against -those changes: PR104153, PR104154 and PR104198 at least. +Revert r12-674{3,4,5,6,7,8,9} and r12-7114, as there are several PRs reported +against those changes still unresolved. +--- gcc/ifcvt.cc ++++ gcc/ifcvt.cc +@@ -3391,11 +3391,7 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, + rtx cond = noce_get_condition (jump, &cond_earliest, false); + + rtx cc_cmp = cond_exec_get_condition (jump); +- if (cc_cmp) +- cc_cmp = copy_rtx (cc_cmp); + rtx rev_cc_cmp = cond_exec_get_condition (jump, /* get_reversed */ true); +- if (rev_cc_cmp) +- rev_cc_cmp = copy_rtx (rev_cc_cmp); + + rtx_insn *insn; + int count = 0; +@@ -3519,7 +3515,6 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, + unsigned cost1 = 0, cost2 = 0; + rtx_insn *seq, *seq1, *seq2; + rtx temp_dest = NULL_RTX, temp_dest1 = NULL_RTX, temp_dest2 = NULL_RTX; +- bool read_comparison = false; + + seq1 = try_emit_cmove_seq (if_info, temp, cond, + new_val, old_val, need_cmov, +@@ -3529,41 +3524,10 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, + as well. This allows the backend to emit a cmov directly without + creating an additional compare for each. If successful, costing + is easier and this sequence is usually preferred. */ +- seq2 = try_emit_cmove_seq (if_info, temp, cond, ++ seq2 = try_emit_cmove_seq (if_info, target, cond, + new_val, old_val, need_cmov, + &cost2, &temp_dest2, cc_cmp, rev_cc_cmp); + +- /* The backend might have created a sequence that uses the +- condition. Check this. */ +- rtx_insn *walk = seq2; +- while (walk) +- { +- rtx set = single_set (walk); +- +- if (!set || !SET_SRC (set)) +- { +- walk = NEXT_INSN (walk); +- continue; +- } +- +- rtx src = SET_SRC (set); +- +- if (XEXP (set, 1) && GET_CODE (XEXP (set, 1)) == IF_THEN_ELSE) +- ; /* We assume that this is the cmove created by the backend that +- naturally uses the condition. Therefore we ignore it. */ +- else +- { +- if (reg_mentioned_p (XEXP (cond, 0), src) +- || reg_mentioned_p (XEXP (cond, 1), src)) +- { +- read_comparison = true; +- break; +- } +- } +- +- walk = NEXT_INSN (walk); +- } +- + /* Check which version is less expensive. */ + if (seq1 != NULL_RTX && (cost1 <= cost2 || seq2 == NULL_RTX)) + { +@@ -3576,8 +3540,6 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, + { + seq = seq2; + temp_dest = temp_dest2; +- if (!second_try && read_comparison) +- *last_needs_comparison = count; + } + else + { +@@ -3596,12 +3558,6 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, + unmodified_insns->safe_push (insn); + } + +- /* Even if we did not actually need the comparison, we want to make sure +- to try a second time in order to get rid of the temporaries. */ +- if (*last_needs_comparison == -1) +- *last_needs_comparison = 0; +- +- + return true; + } + --- gcc/config/rs6000/rs6000.cc +++ gcc/config/rs6000/rs6000.cc @@ -16373,10 +16373,10 @@ rs6000_emit_minmax (rtx dest, enum rtx_code code, rtx op0, rtx op1) diff --git a/gcc12-pr104513.patch b/gcc12-pr104513.patch new file mode 100644 index 0000000..cc6bb08 --- /dev/null +++ b/gcc12-pr104513.patch @@ -0,0 +1,49 @@ +2022-02-12 Jakub Jelinek + + PR c++/104513 + * constexpr.cc (potential_constant_expression_1) : + Don't punt if returns (target). + + * g++.dg/cpp1y/constexpr-104513.C: New test. + * g++.dg/cpp2a/constexpr-dtor12.C: New test. + +--- gcc/cp/constexpr.cc.jj 2022-02-11 13:52:32.697425776 +0100 ++++ gcc/cp/constexpr.cc 2022-02-12 13:51:21.000274390 +0100 +@@ -9364,7 +9364,7 @@ potential_constant_expression_1 (tree t, + { + tree *target = &TREE_OPERAND (t, 0); + /* Gotos representing break and continue are OK. */ +- if (breaks (target) || continues (target)) ++ if (breaks (target) || continues (target) || returns (target)) + { + *jump_target = *target; + return true; +--- gcc/testsuite/g++.dg/cpp1y/constexpr-104513.C.jj 2022-02-12 19:05:14.374101202 +0100 ++++ gcc/testsuite/g++.dg/cpp1y/constexpr-104513.C 2022-02-12 19:06:09.745332658 +0100 +@@ -0,0 +1,10 @@ ++// PR c++/104513 ++// { dg-do compile { target c++14 } } ++ ++struct A { ++ int a1; ++ short a2, a3; ++ long a4; ++ constexpr A() : a1(42), a2(42), a3(42), a4(42) { return; } ++}; ++constexpr A a; +--- gcc/testsuite/g++.dg/cpp2a/constexpr-dtor12.C.jj 2022-02-12 19:04:41.610555957 +0100 ++++ gcc/testsuite/g++.dg/cpp2a/constexpr-dtor12.C 2022-02-12 19:04:18.473877087 +0100 +@@ -0,0 +1,13 @@ ++// PR c++/104513 ++// { dg-do compile { target c++20 } } ++ ++struct S { ++ constexpr S () : s (nullptr) {} ++ constexpr ~S () { delete s; } ++ int *s; ++}; ++struct T : S { ++ constexpr T () : S () {} ++ constexpr ~T () { s = new int (42); return; } ++}; ++constexpr T t; diff --git a/sources b/sources index 09baf06..c25ccb6 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.1-20220205.tar.xz) = fdfcf57df5df9ec765c2017a76bfad1d1f02124f5e51078232c841cdb02848db3a55c3adf6f303e7545617b3df5a0ed84d9eee89f6e9b3fd1db27297736e44be +SHA512 (gcc-12.0.1-20220212.tar.xz) = c2d95f912ad841ca93a811dda9598ab535dee0001b58de369c4220a2da2b2f648b75b6b0783382db05c7ea7df71e4f7909e28d7b0dda7c0547ca6d02050e6a5a SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 9743a6a9b014b9a1127626dfae25753feab77ae4 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 14 Feb 2022 19:38:05 +0100 Subject: [PATCH 096/293] 12.0.1-0.8 --- .gitignore | 1 + gcc.spec | 15 +++++++++----- gcc12-pr104513.patch | 49 -------------------------------------------- sources | 2 +- 4 files changed, 12 insertions(+), 55 deletions(-) delete mode 100644 gcc12-pr104513.patch diff --git a/.gitignore b/.gitignore index b81e2a3..03460fe 100644 --- a/.gitignore +++ b/.gitignore @@ -63,3 +63,4 @@ /gcc-12.0.1-20220202.tar.xz /gcc-12.0.1-20220205.tar.xz /gcc-12.0.1-20220212.tar.xz +/gcc-12.0.1-20220214.tar.xz diff --git a/gcc.spec b/gcc.spec index c4a52ba..374c15e 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20220212 -%global gitrev dfda32cd0cba98db0f084f7d4ded68140e925e41 +%global DATE 20220214 +%global gitrev 7222fb983d798306a83666324a92fce5e5881eb7 %global gcc_version 12.0.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to @@ -120,7 +120,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.7%{?dist} +Release: %{gcc_release}.8%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3167,6 +3167,13 @@ end %endif %changelog +* Mon Feb 14 2022 Jakub Jelinek 12.0.1-0.8 +- update from trunk + - PRs ada/97504, ada/98724, c/104505, fortran/104228, libstdc++/100912, + middle-end/104497, tree-optimization/104511, tree-optimization/104528 + - fix handling of return in arm constexpr ctors and on all arches return in + constexpr dtors (PR c++/104513) + * Sat Feb 12 2022 Jakub Jelinek 12.0.1-0.7 - update from trunk - PRs analyzer/98797, analyzer/101081, analyzer/102052, analyzer/103872, @@ -3189,8 +3196,6 @@ end tree-optimization/104373, tree-optimization/104420, tree-optimization/104445, tree-optimization/104466, tree-optimization/104479, tree-optimization/104499 -- fix handling of return in arm constexpr ctors and on all arches return in - constexpr dtors (PR c++/104513) * Sat Feb 5 2022 Jakub Jelinek 12.0.1-0.6 - update from trunk diff --git a/gcc12-pr104513.patch b/gcc12-pr104513.patch deleted file mode 100644 index cc6bb08..0000000 --- a/gcc12-pr104513.patch +++ /dev/null @@ -1,49 +0,0 @@ -2022-02-12 Jakub Jelinek - - PR c++/104513 - * constexpr.cc (potential_constant_expression_1) : - Don't punt if returns (target). - - * g++.dg/cpp1y/constexpr-104513.C: New test. - * g++.dg/cpp2a/constexpr-dtor12.C: New test. - ---- gcc/cp/constexpr.cc.jj 2022-02-11 13:52:32.697425776 +0100 -+++ gcc/cp/constexpr.cc 2022-02-12 13:51:21.000274390 +0100 -@@ -9364,7 +9364,7 @@ potential_constant_expression_1 (tree t, - { - tree *target = &TREE_OPERAND (t, 0); - /* Gotos representing break and continue are OK. */ -- if (breaks (target) || continues (target)) -+ if (breaks (target) || continues (target) || returns (target)) - { - *jump_target = *target; - return true; ---- gcc/testsuite/g++.dg/cpp1y/constexpr-104513.C.jj 2022-02-12 19:05:14.374101202 +0100 -+++ gcc/testsuite/g++.dg/cpp1y/constexpr-104513.C 2022-02-12 19:06:09.745332658 +0100 -@@ -0,0 +1,10 @@ -+// PR c++/104513 -+// { dg-do compile { target c++14 } } -+ -+struct A { -+ int a1; -+ short a2, a3; -+ long a4; -+ constexpr A() : a1(42), a2(42), a3(42), a4(42) { return; } -+}; -+constexpr A a; ---- gcc/testsuite/g++.dg/cpp2a/constexpr-dtor12.C.jj 2022-02-12 19:04:41.610555957 +0100 -+++ gcc/testsuite/g++.dg/cpp2a/constexpr-dtor12.C 2022-02-12 19:04:18.473877087 +0100 -@@ -0,0 +1,13 @@ -+// PR c++/104513 -+// { dg-do compile { target c++20 } } -+ -+struct S { -+ constexpr S () : s (nullptr) {} -+ constexpr ~S () { delete s; } -+ int *s; -+}; -+struct T : S { -+ constexpr T () : S () {} -+ constexpr ~T () { s = new int (42); return; } -+}; -+constexpr T t; diff --git a/sources b/sources index c25ccb6..1819cf3 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.1-20220212.tar.xz) = c2d95f912ad841ca93a811dda9598ab535dee0001b58de369c4220a2da2b2f648b75b6b0783382db05c7ea7df71e4f7909e28d7b0dda7c0547ca6d02050e6a5a +SHA512 (gcc-12.0.1-20220214.tar.xz) = a6f590b9facf2c80ec73d41ccd5bcd404722b76f7ff06d82f30b8b956349df4efa049b72285be1a76da52e851ef327b8fe42d05ea7e62149b2a4236611a8355f SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From b0dddd2d05f29e68631c9155f3eee6a9536c0cf1 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 22 Feb 2022 11:56:00 +0100 Subject: [PATCH 097/293] 12.0.1-0.9 --- .gitignore | 1 + gcc.spec | 28 +- gcc12-ifcvt-revert.patch | 1141 -------------------------------------- gcc12-pr104253.patch | 200 ------- sources | 2 +- 5 files changed, 23 insertions(+), 1349 deletions(-) delete mode 100644 gcc12-ifcvt-revert.patch delete mode 100644 gcc12-pr104253.patch diff --git a/.gitignore b/.gitignore index 03460fe..c50297c 100644 --- a/.gitignore +++ b/.gitignore @@ -64,3 +64,4 @@ /gcc-12.0.1-20220205.tar.xz /gcc-12.0.1-20220212.tar.xz /gcc-12.0.1-20220214.tar.xz +/gcc-12.0.1-20220222.tar.xz diff --git a/gcc.spec b/gcc.spec index 374c15e..45e45f7 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20220214 -%global gitrev 7222fb983d798306a83666324a92fce5e5881eb7 +%global DATE 20220222 +%global gitrev 9780ea50d2a0fb2b07bc9a0f71e28e9c1ef5e235 %global gcc_version 12.0.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to @@ -120,7 +120,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.8%{?dist} +Release: %{gcc_release}.9%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -270,8 +270,6 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch -Patch12: gcc12-ifcvt-revert.patch -Patch13: gcc12-pr104253.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -793,8 +791,6 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .ifcvt-revert~ -%patch13 -p0 -b .pr104253~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -824,6 +820,7 @@ cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi sed -i -e 's/Common Driver Var(flag_report_bug)/& Init(1)/' gcc/common.opt +sed -i -e 's/context->report_bug = false;/context->report_bug = true;/' gcc/diagnostic.cc %ifarch ppc if [ -d libstdc++-v3/config/abi/post/powerpc64-linux-gnu ]; then @@ -3167,6 +3164,23 @@ end %endif %changelog +* Tue Feb 22 2022 Jakub Jelinek 12.0.1-0.9 +- update from trunk + - PRs analyzer/104524, analyzer/104560, analyzer/104576, c++/85493, + c++/90451, c++/94944, c++/95036, c++/104107, c++/104507, c++/104539, + c++/104565, c/104506, c/104510, c/104531, c/104532, debug/104517, + debug/104557, fortran/77693, fortran/104211, libstdc++/104542, + libstdc++/104559, lto/104617, middle-end/104355, middle-end/104522, + rtl-optimization/104447, rtl-optimization/104498, + rtl-optimization/104544, sanitizer/102656, target/99708, target/99881, + target/100056, target/100874, target/103069, target/104253, + target/104257, target/104335, target/104440, target/104448, + target/104536, target/104581, target/104598, target/104612, + testsuite/104146, tree-optimization/96881, tree-optimization/103771, + tree-optimization/104519, tree-optimization/104526, + tree-optimization/104543, tree-optimization/104551, + tree-optimization/104582, tree-optimization/104604 + * Mon Feb 14 2022 Jakub Jelinek 12.0.1-0.8 - update from trunk - PRs ada/97504, ada/98724, c/104505, fortran/104228, libstdc++/100912, diff --git a/gcc12-ifcvt-revert.patch b/gcc12-ifcvt-revert.patch deleted file mode 100644 index dd13271..0000000 --- a/gcc12-ifcvt-revert.patch +++ /dev/null @@ -1,1141 +0,0 @@ -Revert r12-674{3,4,5,6,7,8,9} and r12-7114, as there are several PRs reported -against those changes still unresolved. - ---- gcc/ifcvt.cc -+++ gcc/ifcvt.cc -@@ -3391,11 +3391,7 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, - rtx cond = noce_get_condition (jump, &cond_earliest, false); - - rtx cc_cmp = cond_exec_get_condition (jump); -- if (cc_cmp) -- cc_cmp = copy_rtx (cc_cmp); - rtx rev_cc_cmp = cond_exec_get_condition (jump, /* get_reversed */ true); -- if (rev_cc_cmp) -- rev_cc_cmp = copy_rtx (rev_cc_cmp); - - rtx_insn *insn; - int count = 0; -@@ -3519,7 +3515,6 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, - unsigned cost1 = 0, cost2 = 0; - rtx_insn *seq, *seq1, *seq2; - rtx temp_dest = NULL_RTX, temp_dest1 = NULL_RTX, temp_dest2 = NULL_RTX; -- bool read_comparison = false; - - seq1 = try_emit_cmove_seq (if_info, temp, cond, - new_val, old_val, need_cmov, -@@ -3529,41 +3524,10 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, - as well. This allows the backend to emit a cmov directly without - creating an additional compare for each. If successful, costing - is easier and this sequence is usually preferred. */ -- seq2 = try_emit_cmove_seq (if_info, temp, cond, -+ seq2 = try_emit_cmove_seq (if_info, target, cond, - new_val, old_val, need_cmov, - &cost2, &temp_dest2, cc_cmp, rev_cc_cmp); - -- /* The backend might have created a sequence that uses the -- condition. Check this. */ -- rtx_insn *walk = seq2; -- while (walk) -- { -- rtx set = single_set (walk); -- -- if (!set || !SET_SRC (set)) -- { -- walk = NEXT_INSN (walk); -- continue; -- } -- -- rtx src = SET_SRC (set); -- -- if (XEXP (set, 1) && GET_CODE (XEXP (set, 1)) == IF_THEN_ELSE) -- ; /* We assume that this is the cmove created by the backend that -- naturally uses the condition. Therefore we ignore it. */ -- else -- { -- if (reg_mentioned_p (XEXP (cond, 0), src) -- || reg_mentioned_p (XEXP (cond, 1), src)) -- { -- read_comparison = true; -- break; -- } -- } -- -- walk = NEXT_INSN (walk); -- } -- - /* Check which version is less expensive. */ - if (seq1 != NULL_RTX && (cost1 <= cost2 || seq2 == NULL_RTX)) - { -@@ -3576,8 +3540,6 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, - { - seq = seq2; - temp_dest = temp_dest2; -- if (!second_try && read_comparison) -- *last_needs_comparison = count; - } - else - { -@@ -3596,12 +3558,6 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, - unmodified_insns->safe_push (insn); - } - -- /* Even if we did not actually need the comparison, we want to make sure -- to try a second time in order to get rid of the temporaries. */ -- if (*last_needs_comparison == -1) -- *last_needs_comparison = 0; -- -- - return true; - } - ---- gcc/config/rs6000/rs6000.cc -+++ gcc/config/rs6000/rs6000.cc -@@ -16373,10 +16373,10 @@ rs6000_emit_minmax (rtx dest, enum rtx_code code, rtx op0, rtx op1) - c = GEU; - - if (code == SMAX || code == UMAX) -- target = emit_conditional_move (dest, { c, op0, op1, mode }, -+ target = emit_conditional_move (dest, c, op0, op1, mode, - op0, op1, mode, 0); - else -- target = emit_conditional_move (dest, { c, op0, op1, mode }, -+ target = emit_conditional_move (dest, c, op0, op1, mode, - op1, op0, mode, 0); - gcc_assert (target); - if (target != dest) -@@ -22769,7 +22769,7 @@ rs6000_emit_swsqrt (rtx dst, rtx src, bool recip) - - if (mode == SFmode) - { -- rtx target = emit_conditional_move (e, { GT, src, zero, mode }, -+ rtx target = emit_conditional_move (e, GT, src, zero, mode, - e, zero, mode, 0); - if (target != e) - emit_move_insn (e, target); ---- gcc/expmed.cc -+++ gcc/expmed.cc -@@ -4124,8 +4124,8 @@ expand_sdiv_pow2 (scalar_int_mode mode, rtx op0, HOST_WIDE_INT d) - temp = force_reg (mode, temp); - - /* Construct "temp2 = (temp2 < 0) ? temp : temp2". */ -- temp2 = emit_conditional_move (temp2, { LT, temp2, const0_rtx, mode }, -- temp, temp2, mode, 0); -+ temp2 = emit_conditional_move (temp2, LT, temp2, const0_rtx, -+ mode, temp, temp2, mode, 0); - if (temp2) - { - rtx_insn *seq = get_insns (); -@@ -6127,10 +6127,10 @@ emit_store_flag (rtx target, enum rtx_code code, rtx op0, rtx op1, - return 0; - - if (and_them) -- tem = emit_conditional_move (target, { code, op0, op1, mode }, -+ tem = emit_conditional_move (target, code, op0, op1, mode, - tem, const0_rtx, GET_MODE (tem), 0); - else -- tem = emit_conditional_move (target, { code, op0, op1, mode }, -+ tem = emit_conditional_move (target, code, op0, op1, mode, - trueval, tem, GET_MODE (tem), 0); - - if (tem == 0) ---- gcc/expr.cc -+++ gcc/expr.cc -@@ -8824,9 +8824,8 @@ expand_cond_expr_using_cmove (tree treeop0 ATTRIBUTE_UNUSED, - op2 = gen_lowpart (mode, op2); - - /* Try to emit the conditional move. */ -- insn = emit_conditional_move (temp, -- { comparison_code, op00, op01, -- comparison_mode }, -+ insn = emit_conditional_move (temp, comparison_code, -+ op00, op01, comparison_mode, - op1, op2, mode, - unsignedp); - -@@ -9717,9 +9716,8 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode, - start_sequence (); - - /* Try to emit the conditional move. */ -- insn = emit_conditional_move (target, -- { comparison_code, -- op0, cmpop1, mode }, -+ insn = emit_conditional_move (target, comparison_code, -+ op0, cmpop1, mode, - op0, op1, mode, - unsignedp); - ---- gcc/ifcvt.cc -+++ gcc/ifcvt.cc -@@ -83,7 +83,7 @@ static rtx_insn *last_active_insn (basic_block, int); - static rtx_insn *find_active_insn_before (basic_block, rtx_insn *); - static rtx_insn *find_active_insn_after (basic_block, rtx_insn *); - static basic_block block_fallthru (basic_block); --static rtx cond_exec_get_condition (rtx_insn *, bool); -+static rtx cond_exec_get_condition (rtx_insn *); - static rtx noce_get_condition (rtx_insn *, rtx_insn **, bool); - static int noce_operand_ok (const_rtx); - static void merge_if_block (ce_if_block *); -@@ -98,14 +98,6 @@ static int dead_or_predicable (basic_block, basic_block, basic_block, - edge, int); - static void noce_emit_move_insn (rtx, rtx); - static rtx_insn *block_has_only_trap (basic_block); --static void need_cmov_or_rewire (basic_block, hash_set *, -- hash_map *); --static bool noce_convert_multiple_sets_1 (struct noce_if_info *, -- hash_set *, -- hash_map *, -- auto_vec *, -- auto_vec *, -- auto_vec *, int *); - - /* Count the number of non-jump active insns in BB. */ - -@@ -433,7 +425,7 @@ cond_exec_process_insns (ce_if_block *ce_info ATTRIBUTE_UNUSED, - /* Return the condition for a jump. Do not do any special processing. */ - - static rtx --cond_exec_get_condition (rtx_insn *jump, bool get_reversed = false) -+cond_exec_get_condition (rtx_insn *jump) - { - rtx test_if, cond; - -@@ -445,10 +437,8 @@ cond_exec_get_condition (rtx_insn *jump, bool get_reversed = false) - - /* If this branches to JUMP_LABEL when the condition is false, - reverse the condition. */ -- if (get_reversed -- || (GET_CODE (XEXP (test_if, 2)) == LABEL_REF -- && label_ref_label (XEXP (test_if, 2)) -- == JUMP_LABEL (jump))) -+ if (GET_CODE (XEXP (test_if, 2)) == LABEL_REF -+ && label_ref_label (XEXP (test_if, 2)) == JUMP_LABEL (jump)) - { - enum rtx_code rev = reversed_comparison_code (cond, jump); - if (rev == UNKNOWN) -@@ -780,7 +770,7 @@ static int noce_try_addcc (struct noce_if_info *); - static int noce_try_store_flag_constants (struct noce_if_info *); - static int noce_try_store_flag_mask (struct noce_if_info *); - static rtx noce_emit_cmove (struct noce_if_info *, rtx, enum rtx_code, rtx, -- rtx, rtx, rtx, rtx = NULL, rtx = NULL); -+ rtx, rtx, rtx); - static int noce_try_cmove (struct noce_if_info *); - static int noce_try_cmove_arith (struct noce_if_info *); - static rtx noce_get_alt_condition (struct noce_if_info *, rtx, rtx_insn **); -@@ -1719,8 +1709,7 @@ noce_try_store_flag_mask (struct noce_if_info *if_info) - - static rtx - noce_emit_cmove (struct noce_if_info *if_info, rtx x, enum rtx_code code, -- rtx cmp_a, rtx cmp_b, rtx vfalse, rtx vtrue, rtx cc_cmp, -- rtx rev_cc_cmp) -+ rtx cmp_a, rtx cmp_b, rtx vfalse, rtx vtrue) - { - rtx target ATTRIBUTE_UNUSED; - int unsignedp ATTRIBUTE_UNUSED; -@@ -1752,30 +1741,23 @@ noce_emit_cmove (struct noce_if_info *if_info, rtx x, enum rtx_code code, - end_sequence (); - } - -- unsignedp = (code == LTU || code == GEU -- || code == LEU || code == GTU); -- -- if (cc_cmp != NULL_RTX && rev_cc_cmp != NULL_RTX) -- target = emit_conditional_move (x, cc_cmp, rev_cc_cmp, -- vtrue, vfalse, GET_MODE (x)); -- else -+ /* Don't even try if the comparison operands are weird -+ except that the target supports cbranchcc4. */ -+ if (! general_operand (cmp_a, GET_MODE (cmp_a)) -+ || ! general_operand (cmp_b, GET_MODE (cmp_b))) - { -- /* Don't even try if the comparison operands are weird -- except that the target supports cbranchcc4. */ -- if (! general_operand (cmp_a, GET_MODE (cmp_a)) -- || ! general_operand (cmp_b, GET_MODE (cmp_b))) -- { -- if (!have_cbranchcc4 -- || GET_MODE_CLASS (GET_MODE (cmp_a)) != MODE_CC -- || cmp_b != const0_rtx) -- return NULL_RTX; -- } -- -- target = emit_conditional_move (x, { code, cmp_a, cmp_b, VOIDmode }, -- vtrue, vfalse, GET_MODE (x), -- unsignedp); -+ if (!have_cbranchcc4 -+ || GET_MODE_CLASS (GET_MODE (cmp_a)) != MODE_CC -+ || cmp_b != const0_rtx) -+ return NULL_RTX; - } - -+ unsignedp = (code == LTU || code == GEU -+ || code == LEU || code == GTU); -+ -+ target = emit_conditional_move (x, code, cmp_a, cmp_b, VOIDmode, -+ vtrue, vfalse, GET_MODE (x), -+ unsignedp); - if (target) - return target; - -@@ -1811,9 +1793,8 @@ noce_emit_cmove (struct noce_if_info *if_info, rtx x, enum rtx_code code, - - promoted_target = gen_reg_rtx (GET_MODE (reg_vtrue)); - -- target = emit_conditional_move (promoted_target, -- { code, cmp_a, cmp_b, VOIDmode }, -- reg_vtrue, reg_vfalse, -+ target = emit_conditional_move (promoted_target, code, cmp_a, cmp_b, -+ VOIDmode, reg_vtrue, reg_vfalse, - GET_MODE (reg_vtrue), unsignedp); - /* Nope, couldn't do it in that mode either. */ - if (!target) -@@ -3160,50 +3141,6 @@ bb_valid_for_noce_process_p (basic_block test_bb, rtx cond, - return false; - } - --/* Helper function to emit a cmov sequence encapsulated in -- start_sequence () and end_sequence (). If NEED_CMOV is true -- we call noce_emit_cmove to create a cmove sequence. Otherwise emit -- a simple move. If successful, store the first instruction of the -- sequence in TEMP_DEST and the sequence costs in SEQ_COST. */ -- --static rtx_insn* --try_emit_cmove_seq (struct noce_if_info *if_info, rtx temp, -- rtx cond, rtx new_val, rtx old_val, bool need_cmov, -- unsigned *cost, rtx *temp_dest, -- rtx cc_cmp = NULL, rtx rev_cc_cmp = NULL) --{ -- rtx_insn *seq = NULL; -- *cost = 0; -- -- rtx x = XEXP (cond, 0); -- rtx y = XEXP (cond, 1); -- rtx_code cond_code = GET_CODE (cond); -- -- start_sequence (); -- -- if (need_cmov) -- *temp_dest = noce_emit_cmove (if_info, temp, cond_code, -- x, y, new_val, old_val, cc_cmp, rev_cc_cmp); -- else -- { -- *temp_dest = temp; -- if (if_info->then_else_reversed) -- noce_emit_move_insn (temp, old_val); -- else -- noce_emit_move_insn (temp, new_val); -- } -- -- if (*temp_dest != NULL_RTX) -- { -- seq = get_insns (); -- *cost = seq_cost (seq, if_info->speed_p); -- } -- -- end_sequence (); -- -- return seq; --} -- - /* We have something like: - - if (x > y) -@@ -3261,6 +3198,7 @@ noce_convert_multiple_sets (struct noce_if_info *if_info) - rtx cond = noce_get_condition (jump, &cond_earliest, false); - rtx x = XEXP (cond, 0); - rtx y = XEXP (cond, 1); -+ rtx_code cond_code = GET_CODE (cond); - - /* The true targets for a conditional move. */ - auto_vec targets; -@@ -3269,139 +3207,8 @@ noce_convert_multiple_sets (struct noce_if_info *if_info) - auto_vec temporaries; - /* The insns we've emitted. */ - auto_vec unmodified_insns; -- -- hash_set need_no_cmov; -- hash_map rewired_src; -- -- need_cmov_or_rewire (then_bb, &need_no_cmov, &rewired_src); -- -- int last_needs_comparison = -1; -- -- bool ok = noce_convert_multiple_sets_1 -- (if_info, &need_no_cmov, &rewired_src, &targets, &temporaries, -- &unmodified_insns, &last_needs_comparison); -- if (!ok) -- return false; -- -- /* If there are insns that overwrite part of the initial -- comparison, we can still omit creating temporaries for -- the last of them. -- As the second try will always create a less expensive, -- valid sequence, we do not need to compare and can discard -- the first one. */ -- if (last_needs_comparison != -1) -- { -- end_sequence (); -- start_sequence (); -- ok = noce_convert_multiple_sets_1 -- (if_info, &need_no_cmov, &rewired_src, &targets, &temporaries, -- &unmodified_insns, &last_needs_comparison); -- /* Actually we should not fail anymore if we reached here, -- but better still check. */ -- if (!ok) -- return false; -- } -- -- /* We must have seen some sort of insn to insert, otherwise we were -- given an empty BB to convert, and we can't handle that. */ -- gcc_assert (!unmodified_insns.is_empty ()); -- -- /* Now fixup the assignments. */ -- for (unsigned i = 0; i < targets.length (); i++) -- if (targets[i] != temporaries[i]) -- noce_emit_move_insn (targets[i], temporaries[i]); -- -- /* Actually emit the sequence if it isn't too expensive. */ -- rtx_insn *seq = get_insns (); -- -- if (!targetm.noce_conversion_profitable_p (seq, if_info)) -- { -- end_sequence (); -- return FALSE; -- } -- -- for (insn = seq; insn; insn = NEXT_INSN (insn)) -- set_used_flags (insn); -- -- /* Mark all our temporaries and targets as used. */ -- for (unsigned i = 0; i < targets.length (); i++) -- { -- set_used_flags (temporaries[i]); -- set_used_flags (targets[i]); -- } -- -- set_used_flags (cond); -- set_used_flags (x); -- set_used_flags (y); -- -- unshare_all_rtl_in_chain (seq); -- end_sequence (); -- -- if (!seq) -- return FALSE; -- -- for (insn = seq; insn; insn = NEXT_INSN (insn)) -- if (JUMP_P (insn) -- || recog_memoized (insn) == -1) -- return FALSE; -- -- emit_insn_before_setloc (seq, if_info->jump, -- INSN_LOCATION (unmodified_insns.last ())); -- -- /* Clean up THEN_BB and the edges in and out of it. */ -- remove_edge (find_edge (test_bb, join_bb)); -- remove_edge (find_edge (then_bb, join_bb)); -- redirect_edge_and_branch_force (single_succ_edge (test_bb), join_bb); -- delete_basic_block (then_bb); -- num_true_changes++; -- -- /* Maybe merge blocks now the jump is simple enough. */ -- if (can_merge_blocks_p (test_bb, join_bb)) -- { -- merge_blocks (test_bb, join_bb); -- num_true_changes++; -- } -- -- num_updated_if_blocks++; -- if_info->transform_name = "noce_convert_multiple_sets"; -- return TRUE; --} -- --/* This goes through all relevant insns of IF_INFO->then_bb and tries to -- create conditional moves. In case a simple move sufficis the insn -- should be listed in NEED_NO_CMOV. The rewired-src cases should be -- specified via REWIRED_SRC. TARGETS, TEMPORARIES and UNMODIFIED_INSNS -- are specified and used in noce_convert_multiple_sets and should be passed -- to this function.. */ -- --static bool --noce_convert_multiple_sets_1 (struct noce_if_info *if_info, -- hash_set *need_no_cmov, -- hash_map *rewired_src, -- auto_vec *targets, -- auto_vec *temporaries, -- auto_vec *unmodified_insns, -- int *last_needs_comparison) --{ -- basic_block then_bb = if_info->then_bb; -- rtx_insn *jump = if_info->jump; -- rtx_insn *cond_earliest; -- -- /* Decompose the condition attached to the jump. */ -- rtx cond = noce_get_condition (jump, &cond_earliest, false); -- -- rtx cc_cmp = cond_exec_get_condition (jump); -- rtx rev_cc_cmp = cond_exec_get_condition (jump, /* get_reversed */ true); -- -- rtx_insn *insn; - int count = 0; - -- targets->truncate (0); -- temporaries->truncate (0); -- unmodified_insns->truncate (0); -- -- bool second_try = *last_needs_comparison != -1; -- - FOR_BB_INSNS (then_bb, insn) - { - /* Skip over non-insns. */ -@@ -3412,53 +3219,26 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, - gcc_checking_assert (set); - - rtx target = SET_DEST (set); -- rtx temp; -- -+ rtx temp = gen_reg_rtx (GET_MODE (target)); - rtx new_val = SET_SRC (set); -- if (int *ii = rewired_src->get (insn)) -- new_val = simplify_replace_rtx (new_val, (*targets)[*ii], -- (*temporaries)[*ii]); - rtx old_val = target; - -- /* As we are transforming -- if (x > y) -- { -- a = b; -- c = d; -- } -- into -- a = (x > y) ... -- c = (x > y) ... -- -- we potentially check x > y before every set. -- Even though the check might be removed by subsequent passes, this means -- that we cannot transform -- if (x > y) -- { -- x = y; -- ... -- } -- into -- x = (x > y) ... -- ... -- since this would invalidate x and the following to-be-removed checks. -- Therefore we introduce a temporary every time we are about to -- overwrite a variable used in the check. Costing of a sequence with -- these is going to be inaccurate so only use temporaries when -- needed. -- -- If performing a second try, we know how many insns require a -- temporary. For the last of these, we can omit creating one. */ -- if (reg_overlap_mentioned_p (target, cond) -- && (!second_try || count < *last_needs_comparison)) -- temp = gen_reg_rtx (GET_MODE (target)); -- else -- temp = target; -- -- /* We have identified swap-style idioms before. A normal -- set will need to be a cmov while the first instruction of a swap-style -- idiom can be a regular move. This helps with costing. */ -- bool need_cmov = !need_no_cmov->contains (insn); -+ /* If we were supposed to read from an earlier write in this block, -+ we've changed the register allocation. Rewire the read. While -+ we are looking, also try to catch a swap idiom. */ -+ for (int i = count - 1; i >= 0; --i) -+ if (reg_overlap_mentioned_p (new_val, targets[i])) -+ { -+ /* Catch a "swap" style idiom. */ -+ if (find_reg_note (insn, REG_DEAD, new_val) != NULL_RTX) -+ /* The write to targets[i] is only live until the read -+ here. As the condition codes match, we can propagate -+ the set to here. */ -+ new_val = SET_SRC (single_set (unmodified_insns[i])); -+ else -+ new_val = temporaries[i]; -+ break; -+ } - - /* If we had a non-canonical conditional jump (i.e. one where - the fallthrough is to the "else" case) we need to reverse -@@ -3478,9 +3258,7 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, - we'll end up trying to emit r4:HI = cond ? (r1:SI) : (r3:HI). - Wrap the two cmove operands into subregs if appropriate to prevent - that. */ -- -- if (!CONSTANT_P (new_val) -- && GET_MODE (new_val) != GET_MODE (temp)) -+ if (GET_MODE (new_val) != GET_MODE (temp)) - { - machine_mode src_mode = GET_MODE (new_val); - machine_mode dst_mode = GET_MODE (temp); -@@ -3491,8 +3269,7 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, - } - new_val = lowpart_subreg (dst_mode, new_val, src_mode); - } -- if (!CONSTANT_P (old_val) -- && GET_MODE (old_val) != GET_MODE (temp)) -+ if (GET_MODE (old_val) != GET_MODE (temp)) - { - machine_mode src_mode = GET_MODE (old_val); - machine_mode dst_mode = GET_MODE (temp); -@@ -3504,80 +3281,101 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, - old_val = lowpart_subreg (dst_mode, old_val, src_mode); - } - -- /* Try emitting a conditional move passing the backend the -- canonicalized comparison. The backend is then able to -- recognize expressions like -- -- if (x > y) -- y = x; -- -- as min/max and emit an insn, accordingly. */ -- unsigned cost1 = 0, cost2 = 0; -- rtx_insn *seq, *seq1, *seq2; -- rtx temp_dest = NULL_RTX, temp_dest1 = NULL_RTX, temp_dest2 = NULL_RTX; -+ /* Actually emit the conditional move. */ -+ rtx temp_dest = noce_emit_cmove (if_info, temp, cond_code, -+ x, y, new_val, old_val); - -- seq1 = try_emit_cmove_seq (if_info, temp, cond, -- new_val, old_val, need_cmov, -- &cost1, &temp_dest1); -- -- /* Here, we try to pass the backend a non-canonicalized cc comparison -- as well. This allows the backend to emit a cmov directly without -- creating an additional compare for each. If successful, costing -- is easier and this sequence is usually preferred. */ -- seq2 = try_emit_cmove_seq (if_info, target, cond, -- new_val, old_val, need_cmov, -- &cost2, &temp_dest2, cc_cmp, rev_cc_cmp); -- -- /* Check which version is less expensive. */ -- if (seq1 != NULL_RTX && (cost1 <= cost2 || seq2 == NULL_RTX)) -- { -- seq = seq1; -- temp_dest = temp_dest1; -- if (!second_try) -- *last_needs_comparison = count; -- } -- else if (seq2 != NULL_RTX) -- { -- seq = seq2; -- temp_dest = temp_dest2; -- } -- else -+ /* If we failed to expand the conditional move, drop out and don't -+ try to continue. */ -+ if (temp_dest == NULL_RTX) - { -- /* Nothing worked, bail out. */ - end_sequence (); - return FALSE; - } - -- /* End the sub sequence and emit to the main sequence. */ -- emit_insn (seq); -- - /* Bookkeeping. */ - count++; -- targets->safe_push (target); -- temporaries->safe_push (temp_dest); -- unmodified_insns->safe_push (insn); -+ targets.safe_push (target); -+ temporaries.safe_push (temp_dest); -+ unmodified_insns.safe_push (insn); - } - -- return true; --} -+ /* We must have seen some sort of insn to insert, otherwise we were -+ given an empty BB to convert, and we can't handle that. */ -+ gcc_assert (!unmodified_insns.is_empty ()); -+ -+ /* Now fixup the assignments. */ -+ for (int i = 0; i < count; i++) -+ noce_emit_move_insn (targets[i], temporaries[i]); -+ -+ /* Actually emit the sequence if it isn't too expensive. */ -+ rtx_insn *seq = get_insns (); -+ -+ if (!targetm.noce_conversion_profitable_p (seq, if_info)) -+ { -+ end_sequence (); -+ return FALSE; -+ } -+ -+ for (insn = seq; insn; insn = NEXT_INSN (insn)) -+ set_used_flags (insn); -+ -+ /* Mark all our temporaries and targets as used. */ -+ for (int i = 0; i < count; i++) -+ { -+ set_used_flags (temporaries[i]); -+ set_used_flags (targets[i]); -+ } - -+ set_used_flags (cond); -+ set_used_flags (x); -+ set_used_flags (y); - -+ unshare_all_rtl_in_chain (seq); -+ end_sequence (); -+ -+ if (!seq) -+ return FALSE; -+ -+ for (insn = seq; insn; insn = NEXT_INSN (insn)) -+ if (JUMP_P (insn) -+ || recog_memoized (insn) == -1) -+ return FALSE; -+ -+ emit_insn_before_setloc (seq, if_info->jump, -+ INSN_LOCATION (unmodified_insns.last ())); -+ -+ /* Clean up THEN_BB and the edges in and out of it. */ -+ remove_edge (find_edge (test_bb, join_bb)); -+ remove_edge (find_edge (then_bb, join_bb)); -+ redirect_edge_and_branch_force (single_succ_edge (test_bb), join_bb); -+ delete_basic_block (then_bb); -+ num_true_changes++; -+ -+ /* Maybe merge blocks now the jump is simple enough. */ -+ if (can_merge_blocks_p (test_bb, join_bb)) -+ { -+ merge_blocks (test_bb, join_bb); -+ num_true_changes++; -+ } -+ -+ num_updated_if_blocks++; -+ if_info->transform_name = "noce_convert_multiple_sets"; -+ return TRUE; -+} - - /* Return true iff basic block TEST_BB is comprised of only - (SET (REG) (REG)) insns suitable for conversion to a series - of conditional moves. Also check that we have more than one set - (other routines can handle a single set better than we would), and -- fewer than PARAM_MAX_RTL_IF_CONVERSION_INSNS sets. While going -- through the insns store the sum of their potential costs in COST. */ -+ fewer than PARAM_MAX_RTL_IF_CONVERSION_INSNS sets. */ - - static bool --bb_ok_for_noce_convert_multiple_sets (basic_block test_bb, unsigned *cost) -+bb_ok_for_noce_convert_multiple_sets (basic_block test_bb) - { - rtx_insn *insn; - unsigned count = 0; - unsigned param = param_max_rtl_if_conversion_insns; -- bool speed_p = optimize_bb_for_speed_p (test_bb); -- unsigned potential_cost = 0; - - FOR_BB_INSNS (test_bb, insn) - { -@@ -3600,9 +3398,9 @@ bb_ok_for_noce_convert_multiple_sets (basic_block test_bb, unsigned *cost) - if (!REG_P (dest)) - return false; - -- if (!((REG_P (src) || CONSTANT_P (src)) -- || (GET_CODE (src) == SUBREG && REG_P (SUBREG_REG (src)) -- && subreg_lowpart_p (src)))) -+ if (!(REG_P (src) -+ || (GET_CODE (src) == SUBREG && REG_P (SUBREG_REG (src)) -+ && subreg_lowpart_p (src)))) - return false; - - /* Destination must be appropriate for a conditional write. */ -@@ -3613,13 +3411,9 @@ bb_ok_for_noce_convert_multiple_sets (basic_block test_bb, unsigned *cost) - if (!can_conditionally_move_p (GET_MODE (dest))) - return false; - -- potential_cost += insn_cost (insn, speed_p); -- - count++; - } - -- *cost += potential_cost; -- - /* If we would only put out one conditional move, the other strategies - this pass tries are better optimized and will be more appropriate. - Some targets want to strictly limit the number of conditional moves -@@ -3667,24 +3461,11 @@ noce_process_if_block (struct noce_if_info *if_info) - to calculate a value for x. - ??? For future expansion, further expand the "multiple X" rules. */ - -- /* First look for multiple SETS. The original costs already include -- a base cost of COSTS_N_INSNS (2): one instruction for the compare -- (which we will be needing either way) and one instruction for the -- branch. When comparing costs we want to use the branch instruction -- cost and the sets vs. the cmovs generated here. Therefore subtract -- the costs of the compare before checking. -- ??? Actually, instead of the branch instruction costs we might want -- to use COSTS_N_INSNS (BRANCH_COST ()) as in other places. */ -- -- unsigned potential_cost = if_info->original_cost - COSTS_N_INSNS (1); -- unsigned old_cost = if_info->original_cost; -+ /* First look for multiple SETS. */ - if (!else_bb - && HAVE_conditional_move -- && bb_ok_for_noce_convert_multiple_sets (then_bb, &potential_cost)) -+ && bb_ok_for_noce_convert_multiple_sets (then_bb)) - { -- /* Temporarily set the original costs to what we estimated so -- we can determine if the transformation is worth it. */ -- if_info->original_cost = potential_cost; - if (noce_convert_multiple_sets (if_info)) - { - if (dump_file && if_info->transform_name) -@@ -3692,9 +3473,6 @@ noce_process_if_block (struct noce_if_info *if_info) - if_info->transform_name); - return TRUE; - } -- -- /* Restore the original costs. */ -- if_info->original_cost = old_cost; - } - - bool speed_p = optimize_bb_for_speed_p (test_bb); -@@ -4036,89 +3814,6 @@ check_cond_move_block (basic_block bb, - return TRUE; - } - --/* Find local swap-style idioms in BB and mark the first insn (1) -- that is only a temporary as not needing a conditional move as -- it is going to be dead afterwards anyway. -- -- (1) int tmp = a; -- a = b; -- b = tmp; -- -- ifcvt -- --> -- -- tmp = a; -- a = cond ? b : a_old; -- b = cond ? tmp : b_old; -- -- Additionally, store the index of insns like (2) when a subsequent -- SET reads from their destination. -- -- (2) int c = a; -- int d = c; -- -- ifcvt -- --> -- -- c = cond ? a : c_old; -- d = cond ? d : c; // Need to use c rather than c_old here. --*/ -- --static void --need_cmov_or_rewire (basic_block bb, -- hash_set *need_no_cmov, -- hash_map *rewired_src) --{ -- rtx_insn *insn; -- int count = 0; -- auto_vec insns; -- auto_vec dests; -- -- /* Iterate over all SETs, storing the destinations -- in DEST. -- - If we hit a SET that reads from a destination -- that we have seen before and the corresponding register -- is dead afterwards, the register does not need to be -- moved conditionally. -- - If we encounter a previously changed register, -- rewire the read to the original source. */ -- FOR_BB_INSNS (bb, insn) -- { -- rtx set, src, dest; -- -- if (!active_insn_p (insn)) -- continue; -- -- set = single_set (insn); -- if (set == NULL_RTX) -- continue; -- -- src = SET_SRC (set); -- if (SUBREG_P (src)) -- src = SUBREG_REG (src); -- dest = SET_DEST (set); -- -- /* Check if the current SET's source is the same -- as any previously seen destination. -- This is quadratic but the number of insns in BB -- is bounded by PARAM_MAX_RTL_IF_CONVERSION_INSNS. */ -- if (REG_P (src)) -- for (int i = count - 1; i >= 0; --i) -- if (reg_overlap_mentioned_p (src, dests[i])) -- { -- if (find_reg_note (insn, REG_DEAD, src) != NULL_RTX) -- need_no_cmov->add (insns[i]); -- else -- rewired_src->put (insn, i); -- } -- -- insns.safe_push (insn); -- dests.safe_push (dest); -- -- count++; -- } --} -- - /* Given a basic block BB suitable for conditional move conversion, - a condition COND, and pointer maps THEN_VALS and ELSE_VALS containing - the register values depending on COND, emit the insns in the block as ---- gcc/optabs.cc -+++ gcc/optabs.cc -@@ -52,8 +52,6 @@ static void prepare_float_lib_cmp (rtx, rtx, enum rtx_code, rtx *, - static rtx expand_unop_direct (machine_mode, optab, rtx, rtx, int); - static void emit_libcall_block_1 (rtx_insn *, rtx, rtx, rtx, bool); - --static rtx emit_conditional_move_1 (rtx, rtx, rtx, rtx, machine_mode); -- - /* Debug facility for use in GDB. */ - void debug_optab_libfuncs (void); - -@@ -626,13 +624,12 @@ expand_doubleword_shift_condmove (scalar_int_mode op1_mode, optab binoptab, - - /* Select between them. Do the INTO half first because INTO_SUPERWORD - might be the current value of OUTOF_TARGET. */ -- if (!emit_conditional_move (into_target, { cmp_code, cmp1, cmp2, op1_mode }, -+ if (!emit_conditional_move (into_target, cmp_code, cmp1, cmp2, op1_mode, - into_target, into_superword, word_mode, false)) - return false; - - if (outof_target != 0) -- if (!emit_conditional_move (outof_target, -- { cmp_code, cmp1, cmp2, op1_mode }, -+ if (!emit_conditional_move (outof_target, cmp_code, cmp1, cmp2, op1_mode, - outof_target, outof_superword, - word_mode, false)) - return false; -@@ -4854,8 +4851,8 @@ emit_indirect_jump (rtx loc) - is not supported. */ - - rtx --emit_conditional_move (rtx target, struct rtx_comparison comp, -- rtx op2, rtx op3, -+emit_conditional_move (rtx target, enum rtx_code code, rtx op0, rtx op1, -+ machine_mode cmode, rtx op2, rtx op3, - machine_mode mode, int unsignedp) - { - rtx comparison; -@@ -4877,33 +4874,31 @@ emit_conditional_move (rtx target, struct rtx_comparison comp, - /* If one operand is constant, make it the second one. Only do this - if the other operand is not constant as well. */ - -- if (swap_commutative_operands_p (comp.op0, comp.op1)) -+ if (swap_commutative_operands_p (op0, op1)) - { -- std::swap (comp.op0, comp.op1); -- comp.code = swap_condition (comp.code); -+ std::swap (op0, op1); -+ code = swap_condition (code); - } - - /* get_condition will prefer to generate LT and GT even if the old - comparison was against zero, so undo that canonicalization here since - comparisons against zero are cheaper. */ -+ if (code == LT && op1 == const1_rtx) -+ code = LE, op1 = const0_rtx; -+ else if (code == GT && op1 == constm1_rtx) -+ code = GE, op1 = const0_rtx; - -- if (comp.code == LT && comp.op1 == const1_rtx) -- comp.code = LE, comp.op1 = const0_rtx; -- else if (comp.code == GT && comp.op1 == constm1_rtx) -- comp.code = GE, comp.op1 = const0_rtx; -- -- if (comp.mode == VOIDmode) -- comp.mode = GET_MODE (comp.op0); -+ if (cmode == VOIDmode) -+ cmode = GET_MODE (op0); - -- enum rtx_code orig_code = comp.code; -+ enum rtx_code orig_code = code; - bool swapped = false; - if (swap_commutative_operands_p (op2, op3) -- && ((reversed = -- reversed_comparison_code_parts (comp.code, comp.op0, comp.op1, NULL)) -- != UNKNOWN)) -+ && ((reversed = reversed_comparison_code_parts (code, op0, op1, NULL)) -+ != UNKNOWN)) - { - std::swap (op2, op3); -- comp.code = reversed; -+ code = reversed; - swapped = true; - } - -@@ -4920,10 +4915,8 @@ emit_conditional_move (rtx target, struct rtx_comparison comp, - - for (int pass = 0; ; pass++) - { -- comp.code = unsignedp ? unsigned_condition (comp.code) : comp.code; -- comparison = -- simplify_gen_relational (comp.code, VOIDmode, -- comp.mode, comp.op0, comp.op1); -+ code = unsignedp ? unsigned_condition (code) : code; -+ comparison = simplify_gen_relational (code, VOIDmode, cmode, op0, op1); - - /* We can get const0_rtx or const_true_rtx in some circumstances. Just - punt and let the caller figure out how best to deal with this -@@ -4934,16 +4927,24 @@ emit_conditional_move (rtx target, struct rtx_comparison comp, - save_pending_stack_adjust (&save); - last = get_last_insn (); - do_pending_stack_adjust (); -- machine_mode cmpmode = comp.mode; -+ machine_mode cmpmode = cmode; - prepare_cmp_insn (XEXP (comparison, 0), XEXP (comparison, 1), - GET_CODE (comparison), NULL_RTX, unsignedp, - OPTAB_WIDEN, &comparison, &cmpmode); - if (comparison) - { -- rtx res = emit_conditional_move_1 (target, comparison, -- op2, op3, mode); -- if (res != NULL_RTX) -- return res; -+ class expand_operand ops[4]; -+ -+ create_output_operand (&ops[0], target, mode); -+ create_fixed_operand (&ops[1], comparison); -+ create_input_operand (&ops[2], op2, mode); -+ create_input_operand (&ops[3], op3, mode); -+ if (maybe_expand_insn (icode, 4, ops)) -+ { -+ if (ops[0].value != target) -+ convert_move (target, ops[0].value, false); -+ return target; -+ } - } - delete_insns_since (last); - restore_pending_stack_adjust (&save); -@@ -4955,88 +4956,17 @@ emit_conditional_move (rtx target, struct rtx_comparison comp, - /* If the preferred op2/op3 order is not usable, retry with other - operand order, perhaps it will expand successfully. */ - if (swapped) -- comp.code = orig_code; -- else if ((reversed = -- reversed_comparison_code_parts (orig_code, comp.op0, comp.op1, -+ code = orig_code; -+ else if ((reversed = reversed_comparison_code_parts (orig_code, op0, op1, - NULL)) - != UNKNOWN) -- comp.code = reversed; -+ code = reversed; - else - return NULL_RTX; - std::swap (op2, op3); - } - } - --/* Helper function that, in addition to COMPARISON, also tries -- the reversed REV_COMPARISON with swapped OP2 and OP3. As opposed -- to when we pass the specific constituents of a comparison, no -- additional insns are emitted for it. It might still be necessary -- to emit more than one insn for the final conditional move, though. */ -- --rtx --emit_conditional_move (rtx target, rtx comparison, rtx rev_comparison, -- rtx op2, rtx op3, machine_mode mode) --{ -- rtx res = emit_conditional_move_1 (target, comparison, op2, op3, mode); -- -- if (res != NULL_RTX) -- return res; -- -- return emit_conditional_move_1 (target, rev_comparison, op3, op2, mode); --} -- --/* Helper for emitting a conditional move. */ -- --static rtx --emit_conditional_move_1 (rtx target, rtx comparison, -- rtx op2, rtx op3, machine_mode mode) --{ -- enum insn_code icode; -- -- if (comparison == NULL_RTX || !COMPARISON_P (comparison)) -- return NULL_RTX; -- -- /* If the two source operands are identical, that's just a move. -- As the comparison comes in non-canonicalized, we must make -- sure not to discard any possible side effects. If there are -- side effects, just let the target handle it. */ -- if (!side_effects_p (comparison) && rtx_equal_p (op2, op3)) -- { -- if (!target) -- target = gen_reg_rtx (mode); -- -- emit_move_insn (target, op3); -- return target; -- } -- -- if (mode == VOIDmode) -- mode = GET_MODE (op2); -- -- icode = direct_optab_handler (movcc_optab, mode); -- -- if (icode == CODE_FOR_nothing) -- return NULL_RTX; -- -- if (!target) -- target = gen_reg_rtx (mode); -- -- class expand_operand ops[4]; -- -- create_output_operand (&ops[0], target, mode); -- create_fixed_operand (&ops[1], comparison); -- create_input_operand (&ops[2], op2, mode); -- create_input_operand (&ops[3], op3, mode); -- -- if (maybe_expand_insn (icode, 4, ops)) -- { -- if (ops[0].value != target) -- convert_move (target, ops[0].value, false); -- return target; -- } -- -- return NULL_RTX; --} -- - - /* Emit a conditional negate or bitwise complement using the - negcc or notcc optabs if available. Return NULL_RTX if such operations ---- gcc/optabs.h -+++ gcc/optabs.h -@@ -279,8 +279,8 @@ extern void emit_indirect_jump (rtx); - #endif - - /* Emit a conditional move operation. */ --rtx emit_conditional_move (rtx, rtx_comparison, rtx, rtx, machine_mode, int); --rtx emit_conditional_move (rtx, rtx, rtx, rtx, rtx, machine_mode); -+rtx emit_conditional_move (rtx, enum rtx_code, rtx, rtx, machine_mode, -+ rtx, rtx, machine_mode, int); - - /* Emit a conditional negate or bitwise complement operation. */ - rtx emit_conditional_neg_or_complement (rtx, rtx_code, machine_mode, rtx, ---- gcc/rtl.h -+++ gcc/rtl.h -@@ -4604,16 +4604,7 @@ word_register_operation_p (const_rtx x) - return true; - } - } -- --/* Holds an rtx comparison to simplify passing many parameters pertaining to a -- single comparison. */ -- --struct rtx_comparison { -- rtx_code code; -- rtx op0, op1; -- machine_mode mode; --}; -- -+ - /* gtype-desc.cc. */ - extern void gt_ggc_mx (rtx &); - extern void gt_pch_nx (rtx &); diff --git a/gcc12-pr104253.patch b/gcc12-pr104253.patch deleted file mode 100644 index 5560524..0000000 --- a/gcc12-pr104253.patch +++ /dev/null @@ -1,200 +0,0 @@ -If you are on a PowerPC system where the default long double is IEEE -128-bit, GCC will use the wrong names for some of the conversion functions -for the __ibm128 type. - -What is happening is when the defult long double is IEEE 128-bit, the -various convert, truncation, and extend functions did not specify a -default name for the conversion. The machine indepentent portions of the -compiler would construct a call with an 'if' name (IFmode being the mode -for IBM 128-bit floating point). This patch specifies to use the -tradiational 'tf' name for these conversion functions. - -2022-01-28 Michael Meissner - -gcc/ - PR target/104253 - * config/rs6000/rs6000.cc (init_float128_ibm): Use the TF names - for builtin conversions between __ibm128 and DImode when long - double uses the IEEE 128-bit format. - -gcc/testsuite/ - PR target/104253 - * gcc.target/powerpc/pr104253.c: New test. ---- - gcc/config/rs6000/rs6000.cc | 6 + - gcc/testsuite/gcc.target/powerpc/pr104253.c | 154 ++++++++++++++++++++ - 2 files changed, 160 insertions(+) - create mode 100644 gcc/testsuite/gcc.target/powerpc/pr104253.c - ---- gcc/config/rs6000/rs6000.cc -+++ gcc/config/rs6000/rs6000.cc -@@ -11113,6 +11113,12 @@ init_float128_ibm (machine_mode mode) - set_conv_libfunc (trunc_optab, DDmode, mode, "__dpd_trunctfdd"); - set_conv_libfunc (sext_optab, TDmode, mode, "__dpd_extendtftd"); - -+ set_conv_libfunc (sfix_optab, DImode, mode, "__fixtfdi"); -+ set_conv_libfunc (ufix_optab, DImode, mode, "__fixunstfdi"); -+ -+ set_conv_libfunc (sfloat_optab, mode, DImode, "__floatditf"); -+ set_conv_libfunc (ufloat_optab, mode, DImode, "__floatunditf"); -+ - if (TARGET_POWERPC64) - { - set_conv_libfunc (sfix_optab, TImode, mode, "__fixtfti"); ---- gcc/testsuite/gcc.target/powerpc/pr104253.c -+++ gcc/testsuite/gcc.target/powerpc/pr104253.c -@@ -0,0 +1,154 @@ -+/* -+ * Require float128 support because __ibm128 currently is not enabled unless we -+ * also have __float128 support. -+ */ -+ -+/* { dg-do run } */ -+/* { require-effective-target ppc_float128_sw } */ -+/* { dg-options "-O2 -mvsx -mfloat128" } */ -+ -+/* -+ * PR target/104253 -+ * -+ * Verify that the various conversions to and from __ibm128 work. When the -+ * default for long double is changed to IEEE 128-bit, originally GCC would -+ * call the functions using an 'if' name instead of 'tf. -+ */ -+ -+#include -+ -+extern float ibm128_to_sf (__ibm128) __attribute__((noinline)); -+extern double ibm128_to_df (__ibm128) __attribute__((noinline)); -+extern int ibm128_to_si (__ibm128) __attribute__((noinline)); -+extern long long ibm128_to_di (__ibm128) __attribute__((noinline)); -+extern unsigned int ibm128_to_usi (__ibm128) __attribute__((noinline)); -+extern unsigned long long ibm128_to_udi (__ibm128) __attribute__((noinline)); -+ -+extern __ibm128 sf_to_ibm128 (float) __attribute__((noinline)); -+extern __ibm128 df_to_ibm128 (double) __attribute__((noinline)); -+extern __ibm128 si_to_ibm128 (int) __attribute__((noinline)); -+extern __ibm128 di_to_ibm128 (long long) __attribute__((noinline)); -+extern __ibm128 usi_to_ibm128 (unsigned int) __attribute__((noinline)); -+extern __ibm128 udi_to_ibm128 (unsigned long long) __attribute__((noinline)); -+ -+float -+ibm128_to_sf (__ibm128 x) -+{ -+ return x; -+} -+ -+double -+ibm128_to_df (__ibm128 x) -+{ -+ return x; -+} -+ -+int -+ibm128_to_si (__ibm128 x) -+{ -+ return x; -+} -+ -+long long -+ibm128_to_di (__ibm128 x) -+{ -+ return x; -+} -+ -+unsigned int -+ibm128_to_usi (__ibm128 x) -+{ -+ return x; -+} -+ -+unsigned long long -+ibm128_to_udi (__ibm128 x) -+{ -+ return x; -+} -+ -+__ibm128 -+sf_to_ibm128 (float x) -+{ -+ return x; -+} -+ -+__ibm128 -+df_to_ibm128 (double x) -+{ -+ return x; -+} -+ -+__ibm128 -+si_to_ibm128 (int x) -+{ -+ return x; -+} -+ -+__ibm128 -+di_to_ibm128 (long long x) -+{ -+ return x; -+} -+ -+__ibm128 -+usi_to_ibm128 (unsigned int x) -+{ -+ return x; -+} -+ -+__ibm128 -+udi_to_ibm128 (unsigned long long x) -+{ -+ return x; -+} -+ -+volatile float seven_sf = 7.0f; -+volatile double seven_df = 7.0; -+volatile int seven_si = 7; -+volatile long long seven_di = 7LL; -+volatile unsigned int seven_usi = 7U; -+volatile unsigned long long seven_udi = 7ULL; -+volatile __ibm128 seven_ibm128 = 7.0; -+ -+int -+main (void) -+{ -+ if (seven_ibm128 != sf_to_ibm128 (seven_sf)) -+ abort (); -+ -+ if (seven_ibm128 != df_to_ibm128 (seven_df)) -+ abort (); -+ -+ if (seven_ibm128 != si_to_ibm128 (seven_si)) -+ abort (); -+ -+ if (seven_ibm128 != di_to_ibm128 (seven_di)) -+ abort (); -+ -+ if (seven_ibm128 != usi_to_ibm128 (seven_usi)) -+ abort (); -+ -+ if (seven_ibm128 != udi_to_ibm128 (seven_udi)) -+ abort (); -+ -+ if (seven_sf != ibm128_to_sf (seven_ibm128)) -+ abort (); -+ -+ if (seven_df != ibm128_to_df (seven_ibm128)) -+ abort (); -+ -+ if (seven_si != ibm128_to_si (seven_ibm128)) -+ abort (); -+ -+ if (seven_di != ibm128_to_di (seven_ibm128)) -+ abort (); -+ -+ if (seven_usi != ibm128_to_usi (seven_ibm128)) -+ abort (); -+ -+ if (seven_udi != ibm128_to_udi (seven_ibm128)) -+ abort (); -+ -+ return 0; -+} diff --git a/sources b/sources index 1819cf3..87303d0 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.1-20220214.tar.xz) = a6f590b9facf2c80ec73d41ccd5bcd404722b76f7ff06d82f30b8b956349df4efa049b72285be1a76da52e851ef327b8fe42d05ea7e62149b2a4236611a8355f +SHA512 (gcc-12.0.1-20220222.tar.xz) = 70426bab483df8ddcc58f80f709c087cb3c9e4992ddb910dc55986fbf8a0aa4067f401e3c2fad1e7a5d7832e18d3f24316ccd7a18db6601059a4b46325c6a899 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 67cc6756a1527199621c5684bccc072a43c5b750 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 6 Mar 2022 10:34:46 +0100 Subject: [PATCH 098/293] 12.0.1-0.10 --- .gitignore | 1 + gcc.spec | 37 ++++++++++++++++++++++++++++++++++--- gcc12-pr104775.patch | 36 ++++++++++++++++++++++++++++++++++++ sources | 2 +- 4 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 gcc12-pr104775.patch diff --git a/.gitignore b/.gitignore index c50297c..6a8bb3e 100644 --- a/.gitignore +++ b/.gitignore @@ -65,3 +65,4 @@ /gcc-12.0.1-20220212.tar.xz /gcc-12.0.1-20220214.tar.xz /gcc-12.0.1-20220222.tar.xz +/gcc-12.0.1-20220306.tar.xz diff --git a/gcc.spec b/gcc.spec index 45e45f7..4fd6156 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20220222 -%global gitrev 9780ea50d2a0fb2b07bc9a0f71e28e9c1ef5e235 +%global DATE 20220306 +%global gitrev 9a60f4c27d4317f91488c0c90d943a3638af9d1d %global gcc_version 12.0.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to @@ -120,7 +120,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.9%{?dist} +Release: %{gcc_release}.10%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -270,6 +270,7 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch +Patch12: gcc12-pr104775.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -791,6 +792,7 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ +%patch12 -p0 -b .pr104775~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3164,6 +3166,35 @@ end %endif %changelog +* Sun Mar 6 2022 Jakub Jelinek 12.0.1-0.10 +- update from trunk + - PRs analyzer/103521, analyzer/104434, c++/70077, c++/79493, c++/103443, + c++/104618, c++/104667, c++/104682, c/104627, c/104633, d/104659, + d/104736, debug/100541, fortran/84519, fortran/104131, fortran/104573, + fortran/104619, gcov-profile/104677, ipa/104533, ipa/104648, + libstdc++/96526, libstdc++/104602, libstdc++/104748, middle-end/80270, + middle-end/100400, middle-end/102276, middle-end/103836, + middle-end/103984, middle-end/104061, middle-end/104132, + middle-end/104133, middle-end/104529, middle-end/104540, + middle-end/104550, middle-end/104558, middle-end/104679, + middle-end/104721, middle-end/104757, middle-end/104761, + middle-end/104784, rtl-optimization/104154, rtl-optimization/104589, + rtl-optimization/104637, rtl-optimization/104686, target/87496, + target/88134, target/99555, target/100757, target/101325, + target/102429, target/103302, target/104121, target/104208, + target/104489, target/104656, target/104664, target/104674, + target/104681, target/104698, target/104704, target/104724, + target/104726, target/104758, testsuite/100407, testsuite/104687, + testsuite/104725, testsuite/104727, testsuite/104728, + testsuite/104730, testsuite/104732, testsuite/104791, + tree-optimization/91384, tree-optimization/101636, + tree-optimization/103037, tree-optimization/103845, + tree-optimization/103856, tree-optimization/104601, + tree-optimization/104644, tree-optimization/104675, + tree-optimization/104676, tree-optimization/104700, + tree-optimization/104715, tree-optimization/104716 +- fix constraints on s390x conditional trap (PR target/104775) + * Tue Feb 22 2022 Jakub Jelinek 12.0.1-0.9 - update from trunk - PRs analyzer/104524, analyzer/104560, analyzer/104576, c++/85493, diff --git a/gcc12-pr104775.patch b/gcc12-pr104775.patch new file mode 100644 index 0000000..6f57d66 --- /dev/null +++ b/gcc12-pr104775.patch @@ -0,0 +1,36 @@ +2022-03-04 Jakub Jelinek + + PR target/104775 + * config/s390/s390.md (*cmp_and_trap_unsigned_int): Use + S constraint instead of T in the last alternative. + + * gcc.target/s390/pr104775.c: New test. + +--- gcc/config/s390/s390.md.jj 2022-02-08 20:08:13.873404137 +0100 ++++ gcc/config/s390/s390.md 2022-03-04 14:38:23.252988476 +0100 +@@ -9578,7 +9578,7 @@ (define_insn "*cmp_and_trap_signed_int" + [(trap_if (match_operator 0 "s390_unsigned_integer_comparison" + [(match_operand:GPR 1 "register_operand" "d,d,d") +- (match_operand:GPR 2 "general_operand" "d,D,T")]) ++ (match_operand:GPR 2 "general_operand" "d,D,S")]) + (const_int 0))] + "TARGET_Z10" + "@ +--- gcc/testsuite/gcc.target/s390/pr104775.c.jj 2022-03-04 14:49:58.190134898 +0100 ++++ gcc/testsuite/gcc.target/s390/pr104775.c 2022-03-04 14:49:42.845352647 +0100 +@@ -0,0 +1,14 @@ ++/* PR target/104775 */ ++/* { dg-do assemble { target s390_zEC12_hw } } */ ++/* { dg-options "-O2 -march=zEC12" } */ ++ ++long a[64]; ++void bar (void); ++ ++void ++foo (int x, int y) ++{ ++ if (x != a[y]) ++ bar (); ++ __builtin_trap (); ++} diff --git a/sources b/sources index 87303d0..501c814 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.1-20220222.tar.xz) = 70426bab483df8ddcc58f80f709c087cb3c9e4992ddb910dc55986fbf8a0aa4067f401e3c2fad1e7a5d7832e18d3f24316ccd7a18db6601059a4b46325c6a899 +SHA512 (gcc-12.0.1-20220306.tar.xz) = ee74476de920124527f4df9ec95de0bf9fc74aab9e7ae1784c0fae0bf8f4b60367f241fbba2742a610e483516eaa63985d995771ae572509a95e326fa57d1b9e SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From b2fa1409e0f0ace9ea82d99547bcbe21c81831fa Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 8 Mar 2022 12:46:44 +0100 Subject: [PATCH 099/293] 12.0.1-0.11 --- .gitignore | 1 + gcc.spec | 19 ++++++++--- gcc12-pr104775.patch | 36 -------------------- gcc12-pr104781.patch | 80 ++++++++++++++++++++++++++++++++++++++++++++ sources | 2 +- 5 files changed, 96 insertions(+), 42 deletions(-) delete mode 100644 gcc12-pr104775.patch create mode 100644 gcc12-pr104781.patch diff --git a/.gitignore b/.gitignore index 6a8bb3e..f78dd62 100644 --- a/.gitignore +++ b/.gitignore @@ -66,3 +66,4 @@ /gcc-12.0.1-20220214.tar.xz /gcc-12.0.1-20220222.tar.xz /gcc-12.0.1-20220306.tar.xz +/gcc-12.0.1-20220308.tar.xz diff --git a/gcc.spec b/gcc.spec index 4fd6156..f690086 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20220306 -%global gitrev 9a60f4c27d4317f91488c0c90d943a3638af9d1d +%global DATE 20220308 +%global gitrev a525ce3ad147ce96a7c5fad4099fe2155af45324 %global gcc_version 12.0.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to @@ -120,7 +120,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.10%{?dist} +Release: %{gcc_release}.11%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -270,7 +270,7 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch -Patch12: gcc12-pr104775.patch +Patch12: gcc12-pr104781.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -792,7 +792,7 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr104775~ +%patch12 -p0 -b .pr104781~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3166,6 +3166,15 @@ end %endif %changelog +* Tue Mar 8 2022 Jakub Jelinek 12.0.1-0.11 +- update from trunk + - PRs analyzer/101983, fortran/99585, fortran/104430, libstdc++/104807, + middle-end/104381, target/99297, target/104779, target/104794, + target/104797, translation/90148, translation/104552, + tree-optimization/104782, tree-optimization/104825 +- fix build on i686 where gnat1 was hanging (PR target/104838, + PR target/104781) + * Sun Mar 6 2022 Jakub Jelinek 12.0.1-0.10 - update from trunk - PRs analyzer/103521, analyzer/104434, c++/70077, c++/79493, c++/103443, diff --git a/gcc12-pr104775.patch b/gcc12-pr104775.patch deleted file mode 100644 index 6f57d66..0000000 --- a/gcc12-pr104775.patch +++ /dev/null @@ -1,36 +0,0 @@ -2022-03-04 Jakub Jelinek - - PR target/104775 - * config/s390/s390.md (*cmp_and_trap_unsigned_int): Use - S constraint instead of T in the last alternative. - - * gcc.target/s390/pr104775.c: New test. - ---- gcc/config/s390/s390.md.jj 2022-02-08 20:08:13.873404137 +0100 -+++ gcc/config/s390/s390.md 2022-03-04 14:38:23.252988476 +0100 -@@ -9578,7 +9578,7 @@ (define_insn "*cmp_and_trap_signed_int" - [(trap_if (match_operator 0 "s390_unsigned_integer_comparison" - [(match_operand:GPR 1 "register_operand" "d,d,d") -- (match_operand:GPR 2 "general_operand" "d,D,T")]) -+ (match_operand:GPR 2 "general_operand" "d,D,S")]) - (const_int 0))] - "TARGET_Z10" - "@ ---- gcc/testsuite/gcc.target/s390/pr104775.c.jj 2022-03-04 14:49:58.190134898 +0100 -+++ gcc/testsuite/gcc.target/s390/pr104775.c 2022-03-04 14:49:42.845352647 +0100 -@@ -0,0 +1,14 @@ -+/* PR target/104775 */ -+/* { dg-do assemble { target s390_zEC12_hw } } */ -+/* { dg-options "-O2 -march=zEC12" } */ -+ -+long a[64]; -+void bar (void); -+ -+void -+foo (int x, int y) -+{ -+ if (x != a[y]) -+ bar (); -+ __builtin_trap (); -+} diff --git a/gcc12-pr104781.patch b/gcc12-pr104781.patch new file mode 100644 index 0000000..a4e7310 --- /dev/null +++ b/gcc12-pr104781.patch @@ -0,0 +1,80 @@ +Since eh_return doesn't work with stack realignment, disable SSE on +unwind-c.c and unwind-dw2.c to avoid stack realignment with the 4-byte +incoming stack to avoid SSE usage which is caused by + +commit 609e8c492d62d92465460eae3d43dfc4b2c68288 +Author: H.J. Lu +Date: Sat Feb 26 14:17:23 2022 -0800 + + x86: Always return pseudo register in ix86_gen_scratch_sse_rtx + +when pseudo vector registers are used to expand memset. + +gcc/ + + PR target/104781 + * config/i386/i386.cc (ix86_expand_epilogue): Sorry if there is + stack realignment with eh_return or regparm nested function. + * config/i386/i386.h (LIBGCC2_UNWIND_ATTRIBUTE): Define. + +gcc/testsuite/ + + PR target/104781 + * gcc.target/i386/eh_return-1.c: Add -mincoming-stack-boundary=4. + * gcc.target/i386/eh_return-2.c: Likewise. + +--- gcc/config/i386/i386.cc ++++ gcc/config/i386/i386.cc +@@ -9444,12 +9444,15 @@ ix86_expand_epilogue (int style) + rtx sa = EH_RETURN_STACKADJ_RTX; + rtx_insn *insn; + +- /* %ecx can't be used for both DRAP register and eh_return. */ +- if (crtl->drap_reg) +- gcc_assert (REGNO (crtl->drap_reg) != CX_REG); ++ /* Stack realignment doesn't work with eh_return. */ ++ if (crtl->stack_realign_needed) ++ sorry ("Stack realignment not supported with " ++ "%<__builtin_eh_return%>"); + + /* regparm nested functions don't work with eh_return. */ +- gcc_assert (!ix86_static_chain_on_stack); ++ if (ix86_static_chain_on_stack) ++ sorry ("regparm nested function not supported with " ++ "%<__builtin_eh_return%>"); + + if (frame_pointer_needed) + { +--- gcc/config/i386/i386.h.jj 2022-02-25 12:06:45.535493490 +0100 ++++ gcc/config/i386/i386.h 2022-03-08 11:20:43.207043370 +0100 +@@ -2848,6 +2848,11 @@ extern enum attr_cpu ix86_schedule; + #define NUM_X86_64_MS_CLOBBERED_REGS 12 + #endif + ++/* __builtin_eh_return can't handle stack realignment, so disable SSE in ++ libgcc functions that call it. */ ++#define LIBGCC2_UNWIND_ATTRIBUTE __attribute__((target ("no-sse"))) ++ ++ + /* + Local variables: + version-control: t +--- gcc/testsuite/gcc.target/i386/eh_return-1.c ++++ gcc/testsuite/gcc.target/i386/eh_return-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -march=haswell -mno-avx512f -mtune-ctrl=avx256_move_by_pieces" } */ ++/* { dg-options "-O2 -mincoming-stack-boundary=4 -march=haswell -mno-avx512f -mtune-ctrl=avx256_move_by_pieces" } */ + + struct _Unwind_Context + { +--- gcc/testsuite/gcc.target/i386/eh_return-2.c ++++ gcc/testsuite/gcc.target/i386/eh_return-2.c +@@ -1,6 +1,6 @@ + /* PR target/101772 */ + /* { dg-do compile } */ +-/* { dg-additional-options "-O0 -march=x86-64 -mstackrealign" } */ ++/* { dg-additional-options "-O0 -mincoming-stack-boundary=4 -march=x86-64 -mstackrealign" } */ + + struct _Unwind_Context _Unwind_Resume_or_Rethrow_this_context; + diff --git a/sources b/sources index 501c814..2736944 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.1-20220306.tar.xz) = ee74476de920124527f4df9ec95de0bf9fc74aab9e7ae1784c0fae0bf8f4b60367f241fbba2742a610e483516eaa63985d995771ae572509a95e326fa57d1b9e +SHA512 (gcc-12.0.1-20220308.tar.xz) = 4c714250c056d680ab5135317185e89e28ed9f6a70a5943eab3c610c38907b9696d07b141cda8d703a1fd1b93cf2407c0f92ab452c9f797c3da472748aed8844 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From ef299b80e93d6ed40b698d9ac2c69e65a0351d52 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 8 Mar 2022 13:18:22 +0100 Subject: [PATCH 100/293] 12.0.1-0.11 --- gcc12-pr104781.patch | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gcc12-pr104781.patch b/gcc12-pr104781.patch index a4e7310..a82b05d 100644 --- a/gcc12-pr104781.patch +++ b/gcc12-pr104781.patch @@ -47,14 +47,15 @@ gcc/testsuite/ { --- gcc/config/i386/i386.h.jj 2022-02-25 12:06:45.535493490 +0100 +++ gcc/config/i386/i386.h 2022-03-08 11:20:43.207043370 +0100 -@@ -2848,6 +2848,11 @@ extern enum attr_cpu ix86_schedule; +@@ -2848,6 +2848,12 @@ extern enum attr_cpu ix86_schedule; #define NUM_X86_64_MS_CLOBBERED_REGS 12 #endif +/* __builtin_eh_return can't handle stack realignment, so disable SSE in + libgcc functions that call it. */ ++#ifndef __x86_64__ +#define LIBGCC2_UNWIND_ATTRIBUTE __attribute__((target ("no-sse"))) -+ ++#endif + /* Local variables: From 967fa9b1418eb3a9142fdb0159ce0852deb1a4c3 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 8 Mar 2022 17:59:34 +0100 Subject: [PATCH 101/293] 12.0.1-0.12 --- gcc.spec | 10 ++++++- gcc12-pr104777.patch | 61 ++++++++++++++++++++++++++++++++++++++ gcc12-pr104839.patch | 70 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 gcc12-pr104777.patch create mode 100644 gcc12-pr104839.patch diff --git a/gcc.spec b/gcc.spec index f690086..df07676 100644 --- a/gcc.spec +++ b/gcc.spec @@ -120,7 +120,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.11%{?dist} +Release: %{gcc_release}.12%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -271,6 +271,8 @@ Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch Patch12: gcc12-pr104781.patch +Patch13: gcc12-pr104777.patch +Patch14: gcc12-pr104839.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -793,6 +795,8 @@ to NVidia PTX capable devices if available. %endif %patch11 -p0 -b .d-shared-libphobos~ %patch12 -p0 -b .pr104781~ +%patch13 -p0 -b .pr104777~ +%patch14 -p0 -b .pr104839~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3166,6 +3170,10 @@ end %endif %changelog +* Tue Mar 8 2022 Jakub Jelinek 12.0.1-0.12 +- fix up promoted SUBREG handling (#2045160, PR rtl-optimization/104839) +- fix up check for asm goto (PR rtl-optimization/104777) + * Tue Mar 8 2022 Jakub Jelinek 12.0.1-0.11 - update from trunk - PRs analyzer/101983, fortran/99585, fortran/104430, libstdc++/104807, diff --git a/gcc12-pr104777.patch b/gcc12-pr104777.patch new file mode 100644 index 0000000..1e541dd --- /dev/null +++ b/gcc12-pr104777.patch @@ -0,0 +1,61 @@ +2022-03-08 Marek Polacek + + PR rtl-optimization/104777 + * rtl.cc (classify_insn): For ASM_OPERANDS, return JUMP_INSN only if + ASM_OPERANDS_LABEL_VEC has at least one element. + + * gcc.dg/torture/tls/pr104777.c: New test. + +--- gcc/rtl.cc ++++ gcc/rtl.cc +@@ -765,7 +765,7 @@ classify_insn (rtx x) + return CALL_INSN; + if (ANY_RETURN_P (x)) + return JUMP_INSN; +- if (GET_CODE (x) == ASM_OPERANDS && ASM_OPERANDS_LABEL_VEC (x)) ++ if (GET_CODE (x) == ASM_OPERANDS && ASM_OPERANDS_LABEL_LENGTH (x)) + return JUMP_INSN; + if (GET_CODE (x) == SET) + { +@@ -794,7 +794,7 @@ classify_insn (rtx x) + if (has_return_p) + return JUMP_INSN; + if (GET_CODE (XVECEXP (x, 0, 0)) == ASM_OPERANDS +- && ASM_OPERANDS_LABEL_VEC (XVECEXP (x, 0, 0))) ++ && ASM_OPERANDS_LABEL_LENGTH (XVECEXP (x, 0, 0))) + return JUMP_INSN; + } + #ifdef GENERATOR_FILE +--- gcc/testsuite/gcc.dg/torture/tls/pr104777.c ++++ gcc/testsuite/gcc.dg/torture/tls/pr104777.c +@@ -0,0 +1,30 @@ ++/* PR rtl-optimization/104777 */ ++/* { dg-do compile } */ ++/* { dg-require-effective-target tls } */ ++ ++int savestate_r; ++int savestate_ssb; ++extern void abort(); ++__thread int loop; ++void f (void) ++{ ++ int savestate_r0_5; ++ int savestate_r1_6; ++ ++ __asm__("" : "=m" (savestate_ssb), "=r" (savestate_r)); ++ savestate_r0_5 = savestate_r; ++ if (savestate_r0_5 == 0) ++ { ++ __asm__ __volatile__("" : : "m" (loop)); ++ abort (); ++ } ++ ++ __asm__("" : "=m" (savestate_ssb), "=r" (savestate_r)); ++ savestate_r1_6 = savestate_r; ++ if (savestate_r1_6 != 0) ++ return; ++ ++ __asm__ __volatile__("" : : "m" (loop)); ++ abort (); ++ ++} diff --git a/gcc12-pr104839.patch b/gcc12-pr104839.patch new file mode 100644 index 0000000..e9f432a --- /dev/null +++ b/gcc12-pr104839.patch @@ -0,0 +1,70 @@ +2022-03-08 Jakub Jelinek + + PR rtl-optimization/104839 + * simplify-rtx.cc (simplify_unary_operation_1) : + Use SRP_SIGNED instead of incorrect 1 in SUBREG_PROMOTED_SET. + (simplify_unary_operation_1) : Use SRP_UNSIGNED + instead of incorrect 0 in SUBREG_PROMOTED_SET. + + * gcc.c-torture/execute/pr104839.c: New test. + +--- gcc/simplify-rtx.cc.jj 2022-02-23 09:17:04.000000000 +0100 ++++ gcc/simplify-rtx.cc 2022-03-08 16:31:20.823246404 +0100 +@@ -1527,7 +1527,7 @@ simplify_context::simplify_unary_operati + if (partial_subreg_p (temp)) + { + SUBREG_PROMOTED_VAR_P (temp) = 1; +- SUBREG_PROMOTED_SET (temp, 1); ++ SUBREG_PROMOTED_SET (temp, SRP_SIGNED); + } + return temp; + } +@@ -1662,7 +1662,7 @@ simplify_context::simplify_unary_operati + if (partial_subreg_p (temp)) + { + SUBREG_PROMOTED_VAR_P (temp) = 1; +- SUBREG_PROMOTED_SET (temp, 0); ++ SUBREG_PROMOTED_SET (temp, SRP_UNSIGNED); + } + return temp; + } +--- gcc/testsuite/gcc.c-torture/execute/pr104839.c.jj 2022-03-08 16:46:51.418440078 +0100 ++++ gcc/testsuite/gcc.c-torture/execute/pr104839.c 2022-03-08 16:46:27.044774203 +0100 +@@ -0,0 +1,37 @@ ++/* PR rtl-optimization/104839 */ ++ ++__attribute__((noipa)) short ++foo (void) ++{ ++ return -1; ++} ++ ++__attribute__((noipa)) int ++bar (void) ++{ ++ short i = foo (); ++ if (i == -2) ++ return 2; ++ long k = i; ++ int j = -1; ++ volatile long s = 300; ++ if (k < 0) ++ { ++ k += s; ++ if (k < 0) ++ j = 0; ++ } ++ else if (k >= s) ++ j = 0; ++ if (j != -1) ++ return 1; ++ return 0; ++} ++ ++int ++main () ++{ ++ if (bar () != 0) ++ __builtin_abort (); ++ return 0; ++} From fc9926357a5e5b3a1fabe1bdfb560eb99fb1b6a5 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 1 Apr 2022 15:19:26 +0200 Subject: [PATCH 102/293] 12.0.1-0.13 --- .gitignore | 1 + gcc.spec | 77 ++++++++++++++++++++++++++++++++++++----- gcc12-pr104777.patch | 61 --------------------------------- gcc12-pr104781.patch | 81 -------------------------------------------- gcc12-pr104839.patch | 70 -------------------------------------- sources | 2 +- 6 files changed, 70 insertions(+), 222 deletions(-) delete mode 100644 gcc12-pr104777.patch delete mode 100644 gcc12-pr104781.patch delete mode 100644 gcc12-pr104839.patch diff --git a/.gitignore b/.gitignore index f78dd62..b1c7793 100644 --- a/.gitignore +++ b/.gitignore @@ -67,3 +67,4 @@ /gcc-12.0.1-20220222.tar.xz /gcc-12.0.1-20220306.tar.xz /gcc-12.0.1-20220308.tar.xz +/gcc-12.0.1-20220401.tar.xz diff --git a/gcc.spec b/gcc.spec index df07676..4135f36 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20220308 -%global gitrev a525ce3ad147ce96a7c5fad4099fe2155af45324 +%global DATE 20220401 +%global gitrev 8c714de722b2df674be4eda3e525a9c4a1eee009 %global gcc_version 12.0.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to @@ -120,7 +120,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.12%{?dist} +Release: %{gcc_release}.13%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -270,9 +270,6 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch -Patch12: gcc12-pr104781.patch -Patch13: gcc12-pr104777.patch -Patch14: gcc12-pr104839.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -794,9 +791,6 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr104781~ -%patch13 -p0 -b .pr104777~ -%patch14 -p0 -b .pr104839~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3170,6 +3164,71 @@ end %endif %changelog +* Fri Apr 1 2022 Jakub Jelinek 12.0.1-0.13 +- update from trunk + - PRs ada/104767, ada/104861, analyzer/95000, analyzer/99771, + analyzer/103533, analyzer/104308, analyzer/104793, analyzer/104863, + analyzer/104943, analyzer/104954, analyzer/104955, analyzer/104979, + analyzer/104997, analyzer/105017, analyzer/105057, analyzer/105074, + analyzer/105087, c++/39751, c++/58646, c++/59426, c++/65396, + c++/71637, c++/84964, c++/87820, c++/92918, c++/93280, c++/95999, + c++/96329, c++/96437, c++/96440, c++/96645, c++/96780, c++/98644, + c++/99445, c++/100474, c++/101030, c++/101515, c++/101767, c++/102045, + c++/102071, c++/102123, c++/102137, c++/102489, c++/102538, + c++/102740, c++/102869, c++/102990, c++/103177, c++/103291, + c++/103299, c++/103337, c++/103455, c++/103460, c++/103769, + c++/103943, c++/103968, c++/104008, c++/104108, c++/104284, + c++/104476, c++/104527, c++/104568, c++/104583, c++/104608, + c++/104620, c++/104622, c++/104623, c++/104641, c++/104752, + c++/104806, c++/104823, c++/104846, c++/104847, c++/104944, + c++/104994, c++/105003, c++/105006, c++/105035, c++/105050, + c++/105061, c++/105064, c++/105067, c++/105092, c/82283, c/84685, + c/98198, c/104711, d/103528, d/104911, d/105004, debug/104564, + debug/104778, fortran/50549, fortran/100892, fortran/103039, + fortran/103560, fortran/103691, fortran/104126, fortran/104570, + fortran/104571, fortran/104811, fortran/104849, fortran/104999, + ipa/102513, ipa/103083, ipa/103171, ipa/104813, jit/63854, + libgcc/86224, libgomp/105042, libstdc++/92546, libstdc++/103407, + libstdc++/104242, libstdc++/104859, libstdc++/104866, + libstdc++/104870, libstdc++/104875, libstdc++/104990, + libstdc++/105021, libstdc++/105027, lto/102426, middle-end/90115, + middle-end/98420, middle-end/99578, middle-end/100680, + middle-end/102330, middle-end/103597, middle-end/104086, + middle-end/104285, middle-end/104436, middle-end/104774, + middle-end/104786, middle-end/104869, middle-end/104885, + middle-end/104892, middle-end/104966, middle-end/104971, + middle-end/104975, middle-end/105032, middle-end/105049, other/65095, + other/102664, other/104899, other/105114, rtl-optimization/103775, + rtl-optimization/104814, rtl-optimization/104961, + rtl-optimization/104989, rtl-optimization/105028, + rtl-optimization/105091, sanitizer/105093, target/86722, target/91229, + target/94680, target/96882, target/99754, target/102125, + target/102215, target/102772, target/102986, target/103074, + target/104004, target/104666, target/104688, target/104714, + target/104762, target/104783, target/104790, target/104815, + target/104818, target/104829, target/104840, target/104842, + target/104857, target/104868, target/104882, target/104890, + target/104898, target/104902, target/104903, target/104910, + target/104916, target/104923, target/104925, target/104946, + target/104952, target/104957, target/104963, target/104967, + target/104974, target/104976, target/104977, target/104978, + target/104982, target/104998, target/105000, target/105011, + target/105052, target/105058, target/105066, target/105068, + testsuite/102841, testsuite/104759, testsuite/105055, + testsuite/105085, tree-optimization/80334, tree-optimization/84201, + tree-optimization/90356, tree-optimization/98335, + tree-optimization/100834, tree-optimization/101895, + tree-optimization/102008, tree-optimization/102586, + tree-optimization/102645, tree-optimization/102943, + tree-optimization/104645, tree-optimization/104755, + tree-optimization/104851, tree-optimization/104880, + tree-optimization/104941, tree-optimization/104942, + tree-optimization/104960, tree-optimization/104970, + tree-optimization/105012, tree-optimization/105053, + tree-optimization/105056, tree-optimization/105070, + tree-optimization/105080, tree-optimization/105094, + tree-optimization/105109 + * Tue Mar 8 2022 Jakub Jelinek 12.0.1-0.12 - fix up promoted SUBREG handling (#2045160, PR rtl-optimization/104839) - fix up check for asm goto (PR rtl-optimization/104777) diff --git a/gcc12-pr104777.patch b/gcc12-pr104777.patch deleted file mode 100644 index 1e541dd..0000000 --- a/gcc12-pr104777.patch +++ /dev/null @@ -1,61 +0,0 @@ -2022-03-08 Marek Polacek - - PR rtl-optimization/104777 - * rtl.cc (classify_insn): For ASM_OPERANDS, return JUMP_INSN only if - ASM_OPERANDS_LABEL_VEC has at least one element. - - * gcc.dg/torture/tls/pr104777.c: New test. - ---- gcc/rtl.cc -+++ gcc/rtl.cc -@@ -765,7 +765,7 @@ classify_insn (rtx x) - return CALL_INSN; - if (ANY_RETURN_P (x)) - return JUMP_INSN; -- if (GET_CODE (x) == ASM_OPERANDS && ASM_OPERANDS_LABEL_VEC (x)) -+ if (GET_CODE (x) == ASM_OPERANDS && ASM_OPERANDS_LABEL_LENGTH (x)) - return JUMP_INSN; - if (GET_CODE (x) == SET) - { -@@ -794,7 +794,7 @@ classify_insn (rtx x) - if (has_return_p) - return JUMP_INSN; - if (GET_CODE (XVECEXP (x, 0, 0)) == ASM_OPERANDS -- && ASM_OPERANDS_LABEL_VEC (XVECEXP (x, 0, 0))) -+ && ASM_OPERANDS_LABEL_LENGTH (XVECEXP (x, 0, 0))) - return JUMP_INSN; - } - #ifdef GENERATOR_FILE ---- gcc/testsuite/gcc.dg/torture/tls/pr104777.c -+++ gcc/testsuite/gcc.dg/torture/tls/pr104777.c -@@ -0,0 +1,30 @@ -+/* PR rtl-optimization/104777 */ -+/* { dg-do compile } */ -+/* { dg-require-effective-target tls } */ -+ -+int savestate_r; -+int savestate_ssb; -+extern void abort(); -+__thread int loop; -+void f (void) -+{ -+ int savestate_r0_5; -+ int savestate_r1_6; -+ -+ __asm__("" : "=m" (savestate_ssb), "=r" (savestate_r)); -+ savestate_r0_5 = savestate_r; -+ if (savestate_r0_5 == 0) -+ { -+ __asm__ __volatile__("" : : "m" (loop)); -+ abort (); -+ } -+ -+ __asm__("" : "=m" (savestate_ssb), "=r" (savestate_r)); -+ savestate_r1_6 = savestate_r; -+ if (savestate_r1_6 != 0) -+ return; -+ -+ __asm__ __volatile__("" : : "m" (loop)); -+ abort (); -+ -+} diff --git a/gcc12-pr104781.patch b/gcc12-pr104781.patch deleted file mode 100644 index a82b05d..0000000 --- a/gcc12-pr104781.patch +++ /dev/null @@ -1,81 +0,0 @@ -Since eh_return doesn't work with stack realignment, disable SSE on -unwind-c.c and unwind-dw2.c to avoid stack realignment with the 4-byte -incoming stack to avoid SSE usage which is caused by - -commit 609e8c492d62d92465460eae3d43dfc4b2c68288 -Author: H.J. Lu -Date: Sat Feb 26 14:17:23 2022 -0800 - - x86: Always return pseudo register in ix86_gen_scratch_sse_rtx - -when pseudo vector registers are used to expand memset. - -gcc/ - - PR target/104781 - * config/i386/i386.cc (ix86_expand_epilogue): Sorry if there is - stack realignment with eh_return or regparm nested function. - * config/i386/i386.h (LIBGCC2_UNWIND_ATTRIBUTE): Define. - -gcc/testsuite/ - - PR target/104781 - * gcc.target/i386/eh_return-1.c: Add -mincoming-stack-boundary=4. - * gcc.target/i386/eh_return-2.c: Likewise. - ---- gcc/config/i386/i386.cc -+++ gcc/config/i386/i386.cc -@@ -9444,12 +9444,15 @@ ix86_expand_epilogue (int style) - rtx sa = EH_RETURN_STACKADJ_RTX; - rtx_insn *insn; - -- /* %ecx can't be used for both DRAP register and eh_return. */ -- if (crtl->drap_reg) -- gcc_assert (REGNO (crtl->drap_reg) != CX_REG); -+ /* Stack realignment doesn't work with eh_return. */ -+ if (crtl->stack_realign_needed) -+ sorry ("Stack realignment not supported with " -+ "%<__builtin_eh_return%>"); - - /* regparm nested functions don't work with eh_return. */ -- gcc_assert (!ix86_static_chain_on_stack); -+ if (ix86_static_chain_on_stack) -+ sorry ("regparm nested function not supported with " -+ "%<__builtin_eh_return%>"); - - if (frame_pointer_needed) - { ---- gcc/config/i386/i386.h.jj 2022-02-25 12:06:45.535493490 +0100 -+++ gcc/config/i386/i386.h 2022-03-08 11:20:43.207043370 +0100 -@@ -2848,6 +2848,12 @@ extern enum attr_cpu ix86_schedule; - #define NUM_X86_64_MS_CLOBBERED_REGS 12 - #endif - -+/* __builtin_eh_return can't handle stack realignment, so disable SSE in -+ libgcc functions that call it. */ -+#ifndef __x86_64__ -+#define LIBGCC2_UNWIND_ATTRIBUTE __attribute__((target ("no-sse"))) -+#endif -+ - /* - Local variables: - version-control: t ---- gcc/testsuite/gcc.target/i386/eh_return-1.c -+++ gcc/testsuite/gcc.target/i386/eh_return-1.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-O2 -march=haswell -mno-avx512f -mtune-ctrl=avx256_move_by_pieces" } */ -+/* { dg-options "-O2 -mincoming-stack-boundary=4 -march=haswell -mno-avx512f -mtune-ctrl=avx256_move_by_pieces" } */ - - struct _Unwind_Context - { ---- gcc/testsuite/gcc.target/i386/eh_return-2.c -+++ gcc/testsuite/gcc.target/i386/eh_return-2.c -@@ -1,6 +1,6 @@ - /* PR target/101772 */ - /* { dg-do compile } */ --/* { dg-additional-options "-O0 -march=x86-64 -mstackrealign" } */ -+/* { dg-additional-options "-O0 -mincoming-stack-boundary=4 -march=x86-64 -mstackrealign" } */ - - struct _Unwind_Context _Unwind_Resume_or_Rethrow_this_context; - diff --git a/gcc12-pr104839.patch b/gcc12-pr104839.patch deleted file mode 100644 index e9f432a..0000000 --- a/gcc12-pr104839.patch +++ /dev/null @@ -1,70 +0,0 @@ -2022-03-08 Jakub Jelinek - - PR rtl-optimization/104839 - * simplify-rtx.cc (simplify_unary_operation_1) : - Use SRP_SIGNED instead of incorrect 1 in SUBREG_PROMOTED_SET. - (simplify_unary_operation_1) : Use SRP_UNSIGNED - instead of incorrect 0 in SUBREG_PROMOTED_SET. - - * gcc.c-torture/execute/pr104839.c: New test. - ---- gcc/simplify-rtx.cc.jj 2022-02-23 09:17:04.000000000 +0100 -+++ gcc/simplify-rtx.cc 2022-03-08 16:31:20.823246404 +0100 -@@ -1527,7 +1527,7 @@ simplify_context::simplify_unary_operati - if (partial_subreg_p (temp)) - { - SUBREG_PROMOTED_VAR_P (temp) = 1; -- SUBREG_PROMOTED_SET (temp, 1); -+ SUBREG_PROMOTED_SET (temp, SRP_SIGNED); - } - return temp; - } -@@ -1662,7 +1662,7 @@ simplify_context::simplify_unary_operati - if (partial_subreg_p (temp)) - { - SUBREG_PROMOTED_VAR_P (temp) = 1; -- SUBREG_PROMOTED_SET (temp, 0); -+ SUBREG_PROMOTED_SET (temp, SRP_UNSIGNED); - } - return temp; - } ---- gcc/testsuite/gcc.c-torture/execute/pr104839.c.jj 2022-03-08 16:46:51.418440078 +0100 -+++ gcc/testsuite/gcc.c-torture/execute/pr104839.c 2022-03-08 16:46:27.044774203 +0100 -@@ -0,0 +1,37 @@ -+/* PR rtl-optimization/104839 */ -+ -+__attribute__((noipa)) short -+foo (void) -+{ -+ return -1; -+} -+ -+__attribute__((noipa)) int -+bar (void) -+{ -+ short i = foo (); -+ if (i == -2) -+ return 2; -+ long k = i; -+ int j = -1; -+ volatile long s = 300; -+ if (k < 0) -+ { -+ k += s; -+ if (k < 0) -+ j = 0; -+ } -+ else if (k >= s) -+ j = 0; -+ if (j != -1) -+ return 1; -+ return 0; -+} -+ -+int -+main () -+{ -+ if (bar () != 0) -+ __builtin_abort (); -+ return 0; -+} diff --git a/sources b/sources index 2736944..3bcaa25 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.1-20220308.tar.xz) = 4c714250c056d680ab5135317185e89e28ed9f6a70a5943eab3c610c38907b9696d07b141cda8d703a1fd1b93cf2407c0f92ab452c9f797c3da472748aed8844 +SHA512 (gcc-12.0.1-20220401.tar.xz) = 6297c2c9828b9098ca5dad79ac5233d178264a5327522fbc61fce66940d4c551e37a7b5b070fe24942343c35920effef1cc8abf973e81105939bbb557bcf5846 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From d73ad6153fd173988eaf537b806507ab50950039 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 1 Apr 2022 16:24:00 +0200 Subject: [PATCH 103/293] 12.0.1-0.14 --- gcc.spec | 8 ++++++-- sources | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/gcc.spec b/gcc.spec index 4135f36..0b5296b 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ %global DATE 20220401 -%global gitrev 8c714de722b2df674be4eda3e525a9c4a1eee009 +%global gitrev 3b1a8bc028a968b01bbdb5f9cc5cd30402efae92 %global gcc_version 12.0.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to @@ -120,7 +120,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.13%{?dist} +Release: %{gcc_release}.14%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3164,6 +3164,10 @@ end %endif %changelog +* Fri Apr 1 2022 Jakub Jelinek 12.0.1-0.14 +- update from trunk + - revert delayed parse DMI change (PR c++/96645) + * Fri Apr 1 2022 Jakub Jelinek 12.0.1-0.13 - update from trunk - PRs ada/104767, ada/104861, analyzer/95000, analyzer/99771, diff --git a/sources b/sources index 3bcaa25..870a0c7 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.1-20220401.tar.xz) = 6297c2c9828b9098ca5dad79ac5233d178264a5327522fbc61fce66940d4c551e37a7b5b070fe24942343c35920effef1cc8abf973e81105939bbb557bcf5846 +SHA512 (gcc-12.0.1-20220401.tar.xz) = c32fe72884442d91dbade694515bc7d54cf2194cd3928e9d7168e7b5db0e244b30d8addde26633f936b2a0e17b30d94cdec594d6b834ae4b003f3210fb641f50 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 54dca9e09dd419dab6f5f3bfbaf816879a87308f Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 3 Apr 2022 13:09:18 +0200 Subject: [PATCH 104/293] 12.0.1-0.14 --- gcc.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 0b5296b..897ed4b 100644 --- a/gcc.spec +++ b/gcc.spec @@ -270,6 +270,7 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch +Patch12: gcc12-aarch64-tune.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -791,6 +792,7 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ +%patch12 -p0 -b .aarch64-tune~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3164,9 +3166,10 @@ end %endif %changelog -* Fri Apr 1 2022 Jakub Jelinek 12.0.1-0.14 +* Sun Apr 3 2022 Jakub Jelinek 12.0.1-0.14 - update from trunk - revert delayed parse DMI change (PR c++/96645) +- fix up aarch64 make install * Fri Apr 1 2022 Jakub Jelinek 12.0.1-0.13 - update from trunk From fbdc8be2d51ed1f416fd0e434712ee50ede35b82 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 3 Apr 2022 13:10:43 +0200 Subject: [PATCH 105/293] 12.0.1-0.14 --- gcc12-aarch64-tune.patch | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 gcc12-aarch64-tune.patch diff --git a/gcc12-aarch64-tune.patch b/gcc12-aarch64-tune.patch new file mode 100644 index 0000000..fb7a951 --- /dev/null +++ b/gcc12-aarch64-tune.patch @@ -0,0 +1,13 @@ +2022-04-03 Jakub Jelinek + + * config/aarch64/aarch64-tune.md: Regenerate. + +--- gcc/config/aarch64/aarch64-tune.md 2022-04-01 14:57:41.745622238 +0200 ++++ gcc/config/aarch64/aarch64-tune.md 2022-04-03 12:55:41.667331201 +0200 +@@ -1,5 +1,5 @@ + ;; -*- buffer-read-only: t -*- + ;; Generated automatically by gentune.sh from aarch64-cores.def + (define_attr "tune" +- "cortexa34,cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88p1,thunderxt88,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,ampere1,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,cortexa76ae,cortexa77,cortexa78,cortexa78ae,cortexa78c,cortexa65,cortexa65ae,cortexx1,ares,neoversen1,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,tsv110,thunderx3t110,zeus,neoversev1,neoverse512tvb,saphira,neoversen2,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55,cortexr82,cortexa510,cortexa710,cortexx2,demeter" ++ "cortexa34,cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88p1,thunderxt88,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,ampere1,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,cortexa76ae,cortexa77,cortexa78,cortexa78ae,cortexa78c,cortexa65,cortexa65ae,cortexx1,ares,neoversen1,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,tsv110,thunderx3t110,zeus,neoversev1,neoverse512tvb,saphira,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55,cortexr82,cortexa510,cortexa710,cortexx2,neoversen2,demeter" + (const (symbol_ref "((enum attr_tune) aarch64_tune)"))) From 665f9ff9cb13f9ef5f44123367567a26535a4f8c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 11 Apr 2022 19:34:37 +0200 Subject: [PATCH 106/293] gcc-12.0.1-0.15 --- .gitignore | 1 + gcc.spec | 98 ++++++++++++++++++++++++++++++++++++++-- gcc12-aarch64-tune.patch | 13 ------ gcc12-pr105214.patch | 38 ++++++++++++++++ sources | 2 +- 5 files changed, 133 insertions(+), 19 deletions(-) delete mode 100644 gcc12-aarch64-tune.patch create mode 100644 gcc12-pr105214.patch diff --git a/.gitignore b/.gitignore index b1c7793..6aa35a0 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,4 @@ /gcc-12.0.1-20220306.tar.xz /gcc-12.0.1-20220308.tar.xz /gcc-12.0.1-20220401.tar.xz +/gcc-12.0.1-20220411.tar.xz diff --git a/gcc.spec b/gcc.spec index 897ed4b..66e444a 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20220401 -%global gitrev 3b1a8bc028a968b01bbdb5f9cc5cd30402efae92 +%global DATE 20220411 +%global gitrev c520f3606c4d0f971a172e17c55b06aec363a417 %global gcc_version 12.0.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to @@ -117,10 +117,15 @@ %ifarch x86_64 %global multilib_32_arch i686 %endif +%if 0%{?fedora} >= 36 +%global build_annobin_plugin 1 +%else +%global build_annobin_plugin 0 +%endif Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.14%{?dist} +Release: %{gcc_release}.15%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -270,7 +275,7 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch -Patch12: gcc12-aarch64-tune.patch +Patch12: gcc12-pr105214.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -773,6 +778,18 @@ NVidia PTX. OpenMP and OpenACC programs linked with -fopenmp will by default add PTX code into the binaries, which can be offloaded to NVidia PTX capable devices if available. +%package plugin-annobin +Summary: The annobin plugin for gcc, built by the installed version of gcc +Requires: gcc = %{version}-%{release} +%if %{build_annobin_plugin} +BuildRequires: annobin >= 10.62, annobin-plugin-gcc, rpm-devel, binutils-devel, xz +%endif + +%description plugin-annobin +This package adds a version of the annobin plugin for gcc. This version +of the plugin is explicitly built by the same version of gcc that is installed +so that there cannot be any synchronization problems. + %prep %setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 -a 3 %patch0 -p0 -b .hack~ @@ -792,7 +809,7 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .aarch64-tune~ +%patch12 -p0 -b .pr105214~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -1208,6 +1225,26 @@ done) rm -f rpm.doc/changelogs/gcc/ChangeLog.[1-9] find rpm.doc -name \*ChangeLog\* | xargs bzip2 -9 +%if %{build_annobin_plugin} +mkdir annobin-plugin +cd annobin-plugin +tar xf %{_usrsrc}/annobin/latest-annobin.tar.xz +cd annobin* +touch aclocal.m4 configure Makefile.in */configure */config.h.in */Makefile.in +ANNOBIN_FLAGS=../../obj-%{gcc_target_platform}/%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags +ANNOBIN_CFLAGS1="%build_cflags -I %{_builddir}/gcc-%{version}-%{DATE}/gcc" +ANNOBIN_CFLAGS1="$ANNOBIN_CFLAGS1 -I %{_builddir}/gcc-%{version}-%{DATE}/obj-%{gcc_target_platform}/gcc" +ANNOBIN_CFLAGS2="-I %{_builddir}/gcc-%{version}-%{DATE}/include -I %{_builddir}/gcc-%{version}-%{DATE}/libcpp/include" +ANNOBIN_LDFLAGS="%build_ldflags -L%{_builddir}/gcc-%{version}-%{DATE}/obj-%{gcc_target_platform}/%{gcc_target_platform}/libstdc++-v3/src/.libs" +CC="`$ANNOBIN_FLAGS --build-cc`" CXX="`$ANNOBIN_FLAGS --build-cxx`" \ + CFLAGS="$ANNOBIN_CFLAGS1 $ANNOBIN_CFLAGS2 $ANNOBIN_LDFLAGS" \ + CXXFLAGS="$ANNOBIN_CFLAGS1 `$ANNOBIN_FLAGS --build-includes` $ANNOBIN_CFLAGS2 $ANNOBIN_LDFLAGS" \ + ./configure --with-gcc-plugin-dir=%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin \ + --without-annocheck --without-tests --without-docs --disable-rpath --without-debuginfod +make +cd ../.. +%endif + %install rm -rf %{buildroot} mkdir -p %{buildroot} @@ -2010,6 +2047,15 @@ echo gcc-%{version}-%{release}.%{_arch} > $FULLPATH/rpmver ln -s ../../libexec/gcc/%{gcc_target_platform}/%{gcc_major}/liblto_plugin.so \ %{buildroot}%{_libdir}/bfd-plugins/ +%if %{build_annobin_plugin} +mkdir -p $FULLPATH/plugin +rm -f $FULLPATH/plugin/gcc-annobin* +cp -a %{_builddir}/gcc-%{version}-%{DATE}/annobin-plugin/annobin*/gcc-plugin/.libs/annobin.so.0.0.0 \ + $FULLPATH/plugin/gcc-annobin.so.0.0.0 +ln -sf gcc-annobin.so.0.0.0 $FULLPATH/plugin/gcc-annobin.so.0 +ln -sf gcc-annobin.so.0.0.0 $FULLPATH/plugin/gcc-annobin.so +%endif + %check cd obj-%{gcc_target_platform} @@ -2020,6 +2066,7 @@ LC_ALL=C make %{?_smp_mflags} -k check ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST= %else RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector}'" || : %endif +%if !%{build_annobin_plugin} if [ -f %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/annobin.so ]; then # Test whether current annobin plugin won't fail miserably with the newly built gcc. echo -e '#include \nint main () { printf ("Hello, world!\\n"); return 0; }' > annobin-test.c @@ -2050,9 +2097,12 @@ if [ -f %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/annobin.so cat ANNOBINOUT ANNOBINRES[12] >> ANNOBINRES rm -f ANNOBINOUT* ANNOBINRES[12] annobin-test{c,C} fi +%endif echo ====================TESTING========================= ( LC_ALL=C ../contrib/test_summary || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}' +%if !%{build_annobin_plugin} [ -f ANNOBINRES ] && cat ANNOBINRES +%endif echo ====================TESTING END===================== mkdir testlogs-%{_target_platform}-%{version}-%{release} for i in `find . -name \*.log | grep -F testsuite/ | grep -v 'config.log\|acats.*/tests/'`; do @@ -3165,7 +3215,45 @@ end %{_prefix}/%{_lib}/libgomp-plugin-nvptx.so.* %endif +%if %{build_annobin_plugin} +%files plugin-annobin +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/gcc-annobin.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/gcc-annobin.so.0 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/gcc-annobin.so.0.0.0 +%endif + %changelog +* Mon Apr 11 2022 Jakub Jelinek 12.0.1-0.15 +- update from trunk + - PRs analyzer/102208, analyzer/103892, c++/91618, c++/92385, c++/96604, + c++/96645, c++/99479, c++/100370, c++/100608, c++/101051, c++/101677, + c++/101717, c++/101894, c++/103328, c++/103852, c++/104668, + c++/104702, c++/105110, c++/105143, c++/105186, c++/105187, + c++/105191, c/105149, c/105151, d/104740, driver/105096, + fortran/104210, fortran/105138, fortran/105184, ipa/103376, + ipa/104303, ipa/105166, jit/102824, libstdc++/105031, + libstdc++/105128, libstdc++/105146, libstdc++/105153, + libstdc++/105154, middle-end/105140, middle-end/105165, + rtl-optimization/104985, target/101908, target/102024, target/103147, + target/104049, target/104253, target/104409, target/104853, + target/104897, target/104987, target/105002, target/105069, + target/105123, target/105139, target/105144, target/105147, + target/105157, target/105197, testsuite/103196, testsuite/105095, + testsuite/105122, testsuite/105196, tree-optimization/102586, + tree-optimization/103761, tree-optimization/104639, + tree-optimization/104645, tree-optimization/105132, + tree-optimization/105142, tree-optimization/105148, + tree-optimization/105150, tree-optimization/105163, + tree-optimization/105173, tree-optimization/105175, + tree-optimization/105185, tree-optimization/105189, + tree-optimization/105198, tree-optimization/105218 +- build annobin gcc plugin as part of gcc build into gcc-plugin-annobin + subpackage + * Sun Apr 3 2022 Jakub Jelinek 12.0.1-0.14 - update from trunk - revert delayed parse DMI change (PR c++/96645) diff --git a/gcc12-aarch64-tune.patch b/gcc12-aarch64-tune.patch deleted file mode 100644 index fb7a951..0000000 --- a/gcc12-aarch64-tune.patch +++ /dev/null @@ -1,13 +0,0 @@ -2022-04-03 Jakub Jelinek - - * config/aarch64/aarch64-tune.md: Regenerate. - ---- gcc/config/aarch64/aarch64-tune.md 2022-04-01 14:57:41.745622238 +0200 -+++ gcc/config/aarch64/aarch64-tune.md 2022-04-03 12:55:41.667331201 +0200 -@@ -1,5 +1,5 @@ - ;; -*- buffer-read-only: t -*- - ;; Generated automatically by gentune.sh from aarch64-cores.def - (define_attr "tune" -- "cortexa34,cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88p1,thunderxt88,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,ampere1,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,cortexa76ae,cortexa77,cortexa78,cortexa78ae,cortexa78c,cortexa65,cortexa65ae,cortexx1,ares,neoversen1,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,tsv110,thunderx3t110,zeus,neoversev1,neoverse512tvb,saphira,neoversen2,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55,cortexr82,cortexa510,cortexa710,cortexx2,demeter" -+ "cortexa34,cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88p1,thunderxt88,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,ampere1,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,cortexa76ae,cortexa77,cortexa78,cortexa78ae,cortexa78c,cortexa65,cortexa65ae,cortexx1,ares,neoversen1,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,tsv110,thunderx3t110,zeus,neoversev1,neoverse512tvb,saphira,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55,cortexr82,cortexa510,cortexa710,cortexx2,neoversen2,demeter" - (const (symbol_ref "((enum attr_tune) aarch64_tune)"))) diff --git a/gcc12-pr105214.patch b/gcc12-pr105214.patch new file mode 100644 index 0000000..5113fa7 --- /dev/null +++ b/gcc12-pr105214.patch @@ -0,0 +1,38 @@ +2022-04-11 Jakub Jelinek + + PR target/105214 + * config/i386/i386-expand.cc (ix86_emit_i387_log1p): Call + do_pending_stack_adjust. + + * gcc.dg/asan/pr105214.c: New test. + +--- gcc/config/i386/i386-expand.cc.jj 2022-04-03 21:50:36.001635947 +0200 ++++ gcc/config/i386/i386-expand.cc 2022-04-11 15:17:43.943430658 +0200 +@@ -17291,6 +17291,8 @@ void ix86_emit_i387_log1p (rtx op0, rtx + rtx cst, cstln2, cst1; + rtx_insn *insn; + ++ do_pending_stack_adjust (); ++ + cst = const_double_from_real_value + (REAL_VALUE_ATOF ("0.29289321881345247561810596348408353", XFmode), XFmode); + cstln2 = force_reg (XFmode, standard_80387_constant_rtx (4)); /* fldln2 */ +--- gcc/testsuite/gcc.dg/asan/pr105214.c.jj 2022-04-11 15:21:05.467608711 +0200 ++++ gcc/testsuite/gcc.dg/asan/pr105214.c 2022-04-11 15:22:10.559697224 +0200 +@@ -0,0 +1,16 @@ ++/* PR target/105214 */ ++/* { dg-do compile } */ ++/* { dg-skip-if "" { *-*-* } { "*" } { "-O2" } } */ ++/* { dg-options "-Ofast -fnon-call-exceptions -fexceptions -fstack-check=generic -fsanitize=address -fno-finite-math-only -fsignaling-nans -fno-associative-math" } */ ++ ++float f; ++void bar (int *); ++ ++void ++foo (void) ++{ ++ int a[1600], b[1]; ++ f += __builtin_log1pf (f); ++ bar (a); ++ bar (b); ++} diff --git a/sources b/sources index 870a0c7..8380ba0 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.1-20220401.tar.xz) = c32fe72884442d91dbade694515bc7d54cf2194cd3928e9d7168e7b5db0e244b30d8addde26633f936b2a0e17b30d94cdec594d6b834ae4b003f3210fb641f50 +SHA512 (gcc-12.0.1-20220411.tar.xz) = c611c45dfa5c9c367203f6273e24c4ba03bb56a8dc8954e7b26b9fc0de60a2aefe2a2d12098daad827d2c0ad71ba1092b0d7f808eb9e8cf929ad22154176fda0 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 7198391f753717bdc336bf84860c1decf220b524 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 13 Apr 2022 17:52:21 +0200 Subject: [PATCH 107/293] 12.0.1-0.16 --- .gitignore | 1 + gcc.spec | 20 +++++++++++++++----- gcc12-pr105214.patch | 38 -------------------------------------- sources | 2 +- 4 files changed, 17 insertions(+), 44 deletions(-) delete mode 100644 gcc12-pr105214.patch diff --git a/.gitignore b/.gitignore index 6aa35a0..edfa9a2 100644 --- a/.gitignore +++ b/.gitignore @@ -69,3 +69,4 @@ /gcc-12.0.1-20220308.tar.xz /gcc-12.0.1-20220401.tar.xz /gcc-12.0.1-20220411.tar.xz +/gcc-12.0.1-20220413.tar.xz diff --git a/gcc.spec b/gcc.spec index 66e444a..bd43b04 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20220411 -%global gitrev c520f3606c4d0f971a172e17c55b06aec363a417 +%global DATE 20220413 +%global gitrev 33917d2d6edc9112702294db6ab14b580a8d7a97 %global gcc_version 12.0.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to @@ -125,7 +125,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.15%{?dist} +Release: %{gcc_release}.16%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -275,7 +275,6 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch -Patch12: gcc12-pr105214.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -809,7 +808,6 @@ so that there cannot be any synchronization problems. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr105214~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3227,6 +3225,18 @@ end %endif %changelog +* Wed Apr 13 2022 Jakub Jelinek 12.0.1-0.16 +- update from trunk + - PRs c++/97296, c++/98249, c++/100111, c++/103105, c++/104142, c++/104669, + c++/105223, c++/105233, c++/105245, jit/104071, jit/104072, + jit/104073, jit/104293, middle-end/105253, middle-end/105259, + rtl-optimization/105211, target/95325, target/97348, target/101755, + target/102146, target/103623, target/104144, target/104894, + target/105213, target/105214, target/105234, testsuite/105183, + tree-optimization/104912, tree-optimization/105226, + tree-optimization/105232, tree-optimization/105235, + tree-optimization/105250, tree-optimization/105263 + * Mon Apr 11 2022 Jakub Jelinek 12.0.1-0.15 - update from trunk - PRs analyzer/102208, analyzer/103892, c++/91618, c++/92385, c++/96604, diff --git a/gcc12-pr105214.patch b/gcc12-pr105214.patch deleted file mode 100644 index 5113fa7..0000000 --- a/gcc12-pr105214.patch +++ /dev/null @@ -1,38 +0,0 @@ -2022-04-11 Jakub Jelinek - - PR target/105214 - * config/i386/i386-expand.cc (ix86_emit_i387_log1p): Call - do_pending_stack_adjust. - - * gcc.dg/asan/pr105214.c: New test. - ---- gcc/config/i386/i386-expand.cc.jj 2022-04-03 21:50:36.001635947 +0200 -+++ gcc/config/i386/i386-expand.cc 2022-04-11 15:17:43.943430658 +0200 -@@ -17291,6 +17291,8 @@ void ix86_emit_i387_log1p (rtx op0, rtx - rtx cst, cstln2, cst1; - rtx_insn *insn; - -+ do_pending_stack_adjust (); -+ - cst = const_double_from_real_value - (REAL_VALUE_ATOF ("0.29289321881345247561810596348408353", XFmode), XFmode); - cstln2 = force_reg (XFmode, standard_80387_constant_rtx (4)); /* fldln2 */ ---- gcc/testsuite/gcc.dg/asan/pr105214.c.jj 2022-04-11 15:21:05.467608711 +0200 -+++ gcc/testsuite/gcc.dg/asan/pr105214.c 2022-04-11 15:22:10.559697224 +0200 -@@ -0,0 +1,16 @@ -+/* PR target/105214 */ -+/* { dg-do compile } */ -+/* { dg-skip-if "" { *-*-* } { "*" } { "-O2" } } */ -+/* { dg-options "-Ofast -fnon-call-exceptions -fexceptions -fstack-check=generic -fsanitize=address -fno-finite-math-only -fsignaling-nans -fno-associative-math" } */ -+ -+float f; -+void bar (int *); -+ -+void -+foo (void) -+{ -+ int a[1600], b[1]; -+ f += __builtin_log1pf (f); -+ bar (a); -+ bar (b); -+} diff --git a/sources b/sources index 8380ba0..bcf9716 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.1-20220411.tar.xz) = c611c45dfa5c9c367203f6273e24c4ba03bb56a8dc8954e7b26b9fc0de60a2aefe2a2d12098daad827d2c0ad71ba1092b0d7f808eb9e8cf929ad22154176fda0 +SHA512 (gcc-12.0.1-20220413.tar.xz) = 6500348f3f4e22f0ddc6ac332a1e6f64eb2684772c67401ddd98c96aabc1ce665cd088161c5878cfc24defa240f587af962ac38d9cbe94044261239be63dc47a SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From d4fb9f8ed8cd9780656b2d1533f9da2cc4bc155f Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Tue, 19 Apr 2022 18:17:32 +0000 Subject: [PATCH 108/293] Import gcc-fedora-flags test from redhat-rpm-config Once this is committed, the version in redhat-rpm-config will be removed and redhat-rpm-config will use this test. --- tests/fedora-flags/hello.c | 5 +++++ tests/fedora-flags/hello.cpp | 5 +++++ tests/fedora-flags/main.c | 6 ++++++ tests/fedora-flags/main.cpp | 6 ++++++ tests/fedora-flags/main.fmf | 10 ++++++++++ tests/fedora-flags/runtest.sh | 29 +++++++++++++++++++++++++++++ 6 files changed, 61 insertions(+) create mode 100644 tests/fedora-flags/hello.c create mode 100644 tests/fedora-flags/hello.cpp create mode 100644 tests/fedora-flags/main.c create mode 100644 tests/fedora-flags/main.cpp create mode 100644 tests/fedora-flags/main.fmf create mode 100755 tests/fedora-flags/runtest.sh diff --git a/tests/fedora-flags/hello.c b/tests/fedora-flags/hello.c new file mode 100644 index 0000000..51b259b --- /dev/null +++ b/tests/fedora-flags/hello.c @@ -0,0 +1,5 @@ +#include + +void hello() { + printf("Hello World\n"); +} diff --git a/tests/fedora-flags/hello.cpp b/tests/fedora-flags/hello.cpp new file mode 100644 index 0000000..400612b --- /dev/null +++ b/tests/fedora-flags/hello.cpp @@ -0,0 +1,5 @@ +#include + +void hello() { + std::cout << "Hello World\n"; +} diff --git a/tests/fedora-flags/main.c b/tests/fedora-flags/main.c new file mode 100644 index 0000000..1a3455d --- /dev/null +++ b/tests/fedora-flags/main.c @@ -0,0 +1,6 @@ +void hello(); + +int main(int argc, char **argv) { + hello(); + return 0; +} diff --git a/tests/fedora-flags/main.cpp b/tests/fedora-flags/main.cpp new file mode 100644 index 0000000..1a3455d --- /dev/null +++ b/tests/fedora-flags/main.cpp @@ -0,0 +1,6 @@ +void hello(); + +int main(int argc, char **argv) { + hello(); + return 0; +} diff --git a/tests/fedora-flags/main.fmf b/tests/fedora-flags/main.fmf new file mode 100644 index 0000000..43934a7 --- /dev/null +++ b/tests/fedora-flags/main.fmf @@ -0,0 +1,10 @@ +summary: Test compiling with the Fedora C/CXX flags. +description: '' +component: + - gcc +test: ./runtest.sh +require: + - annobin-annocheck + - gcc + - gcc-c++ + - redhat-rpm-config diff --git a/tests/fedora-flags/runtest.sh b/tests/fedora-flags/runtest.sh new file mode 100755 index 0000000..01b656b --- /dev/null +++ b/tests/fedora-flags/runtest.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -ex + +default_cflags=$(rpm -E '%{build_cflags}') +default_cxxflags=$(rpm -E '%{build_cxxflags}') +default_ldflags=$(rpm -E '%{build_ldflags}') + +cflags=$(rpm -D '%toolchain gcc' -E '%{build_cflags}') +cxxflags=$(rpm -D '%toolchain gcc' -E '%{build_cxxflags}') +ldflags=$(rpm -D '%toolchain gcc' -E '%{build_ldflags}') + +test "$default_cflags" = "$cflags" +test "$default_cxxflags" = "$cxxflags" +test "$default_ldflags" = "$ldflags" + +gcc $cflags -o hello.o -c hello.c +annocheck hello.o +gcc $cflags -o main.o -c main.c +gcc $ldflags -o hello main.o hello.o +annocheck hello +./hello | grep "Hello World" + +g++ $cxxflags -o hello-cpp.o -c hello.cpp +annocheck hello-cpp.o +g++ $cxxflags -o main-cpp.o -c main.cpp +g++ $ldflags -o hello-cpp main-cpp.o hello-cpp.o +annocheck hello-cpp +./hello-cpp | grep "Hello World" From 917a939e051b929fe88bbcf4c899f2348c410788 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 29 Apr 2022 16:53:22 +0200 Subject: [PATCH 109/293] 12.0.1-0.17 --- .gitignore | 1 + gcc.spec | 34 +++++++++++++++++++++++++++++++--- sources | 2 +- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index edfa9a2..39a26b2 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,4 @@ /gcc-12.0.1-20220401.tar.xz /gcc-12.0.1-20220411.tar.xz /gcc-12.0.1-20220413.tar.xz +/gcc-12.0.1-20220429.tar.xz diff --git a/gcc.spec b/gcc.spec index bd43b04..3932f21 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20220413 -%global gitrev 33917d2d6edc9112702294db6ab14b580a8d7a97 +%global DATE 20220429 +%global gitrev 07f76ab820568c24917f1667cea80f1178279ac6 %global gcc_version 12.0.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to @@ -125,7 +125,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.16%{?dist} +Release: %{gcc_release}.17%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3225,6 +3225,34 @@ end %endif %changelog +* Fri Apr 29 2022 Jakub Jelinek 12.0.1-0.17 +- update from trunk and releases/gcc-12 branch + - GCC 12.1-rc1 + - PRs analyzer/105252, analyzer/105264, analyzer/105365, analyzer/105366, + c++/65211, c++/82980, c++/86193, c++/90107, c++/97219, c++/100838, + c++/101442, c++/101698, c++/102629, c++/102804, c++/102987, + c++/103868, c++/104051, c++/104624, c++/104646, c++/104996, + c++/105256, c++/105265, c++/105268, c++/105287, c++/105289, + c++/105297, c++/105301, c++/105304, c++/105321, c++/105322, + c++/105353, c++/105386, c++/105398, c++/105425, c++/105426, + debug/105089, debug/105203, fortran/70673, fortran/78054, + fortran/102043, fortran/103662, fortran/104717, fortran/105242, + fortran/105310, fortran/105379, fortran/105381, gcov-profile/105282, + ipa/103818, ipa/105306, libgomp/105358, libstdc++/93602, + libstdc++/99290, libstdc++/102994, libstdc++/104858, + libstdc++/105269, libstdc++/105324, libstdc++/105375, + libstdc++/105417, lto/105364, lto/105399, middle-end/104492, + rtl-optimization/105231, rtl-optimization/105314, + rtl-optimization/105333, sanitizer/105396, target/89125, + target/103197, target/104676, target/105247, target/105257, + target/105271, target/105331, target/105334, target/105338, + target/105339, target/105349, target/105367, testsuite/105266, + tree-optimization/100810, tree-optimization/103941, + tree-optimization/104010, tree-optimization/105219, + tree-optimization/105254, tree-optimization/105276, + tree-optimization/105312, tree-optimization/105368, + tree-optimization/105374 + * Wed Apr 13 2022 Jakub Jelinek 12.0.1-0.16 - update from trunk - PRs c++/97296, c++/98249, c++/100111, c++/103105, c++/104142, c++/104669, diff --git a/sources b/sources index bcf9716..6e51bea 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.1-20220413.tar.xz) = 6500348f3f4e22f0ddc6ac332a1e6f64eb2684772c67401ddd98c96aabc1ce665cd088161c5878cfc24defa240f587af962ac38d9cbe94044261239be63dc47a +SHA512 (gcc-12.0.1-20220429.tar.xz) = ad1543844e40fb0d703bc529f2d2b776a09aadba93f85b0a78296ff050e2e9c710cbbf50bebe37bc26426f7abf2edd0f380de42e1defb1fb5706bd204379c499 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From a1104fdc08585062412f96b2c1a70b76a80612aa Mon Sep 17 00:00:00 2001 From: Stephen Gallagher Date: Thu, 5 May 2022 15:30:32 -0400 Subject: [PATCH 110/293] Fix annobin conditional to build for ELN Signed-off-by: Stephen Gallagher --- gcc.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gcc.spec b/gcc.spec index 3932f21..564a3c3 100644 --- a/gcc.spec +++ b/gcc.spec @@ -117,7 +117,7 @@ %ifarch x86_64 %global multilib_32_arch i686 %endif -%if 0%{?fedora} >= 36 +%if 0%{?fedora} >= 36 || 0%{?rhel} >= 10 %global build_annobin_plugin 1 %else %global build_annobin_plugin 0 @@ -125,7 +125,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.17%{?dist} +Release: %{gcc_release}.18%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3225,6 +3225,9 @@ end %endif %changelog +* Thu May 05 2022 Stephen Gallagher 12.0.1-0.18 +- Fix annobin plugin conditional to build for ELN + * Fri Apr 29 2022 Jakub Jelinek 12.0.1-0.17 - update from trunk and releases/gcc-12 branch - GCC 12.1-rc1 From aa03effdcf2e9aab7f28164afb735efa95a616f7 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 7 May 2022 08:51:49 +0200 Subject: [PATCH 111/293] 12.1.1-1 --- .gitignore | 1 + gcc.spec | 22 +++++++++++++++------- gcc12-libstdc++-docs.patch | 4 ++-- sources | 2 +- update-gcc.sh | 2 +- 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 39a26b2..03956d0 100644 --- a/.gitignore +++ b/.gitignore @@ -71,3 +71,4 @@ /gcc-12.0.1-20220411.tar.xz /gcc-12.0.1-20220413.tar.xz /gcc-12.0.1-20220429.tar.xz +/gcc-12.1.1-20220507.tar.xz diff --git a/gcc.spec b/gcc.spec index 564a3c3..049b7f4 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20220429 -%global gitrev 07f76ab820568c24917f1667cea80f1178279ac6 -%global gcc_version 12.0.1 +%global DATE 20220507 +%global gitrev fa107326a13af9a7d7aa0df28fe364db0f6fb171 +%global gcc_version 12.1.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 0 +%global gcc_release 1 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -125,7 +125,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.18%{?dist} +Release: %{gcc_release}%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3225,8 +3225,16 @@ end %endif %changelog -* Thu May 05 2022 Stephen Gallagher 12.0.1-0.18 -- Fix annobin plugin conditional to build for ELN +* Sat May 7 2022 Jakub Jelinek 12.1.1-1 +- update from releases/gcc-12 branch + - GCC 12.1 release + - PRs c++/105476, libstdc++/103911, libstdc++/105441, libstdc++/105502, + middle-end/105376, middle-end/105461, target/102059, testsuite/105433, + tree-optimization/105394, tree-optimization/105437, + tree-optimization/105484 + +* Thu May 5 2022 Stephen Gallagher 12.0.1-0.18 +- fix annobin plugin conditional to build for ELN * Fri Apr 29 2022 Jakub Jelinek 12.0.1-0.17 - update from trunk and releases/gcc-12 branch diff --git a/gcc12-libstdc++-docs.patch b/gcc12-libstdc++-docs.patch index cdcd435..5a27a5d 100644 --- a/gcc12-libstdc++-docs.patch +++ b/gcc12-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 12.0.1 ++ Release 12.1.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 12.0.1 release, ++ for the 12.1.1 release, + online for each GCC release and diff --git a/sources b/sources index 6e51bea..3588ec2 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.0.1-20220429.tar.xz) = ad1543844e40fb0d703bc529f2d2b776a09aadba93f85b0a78296ff050e2e9c710cbbf50bebe37bc26426f7abf2edd0f380de42e1defb1fb5706bd204379c499 +SHA512 (gcc-12.1.1-20220507.tar.xz) = 6c978a58820ad24b2aeb03d579782de1b0e76ade509b6f2e38ebd773565d1b9afd968c99b26db399416e7aa8bdd068631bc3d3b7eff3d41e734ca3764337b8e2 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 diff --git a/update-gcc.sh b/update-gcc.sh index b9e8330..5b0572c 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -3,5 +3,5 @@ git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 d=`date --iso | sed 's/-//g'` -git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-12.0.1-$d/ $1 | xz -9e > gcc-12.0.1-$d.tar.xz +git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-12.1.1-$d/ $1 | xz -9e > gcc-12.1.1-$d.tar.xz rm -rf gcc-dir.tmp From 4910c83f42e04cf7c04621a4ca427fa555974bcb Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 28 Jun 2022 18:39:38 +0200 Subject: [PATCH 112/293] 12.1.1-2 --- .gitignore | 1 + gcc.spec | 30 +++++++++++++++++++++++++++--- sources | 2 +- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 03956d0..2111c26 100644 --- a/.gitignore +++ b/.gitignore @@ -72,3 +72,4 @@ /gcc-12.0.1-20220413.tar.xz /gcc-12.0.1-20220429.tar.xz /gcc-12.1.1-20220507.tar.xz +/gcc-12.1.1-20220628.tar.xz diff --git a/gcc.spec b/gcc.spec index 049b7f4..b429d62 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20220507 -%global gitrev fa107326a13af9a7d7aa0df28fe364db0f6fb171 +%global DATE 20220628 +%global gitrev 874cb9452c56f1c3b3a7b5bfed93a262504b9856 %global gcc_version 12.1.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 1 +%global gcc_release 2 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -3225,6 +3225,30 @@ end %endif %changelog +* Tue Jun 28 2022 Jakub Jelinek 12.1.1-2 +- update from releases/gcc-12 branch + - PRs c++/49387, c++/102307, c++/102651, c++/104470, c++/105491, c++/105589, + c++/105623, c++/105652, c++/105655, c++/105725, c++/105734, + c++/105756, c++/105761, c++/105779, c++/105795, c++/105852, + c++/105871, c++/105885, c++/105908, c++/105925, c++/105931, + c++/105964, c++/106001, c/105635, d/105544, fortran/105230, + gcov-profile/105535, ipa/100413, ipa/105600, ipa/105639, ipa/105739, + libgomp/105745, libgomp/106045, libstdc++/104731, libstdc++/105284, + libstdc++/105671, libstdc++/105681, middle-end/105537, + middle-end/105604, middle-end/105711, middle-end/105951, + middle-end/105998, middle-end/106030, other/105527, + preprocessor/105732, rtl-optimization/105455, rtl-optimization/105559, + rtl-optimization/105577, sanitizer/105714, sanitizer/105729, + target/101891, target/104871, target/105162, target/105209, + target/105292, target/105472, target/105556, target/105599, + target/105854, target/105879, target/105953, target/105960, + target/105970, target/105981, target/106096, tree-optimization/103116, + tree-optimization/105431, tree-optimization/105458, + tree-optimization/105528, tree-optimization/105562, + tree-optimization/105618, tree-optimization/105726, + tree-optimization/105736, tree-optimization/105786, + tree-optimization/105940 + * Sat May 7 2022 Jakub Jelinek 12.1.1-1 - update from releases/gcc-12 branch - GCC 12.1 release diff --git a/sources b/sources index 3588ec2..1e697bc 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.1.1-20220507.tar.xz) = 6c978a58820ad24b2aeb03d579782de1b0e76ade509b6f2e38ebd773565d1b9afd968c99b26db399416e7aa8bdd068631bc3d3b7eff3d41e734ca3764337b8e2 +SHA512 (gcc-12.1.1-20220628.tar.xz) = e047dd9500dccbdc1fb8f26e5fc1f1b03eaf63b5c04344f9b7a23e1467a397b1eabcb49e344be06b6881505be584c85e123ce294b5f5605fcb5a6740dabba383 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From 200ab99d3079a784d0bee7bcaf37fb566eddfe8d Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 28 Jun 2022 19:03:14 +0200 Subject: [PATCH 113/293] 12.1.1-2 --- gcc.spec | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/gcc.spec b/gcc.spec index b429d62..910f7fe 100644 --- a/gcc.spec +++ b/gcc.spec @@ -62,12 +62,12 @@ %else %global build_libasan 0 %endif -%ifarch x86_64 ppc64 ppc64le aarch64 +%ifarch x86_64 ppc64 ppc64le aarch64 s390x %global build_libtsan 1 %else %global build_libtsan 0 %endif -%ifarch x86_64 ppc64 ppc64le aarch64 +%ifarch x86_64 ppc64 ppc64le aarch64 s390x %global build_liblsan 1 %else %global build_liblsan 0 @@ -278,14 +278,8 @@ Patch11: gcc12-d-shared-libphobos.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch -Patch102: gcc12-fortran-fdec-ichar.patch -Patch103: gcc12-fortran-fdec-non-integer-index.patch -Patch104: gcc12-fortran-fdec-old-init.patch -Patch105: gcc12-fortran-fdec-override-kind.patch -Patch106: gcc12-fortran-fdec-non-logical-if.patch -Patch107: gcc12-fortran-fdec-promotion.patch -Patch108: gcc12-fortran-fdec-sequence.patch -Patch109: gcc12-fortran-fdec-add-missing-indexes.patch +Patch102: gcc12-fortran-fdec-override-kind.patch +Patch103: gcc12-fortran-fdec-non-logical-if.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -812,14 +806,8 @@ so that there cannot be any synchronization problems. %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ %patch101 -p1 -b .fortran-flogical-as-integer~ -%patch102 -p1 -b .fortran-fdec-ichar~ -%patch103 -p1 -b .fortran-fdec-non-integer-index~ -%patch104 -p1 -b .fortran-fdec-old-init~ -%patch105 -p1 -b .fortran-fdec-override-kind~ -%patch106 -p1 -b .fortran-fdec-non-logical-if~ -%patch107 -p1 -b .fortran-fdec-promotion~ -%patch108 -p1 -b .fortran-fdec-sequence~ -%patch109 -p1 -b .fortran-fdec-add-missing-indexes~ +%patch102 -p1 -b .fortran-fdec-override-kind~ +%patch103 -p1 -b .fortran-fdec-non-logical-if~ %endif %ifarch %{arm} @@ -3248,6 +3236,8 @@ end tree-optimization/105618, tree-optimization/105726, tree-optimization/105736, tree-optimization/105786, tree-optimization/105940 +- enable tsan and lsan on s390x (#2101610) +- trim RHEL fortran patches * Sat May 7 2022 Jakub Jelinek 12.1.1-1 - update from releases/gcc-12 branch From b2315f360e31631b87e283ddfb11a9b4365e3117 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 28 Jun 2022 21:07:05 +0200 Subject: [PATCH 114/293] 12.1.1-2 --- gcc.spec | 3 +++ gcc12-pr105551.patch | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 gcc12-pr105551.patch diff --git a/gcc.spec b/gcc.spec index 910f7fe..1bc47d5 100644 --- a/gcc.spec +++ b/gcc.spec @@ -275,6 +275,7 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch +Patch12: gcc12-pr105551.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -802,6 +803,7 @@ so that there cannot be any synchronization problems. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ +%patch12 -p0 -b .pr105551~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3238,6 +3240,7 @@ end tree-optimization/105940 - enable tsan and lsan on s390x (#2101610) - trim RHEL fortran patches +- fix nvptx build (PRs bootstrap/105551, target/105938) * Sat May 7 2022 Jakub Jelinek 12.1.1-1 - update from releases/gcc-12 branch diff --git a/gcc12-pr105551.patch b/gcc12-pr105551.patch new file mode 100644 index 0000000..ce8be26 --- /dev/null +++ b/gcc12-pr105551.patch @@ -0,0 +1,28 @@ +2022-05-11 Richard Biener + + PR bootstrap/105551 + * opts.cc (finish_options): Also disable var-tracking if + !DWARF2_DEBUGGING_INFO. + +--- gcc/opts.cc ++++ gcc/opts.cc +@@ -1334,11 +1334,15 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set, + || opts->x_flag_selective_scheduling2)); + + /* We know which debug output will be used so we can set flag_var_tracking +- and flag_var_tracking_uninit if the user has not specified them. Note +- we have not yet initialized debug_hooks so we might uselessly run +- var-tracking on targets without var_location debug hook support. */ ++ and flag_var_tracking_uninit if the user has not specified them. */ + if (opts->x_debug_info_level < DINFO_LEVEL_NORMAL +- || !dwarf_debuginfo_p (opts)) ++ || !dwarf_debuginfo_p (opts) ++ /* We have not yet initialized debug hooks so match that to check ++ whether we're only doing DWARF2_LINENO_DEBUGGING_INFO. */ ++#ifndef DWARF2_DEBUGGING_INFO ++ || true ++#endif ++ ) + { + if ((opts_set->x_flag_var_tracking && opts->x_flag_var_tracking == 1) + || (opts_set->x_flag_var_tracking_uninit From 245908f188c1f1e024c8fe91120555fabeafd018 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 30 Jun 2022 10:33:33 +0200 Subject: [PATCH 115/293] 12.1.1-3 --- gcc.spec | 9 +++++++-- gcc12-libtsan-s390x.patch | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 gcc12-libtsan-s390x.patch diff --git a/gcc.spec b/gcc.spec index 1bc47d5..0d2e0db 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20220628 +%global DATE 20220630 %global gitrev 874cb9452c56f1c3b3a7b5bfed93a262504b9856 %global gcc_version 12.1.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 2 +%global gcc_release 3 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -276,6 +276,7 @@ Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch Patch12: gcc12-pr105551.patch +Patch13: gcc12-libtsan-s390x.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -804,6 +805,7 @@ so that there cannot be any synchronization problems. %endif %patch11 -p0 -b .d-shared-libphobos~ %patch12 -p0 -b .pr105551~ +%patch13 -p0 -b .libtsan-s390x~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3215,6 +3217,9 @@ end %endif %changelog +* Thu Jun 30 2022 Jakub Jelinek 12.1.1-3 +- fix up libtsan on s390x + * Tue Jun 28 2022 Jakub Jelinek 12.1.1-2 - update from releases/gcc-12 branch - PRs c++/49387, c++/102307, c++/102651, c++/104470, c++/105491, c++/105589, diff --git a/gcc12-libtsan-s390x.patch b/gcc12-libtsan-s390x.patch new file mode 100644 index 0000000..4241d43 --- /dev/null +++ b/gcc12-libtsan-s390x.patch @@ -0,0 +1,17 @@ +commit r12-8527-g7811663964aa7e31c3939b859bbfa2e16919639f +Author: Martin Liska +Date: Wed Jun 29 15:28:07 2022 +0200 + + libsanitizer: cherry-pick 791e0d1bc85d + + 791e0d1bc85d: [compiler-rt] Add NO_EXEC_STACK_DIRECTIVE on s390x + (cherry picked from commit aa87b7541b4c11f59c521154513f844ea6b5c977) + +--- libsanitizer/tsan/tsan_rtl_s390x.S ++++ libsanitizer/tsan/tsan_rtl_s390x.S +@@ -45,3 +45,5 @@ intercept setjmp, _ZN14__interception11real_setjmpE + intercept _setjmp, _ZN14__interception12real__setjmpE + intercept sigsetjmp, _ZN14__interception14real_sigsetjmpE + intercept __sigsetjmp, _ZN14__interception16real___sigsetjmpE ++ ++NO_EXEC_STACK_DIRECTIVE From c75889d28c552bf69d6cffa171500c845218e6aa Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 30 Jun 2022 10:37:48 +0200 Subject: [PATCH 116/293] 12.1.1-3 --- gcc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 0d2e0db..0de7aa2 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,4 +1,4 @@ -%global DATE 20220630 +%global DATE 20220628 %global gitrev 874cb9452c56f1c3b3a7b5bfed93a262504b9856 %global gcc_version 12.1.1 %global gcc_major 12 From 91b35405493f90d5d176b3e237e2f3e1c3ff4746 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 4 Jul 2022 15:37:15 +0200 Subject: [PATCH 117/293] Fix up RHEL/ELN Fortran patches. --- gcc12-fortran-fdec-add-missing-indexes.patch | 181 -- gcc12-fortran-fdec-ichar.patch | 78 - gcc12-fortran-fdec-non-integer-index.patch | 158 -- gcc12-fortran-fdec-old-init.patch | 185 -- gcc12-fortran-fdec-override-kind.patch | 18 +- gcc12-fortran-fdec-promotion.patch | 2093 ------------------ gcc12-fortran-fdec-sequence.patch | 262 --- 7 files changed, 9 insertions(+), 2966 deletions(-) delete mode 100644 gcc12-fortran-fdec-add-missing-indexes.patch delete mode 100644 gcc12-fortran-fdec-ichar.patch delete mode 100644 gcc12-fortran-fdec-non-integer-index.patch delete mode 100644 gcc12-fortran-fdec-old-init.patch delete mode 100644 gcc12-fortran-fdec-promotion.patch delete mode 100644 gcc12-fortran-fdec-sequence.patch diff --git a/gcc12-fortran-fdec-add-missing-indexes.patch b/gcc12-fortran-fdec-add-missing-indexes.patch deleted file mode 100644 index 529868f..0000000 --- a/gcc12-fortran-fdec-add-missing-indexes.patch +++ /dev/null @@ -1,181 +0,0 @@ -From 7001d522d0273658d9e1fb12ca104d56bfcae34d Mon Sep 17 00:00:00 2001 -From: Mark Eggleston -Date: Fri, 22 Jan 2021 15:06:08 +0000 -Subject: [PATCH 10/10] Fill in missing array dimensions using the lower bound - -Use -fdec-add-missing-indexes to enable feature. Also enabled by fdec. ---- - gcc/fortran/lang.opt | 8 ++++++++ - gcc/fortran/options.cc | 1 + - gcc/fortran/resolve.cc | 24 ++++++++++++++++++++++++ - gcc/testsuite/gfortran.dg/array_6.f90 | 23 +++++++++++++++++++++++ - gcc/testsuite/gfortran.dg/array_7.f90 | 23 +++++++++++++++++++++++ - gcc/testsuite/gfortran.dg/array_8.f90 | 23 +++++++++++++++++++++++ - 6 files changed, 102 insertions(+) - create mode 100644 gcc/testsuite/gfortran.dg/array_6.f90 - create mode 100644 gcc/testsuite/gfortran.dg/array_7.f90 - create mode 100644 gcc/testsuite/gfortran.dg/array_8.f90 - -diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt -index 019c798cf09..f27de88ea3f 100644 ---- a/gcc/fortran/lang.opt -+++ b/gcc/fortran/lang.opt -@@ -281,6 +281,10 @@ Wmissing-include-dirs - Fortran - ; Documented in C/C++ - -+Wmissing-index -+Fortran Var(warn_missing_index) Warning LangEnabledBy(Fortran,Wall) -+Warn that the lower bound of a missing index will be used. -+ - Wuse-without-only - Fortran Var(warn_use_without_only) Warning - Warn about USE statements that have no ONLY qualifier. -@@ -460,6 +464,10 @@ fdec - Fortran Var(flag_dec) - Enable all DEC language extensions. - -+fdec-add-missing-indexes -+Fortran Var(flag_dec_add_missing_indexes) -+Enable the addition of missing indexes using their lower bounds. -+ - fdec-blank-format-item - Fortran Var(flag_dec_blank_format_item) - Enable the use of blank format items in format strings. -diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc -index 050f56fdc25..c3b2822685d 100644 ---- a/gcc/fortran/options.cc -+++ b/gcc/fortran/options.cc -@@ -84,6 +84,7 @@ set_dec_flags (int value) - SET_BITFLAG (flag_dec_non_logical_if, value, value); - SET_BITFLAG (flag_dec_promotion, value, value); - SET_BITFLAG (flag_dec_sequence, value, value); -+ SET_BITFLAG (flag_dec_add_missing_indexes, value, value); - } - - /* Finalize DEC flags. */ -diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc -index fe7d0cc5944..0efeedab46e 100644 ---- a/gcc/fortran/resolve.cc -+++ b/gcc/fortran/resolve.cc -@@ -4806,6 +4806,30 @@ compare_spec_to_ref (gfc_array_ref *ar) - if (ar->type == AR_FULL) - return true; - -+ if (flag_dec_add_missing_indexes && as->rank > ar->dimen) -+ { -+ /* Add in the missing dimensions, assuming they are the lower bound -+ of that dimension if not specified. */ -+ int j; -+ if (warn_missing_index) -+ { -+ gfc_warning (OPT_Wmissing_index, "Using the lower bound for " -+ "unspecified dimensions in array reference at %L", -+ &ar->where); -+ } -+ /* Other parts of the code iterate ar->start and ar->end from 0 to -+ ar->dimen, so it is safe to assume slots from ar->dimen upwards -+ are unused (i.e. there are no gaps; the specified indexes are -+ contiguous and start at zero. */ -+ for(j = ar->dimen; j <= as->rank; j++) -+ { -+ ar->start[j] = gfc_copy_expr (as->lower[j]); -+ ar->end[j] = gfc_copy_expr (as->lower[j]); -+ ar->dimen_type[j] = DIMEN_ELEMENT; -+ } -+ ar->dimen = as->rank; -+ } -+ - if (as->rank != ar->dimen) - { - gfc_error ("Rank mismatch in array reference at %L (%d/%d)", -diff --git a/gcc/testsuite/gfortran.dg/array_6.f90 b/gcc/testsuite/gfortran.dg/array_6.f90 -new file mode 100644 -index 00000000000..5c26e18ab3e ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/array_6.f90 -@@ -0,0 +1,23 @@ -+! { dg-do run } -+! { dg-options "-fdec -Wmissing-index" }! -+! Checks that under-specified arrays (referencing arrays with fewer -+! dimensions than the array spec) generates a warning. -+! -+! Contributed by Jim MacArthur -+! Updated by Mark Eggleston -+! -+ -+program under_specified_array -+ integer chessboard(8,8) -+ integer chessboard3d(8,8,3:5) -+ chessboard(3,1) = 5 -+ chessboard(3,2) = 55 -+ chessboard3d(4,1,3) = 6 -+ chessboard3d(4,1,4) = 66 -+ chessboard3d(4,4,3) = 7 -+ chessboard3d(4,4,4) = 77 -+ -+ if (chessboard(3).ne.5) stop 1 ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" } -+ if (chessboard3d(4).ne.6) stop 2 ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" } -+ if (chessboard3d(4,4).ne.7) stop 3 ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" } -+end program -diff --git a/gcc/testsuite/gfortran.dg/array_7.f90 b/gcc/testsuite/gfortran.dg/array_7.f90 -new file mode 100644 -index 00000000000..5588a5bd02d ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/array_7.f90 -@@ -0,0 +1,23 @@ -+! { dg-do run } -+! { dg-options "-fdec-add-missing-indexes -Wmissing-index" }! -+! Checks that under-specified arrays (referencing arrays with fewer -+! dimensions than the array spec) generates a warning. -+! -+! Contributed by Jim MacArthur -+! Updated by Mark Eggleston -+! -+ -+program under_specified_array -+ integer chessboard(8,8) -+ integer chessboard3d(8,8,3:5) -+ chessboard(3,1) = 5 -+ chessboard(3,2) = 55 -+ chessboard3d(4,1,3) = 6 -+ chessboard3d(4,1,4) = 66 -+ chessboard3d(4,4,3) = 7 -+ chessboard3d(4,4,4) = 77 -+ -+ if (chessboard(3).ne.5) stop 1 ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" } -+ if (chessboard3d(4).ne.6) stop 2 ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" } -+ if (chessboard3d(4,4).ne.7) stop 3 ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" } -+end program -diff --git a/gcc/testsuite/gfortran.dg/array_8.f90 b/gcc/testsuite/gfortran.dg/array_8.f90 -new file mode 100644 -index 00000000000..f0d2ef5e37d ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/array_8.f90 -@@ -0,0 +1,23 @@ -+! { dg-do compile } -+! { dg-options "-fdec -fno-dec-add-missing-indexes" }! -+! Checks that under-specified arrays (referencing arrays with fewer -+! dimensions than the array spec) generates a warning. -+! -+! Contributed by Jim MacArthur -+! Updated by Mark Eggleston -+! -+ -+program under_specified_array -+ integer chessboard(8,8) -+ integer chessboard3d(8,8,3:5) -+ chessboard(3,1) = 5 -+ chessboard(3,2) = 55 -+ chessboard3d(4,1,3) = 6 -+ chessboard3d(4,1,4) = 66 -+ chessboard3d(4,4,3) = 7 -+ chessboard3d(4,4,4) = 77 -+ -+ if (chessboard(3).ne.5) stop 1 ! { dg-error "Rank mismatch" } -+ if (chessboard3d(4).ne.6) stop 2 ! { dg-error "Rank mismatch" } -+ if (chessboard3d(4,4).ne.7) stop 3 ! { dg-error "Rank mismatch" } -+end program --- -2.27.0 - diff --git a/gcc12-fortran-fdec-ichar.patch b/gcc12-fortran-fdec-ichar.patch deleted file mode 100644 index 900b054..0000000 --- a/gcc12-fortran-fdec-ichar.patch +++ /dev/null @@ -1,78 +0,0 @@ -From f883ac209b0feea860354cb4ef7ff06dc8063fab Mon Sep 17 00:00:00 2001 -From: Mark Eggleston -Date: Fri, 22 Jan 2021 12:53:35 +0000 -Subject: [PATCH 03/10] Allow more than one character as argument to ICHAR - -Use -fdec to enable. ---- - gcc/fortran/check.cc | 2 +- - gcc/fortran/simplify.cc | 4 ++-- - .../gfortran.dg/dec_ichar_with_string_1.f | 21 +++++++++++++++++++ - 3 files changed, 24 insertions(+), 3 deletions(-) - create mode 100644 gcc/testsuite/gfortran.dg/dec_ichar_with_string_1.f - -diff --git a/gcc/fortran/check.cc b/gcc/fortran/check.cc -index 82db8e4e1b2..623c1cc470e 100644 ---- a/gcc/fortran/check.cc -+++ b/gcc/fortran/check.cc -@@ -3157,7 +3157,7 @@ gfc_check_ichar_iachar (gfc_expr *c, gfc_expr *kind) - else - return true; - -- if (i != 1) -+ if (i != 1 && !flag_dec) - { - gfc_error ("Argument of %s at %L must be of length one", - gfc_current_intrinsic, &c->where); -diff --git a/gcc/fortran/simplify.cc b/gcc/fortran/simplify.cc -index 23317a2e2d9..9900572424f 100644 ---- a/gcc/fortran/simplify.cc -+++ b/gcc/fortran/simplify.cc -@@ -3261,7 +3261,7 @@ gfc_simplify_iachar (gfc_expr *e, gfc_expr *kind) - if (e->expr_type != EXPR_CONSTANT) - return NULL; - -- if (e->value.character.length != 1) -+ if (e->value.character.length != 1 && !flag_dec) - { - gfc_error ("Argument of IACHAR at %L must be of length one", &e->where); - return &gfc_bad_expr; -@@ -3459,7 +3459,7 @@ gfc_simplify_ichar (gfc_expr *e, gfc_expr *kind) - if (e->expr_type != EXPR_CONSTANT) - return NULL; - -- if (e->value.character.length != 1) -+ if (e->value.character.length != 1 && !flag_dec) - { - gfc_error ("Argument of ICHAR at %L must be of length one", &e->where); - return &gfc_bad_expr; -diff --git a/gcc/testsuite/gfortran.dg/dec_ichar_with_string_1.f b/gcc/testsuite/gfortran.dg/dec_ichar_with_string_1.f -new file mode 100644 -index 00000000000..85efccecc0f ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_ichar_with_string_1.f -@@ -0,0 +1,21 @@ -+! { dg-do run } -+! { dg-options "-fdec" } -+! -+! Test ICHAR and IACHAR with more than one character as argument -+! -+! Test case contributed by Jim MacArthur -+! Modified by Mark Eggleston -+! -+ PROGRAM ichar_more_than_one_character -+ CHARACTER*4 st/'Test'/ -+ INTEGER i -+ -+ i = ICHAR(st) -+ if (i.NE.84) STOP 1 -+ i = IACHAR(st) -+ if (i.NE.84) STOP 2 -+ i = ICHAR('Test') -+ if (i.NE.84) STOP 3 -+ i = IACHAR('Test') -+ if (i.NE.84) STOP 4 -+ END --- -2.27.0 - diff --git a/gcc12-fortran-fdec-non-integer-index.patch b/gcc12-fortran-fdec-non-integer-index.patch deleted file mode 100644 index 2c168fe..0000000 --- a/gcc12-fortran-fdec-non-integer-index.patch +++ /dev/null @@ -1,158 +0,0 @@ -From 67aef262311d6a746786ee0f59748ccaa7e1e711 Mon Sep 17 00:00:00 2001 -From: Mark Eggleston -Date: Fri, 22 Jan 2021 13:09:54 +0000 -Subject: [PATCH 04/10] Allow non-integer substring indexes - -Use -fdec-non-integer-index compiler flag to enable. Also enabled by -fdec. ---- - gcc/fortran/lang.opt | 4 ++++ - gcc/fortran/options.cc | 1 + - gcc/fortran/resolve.cc | 20 +++++++++++++++++++ - .../dec_not_integer_substring_indexes_1.f | 18 +++++++++++++++++ - .../dec_not_integer_substring_indexes_2.f | 18 +++++++++++++++++ - .../dec_not_integer_substring_indexes_3.f | 18 +++++++++++++++++ - 6 files changed, 79 insertions(+) - create mode 100644 gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_1.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_2.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_3.f - -diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt -index c4da248f07c..d527c106bd6 100644 ---- a/gcc/fortran/lang.opt -+++ b/gcc/fortran/lang.opt -@@ -489,6 +489,10 @@ fdec-math - Fortran Var(flag_dec_math) - Enable legacy math intrinsics for compatibility. - -+fdec-non-integer-index -+Fortran Var(flag_dec_non_integer_index) -+Enable support for non-integer substring indexes. -+ - fdec-structure - Fortran Var(flag_dec_structure) - Enable support for DEC STRUCTURE/RECORD. -diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc -index f19ba87f8a0..9a042f64881 100644 ---- a/gcc/fortran/options.cc -+++ b/gcc/fortran/options.cc -@@ -78,6 +78,7 @@ set_dec_flags (int value) - SET_BITFLAG (flag_dec_blank_format_item, value, value); - SET_BITFLAG (flag_dec_char_conversions, value, value); - SET_BITFLAG (flag_dec_duplicates, value, value); -+ SET_BITFLAG (flag_dec_non_integer_index, value, value); - } - - /* Finalize DEC flags. */ -diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc -index 4b90cb59902..bc0df0fdb99 100644 ---- a/gcc/fortran/resolve.cc -+++ b/gcc/fortran/resolve.cc -@@ -5131,6 +5131,16 @@ gfc_resolve_substring (gfc_ref *ref, bool *equal_length) - if (!gfc_resolve_expr (ref->u.ss.start)) - return false; - -+ /* In legacy mode, allow non-integer string indexes by converting */ -+ if (flag_dec_non_integer_index && ref->u.ss.start->ts.type != BT_INTEGER -+ && gfc_numeric_ts (&ref->u.ss.start->ts)) -+ { -+ gfc_typespec t; -+ t.type = BT_INTEGER; -+ t.kind = ref->u.ss.start->ts.kind; -+ gfc_convert_type_warn (ref->u.ss.start, &t, 2, 1); -+ } -+ - if (ref->u.ss.start->ts.type != BT_INTEGER) - { - gfc_error ("Substring start index at %L must be of type INTEGER", -@@ -5160,6 +5170,16 @@ gfc_resolve_substring (gfc_ref *ref, bool *equal_length) - if (!gfc_resolve_expr (ref->u.ss.end)) - return false; - -+ /* Non-integer string index endings, as for start */ -+ if (flag_dec_non_integer_index && ref->u.ss.end->ts.type != BT_INTEGER -+ && gfc_numeric_ts (&ref->u.ss.end->ts)) -+ { -+ gfc_typespec t; -+ t.type = BT_INTEGER; -+ t.kind = ref->u.ss.end->ts.kind; -+ gfc_convert_type_warn (ref->u.ss.end, &t, 2, 1); -+ } -+ - if (ref->u.ss.end->ts.type != BT_INTEGER) - { - gfc_error ("Substring end index at %L must be of type INTEGER", -diff --git a/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_1.f b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_1.f -new file mode 100644 -index 00000000000..0be28abaa4b ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_1.f -@@ -0,0 +1,18 @@ -+! { dg-do run } -+! { dg-options "-fdec" } -+! -+! Test not integer substring indexes -+! -+! Test case contributed by Mark Eggleston -+! -+ PROGRAM not_integer_substring_indexes -+ CHARACTER*5 st/'Tests'/ -+ REAL ir/1.0/ -+ REAL ir2/4.0/ -+ -+ if (st(ir:4).ne.'Test') stop 1 -+ if (st(1:ir2).ne.'Test') stop 2 -+ if (st(1.0:4).ne.'Test') stop 3 -+ if (st(1:4.0).ne.'Test') stop 4 -+ if (st(2.5:4).ne.'est') stop 5 -+ END -diff --git a/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_2.f b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_2.f -new file mode 100644 -index 00000000000..3cf05296d0c ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_2.f -@@ -0,0 +1,18 @@ -+! { dg-do run } -+! { dg-options "-fdec-non-integer-index" } -+! -+! Test not integer substring indexes -+! -+! Test case contributed by Mark Eggleston -+! -+ PROGRAM not_integer_substring_indexes -+ CHARACTER*5 st/'Tests'/ -+ REAL ir/1.0/ -+ REAL ir2/4.0/ -+ -+ if (st(ir:4).ne.'Test') stop 1 -+ if (st(1:ir2).ne.'Test') stop 2 -+ if (st(1.0:4).ne.'Test') stop 3 -+ if (st(1:4.0).ne.'Test') stop 4 -+ if (st(2.5:4).ne.'est') stop 5 -+ END -diff --git a/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_3.f b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_3.f -new file mode 100644 -index 00000000000..703de995897 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_3.f -@@ -0,0 +1,18 @@ -+! { dg-do compile } -+! { dg-options "-fdec -fno-dec-non-integer-index" } -+! -+! Test not integer substring indexes -+! -+! Test case contributed by Mark Eggleston -+! -+ PROGRAM not_integer_substring_indexes -+ CHARACTER*5 st/'Tests'/ -+ REAL ir/1.0/ -+ REAL ir2/4.0/ -+ -+ if (st(ir:4).ne.'Test') stop 1 ! { dg-error "Substring start index" } -+ if (st(1:ir2).ne.'Test') stop 2 ! { dg-error "Substring end index" } -+ if (st(1.0:4).ne.'Test') stop 3 ! { dg-error "Substring start index" } -+ if (st(1:4.0).ne.'Test') stop 4 ! { dg-error "Substring end index" } -+ if (st(2.5:4).ne.'est') stop 5 ! { dg-error "Substring start index" } -+ END --- -2.27.0 - diff --git a/gcc12-fortran-fdec-old-init.patch b/gcc12-fortran-fdec-old-init.patch deleted file mode 100644 index d5661c8..0000000 --- a/gcc12-fortran-fdec-old-init.patch +++ /dev/null @@ -1,185 +0,0 @@ -From 8bcc0f85ed1718c0dd9033ad4a34df181aabaffe Mon Sep 17 00:00:00 2001 -From: Mark Eggleston -Date: Fri, 22 Jan 2021 13:11:06 +0000 -Subject: [PATCH 05/10] Allow old-style initializers in derived types - -This allows simple declarations in derived types and structures, such as: - LOGICAL*1 NIL /0/ -Only single value expressions are allowed at the moment. - -Use -fdec-old-init to enable. Also enabled by -fdec. ---- - gcc/fortran/decl.cc | 27 +++++++++++++++---- - gcc/fortran/lang.opt | 4 +++ - gcc/fortran/options.cc | 1 + - ...ec_derived_types_initialised_old_style_1.f | 25 +++++++++++++++++ - ...ec_derived_types_initialised_old_style_2.f | 25 +++++++++++++++++ - ...ec_derived_types_initialised_old_style_3.f | 26 ++++++++++++++++++ - 6 files changed, 103 insertions(+), 5 deletions(-) - create mode 100644 gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_1.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_2.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_3.f - -diff --git a/gcc/fortran/decl.cc b/gcc/fortran/decl.cc -index 723915822f3..5c8c1b7981b 100644 ---- a/gcc/fortran/decl.cc -+++ b/gcc/fortran/decl.cc -@@ -2827,12 +2827,29 @@ variable_decl (int elem) - but not components of derived types. */ - else if (gfc_current_state () == COMP_DERIVED) - { -- gfc_error ("Invalid old style initialization for derived type " -- "component at %C"); -- m = MATCH_ERROR; -- goto cleanup; -+ if (flag_dec_old_init) -+ { -+ /* Attempt to match an old-style initializer which is a simple -+ integer or character expression; this will not work with -+ multiple values. */ -+ m = gfc_match_init_expr (&initializer); -+ if (m == MATCH_ERROR) -+ goto cleanup; -+ else if (m == MATCH_YES) -+ { -+ m = gfc_match ("/"); -+ if (m != MATCH_YES) -+ goto cleanup; -+ } -+ } -+ else -+ { -+ gfc_error ("Invalid old style initialization for derived type " -+ "component at %C"); -+ m = MATCH_ERROR; -+ goto cleanup; -+ } - } -- - /* For structure components, read the initializer as a special - expression and let the rest of this function apply the initializer - as usual. */ -diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt -index d527c106bd6..25cc948699b 100644 ---- a/gcc/fortran/lang.opt -+++ b/gcc/fortran/lang.opt -@@ -493,6 +493,10 @@ fdec-non-integer-index - Fortran Var(flag_dec_non_integer_index) - Enable support for non-integer substring indexes. - -+fdec-old-init -+Fortran Var(flag_dec_old_init) -+Enable support for old style initializers in derived types. -+ - fdec-structure - Fortran Var(flag_dec_structure) - Enable support for DEC STRUCTURE/RECORD. -diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc -index 9a042f64881..d6bd36c3a8a 100644 ---- a/gcc/fortran/options.cc -+++ b/gcc/fortran/options.cc -@@ -79,6 +79,7 @@ set_dec_flags (int value) - SET_BITFLAG (flag_dec_char_conversions, value, value); - SET_BITFLAG (flag_dec_duplicates, value, value); - SET_BITFLAG (flag_dec_non_integer_index, value, value); -+ SET_BITFLAG (flag_dec_old_init, value, value); - } - - /* Finalize DEC flags. */ -diff --git a/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_1.f b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_1.f -new file mode 100644 -index 00000000000..eac4f9bfcf1 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_1.f -@@ -0,0 +1,25 @@ -+! { dg-do run } -+! { dg-options "-fdec" } -+! -+! Test old style initializers in derived types -+! -+! Contributed by Jim MacArthur -+! Modified by Mark Eggleston -+! -+ PROGRAM spec_in_var -+ TYPE STRUCT1 -+ INTEGER*4 ID /8/ -+ INTEGER*4 TYPE /5/ -+ INTEGER*8 DEFVAL /0/ -+ CHARACTER*(5) NAME /'tests'/ -+ LOGICAL*1 NIL /0/ -+ END TYPE STRUCT1 -+ -+ TYPE (STRUCT1) SINST -+ -+ IF(SINST%ID.NE.8) STOP 1 -+ IF(SINST%TYPE.NE.5) STOP 2 -+ IF(SINST%DEFVAL.NE.0) STOP 3 -+ IF(SINST%NAME.NE.'tests') STOP 4 -+ IF(SINST%NIL) STOP 5 -+ END -diff --git a/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_2.f b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_2.f -new file mode 100644 -index 00000000000..d904c8b2974 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_2.f -@@ -0,0 +1,25 @@ -+! { dg-do run } -+! { dg-options "-std=legacy -fdec-old-init" } -+! -+! Test old style initializers in derived types -+! -+! Contributed by Jim MacArthur -+! Modified by Mark Eggleston -+! -+ PROGRAM spec_in_var -+ TYPE STRUCT1 -+ INTEGER*4 ID /8/ -+ INTEGER*4 TYPE /5/ -+ INTEGER*8 DEFVAL /0/ -+ CHARACTER*(5) NAME /'tests'/ -+ LOGICAL*1 NIL /0/ -+ END TYPE STRUCT1 -+ -+ TYPE (STRUCT1) SINST -+ -+ IF(SINST%ID.NE.8) STOP 1 -+ IF(SINST%TYPE.NE.5) STOP 2 -+ IF(SINST%DEFVAL.NE.0) STOP 3 -+ IF(SINST%NAME.NE.'tests') STOP 4 -+ IF(SINST%NIL) STOP 5 -+ END -diff --git a/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_3.f b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_3.f -new file mode 100644 -index 00000000000..58c2b4b66cf ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_3.f -@@ -0,0 +1,26 @@ -+! { dg-do compile } -+! { dg-options "-std=legacy -fdec -fno-dec-old-init" } -+! -+! Test old style initializers in derived types -+! -+! Contributed by Jim MacArthur -+! Modified by Mark Eggleston -+! -+ -+ PROGRAM spec_in_var -+ TYPE STRUCT1 -+ INTEGER*4 ID /8/ ! { dg-error "Invalid old style initialization" } -+ INTEGER*4 TYPE /5/ ! { dg-error "Invalid old style initialization" } -+ INTEGER*8 DEFVAL /0/ ! { dg-error "Invalid old style initialization" } -+ CHARACTER*(5) NAME /'tests'/ ! { dg-error "Invalid old style initialization" } -+ LOGICAL*1 NIL /0/ ! { dg-error "Invalid old style initialization" } -+ END TYPE STRUCT1 -+ -+ TYPE (STRUCT1) SINST -+ -+ IF(SINST%ID.NE.8) STOP 1 ! { dg-error "'id' at \\(1\\) is not a member" } -+ IF(SINST%TYPE.NE.5) STOP 2 ! { dg-error "'type' at \\(1\\) is not a member" } -+ IF(SINST%DEFVAL.NE.0) STOP 3 ! { dg-error "'defval' at \\(1\\) is not a member" } -+ IF(SINST%NAME.NE.'tests') STOP 4 ! { dg-error "'name' at \\(1\\) is not a member" } -+ IF(SINST%NIL) STOP 5 ! { dg-error "'nil' at \\(1\\) is not a member" } -+ END --- -2.27.0 - diff --git a/gcc12-fortran-fdec-override-kind.patch b/gcc12-fortran-fdec-override-kind.patch index 4df6ead..370fa56 100644 --- a/gcc12-fortran-fdec-override-kind.patch +++ b/gcc12-fortran-fdec-override-kind.patch @@ -281,25 +281,25 @@ diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt index 25cc948699b..4a269ebb22d 100644 --- a/gcc/fortran/lang.opt +++ b/gcc/fortran/lang.opt -@@ -493,6 +493,10 @@ fdec-non-integer-index - Fortran Var(flag_dec_non_integer_index) - Enable support for non-integer substring indexes. +@@ -502,6 +502,10 @@ fdec-math + Fortran Var(flag_dec_math) + Enable legacy math intrinsics for compatibility. +fdec-override-kind +Fortran Var(flag_dec_override_kind) +Enable support for per variable kind specification. + - fdec-old-init - Fortran Var(flag_dec_old_init) - Enable support for old style initializers in derived types. + fdec-structure + Fortran Var(flag_dec_structure) + Enable support for DEC STRUCTURE/RECORD. diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc index d6bd36c3a8a..edbab483b36 100644 --- a/gcc/fortran/options.cc +++ b/gcc/fortran/options.cc -@@ -80,6 +80,7 @@ set_dec_flags (int value) +@@ -78,6 +78,7 @@ set_dec_flags (int value) + SET_BITFLAG (flag_dec_blank_format_item, value, value); + SET_BITFLAG (flag_dec_char_conversions, value, value); SET_BITFLAG (flag_dec_duplicates, value, value); - SET_BITFLAG (flag_dec_non_integer_index, value, value); - SET_BITFLAG (flag_dec_old_init, value, value); + SET_BITFLAG (flag_dec_override_kind, value, value); } diff --git a/gcc12-fortran-fdec-promotion.patch b/gcc12-fortran-fdec-promotion.patch deleted file mode 100644 index 870d62a..0000000 --- a/gcc12-fortran-fdec-promotion.patch +++ /dev/null @@ -1,2093 +0,0 @@ -From 7a27318818e359a277f2fa5f7dc3932d0fb950f5 Mon Sep 17 00:00:00 2001 -From: Mark Eggleston -Date: Fri, 22 Jan 2021 14:58:07 +0000 -Subject: [PATCH 08/10] Support type promotion in calls to intrinsics - -Use -fdec-promotion or -fdec to enable this feature. - -Merged 2 commits: worked on by Ben Brewer , -Francisco Redondo Marchena and -Jeff Law - -Re-worked by Mark Eggleston ---- - gcc/fortran/check.cc | 71 +++++- - gcc/fortran/intrinsic.cc | 5 + - gcc/fortran/iresolve.cc | 91 ++++--- - gcc/fortran/lang.opt | 4 + - gcc/fortran/options.cc | 1 + - gcc/fortran/simplify.cc | 240 ++++++++++++++---- - ...trinsic_int_real_array_const_promotion_1.f | 18 ++ - ...trinsic_int_real_array_const_promotion_2.f | 18 ++ - ...trinsic_int_real_array_const_promotion_3.f | 18 ++ - ...dec_intrinsic_int_real_const_promotion_1.f | 90 +++++++ - ...dec_intrinsic_int_real_const_promotion_2.f | 90 +++++++ - ...dec_intrinsic_int_real_const_promotion_3.f | 92 +++++++ - .../dec_intrinsic_int_real_promotion_1.f | 130 ++++++++++ - .../dec_intrinsic_int_real_promotion_2.f | 130 ++++++++++ - .../dec_intrinsic_int_real_promotion_3.f | 130 ++++++++++ - .../dec_intrinsic_int_real_promotion_4.f | 118 +++++++++ - .../dec_intrinsic_int_real_promotion_5.f | 118 +++++++++ - .../dec_intrinsic_int_real_promotion_6.f | 118 +++++++++ - .../dec_intrinsic_int_real_promotion_7.f | 118 +++++++++ - .../gfortran.dg/dec_kind_promotion-1.f | 40 +++ - .../gfortran.dg/dec_kind_promotion-2.f | 40 +++ - .../gfortran.dg/dec_kind_promotion-3.f | 39 +++ - 22 files changed, 1639 insertions(+), 80 deletions(-) - create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_1.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_2.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_3.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_1.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_2.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_3.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_1.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_2.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_3.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_4.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_5.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_6.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_7.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_kind_promotion-1.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_kind_promotion-2.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_kind_promotion-3.f - -diff --git a/gcc/fortran/check.cc b/gcc/fortran/check.cc -index 623c1cc470e..e20a834a860 100644 ---- a/gcc/fortran/check.cc -+++ b/gcc/fortran/check.cc -@@ -1396,12 +1396,40 @@ gfc_check_allocated (gfc_expr *array) - } - - -+/* Check function where both arguments must be real or integer -+ and warn if they are different types. */ -+ -+bool -+check_int_real_promotion (gfc_expr *a, gfc_expr *b) -+{ -+ gfc_expr *i; -+ -+ if (!int_or_real_check (a, 0)) -+ return false; -+ -+ if (!int_or_real_check (b, 1)) -+ return false; -+ -+ if (a->ts.type != b->ts.type) -+ { -+ i = (a->ts.type != BT_REAL ? a : b); -+ gfc_warning_now (OPT_Wconversion, "Conversion from INTEGER to REAL " -+ "at %L might lose precision", &i->where); -+ } -+ -+ return true; -+} -+ -+ - /* Common check function where the first argument must be real or - integer and the second argument must be the same as the first. */ - - bool - gfc_check_a_p (gfc_expr *a, gfc_expr *p) - { -+ if (flag_dec_promotion) -+ return check_int_real_promotion (a, p); -+ - if (!int_or_real_check (a, 0)) - return false; - -@@ -3724,6 +3752,41 @@ check_rest (bt type, int kind, gfc_actual_arglist *arglist) - } - - -+/* Check function where all arguments of an argument list must be real -+ or integer. */ -+ -+static bool -+check_rest_int_real (gfc_actual_arglist *arglist) -+{ -+ gfc_actual_arglist *arg, *tmp; -+ gfc_expr *x; -+ int m, n; -+ -+ if (!min_max_args (arglist)) -+ return false; -+ -+ for (arg = arglist, n=1; arg; arg = arg->next, n++) -+ { -+ x = arg->expr; -+ if (x->ts.type != BT_INTEGER && x->ts.type != BT_REAL) -+ { -+ gfc_error ("% argument of %qs intrinsic at %L must be " -+ "INTEGER or REAL", n, gfc_current_intrinsic, &x->where); -+ return false; -+ } -+ -+ for (tmp = arglist, m=1; tmp != arg; tmp = tmp->next, m++) -+ if (!gfc_check_conformance (tmp->expr, x, -+ "arguments 'a%d' and 'a%d' for " -+ "intrinsic '%s'", m, n, -+ gfc_current_intrinsic)) -+ return false; -+ } -+ -+ return true; -+} -+ -+ - bool - gfc_check_min_max (gfc_actual_arglist *arg) - { -@@ -3748,7 +3811,10 @@ gfc_check_min_max (gfc_actual_arglist *arg) - return false; - } - -- return check_rest (x->ts.type, x->ts.kind, arg); -+ if (flag_dec_promotion && x->ts.type != BT_CHARACTER) -+ return check_rest_int_real (arg); -+ else -+ return check_rest (x->ts.type, x->ts.kind, arg); - } - - -@@ -5121,6 +5187,9 @@ gfc_check_shift (gfc_expr *i, gfc_expr *shift) - bool - gfc_check_sign (gfc_expr *a, gfc_expr *b) - { -+ if (flag_dec_promotion) -+ return check_int_real_promotion (a, b); -+ - if (!int_or_real_check (a, 0)) - return false; - -diff --git a/gcc/fortran/intrinsic.cc b/gcc/fortran/intrinsic.cc -index e68eff8bdbb..81b3a24c2be 100644 ---- a/gcc/fortran/intrinsic.cc -+++ b/gcc/fortran/intrinsic.cc -@@ -4467,6 +4467,11 @@ check_arglist (gfc_actual_arglist **ap, gfc_intrinsic_sym *sym, - if (ts.kind == 0) - ts.kind = actual->expr->ts.kind; - -+ /* If kind promotion is allowed don't check for kind if it is smaller */ -+ if (flag_dec_promotion && ts.type == BT_INTEGER) -+ if (actual->expr->ts.kind < ts.kind) -+ ts.kind = actual->expr->ts.kind; -+ - if (!gfc_compare_types (&ts, &actual->expr->ts)) - { - if (error_flag) -diff --git a/gcc/fortran/iresolve.cc b/gcc/fortran/iresolve.cc -index e17fe45f080..b9cdaff2499 100644 ---- a/gcc/fortran/iresolve.cc -+++ b/gcc/fortran/iresolve.cc -@@ -834,19 +834,22 @@ gfc_resolve_dble (gfc_expr *f, gfc_expr - void - gfc_resolve_dim (gfc_expr *f, gfc_expr *a, gfc_expr *p) - { -- f->ts.type = a->ts.type; - if (p != NULL) -- f->ts.kind = gfc_kind_max (a,p); -- else -- f->ts.kind = a->ts.kind; -- -- if (p != NULL && a->ts.kind != p->ts.kind) - { -- if (a->ts.kind == gfc_kind_max (a,p)) -- gfc_convert_type (p, &a->ts, 2); -+ f->ts.kind = gfc_kind_max (a,p); -+ if (a->ts.type == BT_REAL || p->ts.type == BT_REAL) -+ f->ts.type = BT_REAL; - else -- gfc_convert_type (a, &p->ts, 2); -+ f->ts.type = BT_INTEGER; -+ -+ if (a->ts.kind != f->ts.kind || a->ts.type != f->ts.type) -+ gfc_convert_type (a, &f->ts, 2); -+ -+ if (p->ts.kind != f->ts.kind || p->ts.type != f->ts.type) -+ gfc_convert_type (p, &f->ts, 2); - } -+ else -+ f->ts = a->ts; - - f->value.function.name - = gfc_get_string ("__dim_%c%d", gfc_type_letter (f->ts.type), -@@ -1622,14 +1625,17 @@ gfc_resolve_minmax (const char *name, gf - /* Find the largest type kind. */ - for (a = args->next; a; a = a->next) - { -+ if (a->expr-> ts.type == BT_REAL) -+ f->ts.type = BT_REAL; -+ - if (a->expr->ts.kind > f->ts.kind) - f->ts.kind = a->expr->ts.kind; - } - -- /* Convert all parameters to the required kind. */ -+ /* Convert all parameters to the required type and/or kind. */ - for (a = args; a; a = a->next) - { -- if (a->expr->ts.kind != f->ts.kind) -+ if (a->expr->ts.type != f->ts.type || a->expr->ts.kind != f->ts.kind) - gfc_convert_type (a->expr, &f->ts, 2); - } - -@@ -2130,19 +2136,22 @@ gfc_resolve_minval (gfc_expr *f, gfc_exp - void - gfc_resolve_mod (gfc_expr *f, gfc_expr *a, gfc_expr *p) - { -- f->ts.type = a->ts.type; - if (p != NULL) -- f->ts.kind = gfc_kind_max (a,p); -- else -- f->ts.kind = a->ts.kind; -- -- if (p != NULL && a->ts.kind != p->ts.kind) - { -- if (a->ts.kind == gfc_kind_max (a,p)) -- gfc_convert_type (p, &a->ts, 2); -+ f->ts.kind = gfc_kind_max (a,p); -+ if (a->ts.type == BT_REAL || p->ts.type == BT_REAL) -+ f->ts.type = BT_REAL; - else -- gfc_convert_type (a, &p->ts, 2); -+ f->ts.type = BT_INTEGER; -+ -+ if (a->ts.kind != f->ts.kind || a->ts.type != f->ts.type) -+ gfc_convert_type (a, &f->ts, 2); -+ -+ if (p->ts.kind != f->ts.kind || p->ts.type != f->ts.type) -+ gfc_convert_type (p, &f->ts, 2); - } -+ else -+ f->ts = a->ts; - - f->value.function.name - = gfc_get_string ("__mod_%c%d", gfc_type_letter (f->ts.type), -@@ -2153,19 +2162,22 @@ gfc_resolve_mod (gfc_expr *f, gfc_expr * - void - gfc_resolve_modulo (gfc_expr *f, gfc_expr *a, gfc_expr *p) - { -- f->ts.type = a->ts.type; - if (p != NULL) -- f->ts.kind = gfc_kind_max (a,p); -- else -- f->ts.kind = a->ts.kind; -- -- if (p != NULL && a->ts.kind != p->ts.kind) - { -- if (a->ts.kind == gfc_kind_max (a,p)) -- gfc_convert_type (p, &a->ts, 2); -+ f->ts.kind = gfc_kind_max (a,p); -+ if (a->ts.type == BT_REAL || p->ts.type == BT_REAL) -+ f->ts.type = BT_REAL; - else -- gfc_convert_type (a, &p->ts, 2); -+ f->ts.type = BT_INTEGER; -+ -+ if (a->ts.kind != f->ts.kind || a->ts.type != f->ts.type) -+ gfc_convert_type (a, &f->ts, 2); -+ -+ if (p->ts.kind != f->ts.kind || p->ts.type != f->ts.type) -+ gfc_convert_type (p, &f->ts, 2); - } -+ else -+ f->ts = a->ts; - - f->value.function.name - = gfc_get_string ("__modulo_%c%d", gfc_type_letter (f->ts.type), -@@ -2543,9 +2555,26 @@ gfc_resolve_shift (gfc_expr *f, gfc_expr - - - void --gfc_resolve_sign (gfc_expr *f, gfc_expr *a, gfc_expr *b ATTRIBUTE_UNUSED) -+gfc_resolve_sign (gfc_expr *f, gfc_expr *a, gfc_expr *b) - { -- f->ts = a->ts; -+ if (b != NULL) -+ { -+ f->ts.kind = gfc_kind_max (a, b); -+ if (a->ts.type == BT_REAL || b->ts.type == BT_REAL) -+ f->ts.type = BT_REAL; -+ else -+ f->ts.type = BT_INTEGER; -+ -+ if (a->ts.kind != f->ts.kind || a->ts.type != f->ts.type) -+ gfc_convert_type (a, &f->ts, 2); -+ -+ if (b->ts.kind != f->ts.kind || b->ts.type != f->ts.type) -+ gfc_convert_type (b, &f->ts, 2); -+ } -+ else -+ { -+ f->ts = a->ts; -+ } - f->value.function.name - = gfc_get_string ("__sign_%c%d", gfc_type_letter (a->ts.type), - gfc_type_abi_kind (&a->ts)); -diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt -index d886c2f33ed..4ca2f93f2df 100644 ---- a/gcc/fortran/lang.opt -+++ b/gcc/fortran/lang.opt -@@ -505,6 +505,10 @@ fdec-old-init - Fortran Var(flag_dec_old_init) - Enable support for old style initializers in derived types. - -+fdec-promotion -+Fortran Var(flag_dec_promotion) -+Add support for type promotion in intrinsic arguments. -+ - fdec-structure - Fortran Var(flag_dec_structure) - Enable support for DEC STRUCTURE/RECORD. -diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc -index a946c86790a..15079c7e95a 100644 ---- a/gcc/fortran/options.cc -+++ b/gcc/fortran/options.cc -@@ -82,6 +82,7 @@ set_dec_flags (int value) - SET_BITFLAG (flag_dec_old_init, value, value); - SET_BITFLAG (flag_dec_override_kind, value, value); - SET_BITFLAG (flag_dec_non_logical_if, value, value); -+ SET_BITFLAG (flag_dec_promotion, value, value); - } - - /* Finalize DEC flags. */ -diff --git a/gcc/fortran/simplify.cc b/gcc/fortran/simplify.cc -index 9900572424f..3419e06fec2 100644 ---- a/gcc/fortran/simplify.cc -+++ b/gcc/fortran/simplify.cc -@@ -2333,39 +2333,79 @@ gfc_simplify_digits (gfc_expr *x) - } - - -+/* Simplify function which sets the floating-point value of ar from -+ the value of a independently if a is integer of real. */ -+ -+static void -+simplify_int_real_promotion (const gfc_expr *a, const gfc_expr *b, mpfr_t *ar) -+{ -+ if (a->ts.type == BT_REAL) -+ { -+ mpfr_init2 (*ar, (a->ts.kind * 8)); -+ mpfr_set (*ar, a->value.real, GFC_RND_MODE); -+ } -+ else -+ { -+ mpfr_init2 (*ar, (b->ts.kind * 8)); -+ mpfr_set_z (*ar, a->value.integer, GFC_RND_MODE); -+ } -+} -+ -+ -+/* Simplify function which promotes a and b arguments from integer to real if -+ required in ar and br floating-point values. This function returns true if -+ a or b are reals and false otherwise. */ -+ -+static bool -+simplify_int_real_promotion2 (const gfc_expr *a, const gfc_expr *b, mpfr_t *ar, -+ mpfr_t *br) -+{ -+ if (a->ts.type != BT_REAL && b->ts.type != BT_REAL) -+ return false; -+ -+ simplify_int_real_promotion (a, b, ar); -+ simplify_int_real_promotion (b, a, br); -+ -+ return true; -+} -+ -+ - gfc_expr * - gfc_simplify_dim (gfc_expr *x, gfc_expr *y) - { - gfc_expr *result; - int kind; - -+ mpfr_t xr; -+ mpfr_t yr; -+ - if (x->expr_type != EXPR_CONSTANT || y->expr_type != EXPR_CONSTANT) - return NULL; - -- kind = x->ts.kind > y->ts.kind ? x->ts.kind : y->ts.kind; -- result = gfc_get_constant_expr (x->ts.type, kind, &x->where); -- -- switch (x->ts.type) -+ if ((x->ts.type != BT_REAL && x->ts.type != BT_INTEGER) -+ || (y->ts.type != BT_REAL && y->ts.type != BT_INTEGER)) - { -- case BT_INTEGER: -- if (mpz_cmp (x->value.integer, y->value.integer) > 0) -- mpz_sub (result->value.integer, x->value.integer, y->value.integer); -- else -- mpz_set_ui (result->value.integer, 0); -- -- break; -- -- case BT_REAL: -- if (mpfr_cmp (x->value.real, y->value.real) > 0) -- mpfr_sub (result->value.real, x->value.real, y->value.real, -- GFC_RND_MODE); -- else -- mpfr_set_ui (result->value.real, 0, GFC_RND_MODE); -+ gfc_internal_error ("gfc_simplify_dim(): Bad arguments"); -+ return NULL; -+ } - -- break; -+ kind = x->ts.kind > y->ts.kind ? x->ts.kind : y->ts.kind; - -- default: -- gfc_internal_error ("gfc_simplify_dim(): Bad type"); -+ if (simplify_int_real_promotion2 (x, y, &xr, &yr)) -+ { -+ result = gfc_get_constant_expr (BT_REAL, kind, &x->where); -+ if (mpfr_cmp (xr, yr) > 0) -+ mpfr_sub (result->value.real, xr, yr, GFC_RND_MODE); -+ else -+ mpfr_set_ui (result->value.real, 0, GFC_RND_MODE); -+ } -+ else -+ { -+ result = gfc_get_constant_expr (BT_INTEGER, kind, &x->where); -+ if (mpz_cmp (x->value.integer, y->value.integer) > 0) -+ mpz_sub (result->value.integer, x->value.integer, y->value.integer); -+ else -+ mpz_set_ui (result->value.integer, 0); - } - - return range_check (result, "DIM"); -@@ -4953,6 +4993,76 @@ min_max_choose (gfc_expr *arg, gfc_expr *extremum, int sign, bool back_val) - { - int ret; - -+ mpfr_t *arp; -+ mpfr_t *erp; -+ mpfr_t ar; -+ mpfr_t er; -+ -+ if (arg->ts.type != extremum->ts.type) -+ { -+ if (arg->ts.type == BT_REAL) -+ { -+ arp = &arg->value.real; -+ } -+ else -+ { -+ mpfr_init2 (ar, (arg->ts.kind * 8)); -+ mpfr_set_z (ar, arg->value.integer, GFC_RND_MODE); -+ arp = &ar; -+ } -+ -+ if (extremum->ts.type == BT_REAL) -+ { -+ erp = &extremum->value.real; -+ } -+ else -+ { -+ mpfr_init2 (er, (extremum->ts.kind * 8)); -+ mpfr_set_z (er, extremum->value.integer, GFC_RND_MODE); -+ erp = &er; -+ } -+ -+ if (mpfr_nan_p (*erp)) -+ { -+ ret = 1; -+ extremum->ts.type = arg->ts.type; -+ extremum->ts.kind = arg->ts.kind; -+ if (arg->ts.type == BT_INTEGER) -+ { -+ mpz_init2 (extremum->value.integer, (arg->ts.kind * 8)); -+ mpz_set (extremum->value.integer, arg->value.integer); -+ } -+ else -+ { -+ mpfr_init2 (extremum->value.real, (arg->ts.kind * 8)); -+ mpfr_set (extremum->value.real, *arp, GFC_RND_MODE); -+ } -+ } -+ else if (mpfr_nan_p (*arp)) -+ ret = -1; -+ else -+ { -+ ret = mpfr_cmp (*arp, *erp) * sign; -+ if (ret > 0) -+ { -+ extremum->ts.type = arg->ts.type; -+ extremum->ts.kind = arg->ts.kind; -+ if (arg->ts.type == BT_INTEGER) -+ { -+ mpz_init2 (extremum->value.integer, (arg->ts.kind * 8)); -+ mpz_set (extremum->value.integer, arg->value.integer); -+ } -+ else -+ { -+ mpfr_init2 (extremum->value.real, (arg->ts.kind * 8)); -+ mpfr_set (extremum->value.real, *arp, GFC_RND_MODE); -+ } -+ } -+ } -+ -+ return ret; -+ } -+ - switch (arg->ts.type) - { - case BT_INTEGER: -@@ -5912,7 +6022,9 @@ gfc_simplify_mod (gfc_expr *a, gfc_expr *p) - gfc_expr *result; - int kind; - -- /* First check p. */ -+ mpfr_t ar; -+ mpfr_t pr; -+ - if (p->expr_type != EXPR_CONSTANT) - return NULL; - -@@ -5942,16 +6054,24 @@ gfc_simplify_mod (gfc_expr *a, gfc_expr *p) - if (a->expr_type != EXPR_CONSTANT) - return NULL; - -+ if (a->ts.type != BT_REAL && a->ts.type != BT_INTEGER) -+ { -+ gfc_internal_error ("gfc_simplify_mod(): Bad arguments"); -+ return NULL; -+ } -+ - kind = a->ts.kind > p->ts.kind ? a->ts.kind : p->ts.kind; -- result = gfc_get_constant_expr (a->ts.type, kind, &a->where); - -- if (a->ts.type == BT_INTEGER) -- mpz_tdiv_r (result->value.integer, a->value.integer, p->value.integer); -- else -+ if (simplify_int_real_promotion2 (a, p, &ar, &pr)) - { -+ result = gfc_get_constant_expr (BT_REAL, kind, &a->where); - gfc_set_model_kind (kind); -- mpfr_fmod (result->value.real, a->value.real, p->value.real, -- GFC_RND_MODE); -+ mpfr_fmod (result->value.real, ar, pr, GFC_RND_MODE); -+ } -+ else -+ { -+ result = gfc_get_constant_expr (BT_INTEGER, kind, &a->where); -+ mpz_tdiv_r (result->value.integer, a->value.integer, p->value.integer); - } - - return range_check (result, "MOD"); -@@ -5964,7 +6084,9 @@ gfc_simplify_modulo (gfc_expr *a, gfc_expr *p) - gfc_expr *result; - int kind; - -- /* First check p. */ -+ mpfr_t ar; -+ mpfr_t pr; -+ - if (p->expr_type != EXPR_CONSTANT) - return NULL; - -@@ -5991,28 +6113,36 @@ gfc_simplify_modulo (gfc_expr *a, gfc_expr *p) - gfc_internal_error ("gfc_simplify_modulo(): Bad arguments"); - } - -+ if (a->ts.type != BT_REAL && a->ts.type != BT_INTEGER) -+ { -+ gfc_internal_error ("gfc_simplify_modulo(): Bad arguments"); -+ return NULL; -+ } -+ - if (a->expr_type != EXPR_CONSTANT) - return NULL; - - kind = a->ts.kind > p->ts.kind ? a->ts.kind : p->ts.kind; -- result = gfc_get_constant_expr (a->ts.type, kind, &a->where); - -- if (a->ts.type == BT_INTEGER) -- mpz_fdiv_r (result->value.integer, a->value.integer, p->value.integer); -- else -+ if (simplify_int_real_promotion2 (a, p, &ar, &pr)) - { -+ result = gfc_get_constant_expr (BT_REAL, kind, &a->where); - gfc_set_model_kind (kind); -- mpfr_fmod (result->value.real, a->value.real, p->value.real, -- GFC_RND_MODE); -+ mpfr_fmod (result->value.real, ar, pr, GFC_RND_MODE); - if (mpfr_cmp_ui (result->value.real, 0) != 0) -- { -- if (mpfr_signbit (a->value.real) != mpfr_signbit (p->value.real)) -- mpfr_add (result->value.real, result->value.real, p->value.real, -- GFC_RND_MODE); -- } -- else -- mpfr_copysign (result->value.real, result->value.real, -- p->value.real, GFC_RND_MODE); -+ { -+ if (mpfr_signbit (ar) != mpfr_signbit (pr)) -+ mpfr_add (result->value.real, result->value.real, pr, -+ GFC_RND_MODE); -+ } -+ else -+ mpfr_copysign (result->value.real, result->value.real, pr, -+ GFC_RND_MODE); -+ } -+ else -+ { -+ result = gfc_get_constant_expr (BT_INTEGER, kind, &a->where); -+ mpz_fdiv_r (result->value.integer, a->value.integer, p->value.integer); - } - - return range_check (result, "MODULO"); -@@ -7578,27 +7708,41 @@ gfc_expr * - gfc_simplify_sign (gfc_expr *x, gfc_expr *y) - { - gfc_expr *result; -+ bool neg; - - if (x->expr_type != EXPR_CONSTANT || y->expr_type != EXPR_CONSTANT) - return NULL; - - result = gfc_get_constant_expr (x->ts.type, x->ts.kind, &x->where); - -+ switch (y->ts.type) -+ { -+ case BT_INTEGER: -+ neg = (mpz_sgn (y->value.integer) < 0); -+ break; -+ -+ case BT_REAL: -+ neg = (mpfr_sgn (y->value.real) < 0); -+ break; -+ -+ default: -+ gfc_internal_error ("Bad type in gfc_simplify_sign"); -+ } -+ - switch (x->ts.type) - { - case BT_INTEGER: - mpz_abs (result->value.integer, x->value.integer); -- if (mpz_sgn (y->value.integer) < 0) -+ if (neg) - mpz_neg (result->value.integer, result->value.integer); - break; - - case BT_REAL: -- if (flag_sign_zero) -+ if (flag_sign_zero && y->ts.type == BT_REAL) - mpfr_copysign (result->value.real, x->value.real, y->value.real, -- GFC_RND_MODE); -+ GFC_RND_MODE); - else -- mpfr_setsign (result->value.real, x->value.real, -- mpfr_sgn (y->value.real) < 0 ? 1 : 0, GFC_RND_MODE); -+ mpfr_setsign (result->value.real, x->value.real, neg, GFC_RND_MODE); - break; - - default: -diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_1.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_1.f -new file mode 100644 -index 00000000000..25763852139 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_1.f -@@ -0,0 +1,18 @@ -+! { dg-do compile } -+! { dg-options "-fdec" } -+! -+! Test promotion between integers and reals for mod and modulo where -+! A is a constant array and P is zero. -+! -+! Compilation errors are expected -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ program promotion_int_real_array_const -+ real a(2) = mod([12, 34], 0.0)*4 ! { dg-error "shall not be zero" } -+ a = mod([12.0, 34.0], 0)*4 ! { dg-error "shall not be zero" } -+ real b(2) = modulo([12, 34], 0.0)*4 ! { dg-error "shall not be zero" } -+ b = modulo([12.0, 34.0], 0)*4 ! { dg-error "shall not be zero" } -+ end program -diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_2.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_2.f -new file mode 100644 -index 00000000000..b78a46054f4 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_2.f -@@ -0,0 +1,18 @@ -+! { dg-do compile } -+! { dg-options "-fdec-promotion" } -+! -+! Test promotion between integers and reals for mod and modulo where -+! A is a constant array and P is zero. -+! -+! Compilation errors are expected -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ program promotion_int_real_array_const -+ real a(2) = mod([12, 34], 0.0)*4 ! { dg-error "shall not be zero" } -+ a = mod([12.0, 34.0], 0)*4 ! { dg-error "shall not be zero" } -+ real b(2) = modulo([12, 34], 0.0)*4 ! { dg-error "shall not be zero" } -+ b = modulo([12.0, 34.0], 0)*4 ! { dg-error "shall not be zero" } -+ end program -diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_3.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_3.f -new file mode 100644 -index 00000000000..318ab5db97e ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_3.f -@@ -0,0 +1,18 @@ -+! { dg-do compile } -+! { dg-options "-fdec -fno-dec-promotion" } -+! -+! Test promotion between integers and reals for mod and modulo where -+! A is a constant array and P is zero. -+! -+! Compilation errors are expected -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ program promotion_int_real_array_const -+ real a(2) = mod([12, 34], 0.0)*4 ! { dg-error "'a' and 'p' arguments of 'mod'" } -+ a = mod([12.0, 34.0], 0)*4 ! { dg-error "'a' and 'p' arguments of 'mod'" } -+ real b(2) = modulo([12, 34], 0.0)*4 ! { dg-error "'a' and 'p' arguments of 'modulo'" } -+ b = modulo([12.0, 34.0], 0)*4 ! { dg-error "'a' and 'p' arguments of 'modulo'" } -+ end program -diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_1.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_1.f -new file mode 100644 -index 00000000000..27eb2582bb2 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_1.f -@@ -0,0 +1,90 @@ -+! { dg-do run } -+! { dg-options "-fdec -finit-real=snan" } -+! -+! Test promotion between integers and reals in intrinsic operations. -+! These operations are: mod, modulo, dim, sign, min, max, minloc and -+! maxloc. -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ PROGRAM promotion_int_real_const -+ ! array_nan 4th position value is NAN -+ REAL array_nan(4) -+ DATA array_nan(1)/-4.0/ -+ DATA array_nan(2)/3.0/ -+ DATA array_nan(3)/-2/ -+ -+ INTEGER m_i/0/ -+ REAL m_r/0.0/ -+ -+ INTEGER md_i/0/ -+ REAL md_r/0.0/ -+ -+ INTEGER d_i/0/ -+ REAL d_r/0.0/ -+ -+ INTEGER s_i/0/ -+ REAL s_r/0.0/ -+ -+ INTEGER mn_i/0/ -+ REAL mn_r/0.0/ -+ -+ INTEGER mx_i/0/ -+ REAL mx_r/0.0/ -+ -+ m_i = MOD(4, 3) -+ if (m_i .ne. 1) STOP 1 -+ m_r = MOD(4.0, 3.0) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 2 -+ m_r = MOD(4, 3.0) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 -+ m_r = MOD(4.0, 3) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 -+ -+ md_i = MODULO(4, 3) -+ if (md_i .ne. 1) STOP 5 -+ md_r = MODULO(4.0, 3.0) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 6 -+ md_r = MODULO(4, 3.0) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 7 -+ md_r = MODULO(4.0, 3) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 8 -+ -+ d_i = DIM(4, 3) -+ if (d_i .ne. 1) STOP 9 -+ d_r = DIM(4.0, 3.0) -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 10 -+ d_r = DIM(4.0, 3) -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 11 -+ d_r = DIM(3, 4.0) -+ if (abs(d_r) > 1.0D-6) STOP 12 -+ -+ s_i = SIGN(-4, 3) -+ if (s_i .ne. 4) STOP 13 -+ s_r = SIGN(4.0, -3.0) -+ if (abs(s_r - (-4.0)) > 1.0D-6) STOP 14 -+ s_r = SIGN(4.0, -3) -+ if (abs(s_r - (-4.0)) > 1.0D-6) STOP 15 -+ s_r = SIGN(-4, 3.0) -+ if (abs(s_r - 4.0) > 1.0D-6) STOP 16 -+ -+ mx_i = MAX(-4, -3, 2, 1) -+ if (mx_i .ne. 2) STOP 17 -+ mx_r = MAX(-4.0, -3.0, 2.0, 1.0) -+ if (abs(mx_r - 2.0) > 1.0D-6) STOP 18 -+ mx_r = MAX(-4, -3.0, 2.0, 1) -+ if (abs(mx_r - 2.0) > 1.0D-6) STOP 19 -+ mx_i = MAXLOC(array_nan, 1) -+ if (mx_i .ne. 2) STOP 20 -+ -+ mn_i = MIN(-4, -3, 2, 1) -+ if (mn_i .ne. -4) STOP 21 -+ mn_r = MIN(-4.0, -3.0, 2.0, 1.0) -+ if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 22 -+ mn_r = MIN(-4, -3.0, 2.0, 1) -+ if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 23 -+ mn_i = MINLOC(array_nan, 1) -+ if (mn_i .ne. 1) STOP 24 -+ END PROGRAM -diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_2.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_2.f -new file mode 100644 -index 00000000000..bdd017b7280 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_2.f -@@ -0,0 +1,90 @@ -+! { dg-do run } -+! { dg-options "-fdec-promotion -finit-real=snan" } -+! -+! Test promotion between integers and reals in intrinsic operations. -+! These operations are: mod, modulo, dim, sign, min, max, minloc and -+! maxloc. -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ PROGRAM promotion_int_real_const -+ ! array_nan 4th position value is NAN -+ REAL array_nan(4) -+ DATA array_nan(1)/-4.0/ -+ DATA array_nan(2)/3.0/ -+ DATA array_nan(3)/-2/ -+ -+ INTEGER m_i/0/ -+ REAL m_r/0.0/ -+ -+ INTEGER md_i/0/ -+ REAL md_r/0.0/ -+ -+ INTEGER d_i/0/ -+ REAL d_r/0.0/ -+ -+ INTEGER s_i/0/ -+ REAL s_r/0.0/ -+ -+ INTEGER mn_i/0/ -+ REAL mn_r/0.0/ -+ -+ INTEGER mx_i/0/ -+ REAL mx_r/0.0/ -+ -+ m_i = MOD(4, 3) -+ if (m_i .ne. 1) STOP 1 -+ m_r = MOD(4.0, 3.0) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 2 -+ m_r = MOD(4, 3.0) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 -+ m_r = MOD(4.0, 3) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 -+ -+ md_i = MODULO(4, 3) -+ if (md_i .ne. 1) STOP 5 -+ md_r = MODULO(4.0, 3.0) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 6 -+ md_r = MODULO(4, 3.0) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 7 -+ md_r = MODULO(4.0, 3) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 8 -+ -+ d_i = DIM(4, 3) -+ if (d_i .ne. 1) STOP 9 -+ d_r = DIM(4.0, 3.0) -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 10 -+ d_r = DIM(4.0, 3) -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 11 -+ d_r = DIM(3, 4.0) -+ if (abs(d_r) > 1.0D-6) STOP 12 -+ -+ s_i = SIGN(-4, 3) -+ if (s_i .ne. 4) STOP 13 -+ s_r = SIGN(4.0, -3.0) -+ if (abs(s_r - (-4.0)) > 1.0D-6) STOP 14 -+ s_r = SIGN(4.0, -3) -+ if (abs(s_r - (-4.0)) > 1.0D-6) STOP 15 -+ s_r = SIGN(-4, 3.0) -+ if (abs(s_r - 4.0) > 1.0D-6) STOP 16 -+ -+ mx_i = MAX(-4, -3, 2, 1) -+ if (mx_i .ne. 2) STOP 17 -+ mx_r = MAX(-4.0, -3.0, 2.0, 1.0) -+ if (abs(mx_r - 2.0) > 1.0D-6) STOP 18 -+ mx_r = MAX(-4, -3.0, 2.0, 1) -+ if (abs(mx_r - 2.0) > 1.0D-6) STOP 19 -+ mx_i = MAXLOC(array_nan, 1) -+ if (mx_i .ne. 2) STOP 20 -+ -+ mn_i = MIN(-4, -3, 2, 1) -+ if (mn_i .ne. -4) STOP 21 -+ mn_r = MIN(-4.0, -3.0, 2.0, 1.0) -+ if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 22 -+ mn_r = MIN(-4, -3.0, 2.0, 1) -+ if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 23 -+ mn_i = MINLOC(array_nan, 1) -+ if (mn_i .ne. 1) STOP 24 -+ END PROGRAM -diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_3.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_3.f -new file mode 100644 -index 00000000000..ce90a5667d6 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_3.f -@@ -0,0 +1,92 @@ -+! { dg-do compile } -+! { dg-options "-fdec -fno-dec-promotion -finit-real=snan" } -+! -+! Test that there is no promotion between integers and reals in -+! intrinsic operations. -+! -+! These operations are: mod, modulo, dim, sign, min, max, minloc and -+! maxloc. -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ PROGRAM promotion_int_real_const -+ ! array_nan 4th position value is NAN -+ REAL array_nan(4) -+ DATA array_nan(1)/-4.0/ -+ DATA array_nan(2)/3.0/ -+ DATA array_nan(3)/-2/ -+ -+ INTEGER m_i/0/ -+ REAL m_r/0.0/ -+ -+ INTEGER md_i/0/ -+ REAL md_r/0.0/ -+ -+ INTEGER d_i/0/ -+ REAL d_r/0.0/ -+ -+ INTEGER s_i/0/ -+ REAL s_r/0.0/ -+ -+ INTEGER mn_i/0/ -+ REAL mn_r/0.0/ -+ -+ INTEGER mx_i/0/ -+ REAL mx_r/0.0/ -+ -+ m_i = MOD(4, 3) -+ if (m_i .ne. 1) STOP 1 -+ m_r = MOD(4.0, 3.0) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 2 -+ m_r = MOD(4, 3.0) ! { dg-error "'a' and 'p' arguments" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 -+ m_r = MOD(4.0, 3) ! { dg-error "'a' and 'p' arguments" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 -+ -+ md_i = MODULO(4, 3) -+ if (md_i .ne. 1) STOP 5 -+ md_r = MODULO(4.0, 3.0) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 6 -+ md_r = MODULO(4, 3.0) ! { dg-error "'a' and 'p' arguments" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 7 -+ md_r = MODULO(4.0, 3) ! { dg-error "'a' and 'p' arguments" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 8 -+ -+ d_i = DIM(4, 3) -+ if (d_i .ne. 1) STOP 9 -+ d_r = DIM(4.0, 3.0) -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 10 -+ d_r = DIM(4.0, 3) ! { dg-error "'x' and 'y' arguments" } -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 11 -+ d_r = DIM(3, 4.0) ! { dg-error "'x' and 'y' arguments" } -+ if (abs(d_r) > 1.0D-6) STOP 12 -+ -+ s_i = SIGN(-4, 3) -+ if (s_i .ne. 4) STOP 13 -+ s_r = SIGN(4.0, -3.0) -+ if (abs(s_r - (-4.0)) > 1.0D-6) STOP 14 -+ s_r = SIGN(4.0, -3) ! { dg-error "'b' argument" } -+ if (abs(s_r - (-4.0)) > 1.0D-6) STOP 15 -+ s_r = SIGN(-4, 3.0) ! { dg-error "'b' argument" } -+ if (abs(s_r - 4.0) > 1.0D-6) STOP 16 -+ -+ mx_i = MAX(-4, -3, 2, 1) -+ if (mx_i .ne. 2) STOP 17 -+ mx_r = MAX(-4.0, -3.0, 2.0, 1.0) -+ if (abs(mx_r - 2.0) > 1.0D-6) STOP 18 -+ mx_r = MAX(-4, -3.0, 2.0, 1) ! { dg-error "'a2' argument" } -+ if (abs(mx_r - 2.0) > 1.0D-6) STOP 19 -+ mx_i = MAXLOC(array_nan, 1) -+ if (mx_i .ne. 2) STOP 20 -+ -+ mn_i = MIN(-4, -3, 2, 1) -+ if (mn_i .ne. -4) STOP 21 -+ mn_r = MIN(-4.0, -3.0, 2.0, 1.0) -+ if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 22 -+ mn_r = MIN(-4, -3.0, 2.0, 1) ! { dg-error "'a2' argument" } -+ if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 23 -+ mn_i = MINLOC(array_nan, 1) -+ if (mn_i .ne. 1) STOP 24 -+ END PROGRAM -diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_1.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_1.f -new file mode 100644 -index 00000000000..5c2cd931a4b ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_1.f -@@ -0,0 +1,130 @@ -+! { dg-do run } -+! { dg-options "-fdec" } -+! -+! Test promotion between integers and reals in intrinsic operations. -+! These operations are: mod, modulo, dim, sign, min, max, minloc and -+! maxloc. -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ PROGRAM promotion_int_real -+ REAL l/0.0/ -+ INTEGER a_i/4/ -+ INTEGER*4 a2_i/4/ -+ INTEGER b_i/3/ -+ INTEGER*8 b2_i/3/ -+ INTEGER x_i/2/ -+ INTEGER y_i/1/ -+ REAL a_r/4.0/ -+ REAL*4 a2_r/4.0/ -+ REAL b_r/3.0/ -+ REAL*8 b2_r/3.0/ -+ REAL x_r/2.0/ -+ REAL y_r/1.0/ -+ -+ REAL array_nan(4) -+ DATA array_nan(1)/-4.0/ -+ DATA array_nan(2)/3.0/ -+ DATA array_nan(3)/-2/ -+ -+ INTEGER m_i/0/ -+ REAL m_r/0.0/ -+ -+ INTEGER md_i/0/ -+ REAL md_r/0.0/ -+ -+ INTEGER d_i/0/ -+ REAL d_r/0.0/ -+ -+ INTEGER s_i/0/ -+ REAL s_r/0.0/ -+ -+ INTEGER mn_i/0/ -+ REAL mn_r/0.0/ -+ -+ INTEGER mx_i/0/ -+ REAL mx_r/0.0/ -+ -+ ! array_nan 4th position value is NAN -+ array_nan(4) = 0/l -+ -+ m_i = MOD(a_i, b_i) -+ if (m_i .ne. 1) STOP 1 -+ m_i = MOD(a2_i, b2_i) -+ if (m_i .ne. 1) STOP 2 -+ m_r = MOD(a_r, b_r) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 -+ m_r = MOD(a2_r, b2_r) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 -+ m_r = MOD(a_i, b_r) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 5 -+ m_r = MOD(a_r, b_i) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 6 -+ -+ md_i = MODULO(a_i, b_i) -+ if (md_i .ne. 1) STOP 7 -+ md_i = MODULO(a2_i, b2_i) -+ if (md_i .ne. 1) STOP 8 -+ md_r = MODULO(a_r, b_r) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 9 -+ md_r = MODULO(a2_r, b2_r) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 10 -+ md_r = MODULO(a_i, b_r) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 11 -+ md_r = MODULO(a_r, b_i) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 12 -+ -+ d_i = DIM(a_i, b_i) -+ if (d_i .ne. 1) STOP 13 -+ d_i = DIM(a2_i, b2_i) -+ if (d_i .ne. 1) STOP 14 -+ d_r = DIM(a_r, b_r) -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 15 -+ d_r = DIM(a2_r, b2_r) -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 16 -+ d_r = DIM(a_r, b_i) -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 17 -+ d_r = DIM(b_i, a_r) -+ if (abs(d_r) > 1.0D-6) STOP 18 -+ -+ s_i = SIGN(-a_i, b_i) -+ if (s_i .ne. 4) STOP 19 -+ s_i = SIGN(-a2_i, b2_i) -+ if (s_i .ne. 4) STOP 20 -+ s_r = SIGN(a_r, -b_r) -+ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 21 -+ s_r = SIGN(a2_r, -b2_r) -+ if (abs(s_r - (-a2_r)) > 1.0D-6) STOP 22 -+ s_r = SIGN(a_r, -b_i) -+ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 23 -+ s_r = SIGN(-a_i, b_r) -+ if (abs(s_r - a_r) > 1.0D-6) STOP 24 -+ -+ mx_i = MAX(-a_i, -b_i, x_i, y_i) -+ if (mx_i .ne. x_i) STOP 25 -+ mx_i = MAX(-a2_i, -b2_i, x_i, y_i) -+ if (mx_i .ne. x_i) STOP 26 -+ mx_r = MAX(-a_r, -b_r, x_r, y_r) -+ if (abs(mx_r - x_r) > 1.0D-6) STOP 27 -+ mx_r = MAX(-a_r, -b_r, x_r, y_r) -+ if (abs(mx_r - x_r) > 1.0D-6) STOP 28 -+ mx_r = MAX(-a_i, -b_r, x_r, y_i) -+ if (abs(mx_r - x_r) > 1.0D-6) STOP 29 -+ mx_i = MAXLOC(array_nan, 1) -+ if (mx_i .ne. 2) STOP 30 -+ -+ mn_i = MIN(-a_i, -b_i, x_i, y_i) -+ if (mn_i .ne. -a_i) STOP 31 -+ mn_i = MIN(-a2_i, -b2_i, x_i, y_i) -+ if (mn_i .ne. -a2_i) STOP 32 -+ mn_r = MIN(-a_r, -b_r, x_r, y_r) -+ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 33 -+ mn_r = MIN(-a2_r, -b2_r, x_r, y_r) -+ if (abs(mn_r - (-a2_r)) > 1.0D-6) STOP 34 -+ mn_r = MIN(-a_i, -b_r, x_r, y_i) -+ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 35 -+ mn_i = MINLOC(array_nan, 1) -+ if (mn_i .ne. 1) STOP 36 -+ END PROGRAM -diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_2.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_2.f -new file mode 100644 -index 00000000000..d64d468f7d1 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_2.f -@@ -0,0 +1,130 @@ -+! { dg-do run } -+! { dg-options "-fdec-promotion" } -+! -+! Test promotion between integers and reals in intrinsic operations. -+! These operations are: mod, modulo, dim, sign, min, max, minloc and -+! maxloc. -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ PROGRAM promotion_int_real -+ REAL l/0.0/ -+ INTEGER a_i/4/ -+ INTEGER*4 a2_i/4/ -+ INTEGER b_i/3/ -+ INTEGER*8 b2_i/3/ -+ INTEGER x_i/2/ -+ INTEGER y_i/1/ -+ REAL a_r/4.0/ -+ REAL*4 a2_r/4.0/ -+ REAL b_r/3.0/ -+ REAL*8 b2_r/3.0/ -+ REAL x_r/2.0/ -+ REAL y_r/1.0/ -+ -+ REAL array_nan(4) -+ DATA array_nan(1)/-4.0/ -+ DATA array_nan(2)/3.0/ -+ DATA array_nan(3)/-2/ -+ -+ INTEGER m_i/0/ -+ REAL m_r/0.0/ -+ -+ INTEGER md_i/0/ -+ REAL md_r/0.0/ -+ -+ INTEGER d_i/0/ -+ REAL d_r/0.0/ -+ -+ INTEGER s_i/0/ -+ REAL s_r/0.0/ -+ -+ INTEGER mn_i/0/ -+ REAL mn_r/0.0/ -+ -+ INTEGER mx_i/0/ -+ REAL mx_r/0.0/ -+ -+ ! array_nan 4th position value is NAN -+ array_nan(4) = 0/l -+ -+ m_i = MOD(a_i, b_i) -+ if (m_i .ne. 1) STOP 1 -+ m_i = MOD(a2_i, b2_i) -+ if (m_i .ne. 1) STOP 2 -+ m_r = MOD(a_r, b_r) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 -+ m_r = MOD(a2_r, b2_r) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 -+ m_r = MOD(a_i, b_r) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 5 -+ m_r = MOD(a_r, b_i) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 6 -+ -+ md_i = MODULO(a_i, b_i) -+ if (md_i .ne. 1) STOP 7 -+ md_i = MODULO(a2_i, b2_i) -+ if (md_i .ne. 1) STOP 8 -+ md_r = MODULO(a_r, b_r) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 9 -+ md_r = MODULO(a2_r, b2_r) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 10 -+ md_r = MODULO(a_i, b_r) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 11 -+ md_r = MODULO(a_r, b_i) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 12 -+ -+ d_i = DIM(a_i, b_i) -+ if (d_i .ne. 1) STOP 13 -+ d_i = DIM(a2_i, b2_i) -+ if (d_i .ne. 1) STOP 14 -+ d_r = DIM(a_r, b_r) -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 15 -+ d_r = DIM(a2_r, b2_r) -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 16 -+ d_r = DIM(a_r, b_i) -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 17 -+ d_r = DIM(b_i, a_r) -+ if (abs(d_r) > 1.0D-6) STOP 18 -+ -+ s_i = SIGN(-a_i, b_i) -+ if (s_i .ne. 4) STOP 19 -+ s_i = SIGN(-a2_i, b2_i) -+ if (s_i .ne. 4) STOP 20 -+ s_r = SIGN(a_r, -b_r) -+ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 21 -+ s_r = SIGN(a2_r, -b2_r) -+ if (abs(s_r - (-a2_r)) > 1.0D-6) STOP 22 -+ s_r = SIGN(a_r, -b_i) -+ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 23 -+ s_r = SIGN(-a_i, b_r) -+ if (abs(s_r - a_r) > 1.0D-6) STOP 24 -+ -+ mx_i = MAX(-a_i, -b_i, x_i, y_i) -+ if (mx_i .ne. x_i) STOP 25 -+ mx_i = MAX(-a2_i, -b2_i, x_i, y_i) -+ if (mx_i .ne. x_i) STOP 26 -+ mx_r = MAX(-a_r, -b_r, x_r, y_r) -+ if (abs(mx_r - x_r) > 1.0D-6) STOP 27 -+ mx_r = MAX(-a_r, -b_r, x_r, y_r) -+ if (abs(mx_r - x_r) > 1.0D-6) STOP 28 -+ mx_r = MAX(-a_i, -b_r, x_r, y_i) -+ if (abs(mx_r - x_r) > 1.0D-6) STOP 29 -+ mx_i = MAXLOC(array_nan, 1) -+ if (mx_i .ne. 2) STOP 30 -+ -+ mn_i = MIN(-a_i, -b_i, x_i, y_i) -+ if (mn_i .ne. -a_i) STOP 31 -+ mn_i = MIN(-a2_i, -b2_i, x_i, y_i) -+ if (mn_i .ne. -a2_i) STOP 32 -+ mn_r = MIN(-a_r, -b_r, x_r, y_r) -+ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 33 -+ mn_r = MIN(-a2_r, -b2_r, x_r, y_r) -+ if (abs(mn_r - (-a2_r)) > 1.0D-6) STOP 34 -+ mn_r = MIN(-a_i, -b_r, x_r, y_i) -+ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 35 -+ mn_i = MINLOC(array_nan, 1) -+ if (mn_i .ne. 1) STOP 36 -+ END PROGRAM -diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_3.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_3.f -new file mode 100644 -index 00000000000..0708b666633 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_3.f -@@ -0,0 +1,130 @@ -+! { dg-do compile } -+! { dg-options "-fdec -fno-dec-promotion" } -+! -+! Test promotion between integers and reals in intrinsic operations. -+! These operations are: mod, modulo, dim, sign, min, max, minloc and -+! maxloc. -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ PROGRAM promotion_int_real -+ REAL l/0.0/ -+ INTEGER a_i/4/ -+ INTEGER*4 a2_i/4/ -+ INTEGER b_i/3/ -+ INTEGER*8 b2_i/3/ -+ INTEGER x_i/2/ -+ INTEGER y_i/1/ -+ REAL a_r/4.0/ -+ REAL*4 a2_r/4.0/ -+ REAL b_r/3.0/ -+ REAL*8 b2_r/3.0/ -+ REAL x_r/2.0/ -+ REAL y_r/1.0/ -+ -+ REAL array_nan(4) -+ DATA array_nan(1)/-4.0/ -+ DATA array_nan(2)/3.0/ -+ DATA array_nan(3)/-2/ -+ -+ INTEGER m_i/0/ -+ REAL m_r/0.0/ -+ -+ INTEGER md_i/0/ -+ REAL md_r/0.0/ -+ -+ INTEGER d_i/0/ -+ REAL d_r/0.0/ -+ -+ INTEGER s_i/0/ -+ REAL s_r/0.0/ -+ -+ INTEGER mn_i/0/ -+ REAL mn_r/0.0/ -+ -+ INTEGER mx_i/0/ -+ REAL mx_r/0.0/ -+ -+ ! array_nan 4th position value is NAN -+ array_nan(4) = 0/l -+ -+ m_i = MOD(a_i, b_i) -+ if (m_i .ne. 1) STOP 1 -+ m_i = MOD(a2_i, b2_i) -+ if (m_i .ne. 1) STOP 2 -+ m_r = MOD(a_r, b_r) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 -+ m_r = MOD(a2_r, b2_r) -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 -+ m_r = MOD(a_i, b_r) ! { dg-error "'a' and 'p' arguments" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 5 -+ m_r = MOD(a_r, b_i) ! { dg-error "'a' and 'p' arguments" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 6 -+ -+ md_i = MODULO(a_i, b_i) -+ if (md_i .ne. 1) STOP 7 -+ md_i = MODULO(a2_i, b2_i) -+ if (md_i .ne. 1) STOP 8 -+ md_r = MODULO(a_r, b_r) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 9 -+ md_r = MODULO(a2_r, b2_r) -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 10 -+ md_r = MODULO(a_i, b_r) ! { dg-error "'a' and 'p' arguments" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 11 -+ md_r = MODULO(a_r, b_i) ! { dg-error "'a' and 'p' arguments" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 12 -+ -+ d_i = DIM(a_i, b_i) -+ if (d_i .ne. 1) STOP 13 -+ d_i = DIM(a2_i, b2_i) -+ if (d_i .ne. 1) STOP 14 -+ d_r = DIM(a_r, b_r) -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 15 -+ d_r = DIM(a2_r, b2_r) -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 16 -+ d_r = DIM(a_r, b_i) ! { dg-error "'x' and 'y' arguments" } -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 17 -+ d_r = DIM(b_i, a_r) ! { dg-error "'x' and 'y' arguments" } -+ if (abs(d_r) > 1.0D-6) STOP 18 -+ -+ s_i = SIGN(-a_i, b_i) -+ if (s_i .ne. 4) STOP 19 -+ s_i = SIGN(-a2_i, b2_i) ! { dg-error "'b' argument" } -+ if (s_i .ne. 4) STOP 20 -+ s_r = SIGN(a_r, -b_r) -+ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 21 -+ s_r = SIGN(a2_r, -b2_r) ! { dg-error "'b' argument" } -+ if (abs(s_r - (-a2_r)) > 1.0D-6) STOP 22 -+ s_r = SIGN(a_r, -b_i) ! { dg-error "'b' argument" } -+ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 23 -+ s_r = SIGN(-a_i, b_r) ! { dg-error "'b' argument" } -+ if (abs(s_r - a_r) > 1.0D-6) STOP 24 -+ -+ mx_i = MAX(-a_i, -b_i, x_i, y_i) -+ if (mx_i .ne. x_i) STOP 25 -+ mx_i = MAX(-a2_i, -b2_i, x_i, y_i) -+ if (mx_i .ne. x_i) STOP 26 -+ mx_r = MAX(-a_r, -b_r, x_r, y_r) -+ if (abs(mx_r - x_r) > 1.0D-6) STOP 27 -+ mx_r = MAX(-a_r, -b_r, x_r, y_r) -+ if (abs(mx_r - x_r) > 1.0D-6) STOP 28 -+ mx_r = MAX(-a_i, -b_r, x_r, y_i) ! { dg-error "'a2' argument" } -+ if (abs(mx_r - x_r) > 1.0D-6) STOP 29 -+ mx_i = MAXLOC(array_nan, 1) -+ if (mx_i .ne. 2) STOP 30 -+ -+ mn_i = MIN(-a_i, -b_i, x_i, y_i) -+ if (mn_i .ne. -a_i) STOP 31 -+ mn_i = MIN(-a2_i, -b2_i, x_i, y_i) -+ if (mn_i .ne. -a2_i) STOP 32 -+ mn_r = MIN(-a_r, -b_r, x_r, y_r) -+ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 33 -+ mn_r = MIN(-a2_r, -b2_r, x_r, y_r) -+ if (abs(mn_r - (-a2_r)) > 1.0D-6) STOP 34 -+ mn_r = MIN(-a_i, -b_r, x_r, y_i) ! { dg-error "'a2' argument" } -+ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 35 -+ mn_i = MINLOC(array_nan, 1) -+ if (mn_i .ne. 1) STOP 36 -+ END PROGRAM -diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_4.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_4.f -new file mode 100644 -index 00000000000..efa4f236410 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_4.f -@@ -0,0 +1,118 @@ -+! { dg-do compile } -+! { dg-options "-fdec" } -+! -+! Test promotion between integers and reals in intrinsic operations. -+! These operations are: mod, modulo, dim, sign, min, max, minloc and -+! maxloc. -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ PROGRAM promotion_int_real -+ REAL l/0.0/ -+ LOGICAL a_l -+ LOGICAL*4 a2_l -+ LOGICAL b_l -+ LOGICAL*8 b2_l -+ LOGICAL x_l -+ LOGICAL y_l -+ CHARACTER a_c -+ CHARACTER*4 a2_c -+ CHARACTER b_c -+ CHARACTER*8 b2_c -+ CHARACTER x_c -+ CHARACTER y_c -+ -+ INTEGER m_i/0/ -+ REAL m_r/0.0/ -+ -+ INTEGER md_i/0/ -+ REAL md_r/0.0/ -+ -+ INTEGER d_i/0/ -+ REAL d_r/0.0/ -+ -+ INTEGER s_i/0/ -+ REAL s_r/0.0/ -+ -+ INTEGER mn_i/0/ -+ REAL mn_r/0.0/ -+ -+ INTEGER mx_i/0/ -+ REAL mx_r/0.0/ -+ -+ m_i = MOD(a_l, b_l) ! { dg-error "" } -+ if (m_i .ne. 1) STOP 1 -+ m_i = MOD(a2_l, b2_l) ! { dg-error "" } -+ if (m_i .ne. 1) STOP 2 -+ m_r = MOD(a_c, b_c) ! { dg-error "" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 -+ m_r = MOD(a2_c, b2_c) ! { dg-error "" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 -+ m_r = MOD(a_l, b_c) ! { dg-error "" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 5 -+ m_r = MOD(a_c, b_l) ! { dg-error "" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 6 -+ -+ md_i = MODULO(a_l, b_l) ! { dg-error "" } -+ if (md_i .ne. 1) STOP 7 -+ md_i = MODULO(a2_l, b2_l) ! { dg-error "" } -+ if (md_i .ne. 1) STOP 8 -+ md_r = MODULO(a_c, b_c) ! { dg-error "" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 9 -+ md_r = MODULO(a2_c, b2_c) ! { dg-error "" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 10 -+ md_r = MODULO(a_l, b_c) ! { dg-error "" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 11 -+ md_r = MODULO(a_c, b_l) ! { dg-error "" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 12 -+ -+ d_i = DIM(a_l, b_l) ! { dg-error "" } -+ if (d_i .ne. 1) STOP 13 -+ d_i = DIM(a2_l, b2_l) ! { dg-error "" } -+ if (d_i .ne. 1) STOP 14 -+ d_r = DIM(a_c, b_c) ! { dg-error "" } -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 15 -+ d_r = DIM(a2_c, b2_c) ! { dg-error "" } -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 16 -+ d_r = DIM(a_c, b_l) ! { dg-error "" } -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 17 -+ d_r = DIM(b_l, a_c) ! { dg-error "" } -+ if (abs(d_r) > 1.0D-6) STOP 18 -+ -+ s_i = SIGN(-a_l, b_l) ! { dg-error "" } -+ if (s_i .ne. 4) STOP 19 -+ s_i = SIGN(-a2_l, b2_l) ! { dg-error "" } -+ if (s_i .ne. 4) STOP 20 -+ s_r = SIGN(a_c, -b_c) ! { dg-error "" } -+ if (abs(s_r - (-a_c)) > 1.0D-6) STOP 21 ! { dg-error "" } -+ s_r = SIGN(a2_c, -b2_c) ! { dg-error "" } -+ if (abs(s_r - (-a2_c)) > 1.0D-6) STOP 22 ! { dg-error "" } -+ s_r = SIGN(a_c, -b_l) ! { dg-error "" } -+ if (abs(s_r - (-a_c)) > 1.0D-6) STOP 23 ! { dg-error "" } -+ s_r = SIGN(-a_l, b_c) ! { dg-error "" } -+ if (abs(s_r - a_c) > 1.0D-6) STOP 24 ! { dg-error "" } -+ -+ mx_i = MAX(-a_l, -b_l, x_l, y_l) ! { dg-error "" } -+ if (mx_i .ne. x_l) STOP 25 ! { dg-error "" } -+ mx_i = MAX(-a2_l, -b2_l, x_l, y_l) ! { dg-error "" } -+ if (mx_i .ne. x_l) STOP 26 ! { dg-error "" } -+ mx_r = MAX(-a_c, -b_c, x_c, y_c) ! { dg-error "" } -+ if (abs(mx_r - x_c) > 1.0D-6) STOP 27 ! { dg-error "" } -+ mx_r = MAX(-a_c, -b_c, x_c, y_c) ! { dg-error "" } -+ if (abs(mx_r - x_c) > 1.0D-6) STOP 28 ! { dg-error "" } -+ mx_r = MAX(-a_l, -b_c, x_c, y_l) ! { dg-error "" } -+ if (abs(mx_r - x_c) > 1.0D-6) STOP 29 ! { dg-error "" } -+ -+ mn_i = MIN(-a_l, -b_l, x_l, y_l) ! { dg-error "" } -+ if (mn_i .ne. -a_l) STOP 31 ! { dg-error "" } -+ mn_i = MIN(-a2_l, -b2_l, x_l, y_l) ! { dg-error "" } -+ if (mn_i .ne. -a2_l) STOP 32 ! { dg-error "" } -+ mn_r = MIN(-a_c, -b_c, x_c, y_c) ! { dg-error "" } -+ if (abs(mn_r - (-a_c)) > 1.0D-6) STOP 33 ! { dg-error "" } -+ mn_r = MIN(-a2_c, -b2_c, x_c, y_c) ! { dg-error "" } -+ if (abs(mn_r - (-a2_c)) > 1.0D-6) STOP 34 ! { dg-error "" } -+ mn_r = MIN(-a_l, -b_c, x_c, y_l) ! { dg-error "" } -+ if (abs(mn_r - (-a_c)) > 1.0D-6) STOP 35 ! { dg-error "" } -+ END PROGRAM -diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_5.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_5.f -new file mode 100644 -index 00000000000..d023af5086d ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_5.f -@@ -0,0 +1,118 @@ -+! { dg-do compile } -+! { dg-options "-fdec-promotion" } -+! -+! Test promotion between integers and reals in intrinsic operations. -+! These operations are: mod, modulo, dim, sign, min, max, minloc and -+! maxloc. -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ PROGRAM promotion_int_real -+ REAL l/0.0/ -+ LOGICAL a_l -+ LOGICAL*4 a2_l -+ LOGICAL b_l -+ LOGICAL*8 b2_l -+ LOGICAL x_l -+ LOGICAL y_l -+ CHARACTER a_c -+ CHARACTER*4 a2_c -+ CHARACTER b_c -+ CHARACTER*8 b2_c -+ CHARACTER x_c -+ CHARACTER y_c -+ -+ INTEGER m_i/0/ -+ REAL m_r/0.0/ -+ -+ INTEGER md_i/0/ -+ REAL md_r/0.0/ -+ -+ INTEGER d_i/0/ -+ REAL d_r/0.0/ -+ -+ INTEGER s_i/0/ -+ REAL s_r/0.0/ -+ -+ INTEGER mn_i/0/ -+ REAL mn_r/0.0/ -+ -+ INTEGER mx_i/0/ -+ REAL mx_r/0.0/ -+ -+ m_i = MOD(a_l, b_l) ! { dg-error "" } -+ if (m_i .ne. 1) STOP 1 -+ m_i = MOD(a2_l, b2_l) ! { dg-error "" } -+ if (m_i .ne. 1) STOP 2 -+ m_r = MOD(a_c, b_c) ! { dg-error "" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 -+ m_r = MOD(a2_c, b2_c) ! { dg-error "" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 -+ m_r = MOD(a_l, b_c) ! { dg-error "" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 5 -+ m_r = MOD(a_c, b_l) ! { dg-error "" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 6 -+ -+ md_i = MODULO(a_l, b_l) ! { dg-error "" } -+ if (md_i .ne. 1) STOP 7 -+ md_i = MODULO(a2_l, b2_l) ! { dg-error "" } -+ if (md_i .ne. 1) STOP 8 -+ md_r = MODULO(a_c, b_c) ! { dg-error "" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 9 -+ md_r = MODULO(a2_c, b2_c) ! { dg-error "" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 10 -+ md_r = MODULO(a_l, b_c) ! { dg-error "" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 11 -+ md_r = MODULO(a_c, b_l) ! { dg-error "" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 12 -+ -+ d_i = DIM(a_l, b_l) ! { dg-error "" } -+ if (d_i .ne. 1) STOP 13 -+ d_i = DIM(a2_l, b2_l) ! { dg-error "" } -+ if (d_i .ne. 1) STOP 14 -+ d_r = DIM(a_c, b_c) ! { dg-error "" } -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 15 -+ d_r = DIM(a2_c, b2_c) ! { dg-error "" } -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 16 -+ d_r = DIM(a_c, b_l) ! { dg-error "" } -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 17 -+ d_r = DIM(b_l, a_c) ! { dg-error "" } -+ if (abs(d_r) > 1.0D-6) STOP 18 -+ -+ s_i = SIGN(-a_l, b_l) ! { dg-error "" } -+ if (s_i .ne. 4) STOP 19 -+ s_i = SIGN(-a2_l, b2_l) ! { dg-error "" } -+ if (s_i .ne. 4) STOP 20 -+ s_r = SIGN(a_c, -b_c) ! { dg-error "" } -+ if (abs(s_r - (-a_c)) > 1.0D-6) STOP 21 ! { dg-error "" } -+ s_r = SIGN(a2_c, -b2_c) ! { dg-error "" } -+ if (abs(s_r - (-a2_c)) > 1.0D-6) STOP 22 ! { dg-error "" } -+ s_r = SIGN(a_c, -b_l) ! { dg-error "" } -+ if (abs(s_r - (-a_c)) > 1.0D-6) STOP 23 ! { dg-error "" } -+ s_r = SIGN(-a_l, b_c) ! { dg-error "" } -+ if (abs(s_r - a_c) > 1.0D-6) STOP 24 ! { dg-error "" } -+ -+ mx_i = MAX(-a_l, -b_l, x_l, y_l) ! { dg-error "" } -+ if (mx_i .ne. x_l) STOP 25 ! { dg-error "" } -+ mx_i = MAX(-a2_l, -b2_l, x_l, y_l) ! { dg-error "" } -+ if (mx_i .ne. x_l) STOP 26 ! { dg-error "" } -+ mx_r = MAX(-a_c, -b_c, x_c, y_c) ! { dg-error "" } -+ if (abs(mx_r - x_c) > 1.0D-6) STOP 27 ! { dg-error "" } -+ mx_r = MAX(-a_c, -b_c, x_c, y_c) ! { dg-error "" } -+ if (abs(mx_r - x_c) > 1.0D-6) STOP 28 ! { dg-error "" } -+ mx_r = MAX(-a_l, -b_c, x_c, y_l) ! { dg-error "" } -+ if (abs(mx_r - x_c) > 1.0D-6) STOP 29 ! { dg-error "" } -+ -+ mn_i = MIN(-a_l, -b_l, x_l, y_l) ! { dg-error "" } -+ if (mn_i .ne. -a_l) STOP 31 ! { dg-error "" } -+ mn_i = MIN(-a2_l, -b2_l, x_l, y_l) ! { dg-error "" } -+ if (mn_i .ne. -a2_l) STOP 32 ! { dg-error "" } -+ mn_r = MIN(-a_c, -b_c, x_c, y_c) ! { dg-error "" } -+ if (abs(mn_r - (-a_c)) > 1.0D-6) STOP 33 ! { dg-error "" } -+ mn_r = MIN(-a2_c, -b2_c, x_c, y_c) ! { dg-error "" } -+ if (abs(mn_r - (-a2_c)) > 1.0D-6) STOP 34 ! { dg-error "" } -+ mn_r = MIN(-a_l, -b_c, x_c, y_l) ! { dg-error "" } -+ if (abs(mn_r - (-a_c)) > 1.0D-6) STOP 35 ! { dg-error "" } -+ END PROGRAM -diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_6.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_6.f -new file mode 100644 -index 00000000000..00f8fb88f1b ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_6.f -@@ -0,0 +1,118 @@ -+! { dg-do compile } -+! { dg-options "-fdec" } -+! -+! Test promotion between integers and reals in intrinsic operations. -+! These operations are: mod, modulo, dim, sign, min, max, minloc and -+! maxloc. -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ PROGRAM promotion_int_real -+ REAL l/0.0/ -+ INTEGER a_i/4/ -+ INTEGER*4 a2_i/4/ -+ CHARACTER b_c -+ CHARACTER*8 b2_c -+ INTEGER x_i/2/ -+ CHARACTER y_c -+ REAL a_r/4.0/ -+ REAL*4 a2_r/4.0/ -+ LOGICAL b_l -+ LOGICAL*8 b2_l -+ REAL x_r/2.0/ -+ LOGICAL y_l -+ -+ INTEGER m_i/0/ -+ REAL m_r/0.0/ -+ -+ INTEGER md_i/0/ -+ REAL md_r/0.0/ -+ -+ INTEGER d_i/0/ -+ REAL d_r/0.0/ -+ -+ INTEGER s_i/0/ -+ REAL s_r/0.0/ -+ -+ INTEGER mn_i/0/ -+ REAL mn_r/0.0/ -+ -+ INTEGER mx_i/0/ -+ REAL mx_r/0.0/ -+ -+ m_i = MOD(a_i, b_c) ! { dg-error "" } -+ if (m_i .ne. 1) STOP 1 -+ m_i = MOD(a2_i, b2_c) ! { dg-error "" } -+ if (m_i .ne. 1) STOP 2 -+ m_r = MOD(a_r, b_l) ! { dg-error "" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 -+ m_r = MOD(a2_r, b2_l) ! { dg-error "" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 -+ m_r = MOD(a_i, b_l) ! { dg-error "" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 5 -+ m_r = MOD(a_r, b_c) ! { dg-error "" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 6 -+ -+ md_i = MODULO(a_i, b_c) ! { dg-error "" } -+ if (md_i .ne. 1) STOP 7 -+ md_i = MODULO(a2_i, b2_c) ! { dg-error "" } -+ if (md_i .ne. 1) STOP 8 -+ md_r = MODULO(a_r, b_l) ! { dg-error "" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 9 -+ md_r = MODULO(a2_r, b2_l) ! { dg-error "" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 10 -+ md_r = MODULO(a_i, b_l) ! { dg-error "" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 11 -+ md_r = MODULO(a_r, b_c) ! { dg-error "" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 12 -+ -+ d_i = DIM(a_i, b_c) ! { dg-error "" } -+ if (d_i .ne. 1) STOP 13 -+ d_i = DIM(a2_i, b2_c) ! { dg-error "" } -+ if (d_i .ne. 1) STOP 14 -+ d_r = DIM(a_r, b_l) ! { dg-error "" } -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 15 -+ d_r = DIM(a2_r, b2_l) ! { dg-error "" } -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 16 -+ d_r = DIM(a_r, b_c) ! { dg-error "" } -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 17 -+ d_r = DIM(b_c, a_r) ! { dg-error "" } -+ if (abs(d_r) > 1.0D-6) STOP 18 -+ -+ s_i = SIGN(-a_i, b_c) ! { dg-error "" } -+ if (s_i .ne. 4) STOP 19 -+ s_i = SIGN(-a2_i, b2_c) ! { dg-error "" } -+ if (s_i .ne. 4) STOP 20 -+ s_r = SIGN(a_r, -b_l) ! { dg-error "" } -+ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 21 -+ s_r = SIGN(a2_r, -b2_l) ! { dg-error "" } -+ if (abs(s_r - (-a2_r)) > 1.0D-6) STOP 22 -+ s_r = SIGN(a_r, -b_c) ! { dg-error "" } -+ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 23 -+ s_r = SIGN(-a_i, b_l) ! { dg-error "" } -+ if (abs(s_r - a_r) > 1.0D-6) STOP 24 -+ -+ mx_i = MAX(-a_i, -b_c, x_i, y_c) ! { dg-error "" } -+ if (mx_i .ne. x_i) STOP 25 -+ mx_i = MAX(-a2_i, -b2_c, x_i, y_c) ! { dg-error "" } -+ if (mx_i .ne. x_i) STOP 26 -+ mx_r = MAX(-a_r, -b_l, x_r, y_l) ! { dg-error "" } -+ if (abs(mx_r - x_r) > 1.0D-6) STOP 27 -+ mx_r = MAX(-a_r, -b_l, x_r, y_l) ! { dg-error "" } -+ if (abs(mx_r - x_r) > 1.0D-6) STOP 28 -+ mx_r = MAX(-a_i, -b_l, x_r, y_c) ! { dg-error "" } -+ if (abs(mx_r - x_r) > 1.0D-6) STOP 29 -+ -+ mn_i = MIN(-a_i, -b_c, x_i, y_c) ! { dg-error "" } -+ if (mn_i .ne. -a_i) STOP 31 -+ mn_i = MIN(-a2_i, -b2_c, x_i, y_c) ! { dg-error "" } -+ if (mn_i .ne. -a2_i) STOP 32 -+ mn_r = MIN(-a_r, -b_l, x_r, y_l) ! { dg-error "" } -+ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 33 -+ mn_r = MIN(-a2_r, -b2_l, x_r, y_l) ! { dg-error "" } -+ if (abs(mn_r - (-a2_r)) > 1.0D-6) STOP 34 -+ mn_r = MIN(-a_i, -b_l, x_r, y_c) ! { dg-error "" } -+ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 35 -+ END PROGRAM -diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_7.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_7.f -new file mode 100644 -index 00000000000..1d4150d81c0 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_7.f -@@ -0,0 +1,118 @@ -+! { dg-do compile } -+! { dg-options "-fdec-promotion" } -+! -+! Test promotion between integers and reals in intrinsic operations. -+! These operations are: mod, modulo, dim, sign, min, max, minloc and -+! maxloc. -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ PROGRAM promotion_int_real -+ REAL l/0.0/ -+ INTEGER a_i/4/ -+ INTEGER*4 a2_i/4/ -+ CHARACTER b_c -+ CHARACTER*8 b2_c -+ INTEGER x_i/2/ -+ CHARACTER y_c -+ REAL a_r/4.0/ -+ REAL*4 a2_r/4.0/ -+ LOGICAL b_l -+ LOGICAL*8 b2_l -+ REAL x_r/2.0/ -+ LOGICAL y_l -+ -+ INTEGER m_i/0/ -+ REAL m_r/0.0/ -+ -+ INTEGER md_i/0/ -+ REAL md_r/0.0/ -+ -+ INTEGER d_i/0/ -+ REAL d_r/0.0/ -+ -+ INTEGER s_i/0/ -+ REAL s_r/0.0/ -+ -+ INTEGER mn_i/0/ -+ REAL mn_r/0.0/ -+ -+ INTEGER mx_i/0/ -+ REAL mx_r/0.0/ -+ -+ m_i = MOD(a_i, b_c) ! { dg-error "" } -+ if (m_i .ne. 1) STOP 1 -+ m_i = MOD(a2_i, b2_c) ! { dg-error "" } -+ if (m_i .ne. 1) STOP 2 -+ m_r = MOD(a_r, b_l) ! { dg-error "" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 3 -+ m_r = MOD(a2_r, b2_l) ! { dg-error "" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 4 -+ m_r = MOD(a_i, b_l) ! { dg-error "" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 5 -+ m_r = MOD(a_r, b_c) ! { dg-error "" } -+ if (abs(m_r - 1.0) > 1.0D-6) STOP 6 -+ -+ md_i = MODULO(a_i, b_c) ! { dg-error "" } -+ if (md_i .ne. 1) STOP 7 -+ md_i = MODULO(a2_i, b2_c) ! { dg-error "" } -+ if (md_i .ne. 1) STOP 8 -+ md_r = MODULO(a_r, b_l) ! { dg-error "" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 9 -+ md_r = MODULO(a2_r, b2_l) ! { dg-error "" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 10 -+ md_r = MODULO(a_i, b_l) ! { dg-error "" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 11 -+ md_r = MODULO(a_r, b_c) ! { dg-error "" } -+ if (abs(md_r - 1.0) > 1.0D-6) STOP 12 -+ -+ d_i = DIM(a_i, b_c) ! { dg-error "" } -+ if (d_i .ne. 1) STOP 13 -+ d_i = DIM(a2_i, b2_c) ! { dg-error "" } -+ if (d_i .ne. 1) STOP 14 -+ d_r = DIM(a_r, b_l) ! { dg-error "" } -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 15 -+ d_r = DIM(a2_r, b2_l) ! { dg-error "" } -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 16 -+ d_r = DIM(a_r, b_c) ! { dg-error "" } -+ if (abs(d_r - 1.0) > 1.0D-6) STOP 17 -+ d_r = DIM(b_c, a_r) ! { dg-error "" } -+ if (abs(d_r) > 1.0D-6) STOP 18 -+ -+ s_i = SIGN(-a_i, b_c) ! { dg-error "" } -+ if (s_i .ne. 4) STOP 19 -+ s_i = SIGN(-a2_i, b2_c) ! { dg-error "" } -+ if (s_i .ne. 4) STOP 20 -+ s_r = SIGN(a_r, -b_l) ! { dg-error "" } -+ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 21 -+ s_r = SIGN(a2_r, -b2_l) ! { dg-error "" } -+ if (abs(s_r - (-a2_r)) > 1.0D-6) STOP 22 -+ s_r = SIGN(a_r, -b_c) ! { dg-error "" } -+ if (abs(s_r - (-a_r)) > 1.0D-6) STOP 23 -+ s_r = SIGN(-a_i, b_l) ! { dg-error "" } -+ if (abs(s_r - a_r) > 1.0D-6) STOP 24 -+ -+ mx_i = MAX(-a_i, -b_c, x_i, y_c) ! { dg-error "" } -+ if (mx_i .ne. x_i) STOP 25 -+ mx_i = MAX(-a2_i, -b2_c, x_i, y_c) ! { dg-error "" } -+ if (mx_i .ne. x_i) STOP 26 -+ mx_r = MAX(-a_r, -b_l, x_r, y_l) ! { dg-error "" } -+ if (abs(mx_r - x_r) > 1.0D-6) STOP 27 -+ mx_r = MAX(-a_r, -b_l, x_r, y_l) ! { dg-error "" } -+ if (abs(mx_r - x_r) > 1.0D-6) STOP 28 -+ mx_r = MAX(-a_i, -b_l, x_r, y_c) ! { dg-error "" } -+ if (abs(mx_r - x_r) > 1.0D-6) STOP 29 -+ -+ mn_i = MIN(-a_i, -b_c, x_i, y_c) ! { dg-error "" } -+ if (mn_i .ne. -a_i) STOP 31 -+ mn_i = MIN(-a2_i, -b2_c, x_i, y_c) ! { dg-error "" } -+ if (mn_i .ne. -a2_i) STOP 32 -+ mn_r = MIN(-a_r, -b_l, x_r, y_l) ! { dg-error "" } -+ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 33 -+ mn_r = MIN(-a2_r, -b2_l, x_r, y_l) ! { dg-error "" } -+ if (abs(mn_r - (-a2_r)) > 1.0D-6) STOP 34 -+ mn_r = MIN(-a_i, -b_l, x_r, y_c) ! { dg-error "" } -+ if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 35 -+ END PROGRAM -diff --git a/gcc/testsuite/gfortran.dg/dec_kind_promotion-1.f b/gcc/testsuite/gfortran.dg/dec_kind_promotion-1.f -new file mode 100644 -index 00000000000..435bf98350c ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_kind_promotion-1.f -@@ -0,0 +1,40 @@ -+!{ dg-do run } -+!{ dg-options "-fdec" } -+! -+! integer types of a smaller kind than expected should be -+! accepted by type specific intrinsic functions -+! -+! Contributed by Mark Eggleston -+! -+ program test_small_type_promtion -+ implicit none -+ integer(1) :: a = 1 -+ integer :: i -+ if (iiabs(-9_1).ne.9) stop 1 -+ if (iabs(-9_1).ne.9) stop 2 -+ if (iabs(-9_2).ne.9) stop 3 -+ if (jiabs(-9_1).ne.9) stop 4 -+ if (jiabs(-9_2).ne.9) stop 5 -+ if (iishft(1_1, 2).ne.4) stop 6 -+ if (jishft(1_1, 2).ne.4) stop 7 -+ if (jishft(1_2, 2).ne.4) stop 8 -+ if (kishft(1_1, 2).ne.4) stop 9 -+ if (kishft(1_2, 2).ne.4) stop 10 -+ if (kishft(1_4, 2).ne.4) stop 11 -+ if (imod(17_1, 3).ne.2) stop 12 -+ if (jmod(17_1, 3).ne.2) stop 13 -+ if (jmod(17_2, 3).ne.2) stop 14 -+ if (kmod(17_1, 3).ne.2) stop 15 -+ if (kmod(17_2, 3).ne.2) stop 16 -+ if (kmod(17_4, 3).ne.2) stop 17 -+ if (inot(5_1).ne.-6) stop 18 -+ if (jnot(5_1).ne.-6) stop 19 -+ if (jnot(5_2).ne.-6) stop 20 -+ if (knot(5_1).ne.-6) stop 21 -+ if (knot(5_2).ne.-6) stop 22 -+ if (knot(5_4).ne.-6) stop 23 -+ if (isign(-77_1, 1).ne.77) stop 24 -+ if (isign(-77_1, -1).ne.-77) stop 25 -+ if (isign(-77_2, 1).ne.77) stop 26 -+ if (isign(-77_2, -1).ne.-77) stop 27 -+ end program -diff --git a/gcc/testsuite/gfortran.dg/dec_kind_promotion-2.f b/gcc/testsuite/gfortran.dg/dec_kind_promotion-2.f -new file mode 100644 -index 00000000000..7b1697ca665 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_kind_promotion-2.f -@@ -0,0 +1,40 @@ -+!{ dg-do run } -+!{ dg-options "-fdec-intrinsic-ints -fdec-promotion" } -+! -+! integer types of a smaller kind than expected should be -+! accepted by type specific intrinsic functions -+! -+! Contributed by Mark Eggleston -+! -+ program test_small_type_promtion -+ implicit none -+ integer(1) :: a = 1 -+ integer :: i -+ if (iiabs(-9_1).ne.9) stop 1 -+ if (iabs(-9_1).ne.9) stop 2 -+ if (iabs(-9_2).ne.9) stop 3 -+ if (jiabs(-9_1).ne.9) stop 4 -+ if (jiabs(-9_2).ne.9) stop 5 -+ if (iishft(1_1, 2).ne.4) stop 6 -+ if (jishft(1_1, 2).ne.4) stop 7 -+ if (jishft(1_2, 2).ne.4) stop 8 -+ if (kishft(1_1, 2).ne.4) stop 9 -+ if (kishft(1_2, 2).ne.4) stop 10 -+ if (kishft(1_4, 2).ne.4) stop 11 -+ if (imod(17_1, 3).ne.2) stop 12 -+ if (jmod(17_1, 3).ne.2) stop 13 -+ if (jmod(17_2, 3).ne.2) stop 14 -+ if (kmod(17_1, 3).ne.2) stop 15 -+ if (kmod(17_2, 3).ne.2) stop 16 -+ if (kmod(17_4, 3).ne.2) stop 17 -+ if (inot(5_1).ne.-6) stop 18 -+ if (jnot(5_1).ne.-6) stop 19 -+ if (jnot(5_2).ne.-6) stop 20 -+ if (knot(5_1).ne.-6) stop 21 -+ if (knot(5_2).ne.-6) stop 22 -+ if (knot(5_4).ne.-6) stop 23 -+ if (isign(-77_1, 1).ne.77) stop 24 -+ if (isign(-77_1, -1).ne.-77) stop 25 -+ if (isign(-77_2, 1).ne.77) stop 26 -+ if (isign(-77_2, -1).ne.-77) stop 27 -+ end program -diff --git a/gcc/testsuite/gfortran.dg/dec_kind_promotion-3.f b/gcc/testsuite/gfortran.dg/dec_kind_promotion-3.f -new file mode 100644 -index 00000000000..db8dff6c55d ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_kind_promotion-3.f -@@ -0,0 +1,39 @@ -+!{ dg-do compile } -+!{ dg-options "-fdec -fno-dec-promotion" } -+! -+! integer types of a smaller kind than expected should be -+! accepted by type specific intrinsic functions -+! -+! Contributed by Mark Eggleston -+! -+ program test_small_type_promtion -+ integer(1) :: a = 1 -+ integer :: i -+ if (iiabs(-9_1).ne.9) stop 1 -+ if (iabs(-9_1).ne.9) stop 2 ! { dg-error "type mismatch in argument" } -+ if (iabs(-9_2).ne.9) stop 3 ! { dg-error "type mismatch in argument" } -+ if (jiabs(-9_1).ne.9) stop 4 -+ if (jiabs(-9_2).ne.9) stop 5 -+ if (iishft(1_1, 2).ne.4) stop 6 -+ if (jishft(1_1, 2).ne.4) stop 7 -+ if (jishft(1_2, 2).ne.4) stop 8 -+ if (kishft(1_1, 2).ne.4) stop 9 -+ if (kishft(1_2, 2).ne.4) stop 10 -+ if (kishft(1_4, 2).ne.4) stop 11 -+ if (imod(17_1, 3).ne.2) stop 12 -+ if (jmod(17_1, 3).ne.2) stop 13 -+ if (jmod(17_2, 3).ne.2) stop 14 -+ if (kmod(17_1, 3).ne.2) stop 15 -+ if (kmod(17_2, 3).ne.2) stop 16 -+ if (kmod(17_4, 3).ne.2) stop 17 -+ if (inot(5_1).ne.-6) stop 18 -+ if (jnot(5_1).ne.-6) stop 19 -+ if (jnot(5_2).ne.-6) stop 20 -+ if (knot(5_1).ne.-6) stop 21 -+ if (knot(5_2).ne.-6) stop 22 -+ if (knot(5_4).ne.-6) stop 23 -+ if (isign(-77_1, 1).ne.77) stop 24 ! { dg-error "type mismatch in argument" } -+ if (isign(-77_1, -1).ne.-77) stop 25 ! { dg-error "type mismatch in argument" } -+ if (isign(-77_2, 1).ne.77) stop 26 ! { dg-error "type mismatch in argument" } -+ if (isign(-77_2, -1).ne.-77) stop 27 ! { dg-error "type mismatch in argument" } -+ end program --- -2.27.0 - diff --git a/gcc12-fortran-fdec-sequence.patch b/gcc12-fortran-fdec-sequence.patch deleted file mode 100644 index d79348e..0000000 --- a/gcc12-fortran-fdec-sequence.patch +++ /dev/null @@ -1,262 +0,0 @@ -From bb76446db10c21860a4e19569ce3e350d8a2b59f Mon Sep 17 00:00:00 2001 -From: Mark Eggleston -Date: Fri, 22 Jan 2021 15:00:44 +0000 -Subject: [PATCH 09/10] Add the SEQUENCE attribute by default if it's not - present. - -Use -fdec-sequence to enable this feature. Also enabled by -fdec. ---- - gcc/fortran/lang.opt | 4 ++ - gcc/fortran/options.cc | 1 + - gcc/fortran/resolve.cc | 13 ++++- - ...dd_SEQUENCE_to_COMMON_block_by_default_1.f | 57 +++++++++++++++++++ - ...dd_SEQUENCE_to_COMMON_block_by_default_2.f | 57 +++++++++++++++++++ - ...dd_SEQUENCE_to_COMMON_block_by_default_3.f | 57 +++++++++++++++++++ - 6 files changed, 186 insertions(+), 3 deletions(-) - create mode 100644 gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_1.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_2.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_3.f - -diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt -index 4ca2f93f2df..019c798cf09 100644 ---- a/gcc/fortran/lang.opt -+++ b/gcc/fortran/lang.opt -@@ -509,6 +509,10 @@ fdec-promotion - Fortran Var(flag_dec_promotion) - Add support for type promotion in intrinsic arguments. - -+fdec-sequence -+Fortran Var(flag_dec_sequence) -+Add the SEQUENCE attribute by default if it's not present. -+ - fdec-structure - Fortran Var(flag_dec_structure) - Enable support for DEC STRUCTURE/RECORD. -diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc -index 15079c7e95a..050f56fdc25 100644 ---- a/gcc/fortran/options.cc -+++ b/gcc/fortran/options.cc -@@ -83,6 +83,7 @@ set_dec_flags (int value) - SET_BITFLAG (flag_dec_override_kind, value, value); - SET_BITFLAG (flag_dec_non_logical_if, value, value); - SET_BITFLAG (flag_dec_promotion, value, value); -+ SET_BITFLAG (flag_dec_sequence, value, value); - } - - /* Finalize DEC flags. */ -diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc -index 07dd039f3bf..fe7d0cc5944 100644 ---- a/gcc/fortran/resolve.cc -+++ b/gcc/fortran/resolve.cc -@@ -978,9 +978,16 @@ resolve_common_vars (gfc_common_head *common_block, bool named_common) - - if (!(csym->ts.u.derived->attr.sequence - || csym->ts.u.derived->attr.is_bind_c)) -- gfc_error_now ("Derived type variable %qs in COMMON at %L " -- "has neither the SEQUENCE nor the BIND(C) " -- "attribute", csym->name, &csym->declared_at); -+ { -+ if (flag_dec_sequence) -+ /* Assume sequence. */ -+ csym->ts.u.derived->attr.sequence = 1; -+ else -+ gfc_error_now ("Derived type variable '%s' in COMMON at %L " -+ "has neither the SEQUENCE nor the BIND(C) " -+ "attribute", csym->name, &csym->declared_at); -+ } -+ - if (csym->ts.u.derived->attr.alloc_comp) - gfc_error_now ("Derived type variable %qs in COMMON at %L " - "has an ultimate component that is " -diff --git a/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_1.f b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_1.f -new file mode 100644 -index 00000000000..fe7b39625eb ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_1.f -@@ -0,0 +1,57 @@ -+! { dg-do run } -+! { dg-options "-fdec" } -+! -+! Test add default SEQUENCE attribute derived types appearing in -+! COMMON blocks and EQUIVALENCE statements. -+! -+! Contributed by Francisco Redondo Marchena -+! Modified by Mark Eggleston -+! -+ MODULE SEQ -+ TYPE STRUCT1 -+ INTEGER*4 ID -+ INTEGER*4 TYPE -+ INTEGER*8 DEFVAL -+ CHARACTER*(4) NAME -+ LOGICAL*1 NIL -+ END TYPE STRUCT1 -+ END MODULE -+ -+ SUBROUTINE A -+ USE SEQ -+ TYPE (STRUCT1) S -+ COMMON /BLOCK1/ S -+ IF (S%ID.NE.5) STOP 1 -+ IF (S%TYPE.NE.1000) STOP 2 -+ IF (S%DEFVAL.NE.-99) STOP 3 -+ IF (S%NAME.NE."JANE") STOP 4 -+ IF (S%NIL.NEQV..FALSE.) STOP 5 -+ END SUBROUTINE -+ -+ PROGRAM sequence_att_common -+ USE SEQ -+ IMPLICIT NONE -+ TYPE (STRUCT1) S1 -+ TYPE (STRUCT1) S2 -+ TYPE (STRUCT1) S3 -+ -+ EQUIVALENCE (S1,S2) -+ COMMON /BLOCK1/ S3 -+ -+ S1%ID = 5 -+ S1%TYPE = 1000 -+ S1%DEFVAL = -99 -+ S1%NAME = "JANE" -+ S1%NIL = .FALSE. -+ -+ IF (S2%ID.NE.5) STOP 1 -+ IF (S2%TYPE.NE.1000) STOP 2 -+ IF (S2%DEFVAL.NE.-99) STOP 3 -+ IF (S2%NAME.NE."JANE") STOP 4 -+ IF (S2%NIL.NEQV..FALSE.) STOP 5 -+ -+ S3 = S1 -+ -+ CALL A -+ -+ END -diff --git a/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_2.f b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_2.f -new file mode 100644 -index 00000000000..83512f0f3a2 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_2.f -@@ -0,0 +1,57 @@ -+! { dg-do run } -+! { dg-options "-fdec-sequence" } -+! -+! Test add default SEQUENCE attribute derived types appearing in -+! COMMON blocks and EQUIVALENCE statements. -+! -+! Contributed by Francisco Redondo Marchena -+! Modified by Mark Eggleston -+! -+ MODULE SEQ -+ TYPE STRUCT1 -+ INTEGER*4 ID -+ INTEGER*4 TYPE -+ INTEGER*8 DEFVAL -+ CHARACTER*(4) NAME -+ LOGICAL*1 NIL -+ END TYPE STRUCT1 -+ END MODULE -+ -+ SUBROUTINE A -+ USE SEQ -+ TYPE (STRUCT1) S -+ COMMON /BLOCK1/ S -+ IF (S%ID.NE.5) STOP 1 -+ IF (S%TYPE.NE.1000) STOP 2 -+ IF (S%DEFVAL.NE.-99) STOP 3 -+ IF (S%NAME.NE."JANE") STOP 4 -+ IF (S%NIL.NEQV..FALSE.) STOP 5 -+ END SUBROUTINE -+ -+ PROGRAM sequence_att_common -+ USE SEQ -+ IMPLICIT NONE -+ TYPE (STRUCT1) S1 -+ TYPE (STRUCT1) S2 -+ TYPE (STRUCT1) S3 -+ -+ EQUIVALENCE (S1,S2) -+ COMMON /BLOCK1/ S3 -+ -+ S1%ID = 5 -+ S1%TYPE = 1000 -+ S1%DEFVAL = -99 -+ S1%NAME = "JANE" -+ S1%NIL = .FALSE. -+ -+ IF (S2%ID.NE.5) STOP 1 -+ IF (S2%TYPE.NE.1000) STOP 2 -+ IF (S2%DEFVAL.NE.-99) STOP 3 -+ IF (S2%NAME.NE."JANE") STOP 4 -+ IF (S2%NIL.NEQV..FALSE.) STOP 5 -+ -+ S3 = S1 -+ -+ CALL A -+ -+ END -diff --git a/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_3.f b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_3.f -new file mode 100644 -index 00000000000..26cd59f9090 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_3.f -@@ -0,0 +1,57 @@ -+! { dg-do compile } -+! { dg-options "-fdec -fno-dec-sequence" } -+! -+! Test add default SEQUENCE attribute derived types appearing in -+! COMMON blocks and EQUIVALENCE statements. -+! -+! Contributed by Francisco Redondo Marchena -+! Modified by Mark Eggleston -+! -+ MODULE SEQ -+ TYPE STRUCT1 -+ INTEGER*4 ID -+ INTEGER*4 TYPE -+ INTEGER*8 DEFVAL -+ CHARACTER*(4) NAME -+ LOGICAL*1 NIL -+ END TYPE STRUCT1 -+ END MODULE -+ -+ SUBROUTINE A -+ USE SEQ -+ TYPE (STRUCT1) S ! { dg-error "Derived type variable" } -+ COMMON /BLOCK1/ S -+ IF (S%ID.NE.5) STOP 1 -+ IF (S%TYPE.NE.1000) STOP 2 -+ IF (S%DEFVAL.NE.-99) STOP 3 -+ IF (S%NAME.NE."JANE") STOP 4 -+ IF (S%NIL.NEQV..FALSE.) STOP 5 -+ END SUBROUTINE -+ -+ PROGRAM sequence_att_common -+ USE SEQ -+ IMPLICIT NONE -+ TYPE (STRUCT1) S1 -+ TYPE (STRUCT1) S2 -+ TYPE (STRUCT1) S3 ! { dg-error "Derived type variable" } -+ -+ EQUIVALENCE (S1,S2) ! { dg-error "Derived type variable" } -+ COMMON /BLOCK1/ S3 -+ -+ S1%ID = 5 -+ S1%TYPE = 1000 -+ S1%DEFVAL = -99 -+ S1%NAME = "JANE" -+ S1%NIL = .FALSE. -+ -+ IF (S2%ID.NE.5) STOP 1 -+ IF (S2%TYPE.NE.1000) STOP 2 -+ IF (S2%DEFVAL.NE.-99) STOP 3 -+ IF (S2%NAME.NE."JANE") STOP 4 -+ IF (S2%NIL.NEQV..FALSE.) STOP 5 -+ -+ S3 = S1 -+ -+ CALL A -+ -+ END --- -2.27.0 - From 74613be3768b1da0e60bd46edc9eab0cb55999a2 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Sat, 9 Jul 2022 14:09:37 +0200 Subject: [PATCH 118/293] Use annobin-plugin-gcc instead of annobin The "annobin" Provides was removed from the annobin rpm so let's reflect that in the gcc spec. See https://src.fedoraproject.org/rpms/annobin/c/2a644cdee42066841eb1dabebf32a060accb5f9f?branch=rawhide --- gcc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 0de7aa2..fa1bad8 100644 --- a/gcc.spec +++ b/gcc.spec @@ -777,7 +777,7 @@ to NVidia PTX capable devices if available. Summary: The annobin plugin for gcc, built by the installed version of gcc Requires: gcc = %{version}-%{release} %if %{build_annobin_plugin} -BuildRequires: annobin >= 10.62, annobin-plugin-gcc, rpm-devel, binutils-devel, xz +BuildRequires: annobin-plugin-gcc, rpm-devel, binutils-devel, xz %endif %description plugin-annobin From e503f004507e7c7ca8f38b9b897d3b6c5a34fa12 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 21 Jul 2022 04:12:01 +0000 Subject: [PATCH 119/293] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gcc.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index fa1bad8..ce9cae6 100644 --- a/gcc.spec +++ b/gcc.spec @@ -125,7 +125,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist} +Release: %{gcc_release}%{?dist}.1 # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3217,6 +3217,9 @@ end %endif %changelog +* Thu Jul 21 2022 Fedora Release Engineering - 12.1.1-3.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Thu Jun 30 2022 Jakub Jelinek 12.1.1-3 - fix up libtsan on s390x From 23a21fde253322c0f4259158d36237944791e1ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kadl=C4=8D=C3=ADk?= Date: Fri, 29 Jul 2022 16:27:49 +0200 Subject: [PATCH 120/293] Import a set of tests from RHEL --- .../abs.c | 12 + .../main.fmf | 26 +++ .../runtest.sh | 52 +++++ .../main.fmf | 29 +++ .../runtest.sh | 53 +++++ .../abc.f90 | 22 ++ .../main.fmf | 38 ++++ .../runtest.sh | 56 +++++ .../builtin.c | 29 +++ .../main.fmf | 33 +++ .../runtest.sh | 58 +++++ .../foo.java | 5 + .../main.fmf | 39 ++++ .../runtest.sh | 71 ++++++ .../main.fmf | 32 +++ .../runtest.sh | 54 +++++ .../main.fmf | 13 +- .../runtest.sh | 13 +- .../main.fmf | 26 +++ .../runtest.sh | 57 +++++ .../f.cc | 15 ++ .../main.fmf | 28 +++ .../runtest.sh | 54 +++++ .../unused_parameter_warning/main.fmf | 31 +++ .../unused_parameter_warning/runtest.sh | 60 +++++ .../unused_parameter_warning/test.cpp | 2 + tests/Sanity/compile-rpm/main.fmf | 45 ++++ tests/Sanity/compile-rpm/runtest.sh | 99 ++++++++ tests/Sanity/libitm-smoke/bins_aarch64.tar.gz | Bin 0 -> 42861 bytes tests/Sanity/libitm-smoke/bins_i686.tar.gz | Bin 0 -> 18165 bytes tests/Sanity/libitm-smoke/bins_ppc64.tar.gz | Bin 0 -> 42218 bytes tests/Sanity/libitm-smoke/bins_ppc64le.tar.gz | Bin 0 -> 41583 bytes tests/Sanity/libitm-smoke/bins_s390x.tar.gz | Bin 0 -> 20507 bytes tests/Sanity/libitm-smoke/bins_x86_64.tar.gz | Bin 0 -> 19693 bytes tests/Sanity/libitm-smoke/main.fmf | 34 +++ tests/Sanity/libitm-smoke/runtest.sh | 75 ++++++ tests/Sanity/rebuild-binutils/main.fmf | 70 ++++++ tests/Sanity/rebuild-binutils/runtest.sh | 89 ++++++++ tests/Sanity/rebuild-glibc/main.fmf | 76 +++++++ tests/Sanity/rebuild-glibc/runtest.sh | 79 +++++++ .../Sanity/test-m32-m64-options/clear_cache.c | 7 + tests/Sanity/test-m32-m64-options/cpp11.cpp | 78 +++++++ tests/Sanity/test-m32-m64-options/hello.c | 8 + tests/Sanity/test-m32-m64-options/hello.cpp | 7 + tests/Sanity/test-m32-m64-options/hello.f90 | 3 + .../test-m32-m64-options/lambda-template.C | 41 ++++ tests/Sanity/test-m32-m64-options/main.fmf | 51 +++++ tests/Sanity/test-m32-m64-options/omphello.c | 24 ++ tests/Sanity/test-m32-m64-options/quad.c | 38 ++++ tests/Sanity/test-m32-m64-options/runtest.sh | 213 ++++++++++++++++++ .../Sanity/test-m32-m64-options/thr-init-2.c | 20 ++ tests/Sanity/test-m32-m64-options/tm.c | 34 +++ 52 files changed, 1997 insertions(+), 2 deletions(-) create mode 100644 tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c create mode 100644 tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf create mode 100755 tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh create mode 100644 tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf create mode 100755 tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh create mode 100644 tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90 create mode 100644 tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf create mode 100755 tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh create mode 100644 tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c create mode 100644 tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf create mode 100755 tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh create mode 100644 tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java create mode 100644 tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf create mode 100755 tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh create mode 100644 tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf create mode 100755 tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh create mode 100644 tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf create mode 100755 tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh create mode 100644 tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc create mode 100644 tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf create mode 100755 tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh create mode 100644 tests/Regression/unused_parameter_warning/main.fmf create mode 100755 tests/Regression/unused_parameter_warning/runtest.sh create mode 100644 tests/Regression/unused_parameter_warning/test.cpp create mode 100644 tests/Sanity/compile-rpm/main.fmf create mode 100755 tests/Sanity/compile-rpm/runtest.sh create mode 100644 tests/Sanity/libitm-smoke/bins_aarch64.tar.gz create mode 100644 tests/Sanity/libitm-smoke/bins_i686.tar.gz create mode 100644 tests/Sanity/libitm-smoke/bins_ppc64.tar.gz create mode 100644 tests/Sanity/libitm-smoke/bins_ppc64le.tar.gz create mode 100644 tests/Sanity/libitm-smoke/bins_s390x.tar.gz create mode 100644 tests/Sanity/libitm-smoke/bins_x86_64.tar.gz create mode 100644 tests/Sanity/libitm-smoke/main.fmf create mode 100755 tests/Sanity/libitm-smoke/runtest.sh create mode 100644 tests/Sanity/rebuild-binutils/main.fmf create mode 100755 tests/Sanity/rebuild-binutils/runtest.sh create mode 100644 tests/Sanity/rebuild-glibc/main.fmf create mode 100755 tests/Sanity/rebuild-glibc/runtest.sh create mode 100644 tests/Sanity/test-m32-m64-options/clear_cache.c create mode 100644 tests/Sanity/test-m32-m64-options/cpp11.cpp create mode 100644 tests/Sanity/test-m32-m64-options/hello.c create mode 100644 tests/Sanity/test-m32-m64-options/hello.cpp create mode 100644 tests/Sanity/test-m32-m64-options/hello.f90 create mode 100644 tests/Sanity/test-m32-m64-options/lambda-template.C create mode 100644 tests/Sanity/test-m32-m64-options/main.fmf create mode 100644 tests/Sanity/test-m32-m64-options/omphello.c create mode 100644 tests/Sanity/test-m32-m64-options/quad.c create mode 100755 tests/Sanity/test-m32-m64-options/runtest.sh create mode 100644 tests/Sanity/test-m32-m64-options/thr-init-2.c create mode 100644 tests/Sanity/test-m32-m64-options/tm.c diff --git a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c new file mode 100644 index 0000000..801bda0 --- /dev/null +++ b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c @@ -0,0 +1,12 @@ +#include +#include + +int +main () +{ + int i = 2; + if (-10 * abs (i - 1) == 10 * abs (i - 1)) + return 1; + + return 0; +} diff --git a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf new file mode 100644 index 0000000..f31d44e --- /dev/null +++ b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf @@ -0,0 +1,26 @@ +summary: gcc optimization error for neg number * abs() [extract_muldiv] +description: | + abs() from gcc was broken so it gave wrong results. +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Regression/394271-gcc-optimization-error-for-neg-number-abs +framework: beakerlib +require: + - gcc +duration: 5m +enabled: true +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=394271 +tag: + - CI-Tier-1 + - DTS8-INTEROP-CI + - DTS9-INTEROP-CI + - Tier1 + - dts_smoke + - dts_stable +extra-nitrate: TC#0062143 +extra-summary: /tools/gcc/Regression/gcc/394271-gcc-optimization-error-for-neg-number-abs +extra-task: /tools/gcc/Regression/gcc/394271-gcc-optimization-error-for-neg-number-abs diff --git a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh new file mode 100755 index 0000000..695c9fc --- /dev/null +++ b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Author: Michal Nowak +# Marek Polacek + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +GCC="${GCC:-$(type -P gcc)}" +PACKAGE=$(rpm --qf '%{name}' -qf $GCC) + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v abs.c $TmpDir" + rlRun "pushd $TmpDir" + gcc -dumpversion | grep -q '^4\.4' && export OLDGCC="true" + rlPhaseEnd + + rlPhaseStartTest "Testing the executable" + OPTS="-O0 -O1 -O2 -O3 -Os -Ofast -Og" + if [ "$OLDGCC" = "true" ]; then + OPTS=${OPTS/ -Ofast -Og/} + fi + for opt in "" $OPTS; do + rlRun "$GCC -g $opt -o abs$opt abs.c" 0 "Compiling the test case [ $opt ]" + rlRun "./abs$opt" 0 "Checking whether we have an working executable [ $opt ]" + done + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf new file mode 100644 index 0000000..35ff67d --- /dev/null +++ b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf @@ -0,0 +1,29 @@ +summary: unzip problem with CRC error for src-4.1.0.zip file on s390x +description: | + A customer has been trying to unzip the file src-4.1.0.zip + which is contained libgcj4-src-4.1.0-18.EL4.s390x.rpm. However, + unzip command can't run correctly with the CRC errors + It seems that the src-4.1.0.zip is broken. +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +framework: beakerlib +require: + - gcc + - libgcj-src +duration: 5m +enabled: true +tag: + - CI-Tier-1 + - Tier1 +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=462397 +adjust: + - enabled: false + when: distro != rhel-5 and distro != rhel-6 + continue: false +extra-nitrate: TC#0147365 +extra-summary: /tools/gcc/Sanity/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file +extra-task: /tools/gcc/Sanity/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file diff --git a/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh new file mode 100755 index 0000000..62d03df --- /dev/null +++ b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Author: Michal Nowak +# Marek Polacek + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc libgcj-src) + +rlJournalStart + rlPhaseStartSetup + for p in "${PACKAGES[@]}"; do + rlAssertRpm "$p" + done; unset p + rlRun "TmpDir=\`mktemp -d\`" + rlRun "pushd $TmpDir" + rlPhaseEnd + +srclist="/usr/share/java/src-*" +for src in ${srclist}; do + + rlPhaseStartTest "Try to unzip src file" + rm -rf tmp/; mkdir tmp/ + rlRun "cp -fv ${src} tmp/" 0 "[${src}]: Copy the zip file to tmp/" + cd tmp/ + rlRun "unzip ${src}" 0 "[${src}] Verify that is possible to unzip ${src}" + cd .. + rlPhaseEnd + +done + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90 b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90 new file mode 100644 index 0000000..c9af75f --- /dev/null +++ b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90 @@ -0,0 +1,22 @@ + subroutine a + INTEGER*4 a_i + common /block/a_i + a_i = 1 + end subroutine a + subroutine b + INTEGER*4 b_i + common /block/b_i + a_i = 3 + b_i = 2 + end subroutine b + subroutine c + INTEGER*4 a_i + common /block/a_i + if (a_i .ne. 2) call abort + end subroutine c + program abc + call a + call b + call c + end program abc + diff --git a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf new file mode 100644 index 0000000..752caf6 --- /dev/null +++ b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf @@ -0,0 +1,38 @@ +summary: Fortran DW_TAG_common_block has incorrect placement/scope +description: |+ + Problem: gcc-4.3.2 / gfortran-4.3.2 (in the forthcoming tech-preview for + RHEL5.3) appears to also have the "DW_TAG_common_block has incorrect + placement/scope" issues listed in the following gcc upstream bug: + + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37738 + + What gfortran is doing currently is: + + (1) Merges all common blocks into a single one. + (2) Places this single common block into the first subroutine where it was + used. + +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope +framework: beakerlib +require: + - gcc + - gcc-gfortran +duration: 5m +tier: '1' +enabled: true +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=465974 +tag: + - CI-Tier-1 + - DTS8-INTEROP-CI + - DTS9-INTEROP-CI + - Tier1 + - dts_smoke + - dts_stable +extra-nitrate: TC#0062268 +extra-summary: /tools/gcc/g77/465974-DW_TAG_common_block-has-incorrect-placement-scope +extra-task: /tools/gcc/g77/465974-DW_TAG_common_block-has-incorrect-placement-scope diff --git a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh new file mode 100755 index 0000000..741279d --- /dev/null +++ b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh @@ -0,0 +1,56 @@ +#!/bin/bash +# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Author: Michal Nowak +# Marek Polacek + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc gcc-gfortran) + +GFORTRAN=${GFORTRAN:-gfortran} + +rlJournalStart + rlPhaseStartSetup + if type gcc | grep -q -v toolset; then + # assert only of not devtoolset/gcc-toolset + for p in "${PACKAGES[@]}"; do + rlAssertRpm "$p" + done; unset p + fi + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v abc.f90 $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest "Testing the executable via readelf -w" + # Compile + rlRun "$GFORTRAN -g -o abc abc.f90" 0 "Compiling the test case: abc.f90" + rlRun "./abc" 0 "Checking whether we have an working executable" + rlWatchdog "readelf -w abc 2>&1 | tee gcc-readelf.log" 10 + rlAssert0 "Checking if 'readelf' ends itself" $? + # Test + cb=$(grep Abbrev gcc-readelf.log | grep DW_TAG_common_block -c) + rlRun "if [ ${cb} -eq 3 ]; then true; else false; fi" 0 "Expected amount of common blocks is 3; got ${cb}" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c new file mode 100644 index 0000000..64449ae --- /dev/null +++ b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c @@ -0,0 +1,29 @@ +#include + +/* Compile flags: + * gcc -fno-builtin-isascii -fno-builtin-isalnum -o builtin builtin.c + * + * Expected output: + * Using custom isascii() function + * ret = 0 + * + * Expected return value: + * 0 + */ + +int isascii(int c) +{ + printf("Using custom isascii() function\n"); + return 0; +} + +main() +{ + int c = 65; + int ret; + + ret = isascii(c); + printf("ret = %d\n", ret); + + return ret; +} diff --git a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf new file mode 100644 index 0000000..080f24f --- /dev/null +++ b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf @@ -0,0 +1,33 @@ +summary: 'Test for bz515799 ([RHEL5] gcc: if more than one -fno-builtin-*)' +description: | + Bug summary: [RHEL5] gcc: if more than one -fno-builtin-* options are specified, only the last one is effective + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=515799 + + This test compiles builtin.c with the flags '-fno-builtin-isascii + -fno-builtin-isalnum'. This program contains a custom isascii() function + that always returns 0. If gcc honors the -fno-builtin-isascii flag, it + will return 0. If not, it will use the built-in isascii() function which + will return 1. +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin +framework: beakerlib +require: + - gcc +duration: 5m +enabled: true +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=515799 +tag: + - CI-Tier-1 + - DTS8-INTEROP-CI + - DTS9-INTEROP-CI + - Tier1 + - dts_smoke + - dts_stable +extra-nitrate: TC#0063259 +extra-summary: /tools/gcc/Regression/gcc/515799-RHEL5-gcc-if-more-than-one-fno-builtin +extra-task: /tools/gcc/Regression/gcc/515799-RHEL5-gcc-if-more-than-one-fno-builtin diff --git a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh new file mode 100755 index 0000000..8b38afd --- /dev/null +++ b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# vim: dict=/usr/share/rhts-library/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/gcc/515799-RHEL5-gcc-if-more-than-one-fno-builtin +# Description: Test for bz515799 ([RHEL5] gcc: if more than one -fno-builtin-*) +# Author: Jeffrey Bastian +# Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2009, 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc) + +GCC=${GCC:-gcc} + +rlJournalStart + rlPhaseStartSetup + for p in "${PACKAGES[@]}"; do + rlAssertRpm "$p" + done; unset p + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v builtin.c $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "$GCC -fno-builtin-isascii -fno-builtin-isalnum -o builtin builtin.c" + rlAssertExists "builtin" + rlRun "./builtin" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java new file mode 100644 index 0000000..bc72835 --- /dev/null +++ b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java @@ -0,0 +1,5 @@ +public class foo { + public static void main(String[] args) { + System.loadLibrary("foolib"); + } +} diff --git a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf new file mode 100644 index 0000000..b121552 --- /dev/null +++ b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf @@ -0,0 +1,39 @@ +summary: 'CVE-2009-3736 libtool: libltdl may load and execute code from a library + in the current directory' +description: | + cat > ~/foo.java <\EOF public class foo { public static void main(String[] args) { System.loadLibrary("foolib"); } } EOF + cd + gcj -C foo.java + cd /tmp + strace -f -v -s1024 gij -cp ~/ foo 2>&1 | grep foolib + + (resp. s/gcj/gcj4/g;s/gij/gij4/ for gcc4 testing). + + If any relative path is seen, it is wrong. Bad examples are + + {lib,}foolib.la + {hwcap,0,nosegneg}/{lib,}foolib.{so,la} +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +framework: beakerlib +require: + - gcc + - gcc-java + - libgcj + - strace +duration: 5m +enabled: false +tag: + - CI-Tier-1 + - Tier1 +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=537941 +adjust: + - enabled: true + when: distro == rhel-6 or distro == rhel-5 +extra-nitrate: TC#0062145 +extra-summary: /tools/gcc/Regression/gcj/537941-libltdl-may-load-library-in-current-directory +extra-task: /tools/gcc/Regression/gcj/537941-libltdl-may-load-library-in-current-directory diff --git a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh new file mode 100755 index 0000000..73e914d --- /dev/null +++ b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Author: Michal Nowak +# Marek Polacek + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc libgcj strace gcc-java) + +rlJournalStart + rlPhaseStartSetup + for p in "${PACKAGES[@]}"; do + rlAssertRpm "$p" + done; unset p + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v foo.java $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + +# I weeded out the if (isRHEL 3) support. +for gj in "" "4"; do + gcj_name="/usr/bin/gcj${gj}" + gij_name="/usr/bin/gij${gj}" + if [ -x ${gcj_name} ] && [ -x ${gij_name} ]; then + gcj_basename=$(basename ${gcj_name}) + gij_basename=$(basename ${gij_name}) + + rlPhaseStartTest "[${gij_basename}] Interpreting and compiling via java" + rlRun "${gcj_name} -C foo.java" 0 "[${gcj_basename}] Creating bytecode" + mv foo.class ~ + pushd /tmp + + echo "Dry run w/o strace" + ${gij_basename} -cp ~/ foo + + echo "=== Dry run end ===" + strace -f -v -s1024 ${gij_basename} -cp ~/ foo 2>&1 | tee out.${gij_basename} + echo + grep foolib out.${gij_basename} + foolib_cnt="$(grep foolib out.${gij_basename} -c)" + echo + rlRun "if [ ${foolib_cnt} -ne 0 ]; then egrep '\"libfoolib.la|\"foolib.la' out.${gij_basename}; else echo \"Zero lines w/ foolib\"; true; fi" 1 "[${gij_basename}] Interpreting test case" # use 'true' (sic!) + popd + rm -f ~/foo.class + rlPhaseEnd + + fi +done + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf new file mode 100644 index 0000000..6a60b30 --- /dev/null +++ b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf @@ -0,0 +1,32 @@ +summary: Test for BZ#1611637 (devtoolset-8-gcc includes avx512vbmi2intrin.h but) +description: | + Bug summary: devtoolset-8-gcc includes avx512vbmi2intrin.h but does not contain it + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1611637 + + The list of intrinsic headers keeps changing every release, sometimes + even on the release branch, and %files needs to be in sync with what has + been changed in gcc/config.gcc. immintrin.h is one of those headers and + this test makes sure that we can #include it. +contact: Vaclav Kadlcik +component: + - gcc +test: ./runtest.sh +framework: beakerlib +require: + - gcc +duration: 5m +enabled: true +tag: + - CI-Tier-1 +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=1611637 +adjust: + - enabled: false + when: arch != x86_64 + continue: false + - enabled: false + when: distro == rhel-5 + continue: false +extra-nitrate: TC#0575308 +extra-summary: /tools/gcc/Regression/bz1611637-immintrin_h_include_list_does_not_match_release +extra-task: /tools/gcc/Regression/bz1611637-immintrin_h_include_list_does_not_match_release diff --git a/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh new file mode 100755 index 0000000..8ff645e --- /dev/null +++ b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1611637-immintrin_h_include_list_does_not_match_release +# Description: Test for BZ#1611637 (devtoolset-8-gcc includes avx512vbmi2intrin.h but) +# Author: Michael Petlan +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2018 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +GCC=${GCC:-gcc} + +rlJournalStart + rlPhaseStartSetup + cat > a.c < +int main(void) +{ + return 0; +} +EOF + rlAssertExists "a.c" + rlPhaseEnd + + rlPhaseStartTest + rlRun "$GCC -o a a.c" + rlAssertExists "a" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "rm -f a a.c" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf index ae2fc2b..fc2414e 100644 --- a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf +++ b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf @@ -7,10 +7,21 @@ component: - gcc test: ./runtest.sh framework: beakerlib -recommend: +require: - gcc-c++ duration: 15m +enabled: true +tag: + - CI-Tier-1 link: - relates: https://bugzilla.redhat.com/show_bug.cgi?id=1960701 +adjust: + - enabled: false + when: distro < rhel-8 and collection is not defined + continue: false + - enabled: false + when: distro ~< rhel-8.5 and collection is not defined + continue: false +extra-nitrate: TC#0610780 extra-summary: /tools/gcc/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2 extra-task: /tools/gcc/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2 diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh index 196486b..9dd4ea3 100755 --- a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh +++ b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh @@ -28,6 +28,17 @@ # Include Beaker environment . /usr/share/beakerlib/beakerlib.sh || exit 1 +# Notes on relevancy +# +# The test is applicable to GCCs supporting -std=c++17. In practice, +# * any supported toolset GCC +# * system GCC of RHEL 8+; however the respective fix landed in 8.5 +# and isn't planned for backporting. +# +# Suggested TCMS relevancy: +# distro < rhel-8 && collection !defined: False +# distro < rhel-8.5 && collection !defined: False + GCC="${GCC:-$(type -P gcc)}" PACKAGE=$(rpm --qf '%{name}\n' -qf $GCC | head -1) PACKAGES="${PACKAGE} ${PACKAGE}-c++" @@ -35,7 +46,7 @@ PACKAGES="${PACKAGE} ${PACKAGE}-c++" rlJournalStart rlPhaseStartSetup rlLogInfo "PACKAGES=$PACKAGES" - rlRun "dnf -y install $PACKAGES" 0-255 + rlLogInfo "COLLECTIONS=$COLLECTIONS" rlAssertRpm --all rlRun "TmpDir=\$(mktemp -d)" rlRun "cp reproducer.cc $TmpDir" diff --git a/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf new file mode 100644 index 0000000..5ce67d3 --- /dev/null +++ b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf @@ -0,0 +1,26 @@ +summary: SystemTap fails to retrieve location attribute for local variable +description: '' +contact: mcermak@redhat.com +component: + - gcc + - systemtap +test: ./runtest.sh +framework: beakerlib +require: + - gcc + - systemtap + - kernel-devel + - kernel-headers +duration: 50m +enabled: true +tag: + - CI-Tier-1 + - STAP-EWA + - mcu_stap + - mcu_stap_6g + - mcu_stap_7g +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=576287 +extra-nitrate: TC#0062256 +extra-summary: /tools/gcc/Regression/gcc/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable +extra-task: /tools/gcc/Regression/gcc/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable diff --git a/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh new file mode 100755 index 0000000..0003300 --- /dev/null +++ b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# Copyright (c) 2010 Red Hat, Inc. All rights reserved. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + kernel_uname="$(uname -a | awk '{ print $3 }')" + kernel_arch="$(uname -a | awk '{ print $12 }')" + echo kernel_arch: $kernel_arch + kernel_version="$(echo ${kernel_uname} | sed 's/-/ /' | awk '{ print $1 }')" + echo kernel_version: $kernel_version + kernel_release="$(echo ${kernel_uname} | sed 's/-/ /' | awk '{ print $2 }' | sed 's/\./ /g' | awk '{ print $1,".",$2 }' | sed 's/ //g')" + echo kernel_release_1: $kernel_release + if $(echo ${kernel_release} | grep -iq PAE); then + kernel_release="$(echo ${kernel_release} | sed 's/PAE//g' | sed 's/pae//g')" + PAE="PAE-" + fi + echo kernel_release_2: $kernel_release + if rlIsRHEL 6; then + arch="${kernel_arch}-" + fi + kernel_debug="http://download.devel.redhat.com/brewroot/packages/kernel/${kernel_version}/${kernel_release}/${kernel_arch}/kernel-${PAE}debuginfo-${kernel_version}-${kernel_release}.${kernel_arch}.rpm" + kernel_debug_common="http://download.devel.redhat.com/brewroot/packages/kernel/${kernel_version}/${kernel_release}/${kernel_arch}/kernel-debuginfo-common-${arch}${kernel_version}-${kernel_release}.${kernel_arch}.rpm" + echo ">>> $kernel_debug $kernel_debug_common" + debuginfo-install -y kernel + rpmquery kernel-debuginfo || rpm -ivh ${kernel_debug} ${kernel_debug_common} + rlPhaseEnd + + rlPhaseStartTest opt-O$opt + rlRun "stap -vvvv -p2 -e 'probe kernel.function(\"sig_ignored\") {println($$parms)}' 2>&1 | grep 'variable location problem'" 1 "gcc produced good enough debuginfo w/o 'variable location problem'" + rlPhaseEnd + + rlPhaseStartCleanup + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc new file mode 100644 index 0000000..7b815cd --- /dev/null +++ b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc @@ -0,0 +1,15 @@ +template int func (void); + +template struct Foo +{ + static const unsigned int a = sizeof (T); + + //enum { b = a }; + + enum + { + c = sizeof (func < (a == 0) > ()) + }; +}; + +Foo x; diff --git a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf new file mode 100644 index 0000000..4c38d10 --- /dev/null +++ b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf @@ -0,0 +1,28 @@ +summary: Try to compile a program that has a template parameter with a boolean expression + involving a templated static constant +description: '' +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template +framework: beakerlib +require: + - gcc + - gcc-c++ + - file +duration: 5m +enabled: true +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=703059 +tag: + - CI-Tier-1 + - DTS8-INTEROP-CI + - DTS9-INTEROP-CI + - Tier1 + - dts_smoke + - dts_stable +extra-nitrate: TC#0111110 +extra-summary: /tools/gcc/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template +extra-task: /tools/gcc/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template diff --git a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh new file mode 100755 index 0000000..8f50b77 --- /dev/null +++ b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template +# Description: Try to compile a program that has a template parameter with a boolean expression involving a templated static constant +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2011, 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +GXX=${GXX:-g++} + +rlJournalStart + rlPhaseStartSetup + rlLog "GXX = $GXX" + rlLog "Installed within `rpmquery -f $(which $GXX)`" + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v f.cc $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "$GXX -c f.cc" + rlAssertExists "f.o" + rlRun "file f.o | grep ELF" # Basic obj file sanity check + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/unused_parameter_warning/main.fmf b/tests/Regression/unused_parameter_warning/main.fmf new file mode 100644 index 0000000..7084e32 --- /dev/null +++ b/tests/Regression/unused_parameter_warning/main.fmf @@ -0,0 +1,31 @@ +summary: Check to see if g++ throws unused parameter warnings with standard libraries + with option -Wall +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Regression/unused_parameter_warning +framework: beakerlib +require: + - gcc-c++ + - glibc-devel + - libstdc++-devel +recommend: + - gcc44-c++ + - glibc-devel.ppc64 + - glibc-devel.ppc + - libstdc++43-devel.ppc + - libstdc++44-devel.ppc + - libstdc++-devel.ppc +duration: 10m +enabled: true +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=201342 +tag: + - CI-Tier-1 + - Tier1 + - dts_stable +extra-nitrate: TC#0062265 +extra-summary: /tools/gcc/c++/unused_parameter_warning +extra-task: /tools/gcc/c++/unused_parameter_warning diff --git a/tests/Regression/unused_parameter_warning/runtest.sh b/tests/Regression/unused_parameter_warning/runtest.sh new file mode 100755 index 0000000..4a5d2fb --- /dev/null +++ b/tests/Regression/unused_parameter_warning/runtest.sh @@ -0,0 +1,60 @@ +#!/bin/bash +# vim: dict=/usr/share/rhts-library/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2009, 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# g++ - check for unused parameter warning +# expected exit code is 0 +# +# Author: Sachin Prabhu +# Maintainer: Marek Polacek + + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc gcc-c++ grep) + +GXX=${GXX:-g++} + +rlJournalStart + rlPhaseStartSetup + for p in "${PACKAGES[@]}"; do + rlAssertRpm "$p" + done; unset p + rlLog "GXX = $GXX" + rlLog "Installed within `rpmquery -f $(which $GXX)`" + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v test.cpp $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "$GXX -W -Wall -o test.bin test.cpp &> output" + cat output + rlRun "grep -E 'warning:\W+unused\W+parameter' -q output" 1 "'warning: unused parameter' not present" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/unused_parameter_warning/test.cpp b/tests/Regression/unused_parameter_warning/test.cpp new file mode 100644 index 0000000..15d375b --- /dev/null +++ b/tests/Regression/unused_parameter_warning/test.cpp @@ -0,0 +1,2 @@ +#include +int main() {} diff --git a/tests/Sanity/compile-rpm/main.fmf b/tests/Sanity/compile-rpm/main.fmf new file mode 100644 index 0000000..d6c5faa --- /dev/null +++ b/tests/Sanity/compile-rpm/main.fmf @@ -0,0 +1,45 @@ +summary: Compile a Red Hat RPM package. +description: '' +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Sanity/compile-rpm +framework: beakerlib +require: + - autoconf + - bison + - dejagnu + - elfutils-libelf-devel + - expat-devel + - flex + - gcc + - gdb + - glibc-devel + - grep + - libselinux-devel + - make + - mpfr-devel + - ncurses-devel + - python-devel + - readline-devel + - rpm-build + - rpm-devel + - texinfo + - xz-devel + - yum-utils + - zlib-devel +duration: 240m +adjust: + - require+: + - ncurses-devel.i686 + - ncurses-devel.x86_64 + when: arch == x86_64 + - enabled: false + # Too "heavy" for Fedora CI (for now) + when: distro == fedora and trigger is defined + continue: false +enabled: true +extra-nitrate: TC#0142522 +extra-summary: /tools/gcc/Sanity/compile-rpm +extra-task: /tools/gcc/Sanity/compile-rpm diff --git a/tests/Sanity/compile-rpm/runtest.sh b/tests/Sanity/compile-rpm/runtest.sh new file mode 100755 index 0000000..5f68e75 --- /dev/null +++ b/tests/Sanity/compile-rpm/runtest.sh @@ -0,0 +1,99 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Sanity/compile-rpm +# Description: Compile a Red Hat RPM package. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +GCC=${GCC:-gcc} + +# Set the variabile UNDER_DTS on non-empty string, when run under devtoolset. +if $( echo `which gcc` | grep -qE '/opt/rh/' ); then + UNDER_DTS="true" + # Set the actual version of DTS + DTS=`which gcc | awk 'BEGIN { FS="/" } { print $4 }'` +fi + +rlJournalStart + rlPhaseStartSetup + # Work around troubles with buildroot packages being out-of-sync + if rlIsRHEL; then + rlMountRedhat + for i in libipt source-highlight libbabeltrace; do + rpm -q $i &>/dev/null || rlRun "yum -y install $i" 0-255 + rpm -q ${i}-devel &>/dev/null || rlRun "yum -y install ${i}-devel" 0-255 + d=/mnt/redhat/brewroot/packages/$i + if rpm -q $i &>/dev/null && ! rpm -q ${i}-devel &>/dev/null; then + if [[ -e /mnt/redhat/brewroot/packages/$i ]]; then + d=/mnt/redhat/brewroot/packages/$i + else + d=/mnt/redhat/brewroot/packages/${i#lib} + fi + rlRun "yum -y install $d/$(rpm -q --qf='%{VERSION}/%{RELEASE}/%{ARCH}' $i)/${i}-devel-$(rpm -q --qf='%{VERSION}-%{RELEASE}.%{ARCH}' $i).rpm" + fi + done + fi + + rlRun "TmpDir=\$(mktemp -d)" + rlRun "pushd $TmpDir" + + if [ -z ${UNDER_DTS} ]; then + rlFetchSrcForInstalled gdb || yumdownloader --source gdb + else + rlFetchSrcForInstalled $DTS-gdb || yumdownloader --source $DTS-gdb + fi + + if [ -z ${UNDER_DTS} ]; then + srpm=$(rpmquery gdb --queryformat=%{NAME}-%{VERSION}-%{RELEASE})".src.rpm" + else + srpm=$(rpmquery $DTS-gdb --queryformat=%{NAME}-%{VERSION}-%{RELEASE})".src.rpm" + fi + rlRun "rpm -Uvh $srpm" + spec_dir=$(rpm --eval=%_specdir) + build_dir=$(rpm --eval=%_builddir) + + if [ -z ${UNDER_DTS} ]; then + pkg_dir=$(rpmquery gdb} --queryformat=%{NAME}-%{VERSION}) + else + pkg_dir=$(rpmquery $DTS-gdb} --queryformat=%{NAME}-%{VERSION}) + fi + + yum-builddep -y $spec_dir/gdb.spec + rlPhaseEnd + + rlPhaseStartTest + rlRun "CC=$GCC rpmbuild -bb $spec_dir/gdb.spec &> BUILD_LOG" + test $? -eq 0 || tail -n 20 BUILD_LOG + rlPhaseEnd + + rlPhaseStartCleanup + rlBundleLogs "Build-log" BUILD_LOG + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/libitm-smoke/bins_aarch64.tar.gz b/tests/Sanity/libitm-smoke/bins_aarch64.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d528f036f9fae1083d76ebd7822044824d7bfa84 GIT binary patch literal 42861 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 D5@yui literal 0 HcmV?d00001 diff --git a/tests/Sanity/libitm-smoke/bins_i686.tar.gz b/tests/Sanity/libitm-smoke/bins_i686.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..ce0e948621bf10e7ef81b864afb0eae72729a7a4 GIT binary patch literal 18165 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 literal 0 HcmV?d00001 diff --git a/tests/Sanity/libitm-smoke/bins_ppc64.tar.gz b/tests/Sanity/libitm-smoke/bins_ppc64.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..0589c6ad11cc84f934a1e89a159319594725f931 GIT binary patch literal 42218 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 TtQ32W__q6%o4*7CdB=^(vJm)@j@M0zLm4iQ3c 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
{sYw(K`}@HLuP`>;?6r;}0rU4m9Vq?r5-& z+Zl%&|8-A5NT7+3ye|>Cd zXmzx5f*MH}LepiIE=E|M44&ve#>0jUgGP14=yyh69C^^D^OD#*$@6S~+TmA&oTl&U)omu(faoWAAv;{`kQf!M5c47FQF(=?Zw+ zK{*&0G&_5T-5CY(JV1E7o320W6A0UOq|S3@3*?^u>0}rNv;rF4Q{UJ(ug*-kp*9{4ha6{(*@4J!;3^ z4M4wT#tE^Ux@s|>7vesgW&v4_>bzOjKK~MLqAtIVgEQ?jk@ZwrPKD3I4EyQVgbVD? zqnS=G&_||4775I!T^FFOX+px#^lbbMV$cG)m*%SuM0~vejwPD({h@YrP?6w0ofD>w zD{6vVgD&lFb?&!0`)Oe6ywXSNhyInl+Di2n%iP^c4>cX1W!IfqdRQr!<@*{Tadu`8 z5Sg4?xM31nRPU85TF7l8(Hw8_(B!aQJp9n_=RLh|ci5-I&deTovjnC2nDZ9tLeurR z{+xVOZDy6yx!`Hr-YSE0vNBR?tgbZOihkof83JK!%V?yJl^m6F~6uDb47LM zOreN?(2<`Z7^rI*Yst*$BnE;$lGMK!f9uyS(qR-Y5ZmGjo|mgzzSgu`xbax4_c7Ck zTWOMl?jT{x&?_fX#{V?$M0!u^g`#upr^u1V7w7Af@R4ZtJ?h=daPNpW6^ zDce)$@{iBW*nK?@5;FrW=%BX)`cKqLVJ*1>2$|I)+P-${*%&vU?6}=`QTL~>_B@}( z)FI(%SMNUz8=tvA=nOkq=b;#6Dg5^CeHxM>7;vrmNi}`8e_;D>{62KQG3kWj*-Kd% za?Po%KWT>!MzLwhMgj=pHwdc!I;&@wcOS@M2&zvpelH&PP}m}gq7Xo8rh+uwurrMK zWho+-r+T98&(FJVBx}W@-S*($pT8#Bfz+F||Fpfd?P)7LsSDwE33C_;R`5+pn{BkD zm#vtG|BQliR6m|BYCPTJ5K}edcFUXE?YFlmE6N+(eRF%3m7uB&HAOiaZ~n@Rj{I%S zcDBP>zM^urgrjawNR{r?7g7)Q(ucm}I3=yMy*bNS6{XO3;Ma&%3#8;6W9WOYr#UbUNuP+X}!8dHvs=J z?XD7#KK7`wae;PQ|oxcm>;EyHhdjvuk=K;DSI(eRo zy+SEnWMQ}Yr3Px-XPm!p?=0|7kehYyN3gH#FJPyOR+5&)l9G8*0ZF9uy|0k(@?D7dyasisQ*t>YLyx!PzNXGBd|yJ|h1=tML66XbTD1wH); z-X>&G3pcN*LedRiLc6J`cb~}JpHzyyI7n@2zcAI)TCtYB6j6u{rH1ZDa9AvosyZr< z;5lXvRSj)AtWFc{2^P^u;<1gk-dNQEZQxY@)x0igt&xtV3KblHA9r}4*!tCoWtLtf$fuiS#WEtMB_>N!=LPQg@9e&45N{oWVt6* zbD88|@bi_Y%K}~X#72;w_QIk1+b=GMZ3kBsJ^k-LDtwc`uMcFoyZf-=&EL-TydM!} zR~*xZJp%~`#oU({jXIuR3C(PEURI%>{gTn92( zZDlnBXH;@jxSf#a-)6PEX$R&L6otbgPQP`2Ydnf7>VEd{`%@zi@r;#!$pW_pP^x>p zLR{6PBsJ_qtTnFsX5^#1?5~7Mox;RLrDf`HZXX-xe_1qfEyDB}w4$C#TXcl673@+O z*W=j@7Cj9=Gw31obbFGLNZKcuE$M5)*CHR~#ePc-ud>^p1jnG`aIA+>O>!c(Fjn}r zz6A_PQv!aiZw}M&ALG^Sw9d=JV$g9!??bugVVD)ATl)c+onh3)Ezw7j(IzUSG&R&F zw(|p`Z_tLQ62%cutfOru?Kx689+U5B&l70wjzab{fB`rBI{w{R$8==cRc&!uVTNT~ zxcjK()l)nHqW^%=nNZZN6h$ z$&n5^DOsLf+ED0=jy}*Pw_fwYS%(sB5vwf5u=sZzkd{ z(2+`xzBC|1;4h0R)!>W#jZ_pgoVAhVfd0`fs%?O-4R>YI37TJ6q9=|0hh5Wd1ArTIe9$#5N8LCJ!qfdN=@5lmO|NzffuCB#50@FaY>;y& z@&ZL_kqP5A#NE6okxh}OLQuhf*{Lav%zl-hQaG(omrT5Q>SAU#P6{-QPlKHb)(0Y* zYzHevmrC>Zuur^B-4`l9R7GVR&40Y_N|zhR&O&6)oCRwbWn&;Z`4b>}H!}-6?tnk| z$l-j|pimrZz<$qj{FThvo}eBwTXGPh0DBj<=E1hS+(=wgzW)?w>!R4W5hVYEssICD zhApWz+R|)_YIhP(PVHz5pVNyamXlR}(Zu)bi{*Y;W^hG;z>UlJqzfb? zR=5eVP7RYG3erwr_6cY~*mn>=rf_Kyq{TbI4*UwN6pfVnp8d{E1~lA)=#&C4-c)PP zxYC8S0e*c(n@n9n$Cmjr;qy__TJWdDuk)0-*{qz8jYWpX?;p_e3UUU1 z_lJ(+9t_8U#pU`A59IGRhgJ8PY>fBNHjoJ-|0D`9RF;2b&9!BmQTJhh`-Q%hri#}l zoqMI&)6JF!t!rDS3lG2MB)t*sq8?gGkx$P3C~;FB(#qNbu~nKWbw5wK!CT+FT-J|u zTg5&beoFSV*fAZIdtht(Yjx6VhkCZE()!gN+n{pCaO+9FYB!%MsCXz2>=fXqNXR&J z{4o^nL+@&^JNj1J_OJD0wai3A$C2+JqmVfKczN_=h3nR*X6Y4nVLn4o(zT!1uiWUr z-Xi5@YR!6Qi?6I`^Kt%UR{X)bmk;lSEVp*WiNp|4xrmxf!Jm~$4@DTOdc&mfv5WJU zGt2E4{5}BCQtI)tmV_*1#0;SnRs_%XXtP$ceYn9fZWD^|SJvMa(r~T@Uf$QXx3u*k zbFMi4@Y$TdOQv{1c0Hut{rQ(@BN5{&-JS7^3ucDQJ_4Dp8QXmk$q9n-mI0gmBx=CP z+gnZGBYWAlx+dd-#w&xNxxZeN)_UZy>zhPev~Rg0I{drZ~q zrG3b$%BNFJMQS>(;pqb05$G%rmre9Y!-fl-?tzZRu=L<(Z2lFbj5zTb}$lL z%3BPI#H|*JEZ7`A;h4nt4q%E*>!yXv3fgQHp680uQx0uGb#++AV^K@r*|dVGN_D0@_7j71qlg^!K58u*cuTIXiF%&S)fMk<~cUq^1(@DP3OmTRMkzR*K!cr}Cu-DU&XKqb|U47X@J#*wSP$pu%Gq zW|@WDQiBgr0erx0i?3LIoqFd?qY}!UGdkF?By^d^Hypc-`SE-rvVWHlCMy&Ok0s*t z3-0@kY!marY($0pNwwY_?U1QIL{Cjd$NLL81bW_NAw)gpf$wGuaU~9`j&$kG1GBm1 zsVlAVdHxtld(Igs(qB(C7>?i`(0KNm&^J_IF`PR!An0|)4#I?!E~|}$Dps*NC_De8 z_Qfw?M=6azsYW;GvUZn^wm74^fu3^;(PD2YttH131!vBi1}>=V_jelpcPwD+zWrjL z8WzN#n6@oeE?(p)xdS!2FkgpAWFz@f3vTw(`BM782lRyJ{z(*+3$357k8z41!`S&_ z_vlS;3PZt34SWgD&E-GPr+ZfDycASOj+jOV8Cz`{F`&K(JWrEb)HzR^TkJae#D0!$ zyC)2l?pBB<6$3^ik0S-))AE1WcP3w>y!t|w2Yy~mMVc_BB8OzU*tN8gkZ%GYPN(66 zcA|sD>zM$cgp$A_FBq*l`z|cQ)_dl>!qO7YXi8+2Mi;wQ+fwJxiyW^(r7nyZyPpCS zt+v}A`|-*p;CCjg%1S<_PwmwPXlT3lfMVw$oJRxlW4Y%pTIK7H{#>b6yV_LMH@OOQwwn7r5t<#BXc{L`GHs|+; zZpUp_|IXsy;E!($hPeTj15}TBwF-J@_fwJ8e#-$G$4)ESu5D#HP@ScE*dUBL!$DYD zx70}exVO?agO;c{btu;NLn42*o{FLK&omPIt{q1iSHX=wAVj){)$6NWpx@O9W4yO0 zB4^h&;pwiu6FD^>I=l1A0oxK{O(Qd(Mxr^$e=52jbU%ArdBYE>!4vx_Q&+I4WnQ+C zePO{&xa2e2&cpTBdVAKlg)g8I>h%PdD2+1}t)b{<_7~AR0xdsl3|b(&g+hi{3qtzM zmb?7;?}TBKzlM9A{@RPfET{3dEqC)&K}1GbSOH~ziQ1X#**%YE#|y7Jq{P*t1={*r zPVAmsa=N6zidR{87#7~QYP{)uvn};6$D)@vInxc~qE>LwYjqFoqDI^A)pKw8n5omn z(iKpq>YO~lqI5DI-;5SWfiwCqZB!rRKz99Gvl`cEfnW;F|nq8aLad zjc9+g!_?T1kJ(aY@gpl99S!I?RV}rzY*T$kVldG>9#npdtmpTw>=No}+97epL*P=2 z#oWA-B*1y9qr~XgE``Lv(?zBt$!y7*@pKhehNri0uT#(@ee8A?7B&v^E`aO zx_p~%f<>17vU~;J`K2c&mvwSWH^7^+s;&CHZ%#&;p zZ!6HFCqxBf&?`iw!s)^i^L6Om>gR1dY%mpOz_d49^w_kUCNVG#K#hZ(4qAg|Q*MWZ zT*zfgB8Ml6Pv!(L2KG-2q1mwUX3UUY%1vzLb{K5O|x7>x- z_YgZHG2CbtBKZFgrqqKC}nw5%q=tPG+Qs()EmNLzE0=2UqMk=o_15SNi z&TBp)W^`+$!i#M6%AwNJu+>$`_RIRMM>4Y)h)D_Fmr z*>7ENm@iOW-|elE<;MQIUXWv<;TM*}$7>Iqq7coFg@0=Aoz$KtFJH7XIcl?J^wu72 z_N5T+Jq@@P&MHi?ck0@I7d|1yZjuTiE?x9-ctX+z`bQS77|r!CmSyai9+wU1c-_}8 zZD_R;kkKA}&`u8s*7<73{42(hmg=iA$L*sH2#9!X(BK zIB>2AaEMj22U6_K*}k5tC*%eevmU8{&l0vQB+##|b8eP5ru5*h%O&V%Jmt6^RD@M% zy+1x`U+%_HZdDDFb-SbOtRsNTe$0Ecx%O8RVzp+RI)2d5_A&m8p0&Y@B8Tp}pyDB? z^Ez;AH1?I*MC{F3sfF1;$Z?16b5i41dFkc~v`P({wgxTHcf(S~m)Xi*+~Lq^_G6>@ zLdNZ=C-xlXj$#`CLDYu_KR+ItE86s218NE`f$l{;JY`|&+3XD*NugN^_HiFy__ zlTUurpoAg9n{{(K}cP z$>V=r(D(dK``m`_53F4ak|9QbeA6_hHNOQJxEQg1{16QMlx+wG4tMX~jg*-jVSfPv z%22-wukz{->IYnOi_hP4=~j({@K&qZ{yX|!0PnpDou;P+GXWnHu)Pb|p9eZy#OC)D zhL{gF_5^;^R_j&hG?oEPu$b=s?NF}q0UL7nABqjG&_g(F?W$89t_g%O>z=AgKIwl)gs~#jHC-3FSUOBq*sZw`pmc3qe@Am{r zj2-Y=l>fb7X?R@M`1}0=Rqd1CQyqr;zi$_)rVvDz_kS<8fpKRIT5=#*1o3@?R^`h$ zj1Whf%G*kIIf@3+6;`?g80>)2~r0G3&SQ>P0=wQChRF^FiKxZgZi1|k~A z=a(1sD22*fz@4I6x4|&(|H+Xr>W-fID~5N(Xq5{Z&i{C;)74dR3?|J{V(2 zw2|ilu;A*m5e!6h)u0Vz^y?#8*}6i>^^F6vH9sJkGw?ssb(DghP^@z>Wqra0>I%QV#Jx*&0rkEh`J#KLayyA z*kKO1Kt*0NJ9|E97II@|0zzn_btX*IVUzBlc2;ANSj47Z_MMUG@5uQU^MJOd7VE&L z-74q+5ak9f+{9*=>-^=vT1V@lO07|f2?h_>UpISvtvRgmdaq6anG#|D9Yf- zvcc&e_Rws)1odnPW~az^YM86Q8=fvcbjEc~)ZeG=5M&5(;>!lY)Kz53nC06M^p{4DfFeBV-u*2&E*?X3_&&l;V%I z9;z^;kfwwEp0hiytO)yD%p1Sym*!oRL8;~+>Q3u}H)O9#s6 zuQ<_AXd+Q#Re4cmNU`kblLq)f8PNVVWb(p9n|OJDiF6YD>(t)qfbztb`N#LJsdL~z zp{N!wVApT>zGt1TC;;fp+c`Ga<^18{E7sxbs;t=w7Z^ctg|L~phntFM6P68m{fedb z{+PeZ5sm0}^GsR48N}tpm&^DTKgg%I0 zu36Ve3-NrffbTk#i9dru_^o+2U==oHzu>@sNISybmTf3AissHCaujd)>}-{OswN$~ zJhV&fV%&3#m7KxA%fYD%xSu*i-TS*|XqA<(q$vj5b2h?_V6Tb5&sY z{GV-7p7HZ@Eu*V-jQ9-;)TH?9!*MowMqd-#^_ECee0b|bTQwim&H9f;a0yEP?#wkK6puiYcxutp|HIP17w0H#vn9Cf){cY z-(P4NbI}-q;m97#2;ru&OGaFaWQ^YSVYr`IC`wCHD2&VCruVopf}dUIWnPR9Ab0aD zNkO?4;w6r?0d86897?7q+YIWi#w=y7gD)dj2-26-LN6mfJvaI?9?jlyXEJ6n^LL7J zl*yRJSe|n*le6*GHnA9Se`!}dqB%@05o&6`#^>(j@rwr4N&gs?U)>Pd z@GuY?xK7iJZLwUn!Z)nW9{Yxytm);C!f=b5?V(1ii%Pq?m)- zdib#qI3xrR@VRa?qSYs_99fasNdcsXu&8PBcJ=&|9`*A=K%^_CiJ&18dD!b`Nj>e&FVCE6V zs-R>%!Z?e_28nC}nt|lcan>K{mo#1sxdNQ}3b1Hgk2tUrSd)+BuA_}WxL0xvPf2*z zEHftuthG_db&aB_8`!4DS*t!?jE%vcLgp|U54WVSlN}m^**%^AO83L2pRNTR34~l+ z-1*Tz`|(KPOA)fy_>N;szW6!6ST_<=%YyaMuG7Q)0Qoduk+zz1e)U$vc3DOrav4s0 zu$&oM+w%jL?*b~5We41~pKqDxc8is@zR@YHO}}_oyH%o|`!E@|Ol(Wr=Z?FejaI{Rw z8yn6ol>efz74t2?`=)2;H@+bq0lPfT$R-Y?7&Y8iVs-v0$+U?68!s_~UvU2XXP2Yc z4>*AH-S*Jh?REZ7;N8#e?sP*l`#AscNc^MCL$iAbpniZMbgYDLFd{JLP6q09I0OBl zUiW>1(fg+0V`{0=t?qdfyvj-?=YssB2{Z1`810cy9OJGEs)X4c6r?#QTTZ=f@l|P9zJmwxVOf3W}x-p z)n^+JF){pFYAgc*;3s%JJC=d){7}xQd)Z})f{x($@!v-A(;pMnHpzb-n3*{KJtpuw zFfWm@XYZ%K7Cw1vdDFa0t)EY)XT@a+q{b39vWnjO=}(J+T2qo2U3LP(Crs53@P{SB zEm8a5K(;R#V@Ss}5r$%WMs@b-pR@Je_B5W95+Pf8-w4SE*?GSF1JhBWEkci?T0rM9{ z4&ec3a;xDG?)JY`RrE-!QB^W9{S+N!+>&2PZ<%2eI*is~zxil+$NCh_(MC>2K_VAf z{8+(F6-UUfA-HU656WrD;}K@@q^6Pc z&Q>?8S{=eFx3n~3s)(qEA^G(N>l%Iuqaif64^_k%CMSIDwWg7Bk>Gqn{Ah^pi2k%) zkobo&b89-L2q$-$mXfb;PP&l|yQ+^QhuI^^+{5GGM~J_dj#BxsvDj-9kvPn2_-UDgTyymo%06X_;A}J!MR^@1v#3AhvicZ z3hMwjQw@s02Io%B`w1>Vl8i8YD}{@{?D=wKiJw#ydMT&FHKu1TdnjI?Hp-6PH?*Wi zEZSdbNqv8(!KvHs+iyW?M?w5as!|H!oX`iX3;a_c$~p>HII*fbX# z5^Q)w+XKKmS9aoXiUFo2uU{>|5e)RtplEb+1yAj|pC zw}SrW?DM*$n`VwA-NL$#R{2UbQ+kU$c&DY>sxXk# zsx$R8`DpbLlJ1!44(E9-f+}zyUYUMZAtXUMko|6>zwP~v_%y(g!`ed!aYg5t6_w&~ zmI;LYYQF9`{^)L5=vhOmLy#BQPpoP9QoZ-d(>)C|MY4th-yefsMeTYB4OK-jQ$Afi z!aQY z{BcOkiPUKwug(R(4>%q_eomW{M&{)xA%_#*S%`DfI4efVBrMz~g=+Qr{cg}*?GIR& zCUmCAdZ_9G9{k_g!Q_PZ=v$cGf@iQE72VH1AbN$a6wVbzSO4~wzQLN!M}MBs(E4fX z=-+?m1{%WEbQH};zgR!xE3zLdLhHkKSpc`sli>Pj!BZrpVB5TAalIT+!PnY^-|!Pi zbu;6n6GxV=k>FQ{@lyQHK4X*?2>Dgb*ZH5lK(!pX=f8_VsNHVTej1X$(S%zNru5RY zW~7C(HUZCRw-GVqU{FTgDNLsw+H#{%o<-Te~ zpe*agII zsSAkTcP}86RWBfvA6!6mZy8e5#GMsp#~rFxj=nu;U47!LV812j*M_V#!@azoV=@+& za1bEpGkoA%nGVx$J=?aCx`8`%`)27D{PM?mPO3vb_tLHv+?nGz!bZ~-(sb|pzDB0g zc~L9&o2B9Hj~7nN2fH3WxXB`PB$=FgTHI??974@lpg2_PeUF3c2Pf$)?U~3kd^uuX?a(cHZP{ znb+e19M8P7TCvrj(u3H!=xmEK^o7v{!&lvy-%H{a-TL-6G;uFj8?C&GR#|cguLwv(L8`C1J4kM zcB9DiDF9QaboNdvQrPsisGqJNaua z&q$NR({{&V&z4MHz)06;gxW40$11!d6~6;-IKO3_^_nrC9*|9q=hN3*eD`bbLCKc# z^iNSiuXLAK!hA4r^PFIRH{a3;?N%2%DdzS_SKq}8eB z!t!7L{_N|xxPZfXYw^d7`8~Pj$UX%t02Nv^IqUA}dMImkT+I9%YO=2jasn^EyUD`4LIS#F7>KLAA#wVI@G?^FQ^+T8!-#w;$1>HVvxwNNiiSU*{3A#hz zK#pI#kM~w1-#Uv|>#X8FlxSxkSy&wt%l#k1mZuxHMW6zMp^qWUXNmz2O~tUy%vEul zyps|$_`ia=e|EF0(vAbDr`Zppf%ISaUt7S=wwT4(^^k>bbmpWzbZ+hOw47C>tp!tW9R z=%*#f<97*X=r@m%a9v8?JHxfcT8ONF+k3PJHNci}#1ojDu}ql0bw<4Le@|f;ramK# znzRIlsZS0=6911A?XXsj)JDjfiy&^;)A>(2YS0bP$H%Z{^N7ZeVd|8;>+INaEqI4{ zdwDKVwUe~d!*?D7(24zD0hJGG@a@4H;d{X3d*zEa`VfA^#v392r*Z1Ei!Pl#eNI&P z_P7ZA&xnz=+55kbs4d`sI>SZi|1^U&<$8TnaI}l>|6VaY=;w|9f%hFCz99VyC)58;PChK6gzKJH-Rl6Z>r>d^52>Mb;l^ zIf*V%iQ`#2N&g4oIeK!Lh0fUy^iKS})oo7=$gK?3MjjE_xSUtXc}@=q_b?Id)C1!1 zH-iO_*J%$fhuJq><8nB>j_NxCc%4u^psrdE=+GEAo4$a5l@L^nlVs#Fu>BMrK8Nph%<}#XhjNbG6n8x;eSOw7L5q zU&E;b$uN(p-KR5c-j2#Q#lXRQs&Oz+YaGlYI`$H%|C1G3q;ee52^!7n1l4MtpkwmF z!JJBTf~r}apx*7l!L&N^8L2MW=IJc8Y`Y{apN@1*(WY@uTXS8lBhq7pl^!Zh+F8yrgUtW&Cg&gl|TWsZppDC}?sT`&Ch9-8f-cZk2_!%{hD9L2Ds{Uq^ zETbC#)GI`h@b!n5!Sc&0*v~ov`&r{yCJa}j>`R?Oy`hZ*=OM~Q zoj+NgSAFAPACGeqo>y}$r9-63Jjul0Y#g}IL*GDtYHe(JCi8`QO6vXe7I6ATFG9XC zaXMD9jCX-3;B*RZH*&b&i1h0`6Yrb)KaYTq`ac`t7{4dC!12z~|Jek7N9q4K)Gm+B zb+{<~pLK8?rvDSbRdkfgf&V!H{Mq3D2>f4x{}T9rcl{Fh?p-pRPp@<__-}x}%=OE5 z8YW1&U05f`#MPiqkQp9vK_*THaY2q@NBxV9h8=N1W_Z-;NEvq2J!vuQs6S%jd=RH0 z3_Ie2%zED0Izi_BtpU4FfTZp~J;`2QqL=Wg7f)}FoFoxLch`r9rF28E`=Z4^d zt|sZw>-}*EE-37}?kBjQdU_%x{F8#m1#Jky1-&Ww@~Aa&uDxYKa6$VLogl=GC|uAQ zhu7sfAeoKVl4D$J1i$`cP2|^qtl0$jLh9MtFUdY%_Qec-M&@H(%CBEp%lP#r>(K;% zUC%j!bJp+qbujBcM2CptWV%#k_XBGGwrYOe%pSw9ciE?r`-1IRJ|Fh^$!uKQB>A^K z;kR?r4_hrnZ>X81KR>}f*Y^KQX7_vb@@Ocje@tJtQ~N4^pSD0cQnMck698M{;AM_vt%V4z3@L{!*2t;6?D z+Z%92J6p#H=Yi;=a78fg_Qv0Fb&MciZ=9YIv2=`Z9N&drXB=FS1M$I+tz)zi;%_A7 zr!ERt1o@(GIU?wybc`TB^ihw&a}l_rEFGY@Iz}*F@y0E2aYb;L^}UwMpTiZwbBn&! zPXyiGhAXPik^hd+F*4&rzn8%N&k;dK>x0=h4aa|pMND`j|6Kc~dGXteOM-r{t7@a_ zJrfs~g#Gv(#)&*}Nqt5^@I7wdv^~WE{;P4`%x}${I;&&yh}3^NJX`;1^ymWqt210~ z{8t%vz$w@3vk{JVb^WKG1^vA7U#S1IfW+IG_^(xN_@FQL0R5+*e`C&T%Qg?b3&yJayKrInz21 zLsk^<-O5qz?irDdBm4j4JclFuD^_WQz7vNRa|DkI%Y`H3@Mx-iaJaCP;PGXuAL8(3 zSvWGVPZ7NCQ@t>BpF;JWUeHLR&tu@u?hnPC@whG@cgEwoeB2q2>+*4D*G1sYnj&y# zjS;xB3nFl5XGQ2c)kWw#O~|3|q;Xp5At{Ahn*#W#Wq?~dNaNOqSc~PonWoQtx7ATt zGkHIsZW$==S4vywrjHcgt*dRRPS;33F|br)*xuAQx6^cpZzx40{p&)&!tF2bY_s04 ztr`@GTtwU$*Dl*ZjmCzRx?x%lk|{2%+JBKF_Hz+itt~3txR#b`S(;%w?scvvk~&63 zq-`JTGy9~sWPa!7&tAc~^8BqH+HP#5~54uxJ6e_ObMxs0Q7^^$g zq;;n*&j)X}?E|7aHJ#O+I;}l;JB2`0Y30;?(yCnBdTZUM4?0-)>CtxSKB@k#US5&v z&rtViG3Y+w8e9}UO}*>s_(`RGxU27E^%RqQ{MS0$UZS;~x;I;=`aPk-jZK&7s66B9 zJN-lq($M}6ZPyAPw z{*#IS!t!^h%Ypv_9j6_m1BI@j|K!;b=e5PK1I{Z{|EbQfBhJe#C+d_;G3@xfE;HSQ6;=DE)_T5ya@k2}16lEbgdSffJppUzJ3`cHk5?DJwx57B?RCPe?~<`Dg-#}a(` z*U_sd_SgA!E9+CD3q^3IcGs%x=UU;m_T|^P?4xt&Fk$`UeOLX{vx#h7G8GI=jK26M@b8$oC1v6)#Ul4pU z1fMz{j^(Zs?m+dYT@Ikd>OcU=Cb4O4!Td~JSPgD1>wDM^Y-dKr9?b@ z7L41xad=#O7Th;)yxu0_={~`G%6ng>M9@Xyv*10Aeq7xreBYuU7oUaWB5!;YSN93V zCEoZXEtUjefl%}X!kyIi2qq2-_Q+H=QrdVFOG}Se>&`lZ2hN^1^uT^aS`|* zoEN5CuWuV1?c(^KZZ8J?yzxKRfxnEz+lly}$`x+-pfB8SP1N7*@IUX2uDWbO_d}LX z+^6!rhu&!TTWZ$>a4aEMrZ!e==-W?;t?yRY2*hQ|4G8>Y>iA?JI! z_L{?kiyFRz=cAxW9`t$5bcyedpBtsFJbQ z3m!kE=40I$yQ;J9j9txN0(h=a+|vmfk@LeCxTjH}xF>$!HXrviI0E<7F9P?Jh`>D+ z=f*u%{3kc=se;!F^KefUyk3}xd#d2|!aUql1+N#TaZm1kZ|r&XZfMizd0g2jdB;oj zc^+4GfLaIfbgQOhF7fus`%vwN=jldGRYw|)q*bLdt96=-U|&2N_Qk95)WK@Jeeu@D z!6#W?QTQaQJJAEfeevovis zajewi1^Z2RG<7Se_{rc=NUO8t% zIeY2wS7q(hcNC))r}CPk&tB&52UtGCL%-ds|Lw=A%&8sda^t;9zfhsJ{#=!(^y7}j zdzC#M3-6`IyInGwFVr}Ag)F0*Pt<{4*#f|QZ2(;|oP&qqzSNp&Kbc0e^p}dsh|xO7 z)B{s%Lla~k>izkIA5QP@rvn-aVk+InOy+Y{wsTO|Y@KaSG7?tT@-x_PFfLx~H5qS( z*g<$P`5=Q1PkFs(;{6{O$N0S$@B}3|zJ%{`mAJmyQTQKR|3v%`j!R)2V-1GmcH)05 zoQHREqhaqXT+kxJj(CIX40{}0P&a}LY6ja< z`8SZ@c9wu$wVQ*8eKD~Q_0y@q_Nkt$ks*$G)@UIIVU$iL%U-Xe+%VXjCmC-(}ULp9RLwx*6 zWjz>e^}oZmE9)43J;yqUU(c~FOZe%Kc4%G6uP<4nlkD?o-O8_DSx@upMb;lf){C|! z*z2+@9KkuekB={^Y$o=DsT(y!T2A2Z{CV70uP1r1aH1DK*YmCHA8&x_4UWt2M^~R z-uxpb9t!6t=<9iR3_KLR_q_LCN(5a59t!6>=vyrz@g2e9p>TYFevvs(h`>YPc+DHP z#l%D5ILaGOne+JwJQR+1v%W8L`7?MZoVR)Nw+}_o?QM9dzy;dnjY$a=Zl8|oPCk0ca|p}st@8p+l_}RxPmLVg44fnX&l0_hYbmQAS78_}1_zR?|{ti_h*T@E$+M^w& zJ!azyc@iJE`+1*;2tqx?W%hmDeZ=?%KiPj3tHpB1UPGMCG z8XatG^K*wivVb@xdXymUr1Ycp$!s8WTq@{>k)9!=X93Zre)N;yTyb&vJe5Ni!{r7j zRQxpF`tVT6FHzyikE8w*k)Kpt}_z z&xc1kl9@GSAR`74XL6%Vj~z^NXwa#O`hahnzSn!qKct+F+oz+A7lgo@*$&F3sxy(q+Y@d=mRhP?SgL0V0*rt}v|M0eUqX1I8(2M>bVI(so;q9x$`H*!Je|Dn z){W$~!Y~nH;V!(Pyz%BHA1%(0|03xWcQ&Z=ts`|NLRY-T=Wa2xsK-v<6?sVeacO>ftg-|1 z^Vjd=$4K?m#7B8ycPoku&7w@^>3%p%3XD+`q1o2nKmxP>_D7d2-r7s2*?y%< zdPmodysj?g_rTVw(L3^nY{D~DohROS4^H!no@ z{?~KTcQ~2vLr(qQGC^S``wFjDFq~W0B8O zO#&ZV$!!7!-U$@TWnqgRt6H^q9rc@8e&8bfhf-P`l?dK(G{3J9{~k>1{cL|1R07cL ze&`wll>qX)AL_$;Jv4BXvVgz45XXD$C6L`d?D=* zkrjK4e?jeqA!F5uP3k^}Xq8^ANJ7NR1Zr3U$XAAe5BIa?YKs-$in{h|k<>TS4eKnyUBDuE@a~3hpu_a)tD;9xDPAQm5{Z``FrB7N}KO z!mRlBV(j&zZ0At}(gYMRtzknj}0|?$sqI_Iui;+Iu17M-!4cicXpESK4y-{&|)j zn5#sH0npU@r9pm95nf|Uj-jPjBdVeHa|svqnigfX<%@d)euBow-a>xcx;I-R6bt~_ z^~(DVk%l*-+?|Y!`@0|Rx5w(3T10!+7je9jX12XMqU3>nrQ?z3`Cvbotvv&RW6A9n z`+D#*w)h+f;+ekf30HzZkO2uryE3o?inRbx!?nCx8*We~OMR$4(`zmGyM=S_hck~T zB;Kyzq6GWiAG9yGBG>v}wKPMF4_U3Z1d5c=@}oe9`x6vN+7i+_Uwob!ewOpWRVjdX zfb;_>&QoDPY5bb|8@`-%YoDI4ZO{CT0XU;M!+$`o`@w#rGw)&##TmI8W8-FD?1lMc2 zN?C50?SfgzjMgXOJ-XtM!adYtQ0Fnx zI5Eo1F@Nq6#Je6G-07kys#U!_lePZ^|Gg{p<7aEc+c47+&YMvvicIhM^v$bmq97K= zB*Eu|SR-8Y%-)qS;Ypp_8=Nn{L4#gpv&$Lw8zmu`l8{6R-S~pzokn(39pG#E*rrd* zeO{SOWEP#7lQs$qo?d_UFhn&h9gH62Qy)C}j(I?Y%~fX55Z@7FJi2-}v*cU8gLObo z;7y{~A&ce^E4kp7ko!V?q573wm-r{O4NN;|URmhfahhqF`ggi?@_JL*^?Z}R2jazl ztE~rp`#oJE@z30nx8C9KL&G26NmApfw-sEAzwUCH73CKSOtMUVjfW-|E2~$;PnM)# zGKkYqk^U)b_Z4W#dl^CO^15DReELt`-+S3=0^%vZepk+aX#1mBVc0bC;@H1pd)VdyS?WN!{dA!ZMcb9VcNdN2Z!2lCtr-G7wU_vX@1VOs1d4q>Cxpri6nS_WxT+VQ<2!L1ETcv$6G&x9bW&Q@$pZevmWbJOKZ|)bPyb8MP;V z>D`6+Alz_N?m0lEy8Pxsytvv`8L-|(ah>91-&tYZo(AT5g4>{dy>|knx2`uZ znim!cG8TURV`1>Z*LjX>VCo0Zqa+MS@h(vh;nv+Ie9%*HTf!-4l~#?PswZR&F82{R)I! zqnR@9AZh&Tei(c~aTi=axwds-@%TD7*+3W9R9hbs$qm*3yzYRl7ZM>mxvm8w|3jR021(Zl3M{+~Bs# z&%RkTNr@opte6B3aGUF)Vy_B!P(zU{y?jX4MkgL&odVW2K7w#40Thcra+Co1u0XKn z-#11~?eT5)MSWY>IZhkEV=7azr=)X08LbpRZpTUzvBMjGim`~z;66jBwWtziBJTO( z;Anq^^C!oI>=OjEgLOx@hjP*dqwx*!$>==1vOPtt6SpC`ooOnQaBU+v_@wwIJ_yAj zH zWoW<(q2r|K&t37l6()y{@0FBHixrd_?ilHxMsX=5E?J^fLI)oF61j*R?z5WE$iIDq zv^!FCYqrr|Oi39}m-l%)25GUDI|GA?(5b6hDWnsl$Z5G%_Zt7Ifum8b1Vy?Y4nghV8b2OP}a@*|bd-_Tymf5bn1h9aeYQncE8p7-JS-q)znE(`+`IA*v;O2uwO+->T*K? z^@sYaS#;+#4m!%6w?eG5e%0cCO>`2pYEINJ*ft@P(WC4|ezR~aCIhjTPkYiR;ouVg z3RZgda10AF-^A*1A?;Cj0zhuLAW5j!#e`uwD@D&57Nco$9{dHK@?uRGM%kL=c#<_uLYr6!bTb1lQ4aDMj1?pYuqS?-6;yGR=h zXL!zX{FAsf8Mgu)yjk0mU~q4zA{Rij_XM?JEP{I1!19o@+A{>EEsYI0xOZIZ)xv>} zK0_#OoFH6rF((N29^WO%8O^|qcIcNg?g7%wSV_xoTZu=QsRe0s1P*W8!+6eQjT|I|^MWUP)G+yH+x zS!ZNMjb)y`VUJ4C$^||ud$Uiw(5~<<^nf6{EyB_YC&3IDqa~dnfmbaS9fLF+DJMRe z9Oi&1Y3Uu;bdIn@CW9}pes_#w6ScIzyvx7k9U;QJjS`{YkI?uDi<%F<-lb_FO zNhh{8UZUI#xJG(i+TLF0YseADj4UJ%qFbz5!I#+u=e3%u*kF}0tdX@&XwSm~e68H3 zYQ!k?yw?1&3|wv78WgoMS)<i)%>z@pGw|8gdBiRIhxw3r^oGp|dwxSPy3#GRx zohm>q@Px42K2?bBLv@;Wzgpm;}?FrygEfsDc!zFv$vM=aVL8zcZ} z?I?0-T+6~qc*`YnY>Xi7!;=*g9yhpsW1%vJdN%L1w|(wDlA?%04gzOu_&LdL`()ox zSO#EgAT*T;7DSQ)2mM3uE~lX<*MqrQze%0jfOZ01Y}wl4OIkNc_+XxzSJ4Uf+PlE( z-(`zOf&G@O_Ri%%&Lym(g?jGL#D!=2Mpwkj1>nl@2US(C*jOWa?!s%^8E01mBrq$p zo4gL;KrCfwEG2-J zD^uSS$p@bda3^Dxr8K*pRx<8Et_?5y_4)O;)|gU>J9UwE?tA+>O6~6UDnUQ$l@}^q z&kKxx)YpfzkW5(`C>P&Yb7CBzcQ{ETk~X=*^ylHi)LeB_kAA`moobL`mI5}DMjRZttbUq z=#2m&BL@8Z(CCrM<68*#9NHZYeW67trC%y+{U6Ucokhrc$xEhcDE$cHJuNm?<=eT! z2U=__+!K0Y+PZRvCt~*pM+PlW+(!Bx_!Ggk|8-+eId3!05Sia*M8Rx{1eXD*77{fCL50;^AM!}wRth(OB!nn@O)ulkYsCw#dgYwV++ zr+U?>Fx3!nwWwAR7fsyL)vG?2x6 zs&GDpL%MBeA>an7_Jp=&`X5Sk5dDLd1!A^r_sQN1qaR8W@qt+&N^gf6ZOMt+S5YM_ zJ|auEWnPXw`*e-+`bDK7CgXee0=T`@J%GH}_@QOHWq;lLL(6*0{<_>W3lS)F^fc!6 zcTMfp18{f~rlL*k!oIhL_vik1CjM!2mUzUKySIGs)UgwWe<>%rNdM~LTc;yfIXEd{ z*{48K7eSYE_wM39ds{>t^1h$&W-ZaPbEDhDAU+wxQ=^+&3J@RU^=fVC%T9q)Be0nD zdhm2RA6amsoApJ?#G%sn6-(7Ou+sVC!~#B*pQ0FwM->x@EkB=^iungoenpOnlL@wx zwQ}$OhI*4{D%!^q81ALQAK9UCkK$ZE6uU8(?sQ(=U&}@KF^wGBY&&3lFG5#a_w6e! zquf+VwIS3Bb?eBtW-?%gqAu7`6U|DmN%TyRxCVs``-uaoW!w)@So$gPi%)uA2xKdR z;RnAdur*6`n}f@t3Bhw=3SCy9??I2+4#%{HgN>|PeVl#hW2NOuO7xyv;ZCSS3Sa}1 zl6iGrM5OxG{B!7w22K+QX(PqbOTtG>$+t)PGG;D)#SwMj*FdYqEiGTsVS@@1EeQr) zQx``F-{$S7M{xQx>xhKF>QqzPniTdSRlbigB~K;elAkdDzqQ84+;h@&nAm-#^W^=7 zd}U`cp{B@9cj%h>HRYuRllZ`%95l4v&m@{O3A&`mvA~4JzGTX#EWDKtHG} z2jD<8(Yq+?esnNvj~Gw47vtE9SjxhnAOO6(xavtTs%uWeYt6Y?A!HOUuJ$)C17qN*5D4bkdiR6~p9v|0xwrRPv1pwB19+vRC@d~q~p(t^?M*Ut@KF&z|G3Qy0 z;|JQc>ag#urp_^s6{Tqj+}}x}pX5)fSQNeBMup7U!sC{?4 zTHjim`~}n256Q>hL9t=nhdC>YD~owqt)0h2uZv_K`FeuSuLuY))RmZmaZ1;nRA+;9fSz{G3VAA&78@S8wZVVx*gv2C3#*91 zxs@>WVj1?NR&u`Lo(7G)3X=Bp(Y_M;@HZi^U^s{F+0Pe-{hdA;qFRiSoV?+F3@v8g zy6FP`Di2bMC(;`*LiqZ=*}rI@;a8nBe#vRy{)en9kH|Y#UgYmoDoT!nwveICnET>PAmdm3xUIW^{EF=hI% z^Dtxey&!fB?_Ot~!$3TwtcwV}>&$afr+3ofGn{y>se&1cZRR=u8WxMVs;kGRXK|kw zo7e|yuY^Bp{%Aw1 z)40O`d1{NUrvqX&JEyp|>7(v-X0G6`)uu1DAl+g$9yc=l3S3msBq3za6{@h$D=yW- z6_D51e8SZd?h_2-!@k$cbSddO=Q(OLh_T)4L z1NL#BhzAX8J`~$-s^6mI!XD#6&qd7H&*bfVIcAMbf+4Fhd=QTEO!gr0TiI-s|(Wi|zusuGy=9C0uYM_~O3aaHG5iJnv)K-I2uSWtC4l@h@EFYOqr*&;JzE zFcd@#{;uy%tDib&G^jN61Q-7){~JjGFdDbp7fmY`pA6&+jxc2eeUqZHLV5;XG+%q(E_Ch7D<9sQtRMFu@$@Wr;h#j|?L_U*KyL zffCbgHyF5E%aQhY{ZAOnk@i5${Hfx0I{y#Aci$ZUb`#vFOmG?xzPU7At- zbMu)OIMcUiR9@cyZn9Yc@{DbnYIaR(xXv-ztT6Y9ZJ8Q$O=_6mW(X+La7}6moEA9K zM|i}xeEgHMldoo%K6Dakx2(CBDQQUrMBKQZ9iK)LYXk^OOc7~Vw|%T3QFDzr_$Of~ z26o@o(NTYl@p$aNB)=(y7Z%o`Wcvgbrc8I{O_EV#F(*smH_udO$ymH7;}9ja{Y4DQ209ali({I-X#yit&*NPR@H+e68rK;uN{n1vz$wI z7hN+|RTW0*sld$n6~D9XU5!+*O+Gvdq<);6JJUudUI&RVlhW;->>a^{aebSnf zEA)@7ISm@Lpr9JoS^TLXzS7TVjCDlC;!^UkX3iWf`I)2cIH3x$8!yvJq9?li;maS; zFS^kdzdfHdK76x{DoQ54B*p!!oll4AJu?q!j(JVBbn)CXm-BXxk>_sLIZleU$}spN z4Z%^RT^5RdKIj2wMtC9p=Nn89q#vF`g?}u40J@T-k{VwrOcP()JZG%G&XYu#>eo%o zov1hVyrjYefeVxSyOrL~T!OA$YGAw&4za(k-ptY@M9SCHAUBKGo*nEi&v{7;C5s?W z@Jo4@mSEz0^4B(x{ab9KlO`cN0zE~SoH{kX=T@Y`KaZ^vUY(#BAW3li!_AzoGjw?H zHeu^ehLRujZr=mRnKYZ%z`=8CE$MlM0=9{AOpoU#>tG?aC%-f>(=GR7EpE9Rnms`8 zqwX9lAG^fKDri(a%x$h_bz(-Kl1}~y=~dq>zXh;_^kv=mf>rRGy17(i z`?E*x;NydBF*4EJT9qgotg0n@K1{}uIyjNlbi-zqrIct!in+0ec9li_i!=Z5@60?$ z5{c!n)RJ^BJ6FEL>b$6@XYQcob48yH)=H#3bbiM-JkX$!ohAO8dr-II#jB{NqrF=F z0OisS(ug7XXktF^LM54^Kk@&r6OH@WIIe$E=B_8IadWbl5|fZ>zw2L^yzvWwA)I*f zMAoV0(dx5kVv0{PH*Z&^w5Z&JDX83uN5II#&mf#X9+74png%oklY>p=nP>ezOH*{A zz+572>>IzBR>C~!d-z1mV^6_WxR*UbmM!EPevPQu3^62QP2H6!#CiK!S-9*mL~!$3Ebk-A;0C3X<*@1)47!zK{9|syC(Du}VTSEdc1Cyo#eUlFc%F5#0mmOMR`r_bz9m+0=bB7MeJ2lNrng_Jr zs-&VkNx5Pd8U@3n(%nk4Pdj#*Yo5m%BdNyG<-~H@lsrYu9Rkdzacja5vi2^kT)p>| zLVF^puVS_|f_{~U!T8Okc)mwM20cBDg;j-A|2e*aSt)J~*&*Cm&tO{hshTvyiDMFB zp?(*g(Ih&DG%W}{o5k1@Ggxk1`{OsOZ_HU)XtxH2P9L^Cb4WSsT_2cjj6LO!_Oz{m z{r#-^h&`6i8X5KLnS@3vpEdHMAV1h5jxcCy^ybQypLZaw`gDWOFx2OfY1S$)af~@!<>h{^Z@#AN9Fn-y88r&(F=|?7Pp+aJ6$0 z>&=N9fBQEZsT}VEMkJ{_FJ1;z5=HN@uijtr0D1eh56@Q@ zd6LKaR9_97Z%<~sRT*Zbb`u$YDXn^YE293<{xgYZ<#>v6Q7IN;_V7p{5`qxQ88^f9r>-KeGPW9%FI5l zDU*|T=svEgvVfwqdyp=tRsW*PF!pGb>zjXX0*XMAnR3apqf)0=#9=BjA5%0mnIwC| z5`AxTd1Ats2$r9qp(YJs9N2JKwXfjmkk8c~R&0|ra%K#RMzo7lFT3?+2oAq$>nggi z9U0fqN_Qp^Mm$qQI*%sFoeB|NND zyC(d{r7ereH_wmq)@zMQ-WNA0WkwR?N_-MS8LVZg7u0JOox@0--qi~Y4S8m~x%YUN zFF0q}^EL)XR@C~38%X)T$L0T;o+t5SPrR0$xe_vfKqBkQV{mvEcx%;f0J@Ga6~Vy8 zm|%RsR&+bKA_W8Azk?MjDbqc*Fv_?Gphb>nQkbqfP*IFAKu7(kj{o+l8nlNhfjVwgZoHUhXMtj7RJ;>Nf#3o`{N>KrNVDNM@sC%8ky=dPNY6 z9IR(%XQ#P^tIcn@R<=5Dhu5&M;EdoF`h{{I7V<=tvA~wln>KY2N5(V%-(cNY4((Z( z&aB__!zlVo@6EVPG-;a`1&35@+MwrB~Dmv+-CGmjkhrR-tAcJp~T>u z=>qsm3uK+2IVKT$I~}V%-l3&EjX$^4P?1-i`nBXTG_SZwsc6Q=gN?^V{|g5k`w4@z zTXnPN|K9Q=UhTW{YsSj&Y^{=Ky^$8UT-^Vsi_L)nz3mL2Aa+s=~wQ#=?1l-LiXK8KBg{R zy~P6?TXmqfNk&>8#`5%u04GHDEXixFV-5=^f=gO#BU&UkdGTPg)F11J`O~&trJ(Q4 z)#d{@gD0W)p1sT`f*2*7Szz)D3f&@TgsgH~V*o|yP}0XIUGm-Fir$#%jT;gMQelf% zFZ`Bq8CK1v6oj&XabiSch|b>X#tb^-pyB)wQO(wN$$WYE{M^Da+}WR>K;C9z)Ov*p z?;z+#;8*A`6G>_YDE0032P$@UegxXUePFv>%``W*c0+XDJY3(12$9G<*6XF<#ZCksG z7wY;v+=>>4FR1KE;)5JHQJcQZzFCMfcV9x%r-$}CuLnNxS;(JyAa%bQKetNH>+MLCN#=rw);@)4;(KjcKgG8M~FbsGpLDaXL}&3S-Mr&SCr zj|$QS;2>O~geaZIv6MrD`Wc!A%hgI8Dy@U5R@eNUlIdA8-%F;I0{E7T#D`Zk9;f@K zSomHEyAkESy9GhtA7_e#X(meDi7r}LrEZMta_=G%A`N8@D?4~B@<>Y<#{Q_cY<*Mt z(vP<<)|>fIjo;ixuc0sYmC>s5fa=OGiGr7d=%x1)F60^(@q0~~p{yBH=&uZg@pTq< zML~zfMpO>uxa~LvFG7n7~N5RY=pA~;hf z=)T7@CUB)*3q4ZlE(7K>t@z6>EL@m+D}at2p7Rjyo)`EGm2t2%?IhUc-xdBn(0$#0 zVKK~b{R2wz`4L}KnA9;-^eLK2s~bZVS0-#8eQNC5a)$hgvg$2$&}vwO|3J-KIwFN3 zeE(@9_&;rAkMZ?Pe{o?poPNpg(ptRa2%RZdDi$}HzsW-Jy$Sl`+cCbp(xUnO^3nPA z<9Sj;_6EI`t-2a&QKZ+{@$_+B-Hwx&z|rYJ^J?HLw3&a1?F@pyt`>`(^$}IkM!FB7 zlDzp1ewa-+JS;GSBK))Mc57w>s}HcBDSeE_FUxxa6?NpPoqrA{UuOIUkdBdpd=}X= zhPs<8YTz3c^v*|0AEV?Dq3w*Da}j(zh)T=xzprpQA0u=oY>7IO??PSj#UaNm1zSe2 zX-Kaf9%TP?zj1TpNG0alOMB%h45Ibo3{d@~@a1R#FK1O73icVW+l8~I%pXNu^ZBw_ zqJ;0xR;)NLeV2L0xNR@Pmx;RPtxK;1rdkVi%-C-t@zFo?&FS_w%|uWfdC|-KO#4}y zywFO9*3+K(h|v-C&AH* zb>wCJeE7HM00s%^qYLFMUzuO_<0F;!GGUkg==XAQbY&SvV*siQDE%*s)$(6<^o6}qs!df$hepSf zXOAWRghns<%@nS2IY#x4i&gJri_d;22;{kZG=5m+DwGa=e%3l=Nc9eDy_YqM*}ju5 zq@jnj2?f`WaOfhtppe?G;NNH3fjs9o5|vs7fjp1EK2jUb3TntMXlK>!G`Pl_c`vC*BTRIPnE20 zqbIF_HS7P=SGRcwm}-_xjAMiM|?h@*veDi(*FIy%{|j@e-jjgCQVK=zP%v z(f0XzsH0Ys)-_)tM;y$+_p)^WC*~w^N?xEQHu701E8PhSei34vsjl!t`CvlSCCQsF zghhP^?by+>wv(^5vBQia3&|FCld@;rrZm`{dm+{Qzb`w74Cj$o!r6V&>Rp-UcG=x_gJiv#Jd2Ac zIrZn4C3IGI!Mh5w*5b;3puC(QS^o?)YMD~A`oezi;Zg~~MO|!aXG-NFU@r;VBybTh z{1aJbaB#lggl#HB2h>i;CxcMi7vC-dT-}~E%D}bA{q@Eajv~!;B%#Om@DxT)zyC0k zEitNxc)>RC)$6cI!SQ3h>jksiHX3T_ zCEN0aJ6t#3H4hgn{5p(}_G2Dd11rl-uT->)18}~i$(p>5+23Ozg{?2%>nrDE6v#ee zjmZDFNOy1KYoq#|&N~6*pI1Zk28zNx0y9LJ5DqEq8nKvPvA_?#{-nv>C8{T5UN{nDb{17JSSVW_cPy? z%X(VyBItKmRn4CZ570l77b|<_hfU-|2{*lWc1?NBc1=;fzr5I_va?3S74AN0kW!Vu z8&A2uxRz@9%-uSx8s-)2vQKzg1&;qK>$=V&-O#ADgm|^Waj9iM_kM!z;F`uN9N@gR zptFP~3lRoYfddK$hd(%jZ>Dakz&%uAam)8|jf+wiqFRXO?!5^9AQl{8NacRa! zopCo|Q|xvk`5}$fBcJLGYFrd=Rz0jWXkE*VI^yfek9KB1i$dd8EX0?|rGArGYW2or z?;JHf9N6Q0gtWCR4PJg&r4kLAS#jJdO(2I+$7W{oE>LVuCVR459sAd?z2E77tKYRN z_)9SJJMRrK-MNkGJFSJn8&u7e)^WhQu9Q6TMV*J^8|Pa(WDxp{S>)+~9P^RedGIlTAZn#1#m zgjh|i5}qXwZX<2qqW|h_+P42k*@u6uu||+9x@z%z<7<5yFPm*0=eG1<#}6{rt(kgn zY`W}{?vx7pM$Mey?z%W4z#?)G#2_3x%e?tb`qWQqg(G!v?yRv{ru>zxBxnSn#L)*PV7gm^gt`Agm;PrqdUhQ>nQgY$=eJc7SH^o zDr3^354_eFd+q`|Luu&|8MX^&9+ZGH7utl~nR${?+MF9bL#B)~qvt+J%F8+n0#mA!+siBh zVSsUcCZw}Bjy^Rt$bB4$G5@rI=+TM`#Lc|A!wjIA#(;e})eD4gJF#=d>1qrUR&)$d zdw3rpA^F%TL)23f%qs>=)$RQza|@iuUII)Gb5M!-ZN+M;WvcdpH?H?PeZ9j?t8nXk;zrzP{#LDcTFq!jy2mSvgQIK%u3_u8dXCtwaNo`y2xq`znK*l2fgO zRM9Do5XBeo435_k8W7an#86tZo!6FNzB%Kd5u7hwAAaCn->uL7^XFuqIU}t!8}Cc= zZMh1DttL7d=R%j3e^|!KZf|wJ!BGoO`6_AHu%6^X1WsM#M5tSWuvHN@dXRlTqz>O$ z8Q(3iE|@)Su`ly{c1s;2tSsR!^H(DeaU4UyJ;e zeLIElAd~zPV49-ID0Kd*55`y85sf5vm9b?McyjyTn+PdhXdgHw z`VH+Jg33KmE3c?g#q_6(w^{AAmWmC z?J8RnP=7EV{uZd6ALI@;XnMm~-cd4GxS&*SQ~-#-{<%PJClXCCs2??VoS+^*S^?qV zW}rMjMd&6=Rd42q?G!Clsi_VX0_7lMwHYK$ewaF;)W-Mra7MJ6F!P>gyFU9z?w#kQ zY0&`!MmOjy^)v|};e9eea=tWgCNMraphEJAybFZzsOqXS{QZz~+GDu#1!5%i-mCbJOh3zZuyuT+&JBU%1`(`Ne9Sf#hf38Q2KoRVs z&8p;bLzdg?N6UkRTKYazx}<2&hS7eAwt2sR+Z%Mp;(o}Q+~cI;WkwJ_mQcL zf#VZ5GEc+P0G5mlnOqFqgN_6@BLx9izCYeTK>uA4Tf#;0dewxO%vt6O(S^^CQ# zbD#|L8CPI?7UeY8-Xn^}=|PUxZ|OIbWZ3Yo{#F+!68v>jxhWL%P=R-K-fcN)6w~mn z9pO`gY54X9tbPkfPds;PeNLcM7d~|>{7iVE<+TT=#WpzQft&Tpl#OoTa{i3rc_RJqeQ(yMU?B=~uK zsB(vS!Q}>rk_sg#N&NOuLn3KH+mblFkt!2U1^R#9K) zY{F<+n%W%Ho{fvzI6Yf~F;gg4lE>#3B)Rg0@E-SyPHTnoAIQ6okedrDb{I-dSu+F5 zXoPtL(@eipG-2j*X6a@upeA!-q4Ibn9q72?5GC-v#=xZo(FiJ840zGvF>WUOq!mPV z>igXy3M2nrAp%3w)m`QK3f<{1MIRu12-gpaJ_*{EoBfpEI=O4FA2hlP(GSYlH^EV{ZBhTdMQ%+loD~D^jh2c@!=crMTzZ}z+j`xkxXU7CNL)rl0 z#+B(W@;%;yz-6Z&IHtAH?RWlF^t3m3 zqg#nF)pvgR-9NGZb0gg5c#5gMeaRZ2R%0u@XBjYQ1O#MXG}c}$GVi~%9mrd2lp&*g zmV5QdeSO3o*J{xbBJE)>rKv!HbvF8q&)PLz^AFWbmobn!)_Qd}x4~{8Z_VqMgnAy| zK!{KBh2|pjh-87$zUkVz++8eR|2mY;FLLAOoUpdvVBQ+0yjLt7T5MJiiyfxy! zTt|E!v}iPco!3|!7==rf?ey>rNnd16(9PKH%M%z*l3gIjHrV#(J+=IFxX0gA>$TRi z;b9+6mk2mDx~wJlY&F39RM<3eGvD}*2pqlfXbe2;o+#nK%)hPo-!k_q;{F)0ael(N z8jyiAV67``eT9K@Km2yU$+U8R&-E!*(~jUA=h=NcHi$5O=`wNUCpV69A6^14RFi<4 zUt{6#(THi0)4*ZcX#B@${DWw-5};l?IW(**L5|UkR}spW%K_yx;E1~mFBTY?^)1bB zJjA63eC*(Fthi)0qkInx!tvd|${4fq2CucGQ6IW}m&ML|vY|8%7e%o(bCxV|&svmGQ0NI`>2$%-J#(+F?>r zw-uq*BtxiY0T4o)b~(`-?bI`Xg)kkJ;^CM zS@-Xk3*oqvmC)DDyX7+SwnF|lefh~(S@hR{^?+T-hc1(PVz(*Ror)65J8s>uv|y

`lub#G>Pc@ewk!!`R?5FWAzgmQ-B4C^^M3?!436`# z8eMW&wHfM^?LB7Yu(+KcXHui;=v{nH@dGNO0(3FPk&zkCso+wy`J z`aN{O`YGzW$oMa+|MeooxL&oF=zr}RWc{ztAlvSps^AT3%M}5?xS;Ic7LAd0~bcG zyA^(`{?_GS?{8j=9&b8cOjOR9ew`!RN7{c8aAbJjz&Xu$zj(cDE*x();m8()9iKN> zft_=L+#h3`gfDxSl;7yr)6?_67Rtx_;WV&c0_EWI58J=qulr-9mEn z6@!L*eiPHzUkEy8=KMGxtcCm$N&Oh8-$d$nk*25h%lsxb=g6ZaA^$%3;<(>LH$2)7 zSg8ADmOR>gxN$l8P5ib5;J+GHE?&L(wx#*0!%_chyj}n6N>Bf5K!S|_D#zc4gMH*l zqW?7n7XC5Ll>fqUYg2*nU+wT5ZinYG#w7nN}RK~yD`uO*rUN>guoc2XW zUgqg@(f@MGf4wEKKO?cr_^+Qz(zi?O+45r49|ZDZw)Oe~Shw&>`_hM>v2Qh>rtZbwUy|5-ADAj z?j^k0I>MXXO?b1Fgg3i`@Ma5$zSk{8-|J5neXp9G7sfbVr5^6X;%5 z@nZe)jcV40^IBpfe99pXXYuWprV(p~J-|V?@UZP&^Sa}k=ZuJN_(+-7r-@_nKcC{% z(r)$Rz+1|Bwx*N|n{tS0O=)f9={0Qbd7;c$LYEn1TC^v^WyY4M3BNM&X*RvF=HguS z#(Ij=>5aWm5+VHDV$@#Q3pbu7? zga6DCC){yqlQPr?>ymJ3ZEAhy`x!5nkEc7-^x8W(jWfG36!HIKFch9@(E;=PXL`X4 z{Tpz-u+u^Ri}GLict`$g5{x&I|7sXy{jWn1=S%-9PWZ2=OZ_igr;$!yM*aq(mw4x*PBetbNv^jr|tQ(_G#~LN0^xB3InHu zdJK3!{+&;(+ZB;;OcQr-*yq!^@k(&2iY>AV}&)%rbrU*)8KF7=D`znY+4ypMeW z_8&>=eZVi)^O^;G7QL@NBIC2*jml*U*{T)G>Kf`7FaLoj_+>(~JRB=497|t6B}X9? z1H+UOaW4e}-WSdJ&|HSO>viEL1a{vA#OP{)Y@6mbMG@*jo z`7dtcUxgF@HIIqcWsXYh{~@u<{760_vHK+JXdg(@Kgh)EaXpgscS`JcNbI{Mc7r1$ z>-z>rM%VrO*N^0?x`tJWx`m4usZ;TEz9n&EN!?wzKU;T`NT3ar-$}p4_au6szeo8)z>3kgD=BMJbsLsdn zZGH+qi)h>Lln{Nkk(zJI&1)_Syws!4N|jPB1GZ7!9D7K4M*X{G@;J2!e`ARz&^EGL zIV@z$x`MhSn-=Yfs^bmi{5}g?#?R-?JK8k9tS!Ztl^A?kn}9EC1HP;+4PRDb@MTzn zi7#7bHCrSo2vP`Y>4g|>Q~e9?w|};O&cfw zUvY%JvWfe=Jb1jXPc5WN*`fY{`Cs8lcWV28!*Q_xRzD8BVbX(B>wkqitO&sivd^HmLXR+(xu*8*U`SdBv0VL)ioUx``zSB;A(D|8Vc70LxJnzrpC+Xem8qT z+m7$|PgfI6D_dZaYcurTs?_o)>FFZNiJsdozP}&%yK?oot3Cd%AOim0GYqke|GJlK zAA}g6k+?2v=zqaHC13nk6|BR{_^*qhq1p0ZlgM>W`7ed=Up+4QFZA0X^Zz(Y!1LrY z$oQ}C!}q!f;?)qZhxkE=pM-cj#IHmA9>kwQd0&Zw9 zxiGPw*IBGJM=p%tH~l6*gR8;*S4`)&HW9y&-vN6Yv0nn^^guaHU>_%`cQT~!Am8IP zSPrqz0(+QnK=sfbJP-JsxRZ(bvR^Cg#gz?SF&md|7jOjP4Sq|AY2v=gSl( z=F1L3dfJ{L+5y`8E&si^h%XxhyiymW$LGvs$vV+oiJkjNj0pPSQc3!?KJhxvuYe1q z{q{=W(dhNtDJlPLiTx{y{WJ+DHPNrPhaT6pe(}24OyJS>k#_zA@Mw6S!Rum~U%bwB zKX75ykRD%re9Ux?tev#yZyW8wH zrP`l~A55IT^km7!;XFry3^;$!l#8QWnOiQ7`k_pc^iEtH&aWcSP`6whjxVB+@IIGZ z9FF&P!2*hF-7?7E6BO6ys9R>d-`2Nhkn~Pm9L^J?u;4S>Wn5{W-ai}|n_knYvj!d~YOi)F3X3E7?!2+qr#d*OCUhsk!yx;{dc)<%^ P$XED(|Cagn00;sA(wApH literal 0 HcmV?d00001 diff --git a/tests/Sanity/libitm-smoke/main.fmf b/tests/Sanity/libitm-smoke/main.fmf new file mode 100644 index 0000000..77c1763 --- /dev/null +++ b/tests/Sanity/libitm-smoke/main.fmf @@ -0,0 +1,34 @@ +summary: Just runs prebuilt binaries +description: | + Just running prebuilt binaries that require libitm. + This test is designed to run in gcc-libraries CI. we + cannot build anything on our own, since we don't have + devtoolset's gcc and -devel libraries. + + This should run OK on RHEL-6 and RHEL-7, currently all + arches. + + The sources of the tests are in Sanity/libitm-sanity. + !!! THIS TEST IS INTENTIONALLY NOT IN gcc General PLAN !!! +contact: Michael Petlan +component: + - gcc + - gcc-libraries +test: ./runtest.sh +framework: beakerlib +require: + - gcc + - libitm +recommend: + - gcc-libraries +duration: 5m +enabled: true +tag: + - CI-Tier-1 +adjust: + - enabled: false + when: distro == rhel-6 and arch == s390x + continue: false +extra-nitrate: TC#0539542 +extra-summary: /tools/gcc/Sanity/libitm-smoke +extra-task: /tools/gcc/Sanity/libitm-smoke diff --git a/tests/Sanity/libitm-smoke/runtest.sh b/tests/Sanity/libitm-smoke/runtest.sh new file mode 100755 index 0000000..8c78f78 --- /dev/null +++ b/tests/Sanity/libitm-smoke/runtest.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Sanity/libitm-smoke +# Description: Just runs prebuilt binaries +# Author: Michael Petlan +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2016 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +# Relevant for any system with libitm binary compatible with the attached +# binaries. +# Suggested TCMS relevancy: +# distro = rhel-6 && arch = s390x: False + +PACKAGE="gcc" +REALLY_WANT_TO_RUN="true" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + if [ "$BASEOS_CI" = "true" ]; then + # in CI, we need to be able to skip this testcase + # in case libitm is not a part of gcc-libraries + rlCheckRpm "libitm" || REALLY_WANT_TO_RUN="false" + else + rlCheckRpm "libitm" || rlRun "yum install -y libitm" 0 "Installing missing libitm" + rlAssertRpm "libitm" + fi + TARBALL="bins_`arch`.tar.gz" + if [ ! -f $TARBALL ]; then + rlDie "We do not have binaries for your arch (`arch`)" + fi + rlRun "zcat $TARBALL | tar x" + rlRun "pushd bins" + rlPhaseEnd + + if [ "$REALLY_WANT_TO_RUN" = "true" ]; then + rlPhaseStartTest + for i in T_*; do + rlRun "./$i" + done + rlPhaseEnd + else + rlPhaseStartTest + rlPass "SKIPPING THIS TEST -- libitm is probably not shipped within current gcc-libraries" + rlPhaseEnd + fi + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -rf bins" 0 "Removing the stuff we created" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/rebuild-binutils/main.fmf b/tests/Sanity/rebuild-binutils/main.fmf new file mode 100644 index 0000000..2d7e5d5 --- /dev/null +++ b/tests/Sanity/rebuild-binutils/main.fmf @@ -0,0 +1,70 @@ +summary: Rebuild binutils. +description: '' +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Sanity/rebuild-binutils +framework: beakerlib +require: + - autoconf + - automake + - binutils + - gcc + - glibc + - glibc-devel + - glibc-static + - libstdc++ + - libstdc++-devel + - libstdc++-static + - perl + - rpm-build + - sharutils + - texinfo + - yum-utils + - zlib-devel + - zlib-static +recommend: + - glibc-devel.ppc + - glibc-devel.s390 + - glibc-static.ppc + - glibc-static.s390 + - libgcc.ppc + - libgcc.s390 + - libstdc++-devel.ppc + - libstdc++-devel.s390 + - libstdc++.ppc + - libstdc++.s390 + - libstdc++-static.ppc + - libstdc++-static.s390 + - zlib-devel.ppc + - zlib-static.ppc + - dnf-utils + - yum-utils +duration: 3h +enabled: true +adjust: + - require+: + - glibc-devel.i686 + - glibc-devel.x86_64 + - glibc-static.i686 + - glibc-static.x86_64 + - libgcc.i686 + - libgcc.x86_64 + - libstdc++-devel.i686 + - libstdc++-devel.x86_64 + - libstdc++.i686 + - libstdc++.x86_64 + - libstdc++-static.i686 + - libstdc++-static.x86_64 + when: arch == x86_64 + - enabled: false + when: distro == rhel-6 and collection is defined + continue: false + - enabled: false + # Too "heavy" for Fedora CI (for now) + when: distro == fedora and trigger is defined + continue: false +extra-nitrate: TC#0147459 +extra-summary: /tools/gcc/Sanity/rebuild-binutils +extra-task: /tools/gcc/Sanity/rebuild-binutils diff --git a/tests/Sanity/rebuild-binutils/runtest.sh b/tests/Sanity/rebuild-binutils/runtest.sh new file mode 100755 index 0000000..714ac4d --- /dev/null +++ b/tests/Sanity/rebuild-binutils/runtest.sh @@ -0,0 +1,89 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Sanity/rebuild-binutils +# Description: Rebuild binutils. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +# The test is expected to fail in devtoolset-* on RHEL-6 because of +# the "Unresolvable `R_X86_64_NONE` relocation" family of bugs, e.g. +# https://bugzilla.redhat.com/show_bug.cgi?id=1545386 +# They have been fixed for both the base and devtoolset binutils +# on RHEL-7 but on RHEL-6, it was just the base binutils. + +GCC=${GCC:-gcc} + +# Set the variabile UNDER_DTS on non-empty string, when run under devtoolset. +if $( echo `which gcc` | grep -qE '/opt/rh/' ); then + UNDER_DTS="true" + # Set the actual version of DTS + DTS=`which gcc | awk 'BEGIN { FS="/" } { print $4 }'` +fi + +rlJournalStart + rlPhaseStartSetup + rlLog "Using GCC: `rpmquery -f $(which $GCC)`" + rlRun "rpmquery -a | grep -e yum-utils -e dnf-utils" 0 "YUM or DNF utils are installed" + rlRun "TmpDir=\$(mktemp -d)" + rlRun "pushd $TmpDir" + + if [ -z ${UNDER_DTS} ]; then + rlFetchSrcForInstalled binutils || yumdownloader --source binutils + srpm=$(find binutils*.src.rpm | tail -n1) + else + rlFetchSrcForInstalled $DTS-binutils || yumdownloader --source $DTS-binutils + srpm=$(find $DTS-binutils*.src.rpm | tail -n1) + fi + rlRun "rpm -Uvh $srpm" + spec_dir=$(rpm --eval=%_specdir) + yum-builddep -y $spec_dir/binutils.spec + rlPhaseEnd + + rlPhaseStartTest + if [ "$(uname -i)" == "ppc64" ]; then + if rlIsRHEL 6; then + target='--target=ppc64' + else + target='--target=ppc' + fi + fi + if [ "$(uname -i)" == "i386" ]; then + target='--target=i686' + fi + + rlRun "setsebool allow_execmod 1" + rlRun "CC=$GCC rpmbuild -bb $target --clean $spec_dir/binutils.spec &> BUILD_LOG" || ( echo "========== BUILD_LOG tail ==========" ; tail -n 20 BUILD_LOG ) + rlRun "setsebool allow_execmod 0" + rlPhaseEnd + + rlPhaseStartCleanup + rlBundleLogs "Build-log" BUILD_LOG + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/rebuild-glibc/main.fmf b/tests/Sanity/rebuild-glibc/main.fmf new file mode 100644 index 0000000..53eee30 --- /dev/null +++ b/tests/Sanity/rebuild-glibc/main.fmf @@ -0,0 +1,76 @@ +description: | + Rebuild current glibc. +summary: Rebuild glibc +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Sanity/rebuild-glibc +framework: beakerlib +require: + - audit-libs-devel + - binutils + - gcc + - gd-devel + - glibc-devel + - glibc-static + - glibc-utils + - libcap-devel + - libgcc + - libpng-devel + - libstdc++ + - libstdc++-devel + - libstdc++-static + - libXpm-devel + - nspr-devel + - nss-devel + - nss-softokn-devel + - nss-util-devel + - rpm-build + - systemtap-sdt-devel + - yum-utils +recommend: + - glibc-devel.ppc + - glibc-devel.s390 + - glibc-static.ppc + - glibc-static.s390 + - libgcc.ppc + - libgcc.s390 + - libstdc++-devel.ppc + - libstdc++-devel.s390 + - libstdc++.ppc + - libstdc++.s390 + - libstdc++-static.ppc + - libstdc++-static.s390 + - dnf-utils + - yum-utils +duration: 18h +enabled: true +tag: + - NoDTS + - rhel8-buildroot +adjust: + - require+: + - glibc-devel.i686 + - glibc-devel.x86_64 + - glibc-static.i686 + - glibc-static.x86_64 + - libgcc.i686 + - libgcc.x86_64 + - libstdc++-devel.i686 + - libstdc++-devel.x86_64 + - libstdc++.i686 + - libstdc++.x86_64 + - libstdc++-static.i686 + - libstdc++-static.x86_64 + when: arch == x86_64 + - enabled: false + when: collection is defined + continue: false + - enabled: false + # Too "heavy" for Fedora CI (for now) + when: distro == fedora and trigger is defined + continue: false +extra-nitrate: TC#0035677 +extra-summary: /tools/gcc/Sanity/rebuild-glibc +extra-task: /tools/gcc/Sanity/rebuild-glibc diff --git a/tests/Sanity/rebuild-glibc/runtest.sh b/tests/Sanity/rebuild-glibc/runtest.sh new file mode 100755 index 0000000..52255c5 --- /dev/null +++ b/tests/Sanity/rebuild-glibc/runtest.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +# Copyright (c) 2009, 2012 Red Hat, Inc. All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Author: Michal Nowak +# Rewrite: Marek Polacek + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +cpu_good_for_make_check () { + # glibc can create several alternative CPU-specific bits that are selected + # in runtime. However the "make check" phase tries to test all of them and + # fails when testing a more "advanced" binary than the SUT's CPU. In such + # case we'd want to skip "make check" to prevent "rpmbuild" from a certain + # failure. + if rlIsRHEL '>=8' && [[ $(arch) = ppc64le ]] && grep -q 'POWER[2-8]' /proc/cpuinfo; then + rlLogInfo 'RHEL8+ on BUILD_LOG" + test $? -eq 0 || tail -n 20 BUILD_LOG + rlPhaseEnd + + rlPhaseStartCleanup + rlBundleLogs "Build-log" BUILD_LOG + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/test-m32-m64-options/clear_cache.c b/tests/Sanity/test-m32-m64-options/clear_cache.c new file mode 100644 index 0000000..b10479f --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/clear_cache.c @@ -0,0 +1,7 @@ +int +main (void) +{ + char *mem = __builtin_alloca (40); + __builtin___clear_cache (mem, mem + 40); + return 0; +} diff --git a/tests/Sanity/test-m32-m64-options/cpp11.cpp b/tests/Sanity/test-m32-m64-options/cpp11.cpp new file mode 100644 index 0000000..649daec --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/cpp11.cpp @@ -0,0 +1,78 @@ +template +class X +{ + T p; +public: + template auto f() -> decltype(+p) { } +}; + +struct A +{ + int i = 42; +}; + +struct B +{ + int i = 42; + B() { } + B(int i): i(i) { } +}; + +template +struct C +{ + T m = t; +}; + +template +struct D +{ + T m = t; + D() { } + D(T m):m(m) { } +}; + +struct complex +{ + typedef float value_type; + typedef __complex__ float _ComplexT; + + constexpr complex(_ComplexT __z) : _M_value(__z) { } + + constexpr complex(float __r = 0.0f, float __i = 0.0f) + : _M_value(__r + __i * 1.0f) { } + +private: + _ComplexT _M_value; +}; + +constexpr complex c1; + +int +main (void) +{ + X().f(); + A a1; + if (a1.i != 42) return 1; + A a2{}; + if (a2.i != 42) return 2; + A a3[1]; + if (a3[0].i != 42) return 3; + + B b1; + if (b1.i != 42) return 3; + B b2 (24); + if (b2.i != 24) return 4; + + C c1; + if (c1.m != 3) return 5; + C c2 {}; + if (c2.m != 5) return 6; + + D d1; + if (d1.m != 3) return 7; + D d2 (5) ; + if (d2.m != 5) return 8; + + return 0; +} diff --git a/tests/Sanity/test-m32-m64-options/hello.c b/tests/Sanity/test-m32-m64-options/hello.c new file mode 100644 index 0000000..98a53b6 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/hello.c @@ -0,0 +1,8 @@ +#include + +int +main (void) +{ + puts ("Hello World!"); + return 0; +} diff --git a/tests/Sanity/test-m32-m64-options/hello.cpp b/tests/Sanity/test-m32-m64-options/hello.cpp new file mode 100644 index 0000000..0f2234e --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/hello.cpp @@ -0,0 +1,7 @@ +#include + +int +main (void) +{ + std::cout << "Hello, world!\n"; +} diff --git a/tests/Sanity/test-m32-m64-options/hello.f90 b/tests/Sanity/test-m32-m64-options/hello.f90 new file mode 100644 index 0000000..afabbb2 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/hello.f90 @@ -0,0 +1,3 @@ + program hello + print *, "Hello World!" + end program hello diff --git a/tests/Sanity/test-m32-m64-options/lambda-template.C b/tests/Sanity/test-m32-m64-options/lambda-template.C new file mode 100644 index 0000000..b4db3b8 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/lambda-template.C @@ -0,0 +1,41 @@ +// { dg-options -std=c++0x } +// { dg-do run } + +extern "C" void abort(); + +template +auto apply (T t) -> decltype (t()) +{ + return t(); +} + +template +T f(T t) +{ + T t2 = t; + if (t != [=]()->T { return t; }()) + abort (); + if (t != [=] { return t; }()) + abort (); + if (t != [=] { return t2; }()) + abort (); + if (t != [&] { return t; }()) + abort (); + if (t != apply([=]{return t;})) + abort (); + + int i; + [&] (int a) { return a+i+t; } (0); + [&] (int a) -> decltype(a) { return a+i+t; } (0); + [&] (int a) -> decltype(i) { return a+i+t; } (0); + [&] (int a) -> decltype(t) { return a+i+t; } (0); + [&] (int a) -> decltype(a+i) { return a+i+t; } (0); + [&] (int a) -> decltype(a+t) { return a+i+t; } (0); + [&] (int a) -> decltype(i+t) { return a+i+t; } (0); + [&] (int a) -> decltype(a+i+t) { return a+i+t; } (0); +} + +int main() +{ + f(0xbeef); +} diff --git a/tests/Sanity/test-m32-m64-options/main.fmf b/tests/Sanity/test-m32-m64-options/main.fmf new file mode 100644 index 0000000..732b996 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/main.fmf @@ -0,0 +1,51 @@ +summary: Try -m32 and -m64 options. +description: '' +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Sanity/test-m32-m64-options +framework: beakerlib +require: + - gcc + - gcc-c++ + - gcc-gfortran + - glibc-common + - libgcc + - libgomp + - libgfortran + - libstdc++ + - libstdc++-devel + - glibc-devel + - libitm +recommend: + - libgfortran44.i686 + - libgfortran44.x86_64 + - libgfortran4.i686 + - libgfortran4.x86_64 +duration: 10m +enabled: true +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=1113429 +adjust: + - enabled: false + when: arch == ia64, ppc64, s390, s390x + continue: false + - require+: + - glibc-devel.i686 + - glibc-devel.x86_64 + - libgcc.i686 + - libgcc.x86_64 + - libgfortran.i686 + - libgfortran.x86_64 + - libgomp.i686 + - libgomp.x86_64 + - libitm.i686 + - libitm.x86_64 + - libstdc++.i686 + - libstdc++.x86_64 + when: arch == x86_64 + continue: false +extra-nitrate: TC#0197178 +extra-summary: /tools/gcc/Sanity/test-m32-m64-options +extra-task: /tools/gcc/Sanity/test-m32-m64-options diff --git a/tests/Sanity/test-m32-m64-options/omphello.c b/tests/Sanity/test-m32-m64-options/omphello.c new file mode 100644 index 0000000..85b591f --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/omphello.c @@ -0,0 +1,24 @@ +#include +#include +#include + +int +main (void) +{ + int th_id; + int nthreads; + + #pragma omp parallel private(th_id) + { + th_id = omp_get_thread_num (); + printf ("Hello World from thread %d\n", th_id); + + #pragma omp barrier + if (th_id == 0) + { + nthreads = omp_get_num_threads (); + printf ("There are %d threads\n", nthreads); + } + } + return EXIT_SUCCESS; +} diff --git a/tests/Sanity/test-m32-m64-options/quad.c b/tests/Sanity/test-m32-m64-options/quad.c new file mode 100644 index 0000000..f9e5ef1 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/quad.c @@ -0,0 +1,38 @@ +#include +#include +#include + +int +main (void) +{ + __float128 r = strtoflt128 ("1.23456789", NULL); + + int prec = 20; + int width = 46; + char buf[128]; + + r = 2.0q; + r = sqrtq (r); + int n = quadmath_snprintf (buf, sizeof buf, "%+-#*.20Qe", width, r); + if ((size_t) n < sizeof buf) + /* Prints: +1.41421356237309504880e+00. */ + printf ("%s\n", buf); + quadmath_snprintf (buf, sizeof buf, "%Qa", r); + if ((size_t) n < sizeof buf) + /* Prints: 0x1.6a09e667f3bcc908b2fb1366ea96p+0. */ + printf ("%s\n", buf); + n = quadmath_snprintf (NULL, 0, "%+-#46.*Qe", prec, r); + if (n > -1) + { + char *str = malloc (n + 1); + if (str) + { + quadmath_snprintf (str, n + 1, "%+-#46.*Qe", prec, r); + /* Prints: +1.41421356237309504880e+00. */ + printf ("%s\n", str); + } + free (str); + } + + return 0; +} diff --git a/tests/Sanity/test-m32-m64-options/runtest.sh b/tests/Sanity/test-m32-m64-options/runtest.sh new file mode 100755 index 0000000..15e99af --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/runtest.sh @@ -0,0 +1,213 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Sanity/test-m32-m64-options +# Description: Try -m32 and -m64 options. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# This is for Toolset. +# +# In this test, we try to compile and run programs using -m32 and -m64. +# We compile C, C++ and Fortran Hello World programs. Also, there are two +# proglets which are exercising some C++11 features. Furthermore, we try +# -fgnu-tm, -fopenmp options. We also use libquadmath a little bit. +# We call a function from libgcc. We also use the __thread keyword. +# Everything should be ok when running under e.g.: +# scl enable devtoolset-1.0 bash +# Note, that gfortran is not a part of 1.0 release. + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc gcc-c++ gcc-gfortran glibc-common libgcc libgomp libgfortran glibc-devel libitm) + +PACKAGES_X86_64=(libgomp libgfortran glibc-devel libgcc libitm) + +# Choose the compiler. +GCC=${GCC:-gcc} +GXX=${GXX:-g++} +GFORTRAN=${GFORTRAN:-gfortran} + +PACKAGE=$GCC + +# Set the variabile UNDER_DTS on non-empty string, when run under devtoolset +if $( echo `which gcc` | grep -qE '/opt/rh/' ); then + UNDER_DTS="true" + # Set the actual version of DTS + DTS=`which gcc | awk 'BEGIN { FS="/" } { print $4 }'` +fi + +rlJournalStart + rlPhaseStartSetup + for p in "${PACKAGES[@]}"; do + rpm -q "$p" || yum install -y $p + rlAssertRpm "$p" + done; unset p + yum update -y libitm # this is a hack, since libitm is a troublemaker + if [ -n "`rlGetSecondaryArch`" ]; then + rlCheckRpm "libitm.`rlGetSecondaryArch`" || yum install -y libitm.`rlGetSecondaryArch` + rlAssertRpm "libitm.`rlGetSecondaryArch`" + fi + + rlCheckRpm "libstdc++-devel.`rlGetPrimaryArch`" || yum install -y libstdc++-devel.`rlGetPrimaryArch` + rlAssertRpm "libstdc++-devel.`rlGetPrimaryArch`" + # RHEL-8 CI debugging hack (to be removed when not needed): + rlRun "rpmquery -l libstdc++-devel.`rlGetPrimaryArch` | grep -e bits/c++config" + rlRun "rpmquery -l libstdc++-devel.`rlGetPrimaryArch` | grep -e iostream" + + if [ -n "`rlGetSecondaryArch`" ]; then + rlCheckRpm "libitm.`rlGetSecondaryArch`" || yum install -y libitm.`rlGetSecondaryArch` + rlAssertRpm "libitm.`rlGetSecondaryArch`" + fi + + if [ ! -z ${UNDER_DTS} ]; then + rlCheckRpm "$DTS-libstdc++-devel" || yum install -y $DTS-libstdc++-devel + rlAssertRpm "$DTS-libstdc++-devel" + if [ "`arch`" = 'x86_64' ]; then + rlCheckRpm "$DTS-libquadmath-devel" || yum install -y $DTS-libquadmath-devel + rlAssertRpm "$DTS-libquadmath-devel" + fi + if rlIsRHEL '<=7'; then # no libgfortran[45] on RHEL8+ + rlCheckRpm "libgfortran4" || yum install -y libgfortran4 + if [ -n "`rlGetSecondaryArch`" ]; then + rlCheckRpm "libgfortran4.`rlGetSecondaryArch`" || yum install -y libgfortran4.`rlGetSecondaryArch` + rlAssertRpm "libgfortran4.`rlGetSecondaryArch`" + fi + rlCheckRpm "libgfortran5" || yum install -y libgfortran5 + rlAssertRpm "libgfortran5" && yum -y update libgfortran5 + if [ -n "`rlGetSecondaryArch`" ]; then + rlCheckRpm "libgfortran5.`rlGetSecondaryArch`" || yum install -y libgfortran5.`rlGetSecondaryArch` + rlAssertRpm "libgfortran5.`rlGetSecondaryArch`" + fi + fi + fi + + # Check whether on rhel6 x86_64 i686-packages are installed too. + # On rhel5 i386-packages should be already installed. + if [ "$(uname -i)" == "x86_64" ]; then + for pack in "${PACKAGES_X86_64[@]}"; do + rpm -q ${pack}.i?86 || yum install -y ${pack}.i?86 + done; unset pack + + if [ ! -z ${UNDER_DTS} ]; then + yum install -y $DTS-libstdc++-devel.i?86 + yum install -y $DTS-libquadmath-devel.i?86 + fi + fi + + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + # We need some files. + rlRun "cp -v hello.{c,cpp,f90} tm.c quad.c thr-init-2.c \ + clear_cache.c omphello.c lambda-template.C cpp11.cpp $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartSetup "Showing compiler versions" + for compiler in $GCC $GXX $GFORTRAN + do + rlLog "Version of compiler: $compiler" + eval "$compiler --version 2>&1" | while read line + do + rlLog " $line" + done + done + rlPhaseEnd + +ARCH="$(uname -i)" +case "$ARCH" in + "aarch64") export SWITCHES="-mlittle-endian" # we don't have -m64, so let's use some dummy switch that is enabled by default + ;; + "i386") export SWITCHES="-m32" + ;; + "ppc64") export SWITCHES="-m32 -m64" + ;; + "ppc64le") export SWITCHES="-m64" + ;; + "s390x") export SWITCHES="-m31 -m64" + ;; + "x86_64") export SWITCHES="-m32 -m64" + ;; +esac + +# Always try both -m32 and -m64. +for m in $SWITCHES; do + rlPhaseStartTest "Compile and run [$m]" + rlRun "$GCC $m hello.c -o hello_c" + rlRun "./hello_c" + + rlRun "$GXX $m hello.cpp -o hello_cpp" + rlRun "./hello_cpp" + + # Now try a few C++11 features. + $GXX -xc++ -std=c++11 - <<< "int main(){}" + if test $? -eq 0; then + rlRun "$GXX $m -std=c++11 lambda-template.C -o lambda" + rlRun "./lambda" + + rlRun "$GXX $m -std=c++11 cpp11.cpp -o cpp11" + rlRun "./cpp11" + fi + + rlRun "$GFORTRAN $m hello.f90 -o hello_fortran" + rlRun "./hello_fortran" + + # TM support is GCC >=4.7 only. + $GCC -xc -O2 -std=gnu99 -fgnu-tm - <<< "int main(){}" + if test $? -eq 0; then + rlRun "$GCC $m -O2 -std=gnu99 -fgnu-tm tm.c -o tm" + rlRun "./tm" + fi + + # Test OpenMP. + rlRun "$GCC $m omphello.c -O2 -std=gnu99 -fopenmp -o omp" + rlRun "./omp" + + # Test __thread. + rlRun "$GCC $m thr-init-2.c -O2 -std=gnu99 -ftls-model=initial-exec -o thr" + rlRun "./thr" + + # Now test some libquadmath stuff (__float128 support). + # libquadmath is mising on RHEL machines, usually. + # But with DTS, this should be available. + if [ ! -z ${UNDER_DTS} ]; then + if [ "`arch`" = 'x86_64' ]; then + rlRun "$GCC $m quad.c -O2 -std=gnu99 -lquadmath -o quad -lm" + rlRun "./quad" + else + rlLog "quadmath test skipped (needs x86_64)" + fi + fi + + # And now something from libgcc, e.g. __builtin___clear_cache. + rlRun "$GCC $m clear_cache.c -O2 -std=gnu99 -o cache" + rlRun "./cache" + rlPhaseEnd +done; unset m + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/test-m32-m64-options/thr-init-2.c b/tests/Sanity/test-m32-m64-options/thr-init-2.c new file mode 100644 index 0000000..5b70dd2 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/thr-init-2.c @@ -0,0 +1,20 @@ +extern void abort() ; + +static __thread int fstat ; +static __thread int fstat = 1; + +int test_code(int b) +{ + fstat += b ; + return fstat; +} + +int main (int ac, char *av[]) +{ + int a = test_code(1); + + if ((a != 2) || (fstat != 2)) + abort () ; + + return 0; +} diff --git a/tests/Sanity/test-m32-m64-options/tm.c b/tests/Sanity/test-m32-m64-options/tm.c new file mode 100644 index 0000000..92b90db --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/tm.c @@ -0,0 +1,34 @@ +extern void *malloc (__SIZE_TYPE__) __attribute__((malloc,transaction_safe)); + +static int __attribute__((transaction_safe)) +something (void) +{ + return 0; +} + +struct large { int foo[500]; }; + +int +main (void) +{ + int *p; + struct large *lp; + + __transaction_atomic { + p = malloc (sizeof (*p) * 100); + lp = malloc (sizeof (*lp) * 100); + + /* No instrumentation necessary; P and LP are transaction local. */ + p[5] = 123; + lp->foo[66] = 123; + + if (something ()) + __transaction_cancel; + } + + __transaction_relaxed { + ++p[5]; + } + + return ((p[5] == 124) ? 0 : 1); +} From 2615a533b8c949698284eda22e2f96e825dc4dfe Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 10 Aug 2022 16:57:15 +0200 Subject: [PATCH 121/293] 12.1.1-4 --- .gitignore | 1 + gcc.spec | 37 +++++++++++++++++++++++++++---------- gcc12-libtsan-s390x.patch | 17 ----------------- gcc12-pr105551.patch | 28 ---------------------------- sources | 2 +- 5 files changed, 29 insertions(+), 56 deletions(-) delete mode 100644 gcc12-libtsan-s390x.patch delete mode 100644 gcc12-pr105551.patch diff --git a/.gitignore b/.gitignore index 2111c26..cdb4494 100644 --- a/.gitignore +++ b/.gitignore @@ -73,3 +73,4 @@ /gcc-12.0.1-20220429.tar.xz /gcc-12.1.1-20220507.tar.xz /gcc-12.1.1-20220628.tar.xz +/gcc-12.1.1-20220810.tar.xz diff --git a/gcc.spec b/gcc.spec index ce9cae6..d6061a9 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20220628 -%global gitrev 874cb9452c56f1c3b3a7b5bfed93a262504b9856 +%global DATE 20220810 +%global gitrev c66b9ee42a4ecd9d14f9724bf0a26019326edf0a %global gcc_version 12.1.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 3 +%global gcc_release 4 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -125,7 +125,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist}.1 +Release: %{gcc_release}%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -275,8 +275,6 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch -Patch12: gcc12-pr105551.patch -Patch13: gcc12-libtsan-s390x.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -804,8 +802,6 @@ so that there cannot be any synchronization problems. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr105551~ -%patch13 -p0 -b .libtsan-s390x~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3217,8 +3213,29 @@ end %endif %changelog -* Thu Jul 21 2022 Fedora Release Engineering - 12.1.1-3.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild +* Wed Aug 8 2022 Jakub Jelinek 12.1.1-4 +- update from releases/gcc-12 branch + - PRs analyzer/105285, analyzer/106204, analyzer/106225, c++/53164, + c++/96363, c++/100374, c++/105541, c++/105626, c++/105634, c++/105637, + c++/105758, c++/105842, c++/105848, c++/105912, c++/106024, + c++/106102, c++/106230, c++/106311, c++/106361, d/106139, d/106555, + d/106563, debug/106261, fortran/101330, fortran/103137, + fortran/103138, fortran/103504, fortran/103693, fortran/104313, + fortran/105243, fortran/105691, fortran/105813, fortran/105954, + fortran/106121, libfortran/106079, libstdc++/88881, libstdc++/100823, + libstdc++/104443, libstdc++/105844, libstdc++/105880, + libstdc++/105957, libstdc++/105995, libstdc++/106162, + libstdc++/106248, lto/106129, middle-end/105965, middle-end/106027, + middle-end/106144, middle-end/106331, middle-end/106449, + preprocessor/97498, rtl-optimization/105041, rtl-optimization/106032, + target/103722, target/105459, target/105930, target/105991, + target/106091, target/106097, target/106122, testsuite/106345, + tree-optimization/105665, tree-optimization/105860, + tree-optimization/105946, tree-optimization/105969, + tree-optimization/105971, tree-optimization/106063, + tree-optimization/106087, tree-optimization/106112, + tree-optimization/106114, tree-optimization/106131, + tree-optimization/106189 * Thu Jun 30 2022 Jakub Jelinek 12.1.1-3 - fix up libtsan on s390x diff --git a/gcc12-libtsan-s390x.patch b/gcc12-libtsan-s390x.patch deleted file mode 100644 index 4241d43..0000000 --- a/gcc12-libtsan-s390x.patch +++ /dev/null @@ -1,17 +0,0 @@ -commit r12-8527-g7811663964aa7e31c3939b859bbfa2e16919639f -Author: Martin Liska -Date: Wed Jun 29 15:28:07 2022 +0200 - - libsanitizer: cherry-pick 791e0d1bc85d - - 791e0d1bc85d: [compiler-rt] Add NO_EXEC_STACK_DIRECTIVE on s390x - (cherry picked from commit aa87b7541b4c11f59c521154513f844ea6b5c977) - ---- libsanitizer/tsan/tsan_rtl_s390x.S -+++ libsanitizer/tsan/tsan_rtl_s390x.S -@@ -45,3 +45,5 @@ intercept setjmp, _ZN14__interception11real_setjmpE - intercept _setjmp, _ZN14__interception12real__setjmpE - intercept sigsetjmp, _ZN14__interception14real_sigsetjmpE - intercept __sigsetjmp, _ZN14__interception16real___sigsetjmpE -+ -+NO_EXEC_STACK_DIRECTIVE diff --git a/gcc12-pr105551.patch b/gcc12-pr105551.patch deleted file mode 100644 index ce8be26..0000000 --- a/gcc12-pr105551.patch +++ /dev/null @@ -1,28 +0,0 @@ -2022-05-11 Richard Biener - - PR bootstrap/105551 - * opts.cc (finish_options): Also disable var-tracking if - !DWARF2_DEBUGGING_INFO. - ---- gcc/opts.cc -+++ gcc/opts.cc -@@ -1334,11 +1334,15 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set, - || opts->x_flag_selective_scheduling2)); - - /* We know which debug output will be used so we can set flag_var_tracking -- and flag_var_tracking_uninit if the user has not specified them. Note -- we have not yet initialized debug_hooks so we might uselessly run -- var-tracking on targets without var_location debug hook support. */ -+ and flag_var_tracking_uninit if the user has not specified them. */ - if (opts->x_debug_info_level < DINFO_LEVEL_NORMAL -- || !dwarf_debuginfo_p (opts)) -+ || !dwarf_debuginfo_p (opts) -+ /* We have not yet initialized debug hooks so match that to check -+ whether we're only doing DWARF2_LINENO_DEBUGGING_INFO. */ -+#ifndef DWARF2_DEBUGGING_INFO -+ || true -+#endif -+ ) - { - if ((opts_set->x_flag_var_tracking && opts->x_flag_var_tracking == 1) - || (opts_set->x_flag_var_tracking_uninit diff --git a/sources b/sources index 1e697bc..2495567 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.1.1-20220628.tar.xz) = e047dd9500dccbdc1fb8f26e5fc1f1b03eaf63b5c04344f9b7a23e1467a397b1eabcb49e344be06b6881505be584c85e123ce294b5f5605fcb5a6740dabba383 +SHA512 (gcc-12.1.1-20220810.tar.xz) = dffb7d9b2de89a47ad29533d0b467ffc26d094b1e6eab0b019c5ea5cd06f7766f912a7c38ca8e046516c5bcb50424d6b51b47e5b4f93ef4fc8cec56e37f1d6f5 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 From bfe43bb23043e94b52e62b2556e6d116a2118b99 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 10 Aug 2022 16:58:13 +0200 Subject: [PATCH 122/293] 12.1.1-4 --- gcc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index d6061a9..f53ed6a 100644 --- a/gcc.spec +++ b/gcc.spec @@ -775,7 +775,7 @@ to NVidia PTX capable devices if available. Summary: The annobin plugin for gcc, built by the installed version of gcc Requires: gcc = %{version}-%{release} %if %{build_annobin_plugin} -BuildRequires: annobin-plugin-gcc, rpm-devel, binutils-devel, xz +BuildRequires: annobin-plugin-gcc >= 10.62, rpm-devel, binutils-devel, xz %endif %description plugin-annobin From a72281a4703969cef476dea936b4601cfbfaaa8f Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 18 Aug 2022 18:57:31 +0200 Subject: [PATCH 123/293] Fix up gcc12-fortran-fdec-non-logical-if.patch. --- gcc12-fortran-fdec-non-logical-if.patch | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/gcc12-fortran-fdec-non-logical-if.patch b/gcc12-fortran-fdec-non-logical-if.patch index 24a8fa4..a3a830c 100644 --- a/gcc12-fortran-fdec-non-logical-if.patch +++ b/gcc12-fortran-fdec-non-logical-if.patch @@ -26,7 +26,7 @@ diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt index 4a269ebb22d..d886c2f33ed 100644 --- a/gcc/fortran/lang.opt +++ b/gcc/fortran/lang.opt -@@ -497,6 +497,10 @@ fdec-override-kind +@@ -506,6 +506,10 @@ fdec-override-kind Fortran Var(flag_dec_override_kind) Enable support for per variable kind specification. @@ -34,16 +34,16 @@ index 4a269ebb22d..d886c2f33ed 100644 +Fortran Var(flag_dec_non_logical_if) +Enable support for non-logical expressions in if statements. + - fdec-old-init - Fortran Var(flag_dec_old_init) - Enable support for old style initializers in derived types. + fdec-structure + Fortran Var(flag_dec_structure) + Enable support for DEC STRUCTURE/RECORD. diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc index edbab483b36..a946c86790a 100644 --- a/gcc/fortran/options.cc +++ b/gcc/fortran/options.cc -@@ -81,6 +81,7 @@ set_dec_flags (int value) - SET_BITFLAG (flag_dec_non_integer_index, value, value); - SET_BITFLAG (flag_dec_old_init, value, value); +@@ -79,6 +79,7 @@ set_dec_flags (int value) + SET_BITFLAG (flag_dec_char_conversions, value, value); + SET_BITFLAG (flag_dec_duplicates, value, value); SET_BITFLAG (flag_dec_override_kind, value, value); + SET_BITFLAG (flag_dec_non_logical_if, value, value); } From 46ce913ce6b1c3c05edc42b705e09e764692506c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 19 Aug 2022 19:30:52 +0200 Subject: [PATCH 124/293] 12.2.1-1 --- .gitignore | 1 + gcc.spec | 21 ++++- gcc12-libstdc++-docs.patch | 4 +- gcc12-p2327r1.patch | 135 +++++++++++++++++++++++++++++++ gcc12-pr106590.patch | 159 +++++++++++++++++++++++++++++++++++++ sources | 2 +- update-gcc.sh | 2 +- 7 files changed, 316 insertions(+), 8 deletions(-) create mode 100644 gcc12-p2327r1.patch create mode 100644 gcc12-pr106590.patch diff --git a/.gitignore b/.gitignore index cdb4494..0efc72e 100644 --- a/.gitignore +++ b/.gitignore @@ -74,3 +74,4 @@ /gcc-12.1.1-20220507.tar.xz /gcc-12.1.1-20220628.tar.xz /gcc-12.1.1-20220810.tar.xz +/gcc-12.2.1-20220819.tar.xz diff --git a/gcc.spec b/gcc.spec index f53ed6a..7fffb7f 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20220810 -%global gitrev c66b9ee42a4ecd9d14f9724bf0a26019326edf0a -%global gcc_version 12.1.1 +%global DATE 20220819 +%global gitrev 12a206c28987ada47b447ebd200d1fd9639c8edd +%global gcc_version 12.2.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 4 +%global gcc_release 1 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -275,6 +275,8 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch +Patch12: gcc12-p2327r1.patch +Patch13: gcc12-pr106590.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -802,6 +804,8 @@ so that there cannot be any synchronization problems. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ +%patch12 -p0 -b .p2327r1~ +%patch13 -p0 -b .pr106590~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3213,6 +3217,15 @@ end %endif %changelog +* Fri Aug 19 2022 Jakub Jelinek 12.2.1-1 +- update from releases/gcc-12 branch + - GCC 12.1 release + - PRs c++/67048, c++/106369, c/106016, d/106623, d/106638, lto/106334, + lto/106540, middle-end/106492, tree-optimization/106513 +- fix an if-conversion wrong-code bug (PR rtl-optimization/106590) +- implement C++23 P2327R1 - de-deprecating volatile compound operations - as + a DR + * Wed Aug 8 2022 Jakub Jelinek 12.1.1-4 - update from releases/gcc-12 branch - PRs analyzer/105285, analyzer/106204, analyzer/106225, c++/53164, diff --git a/gcc12-libstdc++-docs.patch b/gcc12-libstdc++-docs.patch index 5a27a5d..b6c2d50 100644 --- a/gcc12-libstdc++-docs.patch +++ b/gcc12-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 12.1.1 ++ Release 12.2.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 12.1.1 release, ++ for the 12.2.1 release, + online for each GCC release and diff --git a/gcc12-p2327r1.patch b/gcc12-p2327r1.patch new file mode 100644 index 0000000..4c6e695 --- /dev/null +++ b/gcc12-p2327r1.patch @@ -0,0 +1,135 @@ +2022-08-16 Jakub Jelinek + + * typeck.cc (cp_build_modify_expr): Implement + P2327R1 - De-deprecating volatile compound operations. Don't warn + for |=, &= or ^= with volatile lhs. + * expr.cc (mark_use) : Adjust warning wording, + leave out simple. + + * g++.dg/cpp2a/volatile1.C: Adjust for de-deprecation of volatile + compound |=, &= and ^= operations. + * g++.dg/cpp2a/volatile3.C: Likewise. + * g++.dg/cpp2a/volatile5.C: Likewise. + +--- gcc/cp/expr.cc ++++ gcc/cp/expr.cc +@@ -220,7 +220,7 @@ mark_use (tree expr, bool rvalue_p, bool read_p, + case MODIFY_EXPR: + { + tree lhs = TREE_OPERAND (expr, 0); +- /* [expr.ass] "A simple assignment whose left operand is of ++ /* [expr.ass] "An assignment whose left operand is of + a volatile-qualified type is deprecated unless the assignment + is either a discarded-value expression or appears in an + unevaluated context." */ +@@ -230,7 +230,7 @@ mark_use (tree expr, bool rvalue_p, bool read_p, + && !TREE_THIS_VOLATILE (expr)) + { + if (warning_at (location_of (expr), OPT_Wvolatile, +- "using value of simple assignment with " ++ "using value of assignment with " + "%-qualified left operand is " + "deprecated")) + /* Make sure not to warn about this assignment again. */ +--- gcc/cp/typeck.cc ++++ gcc/cp/typeck.cc +@@ -9136,10 +9136,14 @@ cp_build_modify_expr (location_t loc, tree lhs, enum tree_code modifycode, + + /* An expression of the form E1 op= E2. [expr.ass] says: + "Such expressions are deprecated if E1 has volatile-qualified +- type." We warn here rather than in cp_genericize_r because ++ type and op is not one of the bitwise operators |, &, ^." ++ We warn here rather than in cp_genericize_r because + for compound assignments we are supposed to warn even if the + assignment is a discarded-value expression. */ +- if (TREE_THIS_VOLATILE (lhs) || CP_TYPE_VOLATILE_P (lhstype)) ++ if (modifycode != BIT_AND_EXPR ++ && modifycode != BIT_IOR_EXPR ++ && modifycode != BIT_XOR_EXPR ++ && (TREE_THIS_VOLATILE (lhs) || CP_TYPE_VOLATILE_P (lhstype))) + warning_at (loc, OPT_Wvolatile, + "compound assignment with %-qualified left " + "operand is deprecated"); +--- gcc/testsuite/g++.dg/cpp2a/volatile1.C ++++ gcc/testsuite/g++.dg/cpp2a/volatile1.C +@@ -56,6 +56,9 @@ fn2 () + vi = i; + vi = i = 42; + i = vi = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } ++ i = vi |= 42; // { dg-warning "using value of assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } ++ i = vi &= 42; // { dg-warning "using value of assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } ++ i = vi ^= 42; // { dg-warning "using value of assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } + &(vi = i); // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } + (vi = 42, 45); + (i = vi = 42, 10); // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } +@@ -74,8 +77,9 @@ fn2 () + vi += i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } + vi -= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } + vi %= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } +- vi ^= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } +- vi |= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } ++ vi ^= i; // { dg-bogus "assignment with .volatile.-qualified left operand is deprecated" } ++ vi |= i; // { dg-bogus "assignment with .volatile.-qualified left operand is deprecated" } ++ vi &= i; // { dg-bogus "assignment with .volatile.-qualified left operand is deprecated" } + vi /= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } + vi = vi += 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } + vi += vi = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } +@@ -131,7 +135,8 @@ void raccoon () + volatile T t, u; + t = 42; + u = t = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } +- t &= 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } ++ t += 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } ++ t &= 42; // { dg-bogus "assignment with .volatile.-qualified left operand is deprecated" } + } + + void +--- gcc/testsuite/g++.dg/cpp2a/volatile3.C ++++ gcc/testsuite/g++.dg/cpp2a/volatile3.C +@@ -57,6 +57,9 @@ fn2 () + vi = i; + vi = i = 42; + i = vi = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } ++ i = vi |= 42; // { dg-warning "using value of assignment with .volatile.-qualified left operand is deprecated" } ++ i = vi &= 42; // { dg-warning "using value of assignment with .volatile.-qualified left operand is deprecated" } ++ i = vi ^= 42; // { dg-warning "using value of assignment with .volatile.-qualified left operand is deprecated" } + &(vi = i); // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } + (vi = 42, 45); + (i = vi = 42, 10); // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } +@@ -75,8 +78,9 @@ fn2 () + vi += i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } + vi -= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } + vi %= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } +- vi ^= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } +- vi |= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } ++ vi ^= i; // { dg-bogus "assignment with .volatile.-qualified left operand is deprecated" } ++ vi |= i; // { dg-bogus "assignment with .volatile.-qualified left operand is deprecated" } ++ vi &= i; // { dg-bogus "assignment with .volatile.-qualified left operand is deprecated" } + vi /= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } + vi = vi += 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } + vi += vi = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } +@@ -132,7 +136,8 @@ void raccoon () + volatile T t, u; + t = 42; + u = t = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } +- t &= 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } ++ t += 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } ++ t &= 42; // { dg-bogus "assignment with .volatile.-qualified left operand is deprecated" } + } + + void +--- gcc/testsuite/g++.dg/cpp2a/volatile5.C ++++ gcc/testsuite/g++.dg/cpp2a/volatile5.C +@@ -8,8 +8,8 @@ f (bool b) + { + (b ? x : y) = 1; + (b ? x : y) += 1; // { dg-warning "compound assignment" "" { target c++20 } } +- z = (b ? x : y) = 1; // { dg-warning "using value of simple assignment" "" { target c++20 } } +- ((z = 2) ? x : y) = 1; // { dg-warning "using value of simple assignment" "" { target c++20 } } +- (b ? (x = 2) : y) = 1; // { dg-warning "using value of simple assignment" "" { target c++20 } } +- (b ? x : (y = 5)) = 1; // { dg-warning "using value of simple assignment" "" { target c++20 } } ++ z = (b ? x : y) = 1; // { dg-warning "using value of assignment" "" { target c++20 } } ++ ((z = 2) ? x : y) = 1; // { dg-warning "using value of assignment" "" { target c++20 } } ++ (b ? (x = 2) : y) = 1; // { dg-warning "using value of assignment" "" { target c++20 } } ++ (b ? x : (y = 5)) = 1; // { dg-warning "using value of assignment" "" { target c++20 } } + } diff --git a/gcc12-pr106590.patch b/gcc12-pr106590.patch new file mode 100644 index 0000000..11e0cd4 --- /dev/null +++ b/gcc12-pr106590.patch @@ -0,0 +1,159 @@ +2022-08-15 Jakub Jelinek + + PR rtl-optimization/106590 + * ifcvt.cc (check_for_cc_cmp_clobbers): New function. + (noce_convert_multiple_sets_1): If SEQ sets or clobbers any regs + mentioned in cc_cmp or rev_cc_cmp, don't consider seq2 for any + further conditional moves. + + * gcc.dg/torture/pr106590.c: New test. + +--- gcc/ifcvt.cc ++++ gcc/ifcvt.cc +@@ -3369,6 +3369,20 @@ noce_convert_multiple_sets (struct noce_if_info *if_info) + return TRUE; + } + ++/* Helper function for noce_convert_multiple_sets_1. If store to ++ DEST can affect P[0] or P[1], clear P[0]. Called via note_stores. */ ++ ++static void ++check_for_cc_cmp_clobbers (rtx dest, const_rtx, void *p0) ++{ ++ rtx *p = (rtx *) p0; ++ if (p[0] == NULL_RTX) ++ return; ++ if (reg_overlap_mentioned_p (dest, p[0]) ++ || (p[1] && reg_overlap_mentioned_p (dest, p[1]))) ++ p[0] = NULL_RTX; ++} ++ + /* This goes through all relevant insns of IF_INFO->then_bb and tries to + create conditional moves. In case a simple move sufficis the insn + should be listed in NEED_NO_CMOV. The rewired-src cases should be +@@ -3519,7 +3533,7 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, + + as min/max and emit an insn, accordingly. */ + unsigned cost1 = 0, cost2 = 0; +- rtx_insn *seq, *seq1, *seq2; ++ rtx_insn *seq, *seq1, *seq2 = NULL; + rtx temp_dest = NULL_RTX, temp_dest1 = NULL_RTX, temp_dest2 = NULL_RTX; + bool read_comparison = false; + +@@ -3531,9 +3545,10 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, + as well. This allows the backend to emit a cmov directly without + creating an additional compare for each. If successful, costing + is easier and this sequence is usually preferred. */ +- seq2 = try_emit_cmove_seq (if_info, temp, cond, +- new_val, old_val, need_cmov, +- &cost2, &temp_dest2, cc_cmp, rev_cc_cmp); ++ if (cc_cmp) ++ seq2 = try_emit_cmove_seq (if_info, temp, cond, ++ new_val, old_val, need_cmov, ++ &cost2, &temp_dest2, cc_cmp, rev_cc_cmp); + + /* The backend might have created a sequence that uses the + condition. Check this. */ +@@ -3588,6 +3603,24 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, + return FALSE; + } + ++ if (cc_cmp) ++ { ++ /* Check if SEQ can clobber registers mentioned in ++ cc_cmp and/or rev_cc_cmp. If yes, we need to use ++ only seq1 from that point on. */ ++ rtx cc_cmp_pair[2] = { cc_cmp, rev_cc_cmp }; ++ for (walk = seq; walk; walk = NEXT_INSN (walk)) ++ { ++ note_stores (walk, check_for_cc_cmp_clobbers, cc_cmp_pair); ++ if (cc_cmp_pair[0] == NULL_RTX) ++ { ++ cc_cmp = NULL_RTX; ++ rev_cc_cmp = NULL_RTX; ++ break; ++ } ++ } ++ } ++ + /* End the sub sequence and emit to the main sequence. */ + emit_insn (seq); + +--- gcc/testsuite/gcc.dg/torture/pr106590.c ++++ gcc/testsuite/gcc.dg/torture/pr106590.c +@@ -0,0 +1,75 @@ ++/* PR rtl-optimization/106590 } */ ++/* { dg-do run } */ ++/* { dg-additional-options "-mtune=skylake" { target { i?86-*-* x86_64-*-* } } } */ ++ ++typedef struct A { short a; } A; ++typedef A *B; ++typedef struct C { int c, d; } C; ++typedef C *D; ++ ++B ++foo (void) ++{ ++ static A r = { .a = 1 }; ++ return &r; ++} ++ ++D ++bar (void) ++{ ++ static C r = { .c = 1, .d = 23 }; ++ return &r; ++} ++ ++static inline int __attribute__((always_inline)) ++baz (short a) ++{ ++ int e = 1, f; ++ short g; ++ D h; ++ ++ switch (a) ++ { ++ case 1: ++ f = 23; ++ g = 1; ++ break; ++ case 2: ++ f = 20; ++ g = 2; ++ break; ++ } ++ ++ h = bar (); ++ ++ if (h->d != f || h->c != g) ++ __builtin_abort (); ++ return e; ++} ++ ++int ++qux (void) ++{ ++ B i = foo (); ++ int e = 1; ++ ++ switch (i->a) ++ { ++ case 1: ++ case 2: ++ e = baz (i->a); ++ break; ++ case 3: ++ e = 0; ++ break; ++ } ++ ++ return e; ++} ++ ++int ++main () ++{ ++ qux (); ++ return 0; ++} diff --git a/sources b/sources index 2495567..20c9d7c 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.1.1-20220810.tar.xz) = dffb7d9b2de89a47ad29533d0b467ffc26d094b1e6eab0b019c5ea5cd06f7766f912a7c38ca8e046516c5bcb50424d6b51b47e5b4f93ef4fc8cec56e37f1d6f5 +SHA512 (gcc-12.2.1-20220819.tar.xz) = 40464b6c544edd91ea744354a38bb2ec075d021b3bece7997b40b462dbca5a7b86105ae157fa081b1a6bd1c9f4813a51eec245b56a2bd2eb171e90ce048c0f25 SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 diff --git a/update-gcc.sh b/update-gcc.sh index 5b0572c..d34d6ce 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -3,5 +3,5 @@ git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 d=`date --iso | sed 's/-//g'` -git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-12.1.1-$d/ $1 | xz -9e > gcc-12.1.1-$d.tar.xz +git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-12.2.1-$d/ $1 | xz -9e > gcc-12.2.1-$d.tar.xz rm -rf gcc-dir.tmp From c9c54ba24f4da1d0675e6af011de314e3b3b1e7f Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Wed, 7 Sep 2022 16:28:39 +0200 Subject: [PATCH 125/293] enable GDC on aarch64 --- gcc.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gcc.spec b/gcc.spec index 7fffb7f..a9f8755 100644 --- a/gcc.spec +++ b/gcc.spec @@ -4,7 +4,7 @@ %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 1 +%global gcc_release 2 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -46,7 +46,7 @@ %else %global build_go 0 %endif -%ifarch %{ix86} x86_64 %{arm} %{mips} s390 s390x riscv64 +%ifarch %{ix86} x86_64 %{arm} aarch64 %{mips} s390 s390x riscv64 %global build_d 1 %else %global build_d 0 @@ -3217,6 +3217,9 @@ end %endif %changelog +* Wed Sep 07 2022 Kalev Lember 12.2.1-2 +- enable GDC on aarch64 + * Fri Aug 19 2022 Jakub Jelinek 12.2.1-1 - update from releases/gcc-12 branch - GCC 12.1 release From a492697acfa048d0855d4a2216ec4d3a8a251176 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 3 Nov 2022 17:07:37 +0100 Subject: [PATCH 126/293] 12.2.1-3 --- gcc.spec | 58 +++++++++++----- gcc12-p2327r1.patch | 135 ------------------------------------ gcc12-pr106590.patch | 159 ------------------------------------------- 3 files changed, 40 insertions(+), 312 deletions(-) delete mode 100644 gcc12-p2327r1.patch delete mode 100644 gcc12-pr106590.patch diff --git a/gcc.spec b/gcc.spec index a9f8755..14aafcd 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,12 +1,12 @@ -%global DATE 20220819 -%global gitrev 12a206c28987ada47b447ebd200d1fd9639c8edd +%global DATE 20221103 +%global gitrev fa08f2733eed2cb77bf0d6bd86a74399be68b5a2 %global gcc_version 12.2.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 2 -%global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e -%global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 +%global gcc_release 3 +%global nvptx_tools_gitrev 472b6e78b3ba918d727698f79911360b7c808247 +%global newlib_cygwin_gitrev a8526cb52bedabd4d6ba4b227a5185627f871aa1 %global _unpackaged_files_terminate_build 0 %global _performance_build 1 # Hardening slows the compiler way too much. @@ -151,7 +151,7 @@ Source1: nvptx-tools-%{nvptx_tools_gitrev}.tar.xz # git --git-dir=newlib-cygwin-dir.tmp/.git archive --prefix=newlib-cygwin-%%{newlib_cygwin_gitrev}/ %%{newlib_cygwin_gitrev} ":(exclude)newlib/libc/sys/linux/include/rpc/*.[hx]" | xz -9e > newlib-cygwin-%%{newlib_cygwin_gitrev}.tar.xz # rm -rf newlib-cygwin-dir.tmp Source2: newlib-cygwin-%{newlib_cygwin_gitrev}.tar.xz -%global isl_version 0.18 +%global isl_version 0.24 Source3: https://gcc.gnu.org/pub/gcc/infrastructure/isl-%{isl_version}.tar.bz2 URL: http://gcc.gnu.org # Need binutils with -pie support >= 2.14.90.0.4-4 @@ -275,8 +275,6 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch -Patch12: gcc12-p2327r1.patch -Patch13: gcc12-pr106590.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -804,8 +802,6 @@ so that there cannot be any synchronization problems. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .p2327r1~ -%patch13 -p0 -b .pr106590~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -933,9 +929,9 @@ sed -i 's|libisl|libgcc12privateisl|g' \ make %{?_smp_mflags} make install cd ../isl-install/lib -rm libgcc12privateisl.so{,.15} -mv libgcc12privateisl.so.15.3.0 libisl.so.15 -ln -sf libisl.so.15 libisl.so +rm libgcc12privateisl.so{,.23} +mv libgcc12privateisl.so.23.1.0 libisl.so.23 +ln -sf libisl.so.23 libisl.so cd ../.. %endif @@ -1144,7 +1140,7 @@ make jit.sphinx.install-html jit_htmldir=`pwd`/../../rpm.doc/libgccjit-devel/htm cd .. %if %{build_isl} -cp -a isl-install/lib/libisl.so.15 gcc/ +cp -a isl-install/lib/libisl.so.23 gcc/ %endif # Make generated man pages even if Pod::Man is not new enough @@ -1294,7 +1290,7 @@ FULLPATH=%{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} FULLEPATH=%{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} %if %{build_isl} -cp -a isl-install/lib/libisl.so.15 $FULLPATH/ +cp -a isl-install/lib/libisl.so.23 $FULLPATH/ %endif # fix some things @@ -3217,19 +3213,45 @@ end %endif %changelog -* Wed Sep 07 2022 Kalev Lember 12.2.1-2 +* Thu Nov 3 2022 Jakub Jelinek 12.2.1-3 +- update from releases/gcc-12 branch + - PRs c++/93259, c++/105774, c++/106759, c++/106829, c++/106893, c++/106925, + c++/107358, c/106947, c/106981, c/107001, fortran/82868, + fortran/100029, fortran/100040, fortran/100097, fortran/100098, + fortran/100103, fortran/100132, fortran/100136, fortran/100245, + fortran/103413, fortran/103694, fortran/105012, fortran/105633, + fortran/106566, fortran/106579, fortran/106817, fortran/106857, + fortran/106985, fortran/106986, fortran/107054, libstdc++/105678, + libstdc++/106320, libstdc++/106589, libstdc++/106607, + libstdc++/106695, lto/107418, middle-end/106548, middle-end/106982, + other/106782, rtl-optimization/106187, target/96072, target/99184, + target/99685, target/100645, target/101322, target/103353, + target/104482, target/105421, target/105463, target/105485, + target/106017, target/106355, target/106459, target/106491, + target/106524, target/106704, target/106714, target/106721, + target/107061, target/107064, target/107248, target/107364, + tree-optimization/102892, tree-optimization/105937, + tree-optimization/106322, tree-optimization/106809, + tree-optimization/106841, tree-optimization/106860, + tree-optimization/106892, tree-optimization/106922, + tree-optimization/106934, tree-optimization/107107, + tree-optimization/107121, tree-optimization/107160, + tree-optimization/107212, tree-optimization/107254, + tree-optimization/107323 + +* Wed Sep 7 2022 Kalev Lember 12.2.1-2 - enable GDC on aarch64 * Fri Aug 19 2022 Jakub Jelinek 12.2.1-1 - update from releases/gcc-12 branch - - GCC 12.1 release + - GCC 12.2 release - PRs c++/67048, c++/106369, c/106016, d/106623, d/106638, lto/106334, lto/106540, middle-end/106492, tree-optimization/106513 - fix an if-conversion wrong-code bug (PR rtl-optimization/106590) - implement C++23 P2327R1 - de-deprecating volatile compound operations - as a DR -* Wed Aug 8 2022 Jakub Jelinek 12.1.1-4 +* Wed Aug 10 2022 Jakub Jelinek 12.1.1-4 - update from releases/gcc-12 branch - PRs analyzer/105285, analyzer/106204, analyzer/106225, c++/53164, c++/96363, c++/100374, c++/105541, c++/105626, c++/105634, c++/105637, diff --git a/gcc12-p2327r1.patch b/gcc12-p2327r1.patch deleted file mode 100644 index 4c6e695..0000000 --- a/gcc12-p2327r1.patch +++ /dev/null @@ -1,135 +0,0 @@ -2022-08-16 Jakub Jelinek - - * typeck.cc (cp_build_modify_expr): Implement - P2327R1 - De-deprecating volatile compound operations. Don't warn - for |=, &= or ^= with volatile lhs. - * expr.cc (mark_use) : Adjust warning wording, - leave out simple. - - * g++.dg/cpp2a/volatile1.C: Adjust for de-deprecation of volatile - compound |=, &= and ^= operations. - * g++.dg/cpp2a/volatile3.C: Likewise. - * g++.dg/cpp2a/volatile5.C: Likewise. - ---- gcc/cp/expr.cc -+++ gcc/cp/expr.cc -@@ -220,7 +220,7 @@ mark_use (tree expr, bool rvalue_p, bool read_p, - case MODIFY_EXPR: - { - tree lhs = TREE_OPERAND (expr, 0); -- /* [expr.ass] "A simple assignment whose left operand is of -+ /* [expr.ass] "An assignment whose left operand is of - a volatile-qualified type is deprecated unless the assignment - is either a discarded-value expression or appears in an - unevaluated context." */ -@@ -230,7 +230,7 @@ mark_use (tree expr, bool rvalue_p, bool read_p, - && !TREE_THIS_VOLATILE (expr)) - { - if (warning_at (location_of (expr), OPT_Wvolatile, -- "using value of simple assignment with " -+ "using value of assignment with " - "%-qualified left operand is " - "deprecated")) - /* Make sure not to warn about this assignment again. */ ---- gcc/cp/typeck.cc -+++ gcc/cp/typeck.cc -@@ -9136,10 +9136,14 @@ cp_build_modify_expr (location_t loc, tree lhs, enum tree_code modifycode, - - /* An expression of the form E1 op= E2. [expr.ass] says: - "Such expressions are deprecated if E1 has volatile-qualified -- type." We warn here rather than in cp_genericize_r because -+ type and op is not one of the bitwise operators |, &, ^." -+ We warn here rather than in cp_genericize_r because - for compound assignments we are supposed to warn even if the - assignment is a discarded-value expression. */ -- if (TREE_THIS_VOLATILE (lhs) || CP_TYPE_VOLATILE_P (lhstype)) -+ if (modifycode != BIT_AND_EXPR -+ && modifycode != BIT_IOR_EXPR -+ && modifycode != BIT_XOR_EXPR -+ && (TREE_THIS_VOLATILE (lhs) || CP_TYPE_VOLATILE_P (lhstype))) - warning_at (loc, OPT_Wvolatile, - "compound assignment with %-qualified left " - "operand is deprecated"); ---- gcc/testsuite/g++.dg/cpp2a/volatile1.C -+++ gcc/testsuite/g++.dg/cpp2a/volatile1.C -@@ -56,6 +56,9 @@ fn2 () - vi = i; - vi = i = 42; - i = vi = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } -+ i = vi |= 42; // { dg-warning "using value of assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } -+ i = vi &= 42; // { dg-warning "using value of assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } -+ i = vi ^= 42; // { dg-warning "using value of assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } - &(vi = i); // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } - (vi = 42, 45); - (i = vi = 42, 10); // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } -@@ -74,8 +77,9 @@ fn2 () - vi += i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } - vi -= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } - vi %= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } -- vi ^= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } -- vi |= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } -+ vi ^= i; // { dg-bogus "assignment with .volatile.-qualified left operand is deprecated" } -+ vi |= i; // { dg-bogus "assignment with .volatile.-qualified left operand is deprecated" } -+ vi &= i; // { dg-bogus "assignment with .volatile.-qualified left operand is deprecated" } - vi /= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } - vi = vi += 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } - vi += vi = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } -@@ -131,7 +135,8 @@ void raccoon () - volatile T t, u; - t = 42; - u = t = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } -- t &= 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } -+ t += 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" "" { target c++20 } } -+ t &= 42; // { dg-bogus "assignment with .volatile.-qualified left operand is deprecated" } - } - - void ---- gcc/testsuite/g++.dg/cpp2a/volatile3.C -+++ gcc/testsuite/g++.dg/cpp2a/volatile3.C -@@ -57,6 +57,9 @@ fn2 () - vi = i; - vi = i = 42; - i = vi = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } -+ i = vi |= 42; // { dg-warning "using value of assignment with .volatile.-qualified left operand is deprecated" } -+ i = vi &= 42; // { dg-warning "using value of assignment with .volatile.-qualified left operand is deprecated" } -+ i = vi ^= 42; // { dg-warning "using value of assignment with .volatile.-qualified left operand is deprecated" } - &(vi = i); // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } - (vi = 42, 45); - (i = vi = 42, 10); // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } -@@ -75,8 +78,9 @@ fn2 () - vi += i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } - vi -= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } - vi %= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } -- vi ^= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } -- vi |= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } -+ vi ^= i; // { dg-bogus "assignment with .volatile.-qualified left operand is deprecated" } -+ vi |= i; // { dg-bogus "assignment with .volatile.-qualified left operand is deprecated" } -+ vi &= i; // { dg-bogus "assignment with .volatile.-qualified left operand is deprecated" } - vi /= i; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } - vi = vi += 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } - vi += vi = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } -@@ -132,7 +136,8 @@ void raccoon () - volatile T t, u; - t = 42; - u = t = 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } -- t &= 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } -+ t += 42; // { dg-warning "assignment with .volatile.-qualified left operand is deprecated" } -+ t &= 42; // { dg-bogus "assignment with .volatile.-qualified left operand is deprecated" } - } - - void ---- gcc/testsuite/g++.dg/cpp2a/volatile5.C -+++ gcc/testsuite/g++.dg/cpp2a/volatile5.C -@@ -8,8 +8,8 @@ f (bool b) - { - (b ? x : y) = 1; - (b ? x : y) += 1; // { dg-warning "compound assignment" "" { target c++20 } } -- z = (b ? x : y) = 1; // { dg-warning "using value of simple assignment" "" { target c++20 } } -- ((z = 2) ? x : y) = 1; // { dg-warning "using value of simple assignment" "" { target c++20 } } -- (b ? (x = 2) : y) = 1; // { dg-warning "using value of simple assignment" "" { target c++20 } } -- (b ? x : (y = 5)) = 1; // { dg-warning "using value of simple assignment" "" { target c++20 } } -+ z = (b ? x : y) = 1; // { dg-warning "using value of assignment" "" { target c++20 } } -+ ((z = 2) ? x : y) = 1; // { dg-warning "using value of assignment" "" { target c++20 } } -+ (b ? (x = 2) : y) = 1; // { dg-warning "using value of assignment" "" { target c++20 } } -+ (b ? x : (y = 5)) = 1; // { dg-warning "using value of assignment" "" { target c++20 } } - } diff --git a/gcc12-pr106590.patch b/gcc12-pr106590.patch deleted file mode 100644 index 11e0cd4..0000000 --- a/gcc12-pr106590.patch +++ /dev/null @@ -1,159 +0,0 @@ -2022-08-15 Jakub Jelinek - - PR rtl-optimization/106590 - * ifcvt.cc (check_for_cc_cmp_clobbers): New function. - (noce_convert_multiple_sets_1): If SEQ sets or clobbers any regs - mentioned in cc_cmp or rev_cc_cmp, don't consider seq2 for any - further conditional moves. - - * gcc.dg/torture/pr106590.c: New test. - ---- gcc/ifcvt.cc -+++ gcc/ifcvt.cc -@@ -3369,6 +3369,20 @@ noce_convert_multiple_sets (struct noce_if_info *if_info) - return TRUE; - } - -+/* Helper function for noce_convert_multiple_sets_1. If store to -+ DEST can affect P[0] or P[1], clear P[0]. Called via note_stores. */ -+ -+static void -+check_for_cc_cmp_clobbers (rtx dest, const_rtx, void *p0) -+{ -+ rtx *p = (rtx *) p0; -+ if (p[0] == NULL_RTX) -+ return; -+ if (reg_overlap_mentioned_p (dest, p[0]) -+ || (p[1] && reg_overlap_mentioned_p (dest, p[1]))) -+ p[0] = NULL_RTX; -+} -+ - /* This goes through all relevant insns of IF_INFO->then_bb and tries to - create conditional moves. In case a simple move sufficis the insn - should be listed in NEED_NO_CMOV. The rewired-src cases should be -@@ -3519,7 +3533,7 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, - - as min/max and emit an insn, accordingly. */ - unsigned cost1 = 0, cost2 = 0; -- rtx_insn *seq, *seq1, *seq2; -+ rtx_insn *seq, *seq1, *seq2 = NULL; - rtx temp_dest = NULL_RTX, temp_dest1 = NULL_RTX, temp_dest2 = NULL_RTX; - bool read_comparison = false; - -@@ -3531,9 +3545,10 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, - as well. This allows the backend to emit a cmov directly without - creating an additional compare for each. If successful, costing - is easier and this sequence is usually preferred. */ -- seq2 = try_emit_cmove_seq (if_info, temp, cond, -- new_val, old_val, need_cmov, -- &cost2, &temp_dest2, cc_cmp, rev_cc_cmp); -+ if (cc_cmp) -+ seq2 = try_emit_cmove_seq (if_info, temp, cond, -+ new_val, old_val, need_cmov, -+ &cost2, &temp_dest2, cc_cmp, rev_cc_cmp); - - /* The backend might have created a sequence that uses the - condition. Check this. */ -@@ -3588,6 +3603,24 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info, - return FALSE; - } - -+ if (cc_cmp) -+ { -+ /* Check if SEQ can clobber registers mentioned in -+ cc_cmp and/or rev_cc_cmp. If yes, we need to use -+ only seq1 from that point on. */ -+ rtx cc_cmp_pair[2] = { cc_cmp, rev_cc_cmp }; -+ for (walk = seq; walk; walk = NEXT_INSN (walk)) -+ { -+ note_stores (walk, check_for_cc_cmp_clobbers, cc_cmp_pair); -+ if (cc_cmp_pair[0] == NULL_RTX) -+ { -+ cc_cmp = NULL_RTX; -+ rev_cc_cmp = NULL_RTX; -+ break; -+ } -+ } -+ } -+ - /* End the sub sequence and emit to the main sequence. */ - emit_insn (seq); - ---- gcc/testsuite/gcc.dg/torture/pr106590.c -+++ gcc/testsuite/gcc.dg/torture/pr106590.c -@@ -0,0 +1,75 @@ -+/* PR rtl-optimization/106590 } */ -+/* { dg-do run } */ -+/* { dg-additional-options "-mtune=skylake" { target { i?86-*-* x86_64-*-* } } } */ -+ -+typedef struct A { short a; } A; -+typedef A *B; -+typedef struct C { int c, d; } C; -+typedef C *D; -+ -+B -+foo (void) -+{ -+ static A r = { .a = 1 }; -+ return &r; -+} -+ -+D -+bar (void) -+{ -+ static C r = { .c = 1, .d = 23 }; -+ return &r; -+} -+ -+static inline int __attribute__((always_inline)) -+baz (short a) -+{ -+ int e = 1, f; -+ short g; -+ D h; -+ -+ switch (a) -+ { -+ case 1: -+ f = 23; -+ g = 1; -+ break; -+ case 2: -+ f = 20; -+ g = 2; -+ break; -+ } -+ -+ h = bar (); -+ -+ if (h->d != f || h->c != g) -+ __builtin_abort (); -+ return e; -+} -+ -+int -+qux (void) -+{ -+ B i = foo (); -+ int e = 1; -+ -+ switch (i->a) -+ { -+ case 1: -+ case 2: -+ e = baz (i->a); -+ break; -+ case 3: -+ e = 0; -+ break; -+ } -+ -+ return e; -+} -+ -+int -+main () -+{ -+ qux (); -+ return 0; -+} From 78accc2a93d3beaa8ed6ea33bc30a10e67b4d190 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 3 Nov 2022 17:10:52 +0100 Subject: [PATCH 127/293] 12.2.1-3 --- .gitignore | 4 ++++ sources | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 0efc72e..e266ce0 100644 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,7 @@ /gcc-12.1.1-20220628.tar.xz /gcc-12.1.1-20220810.tar.xz /gcc-12.2.1-20220819.tar.xz +/gcc-12.2.1-20221103.tar.xz +/isl-0.24.tar.bz2 +/newlib-cygwin-a8526cb52bedabd4d6ba4b227a5185627f871aa1.tar.xz +/nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz diff --git a/sources b/sources index 20c9d7c..8754e26 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.2.1-20220819.tar.xz) = 40464b6c544edd91ea744354a38bb2ec075d021b3bece7997b40b462dbca5a7b86105ae157fa081b1a6bd1c9f4813a51eec245b56a2bd2eb171e90ce048c0f25 -SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94 -SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c -SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 +SHA512 (gcc-12.2.1-20221103.tar.xz) = d9bf5b5c15b91bbdb3f39f4841e3370191fbc89c0d0cd4723609b9e94fbc1969895737435833c4c884d1035e7b7c597e3209316c40f18aac3366d62caa9791f6 +SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 +SHA512 (newlib-cygwin-a8526cb52bedabd4d6ba4b227a5185627f871aa1.tar.xz) = b099246fe4a5d0a372cdaee5da49083df5b2f4440a4e83961600cdf22d37da50c99ce9ae46b769f188a67034ee038cf863260988fc9d594e8e5fb3905a381dec +SHA512 (nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz) = 91690321bf96460c3b3e229199a6f752ed1c27c6933d4345dc7e237dc068f604ad211bb3a0373e14d4f332bee05b6227d6933e14e0b475ffdfea8b511ab735e6 From 146fdc1878040e5bac06da763dd07d27bd3457c8 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 3 Nov 2022 19:23:52 +0100 Subject: [PATCH 128/293] 12.2.1-3 --- gcc.spec | 2 +- gcc12-isl-dl.patch | 26 +++++++++++++------------- gcc12-isl-dl2.patch | 12 ++++++------ 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/gcc.spec b/gcc.spec index 14aafcd..9cb2701 100644 --- a/gcc.spec +++ b/gcc.spec @@ -921,7 +921,7 @@ ISL_FLAG_PIC=-fPIC ISL_FLAG_PIC=-fpic %endif cd isl-build -sed -i 's|libisl|libgcc12privateisl|g' \ +sed -i 's|libisl\([^-]\)|libgcc12privateisl\1|g' \ ../../isl-%{isl_version}/Makefile.{am,in} ../../isl-%{isl_version}/configure \ CC=/usr/bin/gcc CXX=/usr/bin/g++ \ diff --git a/gcc12-isl-dl.patch b/gcc12-isl-dl.patch index 825fb88..824288b 100644 --- a/gcc12-isl-dl.patch +++ b/gcc12-isl-dl.patch @@ -26,7 +26,7 @@ # Generate header and source files from the machine description, # and compile them. --- gcc/graphite.h.jj 2016-01-27 12:44:06.000000000 +0100 -+++ gcc/graphite.h 2016-01-27 13:26:38.309876856 +0100 ++++ gcc/graphite.h 2022-11-03 19:14:50.369690720 +0100 @@ -24,6 +24,591 @@ along with GCC; see the file COPYING3. #include "sese.h" @@ -41,15 +41,15 @@ + DYNSYM (isl_aff_set_coefficient_si); \ + DYNSYM (isl_aff_set_constant_si); \ + DYNSYM (isl_aff_zero_on_domain); \ -+ DYNSYM (isl_band_free); \ -+ DYNSYM (isl_band_get_children); \ -+ DYNSYM (isl_band_get_partial_schedule); \ -+ DYNSYM (isl_band_has_children); \ -+ DYNSYM (isl_band_list_free); \ -+ DYNSYM (isl_band_list_get_band); \ -+ DYNSYM (isl_band_list_get_ctx); \ -+ DYNSYM (isl_band_list_n_band); \ -+ DYNSYM (isl_band_n_member); \ ++ /* DYNSYM (isl_band_free); */ \ ++ /* DYNSYM (isl_band_get_children); */ \ ++ /* DYNSYM (isl_band_get_partial_schedule); */ \ ++ /* DYNSYM (isl_band_has_children); */ \ ++ /* DYNSYM (isl_band_list_free); */ \ ++ /* DYNSYM (isl_band_list_get_band); */ \ ++ /* DYNSYM (isl_band_list_get_ctx); */ \ ++ /* DYNSYM (isl_band_list_n_band); */ \ ++ /* DYNSYM (isl_band_n_member); */ \ + DYNSYM (isl_basic_map_add_constraint); \ + DYNSYM (isl_basic_map_project_out); \ + DYNSYM (isl_basic_map_universe); \ @@ -91,7 +91,7 @@ + DYNSYM (isl_map_is_empty); \ + DYNSYM (isl_map_lex_ge); \ + DYNSYM (isl_map_lex_le); \ -+ DYNSYM (isl_map_n_out); \ ++ /* DYNSYM (isl_map_n_out); */ \ + DYNSYM (isl_map_range); \ + DYNSYM (isl_map_set_tuple_id); \ + DYNSYM (isl_map_universe); \ @@ -124,7 +124,7 @@ + DYNSYM (isl_pw_aff_sub); \ + DYNSYM (isl_pw_aff_zero_set); \ + DYNSYM (isl_schedule_free); \ -+ DYNSYM (isl_schedule_get_band_forest); \ ++ /* DYNSYM (isl_schedule_get_band_forest); */ \ + DYNSYM (isl_set_add_constraint); \ + DYNSYM (isl_set_add_dims); \ + DYNSYM (isl_set_apply); \ @@ -641,7 +641,7 @@ + + if (isl_pointers__.inited) + return isl_pointers__.h != NULL; -+ h = dlopen ("libisl.so.15", RTLD_LAZY); ++ h = dlopen ("libisl.so.23", RTLD_LAZY); + isl_pointers__.h = h; + if (h == NULL) + return false; diff --git a/gcc12-isl-dl2.patch b/gcc12-isl-dl2.patch index 5402a8e..2e12499 100644 --- a/gcc12-isl-dl2.patch +++ b/gcc12-isl-dl2.patch @@ -2,7 +2,7 @@ * toplev.cc (toplev_main_argv): New variable. (toplev_main): Initialize it. - * graphite.cc (init_isl_pointers): Load libisl.so.15 from gcc's private + * graphite.cc (init_isl_pointers): Load libisl.so.23 from gcc's private directory. --- gcc/toplev.cc.jj 2008-12-09 23:59:10.000000000 +0100 @@ -39,12 +39,12 @@ if (isl_pointers__.inited) return isl_pointers__.h != NULL; -- h = dlopen ("libisl.so.15", RTLD_LAZY); +- h = dlopen ("libisl.so.23", RTLD_LAZY); + len = progname - toplev_main_argv[0]; -+ buf = XALLOCAVAR (char, len + sizeof "libisl.so.15"); ++ buf = XALLOCAVAR (char, len + sizeof "libisl.so.23"); + memcpy (buf, toplev_main_argv[0], len); -+ strcpy (buf + len, "libisl.so.15"); -+ len += sizeof "libisl.so.15"; ++ strcpy (buf + len, "libisl.so.23"); ++ len += sizeof "libisl.so.23"; + p = strstr (buf, "/libexec/"); + if (p != NULL) + { @@ -61,7 +61,7 @@ + { + len = progname - toplev_main_argv[0]; + memcpy (buf, toplev_main_argv[0], len); -+ strcpy (buf + len, "libisl.so.15"); ++ strcpy (buf + len, "libisl.so.23"); + } + } + if (h == NULL) From 0af622a16dcf704219e86ad6a2fee3cd07001251 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 21 Nov 2022 11:17:13 +0100 Subject: [PATCH 129/293] 12.2.1-4 --- .gitignore | 1 + gcc.spec | 17 ++++-- gcc12-pr107468.patch | 124 +++++++++++++++++++++++++++++++++++++++++++ sources | 2 +- 4 files changed, 140 insertions(+), 4 deletions(-) create mode 100644 gcc12-pr107468.patch diff --git a/.gitignore b/.gitignore index e266ce0..a02dee0 100644 --- a/.gitignore +++ b/.gitignore @@ -79,3 +79,4 @@ /isl-0.24.tar.bz2 /newlib-cygwin-a8526cb52bedabd4d6ba4b227a5185627f871aa1.tar.xz /nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz +/gcc-12.2.1-20221121.tar.xz diff --git a/gcc.spec b/gcc.spec index 9cb2701..4877961 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20221103 -%global gitrev fa08f2733eed2cb77bf0d6bd86a74399be68b5a2 +%global DATE 20221121 +%global gitrev b3f5a0d53b84ed27cf00cfa2b9c3e2c78935c07d %global gcc_version 12.2.1 %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 3 +%global gcc_release 4 %global nvptx_tools_gitrev 472b6e78b3ba918d727698f79911360b7c808247 %global newlib_cygwin_gitrev a8526cb52bedabd4d6ba4b227a5185627f871aa1 %global _unpackaged_files_terminate_build 0 @@ -275,6 +275,7 @@ Patch8: gcc12-no-add-needed.patch Patch9: gcc12-Wno-format-security.patch Patch10: gcc12-rh1574936.patch Patch11: gcc12-d-shared-libphobos.patch +Patch12: gcc12-pr107468.patch Patch100: gcc12-fortran-fdec-duplicates.patch Patch101: gcc12-fortran-flogical-as-integer.patch @@ -802,6 +803,7 @@ so that there cannot be any synchronization problems. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ +%patch12 -p0 -b .pr107468~ %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -3213,6 +3215,15 @@ end %endif %changelog +* Mon Nov 21 2022 Jakub Jelinek 12.2.1-4 +- update from releases/gcc-12 branch + - PRs c++/104066, c++/105774, c++/106829, c++/107358, c/41041, c/106981, + c/107001, libstdc++/95048, libstdc++/103295, target/104688, + target/107183, target/107304, target/107404, target/107713, + target/107748, tree-optimization/107121, tree-optimization/107206 +- fix up std::from_chars behavior in rounding modes other than FE_TONEAREST + (PR libstdc++/107468) + * Thu Nov 3 2022 Jakub Jelinek 12.2.1-3 - update from releases/gcc-12 branch - PRs c++/93259, c++/105774, c++/106759, c++/106829, c++/106893, c++/106925, diff --git a/gcc12-pr107468.patch b/gcc12-pr107468.patch new file mode 100644 index 0000000..0949b11 --- /dev/null +++ b/gcc12-pr107468.patch @@ -0,0 +1,124 @@ +libstdc++: Update from latest fast_float [PR107468] + +The following patch is a cherry-pick from +https://github.com/fastfloat/fast_float/pull/153 +to restrict fast_float Clinger's fast path to when rounding mode +is FE_TONEAREST. +Using std::fegetround showed in benchmarks too slow, so instead +it uses a check with 2 float additions and comparison to verify +if rounding is FE_TONEAREST. + +2022-11-20 Jakub Jelinek + + PR libstdc++/107468 + * src/c++17/fast_float/fast_float.h (detail::rounds_to_nearest): New + function, taken from https://github.com/fastfloat/fast_float/pull/153. + (from_chars_advanced): Only use Clinger's fast path if + detail::rounds_to_nearest(). + * testsuite/20_util/from_chars/pr107468.cc: New test. + +--- libstdc++-v3/src/c++17/fast_float/fast_float.h.jj 2022-04-28 15:56:18.315632888 +0200 ++++ libstdc++-v3/src/c++17/fast_float/fast_float.h 2022-11-20 18:53:49.570830249 +0100 +@@ -2842,6 +2842,48 @@ from_chars_result parse_infnan(const cha + return answer; + } + ++/** ++ * Returns true if the floating-pointing rounding mode is to 'nearest'. ++ * It is the default on most system. This function is meant to be inexpensive. ++ * Credit : @mwalcott3 ++ */ ++fastfloat_really_inline bool rounds_to_nearest() noexcept { ++ // See ++ // A fast function to check your floating-point rounding mode ++ // https://lemire.me/blog/2022/11/16/a-fast-function-to-check-your-floating-point-rounding-mode/ ++ // ++ // This function is meant to be equivalent to : ++ // prior: #include ++ // return fegetround() == FE_TONEAREST; ++ // However, it is expected to be much faster than the fegetround() ++ // function call. ++ // ++ // The volatile keywoard prevents the compiler from computing the function ++ // at compile-time. ++ // There might be other ways to prevent compile-time optimizations (e.g., asm). ++ // The value does not need to be std::numeric_limits::min(), any small ++ // value so that 1 + x should round to 1 would do (after accounting for excess ++ // precision, as in 387 instructions). ++ static volatile float fmin = std::numeric_limits::min(); ++ float fmini = fmin; // we copy it so that it gets loaded at most once. ++ // ++ // Explanation: ++ // Only when fegetround() == FE_TONEAREST do we have that ++ // fmin + 1.0f == 1.0f - fmin. ++ // ++ // FE_UPWARD: ++ // fmin + 1.0f > 1 ++ // 1.0f - fmin == 1 ++ // ++ // FE_DOWNWARD or FE_TOWARDZERO: ++ // fmin + 1.0f == 1 ++ // 1.0f - fmin < 1 ++ // ++ // Note: This may fail to be accurate if fast-math has been ++ // enabled, as rounding conventions may not apply. ++ return (fmini + 1.0f == 1.0f - fmini); ++} ++ + } // namespace detail + + template +@@ -2870,7 +2912,7 @@ from_chars_result from_chars_advanced(co + answer.ec = std::errc(); // be optimistic + answer.ptr = pns.lastmatch; + // Next is Clinger's fast path. +- if (binary_format::min_exponent_fast_path() <= pns.exponent && pns.exponent <= binary_format::max_exponent_fast_path() && pns.mantissa <=binary_format::max_mantissa_fast_path() && !pns.too_many_digits) { ++ if (binary_format::min_exponent_fast_path() <= pns.exponent && pns.exponent <= binary_format::max_exponent_fast_path() && pns.mantissa <=binary_format::max_mantissa_fast_path() && !pns.too_many_digits && detail::rounds_to_nearest()) { + value = T(pns.mantissa); + if (pns.exponent < 0) { value = value / binary_format::exact_power_of_ten(-pns.exponent); } + else { value = value * binary_format::exact_power_of_ten(pns.exponent); } +--- libstdc++-v3/testsuite/20_util/from_chars/pr107468.cc.jj ++++ libstdc++-v3/testsuite/20_util/from_chars/pr107468.cc +@@ -0,0 +1,42 @@ ++// Copyright (C) 2022 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++17 } } ++// { dg-add-options ieee } ++ ++#include ++#include ++#include ++#include ++ ++int ++main() ++{ ++ // FP from_char not available otherwise. ++#if __cpp_lib_to_chars >= 201611L \ ++ && _GLIBCXX_USE_C99_FENV_TR1 \ ++ && defined(FE_DOWNWARD) \ ++ && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32) ++ // PR libstdc++/107468 ++ float f; ++ char buf[] = "3.355447e+07"; ++ std::fesetround(FE_DOWNWARD); ++ auto [ptr, ec] = std::from_chars(buf, buf + sizeof(buf) - 1, f, std::chars_format::scientific); ++ VERIFY( ec == std::errc() && ptr == buf + sizeof(buf) - 1 ); ++ VERIFY( f == 33554472.0f ); ++#endif ++} diff --git a/sources b/sources index 8754e26..4f41efa 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.2.1-20221103.tar.xz) = d9bf5b5c15b91bbdb3f39f4841e3370191fbc89c0d0cd4723609b9e94fbc1969895737435833c4c884d1035e7b7c597e3209316c40f18aac3366d62caa9791f6 +SHA512 (gcc-12.2.1-20221121.tar.xz) = 6fef1438e77d8b7e7aeddea6d2d6a82c37d2e93f65ad9007f04206e1a368dd70597cef01188de4ee9bbfe1811a129303ce10b49cb9758a2b44abe4f0312d073a SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-a8526cb52bedabd4d6ba4b227a5185627f871aa1.tar.xz) = b099246fe4a5d0a372cdaee5da49083df5b2f4440a4e83961600cdf22d37da50c99ce9ae46b769f188a67034ee038cf863260988fc9d594e8e5fb3905a381dec SHA512 (nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz) = 91690321bf96460c3b3e229199a6f752ed1c27c6933d4345dc7e237dc068f604ad211bb3a0373e14d4f332bee05b6227d6933e14e0b475ffdfea8b511ab735e6 From f05a075009e7f535d16779ffe2c53ff1f952cd6b Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 15 Jan 2023 13:51:18 +0100 Subject: [PATCH 130/293] 13.0.0-0.9 --- gcc.spec | 824 +++++++----------- gcc12-pr107468.patch | 124 --- ...y.patch => gcc13-Wno-format-security.patch | 8 +- ...os.patch => gcc13-d-shared-libphobos.patch | 0 ...tch => gcc13-fortran-fdec-duplicates.patch | 0 ...=> gcc13-fortran-fdec-non-logical-if.patch | 0 ... => gcc13-fortran-fdec-override-kind.patch | 0 ...=> gcc13-fortran-flogical-as-integer.patch | 0 gcc12-hack.patch => gcc13-hack.patch | 0 gcc12-isl-dl.patch => gcc13-isl-dl.patch | 6 +- gcc12-isl-dl2.patch => gcc13-isl-dl2.patch | 0 ...atch => gcc13-libgomp-omp_h-multilib.patch | 0 ...+-docs.patch => gcc13-libstdc++-docs.patch | 0 ...path.patch => gcc13-libtool-no-rpath.patch | 0 ...-needed.patch => gcc13-no-add-needed.patch | 0 gcc13-pr107608.patch | 47 + gcc13-pr107678.patch | 113 +++ gcc13-pr108411.patch | 14 + ...2-rh1574936.patch => gcc13-rh1574936.patch | 0 ...atch => gcc13-sparc-config-detection.patch | 10 +- isl-rh2155127.patch | 85 ++ sources | 2 +- update-gcc.sh | 2 +- 23 files changed, 579 insertions(+), 656 deletions(-) delete mode 100644 gcc12-pr107468.patch rename gcc12-Wno-format-security.patch => gcc13-Wno-format-security.patch (90%) rename gcc12-d-shared-libphobos.patch => gcc13-d-shared-libphobos.patch (100%) rename gcc12-fortran-fdec-duplicates.patch => gcc13-fortran-fdec-duplicates.patch (100%) rename gcc12-fortran-fdec-non-logical-if.patch => gcc13-fortran-fdec-non-logical-if.patch (100%) rename gcc12-fortran-fdec-override-kind.patch => gcc13-fortran-fdec-override-kind.patch (100%) rename gcc12-fortran-flogical-as-integer.patch => gcc13-fortran-flogical-as-integer.patch (100%) rename gcc12-hack.patch => gcc13-hack.patch (100%) rename gcc12-isl-dl.patch => gcc13-isl-dl.patch (99%) rename gcc12-isl-dl2.patch => gcc13-isl-dl2.patch (100%) rename gcc12-libgomp-omp_h-multilib.patch => gcc13-libgomp-omp_h-multilib.patch (100%) rename gcc12-libstdc++-docs.patch => gcc13-libstdc++-docs.patch (100%) rename gcc12-libtool-no-rpath.patch => gcc13-libtool-no-rpath.patch (100%) rename gcc12-no-add-needed.patch => gcc13-no-add-needed.patch (100%) create mode 100644 gcc13-pr107608.patch create mode 100644 gcc13-pr107678.patch create mode 100644 gcc13-pr108411.patch rename gcc12-rh1574936.patch => gcc13-rh1574936.patch (100%) rename gcc12-sparc-config-detection.patch => gcc13-sparc-config-detection.patch (77%) create mode 100644 isl-rh2155127.patch diff --git a/gcc.spec b/gcc.spec index 4877961..64130fc 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20221121 -%global gitrev b3f5a0d53b84ed27cf00cfa2b9c3e2c78935c07d -%global gcc_version 12.2.1 -%global gcc_major 12 +%global DATE 20230115 +%global gitrev 7699a0a3101bf1315fb8e350ac718d1f7b3f7816 +%global gcc_version 13.0.0 +%global gcc_major 13 # 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 4 +%global gcc_release 0 %global nvptx_tools_gitrev 472b6e78b3ba918d727698f79911360b7c808247 %global newlib_cygwin_gitrev a8526cb52bedabd4d6ba4b227a5185627f871aa1 %global _unpackaged_files_terminate_build 0 @@ -34,6 +34,7 @@ %global build_objc 0 %global build_go 0 %global build_d 0 +%global build_m2 0 %else %ifarch %{ix86} x86_64 ia64 ppc %{power64} alpha s390x %{arm} aarch64 riscv64 %global build_ada 1 @@ -51,6 +52,11 @@ %else %global build_d 0 %endif +%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips} riscv64 +%global build_m2 1 +%else +%global build_m2 0 +%endif %endif %ifarch %{ix86} x86_64 ia64 ppc64le %global build_libquadmath 1 @@ -62,6 +68,11 @@ %else %global build_libasan 0 %endif +%ifarch x86_64 aarch64 +%global build_libhwasan 1 +%else +%global build_libhwasan 0 +%endif %ifarch x86_64 ppc64 ppc64le aarch64 s390x %global build_libtsan 1 %else @@ -125,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist} +Release: %{gcc_release}.9%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -264,23 +275,27 @@ Provides: bundled(libbacktrace) Provides: bundled(libffi) Provides: gcc(major) = %{gcc_major} -Patch0: gcc12-hack.patch -Patch2: gcc12-sparc-config-detection.patch -Patch3: gcc12-libgomp-omp_h-multilib.patch -Patch4: gcc12-libtool-no-rpath.patch -Patch5: gcc12-isl-dl.patch -Patch6: gcc12-isl-dl2.patch -Patch7: gcc12-libstdc++-docs.patch -Patch8: gcc12-no-add-needed.patch -Patch9: gcc12-Wno-format-security.patch -Patch10: gcc12-rh1574936.patch -Patch11: gcc12-d-shared-libphobos.patch -Patch12: gcc12-pr107468.patch +Patch0: gcc13-hack.patch +Patch2: gcc13-sparc-config-detection.patch +Patch3: gcc13-libgomp-omp_h-multilib.patch +Patch4: gcc13-libtool-no-rpath.patch +Patch5: gcc13-isl-dl.patch +Patch6: gcc13-isl-dl2.patch +Patch7: gcc13-libstdc++-docs.patch +Patch8: gcc13-no-add-needed.patch +Patch9: gcc13-Wno-format-security.patch +Patch10: gcc13-rh1574936.patch +Patch11: gcc13-d-shared-libphobos.patch +Patch12: gcc13-pr107678.patch +Patch13: gcc13-pr107608.patch +Patch14: gcc13-pr108411.patch -Patch100: gcc12-fortran-fdec-duplicates.patch -Patch101: gcc12-fortran-flogical-as-integer.patch -Patch102: gcc12-fortran-fdec-override-kind.patch -Patch103: gcc12-fortran-fdec-non-logical-if.patch +Patch50: isl-rh2155127.patch + +Patch100: gcc13-fortran-fdec-duplicates.patch +Patch101: gcc13-fortran-flogical-as-integer.patch +Patch102: gcc13-fortran-fdec-override-kind.patch +Patch103: gcc13-fortran-fdec-non-logical-if.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -302,7 +317,7 @@ Patch103: gcc12-fortran-fdec-non-logical-if.patch %if %{build_go} # Avoid stripping these libraries and binaries. %global __os_install_post \ -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.21.* \ +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.22.* \ chmod 644 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -310,7 +325,7 @@ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/test2json \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/vet \ %__os_install_post \ -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.21.* \ +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.22.* \ chmod 755 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 755 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -321,11 +336,11 @@ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} %endif %description -The gcc package contains the GNU Compiler Collection version 12. +The gcc package contains the GNU Compiler Collection version 13. You'll need this package in order to compile C code. %package -n libgcc -Summary: GCC version 12 shared support library +Summary: GCC version 13 shared support library Autoreq: false %if !%{build_ada} Obsoletes: libgnat < %{version}-%{release} @@ -365,6 +380,7 @@ including templates and exception handling. Summary: GNU Standard C++ Library Autoreq: true Requires: glibc >= 2.10.90-7 +Requires: tzdata >= 2017c %description -n libstdc++ The libstdc++ package contains a rewritten standard compliant GCC Standard @@ -489,6 +505,34 @@ Requires: gcc-gdc = %{version}-%{release} %description -n libgphobos-static This package contains static D libraries. +%package gm2 +Summary: Modula-2 support +Requires: gcc = %{version}-%{release} +Requires: libgm2 = %{version}-%{release} +Provides: gcc-m2 = %{version}-%{release} +Provides: gm2 = %{version}-%{release} +Autoreq: true + +%description gm2 +The gcc-gm2 package provides support for compiling Modula-2 +programs with the GNU Compiler Collection. + +%package -n libgm2 +Summary: Modula-2 runtime +Autoreq: true + +%description -n libgm2 +This package contains Modula-2 shared libraries which are needed to run +Modula-2 dynamically linked programs. + +%package -n libgm2-static +Summary: Static Modula-2 libraries +Requires: libgm2 = %{version}-%{release} +Requires: gcc-gm2 = %{version}-%{release} + +%description -n libgm2-static +This package contains static Modula-2 libraries. + %package -n libgomp Summary: GCC OpenMP v4.5 shared support library @@ -607,6 +651,21 @@ Requires: libasan = %{version}-%{release} %description -n libasan-static This package contains Address Sanitizer static runtime library. +%package -n libhwasan +Summary: The Hardware-assisted Address Sanitizer runtime library + +%description -n libhwasan +This package contains the Hardware-assisted Address Sanitizer library +which is used for -fsanitize=hwaddress instrumented programs. + +%package -n libhwasan-static +Summary: The Hardware-assisted Address Sanitizer static library +Requires: libhwasan = %{version}-%{release} + +%description -n libhwasan-static +This package contains Hardware-assisted Address Sanitizer static runtime +library. + %package -n libtsan Summary: The Thread Sanitizer runtime library @@ -803,7 +862,12 @@ so that there cannot be any synchronization problems. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr107468~ +%patch12 -p0 -b .pr107678~ +%patch13 -p0 -b .pr107608~ +%patch14 -p0 -b .pr108411~ + +%patch50 -p0 -b .rh2155127~ +touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 %if 0%{?rhel} >= 9 %patch100 -p1 -b .fortran-fdec-duplicates~ @@ -856,11 +920,13 @@ export CONFIG_SITE=NONE CC=gcc CXX=g++ -OPT_FLAGS=`echo %{optflags}|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'` +OPT_FLAGS=`echo %{optflags}|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[123]//g'` +OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/\(-Wp,\)\?-U_FORTIFY_SOURCE//g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-flto=auto//g;s/-flto//g;s/-ffat-lto-objects//g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mfpmath=sse/-mfpmath=sse -msse2/g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/ -pipe / /g'` +OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-fno-omit-frame-pointer //g;s/-mbackchain //g;s/-mno-omit-leaf-frame-pointer //g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-Werror=format-security/-Wformat-security/g'` %ifarch sparc OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mcpu=ultrasparc/-mtune=ultrasparc/g;s/-mcpu=v[78]//g'` @@ -923,7 +989,7 @@ ISL_FLAG_PIC=-fPIC ISL_FLAG_PIC=-fpic %endif cd isl-build -sed -i 's|libisl\([^-]\)|libgcc12privateisl\1|g' \ +sed -i 's|libisl\([^-]\)|libgcc13privateisl\1|g' \ ../../isl-%{isl_version}/Makefile.{am,in} ../../isl-%{isl_version}/configure \ CC=/usr/bin/gcc CXX=/usr/bin/g++ \ @@ -931,8 +997,8 @@ sed -i 's|libisl\([^-]\)|libgcc12privateisl\1|g' \ make %{?_smp_mflags} make install cd ../isl-install/lib -rm libgcc12privateisl.so{,.23} -mv libgcc12privateisl.so.23.1.0 libisl.so.23 +rm libgcc13privateisl.so{,.23} +mv libgcc13privateisl.so.23.1.0 libisl.so.23 ln -sf libisl.so.23 libisl.so cd ../.. %endif @@ -953,6 +1019,9 @@ enablelgo=,go %if %{build_d} enableld=,d %endif +%if %{build_m2} +enablelm2=,m2 +%endif CONFIGURE_OPTS="\ --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \ --with-bugurl=http://bugzilla.redhat.com/bugzilla \ @@ -975,7 +1044,7 @@ CONFIGURE_OPTS="\ %endif --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \ --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only \ - --enable-libstdcxx-backtrace \ + --enable-libstdcxx-backtrace --with-libstdcxx-zoneinfo=%{_datadir}/zoneinfo \ %ifnarch %{mips} --with-linker-hash-style=gnu \ %endif @@ -1107,7 +1176,7 @@ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \ | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \ XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \ ../configure --enable-bootstrap \ - --enable-languages=c,c++,fortran${enablelobjc}${enablelada}${enablelgo}${enableld},lto \ + --enable-languages=c,c++,fortran${enablelobjc}${enablelada}${enablelgo}${enableld}${enablelm2},lto \ $CONFIGURE_OPTS %ifarch sparc sparcv9 sparc64 @@ -1163,7 +1232,7 @@ cd ../.. # Copy various doc files here and there cd .. -mkdir -p rpm.doc/gfortran rpm.doc/objc rpm.doc/gdc rpm.doc/libphobos +mkdir -p rpm.doc/{gfortran,objc,gdc,libphobos,gm2,libgm2} mkdir -p rpm.doc/go rpm.doc/libgo rpm.doc/libquadmath rpm.doc/libitm mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/ada,gcc/jit,libstdc++-v3,libobjc,libgomp,libcc1,libatomic,libsanitizer} @@ -1191,6 +1260,14 @@ done) done cp -a src/LICENSE*.txt libdruntime/LICENSE.txt ../rpm.doc/libphobos/) %endif +%if %{build_m2} +(cd gcc/m2; for i in ChangeLog*; do + cp -p $i ../../rpm.doc/gm2/$i.gm2 +done) +(cd libgm2; for i in ChangeLog*; do + cp -p $i ../rpm.doc/libgm2/$i.libgm2 +done) +%endif %if %{build_libquadmath} (cd libquadmath; for i in ChangeLog* COPYING.LIB; do cp -p $i ../rpm.doc/libquadmath/$i.libquadmath @@ -1488,14 +1565,19 @@ ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../libgfortran.so.5.* libgfortran.so ln -sf ../../../libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../libgo.so.21.* libgo.so +ln -sf ../../../libgo.so.22.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../libquadmath.so.0.* libquadmath.so %endif %if %{build_d} -ln -sf ../../../libgdruntime.so.3.* libgdruntime.so -ln -sf ../../../libgphobos.so.3.* libgphobos.so +ln -sf ../../../libgdruntime.so.4.* libgdruntime.so +ln -sf ../../../libgphobos.so.4.* libgphobos.so +%endif +%if %{build_m2} +for i in cor iso log min pim; do + ln -sf ../../../libm2$i.so.18.* libm2$i.so +done %endif %if %{build_libitm} ln -sf ../../../libitm.so.1.* libitm.so @@ -1518,14 +1600,19 @@ ln -sf ../../../../%{_lib}/libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../../%{_lib}/libgfortran.so.5.* libgfortran.so ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../../%{_lib}/libgo.so.21.* libgo.so +ln -sf ../../../../%{_lib}/libgo.so.22.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so %endif %if %{build_d} -ln -sf ../../../../%{_lib}/libgdruntime.so.3.* libgdruntime.so -ln -sf ../../../../%{_lib}/libgphobos.so.3.* libgphobos.so +ln -sf ../../../../%{_lib}/libgdruntime.so.4.* libgdruntime.so +ln -sf ../../../../%{_lib}/libgphobos.so.4.* libgphobos.so +%endif +%if %{build_m2} +for i in cor iso log min pim; do + ln -sf ../../../../%{_lib}/libm2$i.so.18.* libm2$i.so +done %endif %if %{build_libitm} ln -sf ../../../../%{_lib}/libitm.so.1.* libitm.so @@ -1545,6 +1632,11 @@ rm -f libtsan.so echo 'INPUT ( %{_prefix}/%{_lib}/'`echo ../../../../%{_lib}/libtsan.so.2.* | sed 's,^.*libt,libt,'`' )' > libtsan.so mv ../../../../%{_lib}/libtsan_preinit.o libtsan_preinit.o %endif +%if %{build_libhwasan} +rm -f libhwasan.so +echo 'INPUT ( %{_prefix}/%{_lib}/'`echo ../../../../%{_lib}/libhwasan.so.0.* | sed 's,^.*libh,libh,'`' )' > libhwasan.so +mv ../../../../%{_lib}/libhwasan_preinit.o libhwasan_preinit.o +%endif %if %{build_liblsan} rm -f liblsan.so echo 'INPUT ( %{_prefix}/%{_lib}/'`echo ../../../../%{_lib}/liblsan.so.0.* | sed 's,^.*libl,libl,'`' )' > liblsan.so @@ -1553,6 +1645,7 @@ mv ../../../../%{_lib}/liblsan_preinit.o liblsan_preinit.o fi mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++fs.*a $FULLLPATH/ +mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++exp.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++_libbacktrace.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libsupc++.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libgfortran.*a $FULLLPATH/ @@ -1567,6 +1660,14 @@ mv -f %{buildroot}%{_prefix}/%{_lib}/libquadmath.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libgdruntime.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libgphobos.*a $FULLLPATH/ %endif +%if %{build_m2} +for i in cor iso log min pim; do + mv -f %{buildroot}%{_prefix}/%{_lib}/libm2$i.*a $FULLLPATH/ + rm -f m2/m2$i/*.{a,la} + ln -sf ../../libm2$i.so m2/m2$i/ + ln -sf ../../libm2$i.a m2/m2$i/ +done +%endif %if %{build_libitm} mv -f %{buildroot}%{_prefix}/%{_lib}/libitm.*a $FULLLPATH/ %endif @@ -1582,6 +1683,9 @@ mv -f %{buildroot}%{_prefix}/%{_lib}/libubsan.*a $FULLLPATH/ %if %{build_libtsan} mv -f %{buildroot}%{_prefix}/%{_lib}/libtsan.*a $FULLPATH/ %endif +%if %{build_libhwasan} +mv -f %{buildroot}%{_prefix}/%{_lib}/libhwasan.*a $FULLPATH/ +%endif %if %{build_liblsan} mv -f %{buildroot}%{_prefix}/%{_lib}/liblsan.*a $FULLPATH/ %endif @@ -1639,8 +1743,8 @@ ln -sf ../`echo ../../../../lib/libgfortran.so.5.* | sed s~/lib/~/lib64/~` 64/li ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.21.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.21.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.22.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.22.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -1649,10 +1753,20 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libquadmath.so.0.* | sed ' %endif %if %{build_d} rm -f libgdruntime.so libgphobos.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgdruntime.so.3.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgdruntime.so.3.* | sed 's,^.*libg,libg,'`' )' > 64/libgdruntime.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgphobos.so.3.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgphobos.so.3.* | sed 's,^.*libg,libg,'`' )' > 64/libgphobos.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgdruntime.so.4.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgdruntime.so.4.* | sed 's,^.*libg,libg,'`' )' > 64/libgdruntime.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgphobos.so.4.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgphobos.so.4.* | sed 's,^.*libg,libg,'`' )' > 64/libgphobos.so +%endif +%if %{build_m2} +for i in cor iso log min pim; do + rm -f libm2$i.so + echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libm2$i.so.18.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so + echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libm2$i.so.18.* | sed 's,^.*libm,libm,'`' )' > 64/libm2$i.so + rm -f 64/m2/m2$i/*.{a,la} + ln -sf ../../libm2$i.so 64/m2/m2$i/ + ln -sf ../../libm2$i.a 64/m2/m2$i/ +done %endif %if %{build_libitm} rm -f libitm.so @@ -1685,6 +1799,8 @@ ln -sf lib32/libstdc++.a libstdc++.a ln -sf ../lib64/libstdc++.a 64/libstdc++.a ln -sf lib32/libstdc++fs.a libstdc++fs.a ln -sf ../lib64/libstdc++fs.a 64/libstdc++fs.a +ln -sf lib32/libstdc++exp.a libstdc++exp.a +ln -sf ../lib64/libstdc++exp.a 64/libstdc++exp.a ln -sf lib32/libstdc++_libbacktrace.a libstdc++_libbacktrace.a ln -sf ../lib64/libstdc++_libbacktrace.a 64/libstdc++_libbacktrace.a ln -sf lib32/libsupc++.a libsupc++.a @@ -1699,6 +1815,12 @@ ln -sf ../lib64/libgdruntime.a 64/libgdruntime.a ln -sf lib32/libgphobos.a libgphobos.a ln -sf ../lib64/libgphobos.a 64/libgphobos.a %endif +%if %{build_m2} +for i in cor iso log min pim; do + ln -sf lib32/libm2$i.a libm2$i.a + ln -sf ../lib64/libm2$i.a 64/libm2$i.a +done +%endif %if %{build_libitm} ln -sf lib32/libitm.a libitm.a ln -sf ../lib64/libitm.a 64/libitm.a @@ -1740,8 +1862,8 @@ ln -sf ../`echo ../../../../lib64/libgfortran.so.5.* | sed s~/../lib64/~/~` 32/l ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.21.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.21.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.22.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.22.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -1750,10 +1872,20 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libquadmath.so.0.* | sed ' %endif %if %{build_d} rm -f libgdruntime.so libgphobos.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgdruntime.so.3.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgdruntime.so.3.* | sed 's,^.*libg,libg,'`' )' > 32/libgdruntime.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgphobos.so.3.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgphobos.so.3.* | sed 's,^.*libg,libg,'`' )' > 32/libgphobos.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgdruntime.so.4.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgdruntime.so.4.* | sed 's,^.*libg,libg,'`' )' > 32/libgdruntime.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgphobos.so.4.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgphobos.so.4.* | sed 's,^.*libg,libg,'`' )' > 32/libgphobos.so +%endif +%if %{build_m2} +for i in cor iso log min pim; do + rm -f libm2$i.so + echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libm2$i.so.18.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so + echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libm2$i.so.18.* | sed 's,^.*libm,libm,'`' )' > 32/libm2$i.so + rm -f 32/m2/m2$i/*.{a,la} + ln -sf ../../libm2$i.so 32/m2/m2$i/ + ln -sf ../../libm2$i.a 32/m2/m2$i/ +done %endif %if %{build_libitm} rm -f libitm.so @@ -1788,6 +1920,8 @@ ln -sf ../lib32/libstdc++.a 32/libstdc++.a ln -sf lib64/libstdc++.a libstdc++.a ln -sf ../lib32/libstdc++fs.a 32/libstdc++fs.a ln -sf lib64/libstdc++fs.a libstdc++fs.a +ln -sf ../lib32/libstdc++exp.a 32/libstdc++exp.a +ln -sf lib64/libstdc++exp.a libstdc++exp.a ln -sf ../lib32/libstdc++_libbacktrace.a 32/libstdc++_libbacktrace.a ln -sf lib64/libstdc++_libbacktrace.a libstdc++_libbacktrace.a ln -sf ../lib32/libsupc++.a 32/libsupc++.a @@ -1802,6 +1936,12 @@ ln -sf lib64/libgdruntime.a libgdruntime.a ln -sf ../lib32/libgphobos.a 32/libgphobos.a ln -sf lib64/libgphobos.a libgphobos.a %endif +%if %{build_m2} +for i in cor iso log min pim; do + ln -sf ../lib32/libm2$i.a 32/libm2$i.a + ln -sf lib64/libm2$i.a libm2$i.a +done +%endif %if %{build_libitm} ln -sf ../lib32/libitm.a 32/libitm.a ln -sf lib64/libitm.a libitm.a @@ -1837,6 +1977,7 @@ ln -sf lib64/adalib adalib ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libgfortran.a 32/libgfortran.a ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libstdc++.a 32/libstdc++.a ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libstdc++fs.a 32/libstdc++fs.a +ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libstdc++exp.a 32/libstdc++exp.a ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libstdc++_libbacktrace.a 32/libstdc++_libbacktrace.a ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libsupc++.a 32/libsupc++.a %if %{build_libquadmath} @@ -1846,6 +1987,11 @@ ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libqua ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libgdruntime.a 32/libgdruntime.a ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libgphobos.a 32/libgphobos.a %endif +%if %{build_m2} +for i in cor iso log min pim; do + ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libm2$i.a 32/libm2$i.a +done +%endif %if %{build_libitm} ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libitm.a 32/libitm.a %endif @@ -1884,8 +2030,9 @@ for d in . $FULLLSUBDIR; do -o -name libgolibbegin.a -o -name libgomp.a \ -o -name libitm.a -o -name liblsan.a \ -o -name libobjc.a -o -name libgdruntime.a -o -name libgphobos.a \ - -o -name libquadmath.a -o -name libstdc++.a \ - -o -name libstdc++fs.a -o -name libstdc++_libbacktrace.a -o -name libsupc++.a \ + -o -name libm2\*.a -o -name libquadmath.a -o -name libstdc++.a \ + -o -name libstdc++fs.a -o -name libstdc++exp.a \ + -o -name libstdc++_libbacktrace.a -o -name libsupc++.a \ -o -name libtsan.a -o -name libubsan.a \) -a -type f`; do cp -a $f $RPM_BUILD_ROOT%{_prefix}/lib/debug%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/$d/ done @@ -1895,7 +2042,7 @@ done # Strip debug info from Fortran/ObjC/Java static libraries strip -g `find . \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \ -o -name libgcc.a -o -name libgcov.a -o -name libquadmath.a \ - -o -name libgdruntime.a -o -name libgphobos.a \ + -o -name libgdruntime.a -o -name libgphobos.a -o -name libm2\*.a \ -o -name libitm.a -o -name libgo.a -o -name libcaf\*.a \ -o -name libatomic.a -o -name libasan.a -o -name libtsan.a \ -o -name libubsan.a -o -name liblsan.a -o -name libcc1.a \) \ @@ -1908,8 +2055,13 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libcc1.so.0.* chmod 755 %{buildroot}%{_prefix}/%{_lib}/libquadmath.so.0.* %endif %if %{build_d} -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgdruntime.so.3.* -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgphobos.so.3.* +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgdruntime.so.4.* +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgphobos.so.4.* +%endif +%if %{build_m2} +for i in cor iso log min pim; do + chmod 755 %{buildroot}%{_prefix}/%{_lib}/libm2$i.so.18.* +done %endif %if %{build_libitm} chmod 755 %{buildroot}%{_prefix}/%{_lib}/libitm.so.1.* @@ -1926,12 +2078,15 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libubsan.so.1.* %if %{build_libtsan} chmod 755 %{buildroot}%{_prefix}/%{_lib}/libtsan.so.2.* %endif +%if %{build_libhwasan} +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libhwasan.so.0.* +%endif %if %{build_liblsan} chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.* %endif %if %{build_go} # Avoid stripping these libraries and binaries. -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.21.* +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.22.* chmod 644 %{buildroot}%{_prefix}/bin/go.gcc chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo @@ -1948,8 +2103,6 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgnarl*so* chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgnat*so* %endif -mv $FULLPATH/include-fixed/syslimits.h $FULLPATH/include/syslimits.h -mv $FULLPATH/include-fixed/limits.h $FULLPATH/include/limits.h for h in `find $FULLPATH/include -name \*.h`; do if grep -q 'It has been auto-edited by fixincludes from' $h; then rh=`grep -A2 'It has been auto-edited by fixincludes from' $h | tail -1 | sed 's|^.*"\(.*\)".*$|\1|'` @@ -2002,6 +2155,7 @@ rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcc-ar || : rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcc-nm || : rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcc-ranlib || : rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gdc || : +rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gm2 || : %ifarch %{multilib_64_archs} # Remove libraries for the other arch on multilib arches @@ -2141,6 +2295,8 @@ end %ldconfig_scriptlets -n libgphobos +%ldconfig_scriptlets -n libgm2 + %ldconfig_scriptlets -n libgnat %ldconfig_scriptlets -n libgomp @@ -2322,6 +2478,13 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mwaitintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512fp16intrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512fp16vlintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avxifmaintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avxvnniint8intrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avxneconvertintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/cmpccxaddintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxfp16intrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/prfchiintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/raointintrin.h %endif %ifarch ia64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ia64intrin.h @@ -2497,6 +2660,10 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.so %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan_preinit.o %endif +%if %{build_libhwasan} +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libhwasan.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libhwasan_preinit.o +%endif %if %{build_liblsan} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.so %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan_preinit.o @@ -2540,6 +2707,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++.so %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++fs.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++exp.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++_libbacktrace.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libsupc++.a %endif @@ -2548,6 +2716,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++.so %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++fs.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++exp.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++_libbacktrace.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libsupc++.a %endif @@ -2557,6 +2726,7 @@ end %ifarch sparcv9 sparc64 ppc ppc64 ppc64p7 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++fs.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++exp.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++_libbacktrace.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libsupc++.a %endif @@ -2590,15 +2760,18 @@ end %ifarch sparcv9 ppc %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++fs.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++exp.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++_libbacktrace.a %endif %ifarch sparc64 ppc64 ppc64p7 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++fs.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++exp.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++_libbacktrace.a %endif %ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++fs.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++exp.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++_libbacktrace.a %endif %doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README* @@ -2770,8 +2943,8 @@ end %doc rpm.doc/gdc/* %files -n libgphobos -%{_prefix}/%{_lib}/libgdruntime.so.3* -%{_prefix}/%{_lib}/libgphobos.so.3* +%{_prefix}/%{_lib}/libgdruntime.so.4* +%{_prefix}/%{_lib}/libgphobos.so.4* %doc rpm.doc/libphobos/* %files -n libgphobos-static @@ -2794,6 +2967,59 @@ end %endif %endif +%if %{build_m2} +%files gm2 +%{_prefix}/bin/gm2 +%{_mandir}/man1/gm2.1* +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} +%dir %{_prefix}/libexec/gcc +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/m2 +%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cc1gm2 +%ifarch sparcv9 sparc64 ppc ppc64 ppc64p7 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libm2*.a +%endif +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libm2*.so +%ifarch sparcv9 ppc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/m2 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libm2*.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libm2*.so +%endif +%ifarch %{multilib_64_archs} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/m2 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libm2*.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libm2*.so +%endif +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/m2rte.so +%doc rpm.doc/gm2/* + +%files -n libgm2 +%{_prefix}/%{_lib}/libm2*.so.18* +%doc rpm.doc/libgm2/* + +%files -n libgm2-static +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} +%ifarch sparcv9 ppc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libm2*.a +%endif +%ifarch sparc64 ppc64 ppc64p7 +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libm2*.a +%endif +%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libm2*.a +%endif +%endif + %if %{build_ada} %files gnat %{_prefix}/bin/gnat @@ -3036,6 +3262,20 @@ end %license libsanitizer/LICENSE.TXT %endif +%if %{build_libhwasan} +%files -n libhwasan +%{_prefix}/%{_lib}/libhwasan.so.0* + +%files -n libhwasan-static +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libhwasan.a +%doc rpm.doc/changelogs/libsanitizer/ChangeLog* +%{!?_licensedir:%global license %%doc} +%license libsanitizer/LICENSE.TXT +%endif + %if %{build_liblsan} %files -n liblsan %{_prefix}/%{_lib}/liblsan.so.0* @@ -3096,7 +3336,7 @@ end %doc rpm.doc/go/* %files -n libgo -%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.21* +%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.22* %doc rpm.doc/libgo/* %files -n libgo-devel @@ -3215,461 +3455,5 @@ end %endif %changelog -* Mon Nov 21 2022 Jakub Jelinek 12.2.1-4 -- update from releases/gcc-12 branch - - PRs c++/104066, c++/105774, c++/106829, c++/107358, c/41041, c/106981, - c/107001, libstdc++/95048, libstdc++/103295, target/104688, - target/107183, target/107304, target/107404, target/107713, - target/107748, tree-optimization/107121, tree-optimization/107206 -- fix up std::from_chars behavior in rounding modes other than FE_TONEAREST - (PR libstdc++/107468) - -* Thu Nov 3 2022 Jakub Jelinek 12.2.1-3 -- update from releases/gcc-12 branch - - PRs c++/93259, c++/105774, c++/106759, c++/106829, c++/106893, c++/106925, - c++/107358, c/106947, c/106981, c/107001, fortran/82868, - fortran/100029, fortran/100040, fortran/100097, fortran/100098, - fortran/100103, fortran/100132, fortran/100136, fortran/100245, - fortran/103413, fortran/103694, fortran/105012, fortran/105633, - fortran/106566, fortran/106579, fortran/106817, fortran/106857, - fortran/106985, fortran/106986, fortran/107054, libstdc++/105678, - libstdc++/106320, libstdc++/106589, libstdc++/106607, - libstdc++/106695, lto/107418, middle-end/106548, middle-end/106982, - other/106782, rtl-optimization/106187, target/96072, target/99184, - target/99685, target/100645, target/101322, target/103353, - target/104482, target/105421, target/105463, target/105485, - target/106017, target/106355, target/106459, target/106491, - target/106524, target/106704, target/106714, target/106721, - target/107061, target/107064, target/107248, target/107364, - tree-optimization/102892, tree-optimization/105937, - tree-optimization/106322, tree-optimization/106809, - tree-optimization/106841, tree-optimization/106860, - tree-optimization/106892, tree-optimization/106922, - tree-optimization/106934, tree-optimization/107107, - tree-optimization/107121, tree-optimization/107160, - tree-optimization/107212, tree-optimization/107254, - tree-optimization/107323 - -* Wed Sep 7 2022 Kalev Lember 12.2.1-2 -- enable GDC on aarch64 - -* Fri Aug 19 2022 Jakub Jelinek 12.2.1-1 -- update from releases/gcc-12 branch - - GCC 12.2 release - - PRs c++/67048, c++/106369, c/106016, d/106623, d/106638, lto/106334, - lto/106540, middle-end/106492, tree-optimization/106513 -- fix an if-conversion wrong-code bug (PR rtl-optimization/106590) -- implement C++23 P2327R1 - de-deprecating volatile compound operations - as - a DR - -* Wed Aug 10 2022 Jakub Jelinek 12.1.1-4 -- update from releases/gcc-12 branch - - PRs analyzer/105285, analyzer/106204, analyzer/106225, c++/53164, - c++/96363, c++/100374, c++/105541, c++/105626, c++/105634, c++/105637, - c++/105758, c++/105842, c++/105848, c++/105912, c++/106024, - c++/106102, c++/106230, c++/106311, c++/106361, d/106139, d/106555, - d/106563, debug/106261, fortran/101330, fortran/103137, - fortran/103138, fortran/103504, fortran/103693, fortran/104313, - fortran/105243, fortran/105691, fortran/105813, fortran/105954, - fortran/106121, libfortran/106079, libstdc++/88881, libstdc++/100823, - libstdc++/104443, libstdc++/105844, libstdc++/105880, - libstdc++/105957, libstdc++/105995, libstdc++/106162, - libstdc++/106248, lto/106129, middle-end/105965, middle-end/106027, - middle-end/106144, middle-end/106331, middle-end/106449, - preprocessor/97498, rtl-optimization/105041, rtl-optimization/106032, - target/103722, target/105459, target/105930, target/105991, - target/106091, target/106097, target/106122, testsuite/106345, - tree-optimization/105665, tree-optimization/105860, - tree-optimization/105946, tree-optimization/105969, - tree-optimization/105971, tree-optimization/106063, - tree-optimization/106087, tree-optimization/106112, - tree-optimization/106114, tree-optimization/106131, - tree-optimization/106189 - -* Thu Jun 30 2022 Jakub Jelinek 12.1.1-3 -- fix up libtsan on s390x - -* Tue Jun 28 2022 Jakub Jelinek 12.1.1-2 -- update from releases/gcc-12 branch - - PRs c++/49387, c++/102307, c++/102651, c++/104470, c++/105491, c++/105589, - c++/105623, c++/105652, c++/105655, c++/105725, c++/105734, - c++/105756, c++/105761, c++/105779, c++/105795, c++/105852, - c++/105871, c++/105885, c++/105908, c++/105925, c++/105931, - c++/105964, c++/106001, c/105635, d/105544, fortran/105230, - gcov-profile/105535, ipa/100413, ipa/105600, ipa/105639, ipa/105739, - libgomp/105745, libgomp/106045, libstdc++/104731, libstdc++/105284, - libstdc++/105671, libstdc++/105681, middle-end/105537, - middle-end/105604, middle-end/105711, middle-end/105951, - middle-end/105998, middle-end/106030, other/105527, - preprocessor/105732, rtl-optimization/105455, rtl-optimization/105559, - rtl-optimization/105577, sanitizer/105714, sanitizer/105729, - target/101891, target/104871, target/105162, target/105209, - target/105292, target/105472, target/105556, target/105599, - target/105854, target/105879, target/105953, target/105960, - target/105970, target/105981, target/106096, tree-optimization/103116, - tree-optimization/105431, tree-optimization/105458, - tree-optimization/105528, tree-optimization/105562, - tree-optimization/105618, tree-optimization/105726, - tree-optimization/105736, tree-optimization/105786, - tree-optimization/105940 -- enable tsan and lsan on s390x (#2101610) -- trim RHEL fortran patches -- fix nvptx build (PRs bootstrap/105551, target/105938) - -* Sat May 7 2022 Jakub Jelinek 12.1.1-1 -- update from releases/gcc-12 branch - - GCC 12.1 release - - PRs c++/105476, libstdc++/103911, libstdc++/105441, libstdc++/105502, - middle-end/105376, middle-end/105461, target/102059, testsuite/105433, - tree-optimization/105394, tree-optimization/105437, - tree-optimization/105484 - -* Thu May 5 2022 Stephen Gallagher 12.0.1-0.18 -- fix annobin plugin conditional to build for ELN - -* Fri Apr 29 2022 Jakub Jelinek 12.0.1-0.17 -- update from trunk and releases/gcc-12 branch - - GCC 12.1-rc1 - - PRs analyzer/105252, analyzer/105264, analyzer/105365, analyzer/105366, - c++/65211, c++/82980, c++/86193, c++/90107, c++/97219, c++/100838, - c++/101442, c++/101698, c++/102629, c++/102804, c++/102987, - c++/103868, c++/104051, c++/104624, c++/104646, c++/104996, - c++/105256, c++/105265, c++/105268, c++/105287, c++/105289, - c++/105297, c++/105301, c++/105304, c++/105321, c++/105322, - c++/105353, c++/105386, c++/105398, c++/105425, c++/105426, - debug/105089, debug/105203, fortran/70673, fortran/78054, - fortran/102043, fortran/103662, fortran/104717, fortran/105242, - fortran/105310, fortran/105379, fortran/105381, gcov-profile/105282, - ipa/103818, ipa/105306, libgomp/105358, libstdc++/93602, - libstdc++/99290, libstdc++/102994, libstdc++/104858, - libstdc++/105269, libstdc++/105324, libstdc++/105375, - libstdc++/105417, lto/105364, lto/105399, middle-end/104492, - rtl-optimization/105231, rtl-optimization/105314, - rtl-optimization/105333, sanitizer/105396, target/89125, - target/103197, target/104676, target/105247, target/105257, - target/105271, target/105331, target/105334, target/105338, - target/105339, target/105349, target/105367, testsuite/105266, - tree-optimization/100810, tree-optimization/103941, - tree-optimization/104010, tree-optimization/105219, - tree-optimization/105254, tree-optimization/105276, - tree-optimization/105312, tree-optimization/105368, - tree-optimization/105374 - -* Wed Apr 13 2022 Jakub Jelinek 12.0.1-0.16 -- update from trunk - - PRs c++/97296, c++/98249, c++/100111, c++/103105, c++/104142, c++/104669, - c++/105223, c++/105233, c++/105245, jit/104071, jit/104072, - jit/104073, jit/104293, middle-end/105253, middle-end/105259, - rtl-optimization/105211, target/95325, target/97348, target/101755, - target/102146, target/103623, target/104144, target/104894, - target/105213, target/105214, target/105234, testsuite/105183, - tree-optimization/104912, tree-optimization/105226, - tree-optimization/105232, tree-optimization/105235, - tree-optimization/105250, tree-optimization/105263 - -* Mon Apr 11 2022 Jakub Jelinek 12.0.1-0.15 -- update from trunk - - PRs analyzer/102208, analyzer/103892, c++/91618, c++/92385, c++/96604, - c++/96645, c++/99479, c++/100370, c++/100608, c++/101051, c++/101677, - c++/101717, c++/101894, c++/103328, c++/103852, c++/104668, - c++/104702, c++/105110, c++/105143, c++/105186, c++/105187, - c++/105191, c/105149, c/105151, d/104740, driver/105096, - fortran/104210, fortran/105138, fortran/105184, ipa/103376, - ipa/104303, ipa/105166, jit/102824, libstdc++/105031, - libstdc++/105128, libstdc++/105146, libstdc++/105153, - libstdc++/105154, middle-end/105140, middle-end/105165, - rtl-optimization/104985, target/101908, target/102024, target/103147, - target/104049, target/104253, target/104409, target/104853, - target/104897, target/104987, target/105002, target/105069, - target/105123, target/105139, target/105144, target/105147, - target/105157, target/105197, testsuite/103196, testsuite/105095, - testsuite/105122, testsuite/105196, tree-optimization/102586, - tree-optimization/103761, tree-optimization/104639, - tree-optimization/104645, tree-optimization/105132, - tree-optimization/105142, tree-optimization/105148, - tree-optimization/105150, tree-optimization/105163, - tree-optimization/105173, tree-optimization/105175, - tree-optimization/105185, tree-optimization/105189, - tree-optimization/105198, tree-optimization/105218 -- build annobin gcc plugin as part of gcc build into gcc-plugin-annobin - subpackage - -* Sun Apr 3 2022 Jakub Jelinek 12.0.1-0.14 -- update from trunk - - revert delayed parse DMI change (PR c++/96645) -- fix up aarch64 make install - -* Fri Apr 1 2022 Jakub Jelinek 12.0.1-0.13 -- update from trunk - - PRs ada/104767, ada/104861, analyzer/95000, analyzer/99771, - analyzer/103533, analyzer/104308, analyzer/104793, analyzer/104863, - analyzer/104943, analyzer/104954, analyzer/104955, analyzer/104979, - analyzer/104997, analyzer/105017, analyzer/105057, analyzer/105074, - analyzer/105087, c++/39751, c++/58646, c++/59426, c++/65396, - c++/71637, c++/84964, c++/87820, c++/92918, c++/93280, c++/95999, - c++/96329, c++/96437, c++/96440, c++/96645, c++/96780, c++/98644, - c++/99445, c++/100474, c++/101030, c++/101515, c++/101767, c++/102045, - c++/102071, c++/102123, c++/102137, c++/102489, c++/102538, - c++/102740, c++/102869, c++/102990, c++/103177, c++/103291, - c++/103299, c++/103337, c++/103455, c++/103460, c++/103769, - c++/103943, c++/103968, c++/104008, c++/104108, c++/104284, - c++/104476, c++/104527, c++/104568, c++/104583, c++/104608, - c++/104620, c++/104622, c++/104623, c++/104641, c++/104752, - c++/104806, c++/104823, c++/104846, c++/104847, c++/104944, - c++/104994, c++/105003, c++/105006, c++/105035, c++/105050, - c++/105061, c++/105064, c++/105067, c++/105092, c/82283, c/84685, - c/98198, c/104711, d/103528, d/104911, d/105004, debug/104564, - debug/104778, fortran/50549, fortran/100892, fortran/103039, - fortran/103560, fortran/103691, fortran/104126, fortran/104570, - fortran/104571, fortran/104811, fortran/104849, fortran/104999, - ipa/102513, ipa/103083, ipa/103171, ipa/104813, jit/63854, - libgcc/86224, libgomp/105042, libstdc++/92546, libstdc++/103407, - libstdc++/104242, libstdc++/104859, libstdc++/104866, - libstdc++/104870, libstdc++/104875, libstdc++/104990, - libstdc++/105021, libstdc++/105027, lto/102426, middle-end/90115, - middle-end/98420, middle-end/99578, middle-end/100680, - middle-end/102330, middle-end/103597, middle-end/104086, - middle-end/104285, middle-end/104436, middle-end/104774, - middle-end/104786, middle-end/104869, middle-end/104885, - middle-end/104892, middle-end/104966, middle-end/104971, - middle-end/104975, middle-end/105032, middle-end/105049, other/65095, - other/102664, other/104899, other/105114, rtl-optimization/103775, - rtl-optimization/104814, rtl-optimization/104961, - rtl-optimization/104989, rtl-optimization/105028, - rtl-optimization/105091, sanitizer/105093, target/86722, target/91229, - target/94680, target/96882, target/99754, target/102125, - target/102215, target/102772, target/102986, target/103074, - target/104004, target/104666, target/104688, target/104714, - target/104762, target/104783, target/104790, target/104815, - target/104818, target/104829, target/104840, target/104842, - target/104857, target/104868, target/104882, target/104890, - target/104898, target/104902, target/104903, target/104910, - target/104916, target/104923, target/104925, target/104946, - target/104952, target/104957, target/104963, target/104967, - target/104974, target/104976, target/104977, target/104978, - target/104982, target/104998, target/105000, target/105011, - target/105052, target/105058, target/105066, target/105068, - testsuite/102841, testsuite/104759, testsuite/105055, - testsuite/105085, tree-optimization/80334, tree-optimization/84201, - tree-optimization/90356, tree-optimization/98335, - tree-optimization/100834, tree-optimization/101895, - tree-optimization/102008, tree-optimization/102586, - tree-optimization/102645, tree-optimization/102943, - tree-optimization/104645, tree-optimization/104755, - tree-optimization/104851, tree-optimization/104880, - tree-optimization/104941, tree-optimization/104942, - tree-optimization/104960, tree-optimization/104970, - tree-optimization/105012, tree-optimization/105053, - tree-optimization/105056, tree-optimization/105070, - tree-optimization/105080, tree-optimization/105094, - tree-optimization/105109 - -* Tue Mar 8 2022 Jakub Jelinek 12.0.1-0.12 -- fix up promoted SUBREG handling (#2045160, PR rtl-optimization/104839) -- fix up check for asm goto (PR rtl-optimization/104777) - -* Tue Mar 8 2022 Jakub Jelinek 12.0.1-0.11 -- update from trunk - - PRs analyzer/101983, fortran/99585, fortran/104430, libstdc++/104807, - middle-end/104381, target/99297, target/104779, target/104794, - target/104797, translation/90148, translation/104552, - tree-optimization/104782, tree-optimization/104825 -- fix build on i686 where gnat1 was hanging (PR target/104838, - PR target/104781) - -* Sun Mar 6 2022 Jakub Jelinek 12.0.1-0.10 -- update from trunk - - PRs analyzer/103521, analyzer/104434, c++/70077, c++/79493, c++/103443, - c++/104618, c++/104667, c++/104682, c/104627, c/104633, d/104659, - d/104736, debug/100541, fortran/84519, fortran/104131, fortran/104573, - fortran/104619, gcov-profile/104677, ipa/104533, ipa/104648, - libstdc++/96526, libstdc++/104602, libstdc++/104748, middle-end/80270, - middle-end/100400, middle-end/102276, middle-end/103836, - middle-end/103984, middle-end/104061, middle-end/104132, - middle-end/104133, middle-end/104529, middle-end/104540, - middle-end/104550, middle-end/104558, middle-end/104679, - middle-end/104721, middle-end/104757, middle-end/104761, - middle-end/104784, rtl-optimization/104154, rtl-optimization/104589, - rtl-optimization/104637, rtl-optimization/104686, target/87496, - target/88134, target/99555, target/100757, target/101325, - target/102429, target/103302, target/104121, target/104208, - target/104489, target/104656, target/104664, target/104674, - target/104681, target/104698, target/104704, target/104724, - target/104726, target/104758, testsuite/100407, testsuite/104687, - testsuite/104725, testsuite/104727, testsuite/104728, - testsuite/104730, testsuite/104732, testsuite/104791, - tree-optimization/91384, tree-optimization/101636, - tree-optimization/103037, tree-optimization/103845, - tree-optimization/103856, tree-optimization/104601, - tree-optimization/104644, tree-optimization/104675, - tree-optimization/104676, tree-optimization/104700, - tree-optimization/104715, tree-optimization/104716 -- fix constraints on s390x conditional trap (PR target/104775) - -* Tue Feb 22 2022 Jakub Jelinek 12.0.1-0.9 -- update from trunk - - PRs analyzer/104524, analyzer/104560, analyzer/104576, c++/85493, - c++/90451, c++/94944, c++/95036, c++/104107, c++/104507, c++/104539, - c++/104565, c/104506, c/104510, c/104531, c/104532, debug/104517, - debug/104557, fortran/77693, fortran/104211, libstdc++/104542, - libstdc++/104559, lto/104617, middle-end/104355, middle-end/104522, - rtl-optimization/104447, rtl-optimization/104498, - rtl-optimization/104544, sanitizer/102656, target/99708, target/99881, - target/100056, target/100874, target/103069, target/104253, - target/104257, target/104335, target/104440, target/104448, - target/104536, target/104581, target/104598, target/104612, - testsuite/104146, tree-optimization/96881, tree-optimization/103771, - tree-optimization/104519, tree-optimization/104526, - tree-optimization/104543, tree-optimization/104551, - tree-optimization/104582, tree-optimization/104604 - -* Mon Feb 14 2022 Jakub Jelinek 12.0.1-0.8 -- update from trunk - - PRs ada/97504, ada/98724, c/104505, fortran/104228, libstdc++/100912, - middle-end/104497, tree-optimization/104511, tree-optimization/104528 - - fix handling of return in arm constexpr ctors and on all arches return in - constexpr dtors (PR c++/104513) - -* Sat Feb 12 2022 Jakub Jelinek 12.0.1-0.7 -- update from trunk - - PRs analyzer/98797, analyzer/101081, analyzer/102052, analyzer/103872, - analyzer/104274, analyzer/104417, analyzer/104452, c++/80951, - c++/96242, c++/96876, c++/102204, c++/103706, c++/103752, c++/104033, - c++/104379, c++/104403, c++/104410, c++/104425, c++/104432, - c++/104472, c/104427, debug/104407, fortran/66193, fortran/104329, - libgomp/104385, libstdc++/104442, middle-end/100775, - middle-end/104402, middle-end/104446, middle-end/104450, - middle-end/104464, middle-end/104467, middle-end/104496, - rtl-optimization/104059, rtl-optimization/104153, - rtl-optimization/104198, rtl-optimization/104400, - rtl-optimization/104459, sanitizer/104449, target/35513, target/79754, - target/97005, target/97040, target/100593, target/102140, - target/103627, target/104117, target/104283, target/104327, - target/104345, target/104364, target/104441, target/104451, - target/104453, target/104456, target/104458, target/104462, - target/104469, target/104474, target/104502, testsuite/104481, - tree-optimization/102832, tree-optimization/104288, - tree-optimization/104373, tree-optimization/104420, - tree-optimization/104445, tree-optimization/104466, - tree-optimization/104479, tree-optimization/104499 - -* Sat Feb 5 2022 Jakub Jelinek 12.0.1-0.6 -- update from trunk - - PRs analyzer/104369, c++/92385, c++/104079, c++/104300, c++/104302, - debug/104337, debug/104366, fortran/104311, fortran/104328, - middle-end/90348, middle-end/104092, middle-end/104260, - rtl-optimization/101885, target/95082, target/100808, target/103686, - target/104219, target/104362, target/104380, tree-optimization/103641, - tree-optimization/104119, tree-optimization/104356, - tree-optimization/104389 - -* Wed Feb 2 2022 Jakub Jelinek 12.0.1-0.5 -- update from trunk - - PRs analyzer/104270, c++/101874, c++/102414, c++/102434, c++/103186, - c++/104291, c++/104294, d/104287, demangler/98886, demangler/99935, - fortran/104331, libstdc++/101831, libstdc++/104301, lto/104333, - middle-end/104232, middle-end/104307, middle-end/95115, - preprocessor/104147, rtl-optimization/101260, target/94372, - target/100428, target/104189, target/104298, target/104323, - tree-optimization/95424, tree-optimization/100499, - tree-optimization/102819, tree-optimization/103169, - tree-optimization/103514, tree-optimization/104279, - tree-optimization/104280, tree-optimization/104281 -- fix a VRP bug with 1-3 bit precision types (PR tree-optimization/104334) - -* Sat Jan 29 2022 Jakub Jelinek 12.0.1-0.4 -- update from trunk - - PRs ada/104258, analyzer/104224, analyzer/104247, bootstrap/67102, - c++/51344, c++/59950, c++/82632, c++/92752, c++/92944, c++/99895, - c++/100030, c++/100198, c++/100282, c++/101532, c++/101988, - c++/103057, c++/103341, c++/103678, c++/104206, c++/104225, - c++/104226, c++/104235, c++/104245, fortran/84784, fortran/103790, - fortran/104128, fortran/104212, fortran/104227, libfortran/104233, - libstdc++/100516, libstdc++/104161, libstdc++/104217, - libstdc++/104259, lto/104237, middle-end/103642, target/103702, - target/104201, target/104213, target/104239, testsuite/70230, - tree-optimization/104196, tree-optimization/104203, - tree-optimization/104263, tree-optimization/104267, web/104254 -- configure with --enable-libstdcxx-backtrace and package - libstdc++_libbacktrace.a - -* Tue Jan 25 2022 Jakub Jelinek 12.0.1-0.3 -- update from trunk - - PRs ada/103538, analyzer/94362, analyzer/103685, analyzer/104062, - analyzer/104089, analyzer/104150, analyzer/104159, bootstrap/104135, - bootstrap/104170, c++/20040, c++/55227, c++/91911, c++/101072, - c++/101405, c++/101715, c++/102300, c++/102338, c++/103631, - c++/103672, c++/103681, c++/104025, c++/104055, c++/104084, - c++/104134, c++/104139, c++/104148, c++/104173, c++/104182, - c++/104197, c/104115, debug/103874, fortran/102621, fortran/103695, - fortran/104127, libgcc/104207, libstdc++/87193, libstdc++/104019, - libstdc++/104032, libstdc++/104099, libstdc++/104101, - libstdc++/104123, libstdc++/104174, middle-end/100786, - middle-end/102860, middle-end/104069, middle-end/104076, - middle-end/104140, other/104176, other/104181, preprocessor/104030, - rtl-optimization/102478, sanitizer/99673, sanitizer/104158, - target/64821, target/94193, target/100784, target/102517, - target/103676, target/103771, target/104090, target/104136, - target/104188, testsuite/102833, testsuite/103763, testsuite/104021, - testsuite/104022, testsuite/104109, tree-optimization/100089, - tree-optimization/100740, tree-optimization/101508, - tree-optimization/101972, tree-optimization/102087, - tree-optimization/102131, tree-optimization/103721, - tree-optimization/103997, tree-optimization/104112, - tree-optimization/104114, tree-optimization/104152, - tree-optimization/104156, tree-optimization/104214 - - don't emit C++ mangling aliases for compatibility with GCC 8.1 ppc64le - IEEE quad long double (PR target/104172) -- mark IEEE quad long double in DWARF as implicit typedef to _Float128 - (PR debug/104194) - -* Tue Jan 18 2022 Jakub Jelinek 12.0.1-0.2 -- update from trunk - - PRs c++/104007, c++/104074, fortran/103692, ipa/103989, libstdc++/101124, - libstdc++/104098, middle-end/103163, tree-optimization/103987, - tree-optimization/104038 -- default to -mabi=ieeelongdouble on ppc64le -- fix -Wdangling-pointer with -fsanitize=address (PR middle-end/104103) -- fix -masm=intel (PR target/104104) - -* Tue Jan 18 2022 Jakub Jelinek 12.0.1-0.1 -- update from trunk - - PRs c++/104031, c/63272, fortran/83079, fortran/87711, fortran/97896, - libstdc++/103650, libstdc++/104080, middle-end/101292, target/103124, - target/103973, target/104005, testsuite/104035, testsuite/104037, - tree-optimization/80532, tree-optimization/101941, - tree-optimization/104064 - -* Sat Jan 15 2022 Jakub Jelinek 12.0.0-0.5 -- update from trunk - - PRs ada/104027, analyzer/104029, c++/70417, c++/103705, c++/103991, - c/104002, fortran/67804, fortran/99256, fortran/103782, - libfortran/104006, libstdc++/91260, libstdc++/91383, libstdc++/95065, - libstdc++/103992, middle-end/100280, middle-end/101475, - middle-end/104026, target/94790, target/98737, target/100637, - target/103935, target/103941, target/104001, target/104003, - target/104014, tree-optimization/83072, tree-optimization/83073, - tree-optimization/96707, tree-optimization/97909, - tree-optimization/102192, tree-optimization/103989, - tree-optimization/104009, tree-optimization/104015 -- include rs6000-vecdefines.h on ppc* (#2040825) - -* Wed Jan 12 2022 Jakub Jelinek 12.0.0-0.4 -- update from trunk - - PRs ada/79724, analyzer/102692, analyzer/103940, c++/89074, c++/103480, - c++/100588, c++/101597, c++/103783, c++/103831, c++/103879, - c++/103912, c++/103946, c/101537, c/103881, fortran/82207, - fortran/101762, fortran/103366, fortran/103777, fortran/103789, - libstdc++/77760, libstdc++/100017, libstdc++/103726, libstdc++/103866, - libstdc++/103891, libstdc++/103955, middle-end/70090, - middle-end/101530, rtl-optimization/98782, rtl-optimization/103974, - target/53652, target/102024, target/102239, target/103465, - target/103804, target/103861, testsuite/102935, testsuite/103820, - tree-optimization/76174, tree-optimization/83541, - tree-optimization/100359, tree-optimization/103551, - tree-optimization/103821, tree-optimization/103948, - tree-optimization/103961, tree-optimization/103971, - tree-optimization/103977, tree-optimization/103990 - -* Sat Jan 8 2022 Jakub Jelinek 12.0.0-0.3 +* Sun Jan 15 2023 Jakub Jelinek 13.0.0-0.9 - new package diff --git a/gcc12-pr107468.patch b/gcc12-pr107468.patch deleted file mode 100644 index 0949b11..0000000 --- a/gcc12-pr107468.patch +++ /dev/null @@ -1,124 +0,0 @@ -libstdc++: Update from latest fast_float [PR107468] - -The following patch is a cherry-pick from -https://github.com/fastfloat/fast_float/pull/153 -to restrict fast_float Clinger's fast path to when rounding mode -is FE_TONEAREST. -Using std::fegetround showed in benchmarks too slow, so instead -it uses a check with 2 float additions and comparison to verify -if rounding is FE_TONEAREST. - -2022-11-20 Jakub Jelinek - - PR libstdc++/107468 - * src/c++17/fast_float/fast_float.h (detail::rounds_to_nearest): New - function, taken from https://github.com/fastfloat/fast_float/pull/153. - (from_chars_advanced): Only use Clinger's fast path if - detail::rounds_to_nearest(). - * testsuite/20_util/from_chars/pr107468.cc: New test. - ---- libstdc++-v3/src/c++17/fast_float/fast_float.h.jj 2022-04-28 15:56:18.315632888 +0200 -+++ libstdc++-v3/src/c++17/fast_float/fast_float.h 2022-11-20 18:53:49.570830249 +0100 -@@ -2842,6 +2842,48 @@ from_chars_result parse_infnan(const cha - return answer; - } - -+/** -+ * Returns true if the floating-pointing rounding mode is to 'nearest'. -+ * It is the default on most system. This function is meant to be inexpensive. -+ * Credit : @mwalcott3 -+ */ -+fastfloat_really_inline bool rounds_to_nearest() noexcept { -+ // See -+ // A fast function to check your floating-point rounding mode -+ // https://lemire.me/blog/2022/11/16/a-fast-function-to-check-your-floating-point-rounding-mode/ -+ // -+ // This function is meant to be equivalent to : -+ // prior: #include -+ // return fegetround() == FE_TONEAREST; -+ // However, it is expected to be much faster than the fegetround() -+ // function call. -+ // -+ // The volatile keywoard prevents the compiler from computing the function -+ // at compile-time. -+ // There might be other ways to prevent compile-time optimizations (e.g., asm). -+ // The value does not need to be std::numeric_limits::min(), any small -+ // value so that 1 + x should round to 1 would do (after accounting for excess -+ // precision, as in 387 instructions). -+ static volatile float fmin = std::numeric_limits::min(); -+ float fmini = fmin; // we copy it so that it gets loaded at most once. -+ // -+ // Explanation: -+ // Only when fegetround() == FE_TONEAREST do we have that -+ // fmin + 1.0f == 1.0f - fmin. -+ // -+ // FE_UPWARD: -+ // fmin + 1.0f > 1 -+ // 1.0f - fmin == 1 -+ // -+ // FE_DOWNWARD or FE_TOWARDZERO: -+ // fmin + 1.0f == 1 -+ // 1.0f - fmin < 1 -+ // -+ // Note: This may fail to be accurate if fast-math has been -+ // enabled, as rounding conventions may not apply. -+ return (fmini + 1.0f == 1.0f - fmini); -+} -+ - } // namespace detail - - template -@@ -2870,7 +2912,7 @@ from_chars_result from_chars_advanced(co - answer.ec = std::errc(); // be optimistic - answer.ptr = pns.lastmatch; - // Next is Clinger's fast path. -- if (binary_format::min_exponent_fast_path() <= pns.exponent && pns.exponent <= binary_format::max_exponent_fast_path() && pns.mantissa <=binary_format::max_mantissa_fast_path() && !pns.too_many_digits) { -+ if (binary_format::min_exponent_fast_path() <= pns.exponent && pns.exponent <= binary_format::max_exponent_fast_path() && pns.mantissa <=binary_format::max_mantissa_fast_path() && !pns.too_many_digits && detail::rounds_to_nearest()) { - value = T(pns.mantissa); - if (pns.exponent < 0) { value = value / binary_format::exact_power_of_ten(-pns.exponent); } - else { value = value * binary_format::exact_power_of_ten(pns.exponent); } ---- libstdc++-v3/testsuite/20_util/from_chars/pr107468.cc.jj -+++ libstdc++-v3/testsuite/20_util/from_chars/pr107468.cc -@@ -0,0 +1,42 @@ -+// Copyright (C) 2022 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 3, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING3. If not see -+// . -+ -+// { dg-do run { target c++17 } } -+// { dg-add-options ieee } -+ -+#include -+#include -+#include -+#include -+ -+int -+main() -+{ -+ // FP from_char not available otherwise. -+#if __cpp_lib_to_chars >= 201611L \ -+ && _GLIBCXX_USE_C99_FENV_TR1 \ -+ && defined(FE_DOWNWARD) \ -+ && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32) -+ // PR libstdc++/107468 -+ float f; -+ char buf[] = "3.355447e+07"; -+ std::fesetround(FE_DOWNWARD); -+ auto [ptr, ec] = std::from_chars(buf, buf + sizeof(buf) - 1, f, std::chars_format::scientific); -+ VERIFY( ec == std::errc() && ptr == buf + sizeof(buf) - 1 ); -+ VERIFY( f == 33554472.0f ); -+#endif -+} diff --git a/gcc12-Wno-format-security.patch b/gcc13-Wno-format-security.patch similarity index 90% rename from gcc12-Wno-format-security.patch rename to gcc13-Wno-format-security.patch index 43e482a..4c71dac 100644 --- a/gcc12-Wno-format-security.patch +++ b/gcc13-Wno-format-security.patch @@ -32,27 +32,31 @@ fi --- Makefile.tpl.jj 2021-12-30 15:12:42.188164847 +0100 +++ Makefile.tpl 2022-01-07 12:06:12.115550714 +0100 -@@ -447,8 +447,8 @@ LDFLAGS = @LDFLAGS@ +@@ -446,9 +446,9 @@ LDFLAGS = @LDFLAGS@ LIBCFLAGS = $(CFLAGS) CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates -GOCFLAGS = $(CFLAGS) -GDCFLAGS = $(CFLAGS) +-GM2FLAGS = $(CFLAGS) +GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) +GDCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) ++GM2FLAGS = $(filter-out -Wformat-security,$(CFLAGS)) # Pass additional PGO and LTO compiler options to the PGO build. BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS) --- Makefile.in.jj 2021-12-30 15:12:42.188164847 +0100 +++ Makefile.in 2022-01-07 12:06:27.335334561 +0100 -@@ -444,8 +444,8 @@ LDFLAGS = @LDFLAGS@ +@@ -443,9 +443,9 @@ LDFLAGS = @LDFLAGS@ LIBCFLAGS = $(CFLAGS) CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates -GOCFLAGS = $(CFLAGS) -GDCFLAGS = $(CFLAGS) +-GM2FLAGS = $(CFLAGS) +GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) +GDCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) ++GM2FLAGS = $(filter-out -Wformat-security,$(CFLAGS)) # Pass additional PGO and LTO compiler options to the PGO build. BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS) diff --git a/gcc12-d-shared-libphobos.patch b/gcc13-d-shared-libphobos.patch similarity index 100% rename from gcc12-d-shared-libphobos.patch rename to gcc13-d-shared-libphobos.patch diff --git a/gcc12-fortran-fdec-duplicates.patch b/gcc13-fortran-fdec-duplicates.patch similarity index 100% rename from gcc12-fortran-fdec-duplicates.patch rename to gcc13-fortran-fdec-duplicates.patch diff --git a/gcc12-fortran-fdec-non-logical-if.patch b/gcc13-fortran-fdec-non-logical-if.patch similarity index 100% rename from gcc12-fortran-fdec-non-logical-if.patch rename to gcc13-fortran-fdec-non-logical-if.patch diff --git a/gcc12-fortran-fdec-override-kind.patch b/gcc13-fortran-fdec-override-kind.patch similarity index 100% rename from gcc12-fortran-fdec-override-kind.patch rename to gcc13-fortran-fdec-override-kind.patch diff --git a/gcc12-fortran-flogical-as-integer.patch b/gcc13-fortran-flogical-as-integer.patch similarity index 100% rename from gcc12-fortran-flogical-as-integer.patch rename to gcc13-fortran-flogical-as-integer.patch diff --git a/gcc12-hack.patch b/gcc13-hack.patch similarity index 100% rename from gcc12-hack.patch rename to gcc13-hack.patch diff --git a/gcc12-isl-dl.patch b/gcc13-isl-dl.patch similarity index 99% rename from gcc12-isl-dl.patch rename to gcc13-isl-dl.patch index 824288b..20dd8bf 100644 --- a/gcc12-isl-dl.patch +++ b/gcc13-isl-dl.patch @@ -629,7 +629,7 @@ --- gcc/graphite.cc.jj 2015-11-04 14:15:32.000000000 +0100 +++ gcc/graphite.cc 2015-11-04 14:56:02.645536409 +0100 @@ -60,6 +60,35 @@ along with GCC; see the file COPYING3. - #include "tree-into-ssa.h" + #include "tree-ssa-propagate.h" #include "graphite.h" +__typeof (isl_pointers__) isl_pointers__; @@ -664,7 +664,7 @@ /* Print global statistics to FILE. */ static void -@@ -365,6 +394,15 @@ graphite_transform_loops (void) +@@ -424,6 +453,15 @@ graphite_transform_loops (void) if (parallelized_function_p (cfun->decl)) return; @@ -680,7 +680,7 @@ calculate_dominance_info (CDI_DOMINATORS); /* We rely on post-dominators during merging of SESE regions so those -@@ -455,6 +493,14 @@ graphite_transform_loops (void) +@@ -519,6 +557,14 @@ graphite_transform_loops (void) } } diff --git a/gcc12-isl-dl2.patch b/gcc13-isl-dl2.patch similarity index 100% rename from gcc12-isl-dl2.patch rename to gcc13-isl-dl2.patch diff --git a/gcc12-libgomp-omp_h-multilib.patch b/gcc13-libgomp-omp_h-multilib.patch similarity index 100% rename from gcc12-libgomp-omp_h-multilib.patch rename to gcc13-libgomp-omp_h-multilib.patch diff --git a/gcc12-libstdc++-docs.patch b/gcc13-libstdc++-docs.patch similarity index 100% rename from gcc12-libstdc++-docs.patch rename to gcc13-libstdc++-docs.patch diff --git a/gcc12-libtool-no-rpath.patch b/gcc13-libtool-no-rpath.patch similarity index 100% rename from gcc12-libtool-no-rpath.patch rename to gcc13-libtool-no-rpath.patch diff --git a/gcc12-no-add-needed.patch b/gcc13-no-add-needed.patch similarity index 100% rename from gcc12-no-add-needed.patch rename to gcc13-no-add-needed.patch diff --git a/gcc13-pr107608.patch b/gcc13-pr107608.patch new file mode 100644 index 0000000..305b260 --- /dev/null +++ b/gcc13-pr107608.patch @@ -0,0 +1,47 @@ +2023-01-15 Aldy Hernandez + + PR tree-optimization/107608 + * range-op-float.cc (range_operator_float::fold_range): Avoid + folding into INF when flag_trapping_math. + * value-range.h (frange::known_isinf): Return false for possible NANs. + +--- gcc/range-op-float.cc ++++ gcc/range-op-float.cc +@@ -91,6 +91,27 @@ range_operator_float::fold_range (frange &r, tree type, + else + r.clear_nan (); + ++ // If the result has overflowed and flag_trapping_math, folding this ++ // operation could elide an overflow or division by zero exception. ++ // Avoid returning a singleton +-INF, to keep the propagators (DOM ++ // and substitute_and_fold_engine) from folding. See PR107608. ++ if (flag_trapping_math ++ && MODE_HAS_INFINITIES (TYPE_MODE (type)) ++ && r.known_isinf () && !op1.known_isinf () && !op2.known_isinf ()) ++ { ++ REAL_VALUE_TYPE inf = r.lower_bound (); ++ if (real_isneg (&inf)) ++ { ++ REAL_VALUE_TYPE min = real_min_representable (type); ++ r.set (type, inf, min); ++ } ++ else ++ { ++ REAL_VALUE_TYPE max = real_max_representable (type); ++ r.set (type, max, inf); ++ } ++ } ++ + return true; + } + +--- gcc/value-range.h ++++ gcc/value-range.h +@@ -1300,6 +1300,7 @@ inline bool + frange::known_isinf () const + { + return (m_kind == VR_RANGE ++ && !maybe_isnan () + && real_identical (&m_min, &m_max) + && real_isinf (&m_min)); + } diff --git a/gcc13-pr107678.patch b/gcc13-pr107678.patch new file mode 100644 index 0000000..3cf29ac --- /dev/null +++ b/gcc13-pr107678.patch @@ -0,0 +1,113 @@ +A recent change only initializes the regs.how[] during Dwarf unwinding +which resulted in an uninitialized offset used in return address signing +and random failures during unwinding. The fix is to encode the return +address signing state in REG_UNSAVED and REG_UNDEFINED. + +2023-01-10 Wilco Dijkstra + + PR target/107678 + * unwind-dw2.c (RA_SIGNED_BIT): Remove. + * unwind-dw2-execute_cfa.h: Use REG_UNSAVED/UNDEFINED + to encode return address signing state. + * config/aarch64/aarch64-unwind.h (aarch64_demangle_return_addr) + Check current return address signing state. + (aarch64_frob_update_contex): Remove. + +--- libgcc/config/aarch64/aarch64-unwind.h ++++ libgcc/config/aarch64/aarch64-unwind.h +@@ -29,8 +29,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + + #define MD_DEMANGLE_RETURN_ADDR(context, fs, addr) \ + aarch64_demangle_return_addr (context, fs, addr) +-#define MD_FROB_UPDATE_CONTEXT(context, fs) \ +- aarch64_frob_update_context (context, fs) + + static inline int + aarch64_cie_signed_with_b_key (struct _Unwind_Context *context) +@@ -55,42 +53,27 @@ aarch64_cie_signed_with_b_key (struct _Unwind_Context *context) + + static inline void * + aarch64_demangle_return_addr (struct _Unwind_Context *context, +- _Unwind_FrameState *fs ATTRIBUTE_UNUSED, ++ _Unwind_FrameState *fs, + _Unwind_Word addr_word) + { + void *addr = (void *)addr_word; +- if (context->flags & RA_SIGNED_BIT) ++ const int reg = DWARF_REGNUM_AARCH64_RA_STATE; ++ ++ if (fs->regs.how[reg] == REG_UNSAVED) ++ return addr; ++ ++ /* Return-address signing state is toggled by DW_CFA_GNU_window_save (where ++ REG_UNDEFINED means enabled), or set by a DW_CFA_expression. */ ++ if (fs->regs.how[reg] == REG_UNDEFINED ++ || (_Unwind_GetGR (context, reg) & 0x1) != 0) + { + _Unwind_Word salt = (_Unwind_Word) context->cfa; + if (aarch64_cie_signed_with_b_key (context) != 0) + return __builtin_aarch64_autib1716 (addr, salt); + return __builtin_aarch64_autia1716 (addr, salt); + } +- else +- return addr; +-} +- +-/* Do AArch64 private initialization on CONTEXT based on frame info FS. Mark +- CONTEXT as return address signed if bit 0 of DWARF_REGNUM_AARCH64_RA_STATE is +- set. */ +- +-static inline void +-aarch64_frob_update_context (struct _Unwind_Context *context, +- _Unwind_FrameState *fs) +-{ +- const int reg = DWARF_REGNUM_AARCH64_RA_STATE; +- int ra_signed; +- if (fs->regs.how[reg] == REG_UNSAVED) +- ra_signed = fs->regs.reg[reg].loc.offset & 0x1; +- else +- ra_signed = _Unwind_GetGR (context, reg) & 0x1; +- if (ra_signed) +- /* The flag is used for re-authenticating EH handler's address. */ +- context->flags |= RA_SIGNED_BIT; +- else +- context->flags &= ~RA_SIGNED_BIT; + +- return; ++ return addr; + } + + #endif /* defined AARCH64_UNWIND_H && defined __ILP32__ */ +--- libgcc/unwind-dw2.c ++++ libgcc/unwind-dw2.c +@@ -137,9 +137,6 @@ struct _Unwind_Context + #define SIGNAL_FRAME_BIT ((~(_Unwind_Word) 0 >> 1) + 1) + /* Context which has version/args_size/by_value fields. */ + #define EXTENDED_CONTEXT_BIT ((~(_Unwind_Word) 0 >> 2) + 1) +- /* Bit reserved on AArch64, return address has been signed with A or B +- key. */ +-#define RA_SIGNED_BIT ((~(_Unwind_Word) 0 >> 3) + 1) + _Unwind_Word flags; + /* 0 for now, can be increased when further fields are added to + struct _Unwind_Context. */ +--- libgcc/unwind-dw2-execute_cfa.h 2023-01-02 17:53:56.003021412 +0100 ++++ libgcc/unwind-dw2-execute_cfa.h 2023-01-12 19:52:05.456327742 +0100 +@@ -278,10 +278,15 @@ + case DW_CFA_GNU_window_save: + #if defined (__aarch64__) && !defined (__ILP32__) + /* This CFA is multiplexed with Sparc. On AArch64 it's used to toggle +- return address signing status. */ ++ return address signing status. The REG_UNDEFINED/UNSAVED states ++ mean RA signing is enabled/disabled. */ + reg = DWARF_REGNUM_AARCH64_RA_STATE; +- gcc_assert (fs->regs.how[reg] == REG_UNSAVED); +- fs->regs.reg[reg].loc.offset ^= 1; ++ gcc_assert (fs->regs.how[reg] == REG_UNSAVED ++ || fs->regs.how[reg] == REG_UNDEFINED); ++ if (fs->regs.how[reg] == REG_UNSAVED) ++ fs->regs.how[reg] = REG_UNDEFINED; ++ else ++ fs->regs.how[reg] = REG_UNSAVED; + #else + /* ??? Hardcoded for SPARC register window configuration. */ + if (__LIBGCC_DWARF_FRAME_REGISTERS__ >= 32) diff --git a/gcc13-pr108411.patch b/gcc13-pr108411.patch new file mode 100644 index 0000000..2c51481 --- /dev/null +++ b/gcc13-pr108411.patch @@ -0,0 +1,14 @@ +PR108411 workaround + +--- gcc/config/aarch64/aarch64.cc 2023-01-15 13:20:00.569241815 +0100 ++++ gcc/config/aarch64/aarch64.cc 2023-01-15 13:30:05.061513817 +0100 +@@ -7707,8 +7707,7 @@ aarch64_layout_arg (cumulative_args_t pc + unsigned int alignment + = aarch64_function_arg_alignment (mode, type, &abi_break, + &abi_break_packed); +- gcc_assert (alignment <= 16 * BITS_PER_UNIT +- && (!alignment || abi_break < alignment) ++ gcc_assert ((!alignment || abi_break < alignment) + && (!abi_break_packed || alignment < abi_break_packed)); + + pcum->aapcs_arg_processed = true; diff --git a/gcc12-rh1574936.patch b/gcc13-rh1574936.patch similarity index 100% rename from gcc12-rh1574936.patch rename to gcc13-rh1574936.patch diff --git a/gcc12-sparc-config-detection.patch b/gcc13-sparc-config-detection.patch similarity index 77% rename from gcc12-sparc-config-detection.patch rename to gcc13-sparc-config-detection.patch index bb06b35..bbe8ec3 100644 --- a/gcc12-sparc-config-detection.patch +++ b/gcc13-sparc-config-detection.patch @@ -1,21 +1,21 @@ --- gcc/config.gcc.jj 2008-04-24 15:42:46.000000000 -0500 +++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500 -@@ -2790,7 +2790,7 @@ sparc-*-rtems*) - tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h" +@@ -3330,7 +3330,7 @@ sparc-*-rtems*) + tm_file="${tm_file} elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h" tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems" ;; -sparc-*-linux*) +sparc-*-linux* | sparcv9-*-linux*) - tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h" + tm_file="${tm_file} elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h" extra_options="${extra_options} sparc/long-double-switch.opt" case ${target} in -@@ -2844,7 +2844,7 @@ sparc64-*-rtems*) +@@ -3384,7 +3384,7 @@ sparc64-*-rtems*) extra_options="${extra_options}" tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64" ;; -sparc64-*-linux*) +sparc64*-*-linux*) - tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h" + tm_file="sparc/biarch64.h ${tm_file} elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h" extra_options="${extra_options} sparc/long-double-switch.opt" tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64" --- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500 diff --git a/isl-rh2155127.patch b/isl-rh2155127.patch new file mode 100644 index 0000000..092bddb --- /dev/null +++ b/isl-rh2155127.patch @@ -0,0 +1,85 @@ +From: Sven Verdoolaege +Date: Mon, 6 Jun 2022 12:56:02 +0000 (+0200) +Subject: update m4/ax_prog_cc_for_build.m4 +X-Git-Tag: isl-0.25~11 +X-Git-Url: https://repo.or.cz/isl.git/commitdiff_plain/b4dcdfadc29a6c9f410a72f345f3f32725b1d38b + +update m4/ax_prog_cc_for_build.m4 + +In particular, update to the latest version from the autoconf archive, +but preserve the changes from isl-0.22.1-358-gcd42abdf2 +(m4/ax_prog_cc_for_build.m4: do not override host compiler dependency style, +Tue Jun 9 10:54:10 2020 +0200). + +Signed-off-by: Sven Verdoolaege + +--- isl-0.24/m4/ax_prog_cc_for_build.m4.jj 2021-03-02 12:07:09.000000000 +0100 ++++ isl-0.24/m4/ax_prog_cc_for_build.m4 2022-12-20 18:11:18.855777817 +0100 +@@ -32,7 +32,7 @@ + # and this notice are preserved. This file is offered as-is, without any + # warranty. + +-#serial 18 ++#serial 21 + + AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD]) + AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl +@@ -44,6 +44,8 @@ dnl Use the standard macros, but make th + dnl + pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl + pushdef([ac_cv_prog_cc_c89], ac_cv_build_prog_cc_c89)dnl ++pushdef([ac_cv_prog_cc_c99], ac_cv_build_prog_cc_c99)dnl ++pushdef([ac_cv_prog_cc_c11], ac_cv_build_prog_cc_c11)dnl + pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl + pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl + pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl +@@ -86,7 +88,21 @@ AS_IF([test -n "$build"], [ac_build + [test -n "$build_alias"],[ac_build_tool_prefix="$build_alias-"]) + + AC_LANG_PUSH([C]) ++ ++dnl The pushdef([ac_cv_c_compiler_gnu], ...) currently does not cover ++dnl the use of this variable in _AC_LANG_COMPILER_GNU called by ++dnl AC_PROG_CC. Unset this cache variable temporarily as a workaround. ++was_set_c_compiler_gnu=${[ac_cv_c_compiler_gnu]+y} ++AS_IF([test ${was_set_c_compiler_gnu}], ++ [saved_c_compiler_gnu=$[ac_cv_c_compiler_gnu] ++ AS_UNSET([[ac_cv_c_compiler_gnu]])]) ++ + AC_PROG_CC ++ ++dnl Restore ac_cv_c_compiler_gnu ++AS_IF([test ${was_set_c_compiler_gnu}], ++ [[ac_cv_c_compiler_gnu]=$[saved_c_compiler_gnu]]) ++ + _AC_COMPILER_EXEEXT + _AC_COMPILER_OBJEXT + AC_PROG_CPP +--- isl-0.24/configure.jj 2021-04-26 11:13:19.000000000 +0200 ++++ isl-0.24/configure 2022-12-20 18:11:36.882518568 +0100 +@@ -5002,6 +4990,13 @@ ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR + ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_build_c_compiler_gnu + ++ ++was_set_c_compiler_gnu=${ac_cv_c_compiler_gnu+y} ++if test ${was_set_c_compiler_gnu}; then : ++ saved_c_compiler_gnu=$ac_cv_c_compiler_gnu ++ { ac_cv_c_compiler_gnu=; unset ac_cv_c_compiler_gnu;} ++fi ++ + ac_ext=c + ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' + ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' +@@ -5728,6 +5723,11 @@ else + fi + + ++ ++if test ${was_set_c_compiler_gnu}; then : ++ ac_cv_c_compiler_gnu=$saved_c_compiler_gnu ++fi ++ + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + diff --git a/sources b/sources index 4f41efa..56d6327 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-12.2.1-20221121.tar.xz) = 6fef1438e77d8b7e7aeddea6d2d6a82c37d2e93f65ad9007f04206e1a368dd70597cef01188de4ee9bbfe1811a129303ce10b49cb9758a2b44abe4f0312d073a +SHA512 (gcc-13.0.0-20230115.tar.xz) = f347e7b91a078e37842612be601f28c68249e4300ee122fbcee8a0a8c15171d51507a4913640135cca07e47f979163acdfd1a4b7cd06a21966663986aee95a29 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-a8526cb52bedabd4d6ba4b227a5185627f871aa1.tar.xz) = b099246fe4a5d0a372cdaee5da49083df5b2f4440a4e83961600cdf22d37da50c99ce9ae46b769f188a67034ee038cf863260988fc9d594e8e5fb3905a381dec SHA512 (nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz) = 91690321bf96460c3b3e229199a6f752ed1c27c6933d4345dc7e237dc068f604ad211bb3a0373e14d4f332bee05b6227d6933e14e0b475ffdfea8b511ab735e6 diff --git a/update-gcc.sh b/update-gcc.sh index d34d6ce..66e94c6 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -3,5 +3,5 @@ git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 d=`date --iso | sed 's/-//g'` -git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-12.2.1-$d/ $1 | xz -9e > gcc-12.2.1-$d.tar.xz +git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-13.0.0-$d/ $1 | xz -9e > gcc-13.0.0-$d.tar.xz rm -rf gcc-dir.tmp From dd925156932d4af9b7ad5358ddf640b79191b69d Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 15 Jan 2023 13:52:46 +0100 Subject: [PATCH 131/293] 13.0.0-0.9 --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index a02dee0..4d59191 100644 --- a/.gitignore +++ b/.gitignore @@ -80,3 +80,8 @@ /newlib-cygwin-a8526cb52bedabd4d6ba4b227a5185627f871aa1.tar.xz /nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz /gcc-12.2.1-20221121.tar.xz +/gcc-13.0.0-20221219.tar.xz +/gcc-13.0.0-20230102.tar.xz +/gcc-13.0.0-20230106.tar.xz +/gcc-13.0.0-20230112.tar.xz +/gcc-13.0.0-20230115.tar.xz From 3dab9de8f0c61a79931f37f5484a69e8e9aa029c Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Mon, 16 Jan 2023 21:49:51 +0100 Subject: [PATCH 132/293] Adapt to new way of redhat-rpm-config setting fortify flags --- gcc.spec | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 64130fc..693e51c 100644 --- a/gcc.spec +++ b/gcc.spec @@ -920,7 +920,9 @@ export CONFIG_SITE=NONE CC=gcc CXX=g++ -OPT_FLAGS=`echo %{optflags}|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[123]//g'` +OPT_FLAGS="%{optflags}" +OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=[123]//g'` +OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[123]//g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/\(-Wp,\)\?-U_FORTIFY_SOURCE//g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-flto=auto//g;s/-flto//g;s/-ffat-lto-objects//g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'` From ec851df6675e1360c24c6a3efc9756c7f60e8c05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Tue, 17 Jan 2023 10:20:15 +0100 Subject: [PATCH 133/293] move the baseline arch to z13 for s390x in F-38+ https://fedoraproject.org/wiki/Changes/z13BaselineForIBMZ --- gcc.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gcc.spec b/gcc.spec index 693e51c..8a66d53 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1143,7 +1143,11 @@ CONFIGURE_OPTS="\ %endif %else %if 0%{?fedora} >= 26 +%if 0%{?fedora} >= 38 + --with-arch=z13 --with-tune=z14 \ +%else --with-arch=zEC12 --with-tune=z13 \ +%endif %else --with-arch=z9-109 --with-tune=z10 \ %endif From 0d926ffb44e39c12baf68ef3e8c26612c44a877b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Tue, 17 Jan 2023 10:31:20 +0100 Subject: [PATCH 134/293] drop the ancient defaults for s390x --- gcc.spec | 4 ---- 1 file changed, 4 deletions(-) diff --git a/gcc.spec b/gcc.spec index 8a66d53..130f4a8 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1142,15 +1142,11 @@ CONFIGURE_OPTS="\ --with-arch=z196 --with-tune=zEC12 \ %endif %else -%if 0%{?fedora} >= 26 %if 0%{?fedora} >= 38 --with-arch=z13 --with-tune=z14 \ %else --with-arch=zEC12 --with-tune=z13 \ %endif -%else - --with-arch=z9-109 --with-tune=z10 \ -%endif %endif --enable-decimal-float \ %endif From d4299b940b4fcf56e42f3b172a961649f8e00382 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 17 Jan 2023 11:02:16 +0100 Subject: [PATCH 135/293] Various small tweaks. --- gcc.spec | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gcc.spec b/gcc.spec index 130f4a8..7d5a815 100644 --- a/gcc.spec +++ b/gcc.spec @@ -380,6 +380,7 @@ including templates and exception handling. Summary: GNU Standard C++ Library Autoreq: true Requires: glibc >= 2.10.90-7 +BuildRequires: tzdata >= 2017c Requires: tzdata >= 2017c %description -n libstdc++ @@ -1095,7 +1096,7 @@ CONFIGURE_OPTS="\ %endif %endif %ifarch ppc64le -%if 0%{?rhel} == 9 +%if 0%{?rhel} >= 9 --with-cpu-32=power9 --with-tune-32=power9 --with-cpu-64=power9 --with-tune-64=power9 \ %else --with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 \ @@ -1130,7 +1131,7 @@ CONFIGURE_OPTS="\ %if 0%{?rhel} >= 7 %if 0%{?rhel} > 7 %if 0%{?rhel} > 8 -%if 0%{?rhel} == 9 +%if 0%{?rhel} >= 9 --with-arch=z14 --with-tune=z15 \ %else --with-arch=z13 --with-tune=arch13 \ @@ -1145,7 +1146,11 @@ CONFIGURE_OPTS="\ %if 0%{?fedora} >= 38 --with-arch=z13 --with-tune=z14 \ %else +%if 0%{?fedora} >= 26 --with-arch=zEC12 --with-tune=z13 \ +%else + --with-arch=z9-109 --with-tune=z10 \ +%endif %endif %endif --enable-decimal-float \ From 311655b816f6039baa85db3c5f42a8adc41ff1ed Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 17 Jan 2023 21:14:10 +0100 Subject: [PATCH 136/293] 13.0.1-0.1 --- .gitignore | 1 + gcc.spec | 18 +++++++++++++----- gcc13-libstdc++-docs.patch | 4 ++-- sources | 2 +- update-gcc.sh | 2 +- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 4d59191..e72a744 100644 --- a/.gitignore +++ b/.gitignore @@ -85,3 +85,4 @@ /gcc-13.0.0-20230106.tar.xz /gcc-13.0.0-20230112.tar.xz /gcc-13.0.0-20230115.tar.xz +/gcc-13.0.1-20230117.tar.xz diff --git a/gcc.spec b/gcc.spec index 7d5a815..e74955f 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,6 +1,6 @@ -%global DATE 20230115 -%global gitrev 7699a0a3101bf1315fb8e350ac718d1f7b3f7816 -%global gcc_version 13.0.0 +%global DATE 20230117 +%global gitrev fedc064ac31b465edcfd22884b94bbdd05312224 +%global gcc_version 13.0.1 %global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.9%{?dist} +Release: %{gcc_release}.1%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -929,7 +929,7 @@ OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-flto=auto//g;s/-flto//g;s/-ffat-lto-object OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mfpmath=sse/-mfpmath=sse -msse2/g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/ -pipe / /g'` -OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-fno-omit-frame-pointer //g;s/-mbackchain //g;s/-mno-omit-leaf-frame-pointer //g'` +OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-fno-omit-frame-pointer//g;s/-mbackchain//g;s/-mno-omit-leaf-frame-pointer//g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-Werror=format-security/-Wformat-security/g'` %ifarch sparc OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mcpu=ultrasparc/-mtune=ultrasparc/g;s/-mcpu=v[78]//g'` @@ -3462,5 +3462,13 @@ end %endif %changelog +* Tue Jan 17 2023 Jakub Jelinek 13.0.1-0.1 +- update from trunk + - PRs c++/105593, fortran/108421, go/108426, ipa/106077, libstdc++/108288, + libstdc++/108413, other/108413, target/55522, target/96795, + target/105980, target/107515, target/108272, tree-optimization/94793, + tree-optimization/106523, tree-optimization/107608 +- don't build ppc64le unwinder with -fno-omit-frame-pointer (#2161595) + * Sun Jan 15 2023 Jakub Jelinek 13.0.0-0.9 - new package diff --git a/gcc13-libstdc++-docs.patch b/gcc13-libstdc++-docs.patch index b6c2d50..5a2fe27 100644 --- a/gcc13-libstdc++-docs.patch +++ b/gcc13-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 12.2.1 ++ Release 13.0.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 12.2.1 release, ++ for the 13.0.1 release, + online for each GCC release and diff --git a/sources b/sources index 56d6327..d8b317a 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.0-20230115.tar.xz) = f347e7b91a078e37842612be601f28c68249e4300ee122fbcee8a0a8c15171d51507a4913640135cca07e47f979163acdfd1a4b7cd06a21966663986aee95a29 +SHA512 (gcc-13.0.1-20230117.tar.xz) = 22bc806162976c843cfeb43d24bb33e7961fedb402ec2c5e3ca2d02b9058825a1b37258b2dd9cfe14de02e5a4a00b2cf32c1e97375fc04265d6215de6a25d611 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-a8526cb52bedabd4d6ba4b227a5185627f871aa1.tar.xz) = b099246fe4a5d0a372cdaee5da49083df5b2f4440a4e83961600cdf22d37da50c99ce9ae46b769f188a67034ee038cf863260988fc9d594e8e5fb3905a381dec SHA512 (nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz) = 91690321bf96460c3b3e229199a6f752ed1c27c6933d4345dc7e237dc068f604ad211bb3a0373e14d4f332bee05b6227d6933e14e0b475ffdfea8b511ab735e6 diff --git a/update-gcc.sh b/update-gcc.sh index 66e94c6..b6c0315 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -3,5 +3,5 @@ git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 d=`date --iso | sed 's/-//g'` -git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-13.0.0-$d/ $1 | xz -9e > gcc-13.0.0-$d.tar.xz +git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-13.0.1-$d/ $1 | xz -9e > gcc-13.0.1-$d.tar.xz rm -rf gcc-dir.tmp From 2e2b76f57af416790e0b37794e9ad0e49d99e2e9 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 17 Jan 2023 21:37:23 +0100 Subject: [PATCH 137/293] 13.0.1-0.1 --- gcc.spec | 8 +++----- gcc13-pr107608.patch | 47 -------------------------------------------- 2 files changed, 3 insertions(+), 52 deletions(-) delete mode 100644 gcc13-pr107608.patch diff --git a/gcc.spec b/gcc.spec index e74955f..23c0c3f 100644 --- a/gcc.spec +++ b/gcc.spec @@ -287,8 +287,7 @@ Patch9: gcc13-Wno-format-security.patch Patch10: gcc13-rh1574936.patch Patch11: gcc13-d-shared-libphobos.patch Patch12: gcc13-pr107678.patch -Patch13: gcc13-pr107608.patch -Patch14: gcc13-pr108411.patch +Patch13: gcc13-pr108411.patch Patch50: isl-rh2155127.patch @@ -864,8 +863,7 @@ so that there cannot be any synchronization problems. %endif %patch11 -p0 -b .d-shared-libphobos~ %patch12 -p0 -b .pr107678~ -%patch13 -p0 -b .pr107608~ -%patch14 -p0 -b .pr108411~ +%patch13 -p0 -b .pr108411~ %patch50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3467,7 +3465,7 @@ end - PRs c++/105593, fortran/108421, go/108426, ipa/106077, libstdc++/108288, libstdc++/108413, other/108413, target/55522, target/96795, target/105980, target/107515, target/108272, tree-optimization/94793, - tree-optimization/106523, tree-optimization/107608 + tree-optimization/106523 - don't build ppc64le unwinder with -fno-omit-frame-pointer (#2161595) * Sun Jan 15 2023 Jakub Jelinek 13.0.0-0.9 diff --git a/gcc13-pr107608.patch b/gcc13-pr107608.patch deleted file mode 100644 index 305b260..0000000 --- a/gcc13-pr107608.patch +++ /dev/null @@ -1,47 +0,0 @@ -2023-01-15 Aldy Hernandez - - PR tree-optimization/107608 - * range-op-float.cc (range_operator_float::fold_range): Avoid - folding into INF when flag_trapping_math. - * value-range.h (frange::known_isinf): Return false for possible NANs. - ---- gcc/range-op-float.cc -+++ gcc/range-op-float.cc -@@ -91,6 +91,27 @@ range_operator_float::fold_range (frange &r, tree type, - else - r.clear_nan (); - -+ // If the result has overflowed and flag_trapping_math, folding this -+ // operation could elide an overflow or division by zero exception. -+ // Avoid returning a singleton +-INF, to keep the propagators (DOM -+ // and substitute_and_fold_engine) from folding. See PR107608. -+ if (flag_trapping_math -+ && MODE_HAS_INFINITIES (TYPE_MODE (type)) -+ && r.known_isinf () && !op1.known_isinf () && !op2.known_isinf ()) -+ { -+ REAL_VALUE_TYPE inf = r.lower_bound (); -+ if (real_isneg (&inf)) -+ { -+ REAL_VALUE_TYPE min = real_min_representable (type); -+ r.set (type, inf, min); -+ } -+ else -+ { -+ REAL_VALUE_TYPE max = real_max_representable (type); -+ r.set (type, max, inf); -+ } -+ } -+ - return true; - } - ---- gcc/value-range.h -+++ gcc/value-range.h -@@ -1300,6 +1300,7 @@ inline bool - frange::known_isinf () const - { - return (m_kind == VR_RANGE -+ && !maybe_isnan () - && real_identical (&m_min, &m_max) - && real_isinf (&m_min)); - } From 0acbf54cf48b4452093460810f417a1233501879 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 19 Jan 2023 04:26:55 +0000 Subject: [PATCH 138/293] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gcc.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 23c0c3f..549fbea 100644 --- a/gcc.spec +++ b/gcc.spec @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.1%{?dist} +Release: %{gcc_release}.1%{?dist}.1 # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3460,6 +3460,9 @@ end %endif %changelog +* Thu Jan 19 2023 Fedora Release Engineering - 13.0.1-0.1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Tue Jan 17 2023 Jakub Jelinek 13.0.1-0.1 - update from trunk - PRs c++/105593, fortran/108421, go/108426, ipa/106077, libstdc++/108288, From d69d615083791c483307d5c3b41923f5307db48b Mon Sep 17 00:00:00 2001 From: Dana Elfassy Date: Thu, 19 Jan 2023 13:22:59 +0200 Subject: [PATCH 139/293] add bash to ./runtest.sh --- .../394271-gcc-optimization-error-for-neg-number-abs/main.fmf | 2 +- .../main.fmf | 2 +- .../main.fmf | 2 +- .../515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf | 2 +- .../main.fmf | 2 +- .../main.fmf | 2 +- .../main.fmf | 2 +- .../main.fmf | 2 +- tests/Regression/unused_parameter_warning/main.fmf | 2 +- tests/Sanity/compile-rpm/main.fmf | 2 +- tests/Sanity/libitm-smoke/main.fmf | 2 +- tests/Sanity/rebuild-binutils/main.fmf | 2 +- tests/Sanity/rebuild-glibc/main.fmf | 2 +- tests/Sanity/test-m32-m64-options/main.fmf | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf index f31d44e..81a2b4a 100644 --- a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf +++ b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf @@ -4,7 +4,7 @@ description: | contact: mcermak@redhat.com component: - gcc -test: ./runtest.sh +test: bash ./runtest.sh path: /tests/Regression/394271-gcc-optimization-error-for-neg-number-abs framework: beakerlib require: diff --git a/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf index 35ff67d..558554d 100644 --- a/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf +++ b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf @@ -7,7 +7,7 @@ description: | contact: mcermak@redhat.com component: - gcc -test: ./runtest.sh +test: bash ./runtest.sh framework: beakerlib require: - gcc diff --git a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf index 752caf6..5f9ce34 100644 --- a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf +++ b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf @@ -15,7 +15,7 @@ description: |+ contact: mcermak@redhat.com component: - gcc -test: ./runtest.sh +test: bash ./runtest.sh path: /tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope framework: beakerlib require: diff --git a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf index 080f24f..8f47b12 100644 --- a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf +++ b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf @@ -11,7 +11,7 @@ description: | contact: mcermak@redhat.com component: - gcc -test: ./runtest.sh +test: bash ./runtest.sh path: /tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin framework: beakerlib require: diff --git a/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf index 6a60b30..f44417a 100644 --- a/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf +++ b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf @@ -10,7 +10,7 @@ description: | contact: Vaclav Kadlcik component: - gcc -test: ./runtest.sh +test: bash ./runtest.sh framework: beakerlib require: - gcc diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf index fc2414e..fac6ddb 100644 --- a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf +++ b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf @@ -5,7 +5,7 @@ description: | contact: Vaclav Kadlcik component: - gcc -test: ./runtest.sh +test: bash ./runtest.sh framework: beakerlib require: - gcc-c++ diff --git a/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf index 5ce67d3..8f8346f 100644 --- a/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf +++ b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf @@ -4,7 +4,7 @@ contact: mcermak@redhat.com component: - gcc - systemtap -test: ./runtest.sh +test: bash ./runtest.sh framework: beakerlib require: - gcc diff --git a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf index 4c38d10..4ad6875 100644 --- a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf +++ b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf @@ -4,7 +4,7 @@ description: '' contact: mcermak@redhat.com component: - gcc -test: ./runtest.sh +test: bash ./runtest.sh path: /tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template framework: beakerlib require: diff --git a/tests/Regression/unused_parameter_warning/main.fmf b/tests/Regression/unused_parameter_warning/main.fmf index 7084e32..b589e98 100644 --- a/tests/Regression/unused_parameter_warning/main.fmf +++ b/tests/Regression/unused_parameter_warning/main.fmf @@ -3,7 +3,7 @@ summary: Check to see if g++ throws unused parameter warnings with standard libr contact: mcermak@redhat.com component: - gcc -test: ./runtest.sh +test: bash ./runtest.sh path: /tests/Regression/unused_parameter_warning framework: beakerlib require: diff --git a/tests/Sanity/compile-rpm/main.fmf b/tests/Sanity/compile-rpm/main.fmf index d6c5faa..4685e4a 100644 --- a/tests/Sanity/compile-rpm/main.fmf +++ b/tests/Sanity/compile-rpm/main.fmf @@ -3,7 +3,7 @@ description: '' contact: mcermak@redhat.com component: - gcc -test: ./runtest.sh +test: bash ./runtest.sh path: /tests/Sanity/compile-rpm framework: beakerlib require: diff --git a/tests/Sanity/libitm-smoke/main.fmf b/tests/Sanity/libitm-smoke/main.fmf index 77c1763..06bf77d 100644 --- a/tests/Sanity/libitm-smoke/main.fmf +++ b/tests/Sanity/libitm-smoke/main.fmf @@ -14,7 +14,7 @@ contact: Michael Petlan component: - gcc - gcc-libraries -test: ./runtest.sh +test: bash ./runtest.sh framework: beakerlib require: - gcc diff --git a/tests/Sanity/rebuild-binutils/main.fmf b/tests/Sanity/rebuild-binutils/main.fmf index 2d7e5d5..8c05e0a 100644 --- a/tests/Sanity/rebuild-binutils/main.fmf +++ b/tests/Sanity/rebuild-binutils/main.fmf @@ -3,7 +3,7 @@ description: '' contact: mcermak@redhat.com component: - gcc -test: ./runtest.sh +test: bash ./runtest.sh path: /tests/Sanity/rebuild-binutils framework: beakerlib require: diff --git a/tests/Sanity/rebuild-glibc/main.fmf b/tests/Sanity/rebuild-glibc/main.fmf index 53eee30..01729a4 100644 --- a/tests/Sanity/rebuild-glibc/main.fmf +++ b/tests/Sanity/rebuild-glibc/main.fmf @@ -4,7 +4,7 @@ summary: Rebuild glibc contact: mcermak@redhat.com component: - gcc -test: ./runtest.sh +test: bash ./runtest.sh path: /tests/Sanity/rebuild-glibc framework: beakerlib require: diff --git a/tests/Sanity/test-m32-m64-options/main.fmf b/tests/Sanity/test-m32-m64-options/main.fmf index 732b996..04472ac 100644 --- a/tests/Sanity/test-m32-m64-options/main.fmf +++ b/tests/Sanity/test-m32-m64-options/main.fmf @@ -3,7 +3,7 @@ description: '' contact: mcermak@redhat.com component: - gcc -test: ./runtest.sh +test: bash ./runtest.sh path: /tests/Sanity/test-m32-m64-options framework: beakerlib require: From dc4418df89d438bd7de3d84aa2c26ec6dcde7ef6 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 28 Jan 2023 00:20:49 +0100 Subject: [PATCH 140/293] 13.0.1-0.2 --- .gitignore | 2 + gcc.spec | 14 ++--- gcc13-pr106746-revert.patch | 63 ++++++++++++++++++++ gcc13-pr107678.patch | 113 ------------------------------------ gcc13-pr108411.patch | 14 ----- sources | 4 +- 6 files changed, 73 insertions(+), 137 deletions(-) create mode 100644 gcc13-pr106746-revert.patch delete mode 100644 gcc13-pr107678.patch delete mode 100644 gcc13-pr108411.patch diff --git a/.gitignore b/.gitignore index e72a744..528b58c 100644 --- a/.gitignore +++ b/.gitignore @@ -86,3 +86,5 @@ /gcc-13.0.0-20230112.tar.xz /gcc-13.0.0-20230115.tar.xz /gcc-13.0.1-20230117.tar.xz +/gcc-13.0.1-20230127.tar.xz +/newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz diff --git a/gcc.spec b/gcc.spec index 23c0c3f..9f44433 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,12 +1,12 @@ -%global DATE 20230117 -%global gitrev fedc064ac31b465edcfd22884b94bbdd05312224 +%global DATE 20230127 +%global gitrev 4faac89a6b542c0d94019eeadc333ef789f37c9d %global gcc_version 13.0.1 %global gcc_major 13 # 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 0 %global nvptx_tools_gitrev 472b6e78b3ba918d727698f79911360b7c808247 -%global newlib_cygwin_gitrev a8526cb52bedabd4d6ba4b227a5185627f871aa1 +%global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409 %global _unpackaged_files_terminate_build 0 %global _performance_build 1 # Hardening slows the compiler way too much. @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.1%{?dist} +Release: %{gcc_release}.2%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -286,8 +286,7 @@ Patch8: gcc13-no-add-needed.patch Patch9: gcc13-Wno-format-security.patch Patch10: gcc13-rh1574936.patch Patch11: gcc13-d-shared-libphobos.patch -Patch12: gcc13-pr107678.patch -Patch13: gcc13-pr108411.patch +Patch12: gcc13-pr106746-revert.patch Patch50: isl-rh2155127.patch @@ -862,8 +861,7 @@ so that there cannot be any synchronization problems. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr107678~ -%patch13 -p0 -b .pr108411~ +%patch12 -p0 -b .pr106746-revert~ %patch50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 diff --git a/gcc13-pr106746-revert.patch b/gcc13-pr106746-revert.patch new file mode 100644 index 0000000..a2549b9 --- /dev/null +++ b/gcc13-pr106746-revert.patch @@ -0,0 +1,63 @@ +Revert: +[PR106746] drop cselib addr lookup in debug insn mem + +The testcase used to get scheduled differently depending on the +presence of debug insns with MEMs. It's not clear to me why those +MEMs affected scheduling, but the cselib pre-canonicalization of the +MEM address is not used at all when analyzing debug insns, so the +memory allocation and lookup are pure waste. Somehow, avoiding that +waste fixes the problem, or makes it go latent. + +2023-01-19 Alexandre Oliva + + PR debug/106746 + * sched-deps.cc (sched_analyze_2): Skip cselib address lookup + within debug insns. + +--- gcc/sched-deps.cc ++++ gcc/sched-deps.cc +@@ -2605,26 +2605,26 @@ sched_analyze_2 (class deps_desc *deps, rtx x, rtx_insn *insn) + + case MEM: + { +- if (!DEBUG_INSN_P (insn)) +- { +- /* Reading memory. */ +- rtx_insn_list *u; +- rtx_insn_list *pending; +- rtx_expr_list *pending_mem; +- rtx t = x; ++ /* Reading memory. */ ++ rtx_insn_list *u; ++ rtx_insn_list *pending; ++ rtx_expr_list *pending_mem; ++ rtx t = x; + +- if (sched_deps_info->use_cselib) +- { +- machine_mode address_mode = get_address_mode (t); +- +- t = shallow_copy_rtx (t); +- cselib_lookup_from_insn (XEXP (t, 0), address_mode, 1, +- GET_MODE (t), insn); +- XEXP (t, 0) +- = cselib_subst_to_values_from_insn (XEXP (t, 0), GET_MODE (t), +- insn); +- } ++ if (sched_deps_info->use_cselib) ++ { ++ machine_mode address_mode = get_address_mode (t); ++ ++ t = shallow_copy_rtx (t); ++ cselib_lookup_from_insn (XEXP (t, 0), address_mode, 1, ++ GET_MODE (t), insn); ++ XEXP (t, 0) ++ = cselib_subst_to_values_from_insn (XEXP (t, 0), GET_MODE (t), ++ insn); ++ } + ++ if (!DEBUG_INSN_P (insn)) ++ { + t = canon_rtx (t); + pending = deps->pending_read_insns; + pending_mem = deps->pending_read_mems; diff --git a/gcc13-pr107678.patch b/gcc13-pr107678.patch deleted file mode 100644 index 3cf29ac..0000000 --- a/gcc13-pr107678.patch +++ /dev/null @@ -1,113 +0,0 @@ -A recent change only initializes the regs.how[] during Dwarf unwinding -which resulted in an uninitialized offset used in return address signing -and random failures during unwinding. The fix is to encode the return -address signing state in REG_UNSAVED and REG_UNDEFINED. - -2023-01-10 Wilco Dijkstra - - PR target/107678 - * unwind-dw2.c (RA_SIGNED_BIT): Remove. - * unwind-dw2-execute_cfa.h: Use REG_UNSAVED/UNDEFINED - to encode return address signing state. - * config/aarch64/aarch64-unwind.h (aarch64_demangle_return_addr) - Check current return address signing state. - (aarch64_frob_update_contex): Remove. - ---- libgcc/config/aarch64/aarch64-unwind.h -+++ libgcc/config/aarch64/aarch64-unwind.h -@@ -29,8 +29,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see - - #define MD_DEMANGLE_RETURN_ADDR(context, fs, addr) \ - aarch64_demangle_return_addr (context, fs, addr) --#define MD_FROB_UPDATE_CONTEXT(context, fs) \ -- aarch64_frob_update_context (context, fs) - - static inline int - aarch64_cie_signed_with_b_key (struct _Unwind_Context *context) -@@ -55,42 +53,27 @@ aarch64_cie_signed_with_b_key (struct _Unwind_Context *context) - - static inline void * - aarch64_demangle_return_addr (struct _Unwind_Context *context, -- _Unwind_FrameState *fs ATTRIBUTE_UNUSED, -+ _Unwind_FrameState *fs, - _Unwind_Word addr_word) - { - void *addr = (void *)addr_word; -- if (context->flags & RA_SIGNED_BIT) -+ const int reg = DWARF_REGNUM_AARCH64_RA_STATE; -+ -+ if (fs->regs.how[reg] == REG_UNSAVED) -+ return addr; -+ -+ /* Return-address signing state is toggled by DW_CFA_GNU_window_save (where -+ REG_UNDEFINED means enabled), or set by a DW_CFA_expression. */ -+ if (fs->regs.how[reg] == REG_UNDEFINED -+ || (_Unwind_GetGR (context, reg) & 0x1) != 0) - { - _Unwind_Word salt = (_Unwind_Word) context->cfa; - if (aarch64_cie_signed_with_b_key (context) != 0) - return __builtin_aarch64_autib1716 (addr, salt); - return __builtin_aarch64_autia1716 (addr, salt); - } -- else -- return addr; --} -- --/* Do AArch64 private initialization on CONTEXT based on frame info FS. Mark -- CONTEXT as return address signed if bit 0 of DWARF_REGNUM_AARCH64_RA_STATE is -- set. */ -- --static inline void --aarch64_frob_update_context (struct _Unwind_Context *context, -- _Unwind_FrameState *fs) --{ -- const int reg = DWARF_REGNUM_AARCH64_RA_STATE; -- int ra_signed; -- if (fs->regs.how[reg] == REG_UNSAVED) -- ra_signed = fs->regs.reg[reg].loc.offset & 0x1; -- else -- ra_signed = _Unwind_GetGR (context, reg) & 0x1; -- if (ra_signed) -- /* The flag is used for re-authenticating EH handler's address. */ -- context->flags |= RA_SIGNED_BIT; -- else -- context->flags &= ~RA_SIGNED_BIT; - -- return; -+ return addr; - } - - #endif /* defined AARCH64_UNWIND_H && defined __ILP32__ */ ---- libgcc/unwind-dw2.c -+++ libgcc/unwind-dw2.c -@@ -137,9 +137,6 @@ struct _Unwind_Context - #define SIGNAL_FRAME_BIT ((~(_Unwind_Word) 0 >> 1) + 1) - /* Context which has version/args_size/by_value fields. */ - #define EXTENDED_CONTEXT_BIT ((~(_Unwind_Word) 0 >> 2) + 1) -- /* Bit reserved on AArch64, return address has been signed with A or B -- key. */ --#define RA_SIGNED_BIT ((~(_Unwind_Word) 0 >> 3) + 1) - _Unwind_Word flags; - /* 0 for now, can be increased when further fields are added to - struct _Unwind_Context. */ ---- libgcc/unwind-dw2-execute_cfa.h 2023-01-02 17:53:56.003021412 +0100 -+++ libgcc/unwind-dw2-execute_cfa.h 2023-01-12 19:52:05.456327742 +0100 -@@ -278,10 +278,15 @@ - case DW_CFA_GNU_window_save: - #if defined (__aarch64__) && !defined (__ILP32__) - /* This CFA is multiplexed with Sparc. On AArch64 it's used to toggle -- return address signing status. */ -+ return address signing status. The REG_UNDEFINED/UNSAVED states -+ mean RA signing is enabled/disabled. */ - reg = DWARF_REGNUM_AARCH64_RA_STATE; -- gcc_assert (fs->regs.how[reg] == REG_UNSAVED); -- fs->regs.reg[reg].loc.offset ^= 1; -+ gcc_assert (fs->regs.how[reg] == REG_UNSAVED -+ || fs->regs.how[reg] == REG_UNDEFINED); -+ if (fs->regs.how[reg] == REG_UNSAVED) -+ fs->regs.how[reg] = REG_UNDEFINED; -+ else -+ fs->regs.how[reg] = REG_UNSAVED; - #else - /* ??? Hardcoded for SPARC register window configuration. */ - if (__LIBGCC_DWARF_FRAME_REGISTERS__ >= 32) diff --git a/gcc13-pr108411.patch b/gcc13-pr108411.patch deleted file mode 100644 index 2c51481..0000000 --- a/gcc13-pr108411.patch +++ /dev/null @@ -1,14 +0,0 @@ -PR108411 workaround - ---- gcc/config/aarch64/aarch64.cc 2023-01-15 13:20:00.569241815 +0100 -+++ gcc/config/aarch64/aarch64.cc 2023-01-15 13:30:05.061513817 +0100 -@@ -7707,8 +7707,7 @@ aarch64_layout_arg (cumulative_args_t pc - unsigned int alignment - = aarch64_function_arg_alignment (mode, type, &abi_break, - &abi_break_packed); -- gcc_assert (alignment <= 16 * BITS_PER_UNIT -- && (!alignment || abi_break < alignment) -+ gcc_assert ((!alignment || abi_break < alignment) - && (!abi_break_packed || alignment < abi_break_packed)); - - pcum->aapcs_arg_processed = true; diff --git a/sources b/sources index d8b317a..db9c9b6 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.1-20230117.tar.xz) = 22bc806162976c843cfeb43d24bb33e7961fedb402ec2c5e3ca2d02b9058825a1b37258b2dd9cfe14de02e5a4a00b2cf32c1e97375fc04265d6215de6a25d611 +SHA512 (gcc-13.0.1-20230127.tar.xz) = 437494fad0d688d8c81d1bc6827bb139894fc74af4ca2d2a71dc7332304a988c4a358af38ffc15ab7c19fd5172398d00d6447301f560517d03a5367967694906 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 -SHA512 (newlib-cygwin-a8526cb52bedabd4d6ba4b227a5185627f871aa1.tar.xz) = b099246fe4a5d0a372cdaee5da49083df5b2f4440a4e83961600cdf22d37da50c99ce9ae46b769f188a67034ee038cf863260988fc9d594e8e5fb3905a381dec +SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz) = 91690321bf96460c3b3e229199a6f752ed1c27c6933d4345dc7e237dc068f604ad211bb3a0373e14d4f332bee05b6227d6933e14e0b475ffdfea8b511ab735e6 From 6f673bac4729e639b2ddd62abd325edc8eb130dd Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 8 Feb 2023 15:30:40 +0100 Subject: [PATCH 141/293] 13.0.1-0.3 --- .gitignore | 1 + gcc.spec | 39 ++++++++++++++++--- gcc13-pr106746-revert.patch | 63 ------------------------------- gcc13-pr108316.patch | 66 +++++++++++++++++++++++++++++++++ gcc13-pr108692.patch | 74 +++++++++++++++++++++++++++++++++++++ sources | 2 +- 6 files changed, 176 insertions(+), 69 deletions(-) delete mode 100644 gcc13-pr106746-revert.patch create mode 100644 gcc13-pr108316.patch create mode 100644 gcc13-pr108692.patch diff --git a/.gitignore b/.gitignore index 528b58c..45a5487 100644 --- a/.gitignore +++ b/.gitignore @@ -88,3 +88,4 @@ /gcc-13.0.1-20230117.tar.xz /gcc-13.0.1-20230127.tar.xz /newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz +/gcc-13.0.1-20230208.tar.xz diff --git a/gcc.spec b/gcc.spec index 1df7d2b..b074033 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20230127 -%global gitrev 4faac89a6b542c0d94019eeadc333ef789f37c9d +%global DATE 20230208 +%global gitrev 88db57a1779f3c620653a2a791e54301645befbf %global gcc_version 13.0.1 %global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.2%{?dist} +Release: %{gcc_release}.3%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -286,7 +286,8 @@ Patch8: gcc13-no-add-needed.patch Patch9: gcc13-Wno-format-security.patch Patch10: gcc13-rh1574936.patch Patch11: gcc13-d-shared-libphobos.patch -Patch12: gcc13-pr106746-revert.patch +Patch12: gcc13-pr108692.patch +Patch13: gcc13-pr108316.patch Patch50: isl-rh2155127.patch @@ -457,9 +458,11 @@ programs with the GNU Compiler Collection. %package -n libgfortran Summary: Fortran runtime Autoreq: true +%if 0%{?fedora} < 28 && 0%{?rhel} < 8 %if %{build_libquadmath} Requires: libquadmath = %{version}-%{release} %endif +%endif %description -n libgfortran This package contains Fortran shared library which is needed to run @@ -861,7 +864,8 @@ so that there cannot be any synchronization problems. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr106746-revert~ +%patch12 -p0 -b .pr108692~ +%patch13 -p0 -b .pr108316~ %patch50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3458,6 +3462,31 @@ end %endif %changelog +* Wed Feb 8 2023 Jakub Jelinek 13.0.1-0.3 +- update from trunk + - PRs analyzer/108616, analyzer/108633, analyzer/108661, c++/101071, + c++/102870, c++/107461, c++/107593, c++/107755, c++/108158, + c++/108559, c++/108579, c++/108597, c++/108607, c++/96745, c/108150, + c/108192, debug/106746, debug/108573, driver/108572, fortran/103506, + fortran/108450, fortran/108451, fortran/108453, fortran/108527, + fortran/108592, fortran/108609, fortran/95107, ipa/107300, ipa/108384, + ipa/108509, ipa/108511, libstdc++/108636, libstdc++/108672, + middle-end/108435, middle-end/108500, middle-end/108625, + modula2/107234, modula2/108135, modula2/108462, modula2/108551, + modula2/108612, rtl-optimization/108086, rtl-optimization/108463, + rtl-optimization/108508, rtl-optimization/108596, sanitizer/108106, + target/104921, target/107674, target/108443, target/108484, + target/108589, target/108599, testsuite/108604, testsuite/108632, + tree-optimization/26854, tree-optimization/106433, + tree-optimization/106923, tree-optimization/107570, + tree-optimization/108356, tree-optimization/108359, + tree-optimization/108385, tree-optimization/108574, + tree-optimization/108582, tree-optimization/108601, + tree-optimization/108608, tree-optimization/108639, + tree-optimization/108647, tree-optimization/108655 +- drop libgfortran dependency on libquadmath for F28+ or RHEL8+, gcc-gfortran + still needs to depend on both libquadmath and libquadmath-devel though + * Sat Jan 28 2023 Jakub Jelinek 13.0.1-0.2 - update from trunk - PRs analyzer/108455, analyzer/108507, analyzer/108524, bootstrap/90543, diff --git a/gcc13-pr106746-revert.patch b/gcc13-pr106746-revert.patch deleted file mode 100644 index a2549b9..0000000 --- a/gcc13-pr106746-revert.patch +++ /dev/null @@ -1,63 +0,0 @@ -Revert: -[PR106746] drop cselib addr lookup in debug insn mem - -The testcase used to get scheduled differently depending on the -presence of debug insns with MEMs. It's not clear to me why those -MEMs affected scheduling, but the cselib pre-canonicalization of the -MEM address is not used at all when analyzing debug insns, so the -memory allocation and lookup are pure waste. Somehow, avoiding that -waste fixes the problem, or makes it go latent. - -2023-01-19 Alexandre Oliva - - PR debug/106746 - * sched-deps.cc (sched_analyze_2): Skip cselib address lookup - within debug insns. - ---- gcc/sched-deps.cc -+++ gcc/sched-deps.cc -@@ -2605,26 +2605,26 @@ sched_analyze_2 (class deps_desc *deps, rtx x, rtx_insn *insn) - - case MEM: - { -- if (!DEBUG_INSN_P (insn)) -- { -- /* Reading memory. */ -- rtx_insn_list *u; -- rtx_insn_list *pending; -- rtx_expr_list *pending_mem; -- rtx t = x; -+ /* Reading memory. */ -+ rtx_insn_list *u; -+ rtx_insn_list *pending; -+ rtx_expr_list *pending_mem; -+ rtx t = x; - -- if (sched_deps_info->use_cselib) -- { -- machine_mode address_mode = get_address_mode (t); -- -- t = shallow_copy_rtx (t); -- cselib_lookup_from_insn (XEXP (t, 0), address_mode, 1, -- GET_MODE (t), insn); -- XEXP (t, 0) -- = cselib_subst_to_values_from_insn (XEXP (t, 0), GET_MODE (t), -- insn); -- } -+ if (sched_deps_info->use_cselib) -+ { -+ machine_mode address_mode = get_address_mode (t); -+ -+ t = shallow_copy_rtx (t); -+ cselib_lookup_from_insn (XEXP (t, 0), address_mode, 1, -+ GET_MODE (t), insn); -+ XEXP (t, 0) -+ = cselib_subst_to_values_from_insn (XEXP (t, 0), GET_MODE (t), -+ insn); -+ } - -+ if (!DEBUG_INSN_P (insn)) -+ { - t = canon_rtx (t); - pending = deps->pending_read_insns; - pending_mem = deps->pending_read_mems; diff --git a/gcc13-pr108316.patch b/gcc13-pr108316.patch new file mode 100644 index 0000000..61947b9 --- /dev/null +++ b/gcc13-pr108316.patch @@ -0,0 +1,66 @@ +vect: Check gather/scatter offset types [PR108316] + +The gather/scatter support can over-widen an offset if the target +requires it, but this relies on using a pattern sequence to add +the widening conversion. That failed in the testcase because an +earlier pattern (bool) took priority. + +I think we should allow patterns to be applied to other patterns, +but that's quite an invasive change and isn't suitable for stage 4. +This patch instead punts if the offset type doesn't match the +expected one. + +If we switched to using the SLP representation for everything, +we would probably handle both patterns by rewriting the graph, +which should be much easier. + +gcc/ + PR tree-optimization/108316 + * tree-vect-stmts.cc (get_load_store_type): When using + internal functions for gather/scatter, make sure that the type + of the offset argument is consistent with the offset vector type. + +gcc/testsuite/ + PR tree-optimization/108316 + * gcc.dg/vect/pr108316.c: New test. + +--- gcc/tree-vect-stmts.cc ++++ gcc/tree-vect-stmts.cc +@@ -2474,6 +2474,23 @@ get_load_store_type (vec_info *vinfo, stmt_vec_info stmt_info, + *memory_access_type = VMAT_GATHER_SCATTER; + if (!vect_check_gather_scatter (stmt_info, loop_vinfo, gs_info)) + gcc_unreachable (); ++ /* When using internal functions, we rely on pattern recognition ++ to convert the type of the offset to the type that the target ++ requires, with the result being a call to an internal function. ++ If that failed for some reason (e.g. because another pattern ++ took priority), just handle cases in which the offset already ++ has the right type. */ ++ else if (gs_info->ifn != IFN_LAST ++ && !is_gimple_call (stmt_info->stmt) ++ && !tree_nop_conversion_p (TREE_TYPE (gs_info->offset), ++ TREE_TYPE (gs_info->offset_vectype))) ++ { ++ if (dump_enabled_p ()) ++ dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, ++ "%s offset requires a conversion\n", ++ vls_type == VLS_LOAD ? "gather" : "scatter"); ++ return false; ++ } + else if (!vect_is_simple_use (gs_info->offset, vinfo, + &gs_info->offset_dt, + &gs_info->offset_vectype)) +--- gcc/testsuite/gcc.dg/vect/pr108316.c ++++ gcc/testsuite/gcc.dg/vect/pr108316.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3" } */ ++ ++extern _Bool a[]; ++ ++void ++foo (short i, int b[][64][1]) ++{ ++ for (; i < 64; i += 4) ++ a[i] = b[0][i] != 0; ++} diff --git a/gcc13-pr108692.patch b/gcc13-pr108692.patch new file mode 100644 index 0000000..3ee8aa8 --- /dev/null +++ b/gcc13-pr108692.patch @@ -0,0 +1,74 @@ +2023-02-07 Jakub Jelinek + + PR tree-optimization/108692 + * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is + widened_code which is different from code, don't call + vect_look_through_possible_promotion but instead just check op is + SSA_NAME with integral type for which vect_is_simple_use is true + and call set_op on this_unprom. + + * gcc.dg/pr108692.c: New test. + +--- gcc/tree-vect-patterns.cc.jj 2023-01-02 09:32:45.635949342 +0100 ++++ gcc/tree-vect-patterns.cc 2023-02-07 15:27:33.214608837 +0100 +@@ -601,7 +601,25 @@ vect_widened_op_tree (vec_info *vinfo, s + if (shift_p && i == 1) + return 0; + +- if (!vect_look_through_possible_promotion (vinfo, op, this_unprom)) ++ if (rhs_code != code) ++ { ++ /* If rhs_code is widened_code, don't look through further ++ possible promotions, there is a promotion already embedded ++ in the WIDEN_*_EXPR. */ ++ if (TREE_CODE (op) != SSA_NAME ++ || !INTEGRAL_TYPE_P (TREE_TYPE (op))) ++ return 0; ++ ++ stmt_vec_info def_stmt_info; ++ gimple *def_stmt; ++ vect_def_type dt; ++ if (!vect_is_simple_use (op, vinfo, &dt, &def_stmt_info, ++ &def_stmt)) ++ return 0; ++ this_unprom->set_op (op, dt, NULL); ++ } ++ else if (!vect_look_through_possible_promotion (vinfo, op, ++ this_unprom)) + return 0; + + if (TYPE_PRECISION (this_unprom->type) == TYPE_PRECISION (type)) +--- gcc/testsuite/gcc.dg/pr108692.c.jj 2023-02-07 15:47:20.329076264 +0100 ++++ gcc/testsuite/gcc.dg/pr108692.c 2023-02-07 15:46:15.623031983 +0100 +@@ -0,0 +1,31 @@ ++/* PR tree-optimization/108692 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -ftree-vectorize" } */ ++ ++__attribute__((noipa)) int ++foo (signed char *x, signed char *y, int n) ++{ ++ int i, r = 0; ++ signed char a, b; ++ for (i = 0; i < n; i++) ++ { ++ a = x[i]; ++ b = y[i]; ++ int c = (unsigned char) a - (unsigned char) b; ++ r = r + (c < 0 ? -c : c); ++ } ++ return r; ++} ++ ++int ++main () ++{ ++ signed char x[64] = {}, y[64] = {}; ++ if (__CHAR_BIT__ != 8 || __SIZEOF_INT__ != 4) ++ return 0; ++ x[32] = -128; ++ y[32] = 1; ++ if (foo (x, y, 64) != 127) ++ __builtin_abort (); ++ return 0; ++} diff --git a/sources b/sources index db9c9b6..a5a3045 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.1-20230127.tar.xz) = 437494fad0d688d8c81d1bc6827bb139894fc74af4ca2d2a71dc7332304a988c4a358af38ffc15ab7c19fd5172398d00d6447301f560517d03a5367967694906 +SHA512 (gcc-13.0.1-20230208.tar.xz) = 55a0d2b5ec00fa83c96b4df9fff77d93020aad808682d9c1bd87f7aed8ecc259b044ae800957ff6fa42c8f6e77cbb2f2cd2f83ff824f584de10bdd1caf201f40 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz) = 91690321bf96460c3b3e229199a6f752ed1c27c6933d4345dc7e237dc068f604ad211bb3a0373e14d4f332bee05b6227d6933e14e0b475ffdfea8b511ab735e6 From 5fe996562e026f50f9e9e4dc18af8d7714fd3c59 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 15 Feb 2023 16:51:32 +0100 Subject: [PATCH 142/293] 13.0.1-0.4 --- .gitignore | 1 + gcc.spec | 28 ++++++++++++----- gcc13-pr108316.patch | 66 --------------------------------------- gcc13-pr108692.patch | 74 -------------------------------------------- sources | 2 +- 5 files changed, 23 insertions(+), 148 deletions(-) delete mode 100644 gcc13-pr108316.patch delete mode 100644 gcc13-pr108692.patch diff --git a/.gitignore b/.gitignore index 45a5487..a85ef77 100644 --- a/.gitignore +++ b/.gitignore @@ -89,3 +89,4 @@ /gcc-13.0.1-20230127.tar.xz /newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz /gcc-13.0.1-20230208.tar.xz +/gcc-13.0.1-20230215.tar.xz diff --git a/gcc.spec b/gcc.spec index b074033..14d4dc1 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20230208 -%global gitrev 88db57a1779f3c620653a2a791e54301645befbf +%global DATE 20230215 +%global gitrev 76b508266ac7460db2e4fe9eba298520ae1eda70 %global gcc_version 13.0.1 %global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.3%{?dist} +Release: %{gcc_release}.4%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -286,8 +286,6 @@ Patch8: gcc13-no-add-needed.patch Patch9: gcc13-Wno-format-security.patch Patch10: gcc13-rh1574936.patch Patch11: gcc13-d-shared-libphobos.patch -Patch12: gcc13-pr108692.patch -Patch13: gcc13-pr108316.patch Patch50: isl-rh2155127.patch @@ -864,8 +862,6 @@ so that there cannot be any synchronization problems. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr108692~ -%patch13 -p0 -b .pr108316~ %patch50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3462,6 +3458,24 @@ end %endif %changelog +* Wed Feb 15 2023 Jakub Jelinek 13.0.1-0.4 +- update from trunk + - PRs analyzer/108704, analyzer/108733, analyzer/108745, c++/106675, + c++/107079, c++/108698, d/107469, fortran/69636, fortran/103259, + fortran/103475, fortran/103779, fortran/107424, fortran/108512, + ipa/108605, ipa/108679, libstdc++/103934, middle-end/26854, + middle-end/106080, rtl-optimization/108681, sanitizer/108777, + target/96373, target/100758, target/103109, target/108102, + target/108516, target/108723, target/108738, target/108787, + target/108790, testsuite/106120, tree-optimization/28614, + tree-optimization/96921, tree-optimization/106722, + tree-optimization/107561, tree-optimization/108316, + tree-optimization/108355, tree-optimization/108520, + tree-optimization/108571, tree-optimization/108684, + tree-optimization/108687, tree-optimization/108688, + tree-optimization/108691, tree-optimization/108692, + tree-optimization/108724, tree-optimization/108782 + * Wed Feb 8 2023 Jakub Jelinek 13.0.1-0.3 - update from trunk - PRs analyzer/108616, analyzer/108633, analyzer/108661, c++/101071, diff --git a/gcc13-pr108316.patch b/gcc13-pr108316.patch deleted file mode 100644 index 61947b9..0000000 --- a/gcc13-pr108316.patch +++ /dev/null @@ -1,66 +0,0 @@ -vect: Check gather/scatter offset types [PR108316] - -The gather/scatter support can over-widen an offset if the target -requires it, but this relies on using a pattern sequence to add -the widening conversion. That failed in the testcase because an -earlier pattern (bool) took priority. - -I think we should allow patterns to be applied to other patterns, -but that's quite an invasive change and isn't suitable for stage 4. -This patch instead punts if the offset type doesn't match the -expected one. - -If we switched to using the SLP representation for everything, -we would probably handle both patterns by rewriting the graph, -which should be much easier. - -gcc/ - PR tree-optimization/108316 - * tree-vect-stmts.cc (get_load_store_type): When using - internal functions for gather/scatter, make sure that the type - of the offset argument is consistent with the offset vector type. - -gcc/testsuite/ - PR tree-optimization/108316 - * gcc.dg/vect/pr108316.c: New test. - ---- gcc/tree-vect-stmts.cc -+++ gcc/tree-vect-stmts.cc -@@ -2474,6 +2474,23 @@ get_load_store_type (vec_info *vinfo, stmt_vec_info stmt_info, - *memory_access_type = VMAT_GATHER_SCATTER; - if (!vect_check_gather_scatter (stmt_info, loop_vinfo, gs_info)) - gcc_unreachable (); -+ /* When using internal functions, we rely on pattern recognition -+ to convert the type of the offset to the type that the target -+ requires, with the result being a call to an internal function. -+ If that failed for some reason (e.g. because another pattern -+ took priority), just handle cases in which the offset already -+ has the right type. */ -+ else if (gs_info->ifn != IFN_LAST -+ && !is_gimple_call (stmt_info->stmt) -+ && !tree_nop_conversion_p (TREE_TYPE (gs_info->offset), -+ TREE_TYPE (gs_info->offset_vectype))) -+ { -+ if (dump_enabled_p ()) -+ dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, -+ "%s offset requires a conversion\n", -+ vls_type == VLS_LOAD ? "gather" : "scatter"); -+ return false; -+ } - else if (!vect_is_simple_use (gs_info->offset, vinfo, - &gs_info->offset_dt, - &gs_info->offset_vectype)) ---- gcc/testsuite/gcc.dg/vect/pr108316.c -+++ gcc/testsuite/gcc.dg/vect/pr108316.c -@@ -0,0 +1,11 @@ -+/* { dg-do compile } */ -+/* { dg-options "-O3" } */ -+ -+extern _Bool a[]; -+ -+void -+foo (short i, int b[][64][1]) -+{ -+ for (; i < 64; i += 4) -+ a[i] = b[0][i] != 0; -+} diff --git a/gcc13-pr108692.patch b/gcc13-pr108692.patch deleted file mode 100644 index 3ee8aa8..0000000 --- a/gcc13-pr108692.patch +++ /dev/null @@ -1,74 +0,0 @@ -2023-02-07 Jakub Jelinek - - PR tree-optimization/108692 - * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is - widened_code which is different from code, don't call - vect_look_through_possible_promotion but instead just check op is - SSA_NAME with integral type for which vect_is_simple_use is true - and call set_op on this_unprom. - - * gcc.dg/pr108692.c: New test. - ---- gcc/tree-vect-patterns.cc.jj 2023-01-02 09:32:45.635949342 +0100 -+++ gcc/tree-vect-patterns.cc 2023-02-07 15:27:33.214608837 +0100 -@@ -601,7 +601,25 @@ vect_widened_op_tree (vec_info *vinfo, s - if (shift_p && i == 1) - return 0; - -- if (!vect_look_through_possible_promotion (vinfo, op, this_unprom)) -+ if (rhs_code != code) -+ { -+ /* If rhs_code is widened_code, don't look through further -+ possible promotions, there is a promotion already embedded -+ in the WIDEN_*_EXPR. */ -+ if (TREE_CODE (op) != SSA_NAME -+ || !INTEGRAL_TYPE_P (TREE_TYPE (op))) -+ return 0; -+ -+ stmt_vec_info def_stmt_info; -+ gimple *def_stmt; -+ vect_def_type dt; -+ if (!vect_is_simple_use (op, vinfo, &dt, &def_stmt_info, -+ &def_stmt)) -+ return 0; -+ this_unprom->set_op (op, dt, NULL); -+ } -+ else if (!vect_look_through_possible_promotion (vinfo, op, -+ this_unprom)) - return 0; - - if (TYPE_PRECISION (this_unprom->type) == TYPE_PRECISION (type)) ---- gcc/testsuite/gcc.dg/pr108692.c.jj 2023-02-07 15:47:20.329076264 +0100 -+++ gcc/testsuite/gcc.dg/pr108692.c 2023-02-07 15:46:15.623031983 +0100 -@@ -0,0 +1,31 @@ -+/* PR tree-optimization/108692 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -ftree-vectorize" } */ -+ -+__attribute__((noipa)) int -+foo (signed char *x, signed char *y, int n) -+{ -+ int i, r = 0; -+ signed char a, b; -+ for (i = 0; i < n; i++) -+ { -+ a = x[i]; -+ b = y[i]; -+ int c = (unsigned char) a - (unsigned char) b; -+ r = r + (c < 0 ? -c : c); -+ } -+ return r; -+} -+ -+int -+main () -+{ -+ signed char x[64] = {}, y[64] = {}; -+ if (__CHAR_BIT__ != 8 || __SIZEOF_INT__ != 4) -+ return 0; -+ x[32] = -128; -+ y[32] = 1; -+ if (foo (x, y, 64) != 127) -+ __builtin_abort (); -+ return 0; -+} diff --git a/sources b/sources index a5a3045..b7af964 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.1-20230208.tar.xz) = 55a0d2b5ec00fa83c96b4df9fff77d93020aad808682d9c1bd87f7aed8ecc259b044ae800957ff6fa42c8f6e77cbb2f2cd2f83ff824f584de10bdd1caf201f40 +SHA512 (gcc-13.0.1-20230215.tar.xz) = 630b739424128b17bbde6826164f01fff7a639598881f63c95921168bb35cc7393ceaa63f423bdfb5692ab8ad5a30b99d5681837e05f1b013671373adb2b0b71 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz) = 91690321bf96460c3b3e229199a6f752ed1c27c6933d4345dc7e237dc068f604ad211bb3a0373e14d4f332bee05b6227d6933e14e0b475ffdfea8b511ab735e6 From 95221c62d274b1adb9d4a2d5a227f21ef412e4ad Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Mon, 20 Feb 2023 17:27:58 +0100 Subject: [PATCH 143/293] Please ignore: A testing change --- tests/smoke-test/runtest.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/smoke-test/runtest.sh b/tests/smoke-test/runtest.sh index 78fda72..7b6a4e9 100755 --- a/tests/smoke-test/runtest.sh +++ b/tests/smoke-test/runtest.sh @@ -26,6 +26,8 @@ # # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# A testing change. + # Include Beaker environment . /usr/share/beakerlib/beakerlib.sh || exit 1 From fabc85dc5d9cd4edb3f62e96ae81c2e3ff937eba Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 21 Feb 2023 12:49:29 +0100 Subject: [PATCH 144/293] 13.0.1-0.5 --- .gitignore | 1 + gcc.spec | 22 ++++++++++++++++++---- sources | 2 +- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index a85ef77..f3b5325 100644 --- a/.gitignore +++ b/.gitignore @@ -90,3 +90,4 @@ /newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz /gcc-13.0.1-20230208.tar.xz /gcc-13.0.1-20230215.tar.xz +/gcc-13.0.1-20230221.tar.xz diff --git a/gcc.spec b/gcc.spec index 14d4dc1..7014694 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20230215 -%global gitrev 76b508266ac7460db2e4fe9eba298520ae1eda70 +%global DATE 20230221 +%global gitrev 467eb8130c9dab8ce72a4f6f39437c1ff382a90c %global gcc_version 13.0.1 %global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.4%{?dist} +Release: %{gcc_release}.5%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -993,7 +993,7 @@ sed -i 's|libisl\([^-]\)|libgcc13privateisl\1|g' \ ../../isl-%{isl_version}/configure \ CC=/usr/bin/gcc CXX=/usr/bin/g++ \ CFLAGS="${CFLAGS:-%optflags} $ISL_FLAG_PIC" --prefix=`cd ..; pwd`/isl-install -make %{?_smp_mflags} +make %{?_smp_mflags} CFLAGS="${CFLAGS:-%optflags} $ISL_FLAG_PIC" make install cd ../isl-install/lib rm libgcc13privateisl.so{,.23} @@ -3458,6 +3458,20 @@ end %endif %changelog +* Tue Feb 21 2023 Jakub Jelinek 13.0.1-0.5 +- update from trunk + - PRs analyzer/108664, analyzer/108666, analyzer/108725, analyzer/108806, + c++/52809, c++/53638, c++/87389, c++/89741, c++/92099, c++/97553, + c++/101073, c++/104041, c++/104691, c++/107773, c++/108243, + c++/108829, c/105660, c/108375, fortran/103608, fortran/104554, + libstdc++/108030, target/90458, target/108805, target/108831, + target/108832, target/108862, testsuite/108835, + tree-optimization/108657, tree-optimization/108783, + tree-optimization/108791, tree-optimization/108816, + tree-optimization/108819, tree-optimization/108821, + tree-optimization/108825, tree-optimization/108855, + tree-optimization/108868 + * Wed Feb 15 2023 Jakub Jelinek 13.0.1-0.4 - update from trunk - PRs analyzer/108704, analyzer/108733, analyzer/108745, c++/106675, diff --git a/sources b/sources index b7af964..ca2637a 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.1-20230215.tar.xz) = 630b739424128b17bbde6826164f01fff7a639598881f63c95921168bb35cc7393ceaa63f423bdfb5692ab8ad5a30b99d5681837e05f1b013671373adb2b0b71 +SHA512 (gcc-13.0.1-20230221.tar.xz) = 7ce594542f3ac5acb07f81d3566309299914500409d149d2d157b8a8bf42e7db0ee4dd924f81d961e64afa882809849b207e5c66ae11972b0365dbaa6d03a2db SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz) = 91690321bf96460c3b3e229199a6f752ed1c27c6933d4345dc7e237dc068f604ad211bb3a0373e14d4f332bee05b6227d6933e14e0b475ffdfea8b511ab735e6 From 863c72823c45380073947d0e0d46d76dc8e90eac Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Thu, 23 Feb 2023 18:57:40 +0100 Subject: [PATCH 145/293] CI tests: Setup task for Fedora CI system --- plans/ci/prepare/prepare.fmf | 6 ++++ plans/ci/prepare/prepare.sh | 54 ++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100755 plans/ci/prepare/prepare.fmf create mode 100755 plans/ci/prepare/prepare.sh diff --git a/plans/ci/prepare/prepare.fmf b/plans/ci/prepare/prepare.fmf new file mode 100755 index 0000000..0b8da9f --- /dev/null +++ b/plans/ci/prepare/prepare.fmf @@ -0,0 +1,6 @@ +summary: Setup task +prepare: + script: ./plans/ci/prepare/prepare.sh +require: +- koji +- dnf-utils diff --git a/plans/ci/prepare/prepare.sh b/plans/ci/prepare/prepare.sh new file mode 100755 index 0000000..8ffb6ef --- /dev/null +++ b/plans/ci/prepare/prepare.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# +# Setup task for Fedora CI system. Install the x86_64 GCC build under test +# along with its respective i686 (compat arch) bits needed for the testing. +# KOJI_TASK_ID per https://github.com/fedora-ci/dist-git-pipeline/pull/50 . +# + +set -x + +true "V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V" + +echo "KOJI_TASK_ID=$KOJI_TASK_ID" + +. /etc/os-release + +if [ "$ID" == "fedora" ] && [ "$(arch)" == "x86_64" ]; then + + if [ -z "${KOJI_TASK_ID}" ]; then + echo "Missing koji task ID, skipping ..." + exit 0 + fi + + tmpd=`mktemp -d` + pushd $tmpd + koji download-task $KOJI_TASK_ID --noprogress --arch=src + ls + VR=$(rpm -qp gcc* --queryformat='%{version}-%{release}') + popd + rm -rf $tmpd + + tmpd=`mktemp -d` + pushd $tmpd + koji download-task $KOJI_TASK_ID --noprogress --arch=x86_64 --arch=noarch + rm -f *debuginfo* + ls + dnf -y install *.rpm + popd + rm -rf $tmpd + + tmpd=`mktemp -d` + pushd $tmpd + koji download-task $KOJI_TASK_ID --noprogress --arch=i686 + rm -f *debuginfo* + ls + yum -y install libgcc-$VR* libgfortran-$VR* libgomp-$VR* libitm-$VR* \ + libstdc++-devel-$VR* libstdc++-$VR* libstdc++-static-$VR* + popd + rm -rf $tmpd +else + echo "Not Fedora x86_64, skipping..." +fi + +true "^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^" From 19c5115980bbc7711f86bd49dc397296beacc861 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 4 Mar 2023 19:58:21 +0100 Subject: [PATCH 146/293] 13.0.1-0.6 --- .gitignore | 1 + gcc.spec | 33 ++++++++++++++++++++++++++++++--- sources | 2 +- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index f3b5325..12e7739 100644 --- a/.gitignore +++ b/.gitignore @@ -91,3 +91,4 @@ /gcc-13.0.1-20230208.tar.xz /gcc-13.0.1-20230215.tar.xz /gcc-13.0.1-20230221.tar.xz +/gcc-13.0.1-20230304.tar.xz diff --git a/gcc.spec b/gcc.spec index 7014694..2d2fb42 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20230221 -%global gitrev 467eb8130c9dab8ce72a4f6f39437c1ff382a90c +%global DATE 20230304 +%global gitrev 1ae5227bd538f0ad8e5dbda14bde96d1c1db6f55 %global gcc_version 13.0.1 %global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.5%{?dist} +Release: %{gcc_release}.6%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3458,6 +3458,33 @@ end %endif %changelog +* Sat Mar 4 2023 Jakub Jelinek 13.0.1-0.6 +- update from trunk + - PRs ada/108909, analyzer/107565, analyzer/108830, analyzer/108935, + analyzer/108968, analyzer/109016, c++/100127, c++/105224, c++/105839, + c++/106259, c++/107574, c++/107938, c++/108218, c++/108219, + c++/108550, c++/108606, c++/108702, c++/108848, c++/108934, + c++/108998, c/107465, c/107846, c/108880, c/108986, d/108167, + d/108763, d/108877, d/108945, d/108946, debug/108716, debug/108772, + debug/108967, fortran/96024, fortran/96025, fortran/108621, + fortran/108923, fortran/108924, fortran/108937, jit/107999, + libquadmath/87204, libquadmath/94756, libstdc++/52590, + libstdc++/95989, libstdc++/104852, libstdc++/108846, libstdc++/108856, + libstdc++/108952, middle-end/97956, middle-end/106258, + middle-end/107411, middle-end/108545, middle-end/108546, + middle-end/108854, middle-end/109006, modula2/108261, modula2/108944, + modula2/108956, pch/14940, sanitizer/108834, sanitizer/108894, + target/51534, target/104882, target/108240, target/108876, + target/108881, target/108883, target/108910, target/108919, + target/108922, testsuite/79356, testsuite/91419, testsuite/108899, + testsuite/108942, testsuite/108973, testsuite/108985, + testsuite/108991, translation/108890, tree-optimization/108430, + tree-optimization/108603, tree-optimization/108793, + tree-optimization/108828, tree-optimization/108888, + tree-optimization/108950, tree-optimization/108970, + tree-optimization/108979, tree-optimization/108988, + tree-optimization/109002 + * Tue Feb 21 2023 Jakub Jelinek 13.0.1-0.5 - update from trunk - PRs analyzer/108664, analyzer/108666, analyzer/108725, analyzer/108806, diff --git a/sources b/sources index ca2637a..7b2af4a 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.1-20230221.tar.xz) = 7ce594542f3ac5acb07f81d3566309299914500409d149d2d157b8a8bf42e7db0ee4dd924f81d961e64afa882809849b207e5c66ae11972b0365dbaa6d03a2db +SHA512 (gcc-13.0.1-20230304.tar.xz) = b9b21080f17737a3f9cbb2b6f152dbf538edc1f011859162586ad034fe48437b26b02bb9978f390d37600c3b035650aed7b6adb72605ea74c61d3615d2669ade SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz) = 91690321bf96460c3b3e229199a6f752ed1c27c6933d4345dc7e237dc068f604ad211bb3a0373e14d4f332bee05b6227d6933e14e0b475ffdfea8b511ab735e6 From 75ecbee53ff33ea94234061d0aed2368f683d214 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 10 Mar 2023 22:07:43 +0100 Subject: [PATCH 147/293] 13.0.1-0.7 --- .gitignore | 1 + gcc.spec | 23 ++++++++++++++++++++--- sources | 2 +- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 12e7739..a730ea8 100644 --- a/.gitignore +++ b/.gitignore @@ -92,3 +92,4 @@ /gcc-13.0.1-20230215.tar.xz /gcc-13.0.1-20230221.tar.xz /gcc-13.0.1-20230304.tar.xz +/gcc-13.0.1-20230310.tar.xz diff --git a/gcc.spec b/gcc.spec index 2d2fb42..b1e02e7 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20230304 -%global gitrev 1ae5227bd538f0ad8e5dbda14bde96d1c1db6f55 +%global DATE 20230310 +%global gitrev e521a1b4c34b3e387c764c429f0f8c11361c3279 %global gcc_version 13.0.1 %global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.6%{?dist} +Release: %{gcc_release}.7%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3458,6 +3458,23 @@ end %endif %changelog +* Fri Mar 10 2023 Jakub Jelinek 13.0.1-0.7 +- update from trunk + - PRs ada/108858, ada/108983, analyzer/102671, analyzer/105755, + analyzer/108251, analyzer/108400, analyzer/108475, analyzer/109059, + analyzer/109060, c++/102529, c++/105841, c++/106651, c++/107532, + c++/107558, c++/107939, c++/108099, c++/108542, c++/108566, + c++/108773, c++/108972, c++/109030, c++/109039, c++/109042, c/108079, + driver/108865, fortran/104332, fortran/106856, libgcc/108727, + libgomp/90596, libgomp/109062, libstdc++/107572, libstdc++/108362, + libstdc++/108882, libstdc++/109024, libstdc++/109064, + middle-end/108995, other/108464, plugins/108634, sanitizer/81649, + sanitizer/108060, sanitizer/109050, target/107299, target/107703, + target/107998, target/108185, target/108429, target/108654, + target/109000, testsuite/70150, testsuite/108729, testsuite/108730, + testsuite/108810, testsuite/108813, tree-optimization/108980, + tree-optimization/109008, tree-optimization/109025 + * Sat Mar 4 2023 Jakub Jelinek 13.0.1-0.6 - update from trunk - PRs ada/108909, analyzer/107565, analyzer/108830, analyzer/108935, diff --git a/sources b/sources index 7b2af4a..36a44df 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.1-20230304.tar.xz) = b9b21080f17737a3f9cbb2b6f152dbf538edc1f011859162586ad034fe48437b26b02bb9978f390d37600c3b035650aed7b6adb72605ea74c61d3615d2669ade +SHA512 (gcc-13.0.1-20230310.tar.xz) = 726b4f4b7559ea5237ac278e7cd472c2c14b88625c478aed30236c0c187e6a4d819ec72e022362b195a0d3f5da8f86a2e6c20c9f8bf267da9eaa0a67d3d47903 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz) = 91690321bf96460c3b3e229199a6f752ed1c27c6933d4345dc7e237dc068f604ad211bb3a0373e14d4f332bee05b6227d6933e14e0b475ffdfea8b511ab735e6 From 99a093cb4f64f29953d66fb7b3cfbc0520974298 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 18 Mar 2023 09:37:39 +0100 Subject: [PATCH 148/293] 13.0.1-0.8 --- .gitignore | 1 + gcc.spec | 29 ++++++++++++++++++++++++++--- sources | 2 +- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index a730ea8..e9fb0ca 100644 --- a/.gitignore +++ b/.gitignore @@ -93,3 +93,4 @@ /gcc-13.0.1-20230221.tar.xz /gcc-13.0.1-20230304.tar.xz /gcc-13.0.1-20230310.tar.xz +/gcc-13.0.1-20230318.tar.xz diff --git a/gcc.spec b/gcc.spec index b1e02e7..b21b3f7 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20230310 -%global gitrev e521a1b4c34b3e387c764c429f0f8c11361c3279 +%global DATE 20230318 +%global gitrev 24c7659a6ceb150243ffcbb95401b05e70d3fff8 %global gcc_version 13.0.1 %global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.7%{?dist} +Release: %{gcc_release}.8%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3458,6 +3458,29 @@ end %endif %changelog +* Sat Mar 18 2023 Jakub Jelinek 13.0.1-0.8 +- update from trunk + - PRs analyzer/105906, analyzer/108045, analyzer/109097, c++/58538, + c++/69410, c++/95036, c++/96830, c++/98056, c++/100288, c++/101869, + c++/103871, c++/104107, c++/105406, c++/105809, c++/107128, + c++/107280, c++/107310, c++/108179, c++/108242, c++/108468, + c++/108975, c++/109096, c++/109172, c/109151, d/109108, d/109144, + fortran/37336, fortran/58331, fortran/64290, fortran/67444, + fortran/67471, fortran/69298, fortran/70863, fortran/71798, + fortran/80524, fortran/82996, fortran/84472, fortran/88735, + fortran/91316, fortran/93691, fortran/96122, fortran/103854, + fortran/106576, fortran/106945, ipa/107925, libstdc++/62196, + libstdc++/109111, libstdc++/109165, middle-end/106133, + middle-end/108685, middle-end/109031, modula2/109032, modula2/109089, + modula2/109102, modula2/109103, modula2/109125, other/109086, + preprocessor/67046, rtl-optimization/107762, rtl-optimization/109179, + target/105554, target/108583, target/109092, target/109109, + target/109117, testsuite/109118, testsuite/109129, testsuite/109145, + tree-optimization/106896, tree-optimization/109005, + tree-optimization/109046, tree-optimization/109115, + tree-optimization/109123, tree-optimization/109139, + tree-optimization/109141, web/88860 + * Fri Mar 10 2023 Jakub Jelinek 13.0.1-0.7 - update from trunk - PRs ada/108858, ada/108983, analyzer/102671, analyzer/105755, diff --git a/sources b/sources index 36a44df..f1658e5 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.1-20230310.tar.xz) = 726b4f4b7559ea5237ac278e7cd472c2c14b88625c478aed30236c0c187e6a4d819ec72e022362b195a0d3f5da8f86a2e6c20c9f8bf267da9eaa0a67d3d47903 +SHA512 (gcc-13.0.1-20230318.tar.xz) = 691f0d15e19fd89ca6003f443fe9363f9acbb57920869a51c1ecb4938d225f0c02502a74d6cd224464b68a8f420374e5f6d9685c37ecd936f82a9a1c27b15c79 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz) = 91690321bf96460c3b3e229199a6f752ed1c27c6933d4345dc7e237dc068f604ad211bb3a0373e14d4f332bee05b6227d6933e14e0b475ffdfea8b511ab735e6 From 28a41d7ec1f267a765d87706f3570228a65b5b41 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 21 Mar 2023 20:57:59 +0100 Subject: [PATCH 149/293] 13.0.1-0.9 --- .gitignore | 2 ++ gcc.spec | 19 +++++++++++++---- gcc13-pr109230.patch | 51 ++++++++++++++++++++++++++++++++++++++++++++ sources | 4 ++-- 4 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 gcc13-pr109230.patch diff --git a/.gitignore b/.gitignore index e9fb0ca..70c4e12 100644 --- a/.gitignore +++ b/.gitignore @@ -94,3 +94,5 @@ /gcc-13.0.1-20230304.tar.xz /gcc-13.0.1-20230310.tar.xz /gcc-13.0.1-20230318.tar.xz +/gcc-13.0.1-20230321.tar.xz +/nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz diff --git a/gcc.spec b/gcc.spec index b21b3f7..7f3ade5 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,11 +1,11 @@ -%global DATE 20230318 -%global gitrev 24c7659a6ceb150243ffcbb95401b05e70d3fff8 +%global DATE 20230321 +%global gitrev 631cc7b96752740a3fdfd960b503d64faf02c1b6 %global gcc_version 13.0.1 %global gcc_major 13 # 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 0 -%global nvptx_tools_gitrev 472b6e78b3ba918d727698f79911360b7c808247 +%global nvptx_tools_gitrev 93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b %global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409 %global _unpackaged_files_terminate_build 0 %global _performance_build 1 @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.8%{?dist} +Release: %{gcc_release}.9%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -286,6 +286,7 @@ Patch8: gcc13-no-add-needed.patch Patch9: gcc13-Wno-format-security.patch Patch10: gcc13-rh1574936.patch Patch11: gcc13-d-shared-libphobos.patch +Patch12: gcc13-pr109230.patch Patch50: isl-rh2155127.patch @@ -862,6 +863,7 @@ so that there cannot be any synchronization problems. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ +%patch12 -p0 -b .pr109230~ %patch50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3458,6 +3460,15 @@ end %endif %changelog +* Tue Mar 21 2023 Jakub Jelinek 13.0.1-0.9 +- update from trunk + - PRs analyzer/109094, c++/106890, c++/109159, c++/109164, fortran/85877, + fortran/87127, fortran/99036, fortran/109186, fortran/109206, + fortran/109209, fortran/109216, libstdc++/109182, target/109067, + target/109178, testsuite/108898, tree-optimization/109170, + tree-optimization/109192, tree-optimization/109215, + tree-optimization/109219 + * Sat Mar 18 2023 Jakub Jelinek 13.0.1-0.8 - update from trunk - PRs analyzer/105906, analyzer/108045, analyzer/109097, c++/58538, diff --git a/gcc13-pr109230.patch b/gcc13-pr109230.patch new file mode 100644 index 0000000..141b95e --- /dev/null +++ b/gcc13-pr109230.patch @@ -0,0 +1,51 @@ +2023-03-21 Jakub Jelinek + + PR tree-optimization/109230 + * match.pd (fneg/fadd simplify): Verify also odd permutation indexes. + + * gcc.dg/pr109230.c: New test. + +--- gcc/match.pd.jj 2023-02-18 12:38:30.967022708 +0100 ++++ gcc/match.pd 2023-03-21 19:59:40.209634256 +0100 +@@ -8096,6 +8096,7 @@ and, + scalar_mode inner_mode = GET_MODE_INNER (vec_mode); + } + (if (sel.series_p (0, 2, 0, 2) ++ && sel.series_p (1, 2, nelts + 1, 2) + && GET_MODE_2XWIDER_MODE (inner_mode).exists (&wide_elt_mode) + && multiple_p (GET_MODE_NUNITS (vec_mode), 2, &wide_nunits) + && related_vector_mode (vec_mode, wide_elt_mode, +--- gcc/testsuite/gcc.dg/pr109230.c.jj 2023-03-21 20:03:52.811979268 +0100 ++++ gcc/testsuite/gcc.dg/pr109230.c 2023-03-21 20:03:35.884224342 +0100 +@@ -0,0 +1,31 @@ ++/* PR tree-optimization/109230 */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -Wno-psabi" } */ ++ ++#if __SIZEOF_FLOAT__ == __SIZEOF_INT__ ++typedef float V __attribute__((vector_size (4 * sizeof (float)))); ++typedef int VI __attribute__((vector_size (4 * sizeof (float)))); ++ ++__attribute__((noipa)) V ++foo (V x, V y) ++{ ++ V a = x - y; ++ V b = y + x; ++ return __builtin_shuffle (b, a, (VI) { 0, 5, 2, 3 }); ++} ++ ++int ++main () ++{ ++ V a = (V) { 1.0f, 2.0f, 3.0f, 4.0f }; ++ V b = (V) { 8.0f, 9.0f, 10.0f, 11.0f }; ++ V c = foo (a, b); ++ if (c[0] != 9.0f || c[1] != -7.0f || c[2] != 13.0f || c[3] != 15.0f) ++ __builtin_abort (); ++} ++#else ++int ++main () ++{ ++} ++#endif diff --git a/sources b/sources index f1658e5..8bcfac4 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.1-20230318.tar.xz) = 691f0d15e19fd89ca6003f443fe9363f9acbb57920869a51c1ecb4938d225f0c02502a74d6cd224464b68a8f420374e5f6d9685c37ecd936f82a9a1c27b15c79 +SHA512 (gcc-13.0.1-20230321.tar.xz) = 92031a51ab6c41d02e081d2013bf33f30a1b483fb4bf37349a683e71ee479dec877edb6e8735092326ed6e5c4081bb14d4be888a648fec948c11c58c06ced455 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 -SHA512 (nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz) = 91690321bf96460c3b3e229199a6f752ed1c27c6933d4345dc7e237dc068f604ad211bb3a0373e14d4f332bee05b6227d6933e14e0b475ffdfea8b511ab735e6 +SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be From 5e48ef55f5bc39af1dbf59e829420c480739b3b0 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 21 Mar 2023 22:02:15 +0100 Subject: [PATCH 150/293] 13.0.1-0.9 --- gcc13-rh1574936.patch | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/gcc13-rh1574936.patch b/gcc13-rh1574936.patch index 6b4be0c..bcc7000 100644 --- a/gcc13-rh1574936.patch +++ b/gcc13-rh1574936.patch @@ -7,24 +7,15 @@ these notes only confer that there is no other annobin markup. 2018-07-25 Florian Weimer - * Makefile.in (LIBGCC2_CFLAGS, CRTSTUFF_CFLAGS): Add + * config/t-linux (LIBGCC2_CFLAGS, CRTSTUFF_CFLAGS): Add -Wa,--generate-missing-build-notes=yes. ---- libgcc/Makefile.in 2018-01-13 13:05:41.000000000 +0100 -+++ libgcc/Makefile.in 2018-07-25 13:15:02.036226940 +0200 -@@ -246,6 +246,7 @@ LIBGCC2_DEBUG_CFLAGS = -g - LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \ - $(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \ - -fbuilding-libgcc -fno-stack-protector \ -+ -Wa,--generate-missing-build-notes=yes \ - $(INHIBIT_LIBC_CFLAGS) - - # Additional options to use when compiling libgcc2.a. -@@ -301,6 +302,7 @@ CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(IN - $(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) \ -+ -Wa,--generate-missing-build-notes=yes \ - $(INHIBIT_LIBC_CFLAGS) $(USE_TM_CLONE_REGISTRY) - - # Extra flags to use when compiling crt{begin,end}.o. +--- libgcc/config/t-linux 2022-12-15 19:25:20.581394950 +0100 ++++ libgcc/config/t-linux 2023-03-21 22:00:37.054478562 +0100 +@@ -1,3 +1,6 @@ + # Override t-slibgcc-elf-ver to export some libgcc symbols with + # the symbol versions that glibc used. + SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver ++ ++LIBGCC2_CFLAGS += -Wa,--generate-missing-build-notes=yes ++CRTSTUFF_CFLAGS += -Wa,--generate-missing-build-notes=yes From cf965d214e6c8e061b67edfe9d875b8d7edf9da7 Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Fri, 24 Mar 2023 09:46:16 +0100 Subject: [PATCH 151/293] CI Tests: Make the CI testplan more compact --- plans/ci.fmf | 4 ++++ plans/ci/prepare/prepare.fmf | 6 ------ plans/{ci/prepare => }/prepare.sh | 0 3 files changed, 4 insertions(+), 6 deletions(-) delete mode 100755 plans/ci/prepare/prepare.fmf rename plans/{ci/prepare => }/prepare.sh (100%) diff --git a/plans/ci.fmf b/plans/ci.fmf index 85710d6..13b60db 100644 --- a/plans/ci.fmf +++ b/plans/ci.fmf @@ -2,5 +2,9 @@ summary: CI Gating Plan discover: how: fmf directory: tests +prepare: + - name: prepare + how: shell + script: ./plans/prepare.sh execute: how: tmt diff --git a/plans/ci/prepare/prepare.fmf b/plans/ci/prepare/prepare.fmf deleted file mode 100755 index 0b8da9f..0000000 --- a/plans/ci/prepare/prepare.fmf +++ /dev/null @@ -1,6 +0,0 @@ -summary: Setup task -prepare: - script: ./plans/ci/prepare/prepare.sh -require: -- koji -- dnf-utils diff --git a/plans/ci/prepare/prepare.sh b/plans/prepare.sh similarity index 100% rename from plans/ci/prepare/prepare.sh rename to plans/prepare.sh From 8e1f20bf3a8278a50854f7fbaa1e0c4f3778ff9e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 24 Mar 2023 11:52:24 +0100 Subject: [PATCH 152/293] 13.0.1-0.10 --- gcc.spec | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/gcc.spec b/gcc.spec index 7f3ade5..9e73918 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20230321 -%global gitrev 631cc7b96752740a3fdfd960b503d64faf02c1b6 +%global DATE 20230324 +%global gitrev 053e16ff35e0921f66d5b48f2b2e4a51eca89e43 %global gcc_version 13.0.1 %global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.9%{?dist} +Release: %{gcc_release}.10%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3460,6 +3460,15 @@ end %endif %changelog +* Fri Mar 24 2023 Jakub Jelinek 13.0.1-0.10 +- update from trunk + - PRs analyzer/109239, c++/105996, c++/108390, c++/108795, c++/109177, + c++/109241, c/84900, fortran/104572, middle-end/109258, + modula2/107630, modula2/109248, modula2/109264, target/103628, + target/109137, target/109228, target/109244, testsuite/105959, + tree-optimization/99739, tree-optimization/107569, + tree-optimization/109176, tree-optimization/109262 + * Tue Mar 21 2023 Jakub Jelinek 13.0.1-0.9 - update from trunk - PRs analyzer/109094, c++/106890, c++/109159, c++/109164, fortran/85877, From 3c30ab4799b5e8425513fe2f8f1965a46a7483c6 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 24 Mar 2023 12:02:07 +0100 Subject: [PATCH 153/293] 13.0.1-0.10 --- .gitignore | 1 + sources | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 70c4e12..de140a3 100644 --- a/.gitignore +++ b/.gitignore @@ -96,3 +96,4 @@ /gcc-13.0.1-20230318.tar.xz /gcc-13.0.1-20230321.tar.xz /nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz +/gcc-13.0.1-20230324.tar.xz diff --git a/sources b/sources index 8bcfac4..47f1d0c 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.1-20230321.tar.xz) = 92031a51ab6c41d02e081d2013bf33f30a1b483fb4bf37349a683e71ee479dec877edb6e8735092326ed6e5c4081bb14d4be888a648fec948c11c58c06ced455 +SHA512 (gcc-13.0.1-20230324.tar.xz) = 17f0cdd640232508d316cc02664a2e159a97fa2253b3884862f97f02e60bed45630dfd1811472fdc2215d094a2ac3e7cd05011364f069ca14f741db055d6cd9f SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be From 02ae2beb4c1b5d5281a5892a022d6c51055d7df9 Mon Sep 17 00:00:00 2001 From: Shmuel Melamud Date: Thu, 2 Mar 2023 17:53:30 +0200 Subject: [PATCH 154/293] Added missing dependencies of Sanity/rebuild-glibc test. --- tests/Sanity/rebuild-glibc/main.fmf | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/Sanity/rebuild-glibc/main.fmf b/tests/Sanity/rebuild-glibc/main.fmf index 01729a4..ea649f0 100644 --- a/tests/Sanity/rebuild-glibc/main.fmf +++ b/tests/Sanity/rebuild-glibc/main.fmf @@ -10,7 +10,9 @@ framework: beakerlib require: - audit-libs-devel - binutils + - bison - gcc + - gcc-c++ - gd-devel - glibc-devel - glibc-static @@ -26,8 +28,11 @@ require: - nss-devel - nss-softokn-devel - nss-util-devel + - python3-devel - rpm-build - systemtap-sdt-devel + - texinfo + - valgrind - yum-utils recommend: - glibc-devel.ppc @@ -64,6 +69,9 @@ adjust: - libstdc++-static.i686 - libstdc++-static.x86_64 when: arch == x86_64 + - require-: + - python3-devel + when: distro < rhel-8 - enabled: false when: collection is defined continue: false From 85fff34818f25219aec1a286dd1f9bf2af6c9448 Mon Sep 17 00:00:00 2001 From: Andrej Cernek Date: Thu, 26 Jan 2023 10:26:48 +0100 Subject: [PATCH 155/293] test-m32-m54-options: manage dependencies in fmf file Also include updated script from the RHEL tests and fixes for rawhide. Note: dependencies were configured for x86_64 only. --- tests/Sanity/test-m32-m64-options/cpp11.cpp | 2 +- .../test-m32-m64-options/lambda-template.C | 2 +- tests/Sanity/test-m32-m64-options/main.fmf | 59 ++-- tests/Sanity/test-m32-m64-options/runtest.sh | 268 ++++++++---------- 4 files changed, 146 insertions(+), 185 deletions(-) diff --git a/tests/Sanity/test-m32-m64-options/cpp11.cpp b/tests/Sanity/test-m32-m64-options/cpp11.cpp index 649daec..0d57b57 100644 --- a/tests/Sanity/test-m32-m64-options/cpp11.cpp +++ b/tests/Sanity/test-m32-m64-options/cpp11.cpp @@ -3,7 +3,7 @@ class X { T p; public: - template auto f() -> decltype(+p) { } + template auto f() -> decltype(+p) { return p; } }; struct A diff --git a/tests/Sanity/test-m32-m64-options/lambda-template.C b/tests/Sanity/test-m32-m64-options/lambda-template.C index b4db3b8..6f3b4e8 100644 --- a/tests/Sanity/test-m32-m64-options/lambda-template.C +++ b/tests/Sanity/test-m32-m64-options/lambda-template.C @@ -10,7 +10,7 @@ auto apply (T t) -> decltype (t()) } template -T f(T t) +void f(T t) { T t2 = t; if (t != [=]()->T { return t; }()) diff --git a/tests/Sanity/test-m32-m64-options/main.fmf b/tests/Sanity/test-m32-m64-options/main.fmf index 04472ac..cef912f 100644 --- a/tests/Sanity/test-m32-m64-options/main.fmf +++ b/tests/Sanity/test-m32-m64-options/main.fmf @@ -1,5 +1,5 @@ summary: Try -m32 and -m64 options. -description: '' +description: Try -m32 and -m64 options contact: mcermak@redhat.com component: - gcc @@ -10,20 +10,16 @@ require: - gcc - gcc-c++ - gcc-gfortran - - glibc-common - - libgcc - - libgomp - - libgfortran - - libstdc++ - - libstdc++-devel - glibc-devel + - libgfortran + - libgomp + - libstdc++-devel - libitm recommend: - - libgfortran44.i686 - - libgfortran44.x86_64 - - libgfortran4.i686 - - libgfortran4.x86_64 -duration: 10m + - libgfortran5 + - libitm-devel + - libquadmath-devel +duration: 20m enabled: true link: - relates: https://bugzilla.redhat.com/show_bug.cgi?id=1113429 @@ -31,21 +27,32 @@ adjust: - enabled: false when: arch == ia64, ppc64, s390, s390x continue: false - - require+: - - glibc-devel.i686 - - glibc-devel.x86_64 - - libgcc.i686 - - libgcc.x86_64 - - libgfortran.i686 - - libgfortran.x86_64 - - libgomp.i686 - - libgomp.x86_64 - - libitm.i686 - - libitm.x86_64 - - libstdc++.i686 - - libstdc++.x86_64 - when: arch == x86_64 + - enabled: false + when: arch == aarch64 continue: false + because: no -m64 nor -m32 there + - require+: + - glibc-devel.x86_64 + - glibc-devel.i686 + - libgfortran.x86_64 + - libgfortran.i686 + - libstdc++-devel.x86_64 + - libstdc++-devel.i686 + - libitm.x86_64 + - libitm.i686 + - libgomp.x86_64 + - libgomp.i686 + - libquadmath.x86_64 + - libquadmath.i686 + when: arch == x86_64 + - recommend+: + - libgfortran5.x86_64 + - libgfortran5.i686 + - libitm-devel.x86_64 + - libitm-devel.i686 + - libquadmath-devel.x86_64 + - libquadmath-devel.i686 + when: arch == x86_64 extra-nitrate: TC#0197178 extra-summary: /tools/gcc/Sanity/test-m32-m64-options extra-task: /tools/gcc/Sanity/test-m32-m64-options diff --git a/tests/Sanity/test-m32-m64-options/runtest.sh b/tests/Sanity/test-m32-m64-options/runtest.sh index 15e99af..31b8241 100755 --- a/tests/Sanity/test-m32-m64-options/runtest.sh +++ b/tests/Sanity/test-m32-m64-options/runtest.sh @@ -26,188 +26,142 @@ # # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# This is for Toolset. -# # In this test, we try to compile and run programs using -m32 and -m64. # We compile C, C++ and Fortran Hello World programs. Also, there are two # proglets which are exercising some C++11 features. Furthermore, we try # -fgnu-tm, -fopenmp options. We also use libquadmath a little bit. # We call a function from libgcc. We also use the __thread keyword. -# Everything should be ok when running under e.g.: -# scl enable devtoolset-1.0 bash -# Note, that gfortran is not a part of 1.0 release. # Include Beaker environment . /usr/share/beakerlib/beakerlib.sh || exit 1 -PACKAGES=(gcc gcc-c++ gcc-gfortran glibc-common libgcc libgomp libgfortran glibc-devel libitm) +GCC=${GCC:-$(type -P gcc)} +GCC_RPM_NAME=$(rpm --qf '%{name}' -qf $GCC) -PACKAGES_X86_64=(libgomp libgfortran glibc-devel libgcc libitm) +[[ "$GCC_RPM_NAME" == *toolset* ]] && TOOLSET=${GCC_RPM_NAME%-gcc} || TOOLSET='' -# Choose the compiler. -GCC=${GCC:-gcc} -GXX=${GXX:-g++} -GFORTRAN=${GFORTRAN:-gfortran} - -PACKAGE=$GCC - -# Set the variabile UNDER_DTS on non-empty string, when run under devtoolset -if $( echo `which gcc` | grep -qE '/opt/rh/' ); then - UNDER_DTS="true" - # Set the actual version of DTS - DTS=`which gcc | awk 'BEGIN { FS="/" } { print $4 }'` +if [ -n "`rlGetPrimaryArch`" ]; then + PRI_ARCH=$(rlGetPrimaryArch) +else + PRI_ARCH="$(uname -i)" fi -rlJournalStart - rlPhaseStartSetup - for p in "${PACKAGES[@]}"; do - rpm -q "$p" || yum install -y $p - rlAssertRpm "$p" - done; unset p - yum update -y libitm # this is a hack, since libitm is a troublemaker - if [ -n "`rlGetSecondaryArch`" ]; then - rlCheckRpm "libitm.`rlGetSecondaryArch`" || yum install -y libitm.`rlGetSecondaryArch` - rlAssertRpm "libitm.`rlGetSecondaryArch`" - fi - - rlCheckRpm "libstdc++-devel.`rlGetPrimaryArch`" || yum install -y libstdc++-devel.`rlGetPrimaryArch` - rlAssertRpm "libstdc++-devel.`rlGetPrimaryArch`" - # RHEL-8 CI debugging hack (to be removed when not needed): - rlRun "rpmquery -l libstdc++-devel.`rlGetPrimaryArch` | grep -e bits/c++config" - rlRun "rpmquery -l libstdc++-devel.`rlGetPrimaryArch` | grep -e iostream" - - if [ -n "`rlGetSecondaryArch`" ]; then - rlCheckRpm "libitm.`rlGetSecondaryArch`" || yum install -y libitm.`rlGetSecondaryArch` - rlAssertRpm "libitm.`rlGetSecondaryArch`" - fi - - if [ ! -z ${UNDER_DTS} ]; then - rlCheckRpm "$DTS-libstdc++-devel" || yum install -y $DTS-libstdc++-devel - rlAssertRpm "$DTS-libstdc++-devel" - if [ "`arch`" = 'x86_64' ]; then - rlCheckRpm "$DTS-libquadmath-devel" || yum install -y $DTS-libquadmath-devel - rlAssertRpm "$DTS-libquadmath-devel" - fi - if rlIsRHEL '<=7'; then # no libgfortran[45] on RHEL8+ - rlCheckRpm "libgfortran4" || yum install -y libgfortran4 - if [ -n "`rlGetSecondaryArch`" ]; then - rlCheckRpm "libgfortran4.`rlGetSecondaryArch`" || yum install -y libgfortran4.`rlGetSecondaryArch` - rlAssertRpm "libgfortran4.`rlGetSecondaryArch`" +# State applicable -m switches +SWITCHES='-m64 -m32' +case "$PRI_ARCH" in + i686) + SWITCHES=-m32 # just base RHEL-6/i386 + ;; + ppc64le) # we never had 32 support there + SWITCHES=-m64 + ;; + aarch64) + # Not only we never had 32-bit support there, GCC on this architecture + # doesn't accept the -m64 switch either. This test isn't applicable + # at all and should be excluded by its relevancy, e.g. in TCMS: + # arch = aarch64: False + exit 1 + ;; + ppc64|s390x) # 32-bit support present only in system GCC of RHEL <8 + if [[ -z "$TOOLSET" ]] && rlIsRHEL '<8'; then + if [[ "$PRI_ARCH" != s390x ]]; then + SWITCHES='-m64 -m32' + else + SWITCHES='-m64 -m31' + fi + else + SWITCHES=-m64 fi - rlCheckRpm "libgfortran5" || yum install -y libgfortran5 - rlAssertRpm "libgfortran5" && yum -y update libgfortran5 - if [ -n "`rlGetSecondaryArch`" ]; then - rlCheckRpm "libgfortran5.`rlGetSecondaryArch`" || yum install -y libgfortran5.`rlGetSecondaryArch` - rlAssertRpm "libgfortran5.`rlGetSecondaryArch`" - fi - fi - fi - - # Check whether on rhel6 x86_64 i686-packages are installed too. - # On rhel5 i386-packages should be already installed. - if [ "$(uname -i)" == "x86_64" ]; then - for pack in "${PACKAGES_X86_64[@]}"; do - rpm -q ${pack}.i?86 || yum install -y ${pack}.i?86 - done; unset pack - - if [ ! -z ${UNDER_DTS} ]; then - yum install -y $DTS-libstdc++-devel.i?86 - yum install -y $DTS-libquadmath-devel.i?86 - fi - fi - - rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" - # We need some files. - rlRun "cp -v hello.{c,cpp,f90} tm.c quad.c thr-init-2.c \ - clear_cache.c omphello.c lambda-template.C cpp11.cpp $TmpDir" - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartSetup "Showing compiler versions" - for compiler in $GCC $GXX $GFORTRAN - do - rlLog "Version of compiler: $compiler" - eval "$compiler --version 2>&1" | while read line - do - rlLog " $line" - done - done - rlPhaseEnd - -ARCH="$(uname -i)" -case "$ARCH" in - "aarch64") export SWITCHES="-mlittle-endian" # we don't have -m64, so let's use some dummy switch that is enabled by default - ;; - "i386") export SWITCHES="-m32" - ;; - "ppc64") export SWITCHES="-m32 -m64" - ;; - "ppc64le") export SWITCHES="-m64" - ;; - "s390x") export SWITCHES="-m31 -m64" - ;; - "x86_64") export SWITCHES="-m32 -m64" - ;; + ;; esac -# Always try both -m32 and -m64. -for m in $SWITCHES; do - rlPhaseStartTest "Compile and run [$m]" - rlRun "$GCC $m hello.c -o hello_c" - rlRun "./hello_c" +rlJournalStart + rlPhaseStartSetup + rlLogInfo "COLLECTIONS=$COLLECTIONS" + rlLogInfo "GCC=$GCC" + rlLogInfo "SKIP_COLLECTION_METAPACKAGE_CHECK=$SKIP_COLLECTION_METAPACKAGE_CHECK" - rlRun "$GXX $m hello.cpp -o hello_cpp" - rlRun "./hello_cpp" + # We optionally need to skip checking for the presence of the metapackage + # because that would pull in all the dependent toolset subrpms. We do not + # always want that, especially in CI. + _COLLECTIONS="$COLLECTIONS" + if ! test -z $SKIP_COLLECTION_METAPACKAGE_CHECK; then + for c in $SKIP_COLLECTION_METAPACKAGE_CHECK; do + rlLogInfo "ignoring metapackage check for collection $c" + export COLLECTIONS=$(shopt -s extglob && echo ${COLLECTIONS//$c/}) + done + fi + rlLogInfo "(without skipped) COLLECTIONS=$COLLECTIONS" + export COLLECTIONS="$_COLLECTIONS" - # Now try a few C++11 features. - $GXX -xc++ -std=c++11 - <<< "int main(){}" - if test $? -eq 0; then - rlRun "$GXX $m -std=c++11 lambda-template.C -o lambda" - rlRun "./lambda" + rlRun "TmpDir=\$(mktemp -d)" + rlRun "cp -v hello.{c,cpp,f90} tm.c quad.c thr-init-2.c clear_cache.c omphello.c lambda-template.C cpp11.cpp $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd - rlRun "$GXX $m -std=c++11 cpp11.cpp -o cpp11" - rlRun "./cpp11" - fi + rlPhaseStartSetup "Showing compiler versions" + for compiler in gcc g++ gfortran; do + rlLogInfo "Version of compiler: $compiler" + eval "$compiler --version 2>&1" | while read line; do + rlLogInfo " $line" + done + done + rlPhaseEnd - rlRun "$GFORTRAN $m hello.f90 -o hello_fortran" - rlRun "./hello_fortran" + for m in $SWITCHES; do + rlPhaseStartTest "Compile and run [$m]" - # TM support is GCC >=4.7 only. - $GCC -xc -O2 -std=gnu99 -fgnu-tm - <<< "int main(){}" - if test $? -eq 0; then - rlRun "$GCC $m -O2 -std=gnu99 -fgnu-tm tm.c -o tm" - rlRun "./tm" - fi + # Test C + rlRun "gcc $m hello.c -o hello_c" + rlRun ./hello_c - # Test OpenMP. - rlRun "$GCC $m omphello.c -O2 -std=gnu99 -fopenmp -o omp" - rlRun "./omp" + # Test C++ + rlRun "g++ $m hello.cpp -o hello_cpp" + rlRun ./hello_cpp - # Test __thread. - rlRun "$GCC $m thr-init-2.c -O2 -std=gnu99 -ftls-model=initial-exec -o thr" - rlRun "./thr" + # C++11 features. Not available in system GCC of RHEL-6 + if ! rlIsRHEL 6 || [[ -n "$TOOLSET" ]]; then + rlRun "g++ $m -std=c++11 lambda-template.C -o lambda" + rlRun ./lambda - # Now test some libquadmath stuff (__float128 support). - # libquadmath is mising on RHEL machines, usually. - # But with DTS, this should be available. - if [ ! -z ${UNDER_DTS} ]; then - if [ "`arch`" = 'x86_64' ]; then - rlRun "$GCC $m quad.c -O2 -std=gnu99 -lquadmath -o quad -lm" - rlRun "./quad" - else - rlLog "quadmath test skipped (needs x86_64)" - fi - fi + rlRun "g++ $m -std=c++11 cpp11.cpp -o cpp11" + rlRun ./cpp11 + fi - # And now something from libgcc, e.g. __builtin___clear_cache. - rlRun "$GCC $m clear_cache.c -O2 -std=gnu99 -o cache" - rlRun "./cache" - rlPhaseEnd -done; unset m + # Test Fortran + rlRun "gfortran $m hello.f90 -o hello_fortran" + rlRun "./hello_fortran" - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd + # Test TM. Not available in system GCC of RHEL-6 + if ! rlIsRHEL 6 || [[ -n "$TOOLSET" ]]; then + rlRun "gcc $m -O2 -std=gnu99 -fgnu-tm tm.c -o tm" + rlRun ./tm + fi + + # Test OpenMP + rlRun "gcc $m omphello.c -O2 -std=gnu99 -fopenmp -o omp" + rlRun ./omp + + # Test __thread + rlRun "gcc $m thr-init-2.c -O2 -std=gnu99 -ftls-model=initial-exec -o thr" + rlRun ./thr + + # Now test some libquadmath stuff (__float128 support). + if rpm -q ${GCC_RPM_NAME%%gcc}libquadmath-devel &>/dev/null; then + rlRun "gcc $m quad.c -O2 -std=gnu99 -lquadmath -o quad -lm" + rlRun ./quad + fi + + # And now something from libgcc, e.g. __builtin___clear_cache. + rlRun "gcc $m clear_cache.c -O2 -std=gnu99 -o cache" + rlRun ./cache + + rlPhaseEnd + done + + rlPhaseStartCleanup + rlRun popd + rlRun "rm -r $TmpDir" + rlPhaseEnd rlJournalPrintText rlJournalEnd From dc8f6e461b5f9b23557c09e11f21b3e418f226c2 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 29 Mar 2023 17:26:07 +0200 Subject: [PATCH 156/293] 13.0.1-0.11 --- .gitignore | 1 + gcc.spec | 26 +++++++++++++++++----- gcc13-pr109230.patch | 51 -------------------------------------------- sources | 2 +- 4 files changed, 23 insertions(+), 57 deletions(-) delete mode 100644 gcc13-pr109230.patch diff --git a/.gitignore b/.gitignore index de140a3..c64ca40 100644 --- a/.gitignore +++ b/.gitignore @@ -97,3 +97,4 @@ /gcc-13.0.1-20230321.tar.xz /nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz /gcc-13.0.1-20230324.tar.xz +/gcc-13.0.1-20230329.tar.xz diff --git a/gcc.spec b/gcc.spec index 9e73918..5fdc504 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20230324 -%global gitrev 053e16ff35e0921f66d5b48f2b2e4a51eca89e43 +%global DATE 20230329 +%global gitrev 5864cb72cba24f25ae864298e85b553f0cadee5d %global gcc_version 13.0.1 %global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.10%{?dist} +Release: %{gcc_release}.11%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -286,7 +286,6 @@ Patch8: gcc13-no-add-needed.patch Patch9: gcc13-Wno-format-security.patch Patch10: gcc13-rh1574936.patch Patch11: gcc13-d-shared-libphobos.patch -Patch12: gcc13-pr109230.patch Patch50: isl-rh2155127.patch @@ -863,7 +862,6 @@ so that there cannot be any synchronization problems. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr109230~ %patch50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3460,6 +3458,24 @@ end %endif %changelog +* Wed Mar 29 2023 Jakub Jelinek 13.0.1-0.11 +- update from trunk + - PRs analyzer/109098, bootstrap/84402, bootstrap/109310, c++/105481, + c++/106969, c++/107163, c++/109309, c++/109320, c++/109321, c/107002, + fortran/104321, fortran/104949, fortran/109314, gcov-profile/109297, + ipa/105685, ipa/106124, libgcc/108891, libstdc++/103387, + libstdc++/109288, libstdc++/109299, lto/109263, middle-end/106190, + other/109163, other/109293, rtl-optimization/109187, + rtl-optimization/109237, target/106282, target/109072, target/109082, + target/109140, target/109167, target/109276, target/109296, + target/109312, tree-optimization/54498, tree-optimization/106912, + tree-optimization/107087, tree-optimization/108129, + tree-optimization/108357, tree-optimization/109154, + tree-optimization/109230, tree-optimization/109238, + tree-optimization/109265, tree-optimization/109274, + tree-optimization/109301, tree-optimization/109327, + tree-optimization/109331 + * Fri Mar 24 2023 Jakub Jelinek 13.0.1-0.10 - update from trunk - PRs analyzer/109239, c++/105996, c++/108390, c++/108795, c++/109177, diff --git a/gcc13-pr109230.patch b/gcc13-pr109230.patch deleted file mode 100644 index 141b95e..0000000 --- a/gcc13-pr109230.patch +++ /dev/null @@ -1,51 +0,0 @@ -2023-03-21 Jakub Jelinek - - PR tree-optimization/109230 - * match.pd (fneg/fadd simplify): Verify also odd permutation indexes. - - * gcc.dg/pr109230.c: New test. - ---- gcc/match.pd.jj 2023-02-18 12:38:30.967022708 +0100 -+++ gcc/match.pd 2023-03-21 19:59:40.209634256 +0100 -@@ -8096,6 +8096,7 @@ and, - scalar_mode inner_mode = GET_MODE_INNER (vec_mode); - } - (if (sel.series_p (0, 2, 0, 2) -+ && sel.series_p (1, 2, nelts + 1, 2) - && GET_MODE_2XWIDER_MODE (inner_mode).exists (&wide_elt_mode) - && multiple_p (GET_MODE_NUNITS (vec_mode), 2, &wide_nunits) - && related_vector_mode (vec_mode, wide_elt_mode, ---- gcc/testsuite/gcc.dg/pr109230.c.jj 2023-03-21 20:03:52.811979268 +0100 -+++ gcc/testsuite/gcc.dg/pr109230.c 2023-03-21 20:03:35.884224342 +0100 -@@ -0,0 +1,31 @@ -+/* PR tree-optimization/109230 */ -+/* { dg-do run } */ -+/* { dg-options "-O2 -Wno-psabi" } */ -+ -+#if __SIZEOF_FLOAT__ == __SIZEOF_INT__ -+typedef float V __attribute__((vector_size (4 * sizeof (float)))); -+typedef int VI __attribute__((vector_size (4 * sizeof (float)))); -+ -+__attribute__((noipa)) V -+foo (V x, V y) -+{ -+ V a = x - y; -+ V b = y + x; -+ return __builtin_shuffle (b, a, (VI) { 0, 5, 2, 3 }); -+} -+ -+int -+main () -+{ -+ V a = (V) { 1.0f, 2.0f, 3.0f, 4.0f }; -+ V b = (V) { 8.0f, 9.0f, 10.0f, 11.0f }; -+ V c = foo (a, b); -+ if (c[0] != 9.0f || c[1] != -7.0f || c[2] != 13.0f || c[3] != 15.0f) -+ __builtin_abort (); -+} -+#else -+int -+main () -+{ -+} -+#endif diff --git a/sources b/sources index 47f1d0c..6db4e59 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.1-20230324.tar.xz) = 17f0cdd640232508d316cc02664a2e159a97fa2253b3884862f97f02e60bed45630dfd1811472fdc2215d094a2ac3e7cd05011364f069ca14f741db055d6cd9f +SHA512 (gcc-13.0.1-20230329.tar.xz) = 58a45335495f2c15c569ee6594bdf1b99a0ee57df01b268b2682b8d219d306e377aa019925ee59936eb0c464cba63c42e8f23e912f13ba9209642a3f74f95d42 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be From b290aa01d1cd7369f308799c5596b8420b9b5fc8 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 1 Apr 2023 10:33:07 +0200 Subject: [PATCH 157/293] 13.0.1-0.12 --- .gitignore | 1 + gcc.spec | 46 +++++++++++++++++++++++++++------------------- sources | 2 +- 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index c64ca40..b7f736d 100644 --- a/.gitignore +++ b/.gitignore @@ -98,3 +98,4 @@ /nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz /gcc-13.0.1-20230324.tar.xz /gcc-13.0.1-20230329.tar.xz +/gcc-13.0.1-20230401.tar.xz diff --git a/gcc.spec b/gcc.spec index 5fdc504..290eefe 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20230329 -%global gitrev 5864cb72cba24f25ae864298e85b553f0cadee5d +%global DATE 20230401 +%global gitrev 21536f033a889b9c0aa53f7888469bab3d9296bd %global gcc_version 13.0.1 %global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.11%{?dist} +Release: %{gcc_release}.12%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -845,32 +845,32 @@ so that there cannot be any synchronization problems. %prep %setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 -a 3 -%patch0 -p0 -b .hack~ -%patch2 -p0 -b .sparc-config-detection~ -%patch3 -p0 -b .libgomp-omp_h-multilib~ -%patch4 -p0 -b .libtool-no-rpath~ +%patch -P0 -p0 -b .hack~ +%patch -P2 -p0 -b .sparc-config-detection~ +%patch -P3 -p0 -b .libgomp-omp_h-multilib~ +%patch -P4 -p0 -b .libtool-no-rpath~ %if %{build_isl} -%patch5 -p0 -b .isl-dl~ -%patch6 -p0 -b .isl-dl2~ +%patch -P5 -p0 -b .isl-dl~ +%patch -P6 -p0 -b .isl-dl2~ %endif %if %{build_libstdcxx_docs} -%patch7 -p0 -b .libstdc++-docs~ +%patch -P7 -p0 -b .libstdc++-docs~ %endif -%patch8 -p0 -b .no-add-needed~ -%patch9 -p0 -b .Wno-format-security~ +%patch -P8 -p0 -b .no-add-needed~ +%patch -P9 -p0 -b .Wno-format-security~ %if 0%{?fedora} >= 29 || 0%{?rhel} > 7 -%patch10 -p0 -b .rh1574936~ +%patch -P10 -p0 -b .rh1574936~ %endif -%patch11 -p0 -b .d-shared-libphobos~ +%patch -P11 -p0 -b .d-shared-libphobos~ -%patch50 -p0 -b .rh2155127~ +%patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 %if 0%{?rhel} >= 9 -%patch100 -p1 -b .fortran-fdec-duplicates~ -%patch101 -p1 -b .fortran-flogical-as-integer~ -%patch102 -p1 -b .fortran-fdec-override-kind~ -%patch103 -p1 -b .fortran-fdec-non-logical-if~ +%patch -P100 -p1 -b .fortran-fdec-duplicates~ +%patch -P101 -p1 -b .fortran-flogical-as-integer~ +%patch -P102 -p1 -b .fortran-fdec-override-kind~ +%patch -P103 -p1 -b .fortran-fdec-non-logical-if~ %endif %ifarch %{arm} @@ -3458,6 +3458,14 @@ end %endif %changelog +* Sat Apr 1 2023 Jakub Jelinek 13.0.1-0.12 +- update from trunk + - PRs analyzer/107396, bootstrap/101834, c++/101118, c++/105221, c++/105452, + c++/107897, c++/108887, c++/109278, c++/109319, libstdc++/109242, + libstdc++/109339, libstdc++/109340, modula2/109315, modula2/109336, + target/85048, target/109254, target/109328, tree-optimization/91645, + tree-optimization/109342, tree-optimization/109362 + * Wed Mar 29 2023 Jakub Jelinek 13.0.1-0.11 - update from trunk - PRs analyzer/109098, bootstrap/84402, bootstrap/109310, c++/105481, diff --git a/sources b/sources index 6db4e59..ce2c95e 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.1-20230329.tar.xz) = 58a45335495f2c15c569ee6594bdf1b99a0ee57df01b268b2682b8d219d306e377aa019925ee59936eb0c464cba63c42e8f23e912f13ba9209642a3f74f95d42 +SHA512 (gcc-13.0.1-20230401.tar.xz) = c5b1bbaf7b96576ed662dc16d1e92b7b666f237c6e931315e672782f097d54bd4b406c725daa340e22a6760dba320201663e632b12362e6e3201153bf127facf SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be From 52fa8aefa306db13bab620b08cb185c2390cdc1c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 4 Apr 2023 17:49:54 +0200 Subject: [PATCH 158/293] 13.0.1-0.13 --- .gitignore | 1 + gcc.spec | 13 ++++++++++--- sources | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index b7f736d..b85279e 100644 --- a/.gitignore +++ b/.gitignore @@ -99,3 +99,4 @@ /gcc-13.0.1-20230324.tar.xz /gcc-13.0.1-20230329.tar.xz /gcc-13.0.1-20230401.tar.xz +/gcc-13.0.1-20230404.tar.xz diff --git a/gcc.spec b/gcc.spec index 290eefe..3947873 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20230401 -%global gitrev 21536f033a889b9c0aa53f7888469bab3d9296bd +%global DATE 20230404 +%global gitrev f9101c02b26988d799233db0b778732f7e56259f %global gcc_version 13.0.1 %global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.12%{?dist} +Release: %{gcc_release}.13%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3458,6 +3458,13 @@ end %endif %changelog +* Tue Apr 4 2023 Jakub Jelinek 13.0.1-0.13 +- update from trunk + - PRs c++/53164, c++/105848, c++/107484, c++/109160, c++/109300, ipa/109303, + modula2/109388, other/109306, sanitizer/109107, target/102146, + target/108699, target/108807, target/109375, target/109376, + target/109384, tree-optimization/109304, tree-optimization/109386 + * Sat Apr 1 2023 Jakub Jelinek 13.0.1-0.12 - update from trunk - PRs analyzer/107396, bootstrap/101834, c++/101118, c++/105221, c++/105452, diff --git a/sources b/sources index ce2c95e..6f2abd1 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.1-20230401.tar.xz) = c5b1bbaf7b96576ed662dc16d1e92b7b666f237c6e931315e672782f097d54bd4b406c725daa340e22a6760dba320201663e632b12362e6e3201153bf127facf +SHA512 (gcc-13.0.1-20230404.tar.xz) = d7c177e5bcf0efe6f3e48af4da5ab601c44eadad48b4af30bfcd833f256e615593e3ae5979ded5249b3d88417f482093a548dfab353e0d44bc1743afee295a79 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be From 52a79c17eeea5055a27e26fd90a7fed7c7ffcff6 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 18 Apr 2023 18:35:23 +0200 Subject: [PATCH 159/293] 13.0.1-0.14 --- .gitignore | 1 + gcc.spec | 31 ++++++++++++++++++++++++++++--- gcc13-pr108969.patch | 29 +++++++++++++++++++++++++++++ sources | 2 +- 4 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 gcc13-pr108969.patch diff --git a/.gitignore b/.gitignore index b85279e..1f178dc 100644 --- a/.gitignore +++ b/.gitignore @@ -100,3 +100,4 @@ /gcc-13.0.1-20230329.tar.xz /gcc-13.0.1-20230401.tar.xz /gcc-13.0.1-20230404.tar.xz +/gcc-13.0.1-20230418.tar.xz diff --git a/gcc.spec b/gcc.spec index 3947873..f518905 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20230404 -%global gitrev f9101c02b26988d799233db0b778732f7e56259f +%global DATE 20230418 +%global gitrev 90e2966fefb872b610765ac4f89ad9bcab43d72c %global gcc_version 13.0.1 %global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.13%{?dist} +Release: %{gcc_release}.14%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -286,6 +286,7 @@ Patch8: gcc13-no-add-needed.patch Patch9: gcc13-Wno-format-security.patch Patch10: gcc13-rh1574936.patch Patch11: gcc13-d-shared-libphobos.patch +Patch12: gcc13-pr108969.patch Patch50: isl-rh2155127.patch @@ -862,6 +863,7 @@ so that there cannot be any synchronization problems. %patch -P10 -p0 -b .rh1574936~ %endif %patch -P11 -p0 -b .d-shared-libphobos~ +%patch -P12 -p0 -b .pr108969~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3458,6 +3460,29 @@ end %endif %changelog +* Tue Apr 18 2023 Jakub Jelinek 13.0.1-0.14 +- update from trunk and releases/gcc-13 branch + - PRs analyzer/108722, bootstrap/109510, c++/109277, c++/109357, c++/109420, + c++/109514, c++/109531, driver/108241, fortran/61615, fortran/85686, + fortran/87477, fortran/88247, fortran/91941, fortran/92779, + fortran/93339, fortran/93813, fortran/98408, fortran/99982, + fortran/100948, fortran/102106, fortran/104272, fortran/104312, + fortran/104349, fortran/105205, fortran/106918, fortran/109492, + fortran/109511, ipa/107769, ipa/108959, ipa/109318, libstdc++/108291, + libstdc++/108827, libstdc++/108969, libstdc++/109482, + libstdc++/109525, modula2/109423, modula2/109488, modula2/109496, + modula2/109497, target/54816, target/70243, target/99708, + target/104989, target/108812, target/108892, target/108947, + target/109040, target/109104, target/109374, target/109402, + target/109458, target/109479, target/109508, testsuite/108809, + testsuite/108815, tree-optimization/108139, tree-optimization/109392, + tree-optimization/109410, tree-optimization/109417, + tree-optimization/109427, tree-optimization/109434, + tree-optimization/109462, tree-optimization/109469, + tree-optimization/109473, tree-optimization/109491, + tree-optimization/109502, tree-optimization/109524, + tree-optimization/109539 + * Tue Apr 4 2023 Jakub Jelinek 13.0.1-0.13 - update from trunk - PRs c++/53164, c++/105848, c++/107484, c++/109160, c++/109300, ipa/109303, diff --git a/gcc13-pr108969.patch b/gcc13-pr108969.patch new file mode 100644 index 0000000..88b4d4b --- /dev/null +++ b/gcc13-pr108969.patch @@ -0,0 +1,29 @@ +libstdc++: Fix preprocessor condition in linker script [PR108969] + +The linker script is preprocessed with $(top_builddir)/config.h not the +include/$target/bits/c++config.h version, which means that configure +macros do not have the _GLIBCXX_ prefix yet. + +The _GLIBCXX_SYMVER_GNU and _GLIBCXX_SHARED checks are redundant, +because the gnu.ver file is only used for _GLIBCXX_SYMVER_GNU and the +linker script is only used for the shared library. Remove those. + +libstdc++-v3/ChangeLog: + + PR libstdc++/108969 + * config/abi/pre/gnu.ver: Fix preprocessor condition. + +--- libstdc++-v3/config/abi/pre/gnu.ver ++++ libstdc++-v3/config/abi/pre/gnu.ver +@@ -2512,9 +2512,8 @@ GLIBCXX_3.4.31 { + _ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE[012]EEcvbEv; + _ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE[012]EEcvbEv; + +-#if defined(_GLIBCXX_SYMVER_GNU) && defined(_GLIBCXX_SHARED) \ +- && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \ +- && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT) ++#if defined(HAVE_AS_SYMVER_DIRECTIVE) \ ++ && defined(HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT) + # See src/c++98/globals_io.cc + _ZSt3cin; + _ZSt4cout; diff --git a/sources b/sources index 6f2abd1..9c0b2e6 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.1-20230404.tar.xz) = d7c177e5bcf0efe6f3e48af4da5ab601c44eadad48b4af30bfcd833f256e615593e3ae5979ded5249b3d88417f482093a548dfab353e0d44bc1743afee295a79 +SHA512 (gcc-13.0.1-20230418.tar.xz) = 2015b135608474d16dde00cccf03a405898494eb2988048e781b9ae64e3b8a7a6d3b4faf3ca30185ec9e18cd7728d5fdc195aaedc25c75ccc59c5105d1424fcd SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be From 6fdcb2b9e5dab07004c3473d382272d2d1cabd0e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 19 Apr 2023 21:27:34 +0200 Subject: [PATCH 160/293] 13.0.1-0.15 --- .gitignore | 1 + gcc.spec | 13 ++++++++----- gcc13-pr108969.patch | 29 ----------------------------- sources | 2 +- 4 files changed, 10 insertions(+), 35 deletions(-) delete mode 100644 gcc13-pr108969.patch diff --git a/.gitignore b/.gitignore index 1f178dc..3db1818 100644 --- a/.gitignore +++ b/.gitignore @@ -101,3 +101,4 @@ /gcc-13.0.1-20230401.tar.xz /gcc-13.0.1-20230404.tar.xz /gcc-13.0.1-20230418.tar.xz +/gcc-13.0.1-20230419.tar.xz diff --git a/gcc.spec b/gcc.spec index f518905..c3a5fe9 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20230418 -%global gitrev 90e2966fefb872b610765ac4f89ad9bcab43d72c +%global DATE 20230419 +%global gitrev fa3dfe9cf38be8a7cb0e7d0c11c67e8767f8e008 %global gcc_version 13.0.1 %global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.14%{?dist} +Release: %{gcc_release}.15%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -286,7 +286,6 @@ Patch8: gcc13-no-add-needed.patch Patch9: gcc13-Wno-format-security.patch Patch10: gcc13-rh1574936.patch Patch11: gcc13-d-shared-libphobos.patch -Patch12: gcc13-pr108969.patch Patch50: isl-rh2155127.patch @@ -863,7 +862,6 @@ so that there cannot be any synchronization problems. %patch -P10 -p0 -b .rh1574936~ %endif %patch -P11 -p0 -b .d-shared-libphobos~ -%patch -P12 -p0 -b .pr108969~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3460,6 +3458,11 @@ end %endif %changelog +* Wed Apr 19 2023 Jakub Jelinek 13.0.1-0.15 +- update from trunk and releases/gcc-13 branch + - GCC 13.1-rc2 + - PRs c++/109556, target/106602 + * Tue Apr 18 2023 Jakub Jelinek 13.0.1-0.14 - update from trunk and releases/gcc-13 branch - PRs analyzer/108722, bootstrap/109510, c++/109277, c++/109357, c++/109420, diff --git a/gcc13-pr108969.patch b/gcc13-pr108969.patch deleted file mode 100644 index 88b4d4b..0000000 --- a/gcc13-pr108969.patch +++ /dev/null @@ -1,29 +0,0 @@ -libstdc++: Fix preprocessor condition in linker script [PR108969] - -The linker script is preprocessed with $(top_builddir)/config.h not the -include/$target/bits/c++config.h version, which means that configure -macros do not have the _GLIBCXX_ prefix yet. - -The _GLIBCXX_SYMVER_GNU and _GLIBCXX_SHARED checks are redundant, -because the gnu.ver file is only used for _GLIBCXX_SYMVER_GNU and the -linker script is only used for the shared library. Remove those. - -libstdc++-v3/ChangeLog: - - PR libstdc++/108969 - * config/abi/pre/gnu.ver: Fix preprocessor condition. - ---- libstdc++-v3/config/abi/pre/gnu.ver -+++ libstdc++-v3/config/abi/pre/gnu.ver -@@ -2512,9 +2512,8 @@ GLIBCXX_3.4.31 { - _ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE[012]EEcvbEv; - _ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE[012]EEcvbEv; - --#if defined(_GLIBCXX_SYMVER_GNU) && defined(_GLIBCXX_SHARED) \ -- && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \ -- && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT) -+#if defined(HAVE_AS_SYMVER_DIRECTIVE) \ -+ && defined(HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT) - # See src/c++98/globals_io.cc - _ZSt3cin; - _ZSt4cout; diff --git a/sources b/sources index 9c0b2e6..f12246b 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.1-20230418.tar.xz) = 2015b135608474d16dde00cccf03a405898494eb2988048e781b9ae64e3b8a7a6d3b4faf3ca30185ec9e18cd7728d5fdc195aaedc25c75ccc59c5105d1424fcd +SHA512 (gcc-13.0.1-20230419.tar.xz) = 4723c151479826238cd53f32577eb91578f0314aedda77598ce3d2e7b5287fd57789bfc42c3511e6716775fd895716a2974ad7a1afda248629af27445982deea SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be From ee018dc183d14211ea8016a8bf4a8c22c6174d1e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 21 Apr 2023 14:38:09 +0200 Subject: [PATCH 161/293] 13.0.1-0.16 --- .gitignore | 1 + gcc.spec | 16 ++++++++++++--- gcc13-pr109583.patch | 48 ++++++++++++++++++++++++++++++++++++++++++++ sources | 2 +- 4 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 gcc13-pr109583.patch diff --git a/.gitignore b/.gitignore index 3db1818..3beff17 100644 --- a/.gitignore +++ b/.gitignore @@ -102,3 +102,4 @@ /gcc-13.0.1-20230404.tar.xz /gcc-13.0.1-20230418.tar.xz /gcc-13.0.1-20230419.tar.xz +/gcc-13.0.1-20230421.tar.xz diff --git a/gcc.spec b/gcc.spec index c3a5fe9..8436907 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20230419 -%global gitrev fa3dfe9cf38be8a7cb0e7d0c11c67e8767f8e008 +%global DATE 20230421 +%global gitrev 4be14f2db84d42993908d17f2b66a655b5bc050d %global gcc_version 13.0.1 %global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.15%{?dist} +Release: %{gcc_release}.16%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -286,6 +286,7 @@ Patch8: gcc13-no-add-needed.patch Patch9: gcc13-Wno-format-security.patch Patch10: gcc13-rh1574936.patch Patch11: gcc13-d-shared-libphobos.patch +Patch12: gcc13-pr109583.patch Patch50: isl-rh2155127.patch @@ -862,6 +863,7 @@ so that there cannot be any synchronization problems. %patch -P10 -p0 -b .rh1574936~ %endif %patch -P11 -p0 -b .d-shared-libphobos~ +%patch -P12 -p0 -b .pr109583~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -2488,6 +2490,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxfp16intrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/prfchiintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/raointintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxcomplexintrin.h %endif %ifarch ia64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ia64intrin.h @@ -3458,6 +3461,13 @@ end %endif %changelog +* Fri Apr 21 2023 Jakub Jelinek 13.0.1-0.16 +- update from trunk and releases/gcc-13 branch + - GCC 13.1-rc3 + - PRs tree-optimization/109564 +- fix ICE on fneg/fadd optimization (PR tree-optimization/109583) +- include amxcomplexintrin.h header on x86 (#2188608) + * Wed Apr 19 2023 Jakub Jelinek 13.0.1-0.15 - update from trunk and releases/gcc-13 branch - GCC 13.1-rc2 diff --git a/gcc13-pr109583.patch b/gcc13-pr109583.patch new file mode 100644 index 0000000..537ca34 --- /dev/null +++ b/gcc13-pr109583.patch @@ -0,0 +1,48 @@ +2023-04-21 Jakub Jelinek + + PR tree-optimization/109583 + * match.pd (fneg/fadd simplify): Don't call related_vector_mode + if vec_mode is not VECTOR_MODE_P. + + * gcc.dg/pr109583.c: New test. + +--- gcc/match.pd.jj 2023-04-18 11:01:38.867871375 +0200 ++++ gcc/match.pd 2023-04-21 13:26:01.250166206 +0200 +@@ -8103,7 +8103,8 @@ and, + poly_uint64 wide_nunits; + scalar_mode inner_mode = GET_MODE_INNER (vec_mode); + } +- (if (sel.series_p (0, 2, 0, 2) ++ (if (VECTOR_MODE_P (vec_mode) ++ && sel.series_p (0, 2, 0, 2) + && sel.series_p (1, 2, nelts + 1, 2) + && GET_MODE_2XWIDER_MODE (inner_mode).exists (&wide_elt_mode) + && multiple_p (GET_MODE_NUNITS (vec_mode), 2, &wide_nunits) +--- gcc/testsuite/gcc.dg/pr109583.c.jj 2023-04-21 13:28:36.462911138 +0200 ++++ gcc/testsuite/gcc.dg/pr109583.c 2023-04-21 13:28:06.746342736 +0200 +@@ -0,0 +1,25 @@ ++/* PR tree-optimization/109583 */ ++/* { dg-do compile } */ ++/* { dg-options "-O1 -Wno-psabi" } */ ++/* { dg-additional-options "-mno-avx" { target i?86-*-* x86_64-*-* } } */ ++ ++typedef float v8sf __attribute__((vector_size (8 * sizeof (float)))); ++typedef int v8si __attribute__((vector_size (8 * sizeof (int)))); ++ ++#if __SIZEOF_INT__ == __SIZEOF_FLOAT__ ++v8sf ++foo (v8sf x, v8sf y) ++{ ++ v8sf a = x - y; ++ v8sf b = x + y; ++ return __builtin_shuffle (a, b, (v8si) { 0, 9, 2, 11, 4, 13, 6, 15 }); ++} ++ ++v8sf ++bar (v8sf x, v8sf y) ++{ ++ v8sf a = x + y; ++ v8sf b = x - y; ++ return __builtin_shuffle (a, b, (v8si) { 0, 9, 2, 11, 4, 13, 6, 15 }); ++} ++#endif diff --git a/sources b/sources index f12246b..57ed1a1 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.1-20230419.tar.xz) = 4723c151479826238cd53f32577eb91578f0314aedda77598ce3d2e7b5287fd57789bfc42c3511e6716775fd895716a2974ad7a1afda248629af27445982deea +SHA512 (gcc-13.0.1-20230421.tar.xz) = 75b36b5018e014e9c187f86de4333494c05760b0f1ddf02b46e969f477202d7998aadbbb6b3ee1f0a1ed950e764e4ad706f7040ae2845339c56d671fd812e148 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be From e31a1bddc0554b632b7fa2ee587e387c3ef9f6c2 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 21 Apr 2023 14:51:27 +0200 Subject: [PATCH 162/293] 13.0.1-0.16 --- gcc13-pr109583.patch | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/gcc13-pr109583.patch b/gcc13-pr109583.patch index 537ca34..1eb3708 100644 --- a/gcc13-pr109583.patch +++ b/gcc13-pr109583.patch @@ -8,16 +8,16 @@ --- gcc/match.pd.jj 2023-04-18 11:01:38.867871375 +0200 +++ gcc/match.pd 2023-04-21 13:26:01.250166206 +0200 -@@ -8103,7 +8103,8 @@ and, - poly_uint64 wide_nunits; - scalar_mode inner_mode = GET_MODE_INNER (vec_mode); - } -- (if (sel.series_p (0, 2, 0, 2) -+ (if (VECTOR_MODE_P (vec_mode) -+ && sel.series_p (0, 2, 0, 2) - && sel.series_p (1, 2, nelts + 1, 2) - && GET_MODE_2XWIDER_MODE (inner_mode).exists (&wide_elt_mode) - && multiple_p (GET_MODE_NUNITS (vec_mode), 2, &wide_nunits) +@@ -8095,7 +8095,8 @@ and, + poly_uint64 wide_nunits; + scalar_mode inner_mode = GET_MODE_INNER (vec_mode); + } +- (if (sel.series_p (0, 2, 0, 2) ++ (if (VECTOR_MODE_P (vec_mode) ++ && sel.series_p (0, 2, 0, 2) + && sel.series_p (1, 2, nelts + 1, 2) + && GET_MODE_2XWIDER_MODE (inner_mode).exists (&wide_elt_mode) + && multiple_p (GET_MODE_NUNITS (vec_mode), 2, &wide_nunits) --- gcc/testsuite/gcc.dg/pr109583.c.jj 2023-04-21 13:28:36.462911138 +0200 +++ gcc/testsuite/gcc.dg/pr109583.c 2023-04-21 13:28:06.746342736 +0200 @@ -0,0 +1,25 @@ From ca788bfdffb0f4bd7b210e848f2007cec8829de9 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 26 Apr 2023 10:58:06 +0200 Subject: [PATCH 163/293] 13.1.1-1 --- .gitignore | 1 + gcc.spec | 17 ++++++++------ gcc13-libstdc++-docs.patch | 4 ++-- gcc13-pr109583.patch | 48 -------------------------------------- sources | 2 +- update-gcc.sh | 2 +- 6 files changed, 15 insertions(+), 59 deletions(-) delete mode 100644 gcc13-pr109583.patch diff --git a/.gitignore b/.gitignore index 3beff17..d54fd05 100644 --- a/.gitignore +++ b/.gitignore @@ -103,3 +103,4 @@ /gcc-13.0.1-20230418.tar.xz /gcc-13.0.1-20230419.tar.xz /gcc-13.0.1-20230421.tar.xz +/gcc-13.1.1-20230426.tar.xz diff --git a/gcc.spec b/gcc.spec index 8436907..f562329 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20230421 -%global gitrev 4be14f2db84d42993908d17f2b66a655b5bc050d -%global gcc_version 13.0.1 +%global DATE 20230426 +%global gitrev 99aa4c60d1f6a96b09f65b669d44bbab206f0a75 +%global gcc_version 13.1.1 %global gcc_major 13 # 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 0 +%global gcc_release 1 %global nvptx_tools_gitrev 93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b %global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409 %global _unpackaged_files_terminate_build 0 @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.16%{?dist} +Release: %{gcc_release}%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -286,7 +286,6 @@ Patch8: gcc13-no-add-needed.patch Patch9: gcc13-Wno-format-security.patch Patch10: gcc13-rh1574936.patch Patch11: gcc13-d-shared-libphobos.patch -Patch12: gcc13-pr109583.patch Patch50: isl-rh2155127.patch @@ -863,7 +862,6 @@ so that there cannot be any synchronization problems. %patch -P10 -p0 -b .rh1574936~ %endif %patch -P11 -p0 -b .d-shared-libphobos~ -%patch -P12 -p0 -b .pr109583~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3461,6 +3459,11 @@ end %endif %changelog +* Wed Apr 26 2023 Jakub Jelinek 13.1.1-1 +- update from releases/gcc-13 branch + - GCC 13.1 release + - PRs c/107041, target/109566 + * Fri Apr 21 2023 Jakub Jelinek 13.0.1-0.16 - update from trunk and releases/gcc-13 branch - GCC 13.1-rc3 diff --git a/gcc13-libstdc++-docs.patch b/gcc13-libstdc++-docs.patch index 5a2fe27..6dffae6 100644 --- a/gcc13-libstdc++-docs.patch +++ b/gcc13-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 13.0.1 ++ Release 13.1.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 13.0.1 release, ++ for the 13.1.1 release, + online for each GCC release and diff --git a/gcc13-pr109583.patch b/gcc13-pr109583.patch deleted file mode 100644 index 1eb3708..0000000 --- a/gcc13-pr109583.patch +++ /dev/null @@ -1,48 +0,0 @@ -2023-04-21 Jakub Jelinek - - PR tree-optimization/109583 - * match.pd (fneg/fadd simplify): Don't call related_vector_mode - if vec_mode is not VECTOR_MODE_P. - - * gcc.dg/pr109583.c: New test. - ---- gcc/match.pd.jj 2023-04-18 11:01:38.867871375 +0200 -+++ gcc/match.pd 2023-04-21 13:26:01.250166206 +0200 -@@ -8095,7 +8095,8 @@ and, - poly_uint64 wide_nunits; - scalar_mode inner_mode = GET_MODE_INNER (vec_mode); - } -- (if (sel.series_p (0, 2, 0, 2) -+ (if (VECTOR_MODE_P (vec_mode) -+ && sel.series_p (0, 2, 0, 2) - && sel.series_p (1, 2, nelts + 1, 2) - && GET_MODE_2XWIDER_MODE (inner_mode).exists (&wide_elt_mode) - && multiple_p (GET_MODE_NUNITS (vec_mode), 2, &wide_nunits) ---- gcc/testsuite/gcc.dg/pr109583.c.jj 2023-04-21 13:28:36.462911138 +0200 -+++ gcc/testsuite/gcc.dg/pr109583.c 2023-04-21 13:28:06.746342736 +0200 -@@ -0,0 +1,25 @@ -+/* PR tree-optimization/109583 */ -+/* { dg-do compile } */ -+/* { dg-options "-O1 -Wno-psabi" } */ -+/* { dg-additional-options "-mno-avx" { target i?86-*-* x86_64-*-* } } */ -+ -+typedef float v8sf __attribute__((vector_size (8 * sizeof (float)))); -+typedef int v8si __attribute__((vector_size (8 * sizeof (int)))); -+ -+#if __SIZEOF_INT__ == __SIZEOF_FLOAT__ -+v8sf -+foo (v8sf x, v8sf y) -+{ -+ v8sf a = x - y; -+ v8sf b = x + y; -+ return __builtin_shuffle (a, b, (v8si) { 0, 9, 2, 11, 4, 13, 6, 15 }); -+} -+ -+v8sf -+bar (v8sf x, v8sf y) -+{ -+ v8sf a = x + y; -+ v8sf b = x - y; -+ return __builtin_shuffle (a, b, (v8si) { 0, 9, 2, 11, 4, 13, 6, 15 }); -+} -+#endif diff --git a/sources b/sources index 57ed1a1..ffb1707 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.0.1-20230421.tar.xz) = 75b36b5018e014e9c187f86de4333494c05760b0f1ddf02b46e969f477202d7998aadbbb6b3ee1f0a1ed950e764e4ad706f7040ae2845339c56d671fd812e148 +SHA512 (gcc-13.1.1-20230426.tar.xz) = 7a588d7720c67fce57ab483168684195810a168f3234667151d0b76638d15ae50d8f9de0c9f2c2aaa1345e45c46577575b717dbb73f8cccce79932c37cacac5a SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be diff --git a/update-gcc.sh b/update-gcc.sh index b6c0315..0c357f3 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -3,5 +3,5 @@ git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 d=`date --iso | sed 's/-//g'` -git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-13.0.1-$d/ $1 | xz -9e > gcc-13.0.1-$d.tar.xz +git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-13.1.1-$d/ $1 | xz -9e > gcc-13.1.1-$d.tar.xz rm -rf gcc-dir.tmp From f18f04b3fb27e756f098bd81deba0d6b7dd15856 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 11 May 2023 14:38:05 +0200 Subject: [PATCH 164/293] 13.1.1-2 --- .gitignore | 1 + gcc.spec | 16 +++++++++++++--- sources | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index d54fd05..a274f6a 100644 --- a/.gitignore +++ b/.gitignore @@ -104,3 +104,4 @@ /gcc-13.0.1-20230419.tar.xz /gcc-13.0.1-20230421.tar.xz /gcc-13.1.1-20230426.tar.xz +/gcc-13.1.1-20230511.tar.xz diff --git a/gcc.spec b/gcc.spec index f562329..37709e6 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20230426 -%global gitrev 99aa4c60d1f6a96b09f65b669d44bbab206f0a75 +%global DATE 20230511 +%global gitrev 55ca611b161ce96d568ea82ff0e6ea395dc76957 %global gcc_version 13.1.1 %global gcc_major 13 # 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 1 +%global gcc_release 2 %global nvptx_tools_gitrev 93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b %global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409 %global _unpackaged_files_terminate_build 0 @@ -3459,6 +3459,16 @@ end %endif %changelog +* Thu May 11 2023 Jakub Jelinek 13.1.1-2 +- update from releases/gcc-13 branch + - PRs c++/91618, c++/96604, c++/109506, c++/109640, c++/109642, c++/109666, + c++/109671, c++/109756, c/107682, c/109409, c/109412, debug/109676, + fortran/109622, libffi/109447, libgomp/108098, libstdc++/40380, + libstdc++/109694, libstdc++/109703, rtl-optimization/109585, + target/108758, target/109069, target/109535, target/109661, + target/109762, tree-optimization/109573, tree-optimization/109609, + tree-optimization/109724, tree-optimization/109778 + * Wed Apr 26 2023 Jakub Jelinek 13.1.1-1 - update from releases/gcc-13 branch - GCC 13.1 release diff --git a/sources b/sources index ffb1707..7a82c78 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.1.1-20230426.tar.xz) = 7a588d7720c67fce57ab483168684195810a168f3234667151d0b76638d15ae50d8f9de0c9f2c2aaa1345e45c46577575b717dbb73f8cccce79932c37cacac5a +SHA512 (gcc-13.1.1-20230511.tar.xz) = 0ba5b1db652992b1abd356ac36a48c9db4ecd01c751ae3488dd8680199e678845d59bfb4b8d747b91bca258ea8d5a2c274f3bbb2039dd4de2f65942dd902a616 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be From 8f1aceb90beea8c643f2debf68f3bcbe00bc8348 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 19 May 2023 11:26:04 +0200 Subject: [PATCH 165/293] 13.1.1-3 --- .gitignore | 1 + gcc.spec | 13 ++++++++++--- sources | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index a274f6a..ad9cdaa 100644 --- a/.gitignore +++ b/.gitignore @@ -105,3 +105,4 @@ /gcc-13.0.1-20230421.tar.xz /gcc-13.1.1-20230426.tar.xz /gcc-13.1.1-20230511.tar.xz +/gcc-13.1.1-20230519.tar.xz diff --git a/gcc.spec b/gcc.spec index 37709e6..5dedde9 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20230511 -%global gitrev 55ca611b161ce96d568ea82ff0e6ea395dc76957 +%global DATE 20230519 +%global gitrev 75b6adf0fdb4d09b64cddfdce59a030f69071fc5 %global gcc_version 13.1.1 %global gcc_major 13 # 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 93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b %global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409 %global _unpackaged_files_terminate_build 0 @@ -3459,6 +3459,13 @@ end %endif %changelog +* Fri May 19 2023 Jakub Jelinek 13.1.1-3 +- update from releases/gcc-13 branch + - PRs c++/80488, c++/83258, c++/97700, c++/103807, c++/109651, c++/109745, + c++/109761, c++/109774, c++/109868, c++/109884, fortran/109641, + fortran/109846, libstdc++/109816, libstdc++/109883, target/104338, + target/109697 + * Thu May 11 2023 Jakub Jelinek 13.1.1-2 - update from releases/gcc-13 branch - PRs c++/91618, c++/96604, c++/109506, c++/109640, c++/109642, c++/109666, diff --git a/sources b/sources index 7a82c78..92b1935 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.1.1-20230511.tar.xz) = 0ba5b1db652992b1abd356ac36a48c9db4ecd01c751ae3488dd8680199e678845d59bfb4b8d747b91bca258ea8d5a2c274f3bbb2039dd4de2f65942dd902a616 +SHA512 (gcc-13.1.1-20230519.tar.xz) = 7969a54b13b9852790728ddb460297a899413fbfdf872f0ca06b4a1600cf6cafb532be6ec176f51abcde1f3cf0d87f8ac948e241ff20f152443c9c8d3eaf8455 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be From a9552bf745649e7a8e10e9e4fb7ecd6e7b62c11e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 14 Jun 2023 18:01:04 +0200 Subject: [PATCH 166/293] 13.1.1-4 --- .gitignore | 1 + gcc.spec | 18 +++++++++++++++--- sources | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index ad9cdaa..ecec0bc 100644 --- a/.gitignore +++ b/.gitignore @@ -106,3 +106,4 @@ /gcc-13.1.1-20230426.tar.xz /gcc-13.1.1-20230511.tar.xz /gcc-13.1.1-20230519.tar.xz +/gcc-13.1.1-20230614.tar.xz diff --git a/gcc.spec b/gcc.spec index 5dedde9..a33ce2d 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20230519 -%global gitrev 75b6adf0fdb4d09b64cddfdce59a030f69071fc5 +%global DATE 20230614 +%global gitrev 0d7019741b037c7e9c4e57d6de3bce6bb2ed8026 %global gcc_version 13.1.1 %global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 3 +%global gcc_release 4 %global nvptx_tools_gitrev 93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b %global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409 %global _unpackaged_files_terminate_build 0 @@ -3459,6 +3459,18 @@ end %endif %changelog +* Wed Jun 14 2023 Jakub Jelinek 13.1.1-4 +- update from releases/gcc-13 branch + - PRs bootstrap/110085, c++/109871, fortran/100607, libgcc/109670, + libgcc/109685, libstdc++/108178, libstdc++/109261, libstdc++/109758, + libstdc++/109822, libstdc++/109949, libstdc++/110139, + middle-end/110200, target/82931, target/92729, target/104327, + target/105753, target/106907, target/109547, target/109650, + target/109800, target/109939, target/109954, target/110036, + target/110044, target/110088, target/110108, target/110227, + tree-optimization/109505, tree-optimization/110165, + tree-optimization/110166 + * Fri May 19 2023 Jakub Jelinek 13.1.1-3 - update from releases/gcc-13 branch - PRs c++/80488, c++/83258, c++/97700, c++/103807, c++/109651, c++/109745, diff --git a/sources b/sources index 92b1935..aaa2ce1 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.1.1-20230519.tar.xz) = 7969a54b13b9852790728ddb460297a899413fbfdf872f0ca06b4a1600cf6cafb532be6ec176f51abcde1f3cf0d87f8ac948e241ff20f152443c9c8d3eaf8455 +SHA512 (gcc-13.1.1-20230614.tar.xz) = 47deb22e3025f469cd54f60fd64cab91dd9bdc044224a2e913577d663f6218e8e7eaaf755a25e1e208c2f9a454bf657fcd2cb1b483c86805340b7fa65bcb2301 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be From f3a804c686d1b8a7f6f29b93193cb0108d86631b Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 16 Jun 2023 20:17:58 +0200 Subject: [PATCH 167/293] Make the Fortran patches hopefully apply again. --- gcc13-fortran-fdec-non-logical-if.patch | 4 ++-- gcc13-fortran-flogical-as-integer.patch | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/gcc13-fortran-fdec-non-logical-if.patch b/gcc13-fortran-fdec-non-logical-if.patch index a3a830c..3e3c915 100644 --- a/gcc13-fortran-fdec-non-logical-if.patch +++ b/gcc13-fortran-fdec-non-logical-if.patch @@ -53,7 +53,7 @@ diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index bc0df0fdb99..07dd039f3bf 100644 --- a/gcc/fortran/resolve.cc +++ b/gcc/fortran/resolve.cc -@@ -10789,10 +10789,31 @@ gfc_resolve_blocks (gfc_code *b, gfc_namespace *ns) +@@ -11030,10 +11030,31 @@ gfc_resolve_blocks (gfc_code *b, gfc_nam switch (b->op) { case EXEC_IF: @@ -89,7 +89,7 @@ index bc0df0fdb99..07dd039f3bf 100644 break; case EXEC_WHERE: -@@ -12093,11 +12114,32 @@ start: +@@ -12585,11 +12606,32 @@ start: break; case EXEC_IF: diff --git a/gcc13-fortran-flogical-as-integer.patch b/gcc13-fortran-flogical-as-integer.patch index 28df5e1..f40b143 100644 --- a/gcc13-fortran-flogical-as-integer.patch +++ b/gcc13-fortran-flogical-as-integer.patch @@ -44,7 +44,7 @@ diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index c075d0fa0c4..4b90cb59902 100644 --- a/gcc/fortran/resolve.cc +++ b/gcc/fortran/resolve.cc -@@ -3915,7 +3915,6 @@ lookup_uop_fuzzy (const char *op, gfc_symtree *uop) +@@ -4035,7 +4035,6 @@ lookup_uop_fuzzy (const char *op, gfc_sy return gfc_closest_fuzzy_match (op, candidates); } @@ -52,7 +52,7 @@ index c075d0fa0c4..4b90cb59902 100644 /* Callback finding an impure function as an operand to an .and. or .or. expression. Remember the last function warned about to avoid double warnings when recursing. */ -@@ -3975,6 +3974,22 @@ convert_hollerith_to_character (gfc_expr *e) +@@ -4095,6 +4094,22 @@ convert_hollerith_to_character (gfc_expr } } @@ -75,7 +75,7 @@ index c075d0fa0c4..4b90cb59902 100644 /* Convert to numeric and issue a warning for the conversion. */ static void -@@ -3987,6 +4002,22 @@ convert_to_numeric (gfc_expr *a, gfc_expr *b) +@@ -4107,6 +4122,22 @@ convert_to_numeric (gfc_expr *a, gfc_exp gfc_convert_type_warn (a, &t, 2, 1); } @@ -98,7 +98,7 @@ index c075d0fa0c4..4b90cb59902 100644 /* Resolve an operator expression node. This can involve replacing the operation with a user defined function call. */ -@@ -4072,6 +4103,12 @@ resolve_operator (gfc_expr *e) +@@ -4198,6 +4229,12 @@ resolve_operator (gfc_expr *e) case INTRINSIC_TIMES: case INTRINSIC_DIVIDE: case INTRINSIC_POWER: @@ -110,8 +110,8 @@ index c075d0fa0c4..4b90cb59902 100644 + if (gfc_numeric_ts (&op1->ts) && gfc_numeric_ts (&op2->ts)) { - gfc_type_convert_binary (e, 1); -@@ -4108,6 +4145,13 @@ resolve_operator (gfc_expr *e) + /* Do not perform conversions if operands are not conformable as +@@ -4245,6 +4282,13 @@ resolve_operator (gfc_expr *e) case INTRINSIC_OR: case INTRINSIC_EQV: case INTRINSIC_NEQV: @@ -125,7 +125,7 @@ index c075d0fa0c4..4b90cb59902 100644 if (op1->ts.type == BT_LOGICAL && op2->ts.type == BT_LOGICAL) { e->ts.type = BT_LOGICAL; -@@ -4158,6 +4202,9 @@ resolve_operator (gfc_expr *e) +@@ -4296,6 +4340,9 @@ resolve_operator (gfc_expr *e) goto simplify_op; } @@ -135,7 +135,7 @@ index c075d0fa0c4..4b90cb59902 100644 if (op1->ts.type == BT_LOGICAL) { e->ts.type = BT_LOGICAL; -@@ -4198,6 +4245,12 @@ resolve_operator (gfc_expr *e) +@@ -4336,6 +4383,12 @@ resolve_operator (gfc_expr *e) convert_hollerith_to_character (op2); } From 27512209124baf03388abd25ac046368a449b344 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Fri, 16 Jun 2023 14:31:24 -0400 Subject: [PATCH 168/293] Remove 3 gcc13-fortran-* patches --- gcc.spec | 6 - gcc13-fortran-fdec-non-logical-if.patch | 378 --------------- gcc13-fortran-fdec-override-kind.patch | 588 ------------------------ gcc13-fortran-flogical-as-integer.patch | 305 ------------ 4 files changed, 1277 deletions(-) delete mode 100644 gcc13-fortran-fdec-non-logical-if.patch delete mode 100644 gcc13-fortran-fdec-override-kind.patch delete mode 100644 gcc13-fortran-flogical-as-integer.patch diff --git a/gcc.spec b/gcc.spec index a33ce2d..3dd7f04 100644 --- a/gcc.spec +++ b/gcc.spec @@ -290,9 +290,6 @@ Patch11: gcc13-d-shared-libphobos.patch Patch50: isl-rh2155127.patch Patch100: gcc13-fortran-fdec-duplicates.patch -Patch101: gcc13-fortran-flogical-as-integer.patch -Patch102: gcc13-fortran-fdec-override-kind.patch -Patch103: gcc13-fortran-fdec-non-logical-if.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -868,9 +865,6 @@ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m %if 0%{?rhel} >= 9 %patch -P100 -p1 -b .fortran-fdec-duplicates~ -%patch -P101 -p1 -b .fortran-flogical-as-integer~ -%patch -P102 -p1 -b .fortran-fdec-override-kind~ -%patch -P103 -p1 -b .fortran-fdec-non-logical-if~ %endif %ifarch %{arm} diff --git a/gcc13-fortran-fdec-non-logical-if.patch b/gcc13-fortran-fdec-non-logical-if.patch deleted file mode 100644 index 3e3c915..0000000 --- a/gcc13-fortran-fdec-non-logical-if.patch +++ /dev/null @@ -1,378 +0,0 @@ -From cc87ddb841017bb0976b05091733609ee17d7f05 Mon Sep 17 00:00:00 2001 -From: Mark Eggleston -Date: Fri, 22 Jan 2021 13:15:17 +0000 -Subject: [PATCH 07/10] Allow non-logical expressions in IF statements - -Use -fdec-non-logical-if to enable feature. Also enabled using -fdec. ---- - gcc/fortran/lang.opt | 4 ++ - gcc/fortran/options.cc | 1 + - gcc/fortran/resolve.cc | 60 ++++++++++++++++--- - ...gical_expressions_if_statements_blocks_1.f | 25 ++++++++ - ...gical_expressions_if_statements_blocks_2.f | 25 ++++++++ - ...gical_expressions_if_statements_blocks_3.f | 25 ++++++++ - ...gical_expressions_if_statements_blocks_4.f | 45 ++++++++++++++ - ...gical_expressions_if_statements_blocks_5.f | 45 ++++++++++++++ - ...gical_expressions_if_statements_blocks_6.f | 45 ++++++++++++++ - 9 files changed, 266 insertions(+), 9 deletions(-) - create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f - -diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt -index 4a269ebb22d..d886c2f33ed 100644 ---- a/gcc/fortran/lang.opt -+++ b/gcc/fortran/lang.opt -@@ -506,6 +506,10 @@ fdec-override-kind - Fortran Var(flag_dec_override_kind) - Enable support for per variable kind specification. - -+fdec-non-logical-if -+Fortran Var(flag_dec_non_logical_if) -+Enable support for non-logical expressions in if statements. -+ - fdec-structure - Fortran Var(flag_dec_structure) - Enable support for DEC STRUCTURE/RECORD. -diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc -index edbab483b36..a946c86790a 100644 ---- a/gcc/fortran/options.cc -+++ b/gcc/fortran/options.cc -@@ -79,6 +79,7 @@ set_dec_flags (int value) - SET_BITFLAG (flag_dec_char_conversions, value, value); - SET_BITFLAG (flag_dec_duplicates, value, value); - SET_BITFLAG (flag_dec_override_kind, value, value); -+ SET_BITFLAG (flag_dec_non_logical_if, value, value); - } - - /* Finalize DEC flags. */ -diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc -index bc0df0fdb99..07dd039f3bf 100644 ---- a/gcc/fortran/resolve.cc -+++ b/gcc/fortran/resolve.cc -@@ -11030,10 +11030,31 @@ gfc_resolve_blocks (gfc_code *b, gfc_nam - switch (b->op) - { - case EXEC_IF: -- if (t && b->expr1 != NULL -- && (b->expr1->ts.type != BT_LOGICAL || b->expr1->rank != 0)) -- gfc_error ("IF clause at %L requires a scalar LOGICAL expression", -- &b->expr1->where); -+ if (t && b->expr1 != NULL) -+ { -+ if (flag_dec_non_logical_if && b->expr1->ts.type != BT_LOGICAL) -+ { -+ gfc_expr* cast; -+ cast = gfc_ne (b->expr1, -+ gfc_get_int_expr (1, &gfc_current_locus, 0), -+ INTRINSIC_NE); -+ if (cast == NULL) -+ gfc_internal_error ("gfc_resolve_blocks(): Failed to cast " -+ "to LOGICAL in IF"); -+ b->expr1 = cast; -+ if (warn_conversion_extra) -+ { -+ gfc_warning (OPT_Wconversion_extra, "Non-LOGICAL type in" -+ " IF statement condition %L will be true if" -+ " it evaluates to nonzero", -+ &b->expr1->where); -+ } -+ } -+ -+ if ((b->expr1->ts.type != BT_LOGICAL || b->expr1->rank != 0)) -+ gfc_error ("IF clause at %L requires a scalar LOGICAL " -+ "expression", &b->expr1->where); -+ } - break; - - case EXEC_WHERE: -@@ -12585,11 +12606,32 @@ start: - break; - - case EXEC_IF: -- if (t && code->expr1 != NULL -- && (code->expr1->ts.type != BT_LOGICAL -- || code->expr1->rank != 0)) -- gfc_error ("IF clause at %L requires a scalar LOGICAL expression", -- &code->expr1->where); -+ if (t && code->expr1 != NULL) -+ { -+ if (flag_dec_non_logical_if -+ && code->expr1->ts.type != BT_LOGICAL) -+ { -+ gfc_expr* cast; -+ cast = gfc_ne (code->expr1, -+ gfc_get_int_expr (1, &gfc_current_locus, 0), -+ INTRINSIC_NE); -+ if (cast == NULL) -+ gfc_internal_error ("gfc_resolve_code(): Failed to cast " -+ "to LOGICAL in IF"); -+ code->expr1 = cast; -+ if (warn_conversion_extra) -+ { -+ gfc_warning (OPT_Wconversion_extra, "Non-LOGICAL type in" -+ " IF statement condition %L will be true if" -+ " it evaluates to nonzero", -+ &code->expr1->where); -+ } -+ } -+ -+ if (code->expr1->ts.type != BT_LOGICAL || code->expr1->rank != 0) -+ gfc_error ("IF clause at %L requires a scalar LOGICAL " -+ "expression", &code->expr1->where); -+ } - break; - - case EXEC_CALL: -diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f -new file mode 100644 -index 00000000000..0101db893ca ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f -@@ -0,0 +1,25 @@ -+! { dg-do run } -+! { dg-options "-fdec -Wconversion-extra" } -+! -+! Allow logical expressions in if statements and blocks -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ PROGRAM logical_exp_if_st_bl -+ INTEGER ipos/1/ -+ INTEGER ineg/0/ -+ -+ ! Test non logical variables -+ if (ineg) STOP 1 ! { dg-warning "if it evaluates to nonzero" } -+ if (0) STOP 2 ! { dg-warning "if it evaluates to nonzero" } -+ -+ ! Test non logical expressions in if statements -+ if (MOD(ipos, 1)) STOP 3 ! { dg-warning "if it evaluates to nonzero" } -+ -+ ! Test non logical expressions in if blocks -+ if (MOD(2 * ipos, 2)) then ! { dg-warning "if it evaluates to nonzero" } -+ STOP 4 -+ endif -+ END -diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f -new file mode 100644 -index 00000000000..876f4e09508 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f -@@ -0,0 +1,25 @@ -+! { dg-do run } -+! { dg-options "-fdec-non-logical-if -Wconversion-extra" } -+! -+! Allow logical expressions in if statements and blocks -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ PROGRAM logical_exp_if_st_bl -+ INTEGER ipos/1/ -+ INTEGER ineg/0/ -+ -+ ! Test non logical variables -+ if (ineg) STOP 1 ! { dg-warning "if it evaluates to nonzero" } -+ if (0) STOP 2 ! { dg-warning "if it evaluates to nonzero" } -+ -+ ! Test non logical expressions in if statements -+ if (MOD(ipos, 1)) STOP 3 ! { dg-warning "if it evaluates to nonzero" } -+ -+ ! Test non logical expressions in if blocks -+ if (MOD(2 * ipos, 2)) then ! { dg-warning "if it evaluates to nonzero" } -+ STOP 4 -+ endif -+ END -diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f -new file mode 100644 -index 00000000000..35cb4c51b8d ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f -@@ -0,0 +1,25 @@ -+! { dg-do compile } -+! { dg-options "-fdec -fno-dec-non-logical-if" } -+! -+! Allow logical expressions in if statements and blocks -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ PROGRAM logical_exp_if_st_bl -+ INTEGER ipos/1/ -+ INTEGER ineg/0/ -+ -+ ! Test non logical variables -+ if (ineg) STOP 1 ! { dg-error "IF clause at" } -+ if (0) STOP 2 ! { dg-error "IF clause at" } -+ -+ ! Test non logical expressions in if statements -+ if (MOD(ipos, 1)) STOP 3 ! { dg-error "IF clause at" } -+ -+ ! Test non logical expressions in if blocks -+ if (MOD(2 * ipos, 2)) then ! { dg-error "IF clause at" } -+ STOP 4 -+ endif -+ END -diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f -new file mode 100644 -index 00000000000..7b60b60827f ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f -@@ -0,0 +1,45 @@ -+! { dg-do run } -+! { dg-options "-fdec -Wconversion-extra" } -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ function othersub1() -+ integer*4 othersub1 -+ othersub1 = 9 -+ end -+ -+ function othersub2() -+ integer*4 othersub2 -+ othersub2 = 0 -+ end -+ -+ program MAIN -+ integer*4 othersub1 -+ integer*4 othersub2 -+ integer a /1/ -+ integer b /2/ -+ -+ if (othersub1()) then ! { dg-warning "if it evaluates to nonzero" } -+ write(*,*) "OK" -+ else -+ stop 1 -+ end if -+ if (othersub2()) then ! { dg-warning "if it evaluates to nonzero" } -+ stop 2 -+ else -+ write(*,*) "OK" -+ end if -+ if (a-b) then ! { dg-warning "if it evaluates to nonzero" } -+ write(*,*) "OK" -+ else -+ stop 3 -+ end if -+ if (b-(a+1)) then ! { dg-warning "if it evaluates to nonzero" } -+ stop 3 -+ else -+ write(*,*) "OK" -+ end if -+ end -+ -diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f -new file mode 100644 -index 00000000000..80336f48ca1 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f -@@ -0,0 +1,45 @@ -+! { dg-do run } -+! { dg-options "-fdec-non-logical-if -Wconversion-extra" } -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ function othersub1() -+ integer*4 othersub1 -+ othersub1 = 9 -+ end -+ -+ function othersub2() -+ integer*4 othersub2 -+ othersub2 = 0 -+ end -+ -+ program MAIN -+ integer*4 othersub1 -+ integer*4 othersub2 -+ integer a /1/ -+ integer b /2/ -+ -+ if (othersub1()) then ! { dg-warning "Non-LOGICAL type in IF statement" } -+ write(*,*) "OK" -+ else -+ stop 1 -+ end if -+ if (othersub2()) then ! { dg-warning "Non-LOGICAL type in IF statement" } -+ stop 2 -+ else -+ write(*,*) "OK" -+ end if -+ if (a-b) then ! { dg-warning "Non-LOGICAL type in IF statement" } -+ write(*,*) "OK" -+ else -+ stop 3 -+ end if -+ if (b-(a+1)) then ! { dg-warning "Non-LOGICAL type in IF statement" } -+ stop 3 -+ else -+ write(*,*) "OK" -+ end if -+ end -+ -diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f -new file mode 100644 -index 00000000000..e1125ca717a ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f -@@ -0,0 +1,45 @@ -+! { dg-do compile } -+! { dg-options "-fdec -fno-dec-non-logical-if" } -+! -+! Contributed by Francisco Redondo Marchena -+! and Jeff Law -+! Modified by Mark Eggleston -+! -+ function othersub1() -+ integer*4 othersub1 -+ othersub1 = 9 -+ end -+ -+ function othersub2() -+ integer*4 othersub2 -+ othersub2 = 0 -+ end -+ -+ program MAIN -+ integer*4 othersub1 -+ integer*4 othersub2 -+ integer a /1/ -+ integer b /2/ -+ -+ if (othersub1()) then ! { dg-error "IF clause at" } -+ write(*,*) "OK" -+ else -+ stop 1 -+ end if -+ if (othersub2()) then ! { dg-error "IF clause at" } -+ stop 2 -+ else -+ write(*,*) "OK" -+ end if -+ if (a-b) then ! { dg-error "IF clause at" } -+ write(*,*) "OK" -+ else -+ stop 3 -+ end if -+ if (b-(a+1)) then ! { dg-error "IF clause at" } -+ stop 3 -+ else -+ write(*,*) "OK" -+ end if -+ end -+ --- -2.27.0 - diff --git a/gcc13-fortran-fdec-override-kind.patch b/gcc13-fortran-fdec-override-kind.patch deleted file mode 100644 index 370fa56..0000000 --- a/gcc13-fortran-fdec-override-kind.patch +++ /dev/null @@ -1,588 +0,0 @@ -From 786869fd62813e80da9b6545a295d53c36275c19 Mon Sep 17 00:00:00 2001 -From: Mark Eggleston -Date: Fri, 22 Jan 2021 13:12:14 +0000 -Subject: [PATCH 06/10] Allow string length and kind to be specified on a per - variable basis. - -This allows kind/length to be mixed with array specification in -declarations. - -e.g. - - INTEGER*4 x*2, y*8 - CHARACTER names*20(10) - REAL v(100)*8, vv*4(50) - -The per-variable size overrides the kind or length specified for the type. - -Use -fdec-override-kind to enable. Also enabled by -fdec. - -Note: this feature is a merger of two previously separate features. - -Now accepts named constants as kind parameters: - - INTEGER A - PARAMETER (A=2) - INTEGER B*(A) - -Contributed by Mark Eggleston - -Now rejects invalid kind parameters and prints error messages: - - INTEGER X*3 - -caused an internal compiler error. - -Contributed by Mark Eggleston ---- - gcc/fortran/decl.cc | 156 ++++++++++++++---- - gcc/fortran/lang.opt | 4 + - gcc/fortran/options.cc | 1 + - .../dec_mixed_char_array_declaration_1.f | 13 ++ - .../dec_mixed_char_array_declaration_2.f | 13 ++ - .../dec_mixed_char_array_declaration_3.f | 13 ++ - .../gfortran.dg/dec_spec_in_variable_1.f | 31 ++++ - .../gfortran.dg/dec_spec_in_variable_2.f | 31 ++++ - .../gfortran.dg/dec_spec_in_variable_3.f | 31 ++++ - .../gfortran.dg/dec_spec_in_variable_4.f | 14 ++ - .../gfortran.dg/dec_spec_in_variable_5.f | 19 +++ - .../gfortran.dg/dec_spec_in_variable_6.f | 19 +++ - .../gfortran.dg/dec_spec_in_variable_7.f | 15 ++ - .../gfortran.dg/dec_spec_in_variable_8.f | 14 ++ - 14 files changed, 340 insertions(+), 34 deletions(-) - create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f - create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f - -diff --git a/gcc/fortran/decl.cc b/gcc/fortran/decl.cc -index 5c8c1b7981b..f7dc9d8263d 100644 ---- a/gcc/fortran/decl.cc -+++ b/gcc/fortran/decl.cc -@@ -1213,6 +1213,54 @@ syntax: - return MATCH_ERROR; - } - -+/* This matches the nonstandard kind given after a variable name, like: -+ INTEGER x*2, y*4 -+ The per-variable kind will override any kind given in the type -+ declaration. -+*/ -+ -+static match -+match_per_symbol_kind (int *length) -+{ -+ match m; -+ gfc_expr *expr = NULL; -+ -+ m = gfc_match_char ('*'); -+ if (m != MATCH_YES) -+ return m; -+ -+ m = gfc_match_small_literal_int (length, NULL); -+ if (m == MATCH_YES || m == MATCH_ERROR) -+ return m; -+ -+ if (gfc_match_char ('(') == MATCH_NO) -+ return MATCH_ERROR; -+ -+ m = gfc_match_expr (&expr); -+ if (m == MATCH_YES) -+ { -+ m = MATCH_ERROR; // Assume error -+ if (gfc_expr_check_typed (expr, gfc_current_ns, false)) -+ { -+ if ((expr->expr_type == EXPR_CONSTANT) -+ && (expr->ts.type == BT_INTEGER)) -+ { -+ *length = mpz_get_si(expr->value.integer); -+ m = MATCH_YES; -+ } -+ } -+ -+ if (m == MATCH_YES) -+ { -+ if (gfc_match_char (')') == MATCH_NO) -+ m = MATCH_ERROR; -+ } -+ } -+ -+ if (expr != NULL) -+ gfc_free_expr (expr); -+ return m; -+} - - /* Special subroutine for finding a symbol. Check if the name is found - in the current name space. If not, and we're compiling a function or -@@ -2443,6 +2491,35 @@ check_function_name (char *name) - } - - -+static match -+match_character_length_clause (gfc_charlen **cl, bool *cl_deferred, int elem) -+{ -+ gfc_expr* char_len; -+ char_len = NULL; -+ -+ match m = match_char_length (&char_len, cl_deferred, false); -+ if (m == MATCH_YES) -+ { -+ *cl = gfc_new_charlen (gfc_current_ns, NULL); -+ (*cl)->length = char_len; -+ } -+ else if (m == MATCH_NO) -+ { -+ if (elem > 1 -+ && (current_ts.u.cl->length == NULL -+ || current_ts.u.cl->length->expr_type != EXPR_CONSTANT)) -+ { -+ *cl = gfc_new_charlen (gfc_current_ns, NULL); -+ (*cl)->length = gfc_copy_expr (current_ts.u.cl->length); -+ } -+ else -+ *cl = current_ts.u.cl; -+ -+ *cl_deferred = current_ts.deferred; -+ } -+ return m; -+} -+ - /* Match a variable name with an optional initializer. When this - subroutine is called, a variable is expected to be parsed next. - Depending on what is happening at the moment, updates either the -@@ -2453,7 +2530,7 @@ variable_decl (int elem) - { - char name[GFC_MAX_SYMBOL_LEN + 1]; - static unsigned int fill_id = 0; -- gfc_expr *initializer, *char_len; -+ gfc_expr *initializer; - gfc_array_spec *as; - gfc_array_spec *cp_as; /* Extra copy for Cray Pointees. */ - gfc_charlen *cl; -@@ -2462,11 +2539,15 @@ variable_decl (int elem) - match m; - bool t; - gfc_symbol *sym; -+ match cl_match; -+ match kind_match; -+ int overridden_kind; - char c; - - initializer = NULL; - as = NULL; - cp_as = NULL; -+ kind_match = MATCH_NO; - - /* When we get here, we've just matched a list of attributes and - maybe a type and a double colon. The next thing we expect to see -@@ -2519,6 +2600,28 @@ variable_decl (int elem) - - var_locus = gfc_current_locus; - -+ -+ cl = NULL; -+ cl_deferred = false; -+ cl_match = MATCH_NO; -+ -+ /* Check for a character length clause before an array clause */ -+ if (flag_dec_override_kind) -+ { -+ if (current_ts.type == BT_CHARACTER) -+ { -+ cl_match = match_character_length_clause (&cl, &cl_deferred, elem); -+ if (cl_match == MATCH_ERROR) -+ goto cleanup; -+ } -+ else -+ { -+ kind_match = match_per_symbol_kind (&overridden_kind); -+ if (kind_match == MATCH_ERROR) -+ goto cleanup; -+ } -+ } -+ - /* Now we could see the optional array spec. or character length. */ - m = gfc_match_array_spec (&as, true, true); - if (m == MATCH_ERROR) -@@ -2667,40 +2770,12 @@ variable_decl (int elem) - } - } - -- char_len = NULL; -- cl = NULL; -- cl_deferred = false; -- -- if (current_ts.type == BT_CHARACTER) -+ /* Second chance for a character length clause */ -+ if (cl_match == MATCH_NO && current_ts.type == BT_CHARACTER) - { -- switch (match_char_length (&char_len, &cl_deferred, false)) -- { -- case MATCH_YES: -- cl = gfc_new_charlen (gfc_current_ns, NULL); -- -- cl->length = char_len; -- break; -- -- /* Non-constant lengths need to be copied after the first -- element. Also copy assumed lengths. */ -- case MATCH_NO: -- if (elem > 1 -- && (current_ts.u.cl->length == NULL -- || current_ts.u.cl->length->expr_type != EXPR_CONSTANT)) -- { -- cl = gfc_new_charlen (gfc_current_ns, NULL); -- cl->length = gfc_copy_expr (current_ts.u.cl->length); -- } -- else -- cl = current_ts.u.cl; -- -- cl_deferred = current_ts.deferred; -- -- break; -- -- case MATCH_ERROR: -- goto cleanup; -- } -+ m = match_character_length_clause (&cl, &cl_deferred, elem); -+ if (m == MATCH_ERROR) -+ goto cleanup; - } - - /* The dummy arguments and result of the abreviated form of MODULE -@@ -2802,6 +2877,19 @@ variable_decl (int elem) - goto cleanup; - } - -+ if (kind_match == MATCH_YES) -+ { -+ gfc_find_symbol (name, gfc_current_ns, 1, &sym); -+ /* sym *must* be found at this point */ -+ sym->ts.kind = overridden_kind; -+ if (gfc_validate_kind (sym->ts.type, sym->ts.kind, true) < 0) -+ { -+ gfc_error ("Kind %d not supported for type %s at %C", -+ sym->ts.kind, gfc_basic_typename (sym->ts.type)); -+ return MATCH_ERROR; -+ } -+ } -+ - if (!check_function_name (name)) - { - m = MATCH_ERROR; -diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt -index 25cc948699b..4a269ebb22d 100644 ---- a/gcc/fortran/lang.opt -+++ b/gcc/fortran/lang.opt -@@ -502,6 +502,10 @@ fdec-math - Fortran Var(flag_dec_math) - Enable legacy math intrinsics for compatibility. - -+fdec-override-kind -+Fortran Var(flag_dec_override_kind) -+Enable support for per variable kind specification. -+ - fdec-structure - Fortran Var(flag_dec_structure) - Enable support for DEC STRUCTURE/RECORD. -diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc -index d6bd36c3a8a..edbab483b36 100644 ---- a/gcc/fortran/options.cc -+++ b/gcc/fortran/options.cc -@@ -78,6 +78,7 @@ set_dec_flags (int value) - SET_BITFLAG (flag_dec_blank_format_item, value, value); - SET_BITFLAG (flag_dec_char_conversions, value, value); - SET_BITFLAG (flag_dec_duplicates, value, value); -+ SET_BITFLAG (flag_dec_override_kind, value, value); - } - - /* Finalize DEC flags. */ -diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f -new file mode 100644 -index 00000000000..706ea4112a4 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f -@@ -0,0 +1,13 @@ -+! { dg-do run } -+! { dg-options "-fdec" } -+! -+! Test character declaration with mixed string length and array specification -+! -+! Contributed by Jim MacArthur -+! Modified by Mark Eggleston -+! -+ PROGRAM character_declaration -+ CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/ -+ CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/ -+ if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1 -+ END -diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f -new file mode 100644 -index 00000000000..26d2acf01de ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f -@@ -0,0 +1,13 @@ -+! { dg-do run } -+! { dg-options "-fdec-override-kind" } -+! -+! Test character declaration with mixed string length and array specification -+! -+! Contributed by Jim MacArthur -+! Modified by Mark Eggleston -+! -+ PROGRAM character_declaration -+ CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/ -+ CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/ -+ if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1 -+ END -diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f -new file mode 100644 -index 00000000000..76e4f0bdb93 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f -@@ -0,0 +1,13 @@ -+! { dg-do compile } -+! { dg-options "-fdec-override-kind -fno-dec-override-kind" } -+! -+! Test character declaration with mixed string length and array specification -+! -+! Contributed by Jim MacArthur -+! Modified by Mark Eggleston -+! -+ PROGRAM character_declaration -+ CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/ ! { dg-error "Syntax error" } -+ CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/ -+ if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1 ! { dg-error " Operands of comparison operator" } -+ END -diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f -new file mode 100644 -index 00000000000..edd0f5874b7 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f -@@ -0,0 +1,31 @@ -+! { dg-do run } -+! { dg-options "-fdec" } -+! -+! Test kind specification in variable not in type -+! -+! Contributed by Mark Eggleston -+! -+ program spec_in_var -+ integer*8 ai*1, bi*4, ci -+ real*4 ar*4, br*8, cr -+ -+ ai = 1 -+ ar = 1.0 -+ bi = 2 -+ br = 2.0 -+ ci = 3 -+ cr = 3.0 -+ -+ if (ai .ne. 1) stop 1 -+ if (abs(ar - 1.0) > 1.0D-6) stop 2 -+ if (bi .ne. 2) stop 3 -+ if (abs(br - 2.0) > 1.0D-6) stop 4 -+ if (ci .ne. 3) stop 5 -+ if (abs(cr - 3.0) > 1.0D-6) stop 6 -+ if (kind(ai) .ne. 1) stop 7 -+ if (kind(ar) .ne. 4) stop 8 -+ if (kind(bi) .ne. 4) stop 9 -+ if (kind(br) .ne. 8) stop 10 -+ if (kind(ci) .ne. 8) stop 11 -+ if (kind(cr) .ne. 4) stop 12 -+ end -diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f -new file mode 100644 -index 00000000000..bfaba584dbb ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f -@@ -0,0 +1,31 @@ -+! { dg-do run } -+! { dg-options "-fdec-override-kind" } -+! -+! Test kind specification in variable not in type -+! -+! Contributed by Mark Eggleston -+! -+ program spec_in_var -+ integer*8 ai*1, bi*4, ci -+ real*4 ar*4, br*8, cr -+ -+ ai = 1 -+ ar = 1.0 -+ bi = 2 -+ br = 2.0 -+ ci = 3 -+ cr = 3.0 -+ -+ if (ai .ne. 1) stop 1 -+ if (abs(ar - 1.0) > 1.0D-6) stop 2 -+ if (bi .ne. 2) stop 3 -+ if (abs(br - 2.0) > 1.0D-6) stop 4 -+ if (ci .ne. 3) stop 5 -+ if (abs(cr - 3.0) > 1.0D-6) stop 6 -+ if (kind(ai) .ne. 1) stop 7 -+ if (kind(ar) .ne. 4) stop 8 -+ if (kind(bi) .ne. 4) stop 9 -+ if (kind(br) .ne. 8) stop 10 -+ if (kind(ci) .ne. 8) stop 11 -+ if (kind(cr) .ne. 4) stop 12 -+ end -diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f -new file mode 100644 -index 00000000000..5ff434e7466 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f -@@ -0,0 +1,31 @@ -+! { dg-do compile } -+! { dg-options "-fdec -fno-dec-override-kind" } -+! -+! Test kind specification in variable not in type -+! -+! Contributed by Mark Eggleston -+! -+ program spec_in_var -+ integer*8 ai*1, bi*4, ci ! { dg-error "Syntax error" } -+ real*4 ar*4, br*8, cr ! { dg-error "Syntax error" } -+ -+ ai = 1 -+ ar = 1.0 -+ bi = 2 -+ br = 2.0 -+ ci = 3 -+ cr = 3.0 -+ -+ if (ai .ne. 1) stop 1 -+ if (abs(ar - 1.0) > 1.0D-6) stop 2 -+ if (bi .ne. 2) stop 3 -+ if (abs(br - 2.0) > 1.0D-6) stop 4 -+ if (ci .ne. 3) stop 5 -+ if (abs(cr - 3.0) > 1.0D-6) stop 6 -+ if (kind(ai) .ne. 1) stop 7 -+ if (kind(ar) .ne. 4) stop 8 -+ if (kind(bi) .ne. 4) stop 9 -+ if (kind(br) .ne. 8) stop 10 -+ if (kind(ci) .ne. 8) stop 11 -+ if (kind(cr) .ne. 4) stop 12 -+ end -diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f -new file mode 100644 -index 00000000000..c01980e8b9d ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f -@@ -0,0 +1,14 @@ -+! { dg-do compile } -+! -+! Test kind specification in variable not in type. The per variable -+! kind specification is not enabled so these should fail -+! -+! Contributed by Mark Eggleston -+! -+ program spec_in_var -+ integer a -+ parameter(a=2) -+ integer b*(a) ! { dg-error "Syntax error" } -+ real c*(8) ! { dg-error "Syntax error" } -+ logical d*1_1 ! { dg-error "Syntax error" } -+ end -diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f -new file mode 100644 -index 00000000000..e2f39da3f4f ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f -@@ -0,0 +1,19 @@ -+! { dg-do run } -+! { dg-options "-fdec-override-kind" } -+! -+! Test kind specification in variable not in type -+! -+! Contributed by Mark Eggleston -+! -+ program spec_in_var -+ integer a -+ parameter(a=2) -+ integer b*(a) -+ real c*(8) -+ logical d*(1_1) -+ character e*(a) -+ if (kind(b).ne.2) stop 1 -+ if (kind(c).ne.8) stop 2 -+ if (kind(d).ne.1) stop 3 -+ if (len(e).ne.2) stop 4 -+ end -diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f -new file mode 100644 -index 00000000000..569747874e3 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f -@@ -0,0 +1,19 @@ -+! { dg-do run } -+! { dg-options "-fdec" } -+! -+! Test kind specification in variable not in type -+! -+! Contributed by Mark Eggleston -+! -+ program spec_in_var -+ integer a -+ parameter(a=2) -+ integer b*(a) -+ real c*(8) -+ logical d*(1_1) -+ character e*(a) -+ if (kind(b).ne.2) stop 1 -+ if (kind(c).ne.8) stop 2 -+ if (kind(d).ne.1) stop 3 -+ if (len(e).ne.2) stop 4 -+ end -diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f -new file mode 100644 -index 00000000000..b975bfd15c5 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f -@@ -0,0 +1,15 @@ -+! { dg-do compile } -+! { dg-options "-fdec -fno-dec-override-kind" } -+! -+! Test kind specification in variable not in type as the per variable -+! kind specification is not enables these should fail -+! -+! Contributed by Mark Eggleston -+! -+ program spec_in_var -+ integer a -+ parameter(a=2) -+ integer b*(a) ! { dg-error "Syntax error" } -+ real c*(8) ! { dg-error "Syntax error" } -+ logical d*1_1 ! { dg-error "Syntax error" } -+ end -diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f -new file mode 100644 -index 00000000000..85732e0bd85 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f -@@ -0,0 +1,14 @@ -+! { dg-do compile } -+! { dg-options "-fdec" } -+! -+! Check that invalid kind values are rejected. -+! -+! Contributed by Mark Eggleston -+! -+ program spec_in_var -+ integer a -+ parameter(a=3) -+ integer b*(a) ! { dg-error "Kind 3 not supported" } -+ real c*(78) ! { dg-error "Kind 78 not supported" } -+ logical d*(*) ! { dg-error "Invalid character" } -+ end --- -2.27.0 - diff --git a/gcc13-fortran-flogical-as-integer.patch b/gcc13-fortran-flogical-as-integer.patch deleted file mode 100644 index f40b143..0000000 --- a/gcc13-fortran-flogical-as-integer.patch +++ /dev/null @@ -1,305 +0,0 @@ -From 9b45f3063dfd2b893e7963a4828c1b0afecdc68a Mon Sep 17 00:00:00 2001 -From: Mark Eggleston -Date: Fri, 22 Jan 2021 12:41:46 +0000 -Subject: [PATCH 02/10] Convert LOGICAL to INTEGER for arithmetic ops, and vice - versa - -We allow converting LOGICAL types to INTEGER when doing arithmetic -operations, and converting INTEGER types to LOGICAL for use in -boolean operations. - -This feature is enabled with the -flogical-as-integer flag. - -Note: using this feature will disable bitwise logical operations enabled by --fdec. ---- - gcc/fortran/lang.opt | 4 ++ - gcc/fortran/resolve.cc | 55 ++++++++++++++++++- - .../logical_to_integer_and_vice_versa_1.f | 31 +++++++++++ - .../logical_to_integer_and_vice_versa_2.f | 31 +++++++++++ - .../logical_to_integer_and_vice_versa_3.f | 33 +++++++++++ - .../logical_to_integer_and_vice_versa_4.f | 33 +++++++++++ - 6 files changed, 186 insertions(+), 1 deletion(-) - create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f - create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f - create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f - create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f - -diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt -index 52bd522051e..c4da248f07c 100644 ---- a/gcc/fortran/lang.opt -+++ b/gcc/fortran/lang.opt -@@ -497,6 +497,10 @@ fdec-static - Fortran Var(flag_dec_static) - Enable DEC-style STATIC and AUTOMATIC attributes. - -+flogical-as-integer -+Fortran Var(flag_logical_as_integer) -+Convert from integer to logical or logical to integer for arithmetic operations. -+ - fdefault-double-8 - Fortran Var(flag_default_double) - Set the default double precision kind to an 8 byte wide type. -diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc -index c075d0fa0c4..4b90cb59902 100644 ---- a/gcc/fortran/resolve.cc -+++ b/gcc/fortran/resolve.cc -@@ -4035,7 +4035,6 @@ lookup_uop_fuzzy (const char *op, gfc_sy - return gfc_closest_fuzzy_match (op, candidates); - } - -- - /* Callback finding an impure function as an operand to an .and. or - .or. expression. Remember the last function warned about to - avoid double warnings when recursing. */ -@@ -4095,6 +4094,22 @@ convert_hollerith_to_character (gfc_expr - } - } - -+/* If E is a logical, convert it to an integer and issue a warning -+ for the conversion. */ -+ -+static void -+convert_integer_to_logical (gfc_expr *e) -+{ -+ if (e->ts.type == BT_INTEGER) -+ { -+ /* Convert to LOGICAL */ -+ gfc_typespec t; -+ t.type = BT_LOGICAL; -+ t.kind = 1; -+ gfc_convert_type_warn (e, &t, 2, 1); -+ } -+} -+ - /* Convert to numeric and issue a warning for the conversion. */ - - static void -@@ -4107,6 +4122,22 @@ convert_to_numeric (gfc_expr *a, gfc_exp - gfc_convert_type_warn (a, &t, 2, 1); - } - -+/* If E is a logical, convert it to an integer and issue a warning -+ for the conversion. */ -+ -+static void -+convert_logical_to_integer (gfc_expr *e) -+{ -+ if (e->ts.type == BT_LOGICAL) -+ { -+ /* Convert to INTEGER */ -+ gfc_typespec t; -+ t.type = BT_INTEGER; -+ t.kind = 1; -+ gfc_convert_type_warn (e, &t, 2, 1); -+ } -+} -+ - /* Resolve an operator expression node. This can involve replacing the - operation with a user defined function call. */ - -@@ -4198,6 +4229,12 @@ resolve_operator (gfc_expr *e) - case INTRINSIC_TIMES: - case INTRINSIC_DIVIDE: - case INTRINSIC_POWER: -+ if (flag_logical_as_integer) -+ { -+ convert_logical_to_integer (op1); -+ convert_logical_to_integer (op2); -+ } -+ - if (gfc_numeric_ts (&op1->ts) && gfc_numeric_ts (&op2->ts)) - { - /* Do not perform conversions if operands are not conformable as -@@ -4245,6 +4282,13 @@ resolve_operator (gfc_expr *e) - case INTRINSIC_OR: - case INTRINSIC_EQV: - case INTRINSIC_NEQV: -+ -+ if (flag_logical_as_integer) -+ { -+ convert_integer_to_logical (op1); -+ convert_integer_to_logical (op2); -+ } -+ - if (op1->ts.type == BT_LOGICAL && op2->ts.type == BT_LOGICAL) - { - e->ts.type = BT_LOGICAL; -@@ -4296,6 +4340,9 @@ resolve_operator (gfc_expr *e) - goto simplify_op; - } - -+ if (flag_logical_as_integer) -+ convert_integer_to_logical (op1); -+ - if (op1->ts.type == BT_LOGICAL) - { - e->ts.type = BT_LOGICAL; -@@ -4336,6 +4383,12 @@ resolve_operator (gfc_expr *e) - convert_hollerith_to_character (op2); - } - -+ if (flag_logical_as_integer) -+ { -+ convert_logical_to_integer (op1); -+ convert_logical_to_integer (op2); -+ } -+ - if (op1->ts.type == BT_CHARACTER && op2->ts.type == BT_CHARACTER - && op1->ts.kind == op2->ts.kind) - { -diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f -new file mode 100644 -index 00000000000..938a91d9e9a ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f -@@ -0,0 +1,31 @@ -+! { dg-do run } -+! { dg-options "-std=legacy -flogical-as-integer" } -+! -+! Test conversion between logical and integer for logical operators -+! -+! Test case contributed by Jim MacArthur -+! Modified for -flogical-as-integer by Mark Eggleston -+! -+! -+ PROGRAM logical_integer_conversion -+ LOGICAL lpos /.true./ -+ INTEGER ineg/0/ -+ INTEGER ires -+ LOGICAL lres -+ -+ ! Test Logicals converted to Integers -+ if ((lpos.AND.ineg).EQ.1) STOP 3 -+ if ((ineg.AND.lpos).NE.0) STOP 4 -+ ires = (.true..AND.0) -+ if (ires.NE.0) STOP 5 -+ ires = (1.AND..false.) -+ if (ires.EQ.1) STOP 6 -+ -+ ! Test Integers converted to Logicals -+ if (lpos.EQ.ineg) STOP 7 -+ if (ineg.EQ.lpos) STOP 8 -+ lres = (.true..EQ.0) -+ if (lres) STOP 9 -+ lres = (1.EQ..false.) -+ if (lres) STOP 10 -+ END -diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f -new file mode 100644 -index 00000000000..9f146202ba5 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f -@@ -0,0 +1,31 @@ -+! { dg-do compile } -+! { dg-options "-std=legacy -flogical-as-integer -fno-logical-as-integer" } -+! -+! Based on logical_to_integer_and_vice_versa_1.f but with option disabled -+! to test for error messages. -+! -+! Test case contributed by by Mark Eggleston -+! -+! -+ PROGRAM logical_integer_conversion -+ LOGICAL lpos /.true./ -+ INTEGER ineg/0/ -+ INTEGER ires -+ LOGICAL lres -+ -+ ! Test Logicals converted to Integers -+ if ((lpos.AND.ineg).EQ.1) STOP 3 ! { dg-error "Operands of logical operator" } -+ if ((ineg.AND.lpos).NE.0) STOP 4 ! { dg-error "Operands of logical operator" } -+ ires = (.true..AND.0) ! { dg-error "Operands of logical operator" } -+ if (ires.NE.0) STOP 5 -+ ires = (1.AND..false.) ! { dg-error "Operands of logical operator" } -+ if (ires.EQ.1) STOP 6 -+ -+ ! Test Integers converted to Logicals -+ if (lpos.EQ.ineg) STOP 7 ! { dg-error "Operands of comparison operator" } -+ if (ineg.EQ.lpos) STOP 8 ! { dg-error "Operands of comparison operator" } -+ lres = (.true..EQ.0) ! { dg-error "Operands of comparison operator" } -+ if (lres) STOP 9 -+ lres = (1.EQ..false.) ! { dg-error "Operands of comparison operator" } -+ if (lres) STOP 10 -+ END -diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f -new file mode 100644 -index 00000000000..446873eb2dc ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f -@@ -0,0 +1,33 @@ -+! { dg-do compile } -+! { dg-options "-std=legacy -flogical-as-integer" } -+! -+! Test conversion between logical and integer for logical operators -+! -+ program test -+ logical f /.false./ -+ logical t /.true./ -+ real x -+ -+ x = 7.7 -+ x = x + t*3.0 -+ if (abs(x - 10.7).gt.0.00001) stop 1 -+ x = x + .false.*5.0 -+ if (abs(x - 10.7).gt.0.00001) stop 2 -+ x = x - .true.*5.0 -+ if (abs(x - 5.7).gt.0.00001) stop 3 -+ x = x + t -+ if (abs(x - 6.7).gt.0.00001) stop 4 -+ x = x + f -+ if (abs(x - 6.7).gt.0.00001) stop 5 -+ x = x - t -+ if (abs(x - 5.7).gt.0.00001) stop 6 -+ x = x - f -+ if (abs(x - 5.7).gt.0.00001) stop 7 -+ x = x**.true. -+ if (abs(x - 5.7).gt.0.00001) stop 8 -+ x = x**.false. -+ if (abs(x - 1.0).gt.0.00001) stop 9 -+ x = x/t -+ if (abs(x - 1.0).gt.0.00001) stop 10 -+ if ((x/.false.).le.huge(x)) stop 11 -+ end -diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f -new file mode 100644 -index 00000000000..4301a4988d8 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f -@@ -0,0 +1,33 @@ -+! { dg-do compile } -+! { dg-options "-std=legacy -flogical-as-integer -fno-logical-as-integer" } -+! -+! Test conversion between logical and integer for logical operators -+! -+ program test -+ logical f /.false./ -+ logical t /.true./ -+ real x -+ -+ x = 7.7 -+ x = x + t*3.0 ! { dg-error "Operands of binary numeric" } -+ if (abs(x - 10.7).gt.0.00001) stop 1 -+ x = x + .false.*5.0 ! { dg-error "Operands of binary numeric" } -+ if (abs(x - 10.7).gt.0.00001) stop 2 -+ x = x - .true.*5.0 ! { dg-error "Operands of binary numeric" } -+ if (abs(x - 5.7).gt.0.00001) stop 3 -+ x = x + t ! { dg-error "Operands of binary numeric" } -+ if (abs(x - 6.7).gt.0.00001) stop 4 -+ x = x + f ! { dg-error "Operands of binary numeric" } -+ if (abs(x - 6.7).gt.0.00001) stop 5 -+ x = x - t ! { dg-error "Operands of binary numeric" } -+ if (abs(x - 5.7).gt.0.00001) stop 6 -+ x = x - f ! { dg-error "Operands of binary numeric" } -+ if (abs(x - 5.7).gt.0.00001) stop 7 -+ x = x**.true. ! { dg-error "Operands of binary numeric" } -+ if (abs(x - 5.7).gt.0.00001) stop 8 -+ x = x**.false. ! { dg-error "Operands of binary numeric" } -+ if (abs(x - 1.0).gt.0.00001) stop 9 -+ x = x/t ! { dg-error "Operands of binary numeric" } -+ if (abs(x - 1.0).gt.0.00001) stop 10 -+ if ((x/.false.).le.huge(x)) stop 11 ! { dg-error "Operands of binary numeric" } -+ end --- -2.27.0 - From 31fb0540394f44bf55e185753a0d107d4228ddad Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 19 Jul 2023 20:52:11 +0000 Subject: [PATCH 169/293] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gcc.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 3dd7f04..4c1d27e 100644 --- a/gcc.spec +++ b/gcc.spec @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist} +Release: %{gcc_release}%{?dist}.1 # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3453,6 +3453,9 @@ end %endif %changelog +* Wed Jul 19 2023 Fedora Release Engineering - 13.1.1-4.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Wed Jun 14 2023 Jakub Jelinek 13.1.1-4 - update from releases/gcc-13 branch - PRs bootstrap/110085, c++/109871, fortran/100607, libgcc/109670, From 4e02d56d94df8145466c633b2be0b8635f73028a Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 28 Jul 2023 18:57:41 +0200 Subject: [PATCH 170/293] 13.2.1-1 --- .gitignore | 1 + gcc.spec | 38 +++++++++++++++++++++++++++++++++----- gcc13-libstdc++-docs.patch | 4 ++-- sources | 2 +- update-gcc.sh | 2 +- 5 files changed, 38 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index ecec0bc..267dfa7 100644 --- a/.gitignore +++ b/.gitignore @@ -107,3 +107,4 @@ /gcc-13.1.1-20230511.tar.xz /gcc-13.1.1-20230519.tar.xz /gcc-13.1.1-20230614.tar.xz +/gcc-13.2.1-20230728.tar.xz diff --git a/gcc.spec b/gcc.spec index 4c1d27e..45edab1 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20230614 -%global gitrev 0d7019741b037c7e9c4e57d6de3bce6bb2ed8026 -%global gcc_version 13.1.1 +%global DATE 20230728 +%global gitrev 8a3e2d71f2a0309540e68c79dadd66a06ca3da73 +%global gcc_version 13.2.1 %global gcc_major 13 # 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 4 +%global gcc_release 1 %global nvptx_tools_gitrev 93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b %global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409 %global _unpackaged_files_terminate_build 0 @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist}.1 +Release: %{gcc_release}%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3453,6 +3453,34 @@ end %endif %changelog +* Fri Jul 28 2023 Jakub Jelinek 13.2.1-1 +- update from releases/gcc-13 branch + - GCC 13.2 release + - PRs c++/109247, c++/110102, c++/110122, c++/110463, c++/110468, + c++/110524, c++/110535, c++/110595, c++/110809, d/103944, d/106977, + d/108842, d/108962, d/110113, d/110359, d/110471, d/110514, d/110516, + debug/110295, fortran/86277, fortran/95947, fortran/100297, + fortran/110288, fortran/110585, fortran/110658, ipa/109983, + ipa/110276, libgcc/109712, libgcc/110179, libstdc++/95048, + libstdc++/100285, libstdc++/104299, libstdc++/109741, + libstdc++/109921, libstdc++/110149, libstdc++/110239, + libstdc++/110432, libstdc++/110542, libstdc++/110574, + middle-end/98619, middle-end/103979, middle-end/110055, + middle-end/110420, modula2/108121, modula2/109586, modula2/109675, + modula2/109729, modula2/110246, rtl-optimization/110237, + target/101469, target/105325, target/106966, target/108743, + target/109932, target/110011, target/110100, target/110132, + target/110136, target/110206, target/110264, target/110309, + target/110406, target/110560, target/110624, testsuite/66005, + testsuite/83904, testsuite/110230, tree-optimization/109143, + tree-optimization/110228, tree-optimization/110298, + tree-optimization/110381, tree-optimization/110392, + tree-optimization/110515, tree-optimization/110556, + tree-optimization/110557, tree-optimization/110669, + tree-optimization/110731, tree-optimization/110755, + tree-optimization/110766, tree-optimization/110799, + tree-optimization/110829 + * Wed Jul 19 2023 Fedora Release Engineering - 13.1.1-4.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild diff --git a/gcc13-libstdc++-docs.patch b/gcc13-libstdc++-docs.patch index 6dffae6..ce94f5d 100644 --- a/gcc13-libstdc++-docs.patch +++ b/gcc13-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 13.1.1 ++ Release 13.2.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 13.1.1 release, ++ for the 13.2.1 release, + online for each GCC release and diff --git a/sources b/sources index aaa2ce1..ccd2d08 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.1.1-20230614.tar.xz) = 47deb22e3025f469cd54f60fd64cab91dd9bdc044224a2e913577d663f6218e8e7eaaf755a25e1e208c2f9a454bf657fcd2cb1b483c86805340b7fa65bcb2301 +SHA512 (gcc-13.2.1-20230728.tar.xz) = 7698968e1eabfe8ae8ff79806d9c15a50e861b2776ea5968e6b1f2ebf399d7b62cc4066d7d43b3cd791b790f41c2da401c33a0b258b640bf4c1f1cebd2cac99a SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be diff --git a/update-gcc.sh b/update-gcc.sh index 0c357f3..b49ed15 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -3,5 +3,5 @@ git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 d=`date --iso | sed 's/-//g'` -git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-13.1.1-$d/ $1 | xz -9e > gcc-13.1.1-$d.tar.xz +git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-13.2.1-$d/ $1 | xz -9e > gcc-13.2.1-$d.tar.xz rm -rf gcc-dir.tmp From 267dcb128b5dbc43d6990a2587860d8bfbaa0590 Mon Sep 17 00:00:00 2001 From: Patsy Griffin Date: Mon, 31 Jul 2023 17:05:53 -0400 Subject: [PATCH 171/293] Allow for the optional removal of tzdata. See https://fedoraproject.org/wiki/Changes/AllowRemovalOfTzdata --- gcc.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gcc.spec b/gcc.spec index 45edab1..f286e6a 100644 --- a/gcc.spec +++ b/gcc.spec @@ -4,7 +4,7 @@ %global gcc_major 13 # 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 1 +%global gcc_release 2 %global nvptx_tools_gitrev 93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b %global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409 %global _unpackaged_files_terminate_build 0 @@ -375,7 +375,7 @@ Summary: GNU Standard C++ Library Autoreq: true Requires: glibc >= 2.10.90-7 BuildRequires: tzdata >= 2017c -Requires: tzdata >= 2017c +Recommends: tzdata >= 2017c %description -n libstdc++ The libstdc++ package contains a rewritten standard compliant GCC Standard @@ -3453,6 +3453,10 @@ end %endif %changelog +* Mon Jul 31 2023 Patsy Griffin 13.2.1-2 +- Allow for the optional removal of tzdata. +- See https://fedoraproject.org/wiki/Changes/AllowRemovalOfTzdata + * Fri Jul 28 2023 Jakub Jelinek 13.2.1-1 - update from releases/gcc-13 branch - GCC 13.2 release From 3245329e23d2bd6e8db5d73c01cc4690af7d48b3 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 6 Sep 2023 15:13:22 +0200 Subject: [PATCH 172/293] 13.2.1-2 --- .gitignore | 2 ++ gcc.spec | 38 ++++++++++++++++++++++++++++++++------ sources | 4 ++-- 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 267dfa7..ae41c63 100644 --- a/.gitignore +++ b/.gitignore @@ -108,3 +108,5 @@ /gcc-13.1.1-20230519.tar.xz /gcc-13.1.1-20230614.tar.xz /gcc-13.2.1-20230728.tar.xz +/gcc-13.2.1-20230906.tar.xz +/nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz diff --git a/gcc.spec b/gcc.spec index f286e6a..e756a83 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,11 +1,11 @@ -%global DATE 20230728 -%global gitrev 8a3e2d71f2a0309540e68c79dadd66a06ca3da73 +%global DATE 20230906 +%global gitrev d91ea9a1c7236c23fe896b4cb2b4f8130b92732c %global gcc_version 13.2.1 %global gcc_major 13 # 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 nvptx_tools_gitrev 93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b +%global nvptx_tools_gitrev aa3404ad5a496cda5d79a50bedb1344fd63e8763 %global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409 %global _unpackaged_files_terminate_build 0 %global _performance_build 1 @@ -375,7 +375,11 @@ Summary: GNU Standard C++ Library Autoreq: true Requires: glibc >= 2.10.90-7 BuildRequires: tzdata >= 2017c +%if 0%{?fedora} > 38 || 0%{?rhel} > 9 Recommends: tzdata >= 2017c +%else +Requires: tzdata >= 2017c +%endif %description -n libstdc++ The libstdc++ package contains a rewritten standard compliant GCC Standard @@ -3453,9 +3457,31 @@ end %endif %changelog -* Mon Jul 31 2023 Patsy Griffin 13.2.1-2 -- Allow for the optional removal of tzdata. -- See https://fedoraproject.org/wiki/Changes/AllowRemovalOfTzdata +* Wed Sep 6 2023 Jakub Jelinek 13.2.1-2 +- update from releases/gcc-13 branch + - PRs c++/92407, c++/106310, c++/106652, c++/109678, c++/109751, c++/110197, + c++/110566, c++/110927, debug/111080, fortran/99326, fortran/102109, + fortran/102112, fortran/102190, fortran/102532, fortran/108961, + fortran/109684, fortran/109948, fortran/110825, libgcc/110956, + libstdc++/110593, libstdc++/110708, libstdc++/110719, + libstdc++/110807, libstdc++/110860, libstdc++/110862, + libstdc++/110917, libstdc++/110968, libstdc++/110970, + libstdc++/110974, libstdc++/110990, middle-end/111017, modula2/108119, + modula2/108344, modula2/109779, modula2/109810, modula2/109830, + modula2/109879, modula2/109908, modula2/109952, modula2/110003, + modula2/110019, modula2/110125, modula2/110126, modula2/110161, + modula2/110174, modula2/110189, modula2/110284, modula2/110631, + modula2/110779, modula2/110865, target/89835, target/109713, + target/109725, target/110220, target/110484, target/110741, + target/111010, target/111127, tree-optimization/110280, + tree-optimization/110702, tree-optimization/110914, + tree-optimization/111015, tree-optimization/111019, + tree-optimization/111039, tree-optimization/111070, + tree-optimization/111109 + +* Mon Jul 31 2023 Patsy Griffin +- allow for the optional removal of tzdata + - see https://fedoraproject.org/wiki/Changes/AllowRemovalOfTzdata * Fri Jul 28 2023 Jakub Jelinek 13.2.1-1 - update from releases/gcc-13 branch diff --git a/sources b/sources index ccd2d08..aaff95b 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.2.1-20230728.tar.xz) = 7698968e1eabfe8ae8ff79806d9c15a50e861b2776ea5968e6b1f2ebf399d7b62cc4066d7d43b3cd791b790f41c2da401c33a0b258b640bf4c1f1cebd2cac99a +SHA512 (gcc-13.2.1-20230906.tar.xz) = f62a7a2779a79539181a725a0f8ac5a2ec4b51b942fe5648a1bfb388b05222006d780a5603c92de431f006446492e24e5b94c80d7988547e3dc98938a311a4dd SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 -SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be +SHA512 (nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz) = 33a024326426375533cb5dd9b68b2508f37540be418d2506bfa19a5f5866485e9af150469064e9059b68136ad8cb080b3b12e7eb5c6b7d1288cf6bfb3f6bb5d0 From 8eebf443734c3167ab94b93c5e9441b3146bc76d Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 8 Sep 2023 22:38:33 +0200 Subject: [PATCH 173/293] 13.2.1-2 --- gcc.spec | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index e756a83..1c52856 100644 --- a/gcc.spec +++ b/gcc.spec @@ -866,6 +866,8 @@ so that there cannot be any synchronization problems. %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 +sed -i -e 's/ -fcase / -fcase -Wno-all /' libgm2/*/Makefile.am +sed -i -e 's/ -fcase / -fcase -Wno-all /' libgm2/*/Makefile.in %if 0%{?rhel} >= 9 %patch -P100 -p1 -b .fortran-fdec-duplicates~ @@ -3457,7 +3459,7 @@ end %endif %changelog -* Wed Sep 6 2023 Jakub Jelinek 13.2.1-2 +* Fri Sep 8 2023 Jakub Jelinek 13.2.1-2 - update from releases/gcc-13 branch - PRs c++/92407, c++/106310, c++/106652, c++/109678, c++/109751, c++/110197, c++/110566, c++/110927, debug/111080, fortran/99326, fortran/102109, From c4ec5953ba5e9ddfe7cf16f098a94797076ecc07 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 18 Sep 2023 10:06:19 +0200 Subject: [PATCH 174/293] 13.2.1-3 --- .gitignore | 1 + gcc.spec | 13 ++++++++----- sources | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index ae41c63..4b7f502 100644 --- a/.gitignore +++ b/.gitignore @@ -110,3 +110,4 @@ /gcc-13.2.1-20230728.tar.xz /gcc-13.2.1-20230906.tar.xz /nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz +/gcc-13.2.1-20230918.tar.xz diff --git a/gcc.spec b/gcc.spec index 1c52856..2960f8d 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20230906 -%global gitrev d91ea9a1c7236c23fe896b4cb2b4f8130b92732c +%global DATE 20230918 +%global gitrev 45e56bb7a6c79b62ab17ac8e4e86c2e66c2554c1 %global gcc_version 13.2.1 %global gcc_major 13 # 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 aa3404ad5a496cda5d79a50bedb1344fd63e8763 %global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409 %global _unpackaged_files_terminate_build 0 @@ -866,8 +866,6 @@ so that there cannot be any synchronization problems. %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 -sed -i -e 's/ -fcase / -fcase -Wno-all /' libgm2/*/Makefile.am -sed -i -e 's/ -fcase / -fcase -Wno-all /' libgm2/*/Makefile.in %if 0%{?rhel} >= 9 %patch -P100 -p1 -b .fortran-fdec-duplicates~ @@ -3459,6 +3457,11 @@ end %endif %changelog +* Mon Sep 18 2023 Jakub Jelinek 13.2.1-3 +- update from releases/gcc-13 branch + - PRs c++/111357, modula2/111330, target/96762, target/111306, + target/111335, target/111340, target/111412 + * Fri Sep 8 2023 Jakub Jelinek 13.2.1-2 - update from releases/gcc-13 branch - PRs c++/92407, c++/106310, c++/106652, c++/109678, c++/109751, c++/110197, diff --git a/sources b/sources index aaff95b..80d614e 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.2.1-20230906.tar.xz) = f62a7a2779a79539181a725a0f8ac5a2ec4b51b942fe5648a1bfb388b05222006d780a5603c92de431f006446492e24e5b94c80d7988547e3dc98938a311a4dd +SHA512 (gcc-13.2.1-20230918.tar.xz) = 4106cd7fa1a6bd634dc75fccdd38c9cc923b9fc8b9f4ad15ff7eb1daf3e00809b84137909b39790360d86c1c98a63514872ecb3a7f79ae362e161cd525c391fe SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz) = 33a024326426375533cb5dd9b68b2508f37540be418d2506bfa19a5f5866485e9af150469064e9059b68136ad8cb080b3b12e7eb5c6b7d1288cf6bfb3f6bb5d0 From 666e815832a5cf898d459cb02a9422942b7fff17 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 11 Oct 2023 10:27:55 +0200 Subject: [PATCH 175/293] 13.2.1-4 --- .gitignore | 1 + gcc.spec | 15 ++++++++++++--- sources | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 4b7f502..947393e 100644 --- a/.gitignore +++ b/.gitignore @@ -111,3 +111,4 @@ /gcc-13.2.1-20230906.tar.xz /nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz /gcc-13.2.1-20230918.tar.xz +/gcc-13.2.1-20231011.tar.xz diff --git a/gcc.spec b/gcc.spec index 2960f8d..5d6c7c4 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20230918 -%global gitrev 45e56bb7a6c79b62ab17ac8e4e86c2e66c2554c1 +%global DATE 20231011 +%global gitrev dc4aa177146b55dd7bd0b2dd63c721f3eaf2d2a8 %global gcc_version 13.2.1 %global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 3 +%global gcc_release 4 %global nvptx_tools_gitrev aa3404ad5a496cda5d79a50bedb1344fd63e8763 %global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409 %global _unpackaged_files_terminate_build 0 @@ -3457,6 +3457,15 @@ end %endif %changelog +* Wed Oct 11 2023 Jakub Jelinek 13.2.1-4 +- update from releases/gcc-13 branch + - PRs ada/110488, ada/111434, c++/99631, c++/111471, c++/111485, c++/111493, + c++/111512, fortran/68155, fortran/92586, fortran/111674, + libstdc++/108046, libstdc++/111050, libstdc++/111102, + libstdc++/111511, middle-end/111699, modula2/111510, target/111121, + target/111411, tree-optimization/110315, tree-optimization/110386, + tree-optimization/111331, tree-optimization/111519 + * Mon Sep 18 2023 Jakub Jelinek 13.2.1-3 - update from releases/gcc-13 branch - PRs c++/111357, modula2/111330, target/96762, target/111306, diff --git a/sources b/sources index 80d614e..94cf85d 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.2.1-20230918.tar.xz) = 4106cd7fa1a6bd634dc75fccdd38c9cc923b9fc8b9f4ad15ff7eb1daf3e00809b84137909b39790360d86c1c98a63514872ecb3a7f79ae362e161cd525c391fe +SHA512 (gcc-13.2.1-20231011.tar.xz) = 24fea15e0b67a2faa3d5476b105983b474b654e9ec50cdffb1967f18338c098539d5bd39e99f5f607eb64f6b0cf6d8e3ae91c9d5ea8069fc10b566739971be60 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz) = 33a024326426375533cb5dd9b68b2508f37540be418d2506bfa19a5f5866485e9af150469064e9059b68136ad8cb080b3b12e7eb5c6b7d1288cf6bfb3f6bb5d0 From b2371a5073ce0b44db9e1b233159619217a519ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kadl=C4=8D=C3=ADk?= Date: Thu, 9 Nov 2023 10:22:15 +0100 Subject: [PATCH 176/293] Move gating tests to a different repo Remove the gating tests from here and use the tests from https://src.fedoraproject.org/tests/gcc There's more of them there, they are are more up-to-date, maintained by RHEL QA staff and re-used in other downstreams (CentOS Stream, RHEL, RHIVOS). --- plans/ci.fmf | 13 +- plans/prepare.sh | 54 ------ plans/provide_secondary_arch_rpms.sh | 64 +++++++ .../abs.c | 12 -- .../main.fmf | 26 --- .../runtest.sh | 52 ------ .../main.fmf | 29 --- .../runtest.sh | 53 ------ .../abc.f90 | 22 --- .../main.fmf | 38 ---- .../runtest.sh | 56 ------ .../builtin.c | 29 --- .../main.fmf | 33 ---- .../runtest.sh | 58 ------ .../foo.java | 5 - .../main.fmf | 39 ---- .../runtest.sh | 71 -------- .../main.fmf | 32 ---- .../runtest.sh | 54 ------ .../main.fmf | 12 -- .../runtest.sh | 50 ------ .../main.fmf | 17 -- .../runtest.sh | 55 ------ .../x.c | 8 - .../main.fmf | 17 -- .../runtest.sh | 52 ------ .../test.cc | 7 - .../main.fmf | 16 -- .../runtest.sh | 52 ------ .../tst.c | 6 - .../b.gdb | 2 - .../main.fmf | 17 -- .../runtest.sh | 52 ------ .../test.c | 6 - .../main.fmf | 16 -- .../runtest.sh | 56 ------ .../alloc1.f90 | 5 - .../main.fmf | 17 -- .../runtest.sh | 51 ------ .../main.fmf | 17 -- .../runtest.sh | 50 ------ .../main.fmf | 27 --- .../reproducer.cc | 14 -- .../runtest.sh | 66 ------- .../main.fmf | 16 -- .../reproducer.cc | 12 -- .../runtest.sh | 55 ------ .../main.fmf | 26 --- .../runtest.sh | 57 ------ .../f.cc | 15 -- .../main.fmf | 28 --- .../runtest.sh | 54 ------ .../unused_parameter_warning/main.fmf | 31 ---- .../unused_parameter_warning/runtest.sh | 60 ------- .../unused_parameter_warning/test.cpp | 2 - tests/Sanity/compile-rpm/main.fmf | 45 ----- tests/Sanity/compile-rpm/runtest.sh | 99 ----------- tests/Sanity/libitm-smoke/bins_aarch64.tar.gz | Bin 42861 -> 0 bytes tests/Sanity/libitm-smoke/bins_i686.tar.gz | Bin 18165 -> 0 bytes tests/Sanity/libitm-smoke/bins_ppc64.tar.gz | Bin 42218 -> 0 bytes tests/Sanity/libitm-smoke/bins_ppc64le.tar.gz | Bin 41583 -> 0 bytes tests/Sanity/libitm-smoke/bins_s390x.tar.gz | Bin 20507 -> 0 bytes tests/Sanity/libitm-smoke/bins_x86_64.tar.gz | Bin 19693 -> 0 bytes tests/Sanity/libitm-smoke/main.fmf | 34 ---- tests/Sanity/libitm-smoke/runtest.sh | 75 -------- tests/Sanity/rebuild-binutils/main.fmf | 70 -------- tests/Sanity/rebuild-binutils/runtest.sh | 89 ---------- tests/Sanity/rebuild-glibc/main.fmf | 84 --------- tests/Sanity/rebuild-glibc/runtest.sh | 79 --------- .../Sanity/test-m32-m64-options/clear_cache.c | 7 - tests/Sanity/test-m32-m64-options/cpp11.cpp | 78 -------- tests/Sanity/test-m32-m64-options/hello.c | 8 - tests/Sanity/test-m32-m64-options/hello.cpp | 7 - tests/Sanity/test-m32-m64-options/hello.f90 | 3 - .../test-m32-m64-options/lambda-template.C | 41 ----- tests/Sanity/test-m32-m64-options/main.fmf | 58 ------ tests/Sanity/test-m32-m64-options/omphello.c | 24 --- tests/Sanity/test-m32-m64-options/quad.c | 38 ---- tests/Sanity/test-m32-m64-options/runtest.sh | 167 ------------------ .../Sanity/test-m32-m64-options/thr-init-2.c | 20 --- tests/Sanity/test-m32-m64-options/tm.c | 34 ---- tests/fedora-flags/hello.c | 5 - tests/fedora-flags/hello.cpp | 5 - tests/fedora-flags/main.c | 6 - tests/fedora-flags/main.cpp | 6 - tests/fedora-flags/main.fmf | 10 -- tests/fedora-flags/runtest.sh | 29 --- tests/smoke-test/Makefile | 65 ------- tests/smoke-test/PURPOSE | 3 - tests/smoke-test/clear_cache.c | 7 - tests/smoke-test/hello.c | 7 - tests/smoke-test/hello.cpp | 7 - tests/smoke-test/hello.f90 | 3 - tests/smoke-test/main.fmf | 22 --- tests/smoke-test/omphello.c | 24 --- tests/smoke-test/quad.c | 38 ---- tests/smoke-test/runtest.sh | 127 ------------- tests/smoke-test/thr-init-2.c | 24 --- tests/smoke-test/tm.c | 34 ---- 99 files changed, 72 insertions(+), 3194 deletions(-) delete mode 100755 plans/prepare.sh create mode 100755 plans/provide_secondary_arch_rpms.sh delete mode 100644 tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c delete mode 100644 tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf delete mode 100755 tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh delete mode 100644 tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf delete mode 100755 tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh delete mode 100644 tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90 delete mode 100644 tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf delete mode 100755 tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh delete mode 100644 tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c delete mode 100644 tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf delete mode 100755 tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh delete mode 100644 tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java delete mode 100644 tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf delete mode 100755 tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh delete mode 100644 tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf delete mode 100755 tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh delete mode 100644 tests/Regression/bz1815504-Regression-in-the-line-information-debug/main.fmf delete mode 100755 tests/Regression/bz1815504-Regression-in-the-line-information-debug/runtest.sh delete mode 100644 tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/main.fmf delete mode 100755 tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/runtest.sh delete mode 100644 tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/x.c delete mode 100644 tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/main.fmf delete mode 100755 tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/runtest.sh delete mode 100644 tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/test.cc delete mode 100644 tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/main.fmf delete mode 100755 tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/runtest.sh delete mode 100644 tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/tst.c delete mode 100644 tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/b.gdb delete mode 100644 tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/main.fmf delete mode 100755 tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/runtest.sh delete mode 100644 tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/test.c delete mode 100644 tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/main.fmf delete mode 100755 tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/runtest.sh delete mode 100644 tests/Regression/bz1927579-libgfortran-seems-to-be-missing/alloc1.f90 delete mode 100644 tests/Regression/bz1927579-libgfortran-seems-to-be-missing/main.fmf delete mode 100755 tests/Regression/bz1927579-libgfortran-seems-to-be-missing/runtest.sh delete mode 100644 tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/main.fmf delete mode 100755 tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/runtest.sh delete mode 100644 tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf delete mode 100644 tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/reproducer.cc delete mode 100755 tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh delete mode 100644 tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/main.fmf delete mode 100644 tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/reproducer.cc delete mode 100755 tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/runtest.sh delete mode 100644 tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf delete mode 100755 tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh delete mode 100644 tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc delete mode 100644 tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf delete mode 100755 tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh delete mode 100644 tests/Regression/unused_parameter_warning/main.fmf delete mode 100755 tests/Regression/unused_parameter_warning/runtest.sh delete mode 100644 tests/Regression/unused_parameter_warning/test.cpp delete mode 100644 tests/Sanity/compile-rpm/main.fmf delete mode 100755 tests/Sanity/compile-rpm/runtest.sh delete mode 100644 tests/Sanity/libitm-smoke/bins_aarch64.tar.gz delete mode 100644 tests/Sanity/libitm-smoke/bins_i686.tar.gz delete mode 100644 tests/Sanity/libitm-smoke/bins_ppc64.tar.gz delete mode 100644 tests/Sanity/libitm-smoke/bins_ppc64le.tar.gz delete mode 100644 tests/Sanity/libitm-smoke/bins_s390x.tar.gz delete mode 100644 tests/Sanity/libitm-smoke/bins_x86_64.tar.gz delete mode 100644 tests/Sanity/libitm-smoke/main.fmf delete mode 100755 tests/Sanity/libitm-smoke/runtest.sh delete mode 100644 tests/Sanity/rebuild-binutils/main.fmf delete mode 100755 tests/Sanity/rebuild-binutils/runtest.sh delete mode 100644 tests/Sanity/rebuild-glibc/main.fmf delete mode 100755 tests/Sanity/rebuild-glibc/runtest.sh delete mode 100644 tests/Sanity/test-m32-m64-options/clear_cache.c delete mode 100644 tests/Sanity/test-m32-m64-options/cpp11.cpp delete mode 100644 tests/Sanity/test-m32-m64-options/hello.c delete mode 100644 tests/Sanity/test-m32-m64-options/hello.cpp delete mode 100644 tests/Sanity/test-m32-m64-options/hello.f90 delete mode 100644 tests/Sanity/test-m32-m64-options/lambda-template.C delete mode 100644 tests/Sanity/test-m32-m64-options/main.fmf delete mode 100644 tests/Sanity/test-m32-m64-options/omphello.c delete mode 100644 tests/Sanity/test-m32-m64-options/quad.c delete mode 100755 tests/Sanity/test-m32-m64-options/runtest.sh delete mode 100644 tests/Sanity/test-m32-m64-options/thr-init-2.c delete mode 100644 tests/Sanity/test-m32-m64-options/tm.c delete mode 100644 tests/fedora-flags/hello.c delete mode 100644 tests/fedora-flags/hello.cpp delete mode 100644 tests/fedora-flags/main.c delete mode 100644 tests/fedora-flags/main.cpp delete mode 100644 tests/fedora-flags/main.fmf delete mode 100755 tests/fedora-flags/runtest.sh delete mode 100644 tests/smoke-test/Makefile delete mode 100644 tests/smoke-test/PURPOSE delete mode 100644 tests/smoke-test/clear_cache.c delete mode 100644 tests/smoke-test/hello.c delete mode 100644 tests/smoke-test/hello.cpp delete mode 100644 tests/smoke-test/hello.f90 delete mode 100644 tests/smoke-test/main.fmf delete mode 100644 tests/smoke-test/omphello.c delete mode 100644 tests/smoke-test/quad.c delete mode 100755 tests/smoke-test/runtest.sh delete mode 100644 tests/smoke-test/thr-init-2.c delete mode 100644 tests/smoke-test/tm.c diff --git a/plans/ci.fmf b/plans/ci.fmf index 13b60db..b6a344d 100644 --- a/plans/ci.fmf +++ b/plans/ci.fmf @@ -1,10 +1,13 @@ summary: CI Gating Plan discover: how: fmf - directory: tests -prepare: - - name: prepare - how: shell - script: ./plans/prepare.sh + url: https://src.fedoraproject.org/tests/gcc.git + filter: 'tag: Fedora-CI-gating' execute: how: tmt +adjust: + - prepare+: + - name: Add secondary architecture RPMs + how: shell + script: ./plans/provide_secondary_arch_rpms.sh + when: arch == x86_64 diff --git a/plans/prepare.sh b/plans/prepare.sh deleted file mode 100755 index 8ffb6ef..0000000 --- a/plans/prepare.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash - -# -# Setup task for Fedora CI system. Install the x86_64 GCC build under test -# along with its respective i686 (compat arch) bits needed for the testing. -# KOJI_TASK_ID per https://github.com/fedora-ci/dist-git-pipeline/pull/50 . -# - -set -x - -true "V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V" - -echo "KOJI_TASK_ID=$KOJI_TASK_ID" - -. /etc/os-release - -if [ "$ID" == "fedora" ] && [ "$(arch)" == "x86_64" ]; then - - if [ -z "${KOJI_TASK_ID}" ]; then - echo "Missing koji task ID, skipping ..." - exit 0 - fi - - tmpd=`mktemp -d` - pushd $tmpd - koji download-task $KOJI_TASK_ID --noprogress --arch=src - ls - VR=$(rpm -qp gcc* --queryformat='%{version}-%{release}') - popd - rm -rf $tmpd - - tmpd=`mktemp -d` - pushd $tmpd - koji download-task $KOJI_TASK_ID --noprogress --arch=x86_64 --arch=noarch - rm -f *debuginfo* - ls - dnf -y install *.rpm - popd - rm -rf $tmpd - - tmpd=`mktemp -d` - pushd $tmpd - koji download-task $KOJI_TASK_ID --noprogress --arch=i686 - rm -f *debuginfo* - ls - yum -y install libgcc-$VR* libgfortran-$VR* libgomp-$VR* libitm-$VR* \ - libstdc++-devel-$VR* libstdc++-$VR* libstdc++-static-$VR* - popd - rm -rf $tmpd -else - echo "Not Fedora x86_64, skipping..." -fi - -true "^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^" diff --git a/plans/provide_secondary_arch_rpms.sh b/plans/provide_secondary_arch_rpms.sh new file mode 100755 index 0000000..f26a5ab --- /dev/null +++ b/plans/provide_secondary_arch_rpms.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash + +# Fedora CI testing systems don't provide a repository with the i686 +# RPMs of the build being tested. As a consequence, most +# dnf install -y .i686 +# commands (whether being run by a test or by TMT's prepare) will probably +# fail on a version mismatch with the present x86_64 gcc RPMs. To prevent +# such failures we provide this script which we recommend to include in every +# Fedora CI test plan. +# +# Implementation notes: +# +# * The gcc build being tested in Fedora CI is given via KOJI_TASK_ID. See +# https://github.com/fedora-ci/dist-git-pipeline/pull/50 for details. +# +# * Currently this script just downloads and installs the i686 RPMs. It +# would not be sufficient for tests that uninstall and reinstall those +# RPMs. If such a test appears, this script should create a repository. +# +# * Fedora CI testing systems seem to have extremely small RAM-based /tmp, +# unable to host all the downloaded RPMs, and no other "real" filesystem +# than "/". That's the reason for using +# mktemp -d --tmpdir=/ + +set -x + +true "V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V" + +echo "KOJI_TASK_ID=$KOJI_TASK_ID" + +. /etc/os-release + +echo "ID=$ID" +echo "arch=$(arch)" +echo "KOJI_TASK_ID=$KOJI_TASK_ID" + +if [[ "$ID" = fedora ]] && [[ "$(arch)" = x86_64 ]] && [[ -n "$KOJI_TASK_ID" ]]; then + + if tmpd=$(mktemp -d --tmpdir=/) && pushd "$tmpd"; then + + # Download + rpm -q koji || dnf -y install koji + koji download-task "$KOJI_TASK_ID" --noprogress --arch={x86_64,i686,noarch} + + # Remove conflicting RPMs + rm -f ./*debuginfo* ./*debugsource* + rm -f gcc-[0-9]*.i686.* + rm -f ./*docs*.i686.* + + # Install + ls + dnf -y install ./*.rpm + + # Clean up + # shellcheck disable=SC2164 + popd + rm -rf "$tmpd" + fi + +else + echo "Not applicable" +fi + +true "^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^" diff --git a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c deleted file mode 100644 index 801bda0..0000000 --- a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c +++ /dev/null @@ -1,12 +0,0 @@ -#include -#include - -int -main () -{ - int i = 2; - if (-10 * abs (i - 1) == 10 * abs (i - 1)) - return 1; - - return 0; -} diff --git a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf deleted file mode 100644 index 81a2b4a..0000000 --- a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf +++ /dev/null @@ -1,26 +0,0 @@ -summary: gcc optimization error for neg number * abs() [extract_muldiv] -description: | - abs() from gcc was broken so it gave wrong results. -contact: mcermak@redhat.com -component: - - gcc -test: bash ./runtest.sh -path: /tests/Regression/394271-gcc-optimization-error-for-neg-number-abs -framework: beakerlib -require: - - gcc -duration: 5m -enabled: true -tier: '1' -link: - - relates: https://bugzilla.redhat.com/show_bug.cgi?id=394271 -tag: - - CI-Tier-1 - - DTS8-INTEROP-CI - - DTS9-INTEROP-CI - - Tier1 - - dts_smoke - - dts_stable -extra-nitrate: TC#0062143 -extra-summary: /tools/gcc/Regression/gcc/394271-gcc-optimization-error-for-neg-number-abs -extra-task: /tools/gcc/Regression/gcc/394271-gcc-optimization-error-for-neg-number-abs diff --git a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh deleted file mode 100755 index 695c9fc..0000000 --- a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -# Author: Michal Nowak -# Marek Polacek - -# Include rhts environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -GCC="${GCC:-$(type -P gcc)}" -PACKAGE=$(rpm --qf '%{name}' -qf $GCC) - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - rlRun "TmpDir=\`mktemp -d\`" - rlRun "cp -v abs.c $TmpDir" - rlRun "pushd $TmpDir" - gcc -dumpversion | grep -q '^4\.4' && export OLDGCC="true" - rlPhaseEnd - - rlPhaseStartTest "Testing the executable" - OPTS="-O0 -O1 -O2 -O3 -Os -Ofast -Og" - if [ "$OLDGCC" = "true" ]; then - OPTS=${OPTS/ -Ofast -Og/} - fi - for opt in "" $OPTS; do - rlRun "$GCC -g $opt -o abs$opt abs.c" 0 "Compiling the test case [ $opt ]" - rlRun "./abs$opt" 0 "Checking whether we have an working executable [ $opt ]" - done - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf deleted file mode 100644 index 558554d..0000000 --- a/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf +++ /dev/null @@ -1,29 +0,0 @@ -summary: unzip problem with CRC error for src-4.1.0.zip file on s390x -description: | - A customer has been trying to unzip the file src-4.1.0.zip - which is contained libgcj4-src-4.1.0-18.EL4.s390x.rpm. However, - unzip command can't run correctly with the CRC errors - It seems that the src-4.1.0.zip is broken. -contact: mcermak@redhat.com -component: - - gcc -test: bash ./runtest.sh -framework: beakerlib -require: - - gcc - - libgcj-src -duration: 5m -enabled: true -tag: - - CI-Tier-1 - - Tier1 -tier: '1' -link: - - relates: https://bugzilla.redhat.com/show_bug.cgi?id=462397 -adjust: - - enabled: false - when: distro != rhel-5 and distro != rhel-6 - continue: false -extra-nitrate: TC#0147365 -extra-summary: /tools/gcc/Sanity/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file -extra-task: /tools/gcc/Sanity/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file diff --git a/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh deleted file mode 100755 index 62d03df..0000000 --- a/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -# Author: Michal Nowak -# Marek Polacek - -# Include rhts environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGES=(gcc libgcj-src) - -rlJournalStart - rlPhaseStartSetup - for p in "${PACKAGES[@]}"; do - rlAssertRpm "$p" - done; unset p - rlRun "TmpDir=\`mktemp -d\`" - rlRun "pushd $TmpDir" - rlPhaseEnd - -srclist="/usr/share/java/src-*" -for src in ${srclist}; do - - rlPhaseStartTest "Try to unzip src file" - rm -rf tmp/; mkdir tmp/ - rlRun "cp -fv ${src} tmp/" 0 "[${src}]: Copy the zip file to tmp/" - cd tmp/ - rlRun "unzip ${src}" 0 "[${src}] Verify that is possible to unzip ${src}" - cd .. - rlPhaseEnd - -done - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90 b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90 deleted file mode 100644 index c9af75f..0000000 --- a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90 +++ /dev/null @@ -1,22 +0,0 @@ - subroutine a - INTEGER*4 a_i - common /block/a_i - a_i = 1 - end subroutine a - subroutine b - INTEGER*4 b_i - common /block/b_i - a_i = 3 - b_i = 2 - end subroutine b - subroutine c - INTEGER*4 a_i - common /block/a_i - if (a_i .ne. 2) call abort - end subroutine c - program abc - call a - call b - call c - end program abc - diff --git a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf deleted file mode 100644 index 5f9ce34..0000000 --- a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf +++ /dev/null @@ -1,38 +0,0 @@ -summary: Fortran DW_TAG_common_block has incorrect placement/scope -description: |+ - Problem: gcc-4.3.2 / gfortran-4.3.2 (in the forthcoming tech-preview for - RHEL5.3) appears to also have the "DW_TAG_common_block has incorrect - placement/scope" issues listed in the following gcc upstream bug: - - http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37738 - - What gfortran is doing currently is: - - (1) Merges all common blocks into a single one. - (2) Places this single common block into the first subroutine where it was - used. - -contact: mcermak@redhat.com -component: - - gcc -test: bash ./runtest.sh -path: /tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope -framework: beakerlib -require: - - gcc - - gcc-gfortran -duration: 5m -tier: '1' -enabled: true -link: - - relates: https://bugzilla.redhat.com/show_bug.cgi?id=465974 -tag: - - CI-Tier-1 - - DTS8-INTEROP-CI - - DTS9-INTEROP-CI - - Tier1 - - dts_smoke - - dts_stable -extra-nitrate: TC#0062268 -extra-summary: /tools/gcc/g77/465974-DW_TAG_common_block-has-incorrect-placement-scope -extra-task: /tools/gcc/g77/465974-DW_TAG_common_block-has-incorrect-placement-scope diff --git a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh deleted file mode 100755 index 741279d..0000000 --- a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash -# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -# Author: Michal Nowak -# Marek Polacek - -# Include rhts environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGES=(gcc gcc-gfortran) - -GFORTRAN=${GFORTRAN:-gfortran} - -rlJournalStart - rlPhaseStartSetup - if type gcc | grep -q -v toolset; then - # assert only of not devtoolset/gcc-toolset - for p in "${PACKAGES[@]}"; do - rlAssertRpm "$p" - done; unset p - fi - rlRun "TmpDir=\`mktemp -d\`" - rlRun "cp -v abc.f90 $TmpDir" - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartTest "Testing the executable via readelf -w" - # Compile - rlRun "$GFORTRAN -g -o abc abc.f90" 0 "Compiling the test case: abc.f90" - rlRun "./abc" 0 "Checking whether we have an working executable" - rlWatchdog "readelf -w abc 2>&1 | tee gcc-readelf.log" 10 - rlAssert0 "Checking if 'readelf' ends itself" $? - # Test - cb=$(grep Abbrev gcc-readelf.log | grep DW_TAG_common_block -c) - rlRun "if [ ${cb} -eq 3 ]; then true; else false; fi" 0 "Expected amount of common blocks is 3; got ${cb}" - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c deleted file mode 100644 index 64449ae..0000000 --- a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c +++ /dev/null @@ -1,29 +0,0 @@ -#include - -/* Compile flags: - * gcc -fno-builtin-isascii -fno-builtin-isalnum -o builtin builtin.c - * - * Expected output: - * Using custom isascii() function - * ret = 0 - * - * Expected return value: - * 0 - */ - -int isascii(int c) -{ - printf("Using custom isascii() function\n"); - return 0; -} - -main() -{ - int c = 65; - int ret; - - ret = isascii(c); - printf("ret = %d\n", ret); - - return ret; -} diff --git a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf deleted file mode 100644 index 8f47b12..0000000 --- a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf +++ /dev/null @@ -1,33 +0,0 @@ -summary: 'Test for bz515799 ([RHEL5] gcc: if more than one -fno-builtin-*)' -description: | - Bug summary: [RHEL5] gcc: if more than one -fno-builtin-* options are specified, only the last one is effective - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=515799 - - This test compiles builtin.c with the flags '-fno-builtin-isascii - -fno-builtin-isalnum'. This program contains a custom isascii() function - that always returns 0. If gcc honors the -fno-builtin-isascii flag, it - will return 0. If not, it will use the built-in isascii() function which - will return 1. -contact: mcermak@redhat.com -component: - - gcc -test: bash ./runtest.sh -path: /tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin -framework: beakerlib -require: - - gcc -duration: 5m -enabled: true -tier: '1' -link: - - relates: https://bugzilla.redhat.com/show_bug.cgi?id=515799 -tag: - - CI-Tier-1 - - DTS8-INTEROP-CI - - DTS9-INTEROP-CI - - Tier1 - - dts_smoke - - dts_stable -extra-nitrate: TC#0063259 -extra-summary: /tools/gcc/Regression/gcc/515799-RHEL5-gcc-if-more-than-one-fno-builtin -extra-task: /tools/gcc/Regression/gcc/515799-RHEL5-gcc-if-more-than-one-fno-builtin diff --git a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh deleted file mode 100755 index 8b38afd..0000000 --- a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash -# vim: dict=/usr/share/rhts-library/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Regression/gcc/515799-RHEL5-gcc-if-more-than-one-fno-builtin -# Description: Test for bz515799 ([RHEL5] gcc: if more than one -fno-builtin-*) -# Author: Jeffrey Bastian -# Marek Polacek -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2009, 2012 Red Hat, Inc. All rights reserved. -# -# This copyrighted material is made available to anyone wishing -# to use, modify, copy, or redistribute it subject to the terms -# and conditions of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include rhts environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGES=(gcc) - -GCC=${GCC:-gcc} - -rlJournalStart - rlPhaseStartSetup - for p in "${PACKAGES[@]}"; do - rlAssertRpm "$p" - done; unset p - rlRun "TmpDir=\`mktemp -d\`" - rlRun "cp -v builtin.c $TmpDir" - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartTest - rlRun "$GCC -fno-builtin-isascii -fno-builtin-isalnum -o builtin builtin.c" - rlAssertExists "builtin" - rlRun "./builtin" - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java deleted file mode 100644 index bc72835..0000000 --- a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java +++ /dev/null @@ -1,5 +0,0 @@ -public class foo { - public static void main(String[] args) { - System.loadLibrary("foolib"); - } -} diff --git a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf deleted file mode 100644 index b121552..0000000 --- a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf +++ /dev/null @@ -1,39 +0,0 @@ -summary: 'CVE-2009-3736 libtool: libltdl may load and execute code from a library - in the current directory' -description: | - cat > ~/foo.java <\EOF public class foo { public static void main(String[] args) { System.loadLibrary("foolib"); } } EOF - cd - gcj -C foo.java - cd /tmp - strace -f -v -s1024 gij -cp ~/ foo 2>&1 | grep foolib - - (resp. s/gcj/gcj4/g;s/gij/gij4/ for gcc4 testing). - - If any relative path is seen, it is wrong. Bad examples are - - {lib,}foolib.la - {hwcap,0,nosegneg}/{lib,}foolib.{so,la} -contact: mcermak@redhat.com -component: - - gcc -test: ./runtest.sh -framework: beakerlib -require: - - gcc - - gcc-java - - libgcj - - strace -duration: 5m -enabled: false -tag: - - CI-Tier-1 - - Tier1 -tier: '1' -link: - - relates: https://bugzilla.redhat.com/show_bug.cgi?id=537941 -adjust: - - enabled: true - when: distro == rhel-6 or distro == rhel-5 -extra-nitrate: TC#0062145 -extra-summary: /tools/gcc/Regression/gcj/537941-libltdl-may-load-library-in-current-directory -extra-task: /tools/gcc/Regression/gcj/537941-libltdl-may-load-library-in-current-directory diff --git a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh deleted file mode 100755 index 73e914d..0000000 --- a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -# Author: Michal Nowak -# Marek Polacek - -# Include rhts environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGES=(gcc libgcj strace gcc-java) - -rlJournalStart - rlPhaseStartSetup - for p in "${PACKAGES[@]}"; do - rlAssertRpm "$p" - done; unset p - rlRun "TmpDir=\`mktemp -d\`" - rlRun "cp -v foo.java $TmpDir" - rlRun "pushd $TmpDir" - rlPhaseEnd - -# I weeded out the if (isRHEL 3) support. -for gj in "" "4"; do - gcj_name="/usr/bin/gcj${gj}" - gij_name="/usr/bin/gij${gj}" - if [ -x ${gcj_name} ] && [ -x ${gij_name} ]; then - gcj_basename=$(basename ${gcj_name}) - gij_basename=$(basename ${gij_name}) - - rlPhaseStartTest "[${gij_basename}] Interpreting and compiling via java" - rlRun "${gcj_name} -C foo.java" 0 "[${gcj_basename}] Creating bytecode" - mv foo.class ~ - pushd /tmp - - echo "Dry run w/o strace" - ${gij_basename} -cp ~/ foo - - echo "=== Dry run end ===" - strace -f -v -s1024 ${gij_basename} -cp ~/ foo 2>&1 | tee out.${gij_basename} - echo - grep foolib out.${gij_basename} - foolib_cnt="$(grep foolib out.${gij_basename} -c)" - echo - rlRun "if [ ${foolib_cnt} -ne 0 ]; then egrep '\"libfoolib.la|\"foolib.la' out.${gij_basename}; else echo \"Zero lines w/ foolib\"; true; fi" 1 "[${gij_basename}] Interpreting test case" # use 'true' (sic!) - popd - rm -f ~/foo.class - rlPhaseEnd - - fi -done - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf deleted file mode 100644 index f44417a..0000000 --- a/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf +++ /dev/null @@ -1,32 +0,0 @@ -summary: Test for BZ#1611637 (devtoolset-8-gcc includes avx512vbmi2intrin.h but) -description: | - Bug summary: devtoolset-8-gcc includes avx512vbmi2intrin.h but does not contain it - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1611637 - - The list of intrinsic headers keeps changing every release, sometimes - even on the release branch, and %files needs to be in sync with what has - been changed in gcc/config.gcc. immintrin.h is one of those headers and - this test makes sure that we can #include it. -contact: Vaclav Kadlcik -component: - - gcc -test: bash ./runtest.sh -framework: beakerlib -require: - - gcc -duration: 5m -enabled: true -tag: - - CI-Tier-1 -link: - - relates: https://bugzilla.redhat.com/show_bug.cgi?id=1611637 -adjust: - - enabled: false - when: arch != x86_64 - continue: false - - enabled: false - when: distro == rhel-5 - continue: false -extra-nitrate: TC#0575308 -extra-summary: /tools/gcc/Regression/bz1611637-immintrin_h_include_list_does_not_match_release -extra-task: /tools/gcc/Regression/bz1611637-immintrin_h_include_list_does_not_match_release diff --git a/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh deleted file mode 100755 index 8ff645e..0000000 --- a/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Regression/bz1611637-immintrin_h_include_list_does_not_match_release -# Description: Test for BZ#1611637 (devtoolset-8-gcc includes avx512vbmi2intrin.h but) -# Author: Michael Petlan -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -GCC=${GCC:-gcc} - -rlJournalStart - rlPhaseStartSetup - cat > a.c < -int main(void) -{ - return 0; -} -EOF - rlAssertExists "a.c" - rlPhaseEnd - - rlPhaseStartTest - rlRun "$GCC -o a a.c" - rlAssertExists "a" - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "rm -f a a.c" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/bz1815504-Regression-in-the-line-information-debug/main.fmf b/tests/Regression/bz1815504-Regression-in-the-line-information-debug/main.fmf deleted file mode 100644 index 82cdc4e..0000000 --- a/tests/Regression/bz1815504-Regression-in-the-line-information-debug/main.fmf +++ /dev/null @@ -1,12 +0,0 @@ -summary: Test for BZ#1815504 (Regression in the line information debug) -description: | - Bug summary: Regression in the line information debug information generated by gcc - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1815504 -recommend: -- gcc -- valgrind -duration: 5m -link: -- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1815504 -extra-summary: /tools/gcc/Regression/bz1815504-Regression-in-the-line-information-debug -extra-task: /tools/gcc/Regression/bz1815504-Regression-in-the-line-information-debug diff --git a/tests/Regression/bz1815504-Regression-in-the-line-information-debug/runtest.sh b/tests/Regression/bz1815504-Regression-in-the-line-information-debug/runtest.sh deleted file mode 100755 index 585e76c..0000000 --- a/tests/Regression/bz1815504-Regression-in-the-line-information-debug/runtest.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Regression/bz1815504-Regression-in-the-line-information-debug -# Description: Test for BZ#1815504 (Regression in the line information debug) -# Author: Alexandra Hájková -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2021 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="gcc" - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartTest - rlRun "valgrind -q date &> log" 0 - rlAssertNotGrep "Can't handle inlined call info entry with line number" log - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/main.fmf b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/main.fmf deleted file mode 100644 index 1c87a12..0000000 --- a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/main.fmf +++ /dev/null @@ -1,17 +0,0 @@ -summary: Test for BZ#1852781 (Compiling with -flto and -g removes CET support) -description: | - Bug summary: Compiling with -flto and -g removes CET support - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1852781 -contact: Alexandra Hájková -component: -- gcc -test: ./runtest.sh -framework: beakerlib -recommend: -- gcc -- binutils -duration: 15m -link: -- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1852781 -extra-summary: /tools/gcc/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support -extra-task: /tools/gcc/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support diff --git a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/runtest.sh b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/runtest.sh deleted file mode 100755 index 84cae8f..0000000 --- a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/runtest.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support -# Description: Test for BZ#1852781 (Compiling with -flto and -g removes CET support) -# Author: Alexandra Hájková -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2020 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="gcc" -TESTPROG="x" - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" - rlRun "cp $TESTPROG.c $TmpDir" - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartTest - rlRun "gcc -flto -c -fcf-protection -g $TESTPROG.c" - rlRun "gcc -flto -Wl,-z,cet-report=error -fcf-protection -g $TESTPROG.o &> log" - rlAssertNotGrep " missing IBT and SHSTK properties" log - rlRun "readelf --wide --notes a.out | grep IBT &> log" - rlAsserGrep "IBT, SHSTK" log - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/x.c b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/x.c deleted file mode 100644 index 64fffec..0000000 --- a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/x.c +++ /dev/null @@ -1,8 +0,0 @@ -#include - -int -main () -{ - printf ("hello\n"); - return 0; -} diff --git a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/main.fmf b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/main.fmf deleted file mode 100644 index 1540389..0000000 --- a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/main.fmf +++ /dev/null @@ -1,17 +0,0 @@ -summary: Test for BZ#1853900 (typeinfo for stdcodecvt_utf8 not found - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1853900 -contact: Alexandra Hájková -component: -- gcc -test: ./runtest.sh -framework: beakerlib -recommend: -- gcc -- gcc-c++ -duration: 10m -link: -- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1853900 -extra-summary: /tools/gcc/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul -extra-task: /tools/gcc/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul diff --git a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/runtest.sh b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/runtest.sh deleted file mode 100755 index a6eb4ed..0000000 --- a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/runtest.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul -# Description: Test for BZ#1853900 (typeinfo for stdcodecvt_utf8 -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2020 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="gcc" -TESTPROG="test.cc" - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" - rlRun "cp $TESTPROG $TmpDir" - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartTest - rlRun "g++ -std=c++17 $TESTPROG &> log" - rlAssertNotGrep "hidden symbol " log - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/test.cc b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/test.cc deleted file mode 100644 index 075633f..0000000 --- a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/test.cc +++ /dev/null @@ -1,7 +0,0 @@ -#include - -namespace fs = std::filesystem; -int main() { - fs::create_directory("sandbox"); - fs::remove_all("sandbox"); -} diff --git a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/main.fmf b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/main.fmf deleted file mode 100644 index 8167f92..0000000 --- a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: Test for BZ#1878841 (GOMP_parallel_loop_nonmonotonic_dynamic and) -description: | - Bug summary: GOMP_parallel_loop_nonmonotonic_dynamic and GOMP_loop_nonmonotonic_dynamic_next missing - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1878841 -contact: Alexandra Hájková -component: -- gcc -test: ./runtest.sh -framework: beakerlib -recommend: -- gcc -duration: 5m -link: -- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1878841 -extra-summary: /tools/gcc/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and -extra-task: /tools/gcc/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and diff --git a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/runtest.sh b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/runtest.sh deleted file mode 100755 index 83c42ef..0000000 --- a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/runtest.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and -# Description: Test for BZ#1878841 (GOMP_parallel_loop_nonmonotonic_dynamic and) -# Author: Alexandra Hájková -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2020 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="gcc" -TESTPROG="tst" - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" - rlRun "cp $TESTPROG.c $TmpDir" - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartTest - rlRun "gcc -fopenmp $TESTPROG.c &> log" - rlAssertNotGrep "undefined reference to `GOMP_parallel_loop_nonmonotonic_dynamic`" log - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/tst.c b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/tst.c deleted file mode 100644 index 741559e..0000000 --- a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/tst.c +++ /dev/null @@ -1,6 +0,0 @@ -#include -int main () -{ - #pragma omp parallel for schedule(dynamic) - for (int i = 0; i < 10; i++); -} diff --git a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/b.gdb b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/b.gdb deleted file mode 100644 index 341301d..0000000 --- a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/b.gdb +++ /dev/null @@ -1,2 +0,0 @@ -info functions foo -q diff --git a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/main.fmf b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/main.fmf deleted file mode 100644 index 7054cbd..0000000 --- a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/main.fmf +++ /dev/null @@ -1,17 +0,0 @@ -summary: Test for BZ#1893340 (Variadic arguments are missing from debugging data) -description: | - Bug summary: Variadic arguments are missing from debugging data when building with -flto - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1893340 -contact: Alexandra Hájková -component: -- gcc -test: ./runtest.sh -framework: beakerlib -recommend: -- gcc -- gdb -duration: 5m -link: -- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1893340 -extra-summary: /tools/gcc/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data -extra-task: /tools/gcc/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data diff --git a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/runtest.sh b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/runtest.sh deleted file mode 100755 index f2dd2ca..0000000 --- a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/runtest.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data -# Description: Test for BZ#1893340 (Variadic arguments are missing from debugging data) -# Author: Alexandra Hájková -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2021 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="gcc" - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" - rlRun "cp test.c b.gdb $TmpDir" - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartTest - rlRun "gcc -fPIC -shared -o libtest.so -O0 -g test.c" - rlRun "gdb -x b.gdb libtest.so > gdb.log" - rlAssertGrep "void foo(int, ...);" gdb.log - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/test.c b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/test.c deleted file mode 100644 index 3de5962..0000000 --- a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/test.c +++ /dev/null @@ -1,6 +0,0 @@ -#include -void foo(int args, ...) { - va_list ap; - va_start(ap, args); - va_end(ap); -} diff --git a/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/main.fmf b/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/main.fmf deleted file mode 100644 index c1da31b..0000000 --- a/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: Test for BZ#1896093 (Compiling with -flto=auto fails if make is not) -description: | - Bug summary: Compiling with -flto=auto fails if make is not installed - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1896093 -contact: Alexandra Hájková -component: -- gcc -test: ./runtest.sh -framework: beakerlib -recommend: -- gcc -duration: 5m -link: -- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1896093 -extra-summary: /tools/gcc/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not -extra-task: /tools/gcc/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not diff --git a/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/runtest.sh b/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/runtest.sh deleted file mode 100755 index a23ce5c..0000000 --- a/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/runtest.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not -# Description: Test for BZ#1896093 (Compiling with -flto=auto fails if make is not) -# Author: Alexandra Hájková -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2020 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="gcc" - -rlJournalStart - rlPhaseStartSetup - MAKE_WAS_PRESENT=false - rpm -q make &>/dev/null && MAKE_WAS_PRESENT=true - rlAssertRpm $PACKAGE - rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" - rlRun "pushd $TmpDir" - rlRun "rpm -e --nodeps make" 0,1 - rlPhaseEnd - - rlPhaseStartTest - echo "void main() { }" | gcc -x c -flto=auto - &> log - rlAssertNotGrep "lto-wrapper: fatal error: execvp: No such file or directory" log - rlPhaseEnd - - rlPhaseStartCleanup - if $MAKE_WAS_PRESENT; then - rpm -q make &>/dev/null || rlRun "yum -y install make" - fi - rlRun "popd" - rlRun "rm -r $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/alloc1.f90 b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/alloc1.f90 deleted file mode 100644 index 8765255..0000000 --- a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/alloc1.f90 +++ /dev/null @@ -1,5 +0,0 @@ -program test_allocated - integer :: i = 4 - real(4), allocatable :: x(:) - if (.not. allocated(x)) allocate(x(i)) -end program test_allocated diff --git a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/main.fmf b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/main.fmf deleted file mode 100644 index d6b5ead..0000000 --- a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/main.fmf +++ /dev/null @@ -1,17 +0,0 @@ -summary: Test for BZ#1927579 (libgfortran seems to be missing) -description: | - Bug summary: libgfortran seems to be missing _gfortran_os_error_at - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1927579 -contact: Alexandra Hájková -component: -- gcc -test: ./runtest.sh -framework: beakerlib -recommend: -- gcc -- gcc-gfortran -duration: 5m -link: -- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1927579 -extra-summary: /tools/gcc/Regression/bz1927579-libgfortran-seems-to-be-missing -extra-task: /tools/gcc/Regression/bz1927579-libgfortran-seems-to-be-missing diff --git a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/runtest.sh b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/runtest.sh deleted file mode 100755 index e635213..0000000 --- a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/runtest.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Regression/bz1927579-libgfortran-seems-to-be-missing -# Description: Test for BZ#1927579 (libgfortran seems to be missing) -# Author: Alexandra Hájková -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2021 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="gcc" - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" - rlRun "cp alloc1.f90 $TmpDir" - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartTest - rlRun "gfortran alloc1.f90" &> log - rlAssertNotGrep "alloc1.f90:(.text+0x131): undefined reference" log - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/main.fmf b/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/main.fmf deleted file mode 100644 index 4cfef47..0000000 --- a/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/main.fmf +++ /dev/null @@ -1,17 +0,0 @@ -summary: Test for BZ#1939638 (gcc-toolset-10-libasan-devel depends on the wrong) -description: | - Bug summary: gcc-toolset-10-libasan-devel depends on the wrong libasan - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1939638 -contact: Alexandra Hájková -component: -- gcc -test: ./runtest.sh -framework: beakerlib -recommend: -- gcc -- libasan -duration: 5m -link: -- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1939638 -extra-summary: /tools/gcc/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong -extra-task: /tools/gcc/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong diff --git a/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/runtest.sh b/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/runtest.sh deleted file mode 100755 index 1d29c6c..0000000 --- a/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/runtest.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong -# Description: Test for BZ#1939638 (gcc-toolset-10-libasan-devel depends on the wrong) -# Author: Alexandra Hájková -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2021 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="gcc" - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartTest - rlRun "echo 'int main () { return 0; }' | gcc -xc -fsanitize=address -" &> log - rlAssertNotGrep "cannot find /usr/lib64/libasan" log - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf deleted file mode 100644 index fac6ddb..0000000 --- a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf +++ /dev/null @@ -1,27 +0,0 @@ -summary: Test for BZ#1960701 (Wrong-code regression starting with gcc 8.2) -description: | - Bug summary: Wrong-code regression starting with gcc 8.2 - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1960701 -contact: Vaclav Kadlcik -component: -- gcc -test: bash ./runtest.sh -framework: beakerlib -require: -- gcc-c++ -duration: 15m -enabled: true -tag: - - CI-Tier-1 -link: -- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1960701 -adjust: - - enabled: false - when: distro < rhel-8 and collection is not defined - continue: false - - enabled: false - when: distro ~< rhel-8.5 and collection is not defined - continue: false -extra-nitrate: TC#0610780 -extra-summary: /tools/gcc/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2 -extra-task: /tools/gcc/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2 diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/reproducer.cc b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/reproducer.cc deleted file mode 100644 index 6ebd8e0..0000000 --- a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/reproducer.cc +++ /dev/null @@ -1,14 +0,0 @@ -#include - -struct T { - unsigned a; - float b {8.}; -}; - -int main() -{ - T t = {1}; - std::vector tt = {{1}, {2}}; - if (t.a != 1 || t.b != 8.0f || tt[0].a != 1 || tt[0].b != 8.0f || tt[1].a != 2 || tt[1].b != 8.0f) - __builtin_abort (); -} diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh deleted file mode 100755 index 9dd4ea3..0000000 --- a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2 -# Description: Test for BZ#1960701 (Wrong-code regression starting with gcc 8.2) -# Author: Vaclav Kadlcik -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2021 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -# Notes on relevancy -# -# The test is applicable to GCCs supporting -std=c++17. In practice, -# * any supported toolset GCC -# * system GCC of RHEL 8+; however the respective fix landed in 8.5 -# and isn't planned for backporting. -# -# Suggested TCMS relevancy: -# distro < rhel-8 && collection !defined: False -# distro < rhel-8.5 && collection !defined: False - -GCC="${GCC:-$(type -P gcc)}" -PACKAGE=$(rpm --qf '%{name}\n' -qf $GCC | head -1) -PACKAGES="${PACKAGE} ${PACKAGE}-c++" - -rlJournalStart - rlPhaseStartSetup - rlLogInfo "PACKAGES=$PACKAGES" - rlLogInfo "COLLECTIONS=$COLLECTIONS" - rlAssertRpm --all - rlRun "TmpDir=\$(mktemp -d)" - rlRun "cp reproducer.cc $TmpDir" - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartTest - rlRun 'g++ -o reproducer -Wall -Wextra -std=c++17 reproducer.cc' - rlRun './reproducer' - rlPhaseEnd - - rlPhaseStartCleanup - rlRun 'popd' - rlRun "rm -r $TmpDir" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/main.fmf b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/main.fmf deleted file mode 100644 index c699de0..0000000 --- a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: Test for BZ#1965951 (Wrong-code regression starting with gcc 8.5) -description: | - Bug summary: Wrong-code regression starting with gcc 8.5 - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1965951 -contact: Vaclav Kadlcik -component: -- gcc -test: ./runtest.sh -framework: beakerlib -recommend: -- gcc-c++ -duration: 15m -link: -- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1965951 -extra-summary: /tools/gcc/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5 -extra-task: /tools/gcc/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5 diff --git a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/reproducer.cc b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/reproducer.cc deleted file mode 100644 index 40b0c81..0000000 --- a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/reproducer.cc +++ /dev/null @@ -1,12 +0,0 @@ -#include -struct S1 { virtual ~S1() = default; }; -struct S2 { virtual void f1() = 0; }; -struct S3: S1, S2 { - void f1() { f2(); } - virtual void f2() = 0; -}; -struct S4: S3 { - void f2() { std::cout << "called\n"; } - using S2::f1; -}; -int main() { S4().f1(); } diff --git a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/runtest.sh b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/runtest.sh deleted file mode 100755 index d8d69d0..0000000 --- a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/runtest.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5 -# Description: Test for BZ#1965951 (Wrong-code regression starting with gcc 8.5) -# Author: Vaclav Kadlcik -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2021 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -GCC="${GCC:-$(type -P gcc)}" -PACKAGE=$(rpm --qf '%{name}\n' -qf $GCC | head -1) -PACKAGES="${PACKAGE} ${PACKAGE}-c++" - -rlJournalStart - rlPhaseStartSetup - rlLogInfo "PACKAGES=$PACKAGES" - rlRun "dnf -y install $PACKAGES" 0-255 - rlAssertRpm --all - rlRun "TmpDir=\$(mktemp -d)" - rlRun "cp reproducer.cc $TmpDir" - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartTest - rlRun 'g++ -o reproducer reproducer.cc' - rlRun './reproducer' - rlPhaseEnd - - rlPhaseStartCleanup - rlRun 'popd' - rlRun "rm -r $TmpDir" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf deleted file mode 100644 index 8f8346f..0000000 --- a/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf +++ /dev/null @@ -1,26 +0,0 @@ -summary: SystemTap fails to retrieve location attribute for local variable -description: '' -contact: mcermak@redhat.com -component: - - gcc - - systemtap -test: bash ./runtest.sh -framework: beakerlib -require: - - gcc - - systemtap - - kernel-devel - - kernel-headers -duration: 50m -enabled: true -tag: - - CI-Tier-1 - - STAP-EWA - - mcu_stap - - mcu_stap_6g - - mcu_stap_7g -link: - - relates: https://bugzilla.redhat.com/show_bug.cgi?id=576287 -extra-nitrate: TC#0062256 -extra-summary: /tools/gcc/Regression/gcc/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable -extra-task: /tools/gcc/Regression/gcc/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable diff --git a/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh deleted file mode 100755 index 0003300..0000000 --- a/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2010 Red Hat, Inc. All rights reserved. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include rhts environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="gcc" - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - kernel_uname="$(uname -a | awk '{ print $3 }')" - kernel_arch="$(uname -a | awk '{ print $12 }')" - echo kernel_arch: $kernel_arch - kernel_version="$(echo ${kernel_uname} | sed 's/-/ /' | awk '{ print $1 }')" - echo kernel_version: $kernel_version - kernel_release="$(echo ${kernel_uname} | sed 's/-/ /' | awk '{ print $2 }' | sed 's/\./ /g' | awk '{ print $1,".",$2 }' | sed 's/ //g')" - echo kernel_release_1: $kernel_release - if $(echo ${kernel_release} | grep -iq PAE); then - kernel_release="$(echo ${kernel_release} | sed 's/PAE//g' | sed 's/pae//g')" - PAE="PAE-" - fi - echo kernel_release_2: $kernel_release - if rlIsRHEL 6; then - arch="${kernel_arch}-" - fi - kernel_debug="http://download.devel.redhat.com/brewroot/packages/kernel/${kernel_version}/${kernel_release}/${kernel_arch}/kernel-${PAE}debuginfo-${kernel_version}-${kernel_release}.${kernel_arch}.rpm" - kernel_debug_common="http://download.devel.redhat.com/brewroot/packages/kernel/${kernel_version}/${kernel_release}/${kernel_arch}/kernel-debuginfo-common-${arch}${kernel_version}-${kernel_release}.${kernel_arch}.rpm" - echo ">>> $kernel_debug $kernel_debug_common" - debuginfo-install -y kernel - rpmquery kernel-debuginfo || rpm -ivh ${kernel_debug} ${kernel_debug_common} - rlPhaseEnd - - rlPhaseStartTest opt-O$opt - rlRun "stap -vvvv -p2 -e 'probe kernel.function(\"sig_ignored\") {println($$parms)}' 2>&1 | grep 'variable location problem'" 1 "gcc produced good enough debuginfo w/o 'variable location problem'" - rlPhaseEnd - - rlPhaseStartCleanup - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc deleted file mode 100644 index 7b815cd..0000000 --- a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc +++ /dev/null @@ -1,15 +0,0 @@ -template int func (void); - -template struct Foo -{ - static const unsigned int a = sizeof (T); - - //enum { b = a }; - - enum - { - c = sizeof (func < (a == 0) > ()) - }; -}; - -Foo x; diff --git a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf deleted file mode 100644 index 4ad6875..0000000 --- a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf +++ /dev/null @@ -1,28 +0,0 @@ -summary: Try to compile a program that has a template parameter with a boolean expression - involving a templated static constant -description: '' -contact: mcermak@redhat.com -component: - - gcc -test: bash ./runtest.sh -path: /tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template -framework: beakerlib -require: - - gcc - - gcc-c++ - - file -duration: 5m -enabled: true -tier: '1' -link: - - relates: https://bugzilla.redhat.com/show_bug.cgi?id=703059 -tag: - - CI-Tier-1 - - DTS8-INTEROP-CI - - DTS9-INTEROP-CI - - Tier1 - - dts_smoke - - dts_stable -extra-nitrate: TC#0111110 -extra-summary: /tools/gcc/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template -extra-task: /tools/gcc/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template diff --git a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh deleted file mode 100755 index 8f50b77..0000000 --- a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash -# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template -# Description: Try to compile a program that has a template parameter with a boolean expression involving a templated static constant -# Author: Marek Polacek -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2011, 2012 Red Hat, Inc. All rights reserved. -# -# This copyrighted material is made available to anyone wishing -# to use, modify, copy, or redistribute it subject to the terms -# and conditions of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include rhts environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -GXX=${GXX:-g++} - -rlJournalStart - rlPhaseStartSetup - rlLog "GXX = $GXX" - rlLog "Installed within `rpmquery -f $(which $GXX)`" - rlRun "TmpDir=\`mktemp -d\`" - rlRun "cp -v f.cc $TmpDir" - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartTest - rlRun "$GXX -c f.cc" - rlAssertExists "f.o" - rlRun "file f.o | grep ELF" # Basic obj file sanity check - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/unused_parameter_warning/main.fmf b/tests/Regression/unused_parameter_warning/main.fmf deleted file mode 100644 index b589e98..0000000 --- a/tests/Regression/unused_parameter_warning/main.fmf +++ /dev/null @@ -1,31 +0,0 @@ -summary: Check to see if g++ throws unused parameter warnings with standard libraries - with option -Wall -contact: mcermak@redhat.com -component: - - gcc -test: bash ./runtest.sh -path: /tests/Regression/unused_parameter_warning -framework: beakerlib -require: - - gcc-c++ - - glibc-devel - - libstdc++-devel -recommend: - - gcc44-c++ - - glibc-devel.ppc64 - - glibc-devel.ppc - - libstdc++43-devel.ppc - - libstdc++44-devel.ppc - - libstdc++-devel.ppc -duration: 10m -enabled: true -tier: '1' -link: - - relates: https://bugzilla.redhat.com/show_bug.cgi?id=201342 -tag: - - CI-Tier-1 - - Tier1 - - dts_stable -extra-nitrate: TC#0062265 -extra-summary: /tools/gcc/c++/unused_parameter_warning -extra-task: /tools/gcc/c++/unused_parameter_warning diff --git a/tests/Regression/unused_parameter_warning/runtest.sh b/tests/Regression/unused_parameter_warning/runtest.sh deleted file mode 100755 index 4a5d2fb..0000000 --- a/tests/Regression/unused_parameter_warning/runtest.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash -# vim: dict=/usr/share/rhts-library/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2009, 2012 Red Hat, Inc. All rights reserved. -# -# This copyrighted material is made available to anyone wishing -# to use, modify, copy, or redistribute it subject to the terms -# and conditions of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# g++ - check for unused parameter warning -# expected exit code is 0 -# -# Author: Sachin Prabhu -# Maintainer: Marek Polacek - - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGES=(gcc gcc-c++ grep) - -GXX=${GXX:-g++} - -rlJournalStart - rlPhaseStartSetup - for p in "${PACKAGES[@]}"; do - rlAssertRpm "$p" - done; unset p - rlLog "GXX = $GXX" - rlLog "Installed within `rpmquery -f $(which $GXX)`" - rlRun "TmpDir=\`mktemp -d\`" - rlRun "cp -v test.cpp $TmpDir" - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartTest - rlRun "$GXX -W -Wall -o test.bin test.cpp &> output" - cat output - rlRun "grep -E 'warning:\W+unused\W+parameter' -q output" 1 "'warning: unused parameter' not present" - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Regression/unused_parameter_warning/test.cpp b/tests/Regression/unused_parameter_warning/test.cpp deleted file mode 100644 index 15d375b..0000000 --- a/tests/Regression/unused_parameter_warning/test.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include -int main() {} diff --git a/tests/Sanity/compile-rpm/main.fmf b/tests/Sanity/compile-rpm/main.fmf deleted file mode 100644 index 4685e4a..0000000 --- a/tests/Sanity/compile-rpm/main.fmf +++ /dev/null @@ -1,45 +0,0 @@ -summary: Compile a Red Hat RPM package. -description: '' -contact: mcermak@redhat.com -component: - - gcc -test: bash ./runtest.sh -path: /tests/Sanity/compile-rpm -framework: beakerlib -require: - - autoconf - - bison - - dejagnu - - elfutils-libelf-devel - - expat-devel - - flex - - gcc - - gdb - - glibc-devel - - grep - - libselinux-devel - - make - - mpfr-devel - - ncurses-devel - - python-devel - - readline-devel - - rpm-build - - rpm-devel - - texinfo - - xz-devel - - yum-utils - - zlib-devel -duration: 240m -adjust: - - require+: - - ncurses-devel.i686 - - ncurses-devel.x86_64 - when: arch == x86_64 - - enabled: false - # Too "heavy" for Fedora CI (for now) - when: distro == fedora and trigger is defined - continue: false -enabled: true -extra-nitrate: TC#0142522 -extra-summary: /tools/gcc/Sanity/compile-rpm -extra-task: /tools/gcc/Sanity/compile-rpm diff --git a/tests/Sanity/compile-rpm/runtest.sh b/tests/Sanity/compile-rpm/runtest.sh deleted file mode 100755 index 5f68e75..0000000 --- a/tests/Sanity/compile-rpm/runtest.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/bin/bash -# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Sanity/compile-rpm -# Description: Compile a Red Hat RPM package. -# Author: Marek Polacek -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2012 Red Hat, Inc. All rights reserved. -# -# This copyrighted material is made available to anyone wishing -# to use, modify, copy, or redistribute it subject to the terms -# and conditions of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -GCC=${GCC:-gcc} - -# Set the variabile UNDER_DTS on non-empty string, when run under devtoolset. -if $( echo `which gcc` | grep -qE '/opt/rh/' ); then - UNDER_DTS="true" - # Set the actual version of DTS - DTS=`which gcc | awk 'BEGIN { FS="/" } { print $4 }'` -fi - -rlJournalStart - rlPhaseStartSetup - # Work around troubles with buildroot packages being out-of-sync - if rlIsRHEL; then - rlMountRedhat - for i in libipt source-highlight libbabeltrace; do - rpm -q $i &>/dev/null || rlRun "yum -y install $i" 0-255 - rpm -q ${i}-devel &>/dev/null || rlRun "yum -y install ${i}-devel" 0-255 - d=/mnt/redhat/brewroot/packages/$i - if rpm -q $i &>/dev/null && ! rpm -q ${i}-devel &>/dev/null; then - if [[ -e /mnt/redhat/brewroot/packages/$i ]]; then - d=/mnt/redhat/brewroot/packages/$i - else - d=/mnt/redhat/brewroot/packages/${i#lib} - fi - rlRun "yum -y install $d/$(rpm -q --qf='%{VERSION}/%{RELEASE}/%{ARCH}' $i)/${i}-devel-$(rpm -q --qf='%{VERSION}-%{RELEASE}.%{ARCH}' $i).rpm" - fi - done - fi - - rlRun "TmpDir=\$(mktemp -d)" - rlRun "pushd $TmpDir" - - if [ -z ${UNDER_DTS} ]; then - rlFetchSrcForInstalled gdb || yumdownloader --source gdb - else - rlFetchSrcForInstalled $DTS-gdb || yumdownloader --source $DTS-gdb - fi - - if [ -z ${UNDER_DTS} ]; then - srpm=$(rpmquery gdb --queryformat=%{NAME}-%{VERSION}-%{RELEASE})".src.rpm" - else - srpm=$(rpmquery $DTS-gdb --queryformat=%{NAME}-%{VERSION}-%{RELEASE})".src.rpm" - fi - rlRun "rpm -Uvh $srpm" - spec_dir=$(rpm --eval=%_specdir) - build_dir=$(rpm --eval=%_builddir) - - if [ -z ${UNDER_DTS} ]; then - pkg_dir=$(rpmquery gdb} --queryformat=%{NAME}-%{VERSION}) - else - pkg_dir=$(rpmquery $DTS-gdb} --queryformat=%{NAME}-%{VERSION}) - fi - - yum-builddep -y $spec_dir/gdb.spec - rlPhaseEnd - - rlPhaseStartTest - rlRun "CC=$GCC rpmbuild -bb $spec_dir/gdb.spec &> BUILD_LOG" - test $? -eq 0 || tail -n 20 BUILD_LOG - rlPhaseEnd - - rlPhaseStartCleanup - rlBundleLogs "Build-log" BUILD_LOG - rlRun "popd" - rlRun "rm -r $TmpDir" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Sanity/libitm-smoke/bins_aarch64.tar.gz b/tests/Sanity/libitm-smoke/bins_aarch64.tar.gz deleted file mode 100644 index d528f036f9fae1083d76ebd7822044824d7bfa84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42861 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 D5@yui diff --git a/tests/Sanity/libitm-smoke/bins_i686.tar.gz b/tests/Sanity/libitm-smoke/bins_i686.tar.gz deleted file mode 100644 index ce0e948621bf10e7ef81b864afb0eae72729a7a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18165 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 diff --git a/tests/Sanity/libitm-smoke/bins_ppc64.tar.gz b/tests/Sanity/libitm-smoke/bins_ppc64.tar.gz deleted file mode 100644 index 0589c6ad11cc84f934a1e89a159319594725f931..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42218 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 TtQ32W__q6%o4*7CdB=^(vJm)@j@M0zLm4iQ3c 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
{sYw(K`}@HLuP`>;?6r;}0rU4m9Vq?r5-& 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 P$XED(|Cagn00;sA(wApH diff --git a/tests/Sanity/libitm-smoke/main.fmf b/tests/Sanity/libitm-smoke/main.fmf deleted file mode 100644 index 06bf77d..0000000 --- a/tests/Sanity/libitm-smoke/main.fmf +++ /dev/null @@ -1,34 +0,0 @@ -summary: Just runs prebuilt binaries -description: | - Just running prebuilt binaries that require libitm. - This test is designed to run in gcc-libraries CI. we - cannot build anything on our own, since we don't have - devtoolset's gcc and -devel libraries. - - This should run OK on RHEL-6 and RHEL-7, currently all - arches. - - The sources of the tests are in Sanity/libitm-sanity. - !!! THIS TEST IS INTENTIONALLY NOT IN gcc General PLAN !!! -contact: Michael Petlan -component: - - gcc - - gcc-libraries -test: bash ./runtest.sh -framework: beakerlib -require: - - gcc - - libitm -recommend: - - gcc-libraries -duration: 5m -enabled: true -tag: - - CI-Tier-1 -adjust: - - enabled: false - when: distro == rhel-6 and arch == s390x - continue: false -extra-nitrate: TC#0539542 -extra-summary: /tools/gcc/Sanity/libitm-smoke -extra-task: /tools/gcc/Sanity/libitm-smoke diff --git a/tests/Sanity/libitm-smoke/runtest.sh b/tests/Sanity/libitm-smoke/runtest.sh deleted file mode 100755 index 8c78f78..0000000 --- a/tests/Sanity/libitm-smoke/runtest.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Sanity/libitm-smoke -# Description: Just runs prebuilt binaries -# Author: Michael Petlan -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2016 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -# Relevant for any system with libitm binary compatible with the attached -# binaries. -# Suggested TCMS relevancy: -# distro = rhel-6 && arch = s390x: False - -PACKAGE="gcc" -REALLY_WANT_TO_RUN="true" - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - if [ "$BASEOS_CI" = "true" ]; then - # in CI, we need to be able to skip this testcase - # in case libitm is not a part of gcc-libraries - rlCheckRpm "libitm" || REALLY_WANT_TO_RUN="false" - else - rlCheckRpm "libitm" || rlRun "yum install -y libitm" 0 "Installing missing libitm" - rlAssertRpm "libitm" - fi - TARBALL="bins_`arch`.tar.gz" - if [ ! -f $TARBALL ]; then - rlDie "We do not have binaries for your arch (`arch`)" - fi - rlRun "zcat $TARBALL | tar x" - rlRun "pushd bins" - rlPhaseEnd - - if [ "$REALLY_WANT_TO_RUN" = "true" ]; then - rlPhaseStartTest - for i in T_*; do - rlRun "./$i" - done - rlPhaseEnd - else - rlPhaseStartTest - rlPass "SKIPPING THIS TEST -- libitm is probably not shipped within current gcc-libraries" - rlPhaseEnd - fi - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -rf bins" 0 "Removing the stuff we created" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Sanity/rebuild-binutils/main.fmf b/tests/Sanity/rebuild-binutils/main.fmf deleted file mode 100644 index 8c05e0a..0000000 --- a/tests/Sanity/rebuild-binutils/main.fmf +++ /dev/null @@ -1,70 +0,0 @@ -summary: Rebuild binutils. -description: '' -contact: mcermak@redhat.com -component: - - gcc -test: bash ./runtest.sh -path: /tests/Sanity/rebuild-binutils -framework: beakerlib -require: - - autoconf - - automake - - binutils - - gcc - - glibc - - glibc-devel - - glibc-static - - libstdc++ - - libstdc++-devel - - libstdc++-static - - perl - - rpm-build - - sharutils - - texinfo - - yum-utils - - zlib-devel - - zlib-static -recommend: - - glibc-devel.ppc - - glibc-devel.s390 - - glibc-static.ppc - - glibc-static.s390 - - libgcc.ppc - - libgcc.s390 - - libstdc++-devel.ppc - - libstdc++-devel.s390 - - libstdc++.ppc - - libstdc++.s390 - - libstdc++-static.ppc - - libstdc++-static.s390 - - zlib-devel.ppc - - zlib-static.ppc - - dnf-utils - - yum-utils -duration: 3h -enabled: true -adjust: - - require+: - - glibc-devel.i686 - - glibc-devel.x86_64 - - glibc-static.i686 - - glibc-static.x86_64 - - libgcc.i686 - - libgcc.x86_64 - - libstdc++-devel.i686 - - libstdc++-devel.x86_64 - - libstdc++.i686 - - libstdc++.x86_64 - - libstdc++-static.i686 - - libstdc++-static.x86_64 - when: arch == x86_64 - - enabled: false - when: distro == rhel-6 and collection is defined - continue: false - - enabled: false - # Too "heavy" for Fedora CI (for now) - when: distro == fedora and trigger is defined - continue: false -extra-nitrate: TC#0147459 -extra-summary: /tools/gcc/Sanity/rebuild-binutils -extra-task: /tools/gcc/Sanity/rebuild-binutils diff --git a/tests/Sanity/rebuild-binutils/runtest.sh b/tests/Sanity/rebuild-binutils/runtest.sh deleted file mode 100755 index 714ac4d..0000000 --- a/tests/Sanity/rebuild-binutils/runtest.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash -# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Sanity/rebuild-binutils -# Description: Rebuild binutils. -# Author: Marek Polacek -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2012 Red Hat, Inc. All rights reserved. -# -# This copyrighted material is made available to anyone wishing -# to use, modify, copy, or redistribute it subject to the terms -# and conditions of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -# The test is expected to fail in devtoolset-* on RHEL-6 because of -# the "Unresolvable `R_X86_64_NONE` relocation" family of bugs, e.g. -# https://bugzilla.redhat.com/show_bug.cgi?id=1545386 -# They have been fixed for both the base and devtoolset binutils -# on RHEL-7 but on RHEL-6, it was just the base binutils. - -GCC=${GCC:-gcc} - -# Set the variabile UNDER_DTS on non-empty string, when run under devtoolset. -if $( echo `which gcc` | grep -qE '/opt/rh/' ); then - UNDER_DTS="true" - # Set the actual version of DTS - DTS=`which gcc | awk 'BEGIN { FS="/" } { print $4 }'` -fi - -rlJournalStart - rlPhaseStartSetup - rlLog "Using GCC: `rpmquery -f $(which $GCC)`" - rlRun "rpmquery -a | grep -e yum-utils -e dnf-utils" 0 "YUM or DNF utils are installed" - rlRun "TmpDir=\$(mktemp -d)" - rlRun "pushd $TmpDir" - - if [ -z ${UNDER_DTS} ]; then - rlFetchSrcForInstalled binutils || yumdownloader --source binutils - srpm=$(find binutils*.src.rpm | tail -n1) - else - rlFetchSrcForInstalled $DTS-binutils || yumdownloader --source $DTS-binutils - srpm=$(find $DTS-binutils*.src.rpm | tail -n1) - fi - rlRun "rpm -Uvh $srpm" - spec_dir=$(rpm --eval=%_specdir) - yum-builddep -y $spec_dir/binutils.spec - rlPhaseEnd - - rlPhaseStartTest - if [ "$(uname -i)" == "ppc64" ]; then - if rlIsRHEL 6; then - target='--target=ppc64' - else - target='--target=ppc' - fi - fi - if [ "$(uname -i)" == "i386" ]; then - target='--target=i686' - fi - - rlRun "setsebool allow_execmod 1" - rlRun "CC=$GCC rpmbuild -bb $target --clean $spec_dir/binutils.spec &> BUILD_LOG" || ( echo "========== BUILD_LOG tail ==========" ; tail -n 20 BUILD_LOG ) - rlRun "setsebool allow_execmod 0" - rlPhaseEnd - - rlPhaseStartCleanup - rlBundleLogs "Build-log" BUILD_LOG - rlRun "popd" - rlRun "rm -r $TmpDir" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Sanity/rebuild-glibc/main.fmf b/tests/Sanity/rebuild-glibc/main.fmf deleted file mode 100644 index ea649f0..0000000 --- a/tests/Sanity/rebuild-glibc/main.fmf +++ /dev/null @@ -1,84 +0,0 @@ -description: | - Rebuild current glibc. -summary: Rebuild glibc -contact: mcermak@redhat.com -component: - - gcc -test: bash ./runtest.sh -path: /tests/Sanity/rebuild-glibc -framework: beakerlib -require: - - audit-libs-devel - - binutils - - bison - - gcc - - gcc-c++ - - gd-devel - - glibc-devel - - glibc-static - - glibc-utils - - libcap-devel - - libgcc - - libpng-devel - - libstdc++ - - libstdc++-devel - - libstdc++-static - - libXpm-devel - - nspr-devel - - nss-devel - - nss-softokn-devel - - nss-util-devel - - python3-devel - - rpm-build - - systemtap-sdt-devel - - texinfo - - valgrind - - yum-utils -recommend: - - glibc-devel.ppc - - glibc-devel.s390 - - glibc-static.ppc - - glibc-static.s390 - - libgcc.ppc - - libgcc.s390 - - libstdc++-devel.ppc - - libstdc++-devel.s390 - - libstdc++.ppc - - libstdc++.s390 - - libstdc++-static.ppc - - libstdc++-static.s390 - - dnf-utils - - yum-utils -duration: 18h -enabled: true -tag: - - NoDTS - - rhel8-buildroot -adjust: - - require+: - - glibc-devel.i686 - - glibc-devel.x86_64 - - glibc-static.i686 - - glibc-static.x86_64 - - libgcc.i686 - - libgcc.x86_64 - - libstdc++-devel.i686 - - libstdc++-devel.x86_64 - - libstdc++.i686 - - libstdc++.x86_64 - - libstdc++-static.i686 - - libstdc++-static.x86_64 - when: arch == x86_64 - - require-: - - python3-devel - when: distro < rhel-8 - - enabled: false - when: collection is defined - continue: false - - enabled: false - # Too "heavy" for Fedora CI (for now) - when: distro == fedora and trigger is defined - continue: false -extra-nitrate: TC#0035677 -extra-summary: /tools/gcc/Sanity/rebuild-glibc -extra-task: /tools/gcc/Sanity/rebuild-glibc diff --git a/tests/Sanity/rebuild-glibc/runtest.sh b/tests/Sanity/rebuild-glibc/runtest.sh deleted file mode 100755 index 52255c5..0000000 --- a/tests/Sanity/rebuild-glibc/runtest.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2009, 2012 Red Hat, Inc. All rights reserved. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -# Author: Michal Nowak -# Rewrite: Marek Polacek - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -cpu_good_for_make_check () { - # glibc can create several alternative CPU-specific bits that are selected - # in runtime. However the "make check" phase tries to test all of them and - # fails when testing a more "advanced" binary than the SUT's CPU. In such - # case we'd want to skip "make check" to prevent "rpmbuild" from a certain - # failure. - if rlIsRHEL '>=8' && [[ $(arch) = ppc64le ]] && grep -q 'POWER[2-8]' /proc/cpuinfo; then - rlLogInfo 'RHEL8+ on BUILD_LOG" - test $? -eq 0 || tail -n 20 BUILD_LOG - rlPhaseEnd - - rlPhaseStartCleanup - rlBundleLogs "Build-log" BUILD_LOG - rlRun "popd" - rlRun "rm -r $TmpDir" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Sanity/test-m32-m64-options/clear_cache.c b/tests/Sanity/test-m32-m64-options/clear_cache.c deleted file mode 100644 index b10479f..0000000 --- a/tests/Sanity/test-m32-m64-options/clear_cache.c +++ /dev/null @@ -1,7 +0,0 @@ -int -main (void) -{ - char *mem = __builtin_alloca (40); - __builtin___clear_cache (mem, mem + 40); - return 0; -} diff --git a/tests/Sanity/test-m32-m64-options/cpp11.cpp b/tests/Sanity/test-m32-m64-options/cpp11.cpp deleted file mode 100644 index 0d57b57..0000000 --- a/tests/Sanity/test-m32-m64-options/cpp11.cpp +++ /dev/null @@ -1,78 +0,0 @@ -template -class X -{ - T p; -public: - template auto f() -> decltype(+p) { return p; } -}; - -struct A -{ - int i = 42; -}; - -struct B -{ - int i = 42; - B() { } - B(int i): i(i) { } -}; - -template -struct C -{ - T m = t; -}; - -template -struct D -{ - T m = t; - D() { } - D(T m):m(m) { } -}; - -struct complex -{ - typedef float value_type; - typedef __complex__ float _ComplexT; - - constexpr complex(_ComplexT __z) : _M_value(__z) { } - - constexpr complex(float __r = 0.0f, float __i = 0.0f) - : _M_value(__r + __i * 1.0f) { } - -private: - _ComplexT _M_value; -}; - -constexpr complex c1; - -int -main (void) -{ - X().f(); - A a1; - if (a1.i != 42) return 1; - A a2{}; - if (a2.i != 42) return 2; - A a3[1]; - if (a3[0].i != 42) return 3; - - B b1; - if (b1.i != 42) return 3; - B b2 (24); - if (b2.i != 24) return 4; - - C c1; - if (c1.m != 3) return 5; - C c2 {}; - if (c2.m != 5) return 6; - - D d1; - if (d1.m != 3) return 7; - D d2 (5) ; - if (d2.m != 5) return 8; - - return 0; -} diff --git a/tests/Sanity/test-m32-m64-options/hello.c b/tests/Sanity/test-m32-m64-options/hello.c deleted file mode 100644 index 98a53b6..0000000 --- a/tests/Sanity/test-m32-m64-options/hello.c +++ /dev/null @@ -1,8 +0,0 @@ -#include - -int -main (void) -{ - puts ("Hello World!"); - return 0; -} diff --git a/tests/Sanity/test-m32-m64-options/hello.cpp b/tests/Sanity/test-m32-m64-options/hello.cpp deleted file mode 100644 index 0f2234e..0000000 --- a/tests/Sanity/test-m32-m64-options/hello.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include - -int -main (void) -{ - std::cout << "Hello, world!\n"; -} diff --git a/tests/Sanity/test-m32-m64-options/hello.f90 b/tests/Sanity/test-m32-m64-options/hello.f90 deleted file mode 100644 index afabbb2..0000000 --- a/tests/Sanity/test-m32-m64-options/hello.f90 +++ /dev/null @@ -1,3 +0,0 @@ - program hello - print *, "Hello World!" - end program hello diff --git a/tests/Sanity/test-m32-m64-options/lambda-template.C b/tests/Sanity/test-m32-m64-options/lambda-template.C deleted file mode 100644 index 6f3b4e8..0000000 --- a/tests/Sanity/test-m32-m64-options/lambda-template.C +++ /dev/null @@ -1,41 +0,0 @@ -// { dg-options -std=c++0x } -// { dg-do run } - -extern "C" void abort(); - -template -auto apply (T t) -> decltype (t()) -{ - return t(); -} - -template -void f(T t) -{ - T t2 = t; - if (t != [=]()->T { return t; }()) - abort (); - if (t != [=] { return t; }()) - abort (); - if (t != [=] { return t2; }()) - abort (); - if (t != [&] { return t; }()) - abort (); - if (t != apply([=]{return t;})) - abort (); - - int i; - [&] (int a) { return a+i+t; } (0); - [&] (int a) -> decltype(a) { return a+i+t; } (0); - [&] (int a) -> decltype(i) { return a+i+t; } (0); - [&] (int a) -> decltype(t) { return a+i+t; } (0); - [&] (int a) -> decltype(a+i) { return a+i+t; } (0); - [&] (int a) -> decltype(a+t) { return a+i+t; } (0); - [&] (int a) -> decltype(i+t) { return a+i+t; } (0); - [&] (int a) -> decltype(a+i+t) { return a+i+t; } (0); -} - -int main() -{ - f(0xbeef); -} diff --git a/tests/Sanity/test-m32-m64-options/main.fmf b/tests/Sanity/test-m32-m64-options/main.fmf deleted file mode 100644 index cef912f..0000000 --- a/tests/Sanity/test-m32-m64-options/main.fmf +++ /dev/null @@ -1,58 +0,0 @@ -summary: Try -m32 and -m64 options. -description: Try -m32 and -m64 options -contact: mcermak@redhat.com -component: - - gcc -test: bash ./runtest.sh -path: /tests/Sanity/test-m32-m64-options -framework: beakerlib -require: - - gcc - - gcc-c++ - - gcc-gfortran - - glibc-devel - - libgfortran - - libgomp - - libstdc++-devel - - libitm -recommend: - - libgfortran5 - - libitm-devel - - libquadmath-devel -duration: 20m -enabled: true -link: - - relates: https://bugzilla.redhat.com/show_bug.cgi?id=1113429 -adjust: - - enabled: false - when: arch == ia64, ppc64, s390, s390x - continue: false - - enabled: false - when: arch == aarch64 - continue: false - because: no -m64 nor -m32 there - - require+: - - glibc-devel.x86_64 - - glibc-devel.i686 - - libgfortran.x86_64 - - libgfortran.i686 - - libstdc++-devel.x86_64 - - libstdc++-devel.i686 - - libitm.x86_64 - - libitm.i686 - - libgomp.x86_64 - - libgomp.i686 - - libquadmath.x86_64 - - libquadmath.i686 - when: arch == x86_64 - - recommend+: - - libgfortran5.x86_64 - - libgfortran5.i686 - - libitm-devel.x86_64 - - libitm-devel.i686 - - libquadmath-devel.x86_64 - - libquadmath-devel.i686 - when: arch == x86_64 -extra-nitrate: TC#0197178 -extra-summary: /tools/gcc/Sanity/test-m32-m64-options -extra-task: /tools/gcc/Sanity/test-m32-m64-options diff --git a/tests/Sanity/test-m32-m64-options/omphello.c b/tests/Sanity/test-m32-m64-options/omphello.c deleted file mode 100644 index 85b591f..0000000 --- a/tests/Sanity/test-m32-m64-options/omphello.c +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include -#include - -int -main (void) -{ - int th_id; - int nthreads; - - #pragma omp parallel private(th_id) - { - th_id = omp_get_thread_num (); - printf ("Hello World from thread %d\n", th_id); - - #pragma omp barrier - if (th_id == 0) - { - nthreads = omp_get_num_threads (); - printf ("There are %d threads\n", nthreads); - } - } - return EXIT_SUCCESS; -} diff --git a/tests/Sanity/test-m32-m64-options/quad.c b/tests/Sanity/test-m32-m64-options/quad.c deleted file mode 100644 index f9e5ef1..0000000 --- a/tests/Sanity/test-m32-m64-options/quad.c +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include -#include - -int -main (void) -{ - __float128 r = strtoflt128 ("1.23456789", NULL); - - int prec = 20; - int width = 46; - char buf[128]; - - r = 2.0q; - r = sqrtq (r); - int n = quadmath_snprintf (buf, sizeof buf, "%+-#*.20Qe", width, r); - if ((size_t) n < sizeof buf) - /* Prints: +1.41421356237309504880e+00. */ - printf ("%s\n", buf); - quadmath_snprintf (buf, sizeof buf, "%Qa", r); - if ((size_t) n < sizeof buf) - /* Prints: 0x1.6a09e667f3bcc908b2fb1366ea96p+0. */ - printf ("%s\n", buf); - n = quadmath_snprintf (NULL, 0, "%+-#46.*Qe", prec, r); - if (n > -1) - { - char *str = malloc (n + 1); - if (str) - { - quadmath_snprintf (str, n + 1, "%+-#46.*Qe", prec, r); - /* Prints: +1.41421356237309504880e+00. */ - printf ("%s\n", str); - } - free (str); - } - - return 0; -} diff --git a/tests/Sanity/test-m32-m64-options/runtest.sh b/tests/Sanity/test-m32-m64-options/runtest.sh deleted file mode 100755 index 31b8241..0000000 --- a/tests/Sanity/test-m32-m64-options/runtest.sh +++ /dev/null @@ -1,167 +0,0 @@ -#!/bin/bash -# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Sanity/test-m32-m64-options -# Description: Try -m32 and -m64 options. -# Author: Marek Polacek -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2012 Red Hat, Inc. All rights reserved. -# -# This copyrighted material is made available to anyone wishing -# to use, modify, copy, or redistribute it subject to the terms -# and conditions of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# In this test, we try to compile and run programs using -m32 and -m64. -# We compile C, C++ and Fortran Hello World programs. Also, there are two -# proglets which are exercising some C++11 features. Furthermore, we try -# -fgnu-tm, -fopenmp options. We also use libquadmath a little bit. -# We call a function from libgcc. We also use the __thread keyword. - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -GCC=${GCC:-$(type -P gcc)} -GCC_RPM_NAME=$(rpm --qf '%{name}' -qf $GCC) - -[[ "$GCC_RPM_NAME" == *toolset* ]] && TOOLSET=${GCC_RPM_NAME%-gcc} || TOOLSET='' - -if [ -n "`rlGetPrimaryArch`" ]; then - PRI_ARCH=$(rlGetPrimaryArch) -else - PRI_ARCH="$(uname -i)" -fi - -# State applicable -m switches -SWITCHES='-m64 -m32' -case "$PRI_ARCH" in - i686) - SWITCHES=-m32 # just base RHEL-6/i386 - ;; - ppc64le) # we never had 32 support there - SWITCHES=-m64 - ;; - aarch64) - # Not only we never had 32-bit support there, GCC on this architecture - # doesn't accept the -m64 switch either. This test isn't applicable - # at all and should be excluded by its relevancy, e.g. in TCMS: - # arch = aarch64: False - exit 1 - ;; - ppc64|s390x) # 32-bit support present only in system GCC of RHEL <8 - if [[ -z "$TOOLSET" ]] && rlIsRHEL '<8'; then - if [[ "$PRI_ARCH" != s390x ]]; then - SWITCHES='-m64 -m32' - else - SWITCHES='-m64 -m31' - fi - else - SWITCHES=-m64 - fi - ;; -esac - -rlJournalStart - rlPhaseStartSetup - rlLogInfo "COLLECTIONS=$COLLECTIONS" - rlLogInfo "GCC=$GCC" - rlLogInfo "SKIP_COLLECTION_METAPACKAGE_CHECK=$SKIP_COLLECTION_METAPACKAGE_CHECK" - - # We optionally need to skip checking for the presence of the metapackage - # because that would pull in all the dependent toolset subrpms. We do not - # always want that, especially in CI. - _COLLECTIONS="$COLLECTIONS" - if ! test -z $SKIP_COLLECTION_METAPACKAGE_CHECK; then - for c in $SKIP_COLLECTION_METAPACKAGE_CHECK; do - rlLogInfo "ignoring metapackage check for collection $c" - export COLLECTIONS=$(shopt -s extglob && echo ${COLLECTIONS//$c/}) - done - fi - rlLogInfo "(without skipped) COLLECTIONS=$COLLECTIONS" - export COLLECTIONS="$_COLLECTIONS" - - rlRun "TmpDir=\$(mktemp -d)" - rlRun "cp -v hello.{c,cpp,f90} tm.c quad.c thr-init-2.c clear_cache.c omphello.c lambda-template.C cpp11.cpp $TmpDir" - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartSetup "Showing compiler versions" - for compiler in gcc g++ gfortran; do - rlLogInfo "Version of compiler: $compiler" - eval "$compiler --version 2>&1" | while read line; do - rlLogInfo " $line" - done - done - rlPhaseEnd - - for m in $SWITCHES; do - rlPhaseStartTest "Compile and run [$m]" - - # Test C - rlRun "gcc $m hello.c -o hello_c" - rlRun ./hello_c - - # Test C++ - rlRun "g++ $m hello.cpp -o hello_cpp" - rlRun ./hello_cpp - - # C++11 features. Not available in system GCC of RHEL-6 - if ! rlIsRHEL 6 || [[ -n "$TOOLSET" ]]; then - rlRun "g++ $m -std=c++11 lambda-template.C -o lambda" - rlRun ./lambda - - rlRun "g++ $m -std=c++11 cpp11.cpp -o cpp11" - rlRun ./cpp11 - fi - - # Test Fortran - rlRun "gfortran $m hello.f90 -o hello_fortran" - rlRun "./hello_fortran" - - # Test TM. Not available in system GCC of RHEL-6 - if ! rlIsRHEL 6 || [[ -n "$TOOLSET" ]]; then - rlRun "gcc $m -O2 -std=gnu99 -fgnu-tm tm.c -o tm" - rlRun ./tm - fi - - # Test OpenMP - rlRun "gcc $m omphello.c -O2 -std=gnu99 -fopenmp -o omp" - rlRun ./omp - - # Test __thread - rlRun "gcc $m thr-init-2.c -O2 -std=gnu99 -ftls-model=initial-exec -o thr" - rlRun ./thr - - # Now test some libquadmath stuff (__float128 support). - if rpm -q ${GCC_RPM_NAME%%gcc}libquadmath-devel &>/dev/null; then - rlRun "gcc $m quad.c -O2 -std=gnu99 -lquadmath -o quad -lm" - rlRun ./quad - fi - - # And now something from libgcc, e.g. __builtin___clear_cache. - rlRun "gcc $m clear_cache.c -O2 -std=gnu99 -o cache" - rlRun ./cache - - rlPhaseEnd - done - - rlPhaseStartCleanup - rlRun popd - rlRun "rm -r $TmpDir" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Sanity/test-m32-m64-options/thr-init-2.c b/tests/Sanity/test-m32-m64-options/thr-init-2.c deleted file mode 100644 index 5b70dd2..0000000 --- a/tests/Sanity/test-m32-m64-options/thr-init-2.c +++ /dev/null @@ -1,20 +0,0 @@ -extern void abort() ; - -static __thread int fstat ; -static __thread int fstat = 1; - -int test_code(int b) -{ - fstat += b ; - return fstat; -} - -int main (int ac, char *av[]) -{ - int a = test_code(1); - - if ((a != 2) || (fstat != 2)) - abort () ; - - return 0; -} diff --git a/tests/Sanity/test-m32-m64-options/tm.c b/tests/Sanity/test-m32-m64-options/tm.c deleted file mode 100644 index 92b90db..0000000 --- a/tests/Sanity/test-m32-m64-options/tm.c +++ /dev/null @@ -1,34 +0,0 @@ -extern void *malloc (__SIZE_TYPE__) __attribute__((malloc,transaction_safe)); - -static int __attribute__((transaction_safe)) -something (void) -{ - return 0; -} - -struct large { int foo[500]; }; - -int -main (void) -{ - int *p; - struct large *lp; - - __transaction_atomic { - p = malloc (sizeof (*p) * 100); - lp = malloc (sizeof (*lp) * 100); - - /* No instrumentation necessary; P and LP are transaction local. */ - p[5] = 123; - lp->foo[66] = 123; - - if (something ()) - __transaction_cancel; - } - - __transaction_relaxed { - ++p[5]; - } - - return ((p[5] == 124) ? 0 : 1); -} diff --git a/tests/fedora-flags/hello.c b/tests/fedora-flags/hello.c deleted file mode 100644 index 51b259b..0000000 --- a/tests/fedora-flags/hello.c +++ /dev/null @@ -1,5 +0,0 @@ -#include - -void hello() { - printf("Hello World\n"); -} diff --git a/tests/fedora-flags/hello.cpp b/tests/fedora-flags/hello.cpp deleted file mode 100644 index 400612b..0000000 --- a/tests/fedora-flags/hello.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include - -void hello() { - std::cout << "Hello World\n"; -} diff --git a/tests/fedora-flags/main.c b/tests/fedora-flags/main.c deleted file mode 100644 index 1a3455d..0000000 --- a/tests/fedora-flags/main.c +++ /dev/null @@ -1,6 +0,0 @@ -void hello(); - -int main(int argc, char **argv) { - hello(); - return 0; -} diff --git a/tests/fedora-flags/main.cpp b/tests/fedora-flags/main.cpp deleted file mode 100644 index 1a3455d..0000000 --- a/tests/fedora-flags/main.cpp +++ /dev/null @@ -1,6 +0,0 @@ -void hello(); - -int main(int argc, char **argv) { - hello(); - return 0; -} diff --git a/tests/fedora-flags/main.fmf b/tests/fedora-flags/main.fmf deleted file mode 100644 index 43934a7..0000000 --- a/tests/fedora-flags/main.fmf +++ /dev/null @@ -1,10 +0,0 @@ -summary: Test compiling with the Fedora C/CXX flags. -description: '' -component: - - gcc -test: ./runtest.sh -require: - - annobin-annocheck - - gcc - - gcc-c++ - - redhat-rpm-config diff --git a/tests/fedora-flags/runtest.sh b/tests/fedora-flags/runtest.sh deleted file mode 100755 index 01b656b..0000000 --- a/tests/fedora-flags/runtest.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -set -ex - -default_cflags=$(rpm -E '%{build_cflags}') -default_cxxflags=$(rpm -E '%{build_cxxflags}') -default_ldflags=$(rpm -E '%{build_ldflags}') - -cflags=$(rpm -D '%toolchain gcc' -E '%{build_cflags}') -cxxflags=$(rpm -D '%toolchain gcc' -E '%{build_cxxflags}') -ldflags=$(rpm -D '%toolchain gcc' -E '%{build_ldflags}') - -test "$default_cflags" = "$cflags" -test "$default_cxxflags" = "$cxxflags" -test "$default_ldflags" = "$ldflags" - -gcc $cflags -o hello.o -c hello.c -annocheck hello.o -gcc $cflags -o main.o -c main.c -gcc $ldflags -o hello main.o hello.o -annocheck hello -./hello | grep "Hello World" - -g++ $cxxflags -o hello-cpp.o -c hello.cpp -annocheck hello-cpp.o -g++ $cxxflags -o main-cpp.o -c main.cpp -g++ $ldflags -o hello-cpp main-cpp.o hello-cpp.o -annocheck hello-cpp -./hello-cpp | grep "Hello World" diff --git a/tests/smoke-test/Makefile b/tests/smoke-test/Makefile deleted file mode 100644 index fb46790..0000000 --- a/tests/smoke-test/Makefile +++ /dev/null @@ -1,65 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/gcc/Sanity/smoke-test -# Description: Basic smoke test. -# Author: Marek Polacek -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2012 Red Hat, Inc. All rights reserved. -# -# This copyrighted material is made available to anyone wishing -# to use, modify, copy, or redistribute it subject to the terms -# and conditions of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/gcc/Sanity/smoke-test -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE hello.c hello.f90 hello.cpp tm.c quad.c omphello.c thr-init-2.c clear_cache.c - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Marek Polacek " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: Basic smoke test." >> $(METADATA) - @echo "Type: Sanity" >> $(METADATA) - @echo "TestTime: 10m" >> $(METADATA) - @echo "RunFor: gcc" >> $(METADATA) - @echo "RunFor: devtoolset-1.0-gcc" >> $(METADATA) - @echo "Requires: gcc gcc-c++ gcc-gfortran glibc-common glibc-devel" >> $(METADATA) - @echo "Requires: libquadmath libquadmath-devel libgomp libgcc libstdc++-devel" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/smoke-test/PURPOSE b/tests/smoke-test/PURPOSE deleted file mode 100644 index 912f7b4..0000000 --- a/tests/smoke-test/PURPOSE +++ /dev/null @@ -1,3 +0,0 @@ -PURPOSE of /tools/gcc/Sanity/smoke-test -Description: Basic smoke test. -Author: Marek Polacek diff --git a/tests/smoke-test/clear_cache.c b/tests/smoke-test/clear_cache.c deleted file mode 100644 index b10479f..0000000 --- a/tests/smoke-test/clear_cache.c +++ /dev/null @@ -1,7 +0,0 @@ -int -main (void) -{ - char *mem = __builtin_alloca (40); - __builtin___clear_cache (mem, mem + 40); - return 0; -} diff --git a/tests/smoke-test/hello.c b/tests/smoke-test/hello.c deleted file mode 100644 index 4096e11..0000000 --- a/tests/smoke-test/hello.c +++ /dev/null @@ -1,7 +0,0 @@ -#include - -int -main (void) -{ - puts ("Hello World!"); -} diff --git a/tests/smoke-test/hello.cpp b/tests/smoke-test/hello.cpp deleted file mode 100644 index 0f2234e..0000000 --- a/tests/smoke-test/hello.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include - -int -main (void) -{ - std::cout << "Hello, world!\n"; -} diff --git a/tests/smoke-test/hello.f90 b/tests/smoke-test/hello.f90 deleted file mode 100644 index afabbb2..0000000 --- a/tests/smoke-test/hello.f90 +++ /dev/null @@ -1,3 +0,0 @@ - program hello - print *, "Hello World!" - end program hello diff --git a/tests/smoke-test/main.fmf b/tests/smoke-test/main.fmf deleted file mode 100644 index 3710ca3..0000000 --- a/tests/smoke-test/main.fmf +++ /dev/null @@ -1,22 +0,0 @@ -summary: Basic smoke test. -description: '' -contact: -- Marek Polacek -component: -- gcc -test: ./runtest.sh -framework: beakerlib -recommend: -- gcc -- gcc-c++ -- gcc-gfortran -- glibc-common -- glibc-devel -- libquadmath -- libquadmath-devel -- libgomp -- libgcc -- libstdc++-devel -duration: 10m -extra-summary: /tools/gcc/Sanity/smoke-test -extra-task: /tools/gcc/Sanity/smoke-test diff --git a/tests/smoke-test/omphello.c b/tests/smoke-test/omphello.c deleted file mode 100644 index 85b591f..0000000 --- a/tests/smoke-test/omphello.c +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include -#include - -int -main (void) -{ - int th_id; - int nthreads; - - #pragma omp parallel private(th_id) - { - th_id = omp_get_thread_num (); - printf ("Hello World from thread %d\n", th_id); - - #pragma omp barrier - if (th_id == 0) - { - nthreads = omp_get_num_threads (); - printf ("There are %d threads\n", nthreads); - } - } - return EXIT_SUCCESS; -} diff --git a/tests/smoke-test/quad.c b/tests/smoke-test/quad.c deleted file mode 100644 index e5a6cc7..0000000 --- a/tests/smoke-test/quad.c +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include -#include - -int -main (void) -{ - __float128 r = strtoflt128 ("1.23456789", NULL); - - int prec = 20; - int width = 46; - char buf[128]; - - r = 2.0q; - r = sqrtq (r); - int n = quadmath_snprintf (buf, sizeof buf, "%+-#*.20Qe", width, r); - if ((size_t) n < sizeof buf) - /* Prints: +1.41421356237309504880e+00 */ - printf ("%s\n", buf); - quadmath_snprintf (buf, sizeof buf, "%Qa", r); - if ((size_t) n < sizeof buf) - /* Prints: 0x1.6a09e667f3bcc908b2fb1366ea96p+0 */ - printf ("%s\n", buf); - n = quadmath_snprintf (NULL, 0, "%+-#46.*Qe", prec, r); - if (n > -1) - { - char *str = malloc (n + 1); - if (str) - { - quadmath_snprintf (str, n + 1, "%+-#46.*Qe", prec, r); - /* Prints: +1.41421356237309504880e+00 */ - printf ("%s\n", str); - } - free (str); - } - - return 0; -} diff --git a/tests/smoke-test/runtest.sh b/tests/smoke-test/runtest.sh deleted file mode 100755 index 7b6a4e9..0000000 --- a/tests/smoke-test/runtest.sh +++ /dev/null @@ -1,127 +0,0 @@ -#!/bin/bash -# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/gcc/Sanity/smoke-test -# Description: Basic smoke test. -# Author: Marek Polacek -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2012 Red Hat, Inc. All rights reserved. -# -# This copyrighted material is made available to anyone wishing -# to use, modify, copy, or redistribute it subject to the terms -# and conditions of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# A testing change. - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGES=(gcc gcc-c++ gcc-gfortran glibc-common libgomp libgcc glibc-devel libstdc++ libstdc++-devel) - -# Choose the compiler. -GCC=${GCC:-gcc} -GXX=${GXX:-g++} -GFORTRAN=${GFORTRAN:-gfortran} - -PACKAGE=gcc - -rlJournalStart - rlPhaseStartSetup - export PRI_ARCH=`rlGetPrimaryArch` - export SEC_ARCH=`rlGetSecondaryArch` - # don't assert anything under devtoolset - if type gcc | grep -q -v devtoolset - then - for p in "${PACKAGES[@]}"; do - rpm -q "$p.$PRI_ARCH" || yum install -y "$p.$PRI_ARCH" - rlAssertRpm "$p.$PRI_ARCH" - done; unset p - fi - rlLog "GCC = $GCC" - rlLog "Installed within `rpmquery -f $(which $GCC)`" - rlLog "GXX = $GXX" - rlLog "Installed within `rpmquery -f $(which $GXX)`" - rlLog "GFORTRAN = $GFORTRAN" - rlLog "Installed within `rpmquery -f $(which $GFORTRAN)`" - rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" - # We need some files. - rlRun "cp -v hello.{c,cpp,f90} tm.c quad.c thr-init-2.c clear_cache.c omphello.c $TmpDir" - rlRun "pushd $TmpDir" - rlRun "rpmquery -l libstdc++-devel.$PRI_ARCH" - test -n "$SEC_ARCH" && rpmquery "libstdc++-devel.$SEC_ARCH" && rlRun "rpmquery -l libstdc++-devel.$SEC_ARCH" - rlPhaseEnd - - rlPhaseStartSetup "Showing compiler versions" - for compiler in $GCC $GXX $GFORTRAN - do - rlLog "Version of compiler: $compiler" - eval "$compiler --version 2>&1" | while read line - do - rlLog " $line" - done - done - rlPhaseEnd - - rlPhaseStartTest "Compile" - rlRun "$GCC hello.c -o hello_c" - rlRun "$GXX hello.cpp -o hello_cpp" - rlRun "$GFORTRAN hello.f90 -o hello_fortran" - - # TM support is GCC >=4.7 only. - $GCC -xc -O2 -std=gnu99 -fgnu-tm - <<< "int main(){}" - if test $? -eq 0; then - rlRun "$GCC -O2 -std=gnu99 -fgnu-tm tm.c -o tm" - rlRun "./tm" - fi - - # Test OpenMP. - rlRun "$GCC omphello.c -O2 -std=gnu99 -fopenmp -o omp" - rlRun "./omp" - - # Test __thread. - rlRun "$GCC thr-init-2.c -O2 -std=gnu99 -ftls-model=initial-exec -o thr" - rlRun "./thr" - - # Now test some libquadmath stuff (__float128 support). - # libquadmath is mising on RHEL machines, usually. - test "`rpmquery --qf '%{version}-%{release}' libquadmath`" = "`rpmquery --qf '%{version}-%{release}' $GCC`" - if test $? -eq 0 -a "$GCC" = "gcc"; then - rlRun "$GCC quad.c -O2 -std=gnu99 -lquadmath -lm -o quad" - rlRun "./quad" - fi - - # And now something from libgcc, e.g. __builtin___clear_cache. - # But not on RHEL5. - if ! rlIsRHEL 5; then - rlRun "$GCC clear_cache.c -O2 -std=gnu99 -o cache" - rlRun "./cache" - fi - rlPhaseEnd - - rlPhaseStartTest "Check dependant libraries" - rlRun "ldd hello_{c,cpp,fortran} &> ldd.out" - # Nothing should be linked against anything in /opt. - rlAssertNotGrep "/opt" ldd.out - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/smoke-test/thr-init-2.c b/tests/smoke-test/thr-init-2.c deleted file mode 100644 index 051cff9..0000000 --- a/tests/smoke-test/thr-init-2.c +++ /dev/null @@ -1,24 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target tls_runtime } */ -/* { dg-add-options tls } */ - -extern void abort() ; - -static __thread int fstat ; -static __thread int fstat = 1; - -int test_code(int b) -{ - fstat += b ; - return fstat; -} - -int main (int ac, char *av[]) -{ - int a = test_code(1); - - if ((a != 2) || (fstat != 2)) - abort () ; - - return 0; -} diff --git a/tests/smoke-test/tm.c b/tests/smoke-test/tm.c deleted file mode 100644 index f9b4c9b..0000000 --- a/tests/smoke-test/tm.c +++ /dev/null @@ -1,34 +0,0 @@ -extern void *malloc (__SIZE_TYPE__) __attribute__((malloc,transaction_safe)); - -static int __attribute__((transaction_safe)) -something (void) -{ - return 0; -} - -struct large { int foo[500]; }; - -int -main (void) -{ - int *p; - struct large *lp; - - __transaction_atomic { - p = malloc (sizeof (*p) * 100); - lp = malloc (sizeof (*lp) * 100); - - /* No instrumentation necessary; P and LP are transaction local. */ - p[5] = 123; - lp->foo[66] = 123; - - if (something ()) - __transaction_cancel; - } - - __transaction_relaxed { - ++p[5]; - } - - return ( (p[5] == 124) ? 0 : 1 ); -} From c741e6965dd8974ed96ce829d06f9af488d192dc Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 13 Nov 2023 18:00:18 +0100 Subject: [PATCH 177/293] gcc-13.2.1-5 --- .gitignore | 1 + gcc.spec | 26 ++++++- gcc13-pr110792.patch | 163 +++++++++++++++++++++++++++++++++++++++++++ sources | 2 +- 4 files changed, 188 insertions(+), 4 deletions(-) create mode 100644 gcc13-pr110792.patch diff --git a/.gitignore b/.gitignore index 947393e..3b98d49 100644 --- a/.gitignore +++ b/.gitignore @@ -112,3 +112,4 @@ /nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz /gcc-13.2.1-20230918.tar.xz /gcc-13.2.1-20231011.tar.xz +/gcc-13.2.1-20231113.tar.xz diff --git a/gcc.spec b/gcc.spec index 5d6c7c4..ce8cee9 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20231011 -%global gitrev dc4aa177146b55dd7bd0b2dd63c721f3eaf2d2a8 +%global DATE 20231113 +%global gitrev 4292c70489195b52615f16679dc6df18cd1c8432 %global gcc_version 13.2.1 %global gcc_major 13 # 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 4 +%global gcc_release 5 %global nvptx_tools_gitrev aa3404ad5a496cda5d79a50bedb1344fd63e8763 %global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409 %global _unpackaged_files_terminate_build 0 @@ -286,6 +286,7 @@ Patch8: gcc13-no-add-needed.patch Patch9: gcc13-Wno-format-security.patch Patch10: gcc13-rh1574936.patch Patch11: gcc13-d-shared-libphobos.patch +Patch12: gcc13-pr110792.patch Patch50: isl-rh2155127.patch @@ -863,6 +864,7 @@ so that there cannot be any synchronization problems. %patch -P10 -p0 -b .rh1574936~ %endif %patch -P11 -p0 -b .d-shared-libphobos~ +%patch -P12 -p0 -b .pr110792~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3457,6 +3459,24 @@ end %endif %changelog +* Mon Nov 13 2023 Jakub Jelinek 13.2.1-5 +- update from releases/gcc-13 branch + - PRs c++/89038, c/111884, d/110712, d/112270, fortran/67740, fortran/97245, + fortran/111837, fortran/112316, libbacktrace/111315, + libbacktrace/112263, libstdc++/110944, libstdc++/111172, + libstdc++/111936, libstdc++/112089, libstdc++/112314, + middle-end/111253, middle-end/111818, modula2/111756, modula2/112110, + target/101177, target/110170, target/111001, target/111366, + target/111367, target/111380, target/111935, target/112443, + tree-optimization/111397, tree-optimization/111445, + tree-optimization/111489, tree-optimization/111583, + tree-optimization/111614, tree-optimization/111622, + tree-optimization/111694, tree-optimization/111764, + tree-optimization/111820, tree-optimization/111833, + tree-optimization/111917 + - fix aarch64 RA ICE (#2241139, PR target/111528) +- fix ia32 doubleword rotates (#2238781, PR target/110792) + * Wed Oct 11 2023 Jakub Jelinek 13.2.1-4 - update from releases/gcc-13 branch - PRs ada/110488, ada/111434, c++/99631, c++/111471, c++/111485, c++/111493, diff --git a/gcc13-pr110792.patch b/gcc13-pr110792.patch new file mode 100644 index 0000000..ce129f9 --- /dev/null +++ b/gcc13-pr110792.patch @@ -0,0 +1,163 @@ +PR target/110792: Early clobber issues with rot32di2_doubleword on i386. + +This patch is a conservative fix for PR target/110792, a wrong-code +regression affecting doubleword rotations by BITS_PER_WORD, which +effectively swaps the highpart and lowpart words, when the source to be +rotated resides in memory. The issue is that if the register used to +hold the lowpart of the destination is mentioned in the address of +the memory operand, the current define_insn_and_split unintentionally +clobbers it before reading the highpart. + +Hence, for the testcase, the incorrectly generated code looks like: + + salq $4, %rdi // calculate address + movq WHIRL_S+8(%rdi), %rdi // accidentally clobber addr + movq WHIRL_S(%rdi), %rbp // load (wrong) lowpart + +Traditionally, the textbook way to fix this would be to add an +explicit early clobber to the instruction's constraints. + + (define_insn_and_split "32di2_doubleword" +- [(set (match_operand:DI 0 "register_operand" "=r,r,r") ++ [(set (match_operand:DI 0 "register_operand" "=r,r,&r") + (any_rotate:DI (match_operand:DI 1 "nonimmediate_operand" "0,r,o") + (const_int 32)))] + +but unfortunately this currently generates significantly worse code, +due to a strange choice of reloads (effectively memcpy), which ends up +looking like: + + salq $4, %rdi // calculate address + movdqa WHIRL_S(%rdi), %xmm0 // load the double word in SSE reg. + movaps %xmm0, -16(%rsp) // store the SSE reg back to the stack + movq -8(%rsp), %rdi // load highpart + movq -16(%rsp), %rbp // load lowpart + +Note that reload's "&" doesn't distinguish between the memory being +early clobbered, vs the registers used in an addressing mode being +early clobbered. + +The fix proposed in this patch is to remove the third alternative, that +allowed offsetable memory as an operand, forcing reload to place the +operand into a register before the rotation. This results in: + + salq $4, %rdi + movq WHIRL_S(%rdi), %rax + movq WHIRL_S+8(%rdi), %rdi + movq %rax, %rbp + +I believe there's a more advanced solution, by swapping the order of +the loads (if first destination register is mentioned in the address), +or inserting a lea insn (if both destination registers are mentioned +in the address), but this fix is a minimal "safe" solution, that +should hopefully be suitable for backporting. + +2023-08-06 Roger Sayle + +gcc/testsuite/ChangeLog + PR target/110792 + * gcc.target/i386/pr110792.c: Remove dg-final scan-assembler-not. + +2023-08-03 Roger Sayle + +gcc/ChangeLog + PR target/110792 + * config/i386/i386.md (ti3): For rotations by 64 bits + place operand in a register before gen_64ti2_doubleword. + (di3): Likewise, for rotations by 32 bits, place + operand in a register before gen_32di2_doubleword. + (32di2_doubleword): Constrain operand to be in register. + (64ti2_doubleword): Likewise. + +gcc/testsuite/ChangeLog + PR target/110792 + * g++.target/i386/pr110792.C: New 32-bit C++ test case. + * gcc.target/i386/pr110792.c: New 64-bit C test case. + +--- gcc/config/i386/i386.md ++++ gcc/config/i386/i386.md +@@ -15341,7 +15341,10 @@ (define_expand "ti3" + emit_insn (gen_ix86_ti3_doubleword + (operands[0], operands[1], operands[2])); + else if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 64) +- emit_insn (gen_64ti2_doubleword (operands[0], operands[1])); ++ { ++ operands[1] = force_reg (TImode, operands[1]); ++ emit_insn (gen_64ti2_doubleword (operands[0], operands[1])); ++ } + else + { + rtx amount = force_reg (QImode, operands[2]); +@@ -15376,7 +15379,10 @@ (define_expand "di3" + emit_insn (gen_ix86_di3_doubleword + (operands[0], operands[1], operands[2])); + else if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 32) +- emit_insn (gen_32di2_doubleword (operands[0], operands[1])); ++ { ++ operands[1] = force_reg (DImode, operands[1]); ++ emit_insn (gen_32di2_doubleword (operands[0], operands[1])); ++ } + else + FAIL; + +@@ -15544,8 +15550,8 @@ (define_insn_and_split "ix86_rotr3_doubleword" + }) + + (define_insn_and_split "32di2_doubleword" +- [(set (match_operand:DI 0 "register_operand" "=r,r,r") +- (any_rotate:DI (match_operand:DI 1 "nonimmediate_operand" "0,r,o") ++ [(set (match_operand:DI 0 "register_operand" "=r,r") ++ (any_rotate:DI (match_operand:DI 1 "register_operand" "0,r") + (const_int 32)))] + "!TARGET_64BIT" + "#" +@@ -15562,8 +15568,8 @@ (define_insn_and_split "32di2_doubleword" + }) + + (define_insn_and_split "64ti2_doubleword" +- [(set (match_operand:TI 0 "register_operand" "=r,r,r") +- (any_rotate:TI (match_operand:TI 1 "nonimmediate_operand" "0,r,o") ++ [(set (match_operand:TI 0 "register_operand" "=r,r") ++ (any_rotate:TI (match_operand:TI 1 "register_operand" "0,r") + (const_int 64)))] + "TARGET_64BIT" + "#" +--- gcc/testsuite/g++.target/i386/pr110792.C ++++ gcc/testsuite/g++.target/i386/pr110792.C +@@ -0,0 +1,16 @@ ++/* { dg-do compile { target ia32 } } */ ++/* { dg-options "-O2" } */ ++ ++template ++inline T rotr(T input) ++{ ++ return static_cast((input >> ROT) | (input << (8 * sizeof(T) - ROT))); ++} ++ ++unsigned long long WHIRL_S[256] = {0x18186018C07830D8}; ++unsigned long long whirl(unsigned char x0) ++{ ++ const unsigned long long s4 = WHIRL_S[x0&0xFF]; ++ return rotr<32>(s4); ++} ++/* { dg-final { scan-assembler-not "movl\tWHIRL_S\\+4\\(,%eax,8\\), %eax" } } */ +--- gcc/testsuite/gcc.target/i386/pr110792.c ++++ gcc/testsuite/gcc.target/i386/pr110792.c +@@ -0,0 +1,17 @@ ++/* { dg-do compile { target int128 } } */ ++/* { dg-options "-O2" } */ ++ ++static inline unsigned __int128 rotr(unsigned __int128 input) ++{ ++ return ((input >> 64) | (input << (64))); ++} ++ ++unsigned __int128 WHIRL_S[256] = {((__int128)0x18186018C07830D8) << 64 |0x18186018C07830D8}; ++unsigned __int128 whirl(unsigned char x0) ++{ ++ register int t __asm("rdi") = x0&0xFF; ++ const unsigned __int128 s4 = WHIRL_S[t]; ++ register unsigned __int128 tt __asm("rdi") = rotr(s4); ++ asm("":::"memory"); ++ return tt; ++} diff --git a/sources b/sources index 94cf85d..182bfd5 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.2.1-20231011.tar.xz) = 24fea15e0b67a2faa3d5476b105983b474b654e9ec50cdffb1967f18338c098539d5bd39e99f5f607eb64f6b0cf6d8e3ae91c9d5ea8069fc10b566739971be60 +SHA512 (gcc-13.2.1-20231113.tar.xz) = d5897c4dc4a223f20ffbbefe1c59077c5680fcb7287c97d9a84d4c25712dc02e4eb91aa3a14e3ae79b9a986d14bdeff1b93489ae9741053e0b069c42f52fe934 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz) = 33a024326426375533cb5dd9b68b2508f37540be418d2506bfa19a5f5866485e9af150469064e9059b68136ad8cb080b3b12e7eb5c6b7d1288cf6bfb3f6bb5d0 From 54bd2930042e5a7b0a2fb562b551a8e26a918f4d Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 5 Dec 2023 18:33:40 +0100 Subject: [PATCH 178/293] 13.2.1-6 --- .gitignore | 1 + gcc.spec | 16 +++++++++++++--- sources | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 3b98d49..80128da 100644 --- a/.gitignore +++ b/.gitignore @@ -113,3 +113,4 @@ /gcc-13.2.1-20230918.tar.xz /gcc-13.2.1-20231011.tar.xz /gcc-13.2.1-20231113.tar.xz +/gcc-13.2.1-20231205.tar.xz diff --git a/gcc.spec b/gcc.spec index ce8cee9..664d00c 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20231113 -%global gitrev 4292c70489195b52615f16679dc6df18cd1c8432 +%global DATE 20231205 +%global gitrev f783814ad6a04ae5ef44595216596a2b75eda15b %global gcc_version 13.2.1 %global gcc_major 13 # 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 5 +%global gcc_release 6 %global nvptx_tools_gitrev aa3404ad5a496cda5d79a50bedb1344fd63e8763 %global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409 %global _unpackaged_files_terminate_build 0 @@ -3459,6 +3459,16 @@ end %endif %changelog +* Tue Dec 5 2023 Jakub Jelinek 13.2.1-6 +- update from releases/gcc-13 branch + - PRs c++/33799, c++/102191, c++/111703, c++/112269, c++/112301, c++/112633, + c/112339, fortran/111880, fortran/112764, libgomp/111413, + libstdc++/112348, libstdc++/112491, libstdc++/112607, + middle-end/111497, target/53372, target/110411, target/111408, + target/111815, target/111828, target/112672, tree-optimization/111137, + tree-optimization/111465, tree-optimization/111967, + tree-optimization/112496 + * Mon Nov 13 2023 Jakub Jelinek 13.2.1-5 - update from releases/gcc-13 branch - PRs c++/89038, c/111884, d/110712, d/112270, fortran/67740, fortran/97245, diff --git a/sources b/sources index 182bfd5..9509f03 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.2.1-20231113.tar.xz) = d5897c4dc4a223f20ffbbefe1c59077c5680fcb7287c97d9a84d4c25712dc02e4eb91aa3a14e3ae79b9a986d14bdeff1b93489ae9741053e0b069c42f52fe934 +SHA512 (gcc-13.2.1-20231205.tar.xz) = f132a2d35d6ea0b0d82043870f1c9f60dda119e63df6833b16d20e2c93e2978f62698d4cc72a6e2eefbaeded0683107de9ebeb93923b96c57dcd612504aa6a1b SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz) = 33a024326426375533cb5dd9b68b2508f37540be418d2506bfa19a5f5866485e9af150469064e9059b68136ad8cb080b3b12e7eb5c6b7d1288cf6bfb3f6bb5d0 From 352f3e92aba3781854565a08a9aec4d94925d0eb Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 13 Jan 2024 12:49:39 +0100 Subject: [PATCH 179/293] 14.0.1-0.1 --- .gitignore | 118 +---- gcc.spec | 488 ++---------------- gcc13-pr110792.patch | 163 ------ ...y.patch => gcc14-Wno-format-security.patch | 28 +- ...os.patch => gcc14-d-shared-libphobos.patch | 0 ...tch => gcc14-fortran-fdec-duplicates.patch | 0 gcc13-hack.patch => gcc14-hack.patch | 0 gcc13-isl-dl.patch => gcc14-isl-dl.patch | 0 gcc13-isl-dl2.patch => gcc14-isl-dl2.patch | 0 ...atch => gcc14-libgomp-omp_h-multilib.patch | 0 ...+-docs.patch => gcc14-libstdc++-docs.patch | 4 +- ...path.patch => gcc14-libtool-no-rpath.patch | 0 ...-needed.patch => gcc14-no-add-needed.patch | 0 ...3-rh1574936.patch => gcc14-rh1574936.patch | 0 ...atch => gcc14-sparc-config-detection.patch | 0 sources | 6 +- update-gcc.sh | 2 +- 17 files changed, 78 insertions(+), 731 deletions(-) delete mode 100644 gcc13-pr110792.patch rename gcc13-Wno-format-security.patch => gcc14-Wno-format-security.patch (70%) rename gcc13-d-shared-libphobos.patch => gcc14-d-shared-libphobos.patch (100%) rename gcc13-fortran-fdec-duplicates.patch => gcc14-fortran-fdec-duplicates.patch (100%) rename gcc13-hack.patch => gcc14-hack.patch (100%) rename gcc13-isl-dl.patch => gcc14-isl-dl.patch (100%) rename gcc13-isl-dl2.patch => gcc14-isl-dl2.patch (100%) rename gcc13-libgomp-omp_h-multilib.patch => gcc14-libgomp-omp_h-multilib.patch (100%) rename gcc13-libstdc++-docs.patch => gcc14-libstdc++-docs.patch (96%) rename gcc13-libtool-no-rpath.patch => gcc14-libtool-no-rpath.patch (100%) rename gcc13-no-add-needed.patch => gcc14-no-add-needed.patch (100%) rename gcc13-rh1574936.patch => gcc14-rh1574936.patch (100%) rename gcc13-sparc-config-detection.patch => gcc14-sparc-config-detection.patch (100%) diff --git a/.gitignore b/.gitignore index 80128da..ddede7e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,116 +1,4 @@ -/gcc-10.0.1-20200118.tar.xz -/newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz -/nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz -/gcc-10.0.1-20200121.tar.xz -/gcc-10.0.1-20200123.tar.xz -/gcc-10.0.1-20200126.tar.xz -/gcc-10.0.1-20200130.tar.xz -/gcc-10.0.1-20200216.tar.xz -/gcc-10.0.1-20200311.tar.xz -/gcc-10.0.1-20200325.tar.xz -/gcc-10.0.1-20200328.tar.xz -/gcc-10.0.1-20200420.tar.xz -/gcc-10.0.1-20200501.tar.xz -/gcc-10.1.1-20200507.tar.xz -/gcc-10.1.1-20200618.tar.xz -/gcc-10.2.1-20200723.tar.xz -/gcc-10.2.1-20200804.tar.xz -/gcc-10.2.1-20200826.tar.xz -/gcc-10.2.1-20200916.tar.xz -/gcc-10.2.1-20201005.tar.xz -/gcc-10.2.1-20201016.tar.xz -/gcc-10.2.1-20201102.tar.xz -/gcc-10.2.1-20201112.tar.xz -/gcc-10.2.1-20201125.tar.xz -/gcc-11.0.0-20201204.tar.xz -/gcc-11.0.0-20201216.tar.xz -/gcc-11.0.0-20201217.tar.xz -/gcc-11.0.0-20201223.tar.xz -/gcc-11.0.0-20210109.tar.xz -/gcc-11.0.0-20210113.tar.xz -/gcc-11.0.0-20210116.tar.xz -/gcc-11.0.0-20210119.tar.xz -/gcc-11.0.0-20210123.tar.xz -/gcc-11.0.0-20210130.tar.xz -/gcc-11.0.0-20210210.tar.xz -/gcc-11.0.0-20210225.tar.xz -/gcc-11.0.1-20210307.tar.xz -/gcc-11.0.1-20210319.tar.xz -/isl-0.18.tar.bz2 -/gcc-11.0.1-20210324.tar.xz -/gcc-11.0.1-20210405.tar.xz -/gcc-11.0.1-20210418.tar.xz -/gcc-11.0.1-20210422.tar.xz -/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 -/gcc-11.1.1-20210617.tar.xz -/gcc-11.1.1-20210623.tar.xz -/gcc-11.1.1-20210726.tar.xz -/gcc-11.2.1-20210728.tar.xz -/gcc-11.2.1-20210823.tar.xz -/gcc-11.2.1-20211012.tar.xz -/gcc-11.2.1-20211018.tar.xz -/gcc-11.2.1-20211019.tar.xz -/gcc-11.2.1-20211203.tar.xz -/gcc-12.0.0-20220108.tar.xz -/gcc-12.0.0-20220112.tar.xz -/gcc-12.0.0-20220115.tar.xz -/gcc-12.0.1-20220118.tar.xz -/gcc-12.0.1-20220125.tar.xz -/gcc-12.0.1-20220129.tar.xz -/gcc-12.0.1-20220202.tar.xz -/gcc-12.0.1-20220205.tar.xz -/gcc-12.0.1-20220212.tar.xz -/gcc-12.0.1-20220214.tar.xz -/gcc-12.0.1-20220222.tar.xz -/gcc-12.0.1-20220306.tar.xz -/gcc-12.0.1-20220308.tar.xz -/gcc-12.0.1-20220401.tar.xz -/gcc-12.0.1-20220411.tar.xz -/gcc-12.0.1-20220413.tar.xz -/gcc-12.0.1-20220429.tar.xz -/gcc-12.1.1-20220507.tar.xz -/gcc-12.1.1-20220628.tar.xz -/gcc-12.1.1-20220810.tar.xz -/gcc-12.2.1-20220819.tar.xz -/gcc-12.2.1-20221103.tar.xz +/gcc-14.0.1-20240113.tar.xz /isl-0.24.tar.bz2 -/newlib-cygwin-a8526cb52bedabd4d6ba4b227a5185627f871aa1.tar.xz -/nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz -/gcc-12.2.1-20221121.tar.xz -/gcc-13.0.0-20221219.tar.xz -/gcc-13.0.0-20230102.tar.xz -/gcc-13.0.0-20230106.tar.xz -/gcc-13.0.0-20230112.tar.xz -/gcc-13.0.0-20230115.tar.xz -/gcc-13.0.1-20230117.tar.xz -/gcc-13.0.1-20230127.tar.xz -/newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz -/gcc-13.0.1-20230208.tar.xz -/gcc-13.0.1-20230215.tar.xz -/gcc-13.0.1-20230221.tar.xz -/gcc-13.0.1-20230304.tar.xz -/gcc-13.0.1-20230310.tar.xz -/gcc-13.0.1-20230318.tar.xz -/gcc-13.0.1-20230321.tar.xz -/nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz -/gcc-13.0.1-20230324.tar.xz -/gcc-13.0.1-20230329.tar.xz -/gcc-13.0.1-20230401.tar.xz -/gcc-13.0.1-20230404.tar.xz -/gcc-13.0.1-20230418.tar.xz -/gcc-13.0.1-20230419.tar.xz -/gcc-13.0.1-20230421.tar.xz -/gcc-13.1.1-20230426.tar.xz -/gcc-13.1.1-20230511.tar.xz -/gcc-13.1.1-20230519.tar.xz -/gcc-13.1.1-20230614.tar.xz -/gcc-13.2.1-20230728.tar.xz -/gcc-13.2.1-20230906.tar.xz -/nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz -/gcc-13.2.1-20230918.tar.xz -/gcc-13.2.1-20231011.tar.xz -/gcc-13.2.1-20231113.tar.xz -/gcc-13.2.1-20231205.tar.xz +/newlib-cygwin-5f15d7c5817b07a6b18cbab17342c95cb7b42be4.tar.xz +/nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz diff --git a/gcc.spec b/gcc.spec index 664d00c..aca4c6e 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,12 +1,12 @@ -%global DATE 20231205 -%global gitrev f783814ad6a04ae5ef44595216596a2b75eda15b -%global gcc_version 13.2.1 -%global gcc_major 13 +%global DATE 20240113 +%global gitrev 754d5d7d790d2ddd25c7507849c0c811a6a649da +%global gcc_version 14.0.1 +%global gcc_major 14 # 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 6 -%global nvptx_tools_gitrev aa3404ad5a496cda5d79a50bedb1344fd63e8763 -%global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409 +%global gcc_release 0 +%global nvptx_tools_gitrev c5ad8ada3e86d96b10a9d352b7a764f801478ba6 +%global newlib_cygwin_gitrev 5f15d7c5817b07a6b18cbab17342c95cb7b42be4 %global _unpackaged_files_terminate_build 0 %global _performance_build 1 # Hardening slows the compiler way too much. @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist} +Release: %{gcc_release}.1%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -151,7 +151,7 @@ License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2 Source0: gcc-%{version}-%{DATE}.tar.xz # The source for nvptx-tools package was pulled from upstream's vcs. Use the # following commands to generate the tarball: -# git clone --depth 1 git://github.com/MentorEmbedded/nvptx-tools.git nvptx-tools-dir.tmp +# git clone --depth 1 https://github.com/MentorEmbedded/nvptx-tools.git nvptx-tools-dir.tmp # git --git-dir=nvptx-tools-dir.tmp/.git fetch --depth 1 origin %%{nvptx_tools_gitrev} # git --git-dir=nvptx-tools-dir.tmp/.git archive --prefix=nvptx-tools-%%{nvptx_tools_gitrev}/ %%{nvptx_tools_gitrev} | xz -9e > nvptx-tools-%%{nvptx_tools_gitrev}.tar.xz # rm -rf nvptx-tools-dir.tmp @@ -275,22 +275,21 @@ Provides: bundled(libbacktrace) Provides: bundled(libffi) Provides: gcc(major) = %{gcc_major} -Patch0: gcc13-hack.patch -Patch2: gcc13-sparc-config-detection.patch -Patch3: gcc13-libgomp-omp_h-multilib.patch -Patch4: gcc13-libtool-no-rpath.patch -Patch5: gcc13-isl-dl.patch -Patch6: gcc13-isl-dl2.patch -Patch7: gcc13-libstdc++-docs.patch -Patch8: gcc13-no-add-needed.patch -Patch9: gcc13-Wno-format-security.patch -Patch10: gcc13-rh1574936.patch -Patch11: gcc13-d-shared-libphobos.patch -Patch12: gcc13-pr110792.patch +Patch0: gcc14-hack.patch +Patch2: gcc14-sparc-config-detection.patch +Patch3: gcc14-libgomp-omp_h-multilib.patch +Patch4: gcc14-libtool-no-rpath.patch +Patch5: gcc14-isl-dl.patch +Patch6: gcc14-isl-dl2.patch +Patch7: gcc14-libstdc++-docs.patch +Patch8: gcc14-no-add-needed.patch +Patch9: gcc14-Wno-format-security.patch +Patch10: gcc14-rh1574936.patch +Patch11: gcc14-d-shared-libphobos.patch Patch50: isl-rh2155127.patch -Patch100: gcc13-fortran-fdec-duplicates.patch +Patch100: gcc14-fortran-fdec-duplicates.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -331,11 +330,11 @@ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} %endif %description -The gcc package contains the GNU Compiler Collection version 13. +The gcc package contains the GNU Compiler Collection version 14. You'll need this package in order to compile C code. %package -n libgcc -Summary: GCC version 13 shared support library +Summary: GCC version 14 shared support library Autoreq: false %if !%{build_ada} Obsoletes: libgnat < %{version}-%{release} @@ -864,7 +863,6 @@ so that there cannot be any synchronization problems. %patch -P10 -p0 -b .rh1574936~ %endif %patch -P11 -p0 -b .d-shared-libphobos~ -%patch -P12 -p0 -b .pr110792~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -988,7 +986,7 @@ ISL_FLAG_PIC=-fPIC ISL_FLAG_PIC=-fpic %endif cd isl-build -sed -i 's|libisl\([^-]\)|libgcc13privateisl\1|g' \ +sed -i 's|libisl\([^-]\)|libgcc14privateisl\1|g' \ ../../isl-%{isl_version}/Makefile.{am,in} ../../isl-%{isl_version}/configure \ CC=/usr/bin/gcc CXX=/usr/bin/g++ \ @@ -996,8 +994,8 @@ sed -i 's|libisl\([^-]\)|libgcc13privateisl\1|g' \ make %{?_smp_mflags} CFLAGS="${CFLAGS:-%optflags} $ISL_FLAG_PIC" make install cd ../isl-install/lib -rm libgcc13privateisl.so{,.23} -mv libgcc13privateisl.so.23.1.0 libisl.so.23 +rm libgcc14privateisl.so{,.23} +mv libgcc14privateisl.so.23.1.0 libisl.so.23 ln -sf libisl.so.23 libisl.so cd ../.. %endif @@ -1347,8 +1345,12 @@ rm -rf %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/ rm -rf %{buildroot}%{_prefix}/%{_lib}/libc[cp]1* mv -f %{buildroot}%{_prefix}/nvptx-none/lib/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/ mv -f %{buildroot}%{_prefix}/nvptx-none/lib/mgomp/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/mgomp/ +mv -f %{buildroot}%{_prefix}/nvptx-none/lib/mptx-3.1/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/mptx-3.1/ +mv -f %{buildroot}%{_prefix}/nvptx-none/lib/mgomp/mptx-3.1/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/mgomp/mptx-3.1/ mv -f %{buildroot}%{_prefix}/lib/gcc/nvptx-none/%{gcc_major}/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/ mv -f %{buildroot}%{_prefix}/lib/gcc/nvptx-none/%{gcc_major}/mgomp/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/mgomp/ +mv -f %{buildroot}%{_prefix}/lib/gcc/nvptx-none/%{gcc_major}/mptx-3.1/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/mptx-3.1/ +mv -f %{buildroot}%{_prefix}/lib/gcc/nvptx-none/%{gcc_major}/mgomp/mptx-3.1/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/mgomp/mptx-3.1/ find %{buildroot}%{_prefix}/lib/gcc/nvptx-none %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none \ %{buildroot}%{_prefix}/nvptx-none/lib -name \*.la | xargs rm cd .. @@ -1579,7 +1581,7 @@ ln -sf ../../../libgphobos.so.4.* libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do - ln -sf ../../../libm2$i.so.18.* libm2$i.so + ln -sf ../../../libm2$i.so.19.* libm2$i.so done %endif %if %{build_libitm} @@ -1614,7 +1616,7 @@ ln -sf ../../../../%{_lib}/libgphobos.so.4.* libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do - ln -sf ../../../../%{_lib}/libm2$i.so.18.* libm2$i.so + ln -sf ../../../../%{_lib}/libm2$i.so.19.* libm2$i.so done %endif %if %{build_libitm} @@ -1649,7 +1651,6 @@ fi mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++fs.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++exp.*a $FULLLPATH/ -mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++_libbacktrace.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libsupc++.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libgfortran.*a $FULLLPATH/ %if %{build_objc} @@ -1710,28 +1711,28 @@ mv -f $FULLPATH/ada{include,lib} $FULLLPATH/ pushd $FULLLPATH/adalib if [ "%{_lib}" = "lib" ]; then ln -sf ../../../../../libgnarl-*.so libgnarl.so -ln -sf ../../../../../libgnarl-*.so libgnarl-12.so +ln -sf ../../../../../libgnarl-*.so libgnarl-14.so ln -sf ../../../../../libgnat-*.so libgnat.so -ln -sf ../../../../../libgnat-*.so libgnat-12.so +ln -sf ../../../../../libgnat-*.so libgnat-14.so else ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl.so -ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-12.so +ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-14.so ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat.so -ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-12.so +ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-14.so fi popd else pushd $FULLPATH/adalib if [ "%{_lib}" = "lib" ]; then ln -sf ../../../../libgnarl-*.so libgnarl.so -ln -sf ../../../../libgnarl-*.so libgnarl-12.so +ln -sf ../../../../libgnarl-*.so libgnarl-14.so ln -sf ../../../../libgnat-*.so libgnat.so -ln -sf ../../../../libgnat-*.so libgnat-12.so +ln -sf ../../../../libgnat-*.so libgnat-14.so else ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so -ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-12.so +ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-14.so ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so -ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-12.so +ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-14.so fi popd fi @@ -1764,8 +1765,8 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgphobos.so.4.* | sed 's %if %{build_m2} for i in cor iso log min pim; do rm -f libm2$i.so - echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libm2$i.so.18.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so - echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libm2$i.so.18.* | sed 's,^.*libm,libm,'`' )' > 64/libm2$i.so + echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libm2$i.so.19.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so + echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libm2$i.so.19.* | sed 's,^.*libm,libm,'`' )' > 64/libm2$i.so rm -f 64/m2/m2$i/*.{a,la} ln -sf ../../libm2$i.so 64/m2/m2$i/ ln -sf ../../libm2$i.a 64/m2/m2$i/ @@ -1804,8 +1805,6 @@ ln -sf lib32/libstdc++fs.a libstdc++fs.a ln -sf ../lib64/libstdc++fs.a 64/libstdc++fs.a ln -sf lib32/libstdc++exp.a libstdc++exp.a ln -sf ../lib64/libstdc++exp.a 64/libstdc++exp.a -ln -sf lib32/libstdc++_libbacktrace.a libstdc++_libbacktrace.a -ln -sf ../lib64/libstdc++_libbacktrace.a 64/libstdc++_libbacktrace.a ln -sf lib32/libsupc++.a libsupc++.a ln -sf ../lib64/libsupc++.a 64/libsupc++.a %if %{build_libquadmath} @@ -1883,8 +1882,8 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgphobos.so.4.* | sed 's %if %{build_m2} for i in cor iso log min pim; do rm -f libm2$i.so - echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libm2$i.so.18.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so - echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libm2$i.so.18.* | sed 's,^.*libm,libm,'`' )' > 32/libm2$i.so + echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libm2$i.so.19.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so + echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libm2$i.so.19.* | sed 's,^.*libm,libm,'`' )' > 32/libm2$i.so rm -f 32/m2/m2$i/*.{a,la} ln -sf ../../libm2$i.so 32/m2/m2$i/ ln -sf ../../libm2$i.a 32/m2/m2$i/ @@ -1925,8 +1924,6 @@ ln -sf ../lib32/libstdc++fs.a 32/libstdc++fs.a ln -sf lib64/libstdc++fs.a libstdc++fs.a ln -sf ../lib32/libstdc++exp.a 32/libstdc++exp.a ln -sf lib64/libstdc++exp.a libstdc++exp.a -ln -sf ../lib32/libstdc++_libbacktrace.a 32/libstdc++_libbacktrace.a -ln -sf lib64/libstdc++_libbacktrace.a libstdc++_libbacktrace.a ln -sf ../lib32/libsupc++.a 32/libsupc++.a ln -sf lib64/libsupc++.a libsupc++.a %if %{build_libquadmath} @@ -1981,7 +1978,6 @@ ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libgfo ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libstdc++.a 32/libstdc++.a ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libstdc++fs.a 32/libstdc++fs.a ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libstdc++exp.a 32/libstdc++exp.a -ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libstdc++_libbacktrace.a 32/libstdc++_libbacktrace.a ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libsupc++.a 32/libsupc++.a %if %{build_libquadmath} ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libquadmath.a 32/libquadmath.a @@ -2035,7 +2031,7 @@ for d in . $FULLLSUBDIR; do -o -name libobjc.a -o -name libgdruntime.a -o -name libgphobos.a \ -o -name libm2\*.a -o -name libquadmath.a -o -name libstdc++.a \ -o -name libstdc++fs.a -o -name libstdc++exp.a \ - -o -name libstdc++_libbacktrace.a -o -name libsupc++.a \ + -o -name libsupc++.a \ -o -name libtsan.a -o -name libubsan.a \) -a -type f`; do cp -a $f $RPM_BUILD_ROOT%{_prefix}/lib/debug%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/$d/ done @@ -2063,7 +2059,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgphobos.so.4.* %endif %if %{build_m2} for i in cor iso log min pim; do - chmod 755 %{buildroot}%{_prefix}/%{_lib}/libm2$i.so.18.* + chmod 755 %{buildroot}%{_prefix}/%{_lib}/libm2$i.so.19.* done %endif %if %{build_libitm} @@ -2384,6 +2380,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdnoreturn.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdatomic.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/gcov.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdckdint.h %ifarch %{ix86} x86_64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mmintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xmmintrin.h @@ -2489,6 +2486,12 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/prfchiintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/raointintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxcomplexintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512bitalgvlintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avxvnniint16intrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sha512intrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sm3intrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sm4intrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/usermsrintrin.h %endif %ifarch ia64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ia64intrin.h @@ -2712,7 +2715,6 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++fs.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++exp.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++_libbacktrace.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libsupc++.a %endif %ifarch %{multilib_64_archs} @@ -2721,7 +2723,6 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++fs.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++exp.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++_libbacktrace.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libsupc++.a %endif %ifarch sparcv9 ppc %{multilib_64_archs} @@ -2731,7 +2732,6 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++fs.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++exp.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++_libbacktrace.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libsupc++.a %endif %doc rpm.doc/changelogs/gcc/cp/ChangeLog* @@ -2765,18 +2765,15 @@ end %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++fs.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++exp.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++_libbacktrace.a %endif %ifarch sparc64 ppc64 ppc64p7 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++fs.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++exp.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++_libbacktrace.a %endif %ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++fs.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++exp.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++_libbacktrace.a %endif %doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README* @@ -3004,7 +3001,7 @@ end %doc rpm.doc/gm2/* %files -n libgm2 -%{_prefix}/%{_lib}/libm2*.so.18* +%{_prefix}/%{_lib}/libm2*.so.19* %doc rpm.doc/libgm2/* %files -n libgm2-static @@ -3459,380 +3456,5 @@ end %endif %changelog -* Tue Dec 5 2023 Jakub Jelinek 13.2.1-6 -- update from releases/gcc-13 branch - - PRs c++/33799, c++/102191, c++/111703, c++/112269, c++/112301, c++/112633, - c/112339, fortran/111880, fortran/112764, libgomp/111413, - libstdc++/112348, libstdc++/112491, libstdc++/112607, - middle-end/111497, target/53372, target/110411, target/111408, - target/111815, target/111828, target/112672, tree-optimization/111137, - tree-optimization/111465, tree-optimization/111967, - tree-optimization/112496 - -* Mon Nov 13 2023 Jakub Jelinek 13.2.1-5 -- update from releases/gcc-13 branch - - PRs c++/89038, c/111884, d/110712, d/112270, fortran/67740, fortran/97245, - fortran/111837, fortran/112316, libbacktrace/111315, - libbacktrace/112263, libstdc++/110944, libstdc++/111172, - libstdc++/111936, libstdc++/112089, libstdc++/112314, - middle-end/111253, middle-end/111818, modula2/111756, modula2/112110, - target/101177, target/110170, target/111001, target/111366, - target/111367, target/111380, target/111935, target/112443, - tree-optimization/111397, tree-optimization/111445, - tree-optimization/111489, tree-optimization/111583, - tree-optimization/111614, tree-optimization/111622, - tree-optimization/111694, tree-optimization/111764, - tree-optimization/111820, tree-optimization/111833, - tree-optimization/111917 - - fix aarch64 RA ICE (#2241139, PR target/111528) -- fix ia32 doubleword rotates (#2238781, PR target/110792) - -* Wed Oct 11 2023 Jakub Jelinek 13.2.1-4 -- update from releases/gcc-13 branch - - PRs ada/110488, ada/111434, c++/99631, c++/111471, c++/111485, c++/111493, - c++/111512, fortran/68155, fortran/92586, fortran/111674, - libstdc++/108046, libstdc++/111050, libstdc++/111102, - libstdc++/111511, middle-end/111699, modula2/111510, target/111121, - target/111411, tree-optimization/110315, tree-optimization/110386, - tree-optimization/111331, tree-optimization/111519 - -* Mon Sep 18 2023 Jakub Jelinek 13.2.1-3 -- update from releases/gcc-13 branch - - PRs c++/111357, modula2/111330, target/96762, target/111306, - target/111335, target/111340, target/111412 - -* Fri Sep 8 2023 Jakub Jelinek 13.2.1-2 -- update from releases/gcc-13 branch - - PRs c++/92407, c++/106310, c++/106652, c++/109678, c++/109751, c++/110197, - c++/110566, c++/110927, debug/111080, fortran/99326, fortran/102109, - fortran/102112, fortran/102190, fortran/102532, fortran/108961, - fortran/109684, fortran/109948, fortran/110825, libgcc/110956, - libstdc++/110593, libstdc++/110708, libstdc++/110719, - libstdc++/110807, libstdc++/110860, libstdc++/110862, - libstdc++/110917, libstdc++/110968, libstdc++/110970, - libstdc++/110974, libstdc++/110990, middle-end/111017, modula2/108119, - modula2/108344, modula2/109779, modula2/109810, modula2/109830, - modula2/109879, modula2/109908, modula2/109952, modula2/110003, - modula2/110019, modula2/110125, modula2/110126, modula2/110161, - modula2/110174, modula2/110189, modula2/110284, modula2/110631, - modula2/110779, modula2/110865, target/89835, target/109713, - target/109725, target/110220, target/110484, target/110741, - target/111010, target/111127, tree-optimization/110280, - tree-optimization/110702, tree-optimization/110914, - tree-optimization/111015, tree-optimization/111019, - tree-optimization/111039, tree-optimization/111070, - tree-optimization/111109 - -* Mon Jul 31 2023 Patsy Griffin -- allow for the optional removal of tzdata - - see https://fedoraproject.org/wiki/Changes/AllowRemovalOfTzdata - -* Fri Jul 28 2023 Jakub Jelinek 13.2.1-1 -- update from releases/gcc-13 branch - - GCC 13.2 release - - PRs c++/109247, c++/110102, c++/110122, c++/110463, c++/110468, - c++/110524, c++/110535, c++/110595, c++/110809, d/103944, d/106977, - d/108842, d/108962, d/110113, d/110359, d/110471, d/110514, d/110516, - debug/110295, fortran/86277, fortran/95947, fortran/100297, - fortran/110288, fortran/110585, fortran/110658, ipa/109983, - ipa/110276, libgcc/109712, libgcc/110179, libstdc++/95048, - libstdc++/100285, libstdc++/104299, libstdc++/109741, - libstdc++/109921, libstdc++/110149, libstdc++/110239, - libstdc++/110432, libstdc++/110542, libstdc++/110574, - middle-end/98619, middle-end/103979, middle-end/110055, - middle-end/110420, modula2/108121, modula2/109586, modula2/109675, - modula2/109729, modula2/110246, rtl-optimization/110237, - target/101469, target/105325, target/106966, target/108743, - target/109932, target/110011, target/110100, target/110132, - target/110136, target/110206, target/110264, target/110309, - target/110406, target/110560, target/110624, testsuite/66005, - testsuite/83904, testsuite/110230, tree-optimization/109143, - tree-optimization/110228, tree-optimization/110298, - tree-optimization/110381, tree-optimization/110392, - tree-optimization/110515, tree-optimization/110556, - tree-optimization/110557, tree-optimization/110669, - tree-optimization/110731, tree-optimization/110755, - tree-optimization/110766, tree-optimization/110799, - tree-optimization/110829 - -* Wed Jul 19 2023 Fedora Release Engineering - 13.1.1-4.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Wed Jun 14 2023 Jakub Jelinek 13.1.1-4 -- update from releases/gcc-13 branch - - PRs bootstrap/110085, c++/109871, fortran/100607, libgcc/109670, - libgcc/109685, libstdc++/108178, libstdc++/109261, libstdc++/109758, - libstdc++/109822, libstdc++/109949, libstdc++/110139, - middle-end/110200, target/82931, target/92729, target/104327, - target/105753, target/106907, target/109547, target/109650, - target/109800, target/109939, target/109954, target/110036, - target/110044, target/110088, target/110108, target/110227, - tree-optimization/109505, tree-optimization/110165, - tree-optimization/110166 - -* Fri May 19 2023 Jakub Jelinek 13.1.1-3 -- update from releases/gcc-13 branch - - PRs c++/80488, c++/83258, c++/97700, c++/103807, c++/109651, c++/109745, - c++/109761, c++/109774, c++/109868, c++/109884, fortran/109641, - fortran/109846, libstdc++/109816, libstdc++/109883, target/104338, - target/109697 - -* Thu May 11 2023 Jakub Jelinek 13.1.1-2 -- update from releases/gcc-13 branch - - PRs c++/91618, c++/96604, c++/109506, c++/109640, c++/109642, c++/109666, - c++/109671, c++/109756, c/107682, c/109409, c/109412, debug/109676, - fortran/109622, libffi/109447, libgomp/108098, libstdc++/40380, - libstdc++/109694, libstdc++/109703, rtl-optimization/109585, - target/108758, target/109069, target/109535, target/109661, - target/109762, tree-optimization/109573, tree-optimization/109609, - tree-optimization/109724, tree-optimization/109778 - -* Wed Apr 26 2023 Jakub Jelinek 13.1.1-1 -- update from releases/gcc-13 branch - - GCC 13.1 release - - PRs c/107041, target/109566 - -* Fri Apr 21 2023 Jakub Jelinek 13.0.1-0.16 -- update from trunk and releases/gcc-13 branch - - GCC 13.1-rc3 - - PRs tree-optimization/109564 -- fix ICE on fneg/fadd optimization (PR tree-optimization/109583) -- include amxcomplexintrin.h header on x86 (#2188608) - -* Wed Apr 19 2023 Jakub Jelinek 13.0.1-0.15 -- update from trunk and releases/gcc-13 branch - - GCC 13.1-rc2 - - PRs c++/109556, target/106602 - -* Tue Apr 18 2023 Jakub Jelinek 13.0.1-0.14 -- update from trunk and releases/gcc-13 branch - - PRs analyzer/108722, bootstrap/109510, c++/109277, c++/109357, c++/109420, - c++/109514, c++/109531, driver/108241, fortran/61615, fortran/85686, - fortran/87477, fortran/88247, fortran/91941, fortran/92779, - fortran/93339, fortran/93813, fortran/98408, fortran/99982, - fortran/100948, fortran/102106, fortran/104272, fortran/104312, - fortran/104349, fortran/105205, fortran/106918, fortran/109492, - fortran/109511, ipa/107769, ipa/108959, ipa/109318, libstdc++/108291, - libstdc++/108827, libstdc++/108969, libstdc++/109482, - libstdc++/109525, modula2/109423, modula2/109488, modula2/109496, - modula2/109497, target/54816, target/70243, target/99708, - target/104989, target/108812, target/108892, target/108947, - target/109040, target/109104, target/109374, target/109402, - target/109458, target/109479, target/109508, testsuite/108809, - testsuite/108815, tree-optimization/108139, tree-optimization/109392, - tree-optimization/109410, tree-optimization/109417, - tree-optimization/109427, tree-optimization/109434, - tree-optimization/109462, tree-optimization/109469, - tree-optimization/109473, tree-optimization/109491, - tree-optimization/109502, tree-optimization/109524, - tree-optimization/109539 - -* Tue Apr 4 2023 Jakub Jelinek 13.0.1-0.13 -- update from trunk - - PRs c++/53164, c++/105848, c++/107484, c++/109160, c++/109300, ipa/109303, - modula2/109388, other/109306, sanitizer/109107, target/102146, - target/108699, target/108807, target/109375, target/109376, - target/109384, tree-optimization/109304, tree-optimization/109386 - -* Sat Apr 1 2023 Jakub Jelinek 13.0.1-0.12 -- update from trunk - - PRs analyzer/107396, bootstrap/101834, c++/101118, c++/105221, c++/105452, - c++/107897, c++/108887, c++/109278, c++/109319, libstdc++/109242, - libstdc++/109339, libstdc++/109340, modula2/109315, modula2/109336, - target/85048, target/109254, target/109328, tree-optimization/91645, - tree-optimization/109342, tree-optimization/109362 - -* Wed Mar 29 2023 Jakub Jelinek 13.0.1-0.11 -- update from trunk - - PRs analyzer/109098, bootstrap/84402, bootstrap/109310, c++/105481, - c++/106969, c++/107163, c++/109309, c++/109320, c++/109321, c/107002, - fortran/104321, fortran/104949, fortran/109314, gcov-profile/109297, - ipa/105685, ipa/106124, libgcc/108891, libstdc++/103387, - libstdc++/109288, libstdc++/109299, lto/109263, middle-end/106190, - other/109163, other/109293, rtl-optimization/109187, - rtl-optimization/109237, target/106282, target/109072, target/109082, - target/109140, target/109167, target/109276, target/109296, - target/109312, tree-optimization/54498, tree-optimization/106912, - tree-optimization/107087, tree-optimization/108129, - tree-optimization/108357, tree-optimization/109154, - tree-optimization/109230, tree-optimization/109238, - tree-optimization/109265, tree-optimization/109274, - tree-optimization/109301, tree-optimization/109327, - tree-optimization/109331 - -* Fri Mar 24 2023 Jakub Jelinek 13.0.1-0.10 -- update from trunk - - PRs analyzer/109239, c++/105996, c++/108390, c++/108795, c++/109177, - c++/109241, c/84900, fortran/104572, middle-end/109258, - modula2/107630, modula2/109248, modula2/109264, target/103628, - target/109137, target/109228, target/109244, testsuite/105959, - tree-optimization/99739, tree-optimization/107569, - tree-optimization/109176, tree-optimization/109262 - -* Tue Mar 21 2023 Jakub Jelinek 13.0.1-0.9 -- update from trunk - - PRs analyzer/109094, c++/106890, c++/109159, c++/109164, fortran/85877, - fortran/87127, fortran/99036, fortran/109186, fortran/109206, - fortran/109209, fortran/109216, libstdc++/109182, target/109067, - target/109178, testsuite/108898, tree-optimization/109170, - tree-optimization/109192, tree-optimization/109215, - tree-optimization/109219 - -* Sat Mar 18 2023 Jakub Jelinek 13.0.1-0.8 -- update from trunk - - PRs analyzer/105906, analyzer/108045, analyzer/109097, c++/58538, - c++/69410, c++/95036, c++/96830, c++/98056, c++/100288, c++/101869, - c++/103871, c++/104107, c++/105406, c++/105809, c++/107128, - c++/107280, c++/107310, c++/108179, c++/108242, c++/108468, - c++/108975, c++/109096, c++/109172, c/109151, d/109108, d/109144, - fortran/37336, fortran/58331, fortran/64290, fortran/67444, - fortran/67471, fortran/69298, fortran/70863, fortran/71798, - fortran/80524, fortran/82996, fortran/84472, fortran/88735, - fortran/91316, fortran/93691, fortran/96122, fortran/103854, - fortran/106576, fortran/106945, ipa/107925, libstdc++/62196, - libstdc++/109111, libstdc++/109165, middle-end/106133, - middle-end/108685, middle-end/109031, modula2/109032, modula2/109089, - modula2/109102, modula2/109103, modula2/109125, other/109086, - preprocessor/67046, rtl-optimization/107762, rtl-optimization/109179, - target/105554, target/108583, target/109092, target/109109, - target/109117, testsuite/109118, testsuite/109129, testsuite/109145, - tree-optimization/106896, tree-optimization/109005, - tree-optimization/109046, tree-optimization/109115, - tree-optimization/109123, tree-optimization/109139, - tree-optimization/109141, web/88860 - -* Fri Mar 10 2023 Jakub Jelinek 13.0.1-0.7 -- update from trunk - - PRs ada/108858, ada/108983, analyzer/102671, analyzer/105755, - analyzer/108251, analyzer/108400, analyzer/108475, analyzer/109059, - analyzer/109060, c++/102529, c++/105841, c++/106651, c++/107532, - c++/107558, c++/107939, c++/108099, c++/108542, c++/108566, - c++/108773, c++/108972, c++/109030, c++/109039, c++/109042, c/108079, - driver/108865, fortran/104332, fortran/106856, libgcc/108727, - libgomp/90596, libgomp/109062, libstdc++/107572, libstdc++/108362, - libstdc++/108882, libstdc++/109024, libstdc++/109064, - middle-end/108995, other/108464, plugins/108634, sanitizer/81649, - sanitizer/108060, sanitizer/109050, target/107299, target/107703, - target/107998, target/108185, target/108429, target/108654, - target/109000, testsuite/70150, testsuite/108729, testsuite/108730, - testsuite/108810, testsuite/108813, tree-optimization/108980, - tree-optimization/109008, tree-optimization/109025 - -* Sat Mar 4 2023 Jakub Jelinek 13.0.1-0.6 -- update from trunk - - PRs ada/108909, analyzer/107565, analyzer/108830, analyzer/108935, - analyzer/108968, analyzer/109016, c++/100127, c++/105224, c++/105839, - c++/106259, c++/107574, c++/107938, c++/108218, c++/108219, - c++/108550, c++/108606, c++/108702, c++/108848, c++/108934, - c++/108998, c/107465, c/107846, c/108880, c/108986, d/108167, - d/108763, d/108877, d/108945, d/108946, debug/108716, debug/108772, - debug/108967, fortran/96024, fortran/96025, fortran/108621, - fortran/108923, fortran/108924, fortran/108937, jit/107999, - libquadmath/87204, libquadmath/94756, libstdc++/52590, - libstdc++/95989, libstdc++/104852, libstdc++/108846, libstdc++/108856, - libstdc++/108952, middle-end/97956, middle-end/106258, - middle-end/107411, middle-end/108545, middle-end/108546, - middle-end/108854, middle-end/109006, modula2/108261, modula2/108944, - modula2/108956, pch/14940, sanitizer/108834, sanitizer/108894, - target/51534, target/104882, target/108240, target/108876, - target/108881, target/108883, target/108910, target/108919, - target/108922, testsuite/79356, testsuite/91419, testsuite/108899, - testsuite/108942, testsuite/108973, testsuite/108985, - testsuite/108991, translation/108890, tree-optimization/108430, - tree-optimization/108603, tree-optimization/108793, - tree-optimization/108828, tree-optimization/108888, - tree-optimization/108950, tree-optimization/108970, - tree-optimization/108979, tree-optimization/108988, - tree-optimization/109002 - -* Tue Feb 21 2023 Jakub Jelinek 13.0.1-0.5 -- update from trunk - - PRs analyzer/108664, analyzer/108666, analyzer/108725, analyzer/108806, - c++/52809, c++/53638, c++/87389, c++/89741, c++/92099, c++/97553, - c++/101073, c++/104041, c++/104691, c++/107773, c++/108243, - c++/108829, c/105660, c/108375, fortran/103608, fortran/104554, - libstdc++/108030, target/90458, target/108805, target/108831, - target/108832, target/108862, testsuite/108835, - tree-optimization/108657, tree-optimization/108783, - tree-optimization/108791, tree-optimization/108816, - tree-optimization/108819, tree-optimization/108821, - tree-optimization/108825, tree-optimization/108855, - tree-optimization/108868 - -* Wed Feb 15 2023 Jakub Jelinek 13.0.1-0.4 -- update from trunk - - PRs analyzer/108704, analyzer/108733, analyzer/108745, c++/106675, - c++/107079, c++/108698, d/107469, fortran/69636, fortran/103259, - fortran/103475, fortran/103779, fortran/107424, fortran/108512, - ipa/108605, ipa/108679, libstdc++/103934, middle-end/26854, - middle-end/106080, rtl-optimization/108681, sanitizer/108777, - target/96373, target/100758, target/103109, target/108102, - target/108516, target/108723, target/108738, target/108787, - target/108790, testsuite/106120, tree-optimization/28614, - tree-optimization/96921, tree-optimization/106722, - tree-optimization/107561, tree-optimization/108316, - tree-optimization/108355, tree-optimization/108520, - tree-optimization/108571, tree-optimization/108684, - tree-optimization/108687, tree-optimization/108688, - tree-optimization/108691, tree-optimization/108692, - tree-optimization/108724, tree-optimization/108782 - -* Wed Feb 8 2023 Jakub Jelinek 13.0.1-0.3 -- update from trunk - - PRs analyzer/108616, analyzer/108633, analyzer/108661, c++/101071, - c++/102870, c++/107461, c++/107593, c++/107755, c++/108158, - c++/108559, c++/108579, c++/108597, c++/108607, c++/96745, c/108150, - c/108192, debug/106746, debug/108573, driver/108572, fortran/103506, - fortran/108450, fortran/108451, fortran/108453, fortran/108527, - fortran/108592, fortran/108609, fortran/95107, ipa/107300, ipa/108384, - ipa/108509, ipa/108511, libstdc++/108636, libstdc++/108672, - middle-end/108435, middle-end/108500, middle-end/108625, - modula2/107234, modula2/108135, modula2/108462, modula2/108551, - modula2/108612, rtl-optimization/108086, rtl-optimization/108463, - rtl-optimization/108508, rtl-optimization/108596, sanitizer/108106, - target/104921, target/107674, target/108443, target/108484, - target/108589, target/108599, testsuite/108604, testsuite/108632, - tree-optimization/26854, tree-optimization/106433, - tree-optimization/106923, tree-optimization/107570, - tree-optimization/108356, tree-optimization/108359, - tree-optimization/108385, tree-optimization/108574, - tree-optimization/108582, tree-optimization/108601, - tree-optimization/108608, tree-optimization/108639, - tree-optimization/108647, tree-optimization/108655 -- drop libgfortran dependency on libquadmath for F28+ or RHEL8+, gcc-gfortran - still needs to depend on both libquadmath and libquadmath-devel though - -* Sat Jan 28 2023 Jakub Jelinek 13.0.1-0.2 -- update from trunk - - PRs analyzer/108455, analyzer/108507, analyzer/108524, bootstrap/90543, - c++/53288, c++/53932, c++/105300, c++/107267, c++/107303, c++/107329, - c++/107797, c++/108195, c++/108437, c++/108474, c++/108496, - c++/108503, c++/108504, c++/108525, c++/108526, c/108424, - fortran/102331, fortran/102595, fortran/108420, fortran/108434, - fortran/108501, fortran/108502, fortran/108528, fortran/108529, - fortran/108544, fortran/108558, ipa/106061, ipa/107944, - libstdc++/102301, libstdc++/108530, libstdc++/108554, - libstdc++/108568, lto/108445, middle-end/108086, middle-end/108459, - middle-end/108543, modula2/102343, modula2/108144, modula2/108182, - modula2/108405, modula2/108480, modula2/108553, modula2/108555, - other/108560, target/107568, target/107678, target/107731, - target/108177, target/108348, target/108396, target/108411, - target/108436, target/108442, target/108505, testsuite/104756, - testsuite/107808, testsuite/108533, tree-optimization/96373, - tree-optimization/108306, tree-optimization/108440, - tree-optimization/108447, tree-optimization/108449, - tree-optimization/108457, tree-optimization/108482, - tree-optimization/108498, tree-optimization/108500, - tree-optimization/108522, tree-optimization/108523, - tree-optimization/108540, tree-optimization/108547 - -* Tue Jan 17 2023 Jakub Jelinek 13.0.1-0.1 -- update from trunk - - PRs c++/105593, fortran/108421, go/108426, ipa/106077, libstdc++/108288, - libstdc++/108413, other/108413, target/55522, target/96795, - target/105980, target/107515, target/108272, tree-optimization/94793, - tree-optimization/106523 -- don't build ppc64le unwinder with -fno-omit-frame-pointer (#2161595) - -* Sun Jan 15 2023 Jakub Jelinek 13.0.0-0.9 +* Sat Jan 13 2024 Jakub Jelinek 14.0.1-0.1 - new package diff --git a/gcc13-pr110792.patch b/gcc13-pr110792.patch deleted file mode 100644 index ce129f9..0000000 --- a/gcc13-pr110792.patch +++ /dev/null @@ -1,163 +0,0 @@ -PR target/110792: Early clobber issues with rot32di2_doubleword on i386. - -This patch is a conservative fix for PR target/110792, a wrong-code -regression affecting doubleword rotations by BITS_PER_WORD, which -effectively swaps the highpart and lowpart words, when the source to be -rotated resides in memory. The issue is that if the register used to -hold the lowpart of the destination is mentioned in the address of -the memory operand, the current define_insn_and_split unintentionally -clobbers it before reading the highpart. - -Hence, for the testcase, the incorrectly generated code looks like: - - salq $4, %rdi // calculate address - movq WHIRL_S+8(%rdi), %rdi // accidentally clobber addr - movq WHIRL_S(%rdi), %rbp // load (wrong) lowpart - -Traditionally, the textbook way to fix this would be to add an -explicit early clobber to the instruction's constraints. - - (define_insn_and_split "32di2_doubleword" -- [(set (match_operand:DI 0 "register_operand" "=r,r,r") -+ [(set (match_operand:DI 0 "register_operand" "=r,r,&r") - (any_rotate:DI (match_operand:DI 1 "nonimmediate_operand" "0,r,o") - (const_int 32)))] - -but unfortunately this currently generates significantly worse code, -due to a strange choice of reloads (effectively memcpy), which ends up -looking like: - - salq $4, %rdi // calculate address - movdqa WHIRL_S(%rdi), %xmm0 // load the double word in SSE reg. - movaps %xmm0, -16(%rsp) // store the SSE reg back to the stack - movq -8(%rsp), %rdi // load highpart - movq -16(%rsp), %rbp // load lowpart - -Note that reload's "&" doesn't distinguish between the memory being -early clobbered, vs the registers used in an addressing mode being -early clobbered. - -The fix proposed in this patch is to remove the third alternative, that -allowed offsetable memory as an operand, forcing reload to place the -operand into a register before the rotation. This results in: - - salq $4, %rdi - movq WHIRL_S(%rdi), %rax - movq WHIRL_S+8(%rdi), %rdi - movq %rax, %rbp - -I believe there's a more advanced solution, by swapping the order of -the loads (if first destination register is mentioned in the address), -or inserting a lea insn (if both destination registers are mentioned -in the address), but this fix is a minimal "safe" solution, that -should hopefully be suitable for backporting. - -2023-08-06 Roger Sayle - -gcc/testsuite/ChangeLog - PR target/110792 - * gcc.target/i386/pr110792.c: Remove dg-final scan-assembler-not. - -2023-08-03 Roger Sayle - -gcc/ChangeLog - PR target/110792 - * config/i386/i386.md (ti3): For rotations by 64 bits - place operand in a register before gen_64ti2_doubleword. - (di3): Likewise, for rotations by 32 bits, place - operand in a register before gen_32di2_doubleword. - (32di2_doubleword): Constrain operand to be in register. - (64ti2_doubleword): Likewise. - -gcc/testsuite/ChangeLog - PR target/110792 - * g++.target/i386/pr110792.C: New 32-bit C++ test case. - * gcc.target/i386/pr110792.c: New 64-bit C test case. - ---- gcc/config/i386/i386.md -+++ gcc/config/i386/i386.md -@@ -15341,7 +15341,10 @@ (define_expand "ti3" - emit_insn (gen_ix86_ti3_doubleword - (operands[0], operands[1], operands[2])); - else if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 64) -- emit_insn (gen_64ti2_doubleword (operands[0], operands[1])); -+ { -+ operands[1] = force_reg (TImode, operands[1]); -+ emit_insn (gen_64ti2_doubleword (operands[0], operands[1])); -+ } - else - { - rtx amount = force_reg (QImode, operands[2]); -@@ -15376,7 +15379,10 @@ (define_expand "di3" - emit_insn (gen_ix86_di3_doubleword - (operands[0], operands[1], operands[2])); - else if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 32) -- emit_insn (gen_32di2_doubleword (operands[0], operands[1])); -+ { -+ operands[1] = force_reg (DImode, operands[1]); -+ emit_insn (gen_32di2_doubleword (operands[0], operands[1])); -+ } - else - FAIL; - -@@ -15544,8 +15550,8 @@ (define_insn_and_split "ix86_rotr3_doubleword" - }) - - (define_insn_and_split "32di2_doubleword" -- [(set (match_operand:DI 0 "register_operand" "=r,r,r") -- (any_rotate:DI (match_operand:DI 1 "nonimmediate_operand" "0,r,o") -+ [(set (match_operand:DI 0 "register_operand" "=r,r") -+ (any_rotate:DI (match_operand:DI 1 "register_operand" "0,r") - (const_int 32)))] - "!TARGET_64BIT" - "#" -@@ -15562,8 +15568,8 @@ (define_insn_and_split "32di2_doubleword" - }) - - (define_insn_and_split "64ti2_doubleword" -- [(set (match_operand:TI 0 "register_operand" "=r,r,r") -- (any_rotate:TI (match_operand:TI 1 "nonimmediate_operand" "0,r,o") -+ [(set (match_operand:TI 0 "register_operand" "=r,r") -+ (any_rotate:TI (match_operand:TI 1 "register_operand" "0,r") - (const_int 64)))] - "TARGET_64BIT" - "#" ---- gcc/testsuite/g++.target/i386/pr110792.C -+++ gcc/testsuite/g++.target/i386/pr110792.C -@@ -0,0 +1,16 @@ -+/* { dg-do compile { target ia32 } } */ -+/* { dg-options "-O2" } */ -+ -+template -+inline T rotr(T input) -+{ -+ return static_cast((input >> ROT) | (input << (8 * sizeof(T) - ROT))); -+} -+ -+unsigned long long WHIRL_S[256] = {0x18186018C07830D8}; -+unsigned long long whirl(unsigned char x0) -+{ -+ const unsigned long long s4 = WHIRL_S[x0&0xFF]; -+ return rotr<32>(s4); -+} -+/* { dg-final { scan-assembler-not "movl\tWHIRL_S\\+4\\(,%eax,8\\), %eax" } } */ ---- gcc/testsuite/gcc.target/i386/pr110792.c -+++ gcc/testsuite/gcc.target/i386/pr110792.c -@@ -0,0 +1,17 @@ -+/* { dg-do compile { target int128 } } */ -+/* { dg-options "-O2" } */ -+ -+static inline unsigned __int128 rotr(unsigned __int128 input) -+{ -+ return ((input >> 64) | (input << (64))); -+} -+ -+unsigned __int128 WHIRL_S[256] = {((__int128)0x18186018C07830D8) << 64 |0x18186018C07830D8}; -+unsigned __int128 whirl(unsigned char x0) -+{ -+ register int t __asm("rdi") = x0&0xFF; -+ const unsigned __int128 s4 = WHIRL_S[t]; -+ register unsigned __int128 tt __asm("rdi") = rotr(s4); -+ asm("":::"memory"); -+ return tt; -+} diff --git a/gcc13-Wno-format-security.patch b/gcc14-Wno-format-security.patch similarity index 70% rename from gcc13-Wno-format-security.patch rename to gcc14-Wno-format-security.patch index 4c71dac..e317c15 100644 --- a/gcc13-Wno-format-security.patch +++ b/gcc14-Wno-format-security.patch @@ -30,33 +30,33 @@ else wf_opt= fi ---- Makefile.tpl.jj 2021-12-30 15:12:42.188164847 +0100 -+++ Makefile.tpl 2022-01-07 12:06:12.115550714 +0100 -@@ -446,9 +446,9 @@ LDFLAGS = @LDFLAGS@ +--- Makefile.tpl.jj 2023-11-29 13:21:41.680292662 +0100 ++++ Makefile.tpl 2023-11-29 13:23:24.677839321 +0100 +@@ -448,9 +448,9 @@ LDFLAGS = @LDFLAGS@ LIBCFLAGS = $(CFLAGS) CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates -GOCFLAGS = $(CFLAGS) --GDCFLAGS = $(CFLAGS) +-GDCFLAGS = @GDCFLAGS@ -GM2FLAGS = $(CFLAGS) +GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) -+GDCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) ++GDCFLAGS = $(filter-out -Wformat-security,@GDCFLAGS@) +GM2FLAGS = $(filter-out -Wformat-security,$(CFLAGS)) - # Pass additional PGO and LTO compiler options to the PGO build. - BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS) ---- Makefile.in.jj 2021-12-30 15:12:42.188164847 +0100 -+++ Makefile.in 2022-01-07 12:06:27.335334561 +0100 -@@ -443,9 +443,9 @@ LDFLAGS = @LDFLAGS@ + PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + +--- Makefile.in.jj 2023-11-29 13:21:41.691292507 +0100 ++++ Makefile.in 2023-11-29 13:24:01.254323180 +0100 +@@ -445,9 +445,9 @@ LDFLAGS = @LDFLAGS@ LIBCFLAGS = $(CFLAGS) CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates -GOCFLAGS = $(CFLAGS) --GDCFLAGS = $(CFLAGS) +-GDCFLAGS = @GDCFLAGS@ -GM2FLAGS = $(CFLAGS) +GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) -+GDCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) ++GDCFLAGS = $(filter-out -Wformat-security,@GDCFLAGS@) +GM2FLAGS = $(filter-out -Wformat-security,$(CFLAGS)) - # Pass additional PGO and LTO compiler options to the PGO build. - BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS) + PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + diff --git a/gcc13-d-shared-libphobos.patch b/gcc14-d-shared-libphobos.patch similarity index 100% rename from gcc13-d-shared-libphobos.patch rename to gcc14-d-shared-libphobos.patch diff --git a/gcc13-fortran-fdec-duplicates.patch b/gcc14-fortran-fdec-duplicates.patch similarity index 100% rename from gcc13-fortran-fdec-duplicates.patch rename to gcc14-fortran-fdec-duplicates.patch diff --git a/gcc13-hack.patch b/gcc14-hack.patch similarity index 100% rename from gcc13-hack.patch rename to gcc14-hack.patch diff --git a/gcc13-isl-dl.patch b/gcc14-isl-dl.patch similarity index 100% rename from gcc13-isl-dl.patch rename to gcc14-isl-dl.patch diff --git a/gcc13-isl-dl2.patch b/gcc14-isl-dl2.patch similarity index 100% rename from gcc13-isl-dl2.patch rename to gcc14-isl-dl2.patch diff --git a/gcc13-libgomp-omp_h-multilib.patch b/gcc14-libgomp-omp_h-multilib.patch similarity index 100% rename from gcc13-libgomp-omp_h-multilib.patch rename to gcc14-libgomp-omp_h-multilib.patch diff --git a/gcc13-libstdc++-docs.patch b/gcc14-libstdc++-docs.patch similarity index 96% rename from gcc13-libstdc++-docs.patch rename to gcc14-libstdc++-docs.patch index ce94f5d..662cc64 100644 --- a/gcc13-libstdc++-docs.patch +++ b/gcc14-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 13.2.1 ++ Release 14.0.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 13.2.1 release, ++ for the 14.0.1 release, + online for each GCC release and diff --git a/gcc13-libtool-no-rpath.patch b/gcc14-libtool-no-rpath.patch similarity index 100% rename from gcc13-libtool-no-rpath.patch rename to gcc14-libtool-no-rpath.patch diff --git a/gcc13-no-add-needed.patch b/gcc14-no-add-needed.patch similarity index 100% rename from gcc13-no-add-needed.patch rename to gcc14-no-add-needed.patch diff --git a/gcc13-rh1574936.patch b/gcc14-rh1574936.patch similarity index 100% rename from gcc13-rh1574936.patch rename to gcc14-rh1574936.patch diff --git a/gcc13-sparc-config-detection.patch b/gcc14-sparc-config-detection.patch similarity index 100% rename from gcc13-sparc-config-detection.patch rename to gcc14-sparc-config-detection.patch diff --git a/sources b/sources index 9509f03..a963812 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.2.1-20231205.tar.xz) = f132a2d35d6ea0b0d82043870f1c9f60dda119e63df6833b16d20e2c93e2978f62698d4cc72a6e2eefbaeded0683107de9ebeb93923b96c57dcd612504aa6a1b +SHA512 (gcc-14.0.1-20240113.tar.xz) = 4b9100885f0289cf6ae4f516f5753012a15b779be95a95ff1297f98a8e2fdc2ec881c2cfbcb64f8eac258e2658c5d1471772546bbf041fdb1eadf0386d7ff43d SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 -SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 -SHA512 (nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz) = 33a024326426375533cb5dd9b68b2508f37540be418d2506bfa19a5f5866485e9af150469064e9059b68136ad8cb080b3b12e7eb5c6b7d1288cf6bfb3f6bb5d0 +SHA512 (newlib-cygwin-5f15d7c5817b07a6b18cbab17342c95cb7b42be4.tar.xz) = b94a24982157bf99dedfa73e8b99b15ccb3b368481902c70295bb2cb9fd4548b2a461994cf79fae1fe517e3154ba3d5443c2079039cda6fb526c43a459c92e97 +SHA512 (nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz) = 8a5c282852c995fabf75a8d6331db807a1acd935fd82022e00801b798fb850392d03e29cfa4aa7e3d5cfd8f48510e5e25b79a647fbec79c8566792584a0c1c49 diff --git a/update-gcc.sh b/update-gcc.sh index b49ed15..9804331 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -3,5 +3,5 @@ git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 d=`date --iso | sed 's/-//g'` -git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-13.2.1-$d/ $1 | xz -9e > gcc-13.2.1-$d.tar.xz +git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-14.0.1-$d/ $1 | xz -9e > gcc-14.0.1-$d.tar.xz rm -rf gcc-dir.tmp From 667479a5c78b44f1f08ce3e4a4b9c4f04309675f Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 18 Jan 2024 17:03:52 +0100 Subject: [PATCH 180/293] 14.0.1-0.2 --- .gitignore | 2 ++ gcc.spec | 39 +++++++++++++++++++++++++++++++++++---- sources | 4 ++-- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index ddede7e..141b4f5 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ /isl-0.24.tar.bz2 /newlib-cygwin-5f15d7c5817b07a6b18cbab17342c95cb7b42be4.tar.xz /nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz +/gcc-14.0.1-20240118.tar.xz +/newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz diff --git a/gcc.spec b/gcc.spec index aca4c6e..d1393ef 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,12 +1,12 @@ -%global DATE 20240113 -%global gitrev 754d5d7d790d2ddd25c7507849c0c811a6a649da +%global DATE 20240118 +%global gitrev f284ad3cd92c6b23c50d039ad3b6ed1bf4d97c4d %global gcc_version 14.0.1 %global gcc_major 14 # 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 0 %global nvptx_tools_gitrev c5ad8ada3e86d96b10a9d352b7a764f801478ba6 -%global newlib_cygwin_gitrev 5f15d7c5817b07a6b18cbab17342c95cb7b42be4 +%global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global _unpackaged_files_terminate_build 0 %global _performance_build 1 # Hardening slows the compiler way too much. @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.1%{?dist} +Release: %{gcc_release}.2%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3456,5 +3456,36 @@ end %endif %changelog +* Thu Jan 18 2024 Jakub Jelinek 14.0.1-0.2 +- update from trunk + - PRs ada/113397, analyzer/106229, analyzer/113150, analyzer/113333, + bootstrap/113445, c++/99493, c++/104634, c++/109899, c++/110065, + c++/112588, c++/113242, c++/113292, c++/113307, c++/113340, + c++/113389, c/111693, fortran/67277, fortran/113305, libstdc++/108822, + libstdc++/108827, libstdc++/109536, libstdc++/111327, + libstdc++/113318, libstdc++/113450, middle-end/90348, + middle-end/110115, middle-end/110847, middle-end/111422, + middle-end/111659, middle-end/113354, middle-end/113406, + middle-end/113409, middle-end/113410, modula2/111956, other/113399, + rtl-optimization/96388, rtl-optimization/111554, + rtl-optimization/113048, rust/108111, target/105522, target/107201, + target/112573, target/112944, target/112973, target/113122, + target/113156, target/113221, target/113247, target/113281, + target/113393, target/113404, target/113429, testsuite/109705, + testsuite/111850, testsuite/113366, testsuite/113369, + testsuite/113446, testsuite/113452, translation/108890, + tree-optimization/91624, tree-optimization/107823, + tree-optimization/110251, tree-optimization/110422, + tree-optimization/110450, tree-optimization/110768, + tree-optimization/110794, tree-optimization/110841, + tree-optimization/110852, tree-optimization/110941, + tree-optimization/112774, tree-optimization/113091, + tree-optimization/113287, tree-optimization/113361, + tree-optimization/113370, tree-optimization/113371, + tree-optimization/113372, tree-optimization/113374, + tree-optimization/113385, tree-optimization/113408, + tree-optimization/113421, tree-optimization/113431, + tree-optimization/113475 + * Sat Jan 13 2024 Jakub Jelinek 14.0.1-0.1 - new package diff --git a/sources b/sources index a963812..1ea1997 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.0.1-20240113.tar.xz) = 4b9100885f0289cf6ae4f516f5753012a15b779be95a95ff1297f98a8e2fdc2ec881c2cfbcb64f8eac258e2658c5d1471772546bbf041fdb1eadf0386d7ff43d +SHA512 (gcc-14.0.1-20240118.tar.xz) = 43d9f8b9d9d76dee04963dc1d482dece74a6862747b00aa3ceb72f93469f7592a430262bd76203d756907fd475626da58d610997a346b1ecee6505f6380dc1a4 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 -SHA512 (newlib-cygwin-5f15d7c5817b07a6b18cbab17342c95cb7b42be4.tar.xz) = b94a24982157bf99dedfa73e8b99b15ccb3b368481902c70295bb2cb9fd4548b2a461994cf79fae1fe517e3154ba3d5443c2079039cda6fb526c43a459c92e97 +SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz) = 8a5c282852c995fabf75a8d6331db807a1acd935fd82022e00801b798fb850392d03e29cfa4aa7e3d5cfd8f48510e5e25b79a647fbec79c8566792584a0c1c49 From 592bd10bc7f08b8d95649ec6f6988df2893ae0d2 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 18 Jan 2024 17:37:18 +0100 Subject: [PATCH 181/293] 14.0.1-0.2 --- gcc.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index d1393ef..2f1731f 100644 --- a/gcc.spec +++ b/gcc.spec @@ -208,7 +208,12 @@ BuildRequires: libzstd-devel # Make sure glibc supports TFmode long double BuildRequires: glibc >= 2.3.90-35 %endif -%ifarch %{multilib_64_archs} sparcv9 ppc +%ifarch %{multilib_64_archs} +BuildRequires: (glibc32 or glibc-devel(%{__isa_name}-32)) +%endif +%ifarch sparcv9 ppc +BuildRequires: (glibc64 or glibc-devel(%{__isa_name}-64)) +%endif # Ensure glibc{,-devel} is installed for both multilib arches BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so %endif From f2827fcbf7b9429d5d3b12e8129785b71f2b33dd Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 18 Jan 2024 17:39:23 +0100 Subject: [PATCH 182/293] 14.0.1-0.2 --- gcc.spec | 3 --- 1 file changed, 3 deletions(-) diff --git a/gcc.spec b/gcc.spec index 2f1731f..2c1c11a 100644 --- a/gcc.spec +++ b/gcc.spec @@ -214,9 +214,6 @@ BuildRequires: (glibc32 or glibc-devel(%{__isa_name}-32)) %ifarch sparcv9 ppc BuildRequires: (glibc64 or glibc-devel(%{__isa_name}-64)) %endif -# Ensure glibc{,-devel} is installed for both multilib arches -BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so -%endif %if %{build_ada} # Ada requires Ada to build BuildRequires: gcc-gnat >= 3.1, libgnat >= 3.1 From 41cbdc2247562e4a33753f55f20510bbc3d58a5e Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 19 Jan 2024 20:20:52 +0000 Subject: [PATCH 183/293] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- gcc.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 2c1c11a..d3d842b 100644 --- a/gcc.spec +++ b/gcc.spec @@ -136,7 +136,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.2%{?dist} +Release: %{gcc_release}.2%{?dist}.1 # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3458,6 +3458,9 @@ end %endif %changelog +* Fri Jan 19 2024 Fedora Release Engineering - 14.0.1-0.2.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Thu Jan 18 2024 Jakub Jelinek 14.0.1-0.2 - update from trunk - PRs ada/113397, analyzer/106229, analyzer/113150, analyzer/113333, From 1362054ff7ef97cc576d1bff7a07db0dd6c14678 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 23 Jan 2024 16:23:47 +0100 Subject: [PATCH 184/293] AMD GCN offloading support. --- gcc.spec | 139 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 137 insertions(+), 2 deletions(-) diff --git a/gcc.spec b/gcc.spec index d3d842b..2d3ad9d 100644 --- a/gcc.spec +++ b/gcc.spec @@ -114,6 +114,11 @@ %else %global build_offload_nvptx 0 %endif +%ifarch x86_64 +%global build_offload_amdgcn 1 +%else +%global build_offload_amdgcn 0 +%endif %if 0%{?fedora} < 32 && 0%{?rhel} < 8 %ifarch s390x %global multilib_32_arch s390 @@ -229,6 +234,9 @@ BuildRequires: libunwind >= 0.98 BuildRequires: doxygen >= 1.7.1 BuildRequires: graphviz, dblatex, texlive-collection-latex, docbook5-style-xsl %endif +%if %{build_offload_amdgcn} +BuildRequires: llvm, lld +%endif Requires: cpp = %{version}-%{release} # Need .eh_frame ld optimizations # Need proper visibility support @@ -552,6 +560,15 @@ This package contains libgomp plugin for offloading to NVidia PTX. The plugin needs libcuda.so.1 shared library that has to be installed separately. +%package -n libgomp-offload-amdgcn +Summary: GCC OpenMP v4.5 plugin for offloading to AMD GCN +Requires: libgomp = %{version}-%{release} +Requires: rocm-runtime >= 6.0.0 + +%description -n libgomp-offload-amdgcn +This package contains libgomp plugin for offloading to AMD ROCm capable +devices. + %package gdb-plugin Summary: GCC plugin for GDB Requires: gcc = %{version}-%{release} @@ -834,6 +851,18 @@ NVidia PTX. OpenMP and OpenACC programs linked with -fopenmp will by default add PTX code into the binaries, which can be offloaded to NVidia PTX capable devices if available. +%package offload-amdgcn +Summary: Offloading compiler to AMD GCN +Requires: gcc = %{version}-%{release} +Requires: libgomp-offload-amdgcn = %{version}-%{release} +Requires: llvm, lld + +%description offload-amdgcn +The gcc-offload-amdgcn package provides offloading support for +AMD GCN. OpenMP and OpenACC programs linked with -fopenmp will +by default add GCN code into the binaries, which can be offloaded +to AMD ROCm capable devices if available. + %package plugin-annobin Summary: The annobin plugin for gcc, built by the installed version of gcc Requires: gcc = %{version}-%{release} @@ -976,6 +1005,42 @@ cd .. rm -f newlib %endif +%if %{build_offload_amdgcn} +mkdir -p objia%{_prefix}/bin objia%{_prefix}/amdgcn-amdhsa/bin +IAROOT=`pwd`/objia +ln -sf %{_prefix}/bin/llvm-ar ${IAROOT}%{_prefix}/bin/amdgcn-amdhsa-ar +ln -sf %{_prefix}/bin/llvm-ar ${IAROOT}%{_prefix}/bin/amdgcn-amdhsa-ranlib +ln -sf %{_prefix}/bin/llvm-mc ${IAROOT}%{_prefix}/bin/amdgcn-amdhsa-as +ln -sf %{_prefix}/bin/llvm-nm ${IAROOT}%{_prefix}/bin/amdgcn-amdhsa-nm +ln -sf %{_prefix}/bin/lld ${IAROOT}%{_prefix}/bin/amdgcn-amdhsa-ld +ln -sf ../../bin/amdgcn-amdhsa-ar ${IAROOT}%{_prefix}/amdgcn-amdhsa/bin/ar +ln -sf ../../bin/amdgcn-amdhsa-ranlib ${IAROOT}%{_prefix}/amdgcn-amdhsa/bin/ranlib +ln -sf ../../bin/amdgcn-amdhsa-as ${IAROOT}%{_prefix}/amdgcn-amdhsa/bin/as +ln -sf ../../bin/amdgcn-amdhsa-nm ${IAROOT}%{_prefix}/amdgcn-amdhsa/bin/nm +ln -sf ../../bin/amdgcn-amdhsa-ld ${IAROOT}%{_prefix}/amdgcn-amdhsa/bin/ld + +ln -sf newlib-cygwin-%{newlib_cygwin_gitrev}/newlib newlib +rm -rf obj-offload-amdgcn-amdhsa +mkdir obj-offload-amdgcn-amdhsa + +cd obj-offload-amdgcn-amdhsa +CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \ + CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \ + | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \ + XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \ + ../configure --disable-bootstrap --disable-sjlj-exceptions \ + --with-build-time-tools=${IAROOT}%{_prefix}/amdgcn-amdhsa/bin \ + --target amdgcn-amdhsa --enable-as-accelerator-for=%{gcc_target_platform} \ + --enable-languages=c,c++,fortran,lto \ + --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \ + --with-bugurl=http://bugzilla.redhat.com/bugzilla \ + --enable-checking=release --with-system-zlib \ + --with-gcc-major-version-only --without-isl --disable-libquadmath +make %{?_smp_mflags} +cd .. +rm -f newlib +%endif + rm -rf obj-%{gcc_target_platform} mkdir obj-%{gcc_target_platform} cd obj-%{gcc_target_platform} @@ -1021,6 +1086,13 @@ enableld=,d %if %{build_m2} enablelm2=,m2 %endif +offloadtgts= +%if %{build_offload_nvptx} +offloadtgts=nvptx-none +%endif +%if %{build_offload_amdgcn} +offloadtgts=${offloadtgts:+${offloadtgts},}amdgcn-amdhsa +%endif CONFIGURE_OPTS="\ --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \ --with-bugurl=http://bugzilla.redhat.com/bugzilla \ @@ -1053,9 +1125,11 @@ CONFIGURE_OPTS="\ %else --without-isl \ %endif +%if %{build_offload_nvptx} || %{build_offload_amdgcn} + --enable-offload-targets=$offloadtgts --enable-offload-defaulted \ +%endif %if %{build_offload_nvptx} - --enable-offload-targets=nvptx-none \ - --without-cuda-driver --enable-offload-defaulted \ + --without-cuda-driver \ %endif %if 0%{?fedora} >= 21 || 0%{?rhel} >= 7 %if %{attr_ifunc} @@ -1359,6 +1433,43 @@ cd .. rm -f newlib %endif +%if %{build_offload_amdgcn} +mkdir -p %{buildroot}%{_prefix}/bin %{buildroot}%{_prefix}/amdgcn-amdhsa/bin +ln -sf llvm-ar %{buildroot}%{_prefix}/bin/amdgcn-amdhsa-ar +ln -sf llvm-ar %{buildroot}%{_prefix}/bin/amdgcn-amdhsa-ranlib +ln -sf llvm-mc %{buildroot}%{_prefix}/bin/amdgcn-amdhsa-as +ln -sf llvm-nm %{buildroot}%{_prefix}/bin/amdgcn-amdhsa-nm +ln -sf lld %{buildroot}%{_prefix}/bin/amdgcn-amdhsa-ld +ln -sf ../../bin/amdgcn-amdhsa-ar %{buildroot}%{_prefix}/amdgcn-amdhsa/bin/ar +ln -sf ../../bin/amdgcn-amdhsa-ranlib %{buildroot}%{_prefix}/amdgcn-amdhsa/bin/ranlib +ln -sf ../../bin/amdgcn-amdhsa-as %{buildroot}%{_prefix}/amdgcn-amdhsa/bin/as +ln -sf ../../bin/amdgcn-amdhsa-nm %{buildroot}%{_prefix}/amdgcn-amdhsa/bin/nm +ln -sf ../../bin/amdgcn-amdhsa-ld %{buildroot}%{_prefix}/amdgcn-amdhsa/bin/ld + +ln -sf newlib-cygwin-%{newlib_cygwin_gitrev}/newlib newlib +cd obj-offload-amdgcn-amdhsa +make prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \ + infodir=%{buildroot}%{_infodir} install +rm -rf %{buildroot}%{_prefix}/libexec/gcc/amdgcn-amdhsa/%{gcc_major}/install-tools +rm -rf %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/{install-tools,plugin,cc1,cc1plus,f951} +rm -rf %{buildroot}%{_infodir} %{buildroot}%{_mandir}/man7 %{buildroot}%{_prefix}/share/locale +rm -rf %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/{install-tools,plugin} +rm -rf %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/{install-tools,plugin,include-fixed} +rm -rf %{buildroot}%{_prefix}/%{_lib}/libc[cp]1* +mv -f %{buildroot}%{_prefix}/amdgcn-amdhsa/lib/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/ +mv -f %{buildroot}%{_prefix}/amdgcn-amdhsa/lib/gfx906/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx906/ +mv -f %{buildroot}%{_prefix}/amdgcn-amdhsa/lib/gfx908/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx908/ +mv -f %{buildroot}%{_prefix}/amdgcn-amdhsa/lib/gfx90a/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx90a/ +mv -f %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/ +mv -f %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/gfx906/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx906/ +mv -f %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/gfx908/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx908/ +mv -f %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/gfx90a/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx90a/ +find %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa \ + %{buildroot}%{_prefix}/amdgcn-amdhsa/lib -name \*.la | xargs rm +cd .. +rm -f newlib +%endif + cd obj-%{gcc_target_platform} TARGET_PLATFORM=%{gcc_target_platform} @@ -3446,6 +3557,30 @@ end %{_prefix}/%{_lib}/libgomp-plugin-nvptx.so.* %endif +%if %{build_offload_amdgcn} +%files offload-amdgcn +%{_prefix}/bin/amdgcn-amdhsa-* +%{_prefix}/bin/%{gcc_target_platform}-accel-amdgcn-amdhsa-gcc +%{_prefix}/bin/%{gcc_target_platform}-accel-amdgcn-amdhsa-lto-dump +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel +%dir %{_prefix}/libexec/gcc +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/accel +%{_prefix}/lib/gcc/amdgcn-amdhsa +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa +%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa +%dir %{_prefix}/amdgcn-amdhsa +%{_prefix}/amdgcn-amdhsa/bin +%{_prefix}/amdgcn-amdhsa/include + +%files -n libgomp-offload-amdgcn +%{_prefix}/%{_lib}/libgomp-plugin-gcn.so.* +%endif + %if %{build_annobin_plugin} %files plugin-annobin %dir %{_prefix}/lib/gcc From 1ff01b9f76e5e92750b22b6c0ad3b4eb7200a559 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 24 Jan 2024 12:35:18 +0000 Subject: [PATCH 185/293] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- gcc.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 2d3ad9d..663d9d8 100644 --- a/gcc.spec +++ b/gcc.spec @@ -141,7 +141,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.2%{?dist}.1 +Release: %{gcc_release}.2%{?dist}.2 # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3593,6 +3593,9 @@ end %endif %changelog +* Wed Jan 24 2024 Fedora Release Engineering - 14.0.1-0.2.2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Fri Jan 19 2024 Fedora Release Engineering - 14.0.1-0.2.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From d10c76f9011405978291282e012e2d12884b5bf3 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 25 Jan 2024 13:29:52 +0100 Subject: [PATCH 186/293] 14.0.1-0.3 --- .gitignore | 1 + gcc.spec | 50 ++++++++++++++++++++++++++++++++++++-------------- sources | 2 +- 3 files changed, 38 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index 141b4f5..0977d5a 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz /gcc-14.0.1-20240118.tar.xz /newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz +/gcc-14.0.1-20240125.tar.xz diff --git a/gcc.spec b/gcc.spec index 663d9d8..6e19297 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20240118 -%global gitrev f284ad3cd92c6b23c50d039ad3b6ed1bf4d97c4d +%global DATE 20240125 +%global gitrev f3118f3f56f589a21b94106c4e210e5ba9a60898 %global gcc_version 14.0.1 %global gcc_major 14 # Note, gcc_release must be integer, if you want to add suffixes to @@ -141,7 +141,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.2%{?dist}.2 +Release: %{gcc_release}.3%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -1457,13 +1457,13 @@ rm -rf %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/{install-tools, rm -rf %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/{install-tools,plugin,include-fixed} rm -rf %{buildroot}%{_prefix}/%{_lib}/libc[cp]1* mv -f %{buildroot}%{_prefix}/amdgcn-amdhsa/lib/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/ -mv -f %{buildroot}%{_prefix}/amdgcn-amdhsa/lib/gfx906/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx906/ -mv -f %{buildroot}%{_prefix}/amdgcn-amdhsa/lib/gfx908/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx908/ -mv -f %{buildroot}%{_prefix}/amdgcn-amdhsa/lib/gfx90a/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx90a/ mv -f %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/ -mv -f %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/gfx906/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx906/ -mv -f %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/gfx908/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx908/ -mv -f %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/gfx90a/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx90a/ +pushd %{buildroot}%{_prefix}/amdgcn-amdhsa/lib +for i in gfx*; do +mv -f %{buildroot}%{_prefix}/amdgcn-amdhsa/lib/$i/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/$i/ +mv -f %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/$i/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/$i/ +done +popd find %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa \ %{buildroot}%{_prefix}/amdgcn-amdhsa/lib -name \*.la | xargs rm cd .. @@ -3593,11 +3593,33 @@ end %endif %changelog -* Wed Jan 24 2024 Fedora Release Engineering - 14.0.1-0.2.2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Fedora Release Engineering - 14.0.1-0.2.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild +* Thu Jan 25 2024 Jakub Jelinek 14.0.1-0.3 +- update from trunk + - PRs analyzer/111361, analyzer/112705, analyzer/112811, analyzer/112927, + analyzer/112977, bootstrap/113554, c++/67898, c++/90463, c++/90464, + c++/100707, c++/102607, c++/104594, c++/109640, c++/109642, + c++/111357, c++/111410, c++/111607, c++/112594, c++/112632, + c++/112820, c++/113256, c++/113347, c++/113405, c++/113498, + c++/113529, c/102998, c/107942, c/109708, c/110029, c/113492, + c/113518, debug/107058, debug/112718, debug/113382, debug/113488, + fortran/48776, fortran/111291, fortran/113377, fortran/113471, + ipa/108007, ipa/108470, ipa/110705, ipa/112616, ipa/113490, + libstdc++/113500, libstdc++/113512, middle-end/88345, + middle-end/112684, middle-end/113574, modula2/113559, other/111966, + rtl-optimization/111267, rtl-optimization/113255, target/82420, + target/100942, target/108521, target/108640, target/109092, + target/109636, target/110934, target/111279, target/112989, + target/113030, target/113070, target/113089, target/113095, + target/113114, target/113356, target/113420, target/113485, + target/113486, target/113495, target/113550, target/113556, + target/113572, testsuite/113437, testsuite/113548, + tree-optimization/69807, tree-optimization/113364, + tree-optimization/113373, tree-optimization/113459, + tree-optimization/113462, tree-optimization/113463, + tree-optimization/113464, tree-optimization/113491, + tree-optimization/113494, tree-optimization/113552, + tree-optimization/113576 +- add offloading support for AMD GCN ROCm capable devices * Thu Jan 18 2024 Jakub Jelinek 14.0.1-0.2 - update from trunk diff --git a/sources b/sources index 1ea1997..424df01 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.0.1-20240118.tar.xz) = 43d9f8b9d9d76dee04963dc1d482dece74a6862747b00aa3ceb72f93469f7592a430262bd76203d756907fd475626da58d610997a346b1ecee6505f6380dc1a4 +SHA512 (gcc-14.0.1-20240125.tar.xz) = 8d9784cc2046947cb17c0d1cbd556dcc9f98106c1d19f7de5f9f7641d421a816d85ed9166b7d85324eae96d46384c7c8e2884a815cd53058792e13568cad883d SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz) = 8a5c282852c995fabf75a8d6331db807a1acd935fd82022e00801b798fb850392d03e29cfa4aa7e3d5cfd8f48510e5e25b79a647fbec79c8566792584a0c1c49 From 5ccff5cd88b5161da2e2f5a42411aa4521995546 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 27 Jan 2024 12:08:41 +0100 Subject: [PATCH 187/293] 14.0.1-0.4 --- .gitignore | 1 + gcc.spec | 51 +++++++++++++++++++++++++++++++++------------------ sources | 2 +- 3 files changed, 35 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index 0977d5a..71f6a81 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ /gcc-14.0.1-20240118.tar.xz /newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz /gcc-14.0.1-20240125.tar.xz +/gcc-14.0.1-20240127.tar.xz diff --git a/gcc.spec b/gcc.spec index 6e19297..09148a9 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20240125 -%global gitrev f3118f3f56f589a21b94106c4e210e5ba9a60898 +%global DATE 20240127 +%global gitrev 97a1e216faf8ad55b025f07bed4940c016a982c3 %global gcc_version 14.0.1 %global gcc_major 14 # Note, gcc_release must be integer, if you want to add suffixes to @@ -141,7 +141,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.3%{?dist} +Release: %{gcc_release}.4%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -235,7 +235,7 @@ BuildRequires: doxygen >= 1.7.1 BuildRequires: graphviz, dblatex, texlive-collection-latex, docbook5-style-xsl %endif %if %{build_offload_amdgcn} -BuildRequires: llvm, lld +BuildRequires: llvm >= 15, lld >= 15 %endif Requires: cpp = %{version}-%{release} # Need .eh_frame ld optimizations @@ -340,11 +340,11 @@ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} %endif %description -The gcc package contains the GNU Compiler Collection version 14. +The gcc package contains the GNU Compiler Collection version %{gcc_major}. You'll need this package in order to compile C code. %package -n libgcc -Summary: GCC version 14 shared support library +Summary: GCC version %{gcc_major} shared support library Autoreq: false %if !%{build_ada} Obsoletes: libgnat < %{version}-%{release} @@ -855,7 +855,7 @@ to NVidia PTX capable devices if available. Summary: Offloading compiler to AMD GCN Requires: gcc = %{version}-%{release} Requires: libgomp-offload-amdgcn = %{version}-%{release} -Requires: llvm, lld +Requires: llvm >= 15, lld >= 15 %description offload-amdgcn The gcc-offload-amdgcn package provides offloading support for @@ -916,6 +916,8 @@ cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi +sed -i -e '/ldp_fusion/s/Init(1)/Init(0)/' gcc/config/aarch64/aarch64.opt + sed -i -e 's/Common Driver Var(flag_report_bug)/& Init(1)/' gcc/common.opt sed -i -e 's/context->report_bug = false;/context->report_bug = true;/' gcc/diagnostic.cc @@ -1053,7 +1055,7 @@ ISL_FLAG_PIC=-fPIC ISL_FLAG_PIC=-fpic %endif cd isl-build -sed -i 's|libisl\([^-]\)|libgcc14privateisl\1|g' \ +sed -i 's|libisl\([^-]\)|libgcc%{gcc_major}privateisl\1|g' \ ../../isl-%{isl_version}/Makefile.{am,in} ../../isl-%{isl_version}/configure \ CC=/usr/bin/gcc CXX=/usr/bin/g++ \ @@ -1061,8 +1063,8 @@ sed -i 's|libisl\([^-]\)|libgcc14privateisl\1|g' \ make %{?_smp_mflags} CFLAGS="${CFLAGS:-%optflags} $ISL_FLAG_PIC" make install cd ../isl-install/lib -rm libgcc14privateisl.so{,.23} -mv libgcc14privateisl.so.23.1.0 libisl.so.23 +rm libgcc%{gcc_major}privateisl.so{,.23} +mv libgcc%{gcc_major}privateisl.so.23.1.0 libisl.so.23 ln -sf libisl.so.23 libisl.so cd ../.. %endif @@ -1824,28 +1826,28 @@ mv -f $FULLPATH/ada{include,lib} $FULLLPATH/ pushd $FULLLPATH/adalib if [ "%{_lib}" = "lib" ]; then ln -sf ../../../../../libgnarl-*.so libgnarl.so -ln -sf ../../../../../libgnarl-*.so libgnarl-14.so +ln -sf ../../../../../libgnarl-*.so libgnarl-%{gcc_major}.so ln -sf ../../../../../libgnat-*.so libgnat.so -ln -sf ../../../../../libgnat-*.so libgnat-14.so +ln -sf ../../../../../libgnat-*.so libgnat-%{gcc_major}.so else ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl.so -ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-14.so +ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-%{gcc_major}.so ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat.so -ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-14.so +ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-%{gcc_major}.so fi popd else pushd $FULLPATH/adalib if [ "%{_lib}" = "lib" ]; then ln -sf ../../../../libgnarl-*.so libgnarl.so -ln -sf ../../../../libgnarl-*.so libgnarl-14.so +ln -sf ../../../../libgnarl-*.so libgnarl-%{gcc_major}.so ln -sf ../../../../libgnat-*.so libgnat.so -ln -sf ../../../../libgnat-*.so libgnat-14.so +ln -sf ../../../../libgnat-*.so libgnat-%{gcc_major}.so else ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so -ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-14.so +ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-%{gcc_major}.so ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so -ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-14.so +ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-%{gcc_major}.so fi popd fi @@ -3593,6 +3595,19 @@ end %endif %changelog +* Sat Jan 27 2024 Jakub Jelinek 14.0.1-0.4 +- update from trunk + - PRs analyzer/112969, c++/109227, c++/112899, c++/113580, c++/113598, + c++/113599, middle-end/112971, other/113575, preprocessor/105608, + target/100204, target/100212, target/112987, target/113469, + target/113526, target/113538, target/113601, testsuite/113558, + tree-optimization/113602 +- temporarily disable -mearly-ldp-fusion -mlate-ldp-fusion on aarch64 again + (#2260449, #2260560, #2260562) +- use gcc_major macro in the spec some more +- require llvm >= 15 and lld >= 15 for the amdgcn offloading + where they are used as assembler and linker + * Thu Jan 25 2024 Jakub Jelinek 14.0.1-0.3 - update from trunk - PRs analyzer/111361, analyzer/112705, analyzer/112811, analyzer/112927, diff --git a/sources b/sources index 424df01..6042b49 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.0.1-20240125.tar.xz) = 8d9784cc2046947cb17c0d1cbd556dcc9f98106c1d19f7de5f9f7641d421a816d85ed9166b7d85324eae96d46384c7c8e2884a815cd53058792e13568cad883d +SHA512 (gcc-14.0.1-20240127.tar.xz) = 3a45100039c6b2e0c7f0731dfa942c52badae86895c6ed9d76283dabb365efa00e9808aef9521754359df124c942fcbc700de09b6fdb6a9e7359b43cbbc722d8 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz) = 8a5c282852c995fabf75a8d6331db807a1acd935fd82022e00801b798fb850392d03e29cfa4aa7e3d5cfd8f48510e5e25b79a647fbec79c8566792584a0c1c49 From 564bdfea3fc6f554caf9baec02f8a2803c90ddd7 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 7 Feb 2024 16:19:23 +0100 Subject: [PATCH 188/293] 14.0.1-0.5 --- .gitignore | 1 + gcc.spec | 64 +++++++++++++++++++++++++++++++++++++++++++----------- sources | 2 +- 3 files changed, 53 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 71f6a81..ee75e41 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz /gcc-14.0.1-20240125.tar.xz /gcc-14.0.1-20240127.tar.xz +/gcc-14.0.1-20240207.tar.xz diff --git a/gcc.spec b/gcc.spec index 09148a9..768d4a5 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20240127 -%global gitrev 97a1e216faf8ad55b025f07bed4940c016a982c3 +%global DATE 20240207 +%global gitrev 0e40195e10a1c63f6b20ea9db0356ed98039480b %global gcc_version 14.0.1 %global gcc_major 14 # Note, gcc_release must be integer, if you want to add suffixes to @@ -141,7 +141,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.4%{?dist} +Release: %{gcc_release}.5%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -321,7 +321,7 @@ Patch100: gcc14-fortran-fdec-duplicates.patch %if %{build_go} # Avoid stripping these libraries and binaries. %global __os_install_post \ -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.22.* \ +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.23.* \ chmod 644 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -329,7 +329,7 @@ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/test2json \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/vet \ %__os_install_post \ -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.22.* \ +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.23.* \ chmod 755 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 755 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -1685,7 +1685,7 @@ ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../libgfortran.so.5.* libgfortran.so ln -sf ../../../libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../libgo.so.22.* libgo.so +ln -sf ../../../libgo.so.23.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../libquadmath.so.0.* libquadmath.so @@ -1720,7 +1720,7 @@ ln -sf ../../../../%{_lib}/libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../../%{_lib}/libgfortran.so.5.* libgfortran.so ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../../%{_lib}/libgo.so.22.* libgo.so +ln -sf ../../../../%{_lib}/libgo.so.23.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so @@ -1862,8 +1862,8 @@ ln -sf ../`echo ../../../../lib/libgfortran.so.5.* | sed s~/lib/~/lib64/~` 64/li ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.22.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.22.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.23.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.23.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -1979,8 +1979,8 @@ ln -sf ../`echo ../../../../lib64/libgfortran.so.5.* | sed s~/../lib64/~/~` 32/l ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.22.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.22.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.23.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.23.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -2200,7 +2200,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.* %endif %if %{build_go} # Avoid stripping these libraries and binaries. -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.22.* +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.23.* chmod 644 %{buildroot}%{_prefix}/bin/go.gcc chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo @@ -3452,7 +3452,7 @@ end %doc rpm.doc/go/* %files -n libgo -%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.22* +%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.23* %doc rpm.doc/libgo/* %files -n libgo-devel @@ -3595,6 +3595,44 @@ end %endif %changelog +* Wed Feb 7 2024 Jakub Jelinek 14.0.1-0.5 +- update from trunk + - PRs analyzer/113253, analyzer/113509, analyzer/113654, c++/94231, + c++/107291, c++/107594, c++/109359, c++/110006, c++/110084, + c++/110358, c++/111286, c++/112437, c++/112439, c++/112737, + c++/112769, c++/112846, c++/113451, c++/113531, c++/113544, + c++/113638, c++/113640, c++/113644, c++/113788, c/111059, c/111911, + c/112571, c/113438, c/113740, debug/103047, debug/113394, + debug/113637, fortran/104908, libfortran/111022, libgcc/113337, + libgcc/113402, libgcc/113403, libgcc/113604, libstdc++/109203, + libstdc++/113309, libstdc++/113335, libstdc++/90276, + middle-end/101195, middle-end/110176, middle-end/112917, + middle-end/113100, middle-end/113607, middle-end/113622, + middle-end/113699, middle-end/113705, middle-end/113722, + modula2/111627, modula2/112506, modula2/113730, + rtl-optimization/113656, sanitizer/110676, sanitizer/112644, + target/38534, target/59778, target/103503, target/105576, + target/108933, target/111677, target/112577, target/112861, + target/112862, target/112863, target/112864, target/112950, + target/113059, target/113249, target/113255, target/113312, + target/113560, target/113615, target/113616, target/113623, + target/113636, target/113655, target/113657, target/113689, + target/113690, target/113697, target/113700, target/113701, + target/113763, target/113766, testsuite/113502, + tree-optimization/110603, tree-optimization/111268, + tree-optimization/111444, tree-optimization/113467, + tree-optimization/113568, tree-optimization/113588, + tree-optimization/113603, tree-optimization/113614, + tree-optimization/113630, tree-optimization/113639, + tree-optimization/113659, tree-optimization/113670, + tree-optimization/113691, tree-optimization/113692, + tree-optimization/113693, tree-optimization/113707, + tree-optimization/113731, tree-optimization/113736, + tree-optimization/113737, tree-optimization/113750, + tree-optimization/113753, tree-optimization/113756, + tree-optimization/113759, tree-optimization/113796 + - fix PCH writing assertion (#2259912) + * Sat Jan 27 2024 Jakub Jelinek 14.0.1-0.4 - update from trunk - PRs analyzer/112969, c++/109227, c++/112899, c++/113580, c++/113598, diff --git a/sources b/sources index 6042b49..93d2d8f 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.0.1-20240127.tar.xz) = 3a45100039c6b2e0c7f0731dfa942c52badae86895c6ed9d76283dabb365efa00e9808aef9521754359df124c942fcbc700de09b6fdb6a9e7359b43cbbc722d8 +SHA512 (gcc-14.0.1-20240207.tar.xz) = 3088bfd54e746678c3a8c366e5650171ac2029a359d4bbfb23d8bf30228634c1c6ac4bd7187341903eaf16af67ebcac8866ffe1ae3288ddfcc8a5e03fea709ba SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz) = 8a5c282852c995fabf75a8d6331db807a1acd935fd82022e00801b798fb850392d03e29cfa4aa7e3d5cfd8f48510e5e25b79a647fbec79c8566792584a0c1c49 From 216b9da0730a511e4c2e3321c6495e2f9ad4b3db Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 8 Feb 2024 15:21:37 +0100 Subject: [PATCH 189/293] 14.0.1-0.6 --- .gitignore | 1 + gcc.spec | 11 ++++++++--- sources | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index ee75e41..052cbe1 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ /gcc-14.0.1-20240125.tar.xz /gcc-14.0.1-20240127.tar.xz /gcc-14.0.1-20240207.tar.xz +/gcc-14.0.1-20240208.tar.xz diff --git a/gcc.spec b/gcc.spec index 768d4a5..b6cb134 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20240207 -%global gitrev 0e40195e10a1c63f6b20ea9db0356ed98039480b +%global DATE 20240208 +%global gitrev b006f0561c0b004822f600ad0ea9a2b90fb29d7f %global gcc_version 14.0.1 %global gcc_major 14 # Note, gcc_release must be integer, if you want to add suffixes to @@ -141,7 +141,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.5%{?dist} +Release: %{gcc_release}.6%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3595,6 +3595,11 @@ end %endif %changelog +* Thu Feb 8 2024 Jakub Jelinek 14.0.1-0.6 +- update from trunk + - PRs c++/113814, c/113776, target/113711, target/113733, target/113824, + testsuite/113710, tree-optimization/113735, tree-optimization/113808 + * Wed Feb 7 2024 Jakub Jelinek 14.0.1-0.5 - update from trunk - PRs analyzer/113253, analyzer/113509, analyzer/113654, c++/94231, diff --git a/sources b/sources index 93d2d8f..f025ce8 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.0.1-20240207.tar.xz) = 3088bfd54e746678c3a8c366e5650171ac2029a359d4bbfb23d8bf30228634c1c6ac4bd7187341903eaf16af67ebcac8866ffe1ae3288ddfcc8a5e03fea709ba +SHA512 (gcc-14.0.1-20240208.tar.xz) = 02054b26fe0500d4ad88deeb41b5d356b70dafcc3fcb98c790d79e78f1c9a1d77654d2b553b43ab273147d9cfe76b801c2c9a1903caafce84bbffd5fb177c53d SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz) = 8a5c282852c995fabf75a8d6331db807a1acd935fd82022e00801b798fb850392d03e29cfa4aa7e3d5cfd8f48510e5e25b79a647fbec79c8566792584a0c1c49 From f24424aa4f0de9a7cbb0521eeaae5ff0a959b2f7 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 17 Feb 2024 17:36:34 +0100 Subject: [PATCH 190/293] 14.0.1-0.7 --- .gitignore | 1 + gcc.spec | 37 ++++++++++++++++++++++++++++++++++--- sources | 2 +- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 052cbe1..54f653c 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ /gcc-14.0.1-20240127.tar.xz /gcc-14.0.1-20240207.tar.xz /gcc-14.0.1-20240208.tar.xz +/gcc-14.0.1-20240217.tar.xz diff --git a/gcc.spec b/gcc.spec index b6cb134..ae6ef07 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20240208 -%global gitrev b006f0561c0b004822f600ad0ea9a2b90fb29d7f +%global DATE 20240217 +%global gitrev 09808932c51a9cccff3f40f23da744eda6ac28e1 %global gcc_version 14.0.1 %global gcc_major 14 # Note, gcc_release must be integer, if you want to add suffixes to @@ -141,7 +141,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.6%{?dist} +Release: %{gcc_release}.7%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3595,6 +3595,37 @@ end %endif %changelog +* Sat Feb 17 2024 Jakub Jelinek 14.0.1-0.7 +- update from trunk + - PRs analyzer/111266, c++/97202, c++/97990, c++/98388, c++/99573, + c++/107126, c++/111682, c++/112436, c++/112580, c++/113158, + c++/113332, c++/113545, c++/113612, c++/113649, c++/113658, + c++/113674, c++/113706, c++/113708, c++/113760, c++/113789, + c++/113834, c++/113853, c++/113908, c++/113929, d/104739, d/113125, + d/113667, d/113758, d/113772, fortran/99210, fortran/105847, + fortran/113799, fortran/113866, fortran/113883, fortran/113911, + ipa/98237, libfortran/107068, libgcc/113850, libgomp/113843, + libstdc++/87744, libstdc++/99117, libstdc++/100147, + libstdc++/113294, libstdc++/113806, libstdc++/113807, + libstdc++/113811, libstdc++/113931, libstdc++/113961, + middle-end/107385, middle-end/110754, middle-end/113415, + middle-end/113508, middle-end/113576, middle-end/113904, + middle-end/113921, modula2/113848, modula2/113888, other/113336, + sanitizer/113785, target/106543, target/109349, target/113742, + target/113780, target/113855, target/113871, target/113876, + target/113909, target/113927, testsuite/113278, testsuite/113448, + testsuite/113861, testsuite/113899, tree-optimization/108355, + tree-optimization/111054, tree-optimization/111156, + tree-optimization/113567, tree-optimization/113734, + tree-optimization/113774, tree-optimization/113783, + tree-optimization/113818, tree-optimization/113831, + tree-optimization/113849, tree-optimization/113863, + tree-optimization/113895, tree-optimization/113896, + tree-optimization/113898, tree-optimization/113902, + tree-optimization/113910 + - fix bugs in Fortran allocatable character component assignments + (#2261826, PR fortran/113503) + * Thu Feb 8 2024 Jakub Jelinek 14.0.1-0.6 - update from trunk - PRs c++/113814, c/113776, target/113711, target/113733, target/113824, diff --git a/sources b/sources index f025ce8..1a50ec2 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.0.1-20240208.tar.xz) = 02054b26fe0500d4ad88deeb41b5d356b70dafcc3fcb98c790d79e78f1c9a1d77654d2b553b43ab273147d9cfe76b801c2c9a1903caafce84bbffd5fb177c53d +SHA512 (gcc-14.0.1-20240217.tar.xz) = 6e0021220a99be020dfbef034fcac9dbf19aa57279f2ee0f31f38a59c57a30755099422ae798845e0194d792e24d5fb6c7c339471fa1f066b8eed46c974d3c0d SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz) = 8a5c282852c995fabf75a8d6331db807a1acd935fd82022e00801b798fb850392d03e29cfa4aa7e3d5cfd8f48510e5e25b79a647fbec79c8566792584a0c1c49 From 966f89a4b5ac9171c415684715cca935e4eca405 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 17 Feb 2024 22:54:49 +0100 Subject: [PATCH 191/293] 14.0.1-0.7 --- gcc.spec | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/gcc.spec b/gcc.spec index ae6ef07..2ec50db 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1691,8 +1691,8 @@ ln -sf ../../../libgo.so.23.* libgo.so ln -sf ../../../libquadmath.so.0.* libquadmath.so %endif %if %{build_d} -ln -sf ../../../libgdruntime.so.4.* libgdruntime.so -ln -sf ../../../libgphobos.so.4.* libgphobos.so +ln -sf ../../../libgdruntime.so.5.* libgdruntime.so +ln -sf ../../../libgphobos.so.5.* libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do @@ -1726,8 +1726,8 @@ ln -sf ../../../../%{_lib}/libgo.so.23.* libgo.so ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so %endif %if %{build_d} -ln -sf ../../../../%{_lib}/libgdruntime.so.4.* libgdruntime.so -ln -sf ../../../../%{_lib}/libgphobos.so.4.* libgphobos.so +ln -sf ../../../../%{_lib}/libgdruntime.so.5.* libgdruntime.so +ln -sf ../../../../%{_lib}/libgphobos.so.5.* libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do @@ -1872,10 +1872,10 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libquadmath.so.0.* | sed ' %endif %if %{build_d} rm -f libgdruntime.so libgphobos.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgdruntime.so.4.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgdruntime.so.4.* | sed 's,^.*libg,libg,'`' )' > 64/libgdruntime.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgphobos.so.4.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgphobos.so.4.* | sed 's,^.*libg,libg,'`' )' > 64/libgphobos.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgdruntime.so.5.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgdruntime.so.5.* | sed 's,^.*libg,libg,'`' )' > 64/libgdruntime.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgphobos.so.5.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgphobos.so.5.* | sed 's,^.*libg,libg,'`' )' > 64/libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do @@ -1989,10 +1989,10 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libquadmath.so.0.* | sed ' %endif %if %{build_d} rm -f libgdruntime.so libgphobos.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgdruntime.so.4.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgdruntime.so.4.* | sed 's,^.*libg,libg,'`' )' > 32/libgdruntime.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgphobos.so.4.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgphobos.so.4.* | sed 's,^.*libg,libg,'`' )' > 32/libgphobos.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgdruntime.so.5.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgdruntime.so.5.* | sed 's,^.*libg,libg,'`' )' > 32/libgdruntime.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgphobos.so.5.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgphobos.so.5.* | sed 's,^.*libg,libg,'`' )' > 32/libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do @@ -2169,8 +2169,8 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libcc1.so.0.* chmod 755 %{buildroot}%{_prefix}/%{_lib}/libquadmath.so.0.* %endif %if %{build_d} -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgdruntime.so.4.* -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgphobos.so.4.* +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgdruntime.so.5.* +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgphobos.so.5.* %endif %if %{build_m2} for i in cor iso log min pim; do @@ -3059,8 +3059,8 @@ end %doc rpm.doc/gdc/* %files -n libgphobos -%{_prefix}/%{_lib}/libgdruntime.so.4* -%{_prefix}/%{_lib}/libgphobos.so.4* +%{_prefix}/%{_lib}/libgdruntime.so.5* +%{_prefix}/%{_lib}/libgphobos.so.5* %doc rpm.doc/libphobos/* %files -n libgphobos-static From 8ed2af4dd025fe882557d740b4bc0ca63b7cff19 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 28 Feb 2024 12:56:06 +0100 Subject: [PATCH 192/293] 14.0.1-0.8 --- .gitignore | 1 + gcc.spec | 38 +++++++++++++++++++++++++++++++++++--- sources | 2 +- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 54f653c..5c766c6 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ /gcc-14.0.1-20240207.tar.xz /gcc-14.0.1-20240208.tar.xz /gcc-14.0.1-20240217.tar.xz +/gcc-14.0.1-20240228.tar.xz diff --git a/gcc.spec b/gcc.spec index 2ec50db..b9ec451 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20240217 -%global gitrev 09808932c51a9cccff3f40f23da744eda6ac28e1 +%global DATE 20240228 +%global gitrev cfee1bffd9e3a742d713f50e3270da172d2c2b75 %global gcc_version 14.0.1 %global gcc_major 14 # Note, gcc_release must be integer, if you want to add suffixes to @@ -141,7 +141,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.7%{?dist} +Release: %{gcc_release}.8%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3595,6 +3595,38 @@ end %endif %changelog +* Wed Feb 28 2024 Jakub Jelinek 14.0.1-0.8 +- update from trunk + - PRs ada/113893, analyzer/110483, analyzer/110520, analyzer/111289, + analyzer/111802, analyzer/111881, analyzer/113983, analyzer/113998, + analyzer/113999, c++/113083, c++/113966, c++/113970, c/114007, + c/114042, fortran/105658, fortran/107071, fortran/114012, + fortran/114024, ipa/61159, ipa/70582, ipa/111960, ipa/113476, + libfortran/105456, libfortran/105473, middle-end/112344, + middle-end/114070, middle-end/114073, middle-end/114084, + modula2/113749, modula2/113889, modula2/114026, modula2/114055, + other/109668, other/113957, rtl-optimization/54052, + rtl-optimization/114044, rtl-optimization/114054, target/90785, + target/108120, target/109987, target/112103, target/112375, + target/112397, target/113220, target/113295, target/113613, + target/113696, target/113805, target/113912, target/113971, + target/113995, target/114017, target/114028, target/114094, + target/114097, target/114098, testsuite/111462, + tree-optimization/91567, tree-optimization/109804, + tree-optimization/113205, tree-optimization/113967, + tree-optimization/113988, tree-optimization/113993, + tree-optimization/114027, tree-optimization/114038, + tree-optimization/114040, tree-optimization/114041, + tree-optimization/114048, tree-optimization/114068, + tree-optimization/114074, tree-optimization/114081, + tree-optimization/114090, tree-optimization/114099 + - fix up handling of C++ inline var specializations + (#2264986, PR c++/114013) + - punt on vectorization of +- with non-integral emulated vectors + (#2265489, PR tree-optimization/114075) + - fix up handling of references of comdat local symbols forced into + memory (#2260416, PR rtl-optimization/113617) + * Sat Feb 17 2024 Jakub Jelinek 14.0.1-0.7 - update from trunk - PRs analyzer/111266, c++/97202, c++/97990, c++/98388, c++/99573, diff --git a/sources b/sources index 1a50ec2..5c21ada 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.0.1-20240217.tar.xz) = 6e0021220a99be020dfbef034fcac9dbf19aa57279f2ee0f31f38a59c57a30755099422ae798845e0194d792e24d5fb6c7c339471fa1f066b8eed46c974d3c0d +SHA512 (gcc-14.0.1-20240228.tar.xz) = 56108b9092e0f657e0155abe3d22914bb4c269059ceafffc8a6c19cdb1c9de7d72f99fcd702d4c7475799be9e3d0baf7e48e631236abdb3e42d1ccfb4736b57f SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz) = 8a5c282852c995fabf75a8d6331db807a1acd935fd82022e00801b798fb850392d03e29cfa4aa7e3d5cfd8f48510e5e25b79a647fbec79c8566792584a0c1c49 From 496f53165ba44c4fa1e107cb8b586186e49a9068 Mon Sep 17 00:00:00 2001 From: David Abdurachmanov Date: Wed, 21 Feb 2024 10:17:18 +0000 Subject: [PATCH 193/293] Enable support for riscv64 --- gcc.spec | 28 ++++++++++++++++++++++------ gcc14-libtool-no-rpath.patch | 6 +++--- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/gcc.spec b/gcc.spec index b9ec451..40b1562 100644 --- a/gcc.spec +++ b/gcc.spec @@ -63,7 +63,7 @@ %else %global build_libquadmath 0 %endif -%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 +%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 riscv64 %global build_libasan 1 %else %global build_libasan 0 @@ -73,17 +73,17 @@ %else %global build_libhwasan 0 %endif -%ifarch x86_64 ppc64 ppc64le aarch64 s390x +%ifarch x86_64 ppc64 ppc64le aarch64 s390x riscv64 %global build_libtsan 1 %else %global build_libtsan 0 %endif -%ifarch x86_64 ppc64 ppc64le aarch64 s390x +%ifarch x86_64 ppc64 ppc64le aarch64 s390x riscv64 %global build_liblsan 1 %else %global build_liblsan 0 %endif -%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 +%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 riscv64 %global build_libubsan 1 %else %global build_libubsan 0 @@ -93,7 +93,7 @@ %else %global build_libatomic 0 %endif -%ifarch %{ix86} x86_64 %{arm} alpha ppc ppc64 ppc64le ppc64p7 s390 s390x aarch64 +%ifarch %{ix86} x86_64 %{arm} alpha ppc ppc64 ppc64le ppc64p7 s390 s390x aarch64 riscv64 %global build_libitm 1 %else %global build_libitm 0 @@ -104,7 +104,7 @@ %global build_isl 1 %endif %global build_libstdcxx_docs 1 -%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips} +%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips} riscv64 %global attr_ifunc 1 %else %global attr_ifunc 0 @@ -1055,6 +1055,13 @@ ISL_FLAG_PIC=-fPIC ISL_FLAG_PIC=-fpic %endif cd isl-build + +%ifarch riscv64 +# Update config.{sub,guess} scripts for riscv64 (the original ones are too old) +cp -f -v /usr/lib/rpm/%{_vendor}/config.guess ../../isl-%{isl_version}/config.guess +cp -f -v /usr/lib/rpm/%{_vendor}/config.sub ../../isl-%{isl_version}/config.sub +%endif + sed -i 's|libisl\([^-]\)|libgcc%{gcc_major}privateisl\1|g' \ ../../isl-%{isl_version}/Makefile.{am,in} ../../isl-%{isl_version}/configure \ @@ -2661,6 +2668,12 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmxlintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/vecintrin.h %endif +%ifarch riscv64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_vector.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_crypto.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_bitmanip.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_th_vector.h +%endif %if %{build_libasan} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sanitizer %endif @@ -3595,6 +3608,9 @@ end %endif %changelog +* Thu Feb 29 2024 David Abdurachmanov 14.0.1-0.8 +- Enable support for riscv64 + * Wed Feb 28 2024 Jakub Jelinek 14.0.1-0.8 - update from trunk - PRs ada/113893, analyzer/110483, analyzer/110520, analyzer/111289, diff --git a/gcc14-libtool-no-rpath.patch b/gcc14-libtool-no-rpath.patch index 466c661..8429a4c 100644 --- a/gcc14-libtool-no-rpath.patch +++ b/gcc14-libtool-no-rpath.patch @@ -5,7 +5,7 @@ libtool sucks. rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do -+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64|/usr/lib/../lib64/lp64d) continue;; esac if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then @@ -13,7 +13,7 @@ libtool sucks. rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do -+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64|/usr/lib/../lib64/lp64d) continue;; esac if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then @@ -21,7 +21,7 @@ libtool sucks. rpath= hardcode_libdirs= for libdir in $finalize_rpath; do -+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64|/usr/lib/../lib64/lp64d) continue;; esac if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then From 6997e7374e989ca654ddb11bd54864df7f9a80ff Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 4 Mar 2024 13:55:13 +0100 Subject: [PATCH 194/293] add --without-clang-plugin --without-llvm-plugin to annobin configure options --- gcc.spec | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gcc.spec b/gcc.spec index 40b1562..9baf9da 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1391,7 +1391,8 @@ CC="`$ANNOBIN_FLAGS --build-cc`" CXX="`$ANNOBIN_FLAGS --build-cxx`" \ CFLAGS="$ANNOBIN_CFLAGS1 $ANNOBIN_CFLAGS2 $ANNOBIN_LDFLAGS" \ CXXFLAGS="$ANNOBIN_CFLAGS1 `$ANNOBIN_FLAGS --build-includes` $ANNOBIN_CFLAGS2 $ANNOBIN_LDFLAGS" \ ./configure --with-gcc-plugin-dir=%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin \ - --without-annocheck --without-tests --without-docs --disable-rpath --without-debuginfod + --without-annocheck --without-tests --without-docs --disable-rpath --without-debuginfod \ + --without-clang-plugin --without-llvm-plugin make cd ../.. %endif @@ -3608,8 +3609,11 @@ end %endif %changelog -* Thu Feb 29 2024 David Abdurachmanov 14.0.1-0.8 -- Enable support for riscv64 +- add --without-clang-plugin --without-llvm-plugin to annobin configure + options + +* Thu Feb 29 2024 David Abdurachmanov +- enable support for riscv64 * Wed Feb 28 2024 Jakub Jelinek 14.0.1-0.8 - update from trunk From 493fbf28afb272ff6446500f9af1ee6c9fe15a37 Mon Sep 17 00:00:00 2001 From: Siddhesh Poyarekar Date: Thu, 7 Mar 2024 08:03:14 -0500 Subject: [PATCH 195/293] Fix changelogs in previous changes --- gcc.spec | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gcc.spec b/gcc.spec index 9baf9da..6159d87 100644 --- a/gcc.spec +++ b/gcc.spec @@ -141,7 +141,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.8%{?dist} +Release: %{gcc_release}.10%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -3609,10 +3609,11 @@ end %endif %changelog +* Mon Mar 4 2024 Jakub Jelinek 14.0.1-0.10 - add --without-clang-plugin --without-llvm-plugin to annobin configure options -* Thu Feb 29 2024 David Abdurachmanov +* Thu Feb 29 2024 David Abdurachmanov 14.0.1-0.9 - enable support for riscv64 * Wed Feb 28 2024 Jakub Jelinek 14.0.1-0.8 From 1bdd979db931db9c3f4619aee41b32ae07d8c86d Mon Sep 17 00:00:00 2001 From: Siddhesh Poyarekar Date: Thu, 15 Feb 2024 20:13:48 -0500 Subject: [PATCH 196/293] Update license to SPDX Includes licenses in ISL, newlib and nvptx as well. --- gcc.spec | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/gcc.spec b/gcc.spec index 6159d87..31ddf7f 100644 --- a/gcc.spec +++ b/gcc.spec @@ -141,10 +141,22 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.10%{?dist} -# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have -# GCC Runtime Exception. -License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD +Release: %{gcc_release}.11%{?dist} +# License notes for some of the less obvious ones: +# gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para +# isl: MIT, BSD-2-Clause +# libcody: Apache-2.0 +# libphobos/src/etc/c/curl.d: curl +# All of the remaining license soup is in newlib. +# Outstanding new SPDX identifier requests: +# https://github.com/spdx/license-list-XML/issues/2395 +# https://github.com/spdx/license-list-XML/issues/2406 +# https://github.com/spdx/license-list-XML/issues/2408 +# https://github.com/spdx/license-list-XML/issues/2409 +# https://github.com/spdx/license-list-XML/issues/2410 +# https://github.com/spdx/license-list-XML/issues/2411 +License: GPL-3.0-or-later AND LGPL-3.0-or-later AND (GPL-3.0-or-later WITH GCC-exception-3.1) AND (GPL-3.0-or-later WITH Texinfo-exception) AND (LGPL-2.1-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GNU-compiler-exception) AND BSL-1.0 AND GFDL-1.3-or-later AND Linux-man-pages-copyleft-2-para AND SunPro AND BSD-1-Clause AND BSD-2-Clause AND BSD-2-Clause-Views AND BSD-3-Clause AND BSD-4-Clause AND BSD-Source-Code AND Zlib AND MIT AND Apache-2.0 AND (Apache-2.0 WITH LLVM-Exception) AND ZPL-2.1 AND ISC AND LicenseRef-Fedora-Public-Domain AND HP-1986 AND curl AND Martin-Birgmeier AND HPND-Markus-Kuhn + # The source for this package was pulled from upstream's vcs. # %%{gitrev} is some commit from the # https://gcc.gnu.org/git/?p=gcc.git;h=refs/vendors/redhat/heads/gcc-%%{gcc_major}-branch @@ -3609,6 +3621,9 @@ end %endif %changelog +* Thu Mar 7 2024 Siddhesh Poyarekar 14.0.1-0.11 +- Update License identifier in the spec file. + * Mon Mar 4 2024 Jakub Jelinek 14.0.1-0.10 - add --without-clang-plugin --without-llvm-plugin to annobin configure options From 888d966da3300940a2f8141ee02f61155fb3b9fd Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 16 Mar 2024 09:27:37 +0100 Subject: [PATCH 197/293] 14.0.1-0.11 --- .gitignore | 1 + gcc.spec | 57 +++++++++++++++++++++++++++++++++++++++++++++++++----- sources | 2 +- 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 5c766c6..a25a367 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ /gcc-14.0.1-20240208.tar.xz /gcc-14.0.1-20240217.tar.xz /gcc-14.0.1-20240228.tar.xz +/gcc-14.0.1-20240316.tar.xz diff --git a/gcc.spec b/gcc.spec index 31ddf7f..8a2057a 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20240228 -%global gitrev cfee1bffd9e3a742d713f50e3270da172d2c2b75 +%global DATE 20240316 +%global gitrev 6b39b05bec8ee5bdda84c676c8f6458bb754fe79 %global gcc_version 14.0.1 %global gcc_major 14 # Note, gcc_release must be integer, if you want to add suffixes to @@ -141,7 +141,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.11%{?dist} +Release: %{gcc_release}.12%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -3621,8 +3621,55 @@ end %endif %changelog -* Thu Mar 7 2024 Siddhesh Poyarekar 14.0.1-0.11 -- Update License identifier in the spec file. +* Sat Mar 16 2024 Jakub Jelinek 14.0.1-0.11 +- update from trunk + - PRs ada/113979, analyzer/114159, c++/92687, c++/98356, c++/98645, + c++/98688, c++/98881, c++/103994, c++/104919, c++/105512, + c++/106009, c++/110025, c++/110031, c++/110347, c++/110730, + c++/111224, c++/111710, c++/113629, c++/113802, c++/113976, + c++/113987, c++/114005, c++/114114, c++/114138, c++/114170, + c++/114229, d/112285, d/112290, d/114171, debug/113519, + debug/113777, debug/113918, debug/114015, debug/114186, + driver/114314, fortran/82943, fortran/86148, fortran/86268, + fortran/87477, fortran/89645, fortran/99065, fortran/103707, + fortran/104819, fortran/106987, fortran/110826, fortran/114001, + fortran/114141, fortran/114280, fortran/114283, ipa/113757, + libbacktrace/114201, libcc1/113977, libfortran/105437, + libfortran/114304, libgcc/114327, libgomp/114216, libstdc++/66146, + libstdc++/113960, libstdc++/114103, libstdc++/114147, + libstdc++/114152, libstdc++/114240, libstdc++/114244, + libstdc++/114279, libstdc++/114325, middle-end/95351, + middle-end/105533, middle-end/113907, middle-end/114108, + middle-end/114136, middle-end/114156, middle-end/114157, + middle-end/114196, middle-end/114209, middle-end/114299, + middle-end/114313, middle-end/114319, middle-end/114332, + modula2/102344, modula2/109969, modula2/114227, modula2/114294, + modula2/114295, modula2/114333, preprocessor/80755, + preprocessor/110558, rtl-optimization/110079, + rtl-optimization/113010, rtl-optimization/114190, + rtl-optimization/114211, sanitizer/97696, sanitizer/112709, + target/92729, target/101737, target/102250, target/108174, + target/111362, target/112337, target/112817, target/112871, + target/113001, target/113453, target/113510, target/113542, + target/113618, target/113720, target/113790, target/113915, + target/113950, target/114100, target/114116, target/114130, + target/114132, target/114184, target/114187, target/114200, + target/114202, target/114232, target/114233, target/114264, + target/114284, target/114288, target/114310, target/114339, + testsuite/96109, testsuite/108355, testsuite/113418, + testsuite/113428, tree-optimization/98238, tree-optimization/110199, + tree-optimization/113466, tree-optimization/113557, + tree-optimization/114009, tree-optimization/114071, + tree-optimization/114121, tree-optimization/114164, + tree-optimization/114192, tree-optimization/114197, + tree-optimization/114203, tree-optimization/114231, + tree-optimization/114239, tree-optimization/114246, + tree-optimization/114249, tree-optimization/114269, + tree-optimization/114278, tree-optimization/114293, + tree-optimization/114297 + +* Thu Mar 7 2024 Siddhesh Poyarekar +- update License identifier in the spec file * Mon Mar 4 2024 Jakub Jelinek 14.0.1-0.10 - add --without-clang-plugin --without-llvm-plugin to annobin configure diff --git a/sources b/sources index 5c21ada..a8c2f0e 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.0.1-20240228.tar.xz) = 56108b9092e0f657e0155abe3d22914bb4c269059ceafffc8a6c19cdb1c9de7d72f99fcd702d4c7475799be9e3d0baf7e48e631236abdb3e42d1ccfb4736b57f +SHA512 (gcc-14.0.1-20240316.tar.xz) = bd3c7d7c76af1562c5fd5d2d8d915f6e563ffa1a3cd35e0ab9115e023b7ba88d10d8952c88d6d3d214662223e986793ab83dbe15894e5966a3f37e0b640e1e70 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz) = 8a5c282852c995fabf75a8d6331db807a1acd935fd82022e00801b798fb850392d03e29cfa4aa7e3d5cfd8f48510e5e25b79a647fbec79c8566792584a0c1c49 From f10c1b3e6f1b7a71a02b2346d3a45654885c577a Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 16 Mar 2024 09:42:59 +0100 Subject: [PATCH 198/293] Fix up %changelog entries. --- gcc.spec | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc.spec b/gcc.spec index 8a2057a..d038aec 100644 --- a/gcc.spec +++ b/gcc.spec @@ -3621,7 +3621,7 @@ end %endif %changelog -* Sat Mar 16 2024 Jakub Jelinek 14.0.1-0.11 +* Sat Mar 16 2024 Jakub Jelinek 14.0.1-0.12 - update from trunk - PRs ada/113979, analyzer/114159, c++/92687, c++/98356, c++/98645, c++/98688, c++/98881, c++/103994, c++/104919, c++/105512, @@ -3671,11 +3671,11 @@ end * Thu Mar 7 2024 Siddhesh Poyarekar - update License identifier in the spec file -* Mon Mar 4 2024 Jakub Jelinek 14.0.1-0.10 +* Mon Mar 4 2024 Jakub Jelinek - add --without-clang-plugin --without-llvm-plugin to annobin configure options -* Thu Feb 29 2024 David Abdurachmanov 14.0.1-0.9 +* Thu Feb 29 2024 David Abdurachmanov - enable support for riscv64 * Wed Feb 28 2024 Jakub Jelinek 14.0.1-0.8 From a36c072c54601572e976eb556d1c10924c568625 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 28 Mar 2024 13:34:48 +0100 Subject: [PATCH 199/293] 14.0.1-0.13 --- .gitignore | 1 + gcc.spec | 38 +++++++++++++++++++++++++++++++++++--- sources | 2 +- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index a25a367..6a13c30 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ /gcc-14.0.1-20240217.tar.xz /gcc-14.0.1-20240228.tar.xz /gcc-14.0.1-20240316.tar.xz +/gcc-14.0.1-20240328.tar.xz diff --git a/gcc.spec b/gcc.spec index d038aec..01e3dc5 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20240316 -%global gitrev 6b39b05bec8ee5bdda84c676c8f6458bb754fe79 +%global DATE 20240328 +%global gitrev 55ddd689eced99251ba4bea38c076ed8d072d7ee %global gcc_version 14.0.1 %global gcc_major 14 # Note, gcc_release must be integer, if you want to add suffixes to @@ -141,7 +141,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.12%{?dist} +Release: %{gcc_release}.13%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -3621,6 +3621,38 @@ end %endif %changelog +* Thu Mar 28 2024 Jakub Jelinek 14.0.1-0.13 +- update from trunk + - PRs analyzer/109251, analyzer/110902, analyzer/110928, analyzer/111305, + analyzer/111441, analyzer/112974, analyzer/112975, analyzer/113505, + analyzer/113619, analyzer/114286, analyzer/114408, analyzer/114473, + bootstrap/114369, c++/59465, c++/100557, c++/110323, c++/111918, + c++/112631, c++/112724, c++/114349, c++/114439, c/109619, c/114364, + fortran/30802, fortran/55978, fortran/101135, fortran/103715, + fortran/107426, fortran/111781, fortran/114475, ipa/108802, + ipa/114254, libfortran/107031, libgcc/111731, libgcc/114397, + libstdc++/101228, libstdc++/113841, libstdc++/114316, + libstdc++/114359, libstdc++/114367, libstdc++/114394, + libstdc++/114400, libstdc++/114401, middle-end/111151, + middle-end/111632, middle-end/111683, middle-end/113396, + middle-end/114347, middle-end/114348, middle-end/114480, + modula2/113836, modula2/114296, modula2/114380, modula2/114418, + modula2/114422, modula2/114443, modula2/114444, modula2/114478, + rtl-optimization/101523, rtl-optimization/112415, sanitizer/111736, + target/99829, target/111822, target/112651, target/114049, + target/114150, target/114175, target/114194, target/114272, + target/114323, target/114334, target/114352, target/114407, + target/114431, testsuite/114320, testsuite/114486, + tree-optimization/96147, tree-optimization/109925, + tree-optimization/111736, tree-optimization/113727, + tree-optimization/114057, tree-optimization/114151, + tree-optimization/114322, tree-optimization/114329, + tree-optimization/114365, tree-optimization/114375, + tree-optimization/114396, tree-optimization/114405, + tree-optimization/114425, tree-optimization/114433, + tree-optimization/114464, tree-optimization/114469, + tree-optimization/114471 + * Sat Mar 16 2024 Jakub Jelinek 14.0.1-0.12 - update from trunk - PRs ada/113979, analyzer/114159, c++/92687, c++/98356, c++/98645, diff --git a/sources b/sources index a8c2f0e..df94797 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.0.1-20240316.tar.xz) = bd3c7d7c76af1562c5fd5d2d8d915f6e563ffa1a3cd35e0ab9115e023b7ba88d10d8952c88d6d3d214662223e986793ab83dbe15894e5966a3f37e0b640e1e70 +SHA512 (gcc-14.0.1-20240328.tar.xz) = 6e5948f4eda0c7f03d8c6538cedf2bd224272b5a4a2108c820da2e405c6b55c9019f71530933b8a3a81eedcbbfe8c23ad2097b28e2a37ec3751897689ce7c537 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz) = 8a5c282852c995fabf75a8d6331db807a1acd935fd82022e00801b798fb850392d03e29cfa4aa7e3d5cfd8f48510e5e25b79a647fbec79c8566792584a0c1c49 From ec9e26e795b475da32b4a5abd2f93459f7ad38a3 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 10 Apr 2024 19:07:35 +0200 Subject: [PATCH 200/293] 14.0.1-0.14 --- .gitignore | 1 + gcc.spec | 36 +++++++++++++++++++++++++++++++++--- sources | 2 +- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 6a13c30..eedb539 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /gcc-14.0.1-20240228.tar.xz /gcc-14.0.1-20240316.tar.xz /gcc-14.0.1-20240328.tar.xz +/gcc-14.0.1-20240410.tar.xz diff --git a/gcc.spec b/gcc.spec index 01e3dc5..e6f5944 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20240328 -%global gitrev 55ddd689eced99251ba4bea38c076ed8d072d7ee +%global DATE 20240410 +%global gitrev fd39223a10b74b0ccb502d5da127142eb1b87826 %global gcc_version 14.0.1 %global gcc_major 14 # Note, gcc_release must be integer, if you want to add suffixes to @@ -141,7 +141,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.13%{?dist} +Release: %{gcc_release}.14%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -3621,6 +3621,36 @@ end %endif %changelog +* Wed Apr 10 2024 Jakub Jelinek 14.0.1-0.14 +- update from trunk + - PRs analyzer/114588, bootstrap/106472, c++/91079, c++/99377, c++/100667, + c++/103825, c++/104040, c++/111132, c++/114377, c++/114462, + c++/114479, c++/114537, c++/114561, c++/114562, c++/114572, + c++/114580, c/114361, debug/114608, fortran/36337, fortran/50410, + fortran/106999, fortran/110987, fortran/112407, fortran/113885, + fortran/113956, fortran/114474, fortran/114535, gcov-profile/113765, + gcov-profile/114115, gcov-profile/114601, ipa/111571, ipa/113359, + ipa/113907, ipa/113964, libquadmath/114533, libquadmath/114623, + libstdc++/104606, libstdc++/114519, libstdc++/114633, lto/114655, + middle-end/114552, middle-end/114599, middle-end/114604, + middle-end/114627, middle-end/114628, modula2/114517, + modula2/114520, modula2/114548, modula2/114565, modula2/114617, + modula2/114648, rtl-optimization/112560, rtl-optimization/114415, + target/88309, target/101865, target/112919, target/113233, + target/113986, target/114577, target/114587, target/114590, + target/114603, target/114607, testsuite/114034, testsuite/114036, + testsuite/114307, testsuite/114614, testsuite/114642, + testsuite/114662, tree-optimization/112303, + tree-optimization/114115, tree-optimization/114480, + tree-optimization/114485, tree-optimization/114551, + tree-optimization/114555, tree-optimization/114557, + tree-optimization/114566, tree-optimization/114624 + - don't emit VEX encoded AES-NI instructions when just -maes and not -mavx + is enabled (#2272758, PR target/114576) + - fix s390* peephole2 to check mode of constant pool entries and for + 64-bit extraction from 128-bit constant pool entry extract the correct + half of the value (#2273618, PR target/114605) + * Thu Mar 28 2024 Jakub Jelinek 14.0.1-0.13 - update from trunk - PRs analyzer/109251, analyzer/110902, analyzer/110928, analyzer/111305, diff --git a/sources b/sources index df94797..23c0a2e 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.0.1-20240328.tar.xz) = 6e5948f4eda0c7f03d8c6538cedf2bd224272b5a4a2108c820da2e405c6b55c9019f71530933b8a3a81eedcbbfe8c23ad2097b28e2a37ec3751897689ce7c537 +SHA512 (gcc-14.0.1-20240410.tar.xz) = 07066563e998ce8a7f4c76274cecf4cd17e42f4b0c943e20c89a7377bfda171930d613866a4e35978d512a699a2a642aa4ef1bdc449a09b9a7d29d5983007358 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz) = 8a5c282852c995fabf75a8d6331db807a1acd935fd82022e00801b798fb850392d03e29cfa4aa7e3d5cfd8f48510e5e25b79a647fbec79c8566792584a0c1c49 From 7294abbf8682a8aa9598033ae0e4ed848de3a125 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 11 Apr 2024 17:49:48 +0200 Subject: [PATCH 201/293] 14.0.1-0.15 --- .gitignore | 1 + gcc.spec | 16 +++++++++++++--- sources | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index eedb539..5071b53 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ /gcc-14.0.1-20240316.tar.xz /gcc-14.0.1-20240328.tar.xz /gcc-14.0.1-20240410.tar.xz +/gcc-14.0.1-20240411.tar.xz diff --git a/gcc.spec b/gcc.spec index e6f5944..c0b423c 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20240410 -%global gitrev fd39223a10b74b0ccb502d5da127142eb1b87826 +%global DATE 20240411 +%global gitrev da6ad93fb1885bcdefecdf09fee4b9e901607710 %global gcc_version 14.0.1 %global gcc_major 14 # Note, gcc_release must be integer, if you want to add suffixes to @@ -141,7 +141,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.14%{?dist} +Release: %{gcc_release}.15%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -3621,6 +3621,16 @@ end %endif %changelog +* Thu Apr 11 2024 Jakub Jelinek 14.0.1-0.15 +- update from trunk + - PRs analyzer/114472, c++/114303, c++/114409, debug/112878, + fortran/106500, middle-end/110027, middle-end/114681, target/114639, + tree-optimization/109596, tree-optimization/114672 + - fix symbol version of std::__basic_file::native_handle() const + (PR libstdc++/114692) + - emit -Whardened warning even for -fhardened -fcf-protection=none + (#2273610, PR target/114606) + * Wed Apr 10 2024 Jakub Jelinek 14.0.1-0.14 - update from trunk - PRs analyzer/114588, bootstrap/106472, c++/91079, c++/99377, c++/100667, diff --git a/sources b/sources index 23c0a2e..603296d 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.0.1-20240410.tar.xz) = 07066563e998ce8a7f4c76274cecf4cd17e42f4b0c943e20c89a7377bfda171930d613866a4e35978d512a699a2a642aa4ef1bdc449a09b9a7d29d5983007358 +SHA512 (gcc-14.0.1-20240411.tar.xz) = aa7a43ed6ee1149530edc10cb14cbc7402f61d6165aa1ee89366cc6235dc9327a7a1201b3f0024a7d77e946ba095504f4d69c4abbf59de9d3abf3459298f05c9 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz) = 8a5c282852c995fabf75a8d6331db807a1acd935fd82022e00801b798fb850392d03e29cfa4aa7e3d5cfd8f48510e5e25b79a647fbec79c8566792584a0c1c49 From d818c7e53a93efe1693708367fce1a980d674501 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 25 Apr 2024 12:16:50 +0200 Subject: [PATCH 202/293] Small tweaks. --- gcc.spec | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/gcc.spec b/gcc.spec index c0b423c..95e5f0d 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1206,7 +1206,11 @@ CONFIGURE_OPTS="\ %endif %ifarch x86_64 %if 0%{?rhel} > 8 +%if 0%{?rhel} > 9 + --with-arch_64=x86-64-v3 \ +%else --with-arch_64=x86-64-v2 \ +%endif %endif --with-arch_32=x86-64 \ %endif @@ -1564,12 +1568,10 @@ for f in `find %{buildroot}%{_prefix}/include/c++/%{gcc_major}/%{gcc_target_plat done # Nuke bits/*.h.gch dirs -# 1) there is no bits/*.h header installed, so when gch file can't be -# used, compilation fails -# 2) sometimes it is hard to match the exact options used for building +# 1) sometimes it is hard to match the exact options used for building # libstdc++-v3 or they aren't desirable -# 3) there are multilib issues, conflicts etc. with this -# 4) it is huge +# 2) there are multilib issues, conflicts etc. with this +# 3) it is huge # People can always precompile on their own whatever they want, but # shipping this for everybody is unnecessary. rm -rf %{buildroot}%{_prefix}/include/c++/%{gcc_major}/%{gcc_target_platform}/bits/*.h.gch @@ -1581,6 +1583,7 @@ cp -r -p ../libstdc++-v3/doc/html ../rpm.doc/libstdc++-v3/html cp -r -p $libstdcxx_doc_builddir/html ../rpm.doc/libstdc++-v3/html/api mkdir -p %{buildroot}%{_mandir}/man3 cp -r -p $libstdcxx_doc_builddir/man/man3/* %{buildroot}%{_mandir}/man3/ +rm -f %{buildroot}%{_mandir}/man3/TEMP.* find ../rpm.doc/libstdc++-v3 -name \*~ | xargs rm %endif @@ -3621,6 +3624,11 @@ end %endif %changelog +* Thu Apr 25 2024 Jakub Jelinek +- switch to --with-arch_64=x86-64-v3 for latest RHEL +- remove obsolete reason for not shipping *.gch* files +- remove TEMP.* man page from libstdc++-docs + * Thu Apr 11 2024 Jakub Jelinek 14.0.1-0.15 - update from trunk - PRs analyzer/114472, c++/114303, c++/114409, debug/112878, From 3b5d74755602d41d380538ae59c6f31bdfc6fdc6 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 25 Apr 2024 12:19:59 +0200 Subject: [PATCH 203/293] Fix last commit. --- gcc.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc.spec b/gcc.spec index 95e5f0d..9b70f6f 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1583,7 +1583,7 @@ cp -r -p ../libstdc++-v3/doc/html ../rpm.doc/libstdc++-v3/html cp -r -p $libstdcxx_doc_builddir/html ../rpm.doc/libstdc++-v3/html/api mkdir -p %{buildroot}%{_mandir}/man3 cp -r -p $libstdcxx_doc_builddir/man/man3/* %{buildroot}%{_mandir}/man3/ -rm -f %{buildroot}%{_mandir}/man3/TEMP.* +rm -f %{buildroot}%{_mandir}/man3/TEMP* find ../rpm.doc/libstdc++-v3 -name \*~ | xargs rm %endif @@ -3627,7 +3627,7 @@ end * Thu Apr 25 2024 Jakub Jelinek - switch to --with-arch_64=x86-64-v3 for latest RHEL - remove obsolete reason for not shipping *.gch* files -- remove TEMP.* man page from libstdc++-docs +- remove TEMP* man page from libstdc++-docs * Thu Apr 11 2024 Jakub Jelinek 14.0.1-0.15 - update from trunk From e703f37eb87100895b435b9e214593b83fb72f0b Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 30 Apr 2024 13:32:03 +0200 Subject: [PATCH 204/293] 14.0.1-0.16 --- .gitignore | 2 ++ gcc.spec | 37 ++++++++++++++++++++++++++++++------- sources | 4 ++-- 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 5071b53..11d7539 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ /gcc-14.0.1-20240328.tar.xz /gcc-14.0.1-20240410.tar.xz /gcc-14.0.1-20240411.tar.xz +/gcc-14.0.1-20240430.tar.xz +/nvptx-tools-9962793f41e016318dc5eca07ae602041cf526ff.tar.xz diff --git a/gcc.spec b/gcc.spec index 9b70f6f..bccb96a 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,11 +1,11 @@ -%global DATE 20240411 -%global gitrev da6ad93fb1885bcdefecdf09fee4b9e901607710 +%global DATE 20240430 +%global gitrev 748fd0ecf84c5484621adeeaca105d7d50f0e409 %global gcc_version 14.0.1 %global gcc_major 14 # 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 0 -%global nvptx_tools_gitrev c5ad8ada3e86d96b10a9d352b7a764f801478ba6 +%global nvptx_tools_gitrev 9962793f41e016318dc5eca07ae602041cf526ff %global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global _unpackaged_files_terminate_build 0 %global _performance_build 1 @@ -141,7 +141,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.15%{?dist} +Release: %{gcc_release}.16%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -1583,7 +1583,6 @@ cp -r -p ../libstdc++-v3/doc/html ../rpm.doc/libstdc++-v3/html cp -r -p $libstdcxx_doc_builddir/html ../rpm.doc/libstdc++-v3/html/api mkdir -p %{buildroot}%{_mandir}/man3 cp -r -p $libstdcxx_doc_builddir/man/man3/* %{buildroot}%{_mandir}/man3/ -rm -f %{buildroot}%{_mandir}/man3/TEMP* find ../rpm.doc/libstdc++-v3 -name \*~ | xargs rm %endif @@ -3624,10 +3623,34 @@ end %endif %changelog -* Thu Apr 25 2024 Jakub Jelinek +* Tue Apr 30 2024 Jakub Jelinek 14.0.1-0.16 +- update from trunk and releases/gcc-14 branch + - PRs c++/93595, c++/99426, c++/106820, c++/107457, c++/109966, c++/111284, + c++/113141, c++/114078, c++/114393, c++/114426, c++/114600, + c++/114634, c++/114691, c++/114706, c++/114709, c++/114784, + c++/114795, c++/114888, c/92880, c/114780, d/111650, fortran/89462, + fortran/93678, fortran/102597, fortran/103471, fortran/103496, + fortran/113793, fortran/114739, fortran/114825, fortran/114959, + gcov-profile/114715, gcov-profile/114720, libgcc/114689, + libgcc/114755, libgcc/114762, libstdc++/93672, libstdc++/113386, + libstdc++/114750, libstdc++/114770, libstdc++/114803, + libstdc++/114863, lto/113208, lto/114574, middle-end/112938, + middle-end/114753, modula2/112893, modula2/114745, modula2/114807, + modula2/114811, modula2/114836, other/114738, preprocessor/114748, + rtl-optimization/114768, sanitizer/114687, sanitizer/114743, + target/110621, target/112431, target/112432, target/114416, + target/114668, target/114676, target/114696, target/114714, + target/114741, target/114752, target/114783, target/114794, + target/114810, target/114837, target/114861, target/114885, + testsuite/113706, testsuite/114744, testsuite/114768, + tree-optimization/114403, tree-optimization/114666, + tree-optimization/114733, tree-optimization/114736, + tree-optimization/114749, tree-optimization/114769, + tree-optimization/114787, tree-optimization/114792, + tree-optimization/114799, tree-optimization/114832, + tree-optimization/114883 - switch to --with-arch_64=x86-64-v3 for latest RHEL - remove obsolete reason for not shipping *.gch* files -- remove TEMP* man page from libstdc++-docs * Thu Apr 11 2024 Jakub Jelinek 14.0.1-0.15 - update from trunk diff --git a/sources b/sources index 603296d..0f35e71 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.0.1-20240411.tar.xz) = aa7a43ed6ee1149530edc10cb14cbc7402f61d6165aa1ee89366cc6235dc9327a7a1201b3f0024a7d77e946ba095504f4d69c4abbf59de9d3abf3459298f05c9 +SHA512 (gcc-14.0.1-20240430.tar.xz) = 849f653d155037ee047679f7ae64755e567f7a25d095a6cdb9660a4f872b74905b95553a00d7a28e2309e554149e295d3479a6c2068518b2ce6597464a6a7a74 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d -SHA512 (nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz) = 8a5c282852c995fabf75a8d6331db807a1acd935fd82022e00801b798fb850392d03e29cfa4aa7e3d5cfd8f48510e5e25b79a647fbec79c8566792584a0c1c49 +SHA512 (nvptx-tools-9962793f41e016318dc5eca07ae602041cf526ff.tar.xz) = 97ef04cf721f562f6859b948debf1a2b5a5c7970b60281d3162535669c9173f0e73585650b6798e2844860b08405252db074488418be167a9a0c4883e62f9432 From d6fcb33cdc956988dd2c0b757bd4aa3fa616ca8e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 30 Apr 2024 13:32:34 +0200 Subject: [PATCH 205/293] 14.0.1-0.16 --- gcc.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/gcc.spec b/gcc.spec index bccb96a..1e20d45 100644 --- a/gcc.spec +++ b/gcc.spec @@ -3625,6 +3625,7 @@ end %changelog * Tue Apr 30 2024 Jakub Jelinek 14.0.1-0.16 - update from trunk and releases/gcc-14 branch + - GCC 14.1.0-rc1 - PRs c++/93595, c++/99426, c++/106820, c++/107457, c++/109966, c++/111284, c++/113141, c++/114078, c++/114393, c++/114426, c++/114600, c++/114634, c++/114691, c++/114706, c++/114709, c++/114784, From 20746dd85fbe810c19ef7e6dea76d3a110bb4a4d Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Fri, 3 May 2024 14:49:35 -0400 Subject: [PATCH 206/293] 14.0.1-0.17 Enable hardening and configure with --enable-host-pie --enable-host-bind-now on RHEL --- gcc.spec | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 1e20d45..3a3ec20 100644 --- a/gcc.spec +++ b/gcc.spec @@ -8,9 +8,11 @@ %global nvptx_tools_gitrev 9962793f41e016318dc5eca07ae602041cf526ff %global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global _unpackaged_files_terminate_build 0 +%if 0%{?fedora:1} %global _performance_build 1 # Hardening slows the compiler way too much. %undefine _hardened_build +%endif %undefine _auto_set_build_flags %if 0%{?fedora} > 27 || 0%{?rhel} > 7 # Until annobin is fixed (#1519165). @@ -141,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.16%{?dist} +Release: %{gcc_release}.17%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -1270,6 +1272,9 @@ CONFIGURE_OPTS="\ %ifnarch %{arm} --with-build-config=bootstrap-lto --enable-link-serialization=1 \ %endif +%endif +%if 0%{?rhel:1} + --enable-host-pie --enable-host-bind-now \ %endif " @@ -3623,6 +3628,10 @@ end %endif %changelog +* Fri May 3 2024 Marek Polacek 14.0.1-0.17 +- enable hardening and configure with --enable-host-pie --enable-host-bind-now + on RHEL + * Tue Apr 30 2024 Jakub Jelinek 14.0.1-0.16 - update from trunk and releases/gcc-14 branch - GCC 14.1.0-rc1 From 6c8229ada42bdb571a07808a831cbba04c05ff16 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Fri, 3 May 2024 16:09:15 -0400 Subject: [PATCH 207/293] Don't build offload-amdgcn on RHEL --- gcc.spec | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gcc.spec b/gcc.spec index 3a3ec20..4fd1e02 100644 --- a/gcc.spec +++ b/gcc.spec @@ -116,11 +116,15 @@ %else %global build_offload_nvptx 0 %endif +%if 0%{?rhel:1} +%global build_offload_amdgcn 0 +%else %ifarch x86_64 %global build_offload_amdgcn 1 %else %global build_offload_amdgcn 0 %endif +%endif %if 0%{?fedora} < 32 && 0%{?rhel} < 8 %ifarch s390x %global multilib_32_arch s390 @@ -3631,6 +3635,7 @@ end * Fri May 3 2024 Marek Polacek 14.0.1-0.17 - enable hardening and configure with --enable-host-pie --enable-host-bind-now on RHEL +- don't build offload-amdgcn on RHEL * Tue Apr 30 2024 Jakub Jelinek 14.0.1-0.16 - update from trunk and releases/gcc-14 branch From 13569d0f04dee6cd42abc72fa19f32cb0fe32762 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Tue, 7 May 2024 13:20:04 -0400 Subject: [PATCH 208/293] Don't require rocm-runtime on RHEL --- gcc.spec | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/gcc.spec b/gcc.spec index 4fd1e02..e91ca62 100644 --- a/gcc.spec +++ b/gcc.spec @@ -116,15 +116,11 @@ %else %global build_offload_nvptx 0 %endif -%if 0%{?rhel:1} -%global build_offload_amdgcn 0 -%else %ifarch x86_64 %global build_offload_amdgcn 1 %else %global build_offload_amdgcn 0 %endif -%endif %if 0%{?fedora} < 32 && 0%{?rhel} < 8 %ifarch s390x %global multilib_32_arch s390 @@ -581,7 +577,9 @@ installed separately. %package -n libgomp-offload-amdgcn Summary: GCC OpenMP v4.5 plugin for offloading to AMD GCN Requires: libgomp = %{version}-%{release} +%if 0%{?fedora:1} Requires: rocm-runtime >= 6.0.0 +%endif %description -n libgomp-offload-amdgcn This package contains libgomp plugin for offloading to AMD ROCm capable @@ -3635,7 +3633,7 @@ end * Fri May 3 2024 Marek Polacek 14.0.1-0.17 - enable hardening and configure with --enable-host-pie --enable-host-bind-now on RHEL -- don't build offload-amdgcn on RHEL +- don't require rocm-runtime on RHEL * Tue Apr 30 2024 Jakub Jelinek 14.0.1-0.16 - update from trunk and releases/gcc-14 branch From 551363d0e23d0cd09294e22ad091704eb85a358c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 8 May 2024 10:47:09 +0200 Subject: [PATCH 209/293] 14.1.1-1 --- gcc.spec | 21 +++++++++++++++------ gcc14-libstdc++-docs.patch | 4 ++-- update-gcc.sh | 2 +- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/gcc.spec b/gcc.spec index e91ca62..d326248 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20240430 -%global gitrev 748fd0ecf84c5484621adeeaca105d7d50f0e409 -%global gcc_version 14.0.1 +%global DATE 20240508 +%global gitrev 9ae733ecd3cd76d7e2f99385520783b01ab7e5dd +%global gcc_version 14.1.1 %global gcc_major 14 # 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 0 +%global gcc_release 1 %global nvptx_tools_gitrev 9962793f41e016318dc5eca07ae602041cf526ff %global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global _unpackaged_files_terminate_build 0 @@ -143,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.17%{?dist} +Release: %{gcc_release}%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -3630,7 +3630,16 @@ end %endif %changelog -* Fri May 3 2024 Marek Polacek 14.0.1-0.17 +* Wed May 8 2024 Jakub Jelinek 14.1.1-1 +- update from releases/gcc-14 branch + - GCC 14.1.0 release + - PRs analyzer/111475, c++/89224, c++/114856, c++/114889, c++/114935, + ipa/92606, middle-end/114734, middle-end/114907, modula2/113768, + modula2/114133, modula2/114929, rtl-optimization/114924, + sanitizer/114956, tree-optimization/114876, + tree-optimization/114921, tree-optimization/114965 + +* Fri May 3 2024 Marek Polacek - enable hardening and configure with --enable-host-pie --enable-host-bind-now on RHEL - don't require rocm-runtime on RHEL diff --git a/gcc14-libstdc++-docs.patch b/gcc14-libstdc++-docs.patch index 662cc64..b774935 100644 --- a/gcc14-libstdc++-docs.patch +++ b/gcc14-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 14.0.1 ++ Release 14.1.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 14.0.1 release, ++ for the 14.1.1 release, + online for each GCC release and diff --git a/update-gcc.sh b/update-gcc.sh index 9804331..f1aa644 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -3,5 +3,5 @@ git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 d=`date --iso | sed 's/-//g'` -git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-14.0.1-$d/ $1 | xz -9e > gcc-14.0.1-$d.tar.xz +git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-14.1.1-$d/ $1 | xz -9e > gcc-14.1.1-$d.tar.xz rm -rf gcc-dir.tmp From 8e7867c2d3dbf7225ed0bbc8e17ad71cf2bbccbd Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 8 May 2024 10:49:53 +0200 Subject: [PATCH 210/293] 14.1.1-1 --- .gitignore | 1 + sources | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 11d7539..d2ceee3 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ /gcc-14.0.1-20240411.tar.xz /gcc-14.0.1-20240430.tar.xz /nvptx-tools-9962793f41e016318dc5eca07ae602041cf526ff.tar.xz +/gcc-14.1.1-20240508.tar.xz diff --git a/sources b/sources index 0f35e71..c27d6cc 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.0.1-20240430.tar.xz) = 849f653d155037ee047679f7ae64755e567f7a25d095a6cdb9660a4f872b74905b95553a00d7a28e2309e554149e295d3479a6c2068518b2ce6597464a6a7a74 +SHA512 (gcc-14.1.1-20240508.tar.xz) = 2c0106d8a92ea76dacd78bcb2ac988d3662f15aa846772f5c3b1c93aa77f3a5e4cc601a4ece208ab414e8075d1fef49ebe66dea658b24ab9594618717356a8d7 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-9962793f41e016318dc5eca07ae602041cf526ff.tar.xz) = 97ef04cf721f562f6859b948debf1a2b5a5c7970b60281d3162535669c9173f0e73585650b6798e2844860b08405252db074488418be167a9a0c4883e62f9432 From 7b746958a358bd7252d130f41b6a3d5893bf8736 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Fri, 17 May 2024 09:50:05 -0400 Subject: [PATCH 211/293] 14.1.1-2 --- gcc.spec | 7 ++++- gcc14-pr101523.patch | 68 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 gcc14-pr101523.patch diff --git a/gcc.spec b/gcc.spec index d326248..0d6b4bd 100644 --- a/gcc.spec +++ b/gcc.spec @@ -4,7 +4,7 @@ %global gcc_major 14 # 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 1 +%global gcc_release 2 %global nvptx_tools_gitrev 9962793f41e016318dc5eca07ae602041cf526ff %global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global _unpackaged_files_terminate_build 0 @@ -310,6 +310,7 @@ Patch8: gcc14-no-add-needed.patch Patch9: gcc14-Wno-format-security.patch Patch10: gcc14-rh1574936.patch Patch11: gcc14-d-shared-libphobos.patch +Patch12: gcc14-pr101523.patch Patch50: isl-rh2155127.patch @@ -910,6 +911,7 @@ so that there cannot be any synchronization problems. %patch -P10 -p0 -b .rh1574936~ %endif %patch -P11 -p0 -b .d-shared-libphobos~ +%patch -P12 -p1 -b .pr101523~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3630,6 +3632,9 @@ end %endif %changelog +* Thu May 16 2024 Marek Polacek 14.1.1-2 +- fix a combinatorial explosion in combine (PR rtl-optimization/101523) + * Wed May 8 2024 Jakub Jelinek 14.1.1-1 - update from releases/gcc-14 branch - GCC 14.1.0 release diff --git a/gcc14-pr101523.patch b/gcc14-pr101523.patch new file mode 100644 index 0000000..618f97e --- /dev/null +++ b/gcc14-pr101523.patch @@ -0,0 +1,68 @@ +Based on Richi's patch: + +~~ +The following avoids re-walking and re-combining the instructions +between i2 and i3 when the pattern of i2 doesn't change. + +Bootstrap and regtest running ontop of a reversal of +r14-9692-g839bc42772ba7a. + +It brings down memory use frmo 9GB to 400MB and compile-time from +80s to 3.5s. r14-9692-g839bc42772ba7a does better in both metrics +but has shown code generation regressions across acrchitectures. + + PR rtl-optimization/101523 + * combine.cc (try_combine): When the pattern of i2 doesn't + change do not re-start combining at i2 or an earlier insn which + had links or notes added. +~~ +But, since the patch affects code generation (for instance, +libstdc++-v3/src/c++17/floating_from_chars.o), we limit the bailing out +only when I2 hasn't been changed 1000x. I've measured how many times +at most is I2 unchanged during a bootstrap + regtest. +x86: 134 +aarch64: 736 (gimple-match-1.cc) +s390x: 635 (gimple-match-*) +ppc64le: 620 (gimple-match-*) +while certain pathological testcases trigger it more than 10,000 times. +With the limit in place this patch doesn't affect common code. + +--- a/gcc/combine.cc ++++ b/gcc/combine.cc +@@ -92,6 +92,11 @@ along with GCC; see the file COPYING3. If not see + #include "function-abi.h" + #include "rtlanal.h" + ++/* Number of times I2 didn't change in try_combine. Used to prevent a ++ combinatorial explosion. */ ++ ++static int combine_unchanged; ++ + /* Number of attempts to combine instructions in this function. */ + + static int combine_attempts; +@@ -4196,6 +4201,10 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, + adjust_for_new_dest (i3); + } + ++ bool i2_unchanged = false; ++ if (rtx_equal_p (newi2pat, PATTERN (i2))) ++ i2_unchanged = true; ++ + /* We now know that we can do this combination. Merge the insns and + update the status of registers and LOG_LINKS. */ + +@@ -4762,6 +4771,13 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, + combine_successes++; + undo_commit (); + ++ if (i2_unchanged) ++ { ++ if (combine_unchanged == 1000) ++ return i3; ++ ++combine_unchanged; ++ } ++ + rtx_insn *ret = newi2pat ? i2 : i3; + if (added_links_insn && DF_INSN_LUID (added_links_insn) < DF_INSN_LUID (ret)) + ret = added_links_insn; From 150f0ee9153fa1e1095372a69025e27124ac51b6 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Fri, 17 May 2024 10:04:53 -0400 Subject: [PATCH 212/293] 14.1.1-2 --- gcc14-pr101523.patch | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gcc14-pr101523.patch b/gcc14-pr101523.patch index 618f97e..7ca8467 100644 --- a/gcc14-pr101523.patch +++ b/gcc14-pr101523.patch @@ -41,6 +41,14 @@ With the limit in place this patch doesn't affect common code. /* Number of attempts to combine instructions in this function. */ static int combine_attempts; +@@ -1127,6 +1132,7 @@ combine_instructions (rtx_insn *f, unsigned int nregs) + return false; + + combine_attempts = 0; ++ combine_unchanged = 0; + combine_merges = 0; + combine_extras = 0; + combine_successes = 0; @@ -4196,6 +4201,10 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, adjust_for_new_dest (i3); } From face1955f510433d16f93e8665e1ca232d6ecdf4 Mon Sep 17 00:00:00 2001 From: Siddhesh Poyarekar Date: Tue, 21 May 2024 13:37:31 -0400 Subject: [PATCH 213/293] Update new SPDX identifiers from all outstanding issues. --- gcc.spec | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/gcc.spec b/gcc.spec index 0d6b4bd..4fd0c37 100644 --- a/gcc.spec +++ b/gcc.spec @@ -4,7 +4,7 @@ %global gcc_major 14 # 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 9962793f41e016318dc5eca07ae602041cf526ff %global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global _unpackaged_files_terminate_build 0 @@ -150,14 +150,7 @@ Release: %{gcc_release}%{?dist} # libcody: Apache-2.0 # libphobos/src/etc/c/curl.d: curl # All of the remaining license soup is in newlib. -# Outstanding new SPDX identifier requests: -# https://github.com/spdx/license-list-XML/issues/2395 -# https://github.com/spdx/license-list-XML/issues/2406 -# https://github.com/spdx/license-list-XML/issues/2408 -# https://github.com/spdx/license-list-XML/issues/2409 -# https://github.com/spdx/license-list-XML/issues/2410 -# https://github.com/spdx/license-list-XML/issues/2411 -License: GPL-3.0-or-later AND LGPL-3.0-or-later AND (GPL-3.0-or-later WITH GCC-exception-3.1) AND (GPL-3.0-or-later WITH Texinfo-exception) AND (LGPL-2.1-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GNU-compiler-exception) AND BSL-1.0 AND GFDL-1.3-or-later AND Linux-man-pages-copyleft-2-para AND SunPro AND BSD-1-Clause AND BSD-2-Clause AND BSD-2-Clause-Views AND BSD-3-Clause AND BSD-4-Clause AND BSD-Source-Code AND Zlib AND MIT AND Apache-2.0 AND (Apache-2.0 WITH LLVM-Exception) AND ZPL-2.1 AND ISC AND LicenseRef-Fedora-Public-Domain AND HP-1986 AND curl AND Martin-Birgmeier AND HPND-Markus-Kuhn +License: GPL-3.0-or-later AND LGPL-3.0-or-later AND (GPL-3.0-or-later WITH GCC-exception-3.1) AND (GPL-3.0-or-later WITH Texinfo-exception) AND (LGPL-2.1-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GNU-compiler-exception) AND BSL-1.0 AND GFDL-1.3-or-later AND Linux-man-pages-copyleft-2-para AND SunPro AND BSD-1-Clause AND BSD-2-Clause AND BSD-2-Clause-Views AND BSD-3-Clause AND BSD-4-Clause AND BSD-Source-Code AND Zlib AND MIT AND Apache-2.0 AND (Apache-2.0 WITH LLVM-Exception) AND ZPL-2.1 AND ISC AND LicenseRef-Fedora-Public-Domain AND HP-1986 AND curl AND Martin-Birgmeier AND HPND-Markus-Kuhn AND dtoa AND SMLNJ AND AMD-newlib AND OAR AND HPND-merchantability-variant AND HPND-Intel # The source for this package was pulled from upstream's vcs. # %%{gitrev} is some commit from the @@ -3632,6 +3625,9 @@ end %endif %changelog +* Tue May 21 2024 Siddhesh Poyarekar 14.1.1-3 +- Update new SPDX identifiers from all outstanding issues. + * Thu May 16 2024 Marek Polacek 14.1.1-2 - fix a combinatorial explosion in combine (PR rtl-optimization/101523) From c6f99ecd741667cf8aee5977a46e347a6aff4b59 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 22 May 2024 11:58:56 +0200 Subject: [PATCH 214/293] gcc-14.1.1-4 --- .gitignore | 1 + gcc.spec | 32 ++++++++++++++++++++++---------- gcc14-pr101523.patch | 18 +++++++++--------- sources | 2 +- update-gcc.sh | 37 +++++++++++++++++++++++++++++++++---- 5 files changed, 66 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index d2ceee3..d8006cd 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ /gcc-14.0.1-20240430.tar.xz /nvptx-tools-9962793f41e016318dc5eca07ae602041cf526ff.tar.xz /gcc-14.1.1-20240508.tar.xz +/gcc-14.1.1-20240522.tar.xz diff --git a/gcc.spec b/gcc.spec index 4fd0c37..564d6a7 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20240508 -%global gitrev 9ae733ecd3cd76d7e2f99385520783b01ab7e5dd +%global DATE 20240522 +%global gitrev e6b72839728d26b6a83955eeaef2962cc00308bb %global gcc_version 14.1.1 %global gcc_major 14 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 3 +%global gcc_release 4 %global nvptx_tools_gitrev 9962793f41e016318dc5eca07ae602041cf526ff %global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global _unpackaged_files_terminate_build 0 @@ -151,15 +151,16 @@ Release: %{gcc_release}%{?dist} # libphobos/src/etc/c/curl.d: curl # All of the remaining license soup is in newlib. License: GPL-3.0-or-later AND LGPL-3.0-or-later AND (GPL-3.0-or-later WITH GCC-exception-3.1) AND (GPL-3.0-or-later WITH Texinfo-exception) AND (LGPL-2.1-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GNU-compiler-exception) AND BSL-1.0 AND GFDL-1.3-or-later AND Linux-man-pages-copyleft-2-para AND SunPro AND BSD-1-Clause AND BSD-2-Clause AND BSD-2-Clause-Views AND BSD-3-Clause AND BSD-4-Clause AND BSD-Source-Code AND Zlib AND MIT AND Apache-2.0 AND (Apache-2.0 WITH LLVM-Exception) AND ZPL-2.1 AND ISC AND LicenseRef-Fedora-Public-Domain AND HP-1986 AND curl AND Martin-Birgmeier AND HPND-Markus-Kuhn AND dtoa AND SMLNJ AND AMD-newlib AND OAR AND HPND-merchantability-variant AND HPND-Intel - # The source for this package was pulled from upstream's vcs. # %%{gitrev} is some commit from the # https://gcc.gnu.org/git/?p=gcc.git;h=refs/vendors/redhat/heads/gcc-%%{gcc_major}-branch -# branch. Use the following commands to generate the tarball: -# git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp -# git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin %%{gitrev} -# git --git-dir=gcc-dir.tmp/.git archive --prefix=%%{name}-%%{version}-%%{DATE}/ %%{gitrev} | xz -9e > %%{name}-%%{version}-%%{DATE}.tar.xz -# rm -rf gcc-dir.tmp +# branch. Use the following command to generate the tarball: +# ./update-gcc.sh %%{gitrev} +# optionally if say /usr/src/gcc/.git/ is an existing gcc git clone +# ./update-gcc.sh %%{gitrev} /usr/src/gcc/.git/ +# to speed up the clone operations. Note, %%{gitrev} macro in +# gcc.spec shouldn't be updated before running the script, the script +# will update it, fill in some %%changelog details etc. Source0: gcc-%{version}-%{DATE}.tar.xz # The source for nvptx-tools package was pulled from upstream's vcs. Use the # following commands to generate the tarball: @@ -3625,8 +3626,19 @@ end %endif %changelog +* Wed May 22 2024 Jakub Jelinek 14.1.1-4 +- update from releases/gcc-14 branch + - PRs c++/114901, c++/114903, c++/114974, c++/114994, c++/115114, + c++/115139, driver/114980, fortran/114827, fortran/114874, + fortran/115039, libstdc++/107800, libstdc++/114866, libstdc++/114891, + libstdc++/115015, libstdc++/115063, libstdc++/115119, + middle-end/114931, sanitizer/115172, target/69374, target/112959, + target/114968, target/114975, target/114981, target/115065, + target/115069, tree-optimization/114998, tree-optimization/115143, + tree-optimization/115152, tree-optimization/115154 + * Tue May 21 2024 Siddhesh Poyarekar 14.1.1-3 -- Update new SPDX identifiers from all outstanding issues. +- update new SPDX identifiers from all outstanding issues * Thu May 16 2024 Marek Polacek 14.1.1-2 - fix a combinatorial explosion in combine (PR rtl-optimization/101523) diff --git a/gcc14-pr101523.patch b/gcc14-pr101523.patch index 7ca8467..8f3b47b 100644 --- a/gcc14-pr101523.patch +++ b/gcc14-pr101523.patch @@ -7,9 +7,9 @@ between i2 and i3 when the pattern of i2 doesn't change. Bootstrap and regtest running ontop of a reversal of r14-9692-g839bc42772ba7a. -It brings down memory use frmo 9GB to 400MB and compile-time from +It brings down memory use from 9GB to 400MB and compile-time from 80s to 3.5s. r14-9692-g839bc42772ba7a does better in both metrics -but has shown code generation regressions across acrchitectures. +but has shown code generation regressions across architectures. PR rtl-optimization/101523 * combine.cc (try_combine): When the pattern of i2 doesn't @@ -36,7 +36,7 @@ With the limit in place this patch doesn't affect common code. +/* Number of times I2 didn't change in try_combine. Used to prevent a + combinatorial explosion. */ + -+static int combine_unchanged; ++static int combine_i2_unchanged; + /* Number of attempts to combine instructions in this function. */ @@ -45,7 +45,7 @@ With the limit in place this patch doesn't affect common code. return false; combine_attempts = 0; -+ combine_unchanged = 0; ++ combine_i2_unchanged = 0; combine_merges = 0; combine_extras = 0; combine_successes = 0; @@ -53,9 +53,9 @@ With the limit in place this patch doesn't affect common code. adjust_for_new_dest (i3); } -+ bool i2_unchanged = false; ++ bool i2_i2_unchanged = false; + if (rtx_equal_p (newi2pat, PATTERN (i2))) -+ i2_unchanged = true; ++ i2_i2_unchanged = true; + /* We now know that we can do this combination. Merge the insns and update the status of registers and LOG_LINKS. */ @@ -64,11 +64,11 @@ With the limit in place this patch doesn't affect common code. combine_successes++; undo_commit (); -+ if (i2_unchanged) ++ if (i2_i2_unchanged) + { -+ if (combine_unchanged == 1000) ++ if (combine_i2_unchanged == 1000) + return i3; -+ ++combine_unchanged; ++ ++combine_i2_unchanged; + } + rtx_insn *ret = newi2pat ? i2 : i3; diff --git a/sources b/sources index c27d6cc..10e470e 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.1.1-20240508.tar.xz) = 2c0106d8a92ea76dacd78bcb2ac988d3662f15aa846772f5c3b1c93aa77f3a5e4cc601a4ece208ab414e8075d1fef49ebe66dea658b24ab9594618717356a8d7 +SHA512 (gcc-14.1.1-20240522.tar.xz) = 01cff9fc6de1568b90b2c74f5ae21eb1c06b3e3d5361f05482fd981accbfbf64512773930424fdd9411192fc3f8c5d4f63fba6bad13d7ad4fc3d606b60e56d4c SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-9962793f41e016318dc5eca07ae602041cf526ff.tar.xz) = 97ef04cf721f562f6859b948debf1a2b5a5c7970b60281d3162535669c9173f0e73585650b6798e2844860b08405252db074488418be167a9a0c4883e62f9432 diff --git a/update-gcc.sh b/update-gcc.sh index f1aa644..93160c9 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -1,7 +1,36 @@ #!/bin/sh -[ -d gcc-dir.tmp ] && echo gcc-dir.tmp already exists && exit 1 -git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp -git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 +if [ "$#" -eq 0 ]; then + echo "Usage: ./update-gcc.sh gcc/redhat/heads/gcc-NN-branch_commit_hash [git_reference_dir_to_speed_up]" + exit 1 +fi +export LC_ALL=C +if ! [ -f gcc.spec ]; then echo Must be run in the directory with gcc.spec file.; exit 1; fi +if [ -d gcc-dir.tmp ]; then echo gcc-dir.tmp already exists.; exit 1; fi +v=`sed -n 's/^%global gcc_version //p' gcc.spec` +p=`sed -n 's/^%global gitrev //p' gcc.spec` +h=$1 +if [ "$#" -ge 2 ]; then + git clone --dissociate --reference $2 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp +else + git clone git://gcc.gnu.org/git/gcc.git gcc-dir.tmp +fi +git --git-dir=gcc-dir.tmp/.git fetch origin $h d=`date --iso | sed 's/-//g'` -git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-14.1.1-$d/ $1 | xz -9e > gcc-14.1.1-$d.tar.xz +cd gcc-dir.tmp +git diff $p..$h > P1 +git log --format=%B `git log --format='%ae %H' $p..$h | awk '/^gccadmin@gcc.gnu.org/{print $2;exit 0}'`..$h > P2 +diff -up /dev/null P2 >> P1 +sed -n 's,^+[[:blank:]]\+PR \([a-z0-9+-]\+/[0-9]\+\)$,\1,p' P1 | sed 's/ - .*$//;s/[: ;.]//g' | LC_ALL=C sort -u -t / -k 1,1 -k 2,2n > P3 +> P4 +for i in `cat P3`; do if grep -F $i ../gcc.spec >/dev/null; then echo $i already recorded.; else echo $i >> P4; fi; done +case "$v" in + *.0.*) echo "- update from trunk" > P5;; + *) echo "- update from releases/gcc-`echo $v | sed 's/\..*$//'` branch" > P5;; +esac +echo `cat P4` | sed 's/ /, /g' | fold -w 71 -s | sed '1s/^/ - PRs /;2,$s/^/ /;s/, $/,/' >> P5 +echo >> P5 +cd .. +sed -i -e '/^%global gitrev /s/ [0-9a-f]\+$/ '$h'/;/^%global DATE /s/ [0-9]\+$/ '$d'/;/^%changelog$/r gcc-dir.tmp/P5' gcc.spec +git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-$v-$d/ $h | xz -9e > gcc-$v-$d.tar.xz rm -rf gcc-dir.tmp +fedpkg new-sources gcc-$v-$d.tar.xz `sed 's/SHA512 (\(.*\)) = [0-9a-f]\+$/\1/' sources | grep -v '^gcc-'` From 73893f69355d52055dd41c7a9241267b019c452d Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 7 Jun 2024 11:06:03 +0200 Subject: [PATCH 215/293] 14.1.1-5 --- .gitignore | 2 ++ gcc.spec | 21 +++++++++++++++++---- sources | 4 ++-- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index d8006cd..c60b5a8 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,5 @@ /nvptx-tools-9962793f41e016318dc5eca07ae602041cf526ff.tar.xz /gcc-14.1.1-20240508.tar.xz /gcc-14.1.1-20240522.tar.xz +/gcc-14.1.1-20240607.tar.xz +/nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz diff --git a/gcc.spec b/gcc.spec index 564d6a7..94e56d9 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,11 +1,11 @@ -%global DATE 20240522 -%global gitrev e6b72839728d26b6a83955eeaef2962cc00308bb +%global DATE 20240607 +%global gitrev 1de1e03e8bd3490b53f6fe454f7a48ddc1c839f2 %global gcc_version 14.1.1 %global gcc_major 14 # 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 4 -%global nvptx_tools_gitrev 9962793f41e016318dc5eca07ae602041cf526ff +%global gcc_release 5 +%global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804 %global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global _unpackaged_files_terminate_build 0 %if 0%{?fedora:1} @@ -3626,6 +3626,19 @@ end %endif %changelog +* Fri Jun 7 2024 Jakub Jelinek 14.1.1-5 +- update from releases/gcc-14 branch + - PRs ada/115270, c/114493, c++/105320, c++/114275, c++/114868, c++/114983, + c++/115187, fortran/86100, fortran/115150, libstdc++/109849, + libstdc++/111641, libstdc++/114940, libstdc++/115099, + libstdc++/115269, libstdc++/115335, middle-end/108789, + middle-end/115352, modula2/114886, rtl-optimization/114902, + rtl-optimization/115038, rtl-optimization/115092, target/113719, + target/115169, target/115297, target/115317, target/115324, + tree-optimization/115149, tree-optimization/115192, + tree-optimization/115197, tree-optimization/115232, + tree-optimization/115307, tree-optimization/115337 + * Wed May 22 2024 Jakub Jelinek 14.1.1-4 - update from releases/gcc-14 branch - PRs c++/114901, c++/114903, c++/114974, c++/114994, c++/115114, diff --git a/sources b/sources index 10e470e..5d32c89 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.1.1-20240522.tar.xz) = 01cff9fc6de1568b90b2c74f5ae21eb1c06b3e3d5361f05482fd981accbfbf64512773930424fdd9411192fc3f8c5d4f63fba6bad13d7ad4fc3d606b60e56d4c +SHA512 (gcc-14.1.1-20240607.tar.xz) = 3b873c977deebdb33eec0a174bd7eb743834bec5a70676398e8982bb30fad09a820a9c9bc812793cf1a302a7665e09b8212843a4a71e5d01ad911de6d1de5e15 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d -SHA512 (nvptx-tools-9962793f41e016318dc5eca07ae602041cf526ff.tar.xz) = 97ef04cf721f562f6859b948debf1a2b5a5c7970b60281d3162535669c9173f0e73585650b6798e2844860b08405252db074488418be167a9a0c4883e62f9432 +SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 467c94cde8682e3bb5285faaa9417ec1df01fb6e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 20 Jun 2024 13:48:15 +0200 Subject: [PATCH 216/293] 14.1.1-6 --- .gitignore | 1 + gcc.spec | 15 ++++++++++++--- sources | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index c60b5a8..b4a8347 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ /gcc-14.1.1-20240522.tar.xz /gcc-14.1.1-20240607.tar.xz /nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz +/gcc-14.1.1-20240620.tar.xz diff --git a/gcc.spec b/gcc.spec index 94e56d9..4f373b2 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20240607 -%global gitrev 1de1e03e8bd3490b53f6fe454f7a48ddc1c839f2 +%global DATE 20240620 +%global gitrev 640bb0fa76a23712bd9b0518a00c3c4ed59a775d %global gcc_version 14.1.1 %global gcc_major 14 # 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 5 +%global gcc_release 6 %global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804 %global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global _unpackaged_files_terminate_build 0 @@ -3626,6 +3626,15 @@ end %endif %changelog +* Thu Jun 20 2024 Jakub Jelinek 14.1.1-6 +- update from releases/gcc-14 branch + - PRs ada/114398, ada/114708, c/115290, c++/99678, c++/115239, c++/115283, + c++/115378, c++/115511, driver/115440, fortran/83865, jit/115442, + libstdc++/114958, libstdc++/115247, libstdc++/115308, + rtl-optimization/115281, target/109549, target/111343, target/115253, + target/115353, target/115360, tree-optimization/115544 + - fix s390x ICEs with vector permutations from memory (#2293207, #2292501) + * Fri Jun 7 2024 Jakub Jelinek 14.1.1-5 - update from releases/gcc-14 branch - PRs ada/115270, c/114493, c++/105320, c++/114275, c++/114868, c++/114983, diff --git a/sources b/sources index 5d32c89..e9611fd 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.1.1-20240607.tar.xz) = 3b873c977deebdb33eec0a174bd7eb743834bec5a70676398e8982bb30fad09a820a9c9bc812793cf1a302a7665e09b8212843a4a71e5d01ad911de6d1de5e15 +SHA512 (gcc-14.1.1-20240620.tar.xz) = 0082429bdd2b91b1c78daa372db18f111ce0ea38a836992c5d316bf4d504c876302d8225a32fffa1c2ca1ef3c2068a388f409237c085d0d518b5f30e64d7572c SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 5551c1491d79b411a6440ed560ae2371ae32644a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 27 Jun 2024 08:01:05 +0000 Subject: [PATCH 217/293] Replace homegrown byte compilation with %py_byte_compile Resolves https://bugzilla.redhat.com/show_bug.cgi?id=2294381. Note that the 'touch -r' calls should not be necessary since https://fedoraproject.org/wiki/Changes/ReproducibleBuildsClampMtimes. --- gcc.spec | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/gcc.spec b/gcc.spec index 4f373b2..f8466bb 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1682,18 +1682,8 @@ fi mkdir -p %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib} mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++*gdb.py* \ %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}/ -pushd ../libstdc++-v3/python -for i in `find . -name \*.py`; do - touch -r $i %{buildroot}%{_prefix}/share/gcc-%{gcc_major}/python/$i -done -touch -r hook.in %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}/libstdc++*gdb.py -popd -for f in `find %{buildroot}%{_prefix}/share/gcc-%{gcc_major}/python/ \ - %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}/ -name \*.py`; do - r=${f/$RPM_BUILD_ROOT/} - %{__python3} -c 'import py_compile; py_compile.compile("'$f'", dfile="'$r'")' - %{__python3} -O -c 'import py_compile; py_compile.compile("'$f'", dfile="'$r'")' -done +%py_byte_compile %{python3} %{buildroot}%{_prefix}/share/gcc-%{gcc_major}/python/ +%py_byte_compile %{python3} %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}/ rm -f $FULLEPATH/libgccjit.so cp -a objlibgccjit/gcc/libgccjit.so* %{buildroot}%{_prefix}/%{_lib}/ From 4b5f87d836da79f7322915b8a9e2e4f08b828d0c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 1 Jul 2024 10:54:56 +0200 Subject: [PATCH 218/293] 14.1.1-7 --- .gitignore | 1 + gcc.spec | 15 ++++++++++++--- sources | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index b4a8347..b76275e 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ /gcc-14.1.1-20240607.tar.xz /nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz /gcc-14.1.1-20240620.tar.xz +/gcc-14.1.1-20240701.tar.xz diff --git a/gcc.spec b/gcc.spec index f8466bb..5f587ab 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20240620 -%global gitrev 640bb0fa76a23712bd9b0518a00c3c4ed59a775d +%global DATE 20240701 +%global gitrev 6eada54ba865eeb9aabfcfbc106c3fbff7abe98a %global gcc_version 14.1.1 %global gcc_major 14 # 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 6 +%global gcc_release 7 %global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804 %global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global _unpackaged_files_terminate_build 0 @@ -3616,6 +3616,15 @@ end %endif %changelog +* Mon Jul 1 2024 Jakub Jelinek 14.1.1-7 +- update from releases/gcc-14 branch + - PRs c/114930, c/115502, c/115587, c++/115198, c++/115358, c++/115504, + c++/115624, fortran/114019, fortran/115390, libstdc++/115454, + libstdc++/115575, libstdc++/115668, target/106069, target/114846, + target/115342, target/115355, target/115608, tree-optimization/115278, + tree-optimization/115508 +- revert the August 2016 workaround for python bytecode compilation (#2294381) + * Thu Jun 20 2024 Jakub Jelinek 14.1.1-6 - update from releases/gcc-14 branch - PRs ada/114398, ada/114708, c/115290, c++/99678, c++/115239, c++/115283, diff --git a/sources b/sources index e9611fd..11e157a 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.1.1-20240620.tar.xz) = 0082429bdd2b91b1c78daa372db18f111ce0ea38a836992c5d316bf4d504c876302d8225a32fffa1c2ca1ef3c2068a388f409237c085d0d518b5f30e64d7572c +SHA512 (gcc-14.1.1-20240701.tar.xz) = 1b68d02a9e6ddf7556a802ef672a9f3874faf5a66c0befc164838cc9fcdff10d5db4eea4a9f7e8312ccc881d41a696431d4d5d6486ef5d653da7c7fba945de6f SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 5032483c400bd62b6cd1b5d21b902c6457f40ab6 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 18 Jul 2024 00:14:52 +0000 Subject: [PATCH 219/293] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- gcc.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 5f587ab..e312faa 100644 --- a/gcc.spec +++ b/gcc.spec @@ -143,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist} +Release: %{gcc_release}%{?dist}.1 # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -3616,6 +3616,9 @@ end %endif %changelog +* Thu Jul 18 2024 Fedora Release Engineering - 14.1.1-7.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Mon Jul 1 2024 Jakub Jelinek 14.1.1-7 - update from releases/gcc-14 branch - PRs c/114930, c/115502, c/115587, c++/115198, c++/115358, c++/115504, From b100864ab2efe1f398e9b47012498e057ebbfb3c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 1 Aug 2024 20:59:14 +0200 Subject: [PATCH 220/293] 14.2.1-1 --- .gitignore | 1 + gcc.spec | 43 +++++++++++++++++++++++++++++++------- gcc14-libstdc++-docs.patch | 4 ++-- sources | 2 +- 4 files changed, 40 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index b76275e..052e49a 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ /nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz /gcc-14.1.1-20240620.tar.xz /gcc-14.1.1-20240701.tar.xz +/gcc-14.2.1-20240801.tar.xz diff --git a/gcc.spec b/gcc.spec index e312faa..215bb29 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20240701 -%global gitrev 6eada54ba865eeb9aabfcfbc106c3fbff7abe98a -%global gcc_version 14.1.1 +%global DATE 20240801 +%global gitrev 43d4666d3d94934f11857a2fb9122c575be81801 +%global gcc_version 14.2.1 %global gcc_major 14 # 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 7 +%global gcc_release 1 %global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804 %global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global _unpackaged_files_terminate_build 0 @@ -143,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist}.1 +Release: %{gcc_release}%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -3616,8 +3616,37 @@ end %endif %changelog -* Thu Jul 18 2024 Fedora Release Engineering - 14.1.1-7.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild +* Thu Aug 1 2024 Jakub Jelinek 14.2.1-1 +- update from releases/gcc-14 branch + - GCC 14.2 release + - PRs analyzer/114899, c++/99241, c++/99242, c++/104981, c++/106760, + c++/111890, c++/115165, c++/115476, c++/115550, c++/115561, + c++/115583, c++/115623, c++/115754, c++/115783, c++/115865, + c++/115897, c++/115900, c++/115986, fortran/59104, fortran/84006, + fortran/93635, fortran/98534, fortran/99798, fortran/100027, + fortran/103115, fortran/103312, fortran/113363, fortran/115700, + ipa/111613, ipa/113291, ipa/113787, ipa/114207, ipa/115033, + ipa/115277, ipa/116055, libstdc++/113376, libstdc++/114387, + libstdc++/115399, libstdc++/115482, libstdc++/115522, + libstdc++/115585, libstdc++/115807, libstdc++/115854, + libstdc++/116070, middle-end/115527, middle-end/115836, + middle-end/115887, pch/115312, rtl-optimization/115049, + rtl-optimization/115565, target/87376, target/88236, target/97367, + target/98762, target/105090, target/113715, target/114759, + target/114890, target/114936, target/114988, target/115068, + target/115153, target/115188, target/115351, target/115389, + target/115456, target/115457, target/115459, target/115475, + target/115526, target/115554, target/115562, target/115591, + target/115611, target/115691, target/115725, target/115726, + target/115752, target/115763, target/115840, target/115872, + target/115978, target/115981, target/115988, target/116035, + testsuite/115826, testsuite/116061, tree-optimization/113673, + tree-optimization/115382, tree-optimization/115646, + tree-optimization/115669, tree-optimization/115694, + tree-optimization/115701, tree-optimization/115723, + tree-optimization/115841, tree-optimization/115843, + tree-optimization/115867, tree-optimization/115868, + tree-optimization/116034, tree-optimization/116057 * Mon Jul 1 2024 Jakub Jelinek 14.1.1-7 - update from releases/gcc-14 branch diff --git a/gcc14-libstdc++-docs.patch b/gcc14-libstdc++-docs.patch index b774935..0e0e0f9 100644 --- a/gcc14-libstdc++-docs.patch +++ b/gcc14-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 14.1.1 ++ Release 14.2.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 14.1.1 release, ++ for the 14.2.1 release, + online for each GCC release and diff --git a/sources b/sources index 11e157a..7eb2b89 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.1.1-20240701.tar.xz) = 1b68d02a9e6ddf7556a802ef672a9f3874faf5a66c0befc164838cc9fcdff10d5db4eea4a9f7e8312ccc881d41a696431d4d5d6486ef5d653da7c7fba945de6f +SHA512 (gcc-14.2.1-20240801.tar.xz) = b21f0bfd5767d0ecb9c08ba3e3a605a841d4c6a6008bf9dd8b4c4da366d7e733600eb21095768bda91e5df6536c398bf4a941e44577aef7586e95f1d148a214f SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 0425b2638c5296d474013d0276c369b19f5c8494 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 5 Sep 2024 12:47:04 +0200 Subject: [PATCH 221/293] 14.2.1-2 --- .gitignore | 1 + gcc.spec | 20 +++++++++++++++++--- sources | 2 +- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 052e49a..a1be907 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ /gcc-14.1.1-20240620.tar.xz /gcc-14.1.1-20240701.tar.xz /gcc-14.2.1-20240801.tar.xz +/gcc-14.2.1-20240905.tar.xz diff --git a/gcc.spec b/gcc.spec index 215bb29..55465e5 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20240801 -%global gitrev 43d4666d3d94934f11857a2fb9122c575be81801 +%global DATE 20240905 +%global gitrev b30927153ae4cc052bfa564cc3d302eaddaa2c1b %global gcc_version 14.2.1 %global gcc_major 14 # 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 1 +%global gcc_release 2 %global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804 %global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global _unpackaged_files_terminate_build 0 @@ -3616,6 +3616,20 @@ end %endif %changelog +* Thu Sep 5 2024 Jakub Jelinek 14.2.1-2 +- update from releases/gcc-14 branch + - PRs c++/88313, c++/112288, c++/115296, c++/115656, c++/116071, c++/116219, + c++/116223, c++/116327, c++/116384, fortran/108889, fortran/116530, + libstdc++/113663, libstdc++/116038, libstdc++/116381, + libstdc++/116549, lto/116361, target/85624, target/112108, + target/113384, target/115464, target/116007, target/116033, + target/116043, target/116174, target/116189, target/116287, + target/116295, target/116390, target/116407, target/116512, + testsuite/70150, tree-optimization/113281, tree-optimization/116156, + tree-optimization/116224, tree-optimization/116501 + - add hint #34 to aarch64 sanitizer asm stubs if -mbranch-protection=standard + (#2306353) + * Thu Aug 1 2024 Jakub Jelinek 14.2.1-1 - update from releases/gcc-14 branch - GCC 14.2 release diff --git a/sources b/sources index 7eb2b89..ee9c0c0 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.2.1-20240801.tar.xz) = b21f0bfd5767d0ecb9c08ba3e3a605a841d4c6a6008bf9dd8b4c4da366d7e733600eb21095768bda91e5df6536c398bf4a941e44577aef7586e95f1d148a214f +SHA512 (gcc-14.2.1-20240905.tar.xz) = a1cb68b386633e86c65dedef88a10890f3d2fffb35ecc775bfe87caa0bd6a135858578311e3d8d4a9b09e65c0b90757e01aa081953866fcaf13242a96b697920 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From dc203d1b77666d6375f6e5e73dfa9d49a33392a3 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 12 Sep 2024 20:49:36 +0200 Subject: [PATCH 222/293] 14.2.1-3 --- .gitignore | 1 + gcc.spec | 15 +++++-- gcc14-pr116621.patch | 100 +++++++++++++++++++++++++++++++++++++++++++ sources | 2 +- 4 files changed, 114 insertions(+), 4 deletions(-) create mode 100644 gcc14-pr116621.patch diff --git a/.gitignore b/.gitignore index a1be907..e67d87e 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ /gcc-14.1.1-20240701.tar.xz /gcc-14.2.1-20240801.tar.xz /gcc-14.2.1-20240905.tar.xz +/gcc-14.2.1-20240912.tar.xz diff --git a/gcc.spec b/gcc.spec index 55465e5..8b0d09d 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20240905 -%global gitrev b30927153ae4cc052bfa564cc3d302eaddaa2c1b +%global DATE 20240912 +%global gitrev c7a1c1a4bf73b3cb4943c428085fe5cbb433cde4 %global gcc_version 14.2.1 %global gcc_major 14 # 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 87ce9dc5999e5fca2e1d3478a30888d9864c9804 %global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global _unpackaged_files_terminate_build 0 @@ -305,6 +305,7 @@ Patch9: gcc14-Wno-format-security.patch Patch10: gcc14-rh1574936.patch Patch11: gcc14-d-shared-libphobos.patch Patch12: gcc14-pr101523.patch +Patch13: gcc14-pr116621.patch Patch50: isl-rh2155127.patch @@ -906,6 +907,7 @@ so that there cannot be any synchronization problems. %endif %patch -P11 -p0 -b .d-shared-libphobos~ %patch -P12 -p1 -b .pr101523~ +%patch -P13 -p0 -b .pr116621~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3616,6 +3618,13 @@ end %endif %changelog +* Thu Sep 12 2024 Jakub Jelinek 14.2.1-3 +- update from releases/gcc-14 branch + - PRs c++/116276, c++/116320, c++/116449, c++/116567, c++/116606, + c++/116636, ipa/116410, libstdc++/116159, libstdc++/116641, + lto/116614, target/116617 +- backport x86_64 va_arg fix (PR target/116621) + * Thu Sep 5 2024 Jakub Jelinek 14.2.1-2 - update from releases/gcc-14 branch - PRs c++/88313, c++/112288, c++/115296, c++/115656, c++/116071, c++/116219, diff --git a/gcc14-pr116621.patch b/gcc14-pr116621.patch new file mode 100644 index 0000000..caa9e63 --- /dev/null +++ b/gcc14-pr116621.patch @@ -0,0 +1,100 @@ +Author: H.J. Lu +Date: Fri Sep 6 05:24:07 2024 -0700 + +x86-64: Don't use temp for argument in a TImode register + +Don't use temp for a PARALLEL BLKmode argument of an EXPR_LIST expression +in a TImode register. Otherwise, the TImode variable will be put in +the GPR save area which guarantees only 8-byte alignment. + + PR target/116621 + * config/i386/i386.cc (ix86_gimplify_va_arg): Don't use temp for + a PARALLEL BLKmode container of an EXPR_LIST expression in a + TImode register. + + * gcc.target/i386/pr116621.c: New test. + +Signed-off-by: H.J. Lu + +--- gcc/config/i386/i386.cc ++++ gcc/config/i386/i386.cc +@@ -4908,13 +4908,31 @@ ix86_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p, + + examine_argument (nat_mode, type, 0, &needed_intregs, &needed_sseregs); + +- need_temp = (!REG_P (container) ++ bool container_in_reg = false; ++ if (REG_P (container)) ++ container_in_reg = true; ++ else if (GET_CODE (container) == PARALLEL ++ && GET_MODE (container) == BLKmode ++ && XVECLEN (container, 0) == 1) ++ { ++ /* Check if it is a PARALLEL BLKmode container of an EXPR_LIST ++ expression in a TImode register. In this case, temp isn't ++ needed. Otherwise, the TImode variable will be put in the ++ GPR save area which guarantees only 8-byte alignment. */ ++ rtx x = XVECEXP (container, 0, 0); ++ if (GET_CODE (x) == EXPR_LIST ++ && REG_P (XEXP (x, 0)) ++ && XEXP (x, 1) == const0_rtx) ++ container_in_reg = true; ++ } ++ ++ need_temp = (!container_in_reg + && ((needed_intregs && TYPE_ALIGN (type) > 64) + || TYPE_ALIGN (type) > 128)); + + /* In case we are passing structure, verify that it is consecutive block + on the register save area. If not we need to do moves. */ +- if (!need_temp && !REG_P (container)) ++ if (!need_temp && !container_in_reg) + { + /* Verify that all registers are strictly consecutive */ + if (SSE_REGNO_P (REGNO (XEXP (XVECEXP (container, 0, 0), 0)))) +--- gcc/testsuite/gcc.target/i386/pr116621.c ++++ gcc/testsuite/gcc.target/i386/pr116621.c +@@ -0,0 +1,43 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++#include ++#include ++ ++union S8302 ++{ ++ union ++ { ++ double b; ++ int c; ++ } a; ++ long double d; ++ unsigned short int f[5]; ++}; ++ ++union S8302 s8302; ++extern void check8302va (int i, ...); ++ ++int ++main (void) ++{ ++ memset (&s8302, '\0', sizeof (s8302)); ++ s8302.a.b = -221438.250000; ++ check8302va (1, s8302); ++ return 0; ++} ++ ++__attribute__((noinline, noclone)) ++void ++check8302va (int z, ...) ++{ ++ union S8302 arg, *p; ++ va_list ap; ++ ++ __builtin_va_start (ap, z); ++ p = &s8302; ++ arg = __builtin_va_arg (ap, union S8302); ++ if (p->a.b != arg.a.b) ++ __builtin_abort (); ++ __builtin_va_end (ap); ++} diff --git a/sources b/sources index ee9c0c0..0010d99 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.2.1-20240905.tar.xz) = a1cb68b386633e86c65dedef88a10890f3d2fffb35ecc775bfe87caa0bd6a135858578311e3d8d4a9b09e65c0b90757e01aa081953866fcaf13242a96b697920 +SHA512 (gcc-14.2.1-20240912.tar.xz) = 9a36fd5c2211f348bf18e887861c9123745bfa40837a5f92b1cd0ee0820edb7ef59094caac06870f00ef0d0305f674a5c23cc5aec940132cf581cd18c0368bb2 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From d021080ea76b57941380df631582f8109f8ede6f Mon Sep 17 00:00:00 2001 From: Siddhesh Poyarekar Date: Tue, 24 Sep 2024 22:02:48 -0400 Subject: [PATCH 223/293] Default tuning to power 10 for RHEL10 and later --- gcc.spec | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 8b0d09d..f6cf2ec 100644 --- a/gcc.spec +++ b/gcc.spec @@ -4,7 +4,7 @@ %global gcc_major 14 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 3 +%global gcc_release 4 %global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804 %global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global _unpackaged_files_terminate_build 0 @@ -1190,7 +1190,11 @@ CONFIGURE_OPTS="\ %endif %ifarch ppc64le %if 0%{?rhel} >= 9 +%if 0%{?rhel} >= 10 + --with-cpu-32=power9 --with-tune-32=power10 --with-cpu-64=power9 --with-tune-64=power10 \ +%else --with-cpu-32=power9 --with-tune-32=power9 --with-cpu-64=power9 --with-tune-64=power9 \ +%endif %else --with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 \ %endif @@ -3618,6 +3622,9 @@ end %endif %changelog +* Wed Sep 25 2024 Siddhesh Poyarekar 14.2.1-4 +- Default tuning to power 10 for RHEL10 and later. + * Thu Sep 12 2024 Jakub Jelinek 14.2.1-3 - update from releases/gcc-14 branch - PRs c++/116276, c++/116320, c++/116449, c++/116567, c++/116606, From a706a6fd254c547da3492deb3b80a3855fc6dd5c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 30 Sep 2024 18:28:17 +0200 Subject: [PATCH 224/293] Use https:// instead of git:// in git URLs. --- gcc.spec | 2 +- update-gcc.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc.spec b/gcc.spec index f6cf2ec..15a2c71 100644 --- a/gcc.spec +++ b/gcc.spec @@ -171,7 +171,7 @@ Source0: gcc-%{version}-%{DATE}.tar.xz Source1: nvptx-tools-%{nvptx_tools_gitrev}.tar.xz # The source for nvptx-newlib package was pulled from upstream's vcs. Use the # following commands to generate the tarball: -# git clone git://sourceware.org/git/newlib-cygwin.git newlib-cygwin-dir.tmp +# git clone https://sourceware.org/git/newlib-cygwin.git newlib-cygwin-dir.tmp # git --git-dir=newlib-cygwin-dir.tmp/.git archive --prefix=newlib-cygwin-%%{newlib_cygwin_gitrev}/ %%{newlib_cygwin_gitrev} ":(exclude)newlib/libc/sys/linux/include/rpc/*.[hx]" | xz -9e > newlib-cygwin-%%{newlib_cygwin_gitrev}.tar.xz # rm -rf newlib-cygwin-dir.tmp Source2: newlib-cygwin-%{newlib_cygwin_gitrev}.tar.xz diff --git a/update-gcc.sh b/update-gcc.sh index 93160c9..47d7d70 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -10,9 +10,9 @@ v=`sed -n 's/^%global gcc_version //p' gcc.spec` p=`sed -n 's/^%global gitrev //p' gcc.spec` h=$1 if [ "$#" -ge 2 ]; then - git clone --dissociate --reference $2 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp + git clone --dissociate --reference $2 https://gcc.gnu.org/git/gcc.git gcc-dir.tmp else - git clone git://gcc.gnu.org/git/gcc.git gcc-dir.tmp + git clone https://gcc.gnu.org/git/gcc.git gcc-dir.tmp fi git --git-dir=gcc-dir.tmp/.git fetch origin $h d=`date --iso | sed 's/-//g'` From 8cd5593dfc446499c94c4385edd31bda436e7d9c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 25 Oct 2024 17:45:57 +0200 Subject: [PATCH 225/293] 14.2.1-5 --- .gitignore | 1 + gcc.spec | 36 ++++++++++++++++++++++++++++++++---- sources | 2 +- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index e67d87e..457da17 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ /gcc-14.2.1-20240801.tar.xz /gcc-14.2.1-20240905.tar.xz /gcc-14.2.1-20240912.tar.xz +/gcc-14.2.1-20241025.tar.xz diff --git a/gcc.spec b/gcc.spec index 15a2c71..185f371 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20240912 -%global gitrev c7a1c1a4bf73b3cb4943c428085fe5cbb433cde4 +%global DATE 20241025 +%global gitrev 3f6cf880bdadb4404d5540bad605ceec58261359 %global gcc_version 14.2.1 %global gcc_major 14 # 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 4 +%global gcc_release 5 %global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804 %global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global _unpackaged_files_terminate_build 0 @@ -3622,8 +3622,36 @@ end %endif %changelog +* Fri Oct 25 2024 Jakub Jelinek 14.2.1-5 +- update from releases/gcc-14 branch + - PRs ada/114593, ada/114636, ada/114640, ada/115535, ada/116190, + ada/116430, ada/116551, c/116726, c/117230, c++/96097, c++/115361, + c++/115987, c++/116369, c++/116418, c++/116424, c++/116476, + c++/116492, c++/116534, c++/116676, c++/116678, c++/116929, + c++/117054, c++/117107, c++/117259, c++/117274, fortran/84868, + fortran/100273, ipa/109985, ipa/115815, libstdc++/37475, + libstdc++/108619, libstdc++/116529, libstdc++/116754, + libstdc++/116755, libstdc++/116777, libstdc++/116857, + libstdc++/117085, libstdc++/117094, libstdc++/117135, + middle-end/115110, middle-end/115426, middle-end/115641, + middle-end/116258, middle-end/116259, middle-end/116454, + middle-end/116891, middle-end/116898, middle-end/116899, + middle-end/117086, middle-end/117249, sanitizer/117209, target/115860, + target/116237, target/116627, target/116738, target/116839, + target/116883, target/116921, target/116953, target/116962, + target/117116, target/117159, target/117240, testsuite/116238, + tree-optimization/116166, tree-optimization/116258, + tree-optimization/116274, tree-optimization/116290, + tree-optimization/116380, tree-optimization/116460, + tree-optimization/116481, tree-optimization/116585, + tree-optimization/116610, tree-optimization/116768, + tree-optimization/116850, tree-optimization/116879, + tree-optimization/116907, tree-optimization/116982, + tree-optimization/116990, tree-optimization/117041, + tree-optimization/117104 + * Wed Sep 25 2024 Siddhesh Poyarekar 14.2.1-4 -- Default tuning to power 10 for RHEL10 and later. +- default tuning to power 10 for RHEL10 and later * Thu Sep 12 2024 Jakub Jelinek 14.2.1-3 - update from releases/gcc-14 branch diff --git a/sources b/sources index 0010d99..27042d2 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.2.1-20240912.tar.xz) = 9a36fd5c2211f348bf18e887861c9123745bfa40837a5f92b1cd0ee0820edb7ef59094caac06870f00ef0d0305f674a5c23cc5aec940132cf581cd18c0368bb2 +SHA512 (gcc-14.2.1-20241025.tar.xz) = 1729619d7c0ebdb6801f692f213ccdd2f393d28d2c2acc3cedc897992c0996d45d760e9f4bd4d6f3ef16c7343a1e24c21c45989fa6c08ba1556fa8c9a5662d5f SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 3c526fa26bef8d41eeeef476e14bb5fa2c421aa4 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 25 Oct 2024 17:59:54 +0200 Subject: [PATCH 226/293] 14.2.1-5 --- gcc.spec | 2 - gcc14-pr116621.patch | 100 ------------------------------------------- 2 files changed, 102 deletions(-) delete mode 100644 gcc14-pr116621.patch diff --git a/gcc.spec b/gcc.spec index 185f371..6b499c8 100644 --- a/gcc.spec +++ b/gcc.spec @@ -305,7 +305,6 @@ Patch9: gcc14-Wno-format-security.patch Patch10: gcc14-rh1574936.patch Patch11: gcc14-d-shared-libphobos.patch Patch12: gcc14-pr101523.patch -Patch13: gcc14-pr116621.patch Patch50: isl-rh2155127.patch @@ -907,7 +906,6 @@ so that there cannot be any synchronization problems. %endif %patch -P11 -p0 -b .d-shared-libphobos~ %patch -P12 -p1 -b .pr101523~ -%patch -P13 -p0 -b .pr116621~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 diff --git a/gcc14-pr116621.patch b/gcc14-pr116621.patch deleted file mode 100644 index caa9e63..0000000 --- a/gcc14-pr116621.patch +++ /dev/null @@ -1,100 +0,0 @@ -Author: H.J. Lu -Date: Fri Sep 6 05:24:07 2024 -0700 - -x86-64: Don't use temp for argument in a TImode register - -Don't use temp for a PARALLEL BLKmode argument of an EXPR_LIST expression -in a TImode register. Otherwise, the TImode variable will be put in -the GPR save area which guarantees only 8-byte alignment. - - PR target/116621 - * config/i386/i386.cc (ix86_gimplify_va_arg): Don't use temp for - a PARALLEL BLKmode container of an EXPR_LIST expression in a - TImode register. - - * gcc.target/i386/pr116621.c: New test. - -Signed-off-by: H.J. Lu - ---- gcc/config/i386/i386.cc -+++ gcc/config/i386/i386.cc -@@ -4908,13 +4908,31 @@ ix86_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p, - - examine_argument (nat_mode, type, 0, &needed_intregs, &needed_sseregs); - -- need_temp = (!REG_P (container) -+ bool container_in_reg = false; -+ if (REG_P (container)) -+ container_in_reg = true; -+ else if (GET_CODE (container) == PARALLEL -+ && GET_MODE (container) == BLKmode -+ && XVECLEN (container, 0) == 1) -+ { -+ /* Check if it is a PARALLEL BLKmode container of an EXPR_LIST -+ expression in a TImode register. In this case, temp isn't -+ needed. Otherwise, the TImode variable will be put in the -+ GPR save area which guarantees only 8-byte alignment. */ -+ rtx x = XVECEXP (container, 0, 0); -+ if (GET_CODE (x) == EXPR_LIST -+ && REG_P (XEXP (x, 0)) -+ && XEXP (x, 1) == const0_rtx) -+ container_in_reg = true; -+ } -+ -+ need_temp = (!container_in_reg - && ((needed_intregs && TYPE_ALIGN (type) > 64) - || TYPE_ALIGN (type) > 128)); - - /* In case we are passing structure, verify that it is consecutive block - on the register save area. If not we need to do moves. */ -- if (!need_temp && !REG_P (container)) -+ if (!need_temp && !container_in_reg) - { - /* Verify that all registers are strictly consecutive */ - if (SSE_REGNO_P (REGNO (XEXP (XVECEXP (container, 0, 0), 0)))) ---- gcc/testsuite/gcc.target/i386/pr116621.c -+++ gcc/testsuite/gcc.target/i386/pr116621.c -@@ -0,0 +1,43 @@ -+/* { dg-do run } */ -+/* { dg-options "-O2" } */ -+ -+#include -+#include -+ -+union S8302 -+{ -+ union -+ { -+ double b; -+ int c; -+ } a; -+ long double d; -+ unsigned short int f[5]; -+}; -+ -+union S8302 s8302; -+extern void check8302va (int i, ...); -+ -+int -+main (void) -+{ -+ memset (&s8302, '\0', sizeof (s8302)); -+ s8302.a.b = -221438.250000; -+ check8302va (1, s8302); -+ return 0; -+} -+ -+__attribute__((noinline, noclone)) -+void -+check8302va (int z, ...) -+{ -+ union S8302 arg, *p; -+ va_list ap; -+ -+ __builtin_va_start (ap, z); -+ p = &s8302; -+ arg = __builtin_va_arg (ap, union S8302); -+ if (p->a.b != arg.a.b) -+ __builtin_abort (); -+ __builtin_va_end (ap); -+} From 02c34dfa3627ef05d676d30e152a66e77b58529b Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 4 Nov 2024 16:02:03 +0100 Subject: [PATCH 227/293] 14.2.1-6 --- .gitignore | 1 + gcc.spec | 13 ++++++++++--- sources | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 457da17..a0bbeb8 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ /gcc-14.2.1-20240905.tar.xz /gcc-14.2.1-20240912.tar.xz /gcc-14.2.1-20241025.tar.xz +/gcc-14.2.1-20241104.tar.xz diff --git a/gcc.spec b/gcc.spec index 6b499c8..e74627b 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20241025 -%global gitrev 3f6cf880bdadb4404d5540bad605ceec58261359 +%global DATE 20241104 +%global gitrev b84ce6a258e01f6559a1855b5f1d1ba4e69a927b %global gcc_version 14.2.1 %global gcc_major 14 # 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 5 +%global gcc_release 6 %global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804 %global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global _unpackaged_files_terminate_build 0 @@ -3620,6 +3620,13 @@ end %endif %changelog +* Mon Nov 4 2024 Jakub Jelinek 14.2.1-6 +- update from releases/gcc-14 branch + - PRs fortran/79685, jit/117275, libstdc++/117321, libstdc++/117406, + middle-end/117354, rtl-optimization/116783, rtl-optimization/117327, + target/116415, target/117296, target/117318, tree-optimization/107467, + tree-optimization/117287 + * Fri Oct 25 2024 Jakub Jelinek 14.2.1-5 - update from releases/gcc-14 branch - PRs ada/114593, ada/114636, ada/114640, ada/115535, ada/116190, diff --git a/sources b/sources index 27042d2..df7802d 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.2.1-20241025.tar.xz) = 1729619d7c0ebdb6801f692f213ccdd2f393d28d2c2acc3cedc897992c0996d45d760e9f4bd4d6f3ef16c7343a1e24c21c45989fa6c08ba1556fa8c9a5662d5f +SHA512 (gcc-14.2.1-20241104.tar.xz) = 4a453e1b7e2712fd2a12d28cf2aaf8e76c789f7e747218cdf867eaca84e381305bf119c7db873c5c3f0981657dbefcded77ad74a0960034b95232d906e4b02d0 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 806e75093dd637270102e8d2896b9c6c40015166 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 5 Dec 2024 20:07:10 +0100 Subject: [PATCH 228/293] Fix up #2330362 --- gcc.spec | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index e74627b..56d6445 100644 --- a/gcc.spec +++ b/gcc.spec @@ -931,7 +931,7 @@ LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi sed -i -e '/ldp_fusion/s/Init(1)/Init(0)/' gcc/config/aarch64/aarch64.opt sed -i -e 's/Common Driver Var(flag_report_bug)/& Init(1)/' gcc/common.opt -sed -i -e 's/context->report_bug = false;/context->report_bug = true;/' gcc/diagnostic.cc +sed -i -e 's/m_report_bug = false;/m_report_bug = true;/' gcc/diagnostic.cc %ifarch ppc if [ -d libstdc++-v3/config/abi/post/powerpc64-linux-gnu ]; then @@ -3620,6 +3620,8 @@ end %endif %changelog +- fix up -freport-bug default (#2330362) + * Mon Nov 4 2024 Jakub Jelinek 14.2.1-6 - update from releases/gcc-14 branch - PRs fortran/79685, jit/117275, libstdc++/117321, libstdc++/117406, From 82653994cffc3120d34d3f49c6e3b01ff824f8c1 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 5 Dec 2024 20:15:14 +0100 Subject: [PATCH 229/293] Also revert -mearly-ldp-fusion and -mlate-ldp-fusion default hack --- gcc.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc.spec b/gcc.spec index 56d6445..52dd90a 100644 --- a/gcc.spec +++ b/gcc.spec @@ -928,8 +928,6 @@ cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi -sed -i -e '/ldp_fusion/s/Init(1)/Init(0)/' gcc/config/aarch64/aarch64.opt - sed -i -e 's/Common Driver Var(flag_report_bug)/& Init(1)/' gcc/common.opt sed -i -e 's/m_report_bug = false;/m_report_bug = true;/' gcc/diagnostic.cc @@ -3621,6 +3619,8 @@ end %changelog - fix up -freport-bug default (#2330362) +- revert -mearly-ldp-fusion and -mlate-ldp-fusion default to enabled on + aarch64 to match upstream * Mon Nov 4 2024 Jakub Jelinek 14.2.1-6 - update from releases/gcc-14 branch From e48becc49a47cc974fdae2dec9c325c4286b93b5 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 9 Jan 2025 09:20:53 +0100 Subject: [PATCH 230/293] gcc-15.0.0-0.3 --- .gitignore | 29 +- gcc.spec | 651 +++--------------- gcc14-pr101523.patch | 76 -- ...y.patch => gcc15-Wno-format-security.patch | 18 +- ...os.patch => gcc15-d-shared-libphobos.patch | 0 ...tch => gcc15-fortran-fdec-duplicates.patch | 0 gcc14-hack.patch => gcc15-hack.patch | 88 ++- gcc14-isl-dl.patch => gcc15-isl-dl.patch | 8 +- gcc14-isl-dl2.patch => gcc15-isl-dl2.patch | 8 +- ...atch => gcc15-libgomp-omp_h-multilib.patch | 0 ...+-docs.patch => gcc15-libstdc++-docs.patch | 10 +- ...path.patch => gcc15-libtool-no-rpath.patch | 0 ...-needed.patch => gcc15-no-add-needed.patch | 0 gcc15-pr118206.patch | 581 ++++++++++++++++ gcc15-pr118362.patch | 17 + ...4-rh1574936.patch => gcc15-rh1574936.patch | 0 ...atch => gcc15-sparc-config-detection.patch | 0 sources | 4 +- 18 files changed, 805 insertions(+), 685 deletions(-) delete mode 100644 gcc14-pr101523.patch rename gcc14-Wno-format-security.patch => gcc15-Wno-format-security.patch (80%) rename gcc14-d-shared-libphobos.patch => gcc15-d-shared-libphobos.patch (100%) rename gcc14-fortran-fdec-duplicates.patch => gcc15-fortran-fdec-duplicates.patch (100%) rename gcc14-hack.patch => gcc15-hack.patch (57%) rename gcc14-isl-dl.patch => gcc15-isl-dl.patch (99%) rename gcc14-isl-dl2.patch => gcc15-isl-dl2.patch (89%) rename gcc14-libgomp-omp_h-multilib.patch => gcc15-libgomp-omp_h-multilib.patch (100%) rename gcc14-libstdc++-docs.patch => gcc15-libstdc++-docs.patch (74%) rename gcc14-libtool-no-rpath.patch => gcc15-libtool-no-rpath.patch (100%) rename gcc14-no-add-needed.patch => gcc15-no-add-needed.patch (100%) create mode 100644 gcc15-pr118206.patch create mode 100644 gcc15-pr118362.patch rename gcc14-rh1574936.patch => gcc15-rh1574936.patch (100%) rename gcc14-sparc-config-detection.patch => gcc15-sparc-config-detection.patch (100%) diff --git a/.gitignore b/.gitignore index a0bbeb8..b074da3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,29 +1,4 @@ -/gcc-14.0.1-20240113.tar.xz /isl-0.24.tar.bz2 -/newlib-cygwin-5f15d7c5817b07a6b18cbab17342c95cb7b42be4.tar.xz -/nvptx-tools-c5ad8ada3e86d96b10a9d352b7a764f801478ba6.tar.xz -/gcc-14.0.1-20240118.tar.xz -/newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz -/gcc-14.0.1-20240125.tar.xz -/gcc-14.0.1-20240127.tar.xz -/gcc-14.0.1-20240207.tar.xz -/gcc-14.0.1-20240208.tar.xz -/gcc-14.0.1-20240217.tar.xz -/gcc-14.0.1-20240228.tar.xz -/gcc-14.0.1-20240316.tar.xz -/gcc-14.0.1-20240328.tar.xz -/gcc-14.0.1-20240410.tar.xz -/gcc-14.0.1-20240411.tar.xz -/gcc-14.0.1-20240430.tar.xz -/nvptx-tools-9962793f41e016318dc5eca07ae602041cf526ff.tar.xz -/gcc-14.1.1-20240508.tar.xz -/gcc-14.1.1-20240522.tar.xz -/gcc-14.1.1-20240607.tar.xz /nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz -/gcc-14.1.1-20240620.tar.xz -/gcc-14.1.1-20240701.tar.xz -/gcc-14.2.1-20240801.tar.xz -/gcc-14.2.1-20240905.tar.xz -/gcc-14.2.1-20240912.tar.xz -/gcc-14.2.1-20241025.tar.xz -/gcc-14.2.1-20241104.tar.xz +/gcc-15.0.0-20250109.tar.xz +/newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz diff --git a/gcc.spec b/gcc.spec index 52dd90a..8656fd3 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,12 +1,12 @@ -%global DATE 20241104 -%global gitrev b84ce6a258e01f6559a1855b5f1d1ba4e69a927b -%global gcc_version 14.2.1 -%global gcc_major 14 +%global DATE 20250109 +%global gitrev f890bd2c90be240213d8f1023aed4ad9647a293c +%global gcc_version 15.0.0 +%global gcc_major 15 # 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 6 +%global gcc_release 0 %global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804 -%global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed +%global newlib_cygwin_gitrev 2e4db338ac125579d555aeee516e48588a628a16 %global _unpackaged_files_terminate_build 0 %if 0%{?fedora:1} %global _performance_build 1 @@ -143,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist} +Release: %{gcc_release}.3%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -191,11 +191,8 @@ URL: http://gcc.gnu.org # Need binutils which support -plugin # Need binutils which support .loc view >= 2.30 # Need binutils which support --generate-missing-build-notes=yes >= 2.31 -%if 0%{?fedora} >= 29 || 0%{?rhel} > 7 -BuildRequires: binutils >= 2.31 -%else -BuildRequires: binutils >= 2.24 -%endif +# Need binutils which support .base64 >= 2.43 +BuildRequires: binutils >= 2.43 # While gcc doesn't include statically linked binaries, during testing # -static is used several times. BuildRequires: glibc-static @@ -262,11 +259,8 @@ Requires: cpp = %{version}-%{release} # Need binutils that support -plugin # Need binutils that support .loc view >= 2.30 # Need binutils which support --generate-missing-build-notes=yes >= 2.31 -%if 0%{?fedora} >= 29 || 0%{?rhel} > 7 -Requires: binutils >= 2.31 -%else -Requires: binutils >= 2.24 -%endif +# Need binutils that support .base64 >= 2.43 +Requires: binutils >= 2.43 # Make sure gdb will understand DW_FORM_strp Conflicts: gdb < 5.1-2 Requires: glibc-devel >= 2.2.90-12 @@ -293,22 +287,23 @@ Provides: bundled(libbacktrace) Provides: bundled(libffi) Provides: gcc(major) = %{gcc_major} -Patch0: gcc14-hack.patch -Patch2: gcc14-sparc-config-detection.patch -Patch3: gcc14-libgomp-omp_h-multilib.patch -Patch4: gcc14-libtool-no-rpath.patch -Patch5: gcc14-isl-dl.patch -Patch6: gcc14-isl-dl2.patch -Patch7: gcc14-libstdc++-docs.patch -Patch8: gcc14-no-add-needed.patch -Patch9: gcc14-Wno-format-security.patch -Patch10: gcc14-rh1574936.patch -Patch11: gcc14-d-shared-libphobos.patch -Patch12: gcc14-pr101523.patch +Patch0: gcc15-hack.patch +Patch2: gcc15-sparc-config-detection.patch +Patch3: gcc15-libgomp-omp_h-multilib.patch +Patch4: gcc15-libtool-no-rpath.patch +Patch5: gcc15-isl-dl.patch +Patch6: gcc15-isl-dl2.patch +Patch7: gcc15-libstdc++-docs.patch +Patch8: gcc15-no-add-needed.patch +Patch9: gcc15-Wno-format-security.patch +Patch10: gcc15-rh1574936.patch +Patch11: gcc15-d-shared-libphobos.patch +Patch12: gcc15-pr118206.patch +Patch13: gcc15-pr118362.patch Patch50: isl-rh2155127.patch -Patch100: gcc14-fortran-fdec-duplicates.patch +Patch100: gcc15-fortran-fdec-duplicates.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -606,6 +601,20 @@ Requires: libgccjit = %{version}-%{release} %description -n libgccjit-devel This package contains header files and documentation for GCC JIT front-end. +%package -n libgdiagnostics +Summary: Library for emitting diagnostics + +%description -n libgdiagnostics +This package contains libgdiagnostics shared library and sarif-replay program. + +%package -n libgdiagnostics-devel +Summary: Support for emitting diagnostics +Requires: libgdiagnostics = %{version}-%{release} + +%description -n libgdiagnostics-devel +This package contains header files and documentation for the libgdiagnostics +library. + %package -n libquadmath Summary: GCC __float128 shared support library @@ -905,7 +914,8 @@ so that there cannot be any synchronization problems. %patch -P10 -p0 -b .rh1574936~ %endif %patch -P11 -p0 -b .d-shared-libphobos~ -%patch -P12 -p1 -b .pr101523~ +%patch -P12 -p0 -b .pr118206~ +%patch -P13 -p0 -b .pr118362~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -1304,7 +1314,7 @@ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \ | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \ XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \ ../../configure --disable-bootstrap --enable-host-shared \ - --enable-languages=jit $CONFIGURE_OPTS + --enable-languages=jit --enable-libgdiagnostics $CONFIGURE_OPTS make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" all-gcc cp -a gcc/libgccjit.so* ../gcc/ cd ../gcc/ @@ -1339,7 +1349,7 @@ cd ../.. # Copy various doc files here and there cd .. -mkdir -p rpm.doc/{gfortran,objc,gdc,libphobos,gm2,libgm2} +mkdir -p rpm.doc/{gfortran,objc,gdc,libphobos,gm2,libgm2,libgdiagnostics-devel} mkdir -p rpm.doc/go rpm.doc/libgo rpm.doc/libquadmath rpm.doc/libitm mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/ada,gcc/jit,libstdc++-v3,libobjc,libgomp,libcc1,libatomic,libsanitizer} @@ -1393,6 +1403,8 @@ done) cp -p $i ../rpm.doc/libgo/$i.libgo done) %endif +(cd gcc/doc/libgdiagnostics; make html; \ +mv _build/html ../../../rpm.doc/libgdiagnostics-devel/html ) rm -f rpm.doc/changelogs/gcc/ChangeLog.[1-9] find rpm.doc -name \*ChangeLog\* | xargs bzip2 -9 @@ -1445,6 +1457,7 @@ cd obj-offload-nvptx-none make prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \ infodir=%{buildroot}%{_infodir} install rm -rf %{buildroot}%{_prefix}/libexec/gcc/nvptx-none/%{gcc_major}/install-tools +rm -rf %{buildroot}%{_prefix}/libexec/gcc/nvptx-none/%{gcc_major}/g++-mapper-server rm -rf %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/{install-tools,plugin,cc1,cc1plus,f951} rm -rf %{buildroot}%{_infodir} %{buildroot}%{_mandir}/man7 %{buildroot}%{_prefix}/share/locale rm -rf %{buildroot}%{_prefix}/lib/gcc/nvptx-none/%{gcc_major}/{install-tools,plugin} @@ -1482,6 +1495,7 @@ cd obj-offload-amdgcn-amdhsa make prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \ infodir=%{buildroot}%{_infodir} install rm -rf %{buildroot}%{_prefix}/libexec/gcc/amdgcn-amdhsa/%{gcc_major}/install-tools +rm -rf %{buildroot}%{_prefix}/libexec/gcc/amdgcn-amdhsa/%{gcc_major}/g++-mapper-server rm -rf %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/{install-tools,plugin,cc1,cc1plus,f951} rm -rf %{buildroot}%{_infodir} %{buildroot}%{_mandir}/man7 %{buildroot}%{_prefix}/share/locale rm -rf %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/{install-tools,plugin} @@ -1693,6 +1707,15 @@ cp -a ../gcc/jit/libgccjit*.h %{buildroot}%{_prefix}/include/ /usr/bin/install -c -m 644 objlibgccjit/gcc/doc/libgccjit.info %{buildroot}/%{_infodir}/ gzip -9 %{buildroot}/%{_infodir}/libgccjit.info +rm -f $FULLEPATH/libgdiagnostics.so +cp -a objlibgccjit/gcc/libgdiagnostics.so* %{buildroot}%{_prefix}/%{_lib}/ +cp -a ../gcc/libgdiagnostics*.h %{buildroot}%{_prefix}/include/ +cp -a objlibgccjit/gcc/sarif-replay %{buildroot}%{_prefix}/bin/ + +sed -e 's,\.\./include/,../../../../include,' \ + %{buildroot}%{_prefix}/%{_lib}/libstdc++.modules.json \ + > $FULLPATH/libstdc++.modules.json + pushd $FULLPATH if [ "%{_lib}" = "lib" ]; then %if %{build_objc} @@ -1713,7 +1736,7 @@ ln -sf ../../../libgphobos.so.5.* libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do - ln -sf ../../../libm2$i.so.19.* libm2$i.so + ln -sf ../../../libm2$i.so.20.* libm2$i.so done %endif %if %{build_libitm} @@ -1748,7 +1771,7 @@ ln -sf ../../../../%{_lib}/libgphobos.so.5.* libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do - ln -sf ../../../../%{_lib}/libm2$i.so.19.* libm2$i.so + ln -sf ../../../../%{_lib}/libm2$i.so.20.* libm2$i.so done %endif %if %{build_libitm} @@ -1897,8 +1920,8 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgphobos.so.5.* | sed 's %if %{build_m2} for i in cor iso log min pim; do rm -f libm2$i.so - echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libm2$i.so.19.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so - echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libm2$i.so.19.* | sed 's,^.*libm,libm,'`' )' > 64/libm2$i.so + echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libm2$i.so.20.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so + echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libm2$i.so.20.* | sed 's,^.*libm,libm,'`' )' > 64/libm2$i.so rm -f 64/m2/m2$i/*.{a,la} ln -sf ../../libm2$i.so 64/m2/m2$i/ ln -sf ../../libm2$i.a 64/m2/m2$i/ @@ -2014,8 +2037,8 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgphobos.so.5.* | sed 's %if %{build_m2} for i in cor iso log min pim; do rm -f libm2$i.so - echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libm2$i.so.19.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so - echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libm2$i.so.19.* | sed 's,^.*libm,libm,'`' )' > 32/libm2$i.so + echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libm2$i.so.20.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so + echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libm2$i.so.20.* | sed 's,^.*libm,libm,'`' )' > 32/libm2$i.so rm -f 32/m2/m2$i/*.{a,la} ln -sf ../../libm2$i.so 32/m2/m2$i/ ln -sf ../../libm2$i.a 32/m2/m2$i/ @@ -2191,7 +2214,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgphobos.so.5.* %endif %if %{build_m2} for i in cor iso log min pim; do - chmod 755 %{buildroot}%{_prefix}/%{_lib}/libm2$i.so.19.* + chmod 755 %{buildroot}%{_prefix}/%{_lib}/libm2$i.so.20.* done %endif %if %{build_libitm} @@ -2310,7 +2333,13 @@ rm -rf %{buildroot}%{_prefix}/lib64/go/%{gcc_major}/%{gcc_target_platform} %endif %endif -rm -f %{buildroot}%{mandir}/man3/ffi* +%if %{build_offload_nvptx} +rm -f %{buildroot}%{_mandir}/man1/*-accel-*nvptx* +%endif +%if %{build_offload_amdgcn} +rm -f %{buildroot}%{_mandir}/man1/*-accel-*amdgcn* +%endif +rm -f %{buildroot}%{_mandir}/man7/{gpl,gfdl,fsf-funding}.7* # Help plugins find out nvra. echo gcc-%{version}-%{release}.%{_arch} > $FULLPATH/rpmver @@ -2436,6 +2465,8 @@ end %ldconfig_scriptlets -n libgccjit +%ldconfig_scriptlets -n libgdiagnostics + %ldconfig_scriptlets -n libquadmath %ldconfig_scriptlets -n libitm @@ -2548,9 +2579,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsaveintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsaveoptintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512cdintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512erintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512fintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512pfintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/shaintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mm_malloc.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mm3dnow.h @@ -2572,8 +2601,6 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsavesintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/clzerointrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/pkuintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx5124fmapsintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx5124vnniwintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vpopcntdqintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sgxintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/gfniintrin.h @@ -2624,6 +2651,24 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sm3intrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sm4intrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/usermsrintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxavx512intrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxfp8intrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxmovrsintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxtf32intrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxtransposeintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2-512bf16intrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2-512convertintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2-512mediaintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2-512minmaxintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2-512satcvtintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2bf16intrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2convertintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2copyintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2mediaintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2minmaxintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2roundingintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2satcvtintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/movrsintrin.h %endif %ifarch ia64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ia64intrin.h @@ -2668,6 +2713,10 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_fp16.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_bf16.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_sve.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_sme.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_neon_sve_bridge.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_private_fp8.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_private_neon_types.h %endif %ifarch sparc sparcv9 sparc64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/visintrin.h @@ -2683,6 +2732,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_crypto.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_bitmanip.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_th_vector.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_cmo.h %endif %if %{build_libasan} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sanitizer @@ -2814,7 +2864,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan_preinit.o %endif %{_prefix}/libexec/getconf/default -%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* +%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* %{!?_licensedir:%global license %%doc} %license gcc/COPYING* COPYING.RUNTIME @@ -2899,6 +2949,7 @@ end %ifnarch sparcv9 ppc %{multilib_64_archs} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.so %endif +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.modules.json %ifarch sparcv9 ppc %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++fs.a @@ -3110,6 +3161,7 @@ end %files gm2 %{_prefix}/bin/gm2 %{_mandir}/man1/gm2.1* +%{_infodir}/m2* %dir %{_prefix}/lib/gcc %dir %{_prefix}/lib/gcc/%{gcc_target_platform} %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} @@ -3139,7 +3191,7 @@ end %doc rpm.doc/gm2/* %files -n libgm2 -%{_prefix}/%{_lib}/libm2*.so.19* +%{_prefix}/%{_lib}/libm2*.so.20* %doc rpm.doc/libgm2/* %files -n libgm2-static @@ -3536,6 +3588,15 @@ end %doc rpm.doc/libgccjit-devel/* %doc gcc/jit/docs/examples +%files -n libgdiagnostics +%{_prefix}/bin/sarif-replay +%{_prefix}/%{_lib}/libgdiagnostics.so.* + +%files -n libgdiagnostics-devel +%{_prefix}/%{_lib}/libgdiagnostics.so +%{_prefix}/include/libgdiagnostics*.h +%doc rpm.doc/libgdiagnostics-devel/* + %files plugin-devel %dir %{_prefix}/lib/gcc %dir %{_prefix}/lib/gcc/%{gcc_target_platform} @@ -3618,499 +3679,5 @@ end %endif %changelog -- fix up -freport-bug default (#2330362) -- revert -mearly-ldp-fusion and -mlate-ldp-fusion default to enabled on - aarch64 to match upstream - -* Mon Nov 4 2024 Jakub Jelinek 14.2.1-6 -- update from releases/gcc-14 branch - - PRs fortran/79685, jit/117275, libstdc++/117321, libstdc++/117406, - middle-end/117354, rtl-optimization/116783, rtl-optimization/117327, - target/116415, target/117296, target/117318, tree-optimization/107467, - tree-optimization/117287 - -* Fri Oct 25 2024 Jakub Jelinek 14.2.1-5 -- update from releases/gcc-14 branch - - PRs ada/114593, ada/114636, ada/114640, ada/115535, ada/116190, - ada/116430, ada/116551, c/116726, c/117230, c++/96097, c++/115361, - c++/115987, c++/116369, c++/116418, c++/116424, c++/116476, - c++/116492, c++/116534, c++/116676, c++/116678, c++/116929, - c++/117054, c++/117107, c++/117259, c++/117274, fortran/84868, - fortran/100273, ipa/109985, ipa/115815, libstdc++/37475, - libstdc++/108619, libstdc++/116529, libstdc++/116754, - libstdc++/116755, libstdc++/116777, libstdc++/116857, - libstdc++/117085, libstdc++/117094, libstdc++/117135, - middle-end/115110, middle-end/115426, middle-end/115641, - middle-end/116258, middle-end/116259, middle-end/116454, - middle-end/116891, middle-end/116898, middle-end/116899, - middle-end/117086, middle-end/117249, sanitizer/117209, target/115860, - target/116237, target/116627, target/116738, target/116839, - target/116883, target/116921, target/116953, target/116962, - target/117116, target/117159, target/117240, testsuite/116238, - tree-optimization/116166, tree-optimization/116258, - tree-optimization/116274, tree-optimization/116290, - tree-optimization/116380, tree-optimization/116460, - tree-optimization/116481, tree-optimization/116585, - tree-optimization/116610, tree-optimization/116768, - tree-optimization/116850, tree-optimization/116879, - tree-optimization/116907, tree-optimization/116982, - tree-optimization/116990, tree-optimization/117041, - tree-optimization/117104 - -* Wed Sep 25 2024 Siddhesh Poyarekar 14.2.1-4 -- default tuning to power 10 for RHEL10 and later - -* Thu Sep 12 2024 Jakub Jelinek 14.2.1-3 -- update from releases/gcc-14 branch - - PRs c++/116276, c++/116320, c++/116449, c++/116567, c++/116606, - c++/116636, ipa/116410, libstdc++/116159, libstdc++/116641, - lto/116614, target/116617 -- backport x86_64 va_arg fix (PR target/116621) - -* Thu Sep 5 2024 Jakub Jelinek 14.2.1-2 -- update from releases/gcc-14 branch - - PRs c++/88313, c++/112288, c++/115296, c++/115656, c++/116071, c++/116219, - c++/116223, c++/116327, c++/116384, fortran/108889, fortran/116530, - libstdc++/113663, libstdc++/116038, libstdc++/116381, - libstdc++/116549, lto/116361, target/85624, target/112108, - target/113384, target/115464, target/116007, target/116033, - target/116043, target/116174, target/116189, target/116287, - target/116295, target/116390, target/116407, target/116512, - testsuite/70150, tree-optimization/113281, tree-optimization/116156, - tree-optimization/116224, tree-optimization/116501 - - add hint #34 to aarch64 sanitizer asm stubs if -mbranch-protection=standard - (#2306353) - -* Thu Aug 1 2024 Jakub Jelinek 14.2.1-1 -- update from releases/gcc-14 branch - - GCC 14.2 release - - PRs analyzer/114899, c++/99241, c++/99242, c++/104981, c++/106760, - c++/111890, c++/115165, c++/115476, c++/115550, c++/115561, - c++/115583, c++/115623, c++/115754, c++/115783, c++/115865, - c++/115897, c++/115900, c++/115986, fortran/59104, fortran/84006, - fortran/93635, fortran/98534, fortran/99798, fortran/100027, - fortran/103115, fortran/103312, fortran/113363, fortran/115700, - ipa/111613, ipa/113291, ipa/113787, ipa/114207, ipa/115033, - ipa/115277, ipa/116055, libstdc++/113376, libstdc++/114387, - libstdc++/115399, libstdc++/115482, libstdc++/115522, - libstdc++/115585, libstdc++/115807, libstdc++/115854, - libstdc++/116070, middle-end/115527, middle-end/115836, - middle-end/115887, pch/115312, rtl-optimization/115049, - rtl-optimization/115565, target/87376, target/88236, target/97367, - target/98762, target/105090, target/113715, target/114759, - target/114890, target/114936, target/114988, target/115068, - target/115153, target/115188, target/115351, target/115389, - target/115456, target/115457, target/115459, target/115475, - target/115526, target/115554, target/115562, target/115591, - target/115611, target/115691, target/115725, target/115726, - target/115752, target/115763, target/115840, target/115872, - target/115978, target/115981, target/115988, target/116035, - testsuite/115826, testsuite/116061, tree-optimization/113673, - tree-optimization/115382, tree-optimization/115646, - tree-optimization/115669, tree-optimization/115694, - tree-optimization/115701, tree-optimization/115723, - tree-optimization/115841, tree-optimization/115843, - tree-optimization/115867, tree-optimization/115868, - tree-optimization/116034, tree-optimization/116057 - -* Mon Jul 1 2024 Jakub Jelinek 14.1.1-7 -- update from releases/gcc-14 branch - - PRs c/114930, c/115502, c/115587, c++/115198, c++/115358, c++/115504, - c++/115624, fortran/114019, fortran/115390, libstdc++/115454, - libstdc++/115575, libstdc++/115668, target/106069, target/114846, - target/115342, target/115355, target/115608, tree-optimization/115278, - tree-optimization/115508 -- revert the August 2016 workaround for python bytecode compilation (#2294381) - -* Thu Jun 20 2024 Jakub Jelinek 14.1.1-6 -- update from releases/gcc-14 branch - - PRs ada/114398, ada/114708, c/115290, c++/99678, c++/115239, c++/115283, - c++/115378, c++/115511, driver/115440, fortran/83865, jit/115442, - libstdc++/114958, libstdc++/115247, libstdc++/115308, - rtl-optimization/115281, target/109549, target/111343, target/115253, - target/115353, target/115360, tree-optimization/115544 - - fix s390x ICEs with vector permutations from memory (#2293207, #2292501) - -* Fri Jun 7 2024 Jakub Jelinek 14.1.1-5 -- update from releases/gcc-14 branch - - PRs ada/115270, c/114493, c++/105320, c++/114275, c++/114868, c++/114983, - c++/115187, fortran/86100, fortran/115150, libstdc++/109849, - libstdc++/111641, libstdc++/114940, libstdc++/115099, - libstdc++/115269, libstdc++/115335, middle-end/108789, - middle-end/115352, modula2/114886, rtl-optimization/114902, - rtl-optimization/115038, rtl-optimization/115092, target/113719, - target/115169, target/115297, target/115317, target/115324, - tree-optimization/115149, tree-optimization/115192, - tree-optimization/115197, tree-optimization/115232, - tree-optimization/115307, tree-optimization/115337 - -* Wed May 22 2024 Jakub Jelinek 14.1.1-4 -- update from releases/gcc-14 branch - - PRs c++/114901, c++/114903, c++/114974, c++/114994, c++/115114, - c++/115139, driver/114980, fortran/114827, fortran/114874, - fortran/115039, libstdc++/107800, libstdc++/114866, libstdc++/114891, - libstdc++/115015, libstdc++/115063, libstdc++/115119, - middle-end/114931, sanitizer/115172, target/69374, target/112959, - target/114968, target/114975, target/114981, target/115065, - target/115069, tree-optimization/114998, tree-optimization/115143, - tree-optimization/115152, tree-optimization/115154 - -* Tue May 21 2024 Siddhesh Poyarekar 14.1.1-3 -- update new SPDX identifiers from all outstanding issues - -* Thu May 16 2024 Marek Polacek 14.1.1-2 -- fix a combinatorial explosion in combine (PR rtl-optimization/101523) - -* Wed May 8 2024 Jakub Jelinek 14.1.1-1 -- update from releases/gcc-14 branch - - GCC 14.1.0 release - - PRs analyzer/111475, c++/89224, c++/114856, c++/114889, c++/114935, - ipa/92606, middle-end/114734, middle-end/114907, modula2/113768, - modula2/114133, modula2/114929, rtl-optimization/114924, - sanitizer/114956, tree-optimization/114876, - tree-optimization/114921, tree-optimization/114965 - -* Fri May 3 2024 Marek Polacek -- enable hardening and configure with --enable-host-pie --enable-host-bind-now - on RHEL -- don't require rocm-runtime on RHEL - -* Tue Apr 30 2024 Jakub Jelinek 14.0.1-0.16 -- update from trunk and releases/gcc-14 branch - - GCC 14.1.0-rc1 - - PRs c++/93595, c++/99426, c++/106820, c++/107457, c++/109966, c++/111284, - c++/113141, c++/114078, c++/114393, c++/114426, c++/114600, - c++/114634, c++/114691, c++/114706, c++/114709, c++/114784, - c++/114795, c++/114888, c/92880, c/114780, d/111650, fortran/89462, - fortran/93678, fortran/102597, fortran/103471, fortran/103496, - fortran/113793, fortran/114739, fortran/114825, fortran/114959, - gcov-profile/114715, gcov-profile/114720, libgcc/114689, - libgcc/114755, libgcc/114762, libstdc++/93672, libstdc++/113386, - libstdc++/114750, libstdc++/114770, libstdc++/114803, - libstdc++/114863, lto/113208, lto/114574, middle-end/112938, - middle-end/114753, modula2/112893, modula2/114745, modula2/114807, - modula2/114811, modula2/114836, other/114738, preprocessor/114748, - rtl-optimization/114768, sanitizer/114687, sanitizer/114743, - target/110621, target/112431, target/112432, target/114416, - target/114668, target/114676, target/114696, target/114714, - target/114741, target/114752, target/114783, target/114794, - target/114810, target/114837, target/114861, target/114885, - testsuite/113706, testsuite/114744, testsuite/114768, - tree-optimization/114403, tree-optimization/114666, - tree-optimization/114733, tree-optimization/114736, - tree-optimization/114749, tree-optimization/114769, - tree-optimization/114787, tree-optimization/114792, - tree-optimization/114799, tree-optimization/114832, - tree-optimization/114883 -- switch to --with-arch_64=x86-64-v3 for latest RHEL -- remove obsolete reason for not shipping *.gch* files - -* Thu Apr 11 2024 Jakub Jelinek 14.0.1-0.15 -- update from trunk - - PRs analyzer/114472, c++/114303, c++/114409, debug/112878, - fortran/106500, middle-end/110027, middle-end/114681, target/114639, - tree-optimization/109596, tree-optimization/114672 - - fix symbol version of std::__basic_file::native_handle() const - (PR libstdc++/114692) - - emit -Whardened warning even for -fhardened -fcf-protection=none - (#2273610, PR target/114606) - -* Wed Apr 10 2024 Jakub Jelinek 14.0.1-0.14 -- update from trunk - - PRs analyzer/114588, bootstrap/106472, c++/91079, c++/99377, c++/100667, - c++/103825, c++/104040, c++/111132, c++/114377, c++/114462, - c++/114479, c++/114537, c++/114561, c++/114562, c++/114572, - c++/114580, c/114361, debug/114608, fortran/36337, fortran/50410, - fortran/106999, fortran/110987, fortran/112407, fortran/113885, - fortran/113956, fortran/114474, fortran/114535, gcov-profile/113765, - gcov-profile/114115, gcov-profile/114601, ipa/111571, ipa/113359, - ipa/113907, ipa/113964, libquadmath/114533, libquadmath/114623, - libstdc++/104606, libstdc++/114519, libstdc++/114633, lto/114655, - middle-end/114552, middle-end/114599, middle-end/114604, - middle-end/114627, middle-end/114628, modula2/114517, - modula2/114520, modula2/114548, modula2/114565, modula2/114617, - modula2/114648, rtl-optimization/112560, rtl-optimization/114415, - target/88309, target/101865, target/112919, target/113233, - target/113986, target/114577, target/114587, target/114590, - target/114603, target/114607, testsuite/114034, testsuite/114036, - testsuite/114307, testsuite/114614, testsuite/114642, - testsuite/114662, tree-optimization/112303, - tree-optimization/114115, tree-optimization/114480, - tree-optimization/114485, tree-optimization/114551, - tree-optimization/114555, tree-optimization/114557, - tree-optimization/114566, tree-optimization/114624 - - don't emit VEX encoded AES-NI instructions when just -maes and not -mavx - is enabled (#2272758, PR target/114576) - - fix s390* peephole2 to check mode of constant pool entries and for - 64-bit extraction from 128-bit constant pool entry extract the correct - half of the value (#2273618, PR target/114605) - -* Thu Mar 28 2024 Jakub Jelinek 14.0.1-0.13 -- update from trunk - - PRs analyzer/109251, analyzer/110902, analyzer/110928, analyzer/111305, - analyzer/111441, analyzer/112974, analyzer/112975, analyzer/113505, - analyzer/113619, analyzer/114286, analyzer/114408, analyzer/114473, - bootstrap/114369, c++/59465, c++/100557, c++/110323, c++/111918, - c++/112631, c++/112724, c++/114349, c++/114439, c/109619, c/114364, - fortran/30802, fortran/55978, fortran/101135, fortran/103715, - fortran/107426, fortran/111781, fortran/114475, ipa/108802, - ipa/114254, libfortran/107031, libgcc/111731, libgcc/114397, - libstdc++/101228, libstdc++/113841, libstdc++/114316, - libstdc++/114359, libstdc++/114367, libstdc++/114394, - libstdc++/114400, libstdc++/114401, middle-end/111151, - middle-end/111632, middle-end/111683, middle-end/113396, - middle-end/114347, middle-end/114348, middle-end/114480, - modula2/113836, modula2/114296, modula2/114380, modula2/114418, - modula2/114422, modula2/114443, modula2/114444, modula2/114478, - rtl-optimization/101523, rtl-optimization/112415, sanitizer/111736, - target/99829, target/111822, target/112651, target/114049, - target/114150, target/114175, target/114194, target/114272, - target/114323, target/114334, target/114352, target/114407, - target/114431, testsuite/114320, testsuite/114486, - tree-optimization/96147, tree-optimization/109925, - tree-optimization/111736, tree-optimization/113727, - tree-optimization/114057, tree-optimization/114151, - tree-optimization/114322, tree-optimization/114329, - tree-optimization/114365, tree-optimization/114375, - tree-optimization/114396, tree-optimization/114405, - tree-optimization/114425, tree-optimization/114433, - tree-optimization/114464, tree-optimization/114469, - tree-optimization/114471 - -* Sat Mar 16 2024 Jakub Jelinek 14.0.1-0.12 -- update from trunk - - PRs ada/113979, analyzer/114159, c++/92687, c++/98356, c++/98645, - c++/98688, c++/98881, c++/103994, c++/104919, c++/105512, - c++/106009, c++/110025, c++/110031, c++/110347, c++/110730, - c++/111224, c++/111710, c++/113629, c++/113802, c++/113976, - c++/113987, c++/114005, c++/114114, c++/114138, c++/114170, - c++/114229, d/112285, d/112290, d/114171, debug/113519, - debug/113777, debug/113918, debug/114015, debug/114186, - driver/114314, fortran/82943, fortran/86148, fortran/86268, - fortran/87477, fortran/89645, fortran/99065, fortran/103707, - fortran/104819, fortran/106987, fortran/110826, fortran/114001, - fortran/114141, fortran/114280, fortran/114283, ipa/113757, - libbacktrace/114201, libcc1/113977, libfortran/105437, - libfortran/114304, libgcc/114327, libgomp/114216, libstdc++/66146, - libstdc++/113960, libstdc++/114103, libstdc++/114147, - libstdc++/114152, libstdc++/114240, libstdc++/114244, - libstdc++/114279, libstdc++/114325, middle-end/95351, - middle-end/105533, middle-end/113907, middle-end/114108, - middle-end/114136, middle-end/114156, middle-end/114157, - middle-end/114196, middle-end/114209, middle-end/114299, - middle-end/114313, middle-end/114319, middle-end/114332, - modula2/102344, modula2/109969, modula2/114227, modula2/114294, - modula2/114295, modula2/114333, preprocessor/80755, - preprocessor/110558, rtl-optimization/110079, - rtl-optimization/113010, rtl-optimization/114190, - rtl-optimization/114211, sanitizer/97696, sanitizer/112709, - target/92729, target/101737, target/102250, target/108174, - target/111362, target/112337, target/112817, target/112871, - target/113001, target/113453, target/113510, target/113542, - target/113618, target/113720, target/113790, target/113915, - target/113950, target/114100, target/114116, target/114130, - target/114132, target/114184, target/114187, target/114200, - target/114202, target/114232, target/114233, target/114264, - target/114284, target/114288, target/114310, target/114339, - testsuite/96109, testsuite/108355, testsuite/113418, - testsuite/113428, tree-optimization/98238, tree-optimization/110199, - tree-optimization/113466, tree-optimization/113557, - tree-optimization/114009, tree-optimization/114071, - tree-optimization/114121, tree-optimization/114164, - tree-optimization/114192, tree-optimization/114197, - tree-optimization/114203, tree-optimization/114231, - tree-optimization/114239, tree-optimization/114246, - tree-optimization/114249, tree-optimization/114269, - tree-optimization/114278, tree-optimization/114293, - tree-optimization/114297 - -* Thu Mar 7 2024 Siddhesh Poyarekar -- update License identifier in the spec file - -* Mon Mar 4 2024 Jakub Jelinek -- add --without-clang-plugin --without-llvm-plugin to annobin configure - options - -* Thu Feb 29 2024 David Abdurachmanov -- enable support for riscv64 - -* Wed Feb 28 2024 Jakub Jelinek 14.0.1-0.8 -- update from trunk - - PRs ada/113893, analyzer/110483, analyzer/110520, analyzer/111289, - analyzer/111802, analyzer/111881, analyzer/113983, analyzer/113998, - analyzer/113999, c++/113083, c++/113966, c++/113970, c/114007, - c/114042, fortran/105658, fortran/107071, fortran/114012, - fortran/114024, ipa/61159, ipa/70582, ipa/111960, ipa/113476, - libfortran/105456, libfortran/105473, middle-end/112344, - middle-end/114070, middle-end/114073, middle-end/114084, - modula2/113749, modula2/113889, modula2/114026, modula2/114055, - other/109668, other/113957, rtl-optimization/54052, - rtl-optimization/114044, rtl-optimization/114054, target/90785, - target/108120, target/109987, target/112103, target/112375, - target/112397, target/113220, target/113295, target/113613, - target/113696, target/113805, target/113912, target/113971, - target/113995, target/114017, target/114028, target/114094, - target/114097, target/114098, testsuite/111462, - tree-optimization/91567, tree-optimization/109804, - tree-optimization/113205, tree-optimization/113967, - tree-optimization/113988, tree-optimization/113993, - tree-optimization/114027, tree-optimization/114038, - tree-optimization/114040, tree-optimization/114041, - tree-optimization/114048, tree-optimization/114068, - tree-optimization/114074, tree-optimization/114081, - tree-optimization/114090, tree-optimization/114099 - - fix up handling of C++ inline var specializations - (#2264986, PR c++/114013) - - punt on vectorization of +- with non-integral emulated vectors - (#2265489, PR tree-optimization/114075) - - fix up handling of references of comdat local symbols forced into - memory (#2260416, PR rtl-optimization/113617) - -* Sat Feb 17 2024 Jakub Jelinek 14.0.1-0.7 -- update from trunk - - PRs analyzer/111266, c++/97202, c++/97990, c++/98388, c++/99573, - c++/107126, c++/111682, c++/112436, c++/112580, c++/113158, - c++/113332, c++/113545, c++/113612, c++/113649, c++/113658, - c++/113674, c++/113706, c++/113708, c++/113760, c++/113789, - c++/113834, c++/113853, c++/113908, c++/113929, d/104739, d/113125, - d/113667, d/113758, d/113772, fortran/99210, fortran/105847, - fortran/113799, fortran/113866, fortran/113883, fortran/113911, - ipa/98237, libfortran/107068, libgcc/113850, libgomp/113843, - libstdc++/87744, libstdc++/99117, libstdc++/100147, - libstdc++/113294, libstdc++/113806, libstdc++/113807, - libstdc++/113811, libstdc++/113931, libstdc++/113961, - middle-end/107385, middle-end/110754, middle-end/113415, - middle-end/113508, middle-end/113576, middle-end/113904, - middle-end/113921, modula2/113848, modula2/113888, other/113336, - sanitizer/113785, target/106543, target/109349, target/113742, - target/113780, target/113855, target/113871, target/113876, - target/113909, target/113927, testsuite/113278, testsuite/113448, - testsuite/113861, testsuite/113899, tree-optimization/108355, - tree-optimization/111054, tree-optimization/111156, - tree-optimization/113567, tree-optimization/113734, - tree-optimization/113774, tree-optimization/113783, - tree-optimization/113818, tree-optimization/113831, - tree-optimization/113849, tree-optimization/113863, - tree-optimization/113895, tree-optimization/113896, - tree-optimization/113898, tree-optimization/113902, - tree-optimization/113910 - - fix bugs in Fortran allocatable character component assignments - (#2261826, PR fortran/113503) - -* Thu Feb 8 2024 Jakub Jelinek 14.0.1-0.6 -- update from trunk - - PRs c++/113814, c/113776, target/113711, target/113733, target/113824, - testsuite/113710, tree-optimization/113735, tree-optimization/113808 - -* Wed Feb 7 2024 Jakub Jelinek 14.0.1-0.5 -- update from trunk - - PRs analyzer/113253, analyzer/113509, analyzer/113654, c++/94231, - c++/107291, c++/107594, c++/109359, c++/110006, c++/110084, - c++/110358, c++/111286, c++/112437, c++/112439, c++/112737, - c++/112769, c++/112846, c++/113451, c++/113531, c++/113544, - c++/113638, c++/113640, c++/113644, c++/113788, c/111059, c/111911, - c/112571, c/113438, c/113740, debug/103047, debug/113394, - debug/113637, fortran/104908, libfortran/111022, libgcc/113337, - libgcc/113402, libgcc/113403, libgcc/113604, libstdc++/109203, - libstdc++/113309, libstdc++/113335, libstdc++/90276, - middle-end/101195, middle-end/110176, middle-end/112917, - middle-end/113100, middle-end/113607, middle-end/113622, - middle-end/113699, middle-end/113705, middle-end/113722, - modula2/111627, modula2/112506, modula2/113730, - rtl-optimization/113656, sanitizer/110676, sanitizer/112644, - target/38534, target/59778, target/103503, target/105576, - target/108933, target/111677, target/112577, target/112861, - target/112862, target/112863, target/112864, target/112950, - target/113059, target/113249, target/113255, target/113312, - target/113560, target/113615, target/113616, target/113623, - target/113636, target/113655, target/113657, target/113689, - target/113690, target/113697, target/113700, target/113701, - target/113763, target/113766, testsuite/113502, - tree-optimization/110603, tree-optimization/111268, - tree-optimization/111444, tree-optimization/113467, - tree-optimization/113568, tree-optimization/113588, - tree-optimization/113603, tree-optimization/113614, - tree-optimization/113630, tree-optimization/113639, - tree-optimization/113659, tree-optimization/113670, - tree-optimization/113691, tree-optimization/113692, - tree-optimization/113693, tree-optimization/113707, - tree-optimization/113731, tree-optimization/113736, - tree-optimization/113737, tree-optimization/113750, - tree-optimization/113753, tree-optimization/113756, - tree-optimization/113759, tree-optimization/113796 - - fix PCH writing assertion (#2259912) - -* Sat Jan 27 2024 Jakub Jelinek 14.0.1-0.4 -- update from trunk - - PRs analyzer/112969, c++/109227, c++/112899, c++/113580, c++/113598, - c++/113599, middle-end/112971, other/113575, preprocessor/105608, - target/100204, target/100212, target/112987, target/113469, - target/113526, target/113538, target/113601, testsuite/113558, - tree-optimization/113602 -- temporarily disable -mearly-ldp-fusion -mlate-ldp-fusion on aarch64 again - (#2260449, #2260560, #2260562) -- use gcc_major macro in the spec some more -- require llvm >= 15 and lld >= 15 for the amdgcn offloading - where they are used as assembler and linker - -* Thu Jan 25 2024 Jakub Jelinek 14.0.1-0.3 -- update from trunk - - PRs analyzer/111361, analyzer/112705, analyzer/112811, analyzer/112927, - analyzer/112977, bootstrap/113554, c++/67898, c++/90463, c++/90464, - c++/100707, c++/102607, c++/104594, c++/109640, c++/109642, - c++/111357, c++/111410, c++/111607, c++/112594, c++/112632, - c++/112820, c++/113256, c++/113347, c++/113405, c++/113498, - c++/113529, c/102998, c/107942, c/109708, c/110029, c/113492, - c/113518, debug/107058, debug/112718, debug/113382, debug/113488, - fortran/48776, fortran/111291, fortran/113377, fortran/113471, - ipa/108007, ipa/108470, ipa/110705, ipa/112616, ipa/113490, - libstdc++/113500, libstdc++/113512, middle-end/88345, - middle-end/112684, middle-end/113574, modula2/113559, other/111966, - rtl-optimization/111267, rtl-optimization/113255, target/82420, - target/100942, target/108521, target/108640, target/109092, - target/109636, target/110934, target/111279, target/112989, - target/113030, target/113070, target/113089, target/113095, - target/113114, target/113356, target/113420, target/113485, - target/113486, target/113495, target/113550, target/113556, - target/113572, testsuite/113437, testsuite/113548, - tree-optimization/69807, tree-optimization/113364, - tree-optimization/113373, tree-optimization/113459, - tree-optimization/113462, tree-optimization/113463, - tree-optimization/113464, tree-optimization/113491, - tree-optimization/113494, tree-optimization/113552, - tree-optimization/113576 -- add offloading support for AMD GCN ROCm capable devices - -* Thu Jan 18 2024 Jakub Jelinek 14.0.1-0.2 -- update from trunk - - PRs ada/113397, analyzer/106229, analyzer/113150, analyzer/113333, - bootstrap/113445, c++/99493, c++/104634, c++/109899, c++/110065, - c++/112588, c++/113242, c++/113292, c++/113307, c++/113340, - c++/113389, c/111693, fortran/67277, fortran/113305, libstdc++/108822, - libstdc++/108827, libstdc++/109536, libstdc++/111327, - libstdc++/113318, libstdc++/113450, middle-end/90348, - middle-end/110115, middle-end/110847, middle-end/111422, - middle-end/111659, middle-end/113354, middle-end/113406, - middle-end/113409, middle-end/113410, modula2/111956, other/113399, - rtl-optimization/96388, rtl-optimization/111554, - rtl-optimization/113048, rust/108111, target/105522, target/107201, - target/112573, target/112944, target/112973, target/113122, - target/113156, target/113221, target/113247, target/113281, - target/113393, target/113404, target/113429, testsuite/109705, - testsuite/111850, testsuite/113366, testsuite/113369, - testsuite/113446, testsuite/113452, translation/108890, - tree-optimization/91624, tree-optimization/107823, - tree-optimization/110251, tree-optimization/110422, - tree-optimization/110450, tree-optimization/110768, - tree-optimization/110794, tree-optimization/110841, - tree-optimization/110852, tree-optimization/110941, - tree-optimization/112774, tree-optimization/113091, - tree-optimization/113287, tree-optimization/113361, - tree-optimization/113370, tree-optimization/113371, - tree-optimization/113372, tree-optimization/113374, - tree-optimization/113385, tree-optimization/113408, - tree-optimization/113421, tree-optimization/113431, - tree-optimization/113475 - -* Sat Jan 13 2024 Jakub Jelinek 14.0.1-0.1 +* Thu Jan 9 2025 Jakub Jelinek 15.0.0-0.3 - new package diff --git a/gcc14-pr101523.patch b/gcc14-pr101523.patch deleted file mode 100644 index 8f3b47b..0000000 --- a/gcc14-pr101523.patch +++ /dev/null @@ -1,76 +0,0 @@ -Based on Richi's patch: - -~~ -The following avoids re-walking and re-combining the instructions -between i2 and i3 when the pattern of i2 doesn't change. - -Bootstrap and regtest running ontop of a reversal of -r14-9692-g839bc42772ba7a. - -It brings down memory use from 9GB to 400MB and compile-time from -80s to 3.5s. r14-9692-g839bc42772ba7a does better in both metrics -but has shown code generation regressions across architectures. - - PR rtl-optimization/101523 - * combine.cc (try_combine): When the pattern of i2 doesn't - change do not re-start combining at i2 or an earlier insn which - had links or notes added. -~~ -But, since the patch affects code generation (for instance, -libstdc++-v3/src/c++17/floating_from_chars.o), we limit the bailing out -only when I2 hasn't been changed 1000x. I've measured how many times -at most is I2 unchanged during a bootstrap + regtest. -x86: 134 -aarch64: 736 (gimple-match-1.cc) -s390x: 635 (gimple-match-*) -ppc64le: 620 (gimple-match-*) -while certain pathological testcases trigger it more than 10,000 times. -With the limit in place this patch doesn't affect common code. - ---- a/gcc/combine.cc -+++ b/gcc/combine.cc -@@ -92,6 +92,11 @@ along with GCC; see the file COPYING3. If not see - #include "function-abi.h" - #include "rtlanal.h" - -+/* Number of times I2 didn't change in try_combine. Used to prevent a -+ combinatorial explosion. */ -+ -+static int combine_i2_unchanged; -+ - /* Number of attempts to combine instructions in this function. */ - - static int combine_attempts; -@@ -1127,6 +1132,7 @@ combine_instructions (rtx_insn *f, unsigned int nregs) - return false; - - combine_attempts = 0; -+ combine_i2_unchanged = 0; - combine_merges = 0; - combine_extras = 0; - combine_successes = 0; -@@ -4196,6 +4201,10 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, - adjust_for_new_dest (i3); - } - -+ bool i2_i2_unchanged = false; -+ if (rtx_equal_p (newi2pat, PATTERN (i2))) -+ i2_i2_unchanged = true; -+ - /* We now know that we can do this combination. Merge the insns and - update the status of registers and LOG_LINKS. */ - -@@ -4762,6 +4771,13 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, - combine_successes++; - undo_commit (); - -+ if (i2_i2_unchanged) -+ { -+ if (combine_i2_unchanged == 1000) -+ return i3; -+ ++combine_i2_unchanged; -+ } -+ - rtx_insn *ret = newi2pat ? i2 : i3; - if (added_links_insn && DF_INSN_LUID (added_links_insn) < DF_INSN_LUID (ret)) - ret = added_links_insn; diff --git a/gcc14-Wno-format-security.patch b/gcc15-Wno-format-security.patch similarity index 80% rename from gcc14-Wno-format-security.patch rename to gcc15-Wno-format-security.patch index e317c15..66f62b8 100644 --- a/gcc14-Wno-format-security.patch +++ b/gcc15-Wno-format-security.patch @@ -9,15 +9,15 @@ * configure: Regenerated. --- gcc/configure.ac.jj 2017-02-13 12:20:53.000000000 +0100 -+++ gcc/configure.ac 2017-02-25 12:42:32.859175403 +0100 -@@ -570,7 +570,7 @@ AC_ARG_ENABLE(build-format-warnings, ++++ gcc/configure.ac 2024-11-30 13:34:11.100296256 +0100 +@@ -592,7 +592,7 @@ AC_ARG_ENABLE(build-format-warnings, AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]), [],[enable_build_format_warnings=yes]) AS_IF([test $enable_build_format_warnings = no], - [wf_opt=-Wno-format],[wf_opt=]) + [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=]) ACX_PROG_CXX_WARNING_OPTS( - m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ], + m4_quote(m4_do([-W -Wall -Wno-error=narrowing -Wwrite-strings ], [-Wcast-qual $wf_opt])), --- gcc/configure.jj 2017-02-13 12:20:52.000000000 +0100 +++ gcc/configure 2017-02-25 12:42:50.041946391 +0100 @@ -31,8 +31,8 @@ wf_opt= fi --- Makefile.tpl.jj 2023-11-29 13:21:41.680292662 +0100 -+++ Makefile.tpl 2023-11-29 13:23:24.677839321 +0100 -@@ -448,9 +448,9 @@ LDFLAGS = @LDFLAGS@ ++++ Makefile.tpl 2024-11-30 13:35:29.303196246 +0100 +@@ -450,9 +450,9 @@ LDFLAGS = @LDFLAGS@ LIBCFLAGS = $(CFLAGS) CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates @@ -43,11 +43,11 @@ +GDCFLAGS = $(filter-out -Wformat-security,@GDCFLAGS@) +GM2FLAGS = $(filter-out -Wformat-security,$(CFLAGS)) - PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + CRAB1_LIBS = @CRAB1_LIBS@ --- Makefile.in.jj 2023-11-29 13:21:41.691292507 +0100 -+++ Makefile.in 2023-11-29 13:24:01.254323180 +0100 -@@ -445,9 +445,9 @@ LDFLAGS = @LDFLAGS@ ++++ Makefile.in 2024-11-30 13:36:12.113594079 +0100 +@@ -447,9 +447,9 @@ LDFLAGS = @LDFLAGS@ LIBCFLAGS = $(CFLAGS) CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates @@ -58,5 +58,5 @@ +GDCFLAGS = $(filter-out -Wformat-security,@GDCFLAGS@) +GM2FLAGS = $(filter-out -Wformat-security,$(CFLAGS)) - PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + CRAB1_LIBS = @CRAB1_LIBS@ diff --git a/gcc14-d-shared-libphobos.patch b/gcc15-d-shared-libphobos.patch similarity index 100% rename from gcc14-d-shared-libphobos.patch rename to gcc15-d-shared-libphobos.patch diff --git a/gcc14-fortran-fdec-duplicates.patch b/gcc15-fortran-fdec-duplicates.patch similarity index 100% rename from gcc14-fortran-fdec-duplicates.patch rename to gcc15-fortran-fdec-duplicates.patch diff --git a/gcc14-hack.patch b/gcc15-hack.patch similarity index 57% rename from gcc14-hack.patch rename to gcc15-hack.patch index e98649e..9c5d57b 100644 --- a/gcc14-hack.patch +++ b/gcc15-hack.patch @@ -66,61 +66,117 @@ GDCFLAGS="$(GDCFLAGS) $${flags}" \ CXXFLAGS="$(CXXFLAGS) $${flags}" \ --- libcpp/macro.cc.jj 2019-01-09 13:01:21.420552123 +0100 -+++ libcpp/macro.cc 2019-01-11 18:18:17.736876285 +0100 -@@ -3256,8 +3256,6 @@ static cpp_macro * ++++ libcpp/macro.cc 2024-11-30 13:16:41.163056391 +0100 +@@ -3680,8 +3680,6 @@ static cpp_macro * create_iso_definition (cpp_reader *pfile) { bool following_paste_op = false; - const char *paste_op_error_msg = -- N_("'##' cannot appear at either end of a macro expansion"); +- N_("%<##%> cannot appear at either end of a macro expansion"); unsigned int num_extra_tokens = 0; unsigned nparms = 0; cpp_hashnode **params = NULL; -@@ -3382,7 +3380,9 @@ create_iso_definition (cpp_reader *pfile +@@ -3809,7 +3807,9 @@ create_iso_definition (cpp_reader *pfile function-like macros, but not at the end. */ if (following_paste_op) { - cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg); + cpp_error (pfile, CPP_DL_ERROR, -+ "'##' cannot appear at either end of a macro " ++ "%<##%> cannot appear at either end of a macro " + "expansion"); goto out; } if (!vaopt_tracker.completed ()) -@@ -3397,7 +3397,9 @@ create_iso_definition (cpp_reader *pfile +@@ -3824,7 +3824,9 @@ create_iso_definition (cpp_reader *pfile function-like macros, but not at the beginning. */ if (macro->count == 1) { - cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg); + cpp_error (pfile, CPP_DL_ERROR, -+ "'##' cannot appear at either end of a macro " ++ "%<##%> cannot appear at either end of a macro " + "expansion"); goto out; } --- libcpp/expr.cc.jj 2019-01-09 13:01:22.415535734 +0100 -+++ libcpp/expr.cc 2019-01-11 18:16:23.444726882 +0100 -@@ -803,16 +803,17 @@ cpp_classify_number (cpp_reader *pfile, ++++ libcpp/expr.cc 2024-11-30 13:14:52.468583689 +0100 +@@ -874,50 +874,54 @@ cpp_classify_number (cpp_reader *pfile, if ((result & CPP_N_WIDTH) == CPP_N_LARGE && CPP_OPTION (pfile, cpp_warn_long_long)) { -- const char *message = CPP_OPTION (pfile, cplusplus) +- const char *message = CPP_OPTION (pfile, cplusplus) - ? N_("use of C++11 long long integer constant") - : N_("use of C99 long long integer constant"); - if (CPP_OPTION (pfile, c99)) - cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location, +- cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location, - 0, message); -+ 0, CPP_OPTION (pfile, cplusplus) -+ ? N_("use of C++11 long long integer constant") -+ : N_("use of C99 long long integer constant")); ++ cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location, 0, ++ CPP_OPTION (pfile, cplusplus) ++ ? N_("use of C++11 long long integer " ++ "constant") ++ : N_("use of C99 long long integer " ++ "constant")); else cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG, - virtual_location, 0, message); + virtual_location, 0, + CPP_OPTION (pfile, cplusplus) -+ ? N_("use of C++11 long long integer constant") -+ : N_("use of C99 long long integer constant")); ++ ? N_("use of C++11 long long integer " ++ "constant") ++ : N_("use of C99 long long integer " ++ "constant")); } if ((result & CPP_N_SIZE_T) == CPP_N_SIZE_T + && !CPP_OPTION (pfile, size_t_literals)) +- { +- const char *message +- = (result & CPP_N_UNSIGNED) == CPP_N_UNSIGNED +- ? N_("use of C++23 % integer constant") +- : N_("use of C++23 %%> integer constant"); +- cpp_warning_with_line (pfile, CPP_W_SIZE_T_LITERALS, +- virtual_location, 0, message); +- } ++ cpp_warning_with_line (pfile, CPP_W_SIZE_T_LITERALS, ++ virtual_location, 0, ++ (result & CPP_N_UNSIGNED) == CPP_N_UNSIGNED ++ ? N_("use of C++23 % integer " ++ "constant") ++ : N_("use of C++23 %%> " ++ "integer constant")); + + if ((result & CPP_N_BITINT) != 0 + && CPP_OPTION (pfile, cpp_warn_c11_c23_compat) != 0) + { + if (CPP_OPTION (pfile, cpp_warn_c11_c23_compat) > 0) + { +- const char *message = N_("ISO C does not support literal " +- "% suffixes before C23"); + if (CPP_PEDANTIC (pfile) && !CPP_OPTION (pfile, true_false)) + cpp_pedwarning_with_line (pfile, CPP_W_C11_C23_COMPAT, +- virtual_location, 0, message); ++ virtual_location, 0, ++ "ISO C does not support literal " ++ "% suffixes before C23"); + else + cpp_warning_with_line (pfile, CPP_W_C11_C23_COMPAT, +- virtual_location, 0, message); +- } +- else if (!CPP_OPTION (pfile, true_false)) +- { +- const char *message = N_("ISO C does not support literal " ++ virtual_location, 0, ++ "ISO C does not support literal " + "% suffixes before C23"); +- cpp_pedwarning_with_line (pfile, CPP_W_PEDANTIC, +- virtual_location, 0, message); + } ++ else if (!CPP_OPTION (pfile, true_false)) ++ cpp_pedwarning_with_line (pfile, CPP_W_PEDANTIC, ++ virtual_location, 0, ++ "ISO C does not support literal " ++ "% suffixes before C23"); + } + + result |= CPP_N_INTEGER; diff --git a/gcc14-isl-dl.patch b/gcc15-isl-dl.patch similarity index 99% rename from gcc14-isl-dl.patch rename to gcc15-isl-dl.patch index 20dd8bf..dc0c49b 100644 --- a/gcc14-isl-dl.patch +++ b/gcc15-isl-dl.patch @@ -696,16 +696,16 @@ static void --- gcc/toplev.cc.jj 2017-02-19 13:02:31.000000000 +0100 -+++ gcc/toplev.cc 2017-02-19 16:50:25.536301350 +0100 -@@ -94,6 +94,7 @@ along with GCC; see the file COPYING3. ++++ gcc/toplev.cc 2024-11-30 13:22:34.175096117 +0100 +@@ -100,6 +100,7 @@ along with GCC; see the file COPYING3. #ifdef HAVE_isl #include +extern const char *get_isl_version (bool); #endif - static void general_init (const char *, bool); -@@ -683,7 +684,7 @@ print_version (FILE *file, const char *i + static void general_init (const char *, bool, unique_argv original_argv); +@@ -652,7 +653,7 @@ print_version (FILE *file, const char *i #ifndef HAVE_isl "none" #else diff --git a/gcc14-isl-dl2.patch b/gcc15-isl-dl2.patch similarity index 89% rename from gcc14-isl-dl2.patch rename to gcc15-isl-dl2.patch index 2e12499..8d2c4d9 100644 --- a/gcc14-isl-dl2.patch +++ b/gcc15-isl-dl2.patch @@ -6,8 +6,8 @@ directory. --- gcc/toplev.cc.jj 2008-12-09 23:59:10.000000000 +0100 -+++ gcc/toplev.cc 2009-01-27 14:33:52.000000000 +0100 -@@ -113,6 +113,8 @@ static void finalize (bool); ++++ gcc/toplev.cc 2024-11-30 13:26:05.085132543 +0100 +@@ -112,6 +112,8 @@ static void finalize (); static void crash_signal (int) ATTRIBUTE_NORETURN; static void compile_file (void); @@ -16,14 +16,14 @@ /* Decoded options, and number of such options. */ struct cl_decoded_option *save_decoded_options; unsigned int save_decoded_options_count; -@@ -2239,6 +2241,8 @@ toplev::main (int argc, char **argv) +@@ -2296,6 +2298,8 @@ toplev::main (int argc, char **argv) expandargv (&argc, &argv); + toplev_main_argv = CONST_CAST2 (const char **, char **, argv); + /* Initialization of GCC's environment, and diagnostics. */ - general_init (argv[0], m_init_signals); + general_init (argv[0], m_init_signals, std::move (original_argv)); --- gcc/graphite.cc.jj 2010-12-01 10:24:32.000000000 -0500 +++ gcc/graphite.cc 2010-12-01 11:46:07.832118193 -0500 diff --git a/gcc14-libgomp-omp_h-multilib.patch b/gcc15-libgomp-omp_h-multilib.patch similarity index 100% rename from gcc14-libgomp-omp_h-multilib.patch rename to gcc15-libgomp-omp_h-multilib.patch diff --git a/gcc14-libstdc++-docs.patch b/gcc15-libstdc++-docs.patch similarity index 74% rename from gcc14-libstdc++-docs.patch rename to gcc15-libstdc++-docs.patch index 0e0e0f9..fc94419 100644 --- a/gcc14-libstdc++-docs.patch +++ b/gcc15-libstdc++-docs.patch @@ -4,21 +4,21 @@ FSF

-+ Release 14.2.1 ++ Release 15.0.0 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the --- libstdc++-v3/doc/html/api.html.jj 2011-01-03 12:53:21.000000000 +0100 -+++ libstdc++-v3/doc/html/api.html 2011-01-04 18:12:01.672757784 +0100 ++++ libstdc++-v3/doc/html/api.html 2024-11-30 13:30:16.607594623 +0100 @@ -20,7 +20,9 @@ member functions for the library classes, finding out what is in a particular include file, looking at inheritance diagrams, etc.

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 14.2.1 release, ++ for the 15.0.0 release, + online - for each GCC release + for each GCC release and - + diff --git a/gcc14-libtool-no-rpath.patch b/gcc15-libtool-no-rpath.patch similarity index 100% rename from gcc14-libtool-no-rpath.patch rename to gcc15-libtool-no-rpath.patch diff --git a/gcc14-no-add-needed.patch b/gcc15-no-add-needed.patch similarity index 100% rename from gcc14-no-add-needed.patch rename to gcc15-no-add-needed.patch diff --git a/gcc15-pr118206.patch b/gcc15-pr118206.patch new file mode 100644 index 0000000..a72ae36 --- /dev/null +++ b/gcc15-pr118206.patch @@ -0,0 +1,581 @@ +2025-01-09 Jakub Jelinek + + PR tree-optimization/118206 + * gimple-fold.cc (fold_truth_andor_for_ifcombine): Temporarily disable. + * fold-const.cc (decode_field_reference, all_ones_mask_p, unextend, + fold_truth_andor_1): Temporarily revert 2024-12-12 changes. + +--- gcc/gimple-fold.cc.jj 2025-01-02 11:23:09.379616499 +0100 ++++ gcc/gimple-fold.cc 2025-01-09 09:08:53.789628193 +0100 +@@ -8037,7 +8037,8 @@ fold_truth_andor_for_ifcombine (enum tre + it were surrounded with a NE_EXPR. */ + + if (TREE_CODE_CLASS (lcode) != tcc_comparison +- || TREE_CODE_CLASS (rcode) != tcc_comparison) ++ || TREE_CODE_CLASS (rcode) != tcc_comparison ++ || 1) + return 0; + + /* We don't normally find TRUTH_*IF_EXPR in gimple, but these codes may be +--- gcc/fold-const.cc.jj ++++ gcc/fold-const.cc +@@ -137,6 +137,7 @@ static tree range_successor (tree); + static tree fold_range_test (location_t, enum tree_code, tree, tree, tree); + static tree fold_cond_expr_with_comparison (location_t, tree, enum tree_code, + tree, tree, tree, tree); ++static tree unextend (tree, int, int, tree); + static tree extract_muldiv (tree, tree, enum tree_code, tree, bool *); + static tree extract_muldiv_1 (tree, tree, enum tree_code, tree, bool *); + static tree fold_binary_op_with_conditional_arg (location_t, +@@ -5021,6 +5022,136 @@ optimize_bit_field_compare (location_t loc, enum tree_code code, + return lhs; + } + ++/* Subroutine for fold_truth_andor_1: decode a field reference. ++ ++ If EXP is a comparison reference, we return the innermost reference. ++ ++ *PBITSIZE is set to the number of bits in the reference, *PBITPOS is ++ set to the starting bit number. ++ ++ If the innermost field can be completely contained in a mode-sized ++ unit, *PMODE is set to that mode. Otherwise, it is set to VOIDmode. ++ ++ *PVOLATILEP is set to 1 if the any expression encountered is volatile; ++ otherwise it is not changed. ++ ++ *PUNSIGNEDP is set to the signedness of the field. ++ ++ *PREVERSEP is set to the storage order of the field. ++ ++ *PMASK is set to the mask used. This is either contained in a ++ BIT_AND_EXPR or derived from the width of the field. ++ ++ *PAND_MASK is set to the mask found in a BIT_AND_EXPR, if any. ++ ++ Return 0 if this is not a component reference or is one that we can't ++ do anything with. */ ++ ++static tree ++decode_field_reference (location_t loc, tree *exp_, HOST_WIDE_INT *pbitsize, ++ HOST_WIDE_INT *pbitpos, machine_mode *pmode, ++ int *punsignedp, int *preversep, int *pvolatilep, ++ tree *pmask, tree *pand_mask) ++{ ++ tree exp = *exp_; ++ tree outer_type = 0; ++ tree and_mask = 0; ++ tree mask, inner, offset; ++ tree unsigned_type; ++ unsigned int precision; ++ ++ /* All the optimizations using this function assume integer fields. ++ There are problems with FP fields since the type_for_size call ++ below can fail for, e.g., XFmode. */ ++ if (! INTEGRAL_TYPE_P (TREE_TYPE (exp))) ++ return NULL_TREE; ++ ++ /* We are interested in the bare arrangement of bits, so strip everything ++ that doesn't affect the machine mode. However, record the type of the ++ outermost expression if it may matter below. */ ++ if (CONVERT_EXPR_P (exp) ++ || TREE_CODE (exp) == NON_LVALUE_EXPR) ++ outer_type = TREE_TYPE (exp); ++ STRIP_NOPS (exp); ++ ++ if (TREE_CODE (exp) == BIT_AND_EXPR) ++ { ++ and_mask = TREE_OPERAND (exp, 1); ++ exp = TREE_OPERAND (exp, 0); ++ STRIP_NOPS (exp); STRIP_NOPS (and_mask); ++ if (TREE_CODE (and_mask) != INTEGER_CST) ++ return NULL_TREE; ++ } ++ ++ poly_int64 poly_bitsize, poly_bitpos; ++ inner = get_inner_reference (exp, &poly_bitsize, &poly_bitpos, &offset, ++ pmode, punsignedp, preversep, pvolatilep); ++ if ((inner == exp && and_mask == 0) ++ || !poly_bitsize.is_constant (pbitsize) ++ || !poly_bitpos.is_constant (pbitpos) ++ || *pbitsize < 0 ++ || offset != 0 ++ || TREE_CODE (inner) == PLACEHOLDER_EXPR ++ /* We eventually want to build a larger reference and need to take ++ the address of this. */ ++ || (!REFERENCE_CLASS_P (inner) && !DECL_P (inner)) ++ /* Reject out-of-bound accesses (PR79731). */ ++ || (! AGGREGATE_TYPE_P (TREE_TYPE (inner)) ++ && compare_tree_int (TYPE_SIZE (TREE_TYPE (inner)), ++ *pbitpos + *pbitsize) < 0)) ++ return NULL_TREE; ++ ++ unsigned_type = lang_hooks.types.type_for_size (*pbitsize, 1); ++ if (unsigned_type == NULL_TREE) ++ return NULL_TREE; ++ ++ *exp_ = exp; ++ ++ /* If the number of bits in the reference is the same as the bitsize of ++ the outer type, then the outer type gives the signedness. Otherwise ++ (in case of a small bitfield) the signedness is unchanged. */ ++ if (outer_type && *pbitsize == TYPE_PRECISION (outer_type)) ++ *punsignedp = TYPE_UNSIGNED (outer_type); ++ ++ /* Compute the mask to access the bitfield. */ ++ precision = TYPE_PRECISION (unsigned_type); ++ ++ mask = build_int_cst_type (unsigned_type, -1); ++ ++ mask = const_binop (LSHIFT_EXPR, mask, size_int (precision - *pbitsize)); ++ mask = const_binop (RSHIFT_EXPR, mask, size_int (precision - *pbitsize)); ++ ++ /* Merge it with the mask we found in the BIT_AND_EXPR, if any. */ ++ if (and_mask != 0) ++ mask = fold_build2_loc (loc, BIT_AND_EXPR, unsigned_type, ++ fold_convert_loc (loc, unsigned_type, and_mask), mask); ++ ++ *pmask = mask; ++ *pand_mask = and_mask; ++ return inner; ++} ++ ++/* Return nonzero if MASK represents a mask of SIZE ones in the low-order ++ bit positions and MASK is SIGNED. */ ++ ++static bool ++all_ones_mask_p (const_tree mask, unsigned int size) ++{ ++ tree type = TREE_TYPE (mask); ++ unsigned int precision = TYPE_PRECISION (type); ++ ++ /* If this function returns true when the type of the mask is ++ UNSIGNED, then there will be errors. In particular see ++ gcc.c-torture/execute/990326-1.c. There does not appear to be ++ any documentation paper trail as to why this is so. But the pre ++ wide-int worked with that restriction and it has been preserved ++ here. */ ++ if (size > precision || TYPE_SIGN (type) == UNSIGNED) ++ return false; ++ ++ return wi::mask (size, false, precision) == wi::to_wide (mask); ++} ++ + /* Subroutine for fold: determine if VAL is the INTEGER_CONST that + represents the sign bit of EXP's type. If EXP represents a sign + or zero extension, also test VAL against the unextended type. +@@ -6330,6 +6461,48 @@ fold_range_test (location_t loc, enum tree_code code, tree type, + return 0; + } + ++/* Subroutine for fold_truth_andor_1: C is an INTEGER_CST interpreted as a P ++ bit value. Arrange things so the extra bits will be set to zero if and ++ only if C is signed-extended to its full width. If MASK is nonzero, ++ it is an INTEGER_CST that should be AND'ed with the extra bits. */ ++ ++static tree ++unextend (tree c, int p, int unsignedp, tree mask) ++{ ++ tree type = TREE_TYPE (c); ++ int modesize = GET_MODE_BITSIZE (SCALAR_INT_TYPE_MODE (type)); ++ tree temp; ++ ++ if (p == modesize || unsignedp) ++ return c; ++ ++ /* We work by getting just the sign bit into the low-order bit, then ++ into the high-order bit, then sign-extend. We then XOR that value ++ with C. */ ++ temp = build_int_cst (TREE_TYPE (c), ++ wi::extract_uhwi (wi::to_wide (c), p - 1, 1)); ++ ++ /* We must use a signed type in order to get an arithmetic right shift. ++ However, we must also avoid introducing accidental overflows, so that ++ a subsequent call to integer_zerop will work. Hence we must ++ do the type conversion here. At this point, the constant is either ++ zero or one, and the conversion to a signed type can never overflow. ++ We could get an overflow if this conversion is done anywhere else. */ ++ if (TYPE_UNSIGNED (type)) ++ temp = fold_convert (signed_type_for (type), temp); ++ ++ temp = const_binop (LSHIFT_EXPR, temp, size_int (modesize - 1)); ++ temp = const_binop (RSHIFT_EXPR, temp, size_int (modesize - p - 1)); ++ if (mask != 0) ++ temp = const_binop (BIT_AND_EXPR, temp, ++ fold_convert (TREE_TYPE (c), mask)); ++ /* If necessary, convert the type back to match the type of C. */ ++ if (TYPE_UNSIGNED (type)) ++ temp = fold_convert (type, temp); ++ ++ return fold_convert (type, const_binop (BIT_XOR_EXPR, c, temp)); ++} ++ + /* For an expression that has the form + (A && B) || ~B + or +@@ -6400,13 +6573,20 @@ merge_truthop_with_opposite_arm (location_t loc, tree op, tree cmpop, + lhs, rhs); + return NULL_TREE; + } +- ++ + /* Find ways of folding logical expressions of LHS and RHS: + Try to merge two comparisons to the same innermost item. + Look for range tests like "ch >= '0' && ch <= '9'". + Look for combinations of simple terms on machines with expensive branches + and evaluate the RHS unconditionally. + ++ For example, if we have p->a == 2 && p->b == 4 and we can make an ++ object large enough to span both A and B, we can do this with a comparison ++ against the object ANDed with the a mask. ++ ++ If we have p->a == q->a && p->b == q->b, we may be able to use bit masking ++ operations to do this with one comparison. ++ + We check for both normal comparisons and the BIT_AND_EXPRs made this by + function and the one above. + +@@ -6431,9 +6611,24 @@ fold_truth_andor_1 (location_t loc, enum tree_code code, tree truth_type, + convert EQ_EXPR to NE_EXPR so we need not reject the "wrong" + comparison for one-bit fields. */ + ++ enum tree_code wanted_code; + enum tree_code lcode, rcode; + tree ll_arg, lr_arg, rl_arg, rr_arg; +- tree result; ++ tree ll_inner, lr_inner, rl_inner, rr_inner; ++ HOST_WIDE_INT ll_bitsize, ll_bitpos, lr_bitsize, lr_bitpos; ++ HOST_WIDE_INT rl_bitsize, rl_bitpos, rr_bitsize, rr_bitpos; ++ HOST_WIDE_INT xll_bitpos, xlr_bitpos, xrl_bitpos, xrr_bitpos; ++ HOST_WIDE_INT lnbitsize, lnbitpos, rnbitsize, rnbitpos; ++ int ll_unsignedp, lr_unsignedp, rl_unsignedp, rr_unsignedp; ++ int ll_reversep, lr_reversep, rl_reversep, rr_reversep; ++ machine_mode ll_mode, lr_mode, rl_mode, rr_mode; ++ scalar_int_mode lnmode, rnmode; ++ tree ll_mask, lr_mask, rl_mask, rr_mask; ++ tree ll_and_mask, lr_and_mask, rl_and_mask, rr_and_mask; ++ tree l_const, r_const; ++ tree lntype, rntype, result; ++ HOST_WIDE_INT first_bit, end_bit; ++ int volatilep; + + /* Start by getting the comparison codes. Fail if anything is volatile. + If one operand is a BIT_AND_EXPR with the constant one, treat it as if +@@ -6528,7 +6723,316 @@ fold_truth_andor_1 (location_t loc, enum tree_code code, tree truth_type, + build_int_cst (TREE_TYPE (ll_arg), 0)); + } + +- return 0; ++ /* See if the comparisons can be merged. Then get all the parameters for ++ each side. */ ++ ++ if ((lcode != EQ_EXPR && lcode != NE_EXPR) ++ || (rcode != EQ_EXPR && rcode != NE_EXPR)) ++ return 0; ++ ++ ll_reversep = lr_reversep = rl_reversep = rr_reversep = 0; ++ volatilep = 0; ++ ll_inner = decode_field_reference (loc, &ll_arg, ++ &ll_bitsize, &ll_bitpos, &ll_mode, ++ &ll_unsignedp, &ll_reversep, &volatilep, ++ &ll_mask, &ll_and_mask); ++ lr_inner = decode_field_reference (loc, &lr_arg, ++ &lr_bitsize, &lr_bitpos, &lr_mode, ++ &lr_unsignedp, &lr_reversep, &volatilep, ++ &lr_mask, &lr_and_mask); ++ rl_inner = decode_field_reference (loc, &rl_arg, ++ &rl_bitsize, &rl_bitpos, &rl_mode, ++ &rl_unsignedp, &rl_reversep, &volatilep, ++ &rl_mask, &rl_and_mask); ++ rr_inner = decode_field_reference (loc, &rr_arg, ++ &rr_bitsize, &rr_bitpos, &rr_mode, ++ &rr_unsignedp, &rr_reversep, &volatilep, ++ &rr_mask, &rr_and_mask); ++ ++ /* It must be true that the inner operation on the lhs of each ++ comparison must be the same if we are to be able to do anything. ++ Then see if we have constants. If not, the same must be true for ++ the rhs's. */ ++ if (volatilep ++ || ll_reversep != rl_reversep ++ || ll_inner == 0 || rl_inner == 0 ++ || ! operand_equal_p (ll_inner, rl_inner, 0)) ++ return 0; ++ ++ if (TREE_CODE (lr_arg) == INTEGER_CST ++ && TREE_CODE (rr_arg) == INTEGER_CST) ++ { ++ l_const = lr_arg, r_const = rr_arg; ++ lr_reversep = ll_reversep; ++ } ++ else if (lr_reversep != rr_reversep ++ || lr_inner == 0 || rr_inner == 0 ++ || ! operand_equal_p (lr_inner, rr_inner, 0)) ++ return 0; ++ else ++ l_const = r_const = 0; ++ ++ /* If either comparison code is not correct for our logical operation, ++ fail. However, we can convert a one-bit comparison against zero into ++ the opposite comparison against that bit being set in the field. */ ++ ++ wanted_code = (code == TRUTH_AND_EXPR ? EQ_EXPR : NE_EXPR); ++ if (lcode != wanted_code) ++ { ++ if (l_const && integer_zerop (l_const) && integer_pow2p (ll_mask)) ++ { ++ /* Make the left operand unsigned, since we are only interested ++ in the value of one bit. Otherwise we are doing the wrong ++ thing below. */ ++ ll_unsignedp = 1; ++ l_const = ll_mask; ++ } ++ else ++ return 0; ++ } ++ ++ /* This is analogous to the code for l_const above. */ ++ if (rcode != wanted_code) ++ { ++ if (r_const && integer_zerop (r_const) && integer_pow2p (rl_mask)) ++ { ++ rl_unsignedp = 1; ++ r_const = rl_mask; ++ } ++ else ++ return 0; ++ } ++ ++ /* See if we can find a mode that contains both fields being compared on ++ the left. If we can't, fail. Otherwise, update all constants and masks ++ to be relative to a field of that size. */ ++ first_bit = MIN (ll_bitpos, rl_bitpos); ++ end_bit = MAX (ll_bitpos + ll_bitsize, rl_bitpos + rl_bitsize); ++ if (!get_best_mode (end_bit - first_bit, first_bit, 0, 0, ++ TYPE_ALIGN (TREE_TYPE (ll_inner)), BITS_PER_WORD, ++ volatilep, &lnmode)) ++ return 0; ++ ++ lnbitsize = GET_MODE_BITSIZE (lnmode); ++ lnbitpos = first_bit & ~ (lnbitsize - 1); ++ lntype = lang_hooks.types.type_for_size (lnbitsize, 1); ++ xll_bitpos = ll_bitpos - lnbitpos, xrl_bitpos = rl_bitpos - lnbitpos; ++ ++ if (ll_reversep ? !BYTES_BIG_ENDIAN : BYTES_BIG_ENDIAN) ++ { ++ xll_bitpos = lnbitsize - xll_bitpos - ll_bitsize; ++ xrl_bitpos = lnbitsize - xrl_bitpos - rl_bitsize; ++ } ++ ++ ll_mask = const_binop (LSHIFT_EXPR, fold_convert_loc (loc, lntype, ll_mask), ++ size_int (xll_bitpos)); ++ rl_mask = const_binop (LSHIFT_EXPR, fold_convert_loc (loc, lntype, rl_mask), ++ size_int (xrl_bitpos)); ++ if (ll_mask == NULL_TREE || rl_mask == NULL_TREE) ++ return 0; ++ ++ if (l_const) ++ { ++ l_const = fold_convert_loc (loc, lntype, l_const); ++ l_const = unextend (l_const, ll_bitsize, ll_unsignedp, ll_and_mask); ++ l_const = const_binop (LSHIFT_EXPR, l_const, size_int (xll_bitpos)); ++ if (l_const == NULL_TREE) ++ return 0; ++ if (! integer_zerop (const_binop (BIT_AND_EXPR, l_const, ++ fold_build1_loc (loc, BIT_NOT_EXPR, ++ lntype, ll_mask)))) ++ { ++ warning (0, "comparison is always %d", wanted_code == NE_EXPR); ++ ++ return constant_boolean_node (wanted_code == NE_EXPR, truth_type); ++ } ++ } ++ if (r_const) ++ { ++ r_const = fold_convert_loc (loc, lntype, r_const); ++ r_const = unextend (r_const, rl_bitsize, rl_unsignedp, rl_and_mask); ++ r_const = const_binop (LSHIFT_EXPR, r_const, size_int (xrl_bitpos)); ++ if (r_const == NULL_TREE) ++ return 0; ++ if (! integer_zerop (const_binop (BIT_AND_EXPR, r_const, ++ fold_build1_loc (loc, BIT_NOT_EXPR, ++ lntype, rl_mask)))) ++ { ++ warning (0, "comparison is always %d", wanted_code == NE_EXPR); ++ ++ return constant_boolean_node (wanted_code == NE_EXPR, truth_type); ++ } ++ } ++ ++ /* If the right sides are not constant, do the same for it. Also, ++ disallow this optimization if a size, signedness or storage order ++ mismatch occurs between the left and right sides. */ ++ if (l_const == 0) ++ { ++ if (ll_bitsize != lr_bitsize || rl_bitsize != rr_bitsize ++ || ll_unsignedp != lr_unsignedp || rl_unsignedp != rr_unsignedp ++ || ll_reversep != lr_reversep ++ /* Make sure the two fields on the right ++ correspond to the left without being swapped. */ ++ || ll_bitpos - rl_bitpos != lr_bitpos - rr_bitpos) ++ return 0; ++ ++ first_bit = MIN (lr_bitpos, rr_bitpos); ++ end_bit = MAX (lr_bitpos + lr_bitsize, rr_bitpos + rr_bitsize); ++ if (!get_best_mode (end_bit - first_bit, first_bit, 0, 0, ++ TYPE_ALIGN (TREE_TYPE (lr_inner)), BITS_PER_WORD, ++ volatilep, &rnmode)) ++ return 0; ++ ++ rnbitsize = GET_MODE_BITSIZE (rnmode); ++ rnbitpos = first_bit & ~ (rnbitsize - 1); ++ rntype = lang_hooks.types.type_for_size (rnbitsize, 1); ++ xlr_bitpos = lr_bitpos - rnbitpos, xrr_bitpos = rr_bitpos - rnbitpos; ++ ++ if (lr_reversep ? !BYTES_BIG_ENDIAN : BYTES_BIG_ENDIAN) ++ { ++ xlr_bitpos = rnbitsize - xlr_bitpos - lr_bitsize; ++ xrr_bitpos = rnbitsize - xrr_bitpos - rr_bitsize; ++ } ++ ++ lr_mask = const_binop (LSHIFT_EXPR, fold_convert_loc (loc, ++ rntype, lr_mask), ++ size_int (xlr_bitpos)); ++ rr_mask = const_binop (LSHIFT_EXPR, fold_convert_loc (loc, ++ rntype, rr_mask), ++ size_int (xrr_bitpos)); ++ if (lr_mask == NULL_TREE || rr_mask == NULL_TREE) ++ return 0; ++ ++ /* Make a mask that corresponds to both fields being compared. ++ Do this for both items being compared. If the operands are the ++ same size and the bits being compared are in the same position ++ then we can do this by masking both and comparing the masked ++ results. */ ++ ll_mask = const_binop (BIT_IOR_EXPR, ll_mask, rl_mask); ++ lr_mask = const_binop (BIT_IOR_EXPR, lr_mask, rr_mask); ++ if (lnbitsize == rnbitsize ++ && xll_bitpos == xlr_bitpos ++ && lnbitpos >= 0 ++ && rnbitpos >= 0) ++ { ++ lhs = make_bit_field_ref (loc, ll_inner, ll_arg, ++ lntype, lnbitsize, lnbitpos, ++ ll_unsignedp || rl_unsignedp, ll_reversep); ++ if (! all_ones_mask_p (ll_mask, lnbitsize)) ++ lhs = build2 (BIT_AND_EXPR, lntype, lhs, ll_mask); ++ ++ rhs = make_bit_field_ref (loc, lr_inner, lr_arg, ++ rntype, rnbitsize, rnbitpos, ++ lr_unsignedp || rr_unsignedp, lr_reversep); ++ if (! all_ones_mask_p (lr_mask, rnbitsize)) ++ rhs = build2 (BIT_AND_EXPR, rntype, rhs, lr_mask); ++ ++ return build2_loc (loc, wanted_code, truth_type, lhs, rhs); ++ } ++ ++ /* There is still another way we can do something: If both pairs of ++ fields being compared are adjacent, we may be able to make a wider ++ field containing them both. ++ ++ Note that we still must mask the lhs/rhs expressions. Furthermore, ++ the mask must be shifted to account for the shift done by ++ make_bit_field_ref. */ ++ if (((ll_bitsize + ll_bitpos == rl_bitpos ++ && lr_bitsize + lr_bitpos == rr_bitpos) ++ || (ll_bitpos == rl_bitpos + rl_bitsize ++ && lr_bitpos == rr_bitpos + rr_bitsize)) ++ && ll_bitpos >= 0 ++ && rl_bitpos >= 0 ++ && lr_bitpos >= 0 ++ && rr_bitpos >= 0) ++ { ++ tree type; ++ ++ lhs = make_bit_field_ref (loc, ll_inner, ll_arg, lntype, ++ ll_bitsize + rl_bitsize, ++ MIN (ll_bitpos, rl_bitpos), ++ ll_unsignedp, ll_reversep); ++ rhs = make_bit_field_ref (loc, lr_inner, lr_arg, rntype, ++ lr_bitsize + rr_bitsize, ++ MIN (lr_bitpos, rr_bitpos), ++ lr_unsignedp, lr_reversep); ++ ++ ll_mask = const_binop (RSHIFT_EXPR, ll_mask, ++ size_int (MIN (xll_bitpos, xrl_bitpos))); ++ lr_mask = const_binop (RSHIFT_EXPR, lr_mask, ++ size_int (MIN (xlr_bitpos, xrr_bitpos))); ++ if (ll_mask == NULL_TREE || lr_mask == NULL_TREE) ++ return 0; ++ ++ /* Convert to the smaller type before masking out unwanted bits. */ ++ type = lntype; ++ if (lntype != rntype) ++ { ++ if (lnbitsize > rnbitsize) ++ { ++ lhs = fold_convert_loc (loc, rntype, lhs); ++ ll_mask = fold_convert_loc (loc, rntype, ll_mask); ++ type = rntype; ++ } ++ else if (lnbitsize < rnbitsize) ++ { ++ rhs = fold_convert_loc (loc, lntype, rhs); ++ lr_mask = fold_convert_loc (loc, lntype, lr_mask); ++ type = lntype; ++ } ++ } ++ ++ if (! all_ones_mask_p (ll_mask, ll_bitsize + rl_bitsize)) ++ lhs = build2 (BIT_AND_EXPR, type, lhs, ll_mask); ++ ++ if (! all_ones_mask_p (lr_mask, lr_bitsize + rr_bitsize)) ++ rhs = build2 (BIT_AND_EXPR, type, rhs, lr_mask); ++ ++ return build2_loc (loc, wanted_code, truth_type, lhs, rhs); ++ } ++ ++ return 0; ++ } ++ ++ /* Handle the case of comparisons with constants. If there is something in ++ common between the masks, those bits of the constants must be the same. ++ If not, the condition is always false. Test for this to avoid generating ++ incorrect code below. */ ++ result = const_binop (BIT_AND_EXPR, ll_mask, rl_mask); ++ if (! integer_zerop (result) ++ && simple_cst_equal (const_binop (BIT_AND_EXPR, result, l_const), ++ const_binop (BIT_AND_EXPR, result, r_const)) != 1) ++ { ++ if (wanted_code == NE_EXPR) ++ { ++ warning (0, "% of unmatched not-equal tests is always 1"); ++ return constant_boolean_node (true, truth_type); ++ } ++ else ++ { ++ warning (0, "% of mutually exclusive equal-tests is always 0"); ++ return constant_boolean_node (false, truth_type); ++ } ++ } ++ ++ if (lnbitpos < 0) ++ return 0; ++ ++ /* Construct the expression we will return. First get the component ++ reference we will make. Unless the mask is all ones the width of ++ that field, perform the mask operation. Then compare with the ++ merged constant. */ ++ result = make_bit_field_ref (loc, ll_inner, ll_arg, ++ lntype, lnbitsize, lnbitpos, ++ ll_unsignedp || rl_unsignedp, ll_reversep); ++ ++ ll_mask = const_binop (BIT_IOR_EXPR, ll_mask, rl_mask); ++ if (! all_ones_mask_p (ll_mask, lnbitsize)) ++ result = build2_loc (loc, BIT_AND_EXPR, lntype, result, ll_mask); ++ ++ return build2_loc (loc, wanted_code, truth_type, result, ++ const_binop (BIT_IOR_EXPR, l_const, r_const)); + } + + /* T is an integer expression that is being multiplied, divided, or taken a diff --git a/gcc15-pr118362.patch b/gcc15-pr118362.patch new file mode 100644 index 0000000..5dedb0a --- /dev/null +++ b/gcc15-pr118362.patch @@ -0,0 +1,17 @@ +2025-01-08 Stefan Schulze Frielinghaus + + PR target/118362 + * config/s390/s390.cc (s390_constant_via_vgbm_p): Punt on + CONST_VECTOR with modes larger than 16 bytes. + +--- gcc/config/s390/s390.cc.jj ++++ gcc/config/s390/s390.cc +@@ -2818,7 +2818,7 @@ s390_constant_via_vgbm_p (rtx op, unsigned *mask) + unsigned tmp_mask = 0; + int nunit, unit_size; + +- if (GET_CODE (op) == CONST_VECTOR) ++ if (GET_CODE (op) == CONST_VECTOR && GET_MODE_SIZE (GET_MODE (op)) <= 16) + { + if (GET_MODE_INNER (GET_MODE (op)) == TImode + || GET_MODE_INNER (GET_MODE (op)) == TFmode) diff --git a/gcc14-rh1574936.patch b/gcc15-rh1574936.patch similarity index 100% rename from gcc14-rh1574936.patch rename to gcc15-rh1574936.patch diff --git a/gcc14-sparc-config-detection.patch b/gcc15-sparc-config-detection.patch similarity index 100% rename from gcc14-sparc-config-detection.patch rename to gcc15-sparc-config-detection.patch diff --git a/sources b/sources index df7802d..27ec149 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.2.1-20241104.tar.xz) = 4a453e1b7e2712fd2a12d28cf2aaf8e76c789f7e747218cdf867eaca84e381305bf119c7db873c5c3f0981657dbefcded77ad74a0960034b95232d906e4b02d0 +SHA512 (gcc-15.0.0-20250109.tar.xz) = 3dc995fc2492494f62977a176bd83e3b08ef87024253060f46681dc483037d8528abecaadd9f0202e2a994239a52d4cc78b3aa3cdad7011ad4c789d789082717 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 -SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d +SHA512 (newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz) = 839bb0c45b5023a83e1a5bf8773050af46bd075754502fc49a62ab860144c9a6bdc0a7d52e6c7ded87ba13ce58192755dd3f83333bc7c61ffb184fef4142a808 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 130b5c0e0eb90884ad9090e90b511a383e9cede4 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 9 Jan 2025 09:43:05 +0100 Subject: [PATCH 231/293] Fix up PR118362 patch. --- gcc15-pr118362.patch | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gcc15-pr118362.patch b/gcc15-pr118362.patch index 5dedb0a..bcb5d73 100644 --- a/gcc15-pr118362.patch +++ b/gcc15-pr118362.patch @@ -1,12 +1,12 @@ -2025-01-08 Stefan Schulze Frielinghaus +2025-01-09 Stefan Schulze Frielinghaus PR target/118362 * config/s390/s390.cc (s390_constant_via_vgbm_p): Punt on CONST_VECTOR with modes larger than 16 bytes. ---- gcc/config/s390/s390.cc.jj -+++ gcc/config/s390/s390.cc -@@ -2818,7 +2818,7 @@ s390_constant_via_vgbm_p (rtx op, unsigned *mask) +--- gcc/config/s390/s390.cc.jj 2025-01-07 18:30:20.697392148 +0100 ++++ gcc/config/s390/s390.cc 2025-01-09 09:41:57.428250479 +0100 +@@ -2818,7 +2818,7 @@ s390_constant_via_vgbm_p (rtx op, unsign unsigned tmp_mask = 0; int nunit, unit_size; @@ -14,4 +14,4 @@ + if (GET_CODE (op) == CONST_VECTOR && GET_MODE_SIZE (GET_MODE (op)) <= 16) { if (GET_MODE_INNER (GET_MODE (op)) == TImode - || GET_MODE_INNER (GET_MODE (op)) == TFmode) + || GET_MODE_INNER (GET_MODE (op)) == TFmode) From f7d926bcedc992f16cbc06305ec58adb5cd6196e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 9 Jan 2025 21:35:16 +0100 Subject: [PATCH 232/293] 15.0.0-0.3 --- gcc.spec | 4 ---- 1 file changed, 4 deletions(-) diff --git a/gcc.spec b/gcc.spec index 8656fd3..2e6336a 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1465,12 +1465,8 @@ rm -rf %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/ rm -rf %{buildroot}%{_prefix}/%{_lib}/libc[cp]1* mv -f %{buildroot}%{_prefix}/nvptx-none/lib/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/ mv -f %{buildroot}%{_prefix}/nvptx-none/lib/mgomp/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/mgomp/ -mv -f %{buildroot}%{_prefix}/nvptx-none/lib/mptx-3.1/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/mptx-3.1/ -mv -f %{buildroot}%{_prefix}/nvptx-none/lib/mgomp/mptx-3.1/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/mgomp/mptx-3.1/ mv -f %{buildroot}%{_prefix}/lib/gcc/nvptx-none/%{gcc_major}/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/ mv -f %{buildroot}%{_prefix}/lib/gcc/nvptx-none/%{gcc_major}/mgomp/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/mgomp/ -mv -f %{buildroot}%{_prefix}/lib/gcc/nvptx-none/%{gcc_major}/mptx-3.1/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/mptx-3.1/ -mv -f %{buildroot}%{_prefix}/lib/gcc/nvptx-none/%{gcc_major}/mgomp/mptx-3.1/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/mgomp/mptx-3.1/ find %{buildroot}%{_prefix}/lib/gcc/nvptx-none %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none \ %{buildroot}%{_prefix}/nvptx-none/lib -name \*.la | xargs rm cd .. From 33699f47c3926956c3481c9070e48fcc1d1c2241 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 11 Jan 2025 11:38:09 +0100 Subject: [PATCH 233/293] 15.0.0-0.4 --- .gitignore | 1 + gcc.spec | 21 ++++++++++++++++----- gcc15-pr118362.patch | 17 ----------------- sources | 2 +- 4 files changed, 18 insertions(+), 23 deletions(-) delete mode 100644 gcc15-pr118362.patch diff --git a/.gitignore b/.gitignore index b074da3..eba52e7 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz /gcc-15.0.0-20250109.tar.xz /newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz +/gcc-15.0.0-20250111.tar.xz diff --git a/gcc.spec b/gcc.spec index 2e6336a..0c36924 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20250109 -%global gitrev f890bd2c90be240213d8f1023aed4ad9647a293c +%global DATE 20250111 +%global gitrev 20e73534b5a3aeac8624799d31783f12f24e29cb %global gcc_version 15.0.0 %global gcc_major 15 # Note, gcc_release must be integer, if you want to add suffixes to @@ -143,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.3%{?dist} +Release: %{gcc_release}.4%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -299,7 +299,6 @@ Patch9: gcc15-Wno-format-security.patch Patch10: gcc15-rh1574936.patch Patch11: gcc15-d-shared-libphobos.patch Patch12: gcc15-pr118206.patch -Patch13: gcc15-pr118362.patch Patch50: isl-rh2155127.patch @@ -915,7 +914,6 @@ so that there cannot be any synchronization problems. %endif %patch -P11 -p0 -b .d-shared-libphobos~ %patch -P12 -p0 -b .pr118206~ -%patch -P13 -p0 -b .pr118362~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3675,5 +3673,18 @@ end %endif %changelog +* Sat Jan 11 2025 Jakub Jelinek 15.0.0-0.4 +- update from trunk + - PRs ada/18765, ada/118274, c/116060, c/117866, c/118376, c++/117792, + c++/117887, c++/117925, c++/117937, c++/117993, c++/118060, + c++/118277, c++/118387, c++/118391, fortran/108434, fortran/118337, + ipa/118138, rtl-optimization/117186, rtl-optimization/117467, + rtl-optimization/117934, rtl-optimization/118266, target/65181, + target/118017, target/118131, target/118188, target/118332, + target/118362, testsuite/118025, tree-optimization/88575, + tree-optimization/116126, tree-optimization/117927, + tree-optimization/118206, tree-optimization/118211, + tree-optimization/118344 + * Thu Jan 9 2025 Jakub Jelinek 15.0.0-0.3 - new package diff --git a/gcc15-pr118362.patch b/gcc15-pr118362.patch deleted file mode 100644 index bcb5d73..0000000 --- a/gcc15-pr118362.patch +++ /dev/null @@ -1,17 +0,0 @@ -2025-01-09 Stefan Schulze Frielinghaus - - PR target/118362 - * config/s390/s390.cc (s390_constant_via_vgbm_p): Punt on - CONST_VECTOR with modes larger than 16 bytes. - ---- gcc/config/s390/s390.cc.jj 2025-01-07 18:30:20.697392148 +0100 -+++ gcc/config/s390/s390.cc 2025-01-09 09:41:57.428250479 +0100 -@@ -2818,7 +2818,7 @@ s390_constant_via_vgbm_p (rtx op, unsign - unsigned tmp_mask = 0; - int nunit, unit_size; - -- if (GET_CODE (op) == CONST_VECTOR) -+ if (GET_CODE (op) == CONST_VECTOR && GET_MODE_SIZE (GET_MODE (op)) <= 16) - { - if (GET_MODE_INNER (GET_MODE (op)) == TImode - || GET_MODE_INNER (GET_MODE (op)) == TFmode) diff --git a/sources b/sources index 27ec149..528bdd4 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.0.0-20250109.tar.xz) = 3dc995fc2492494f62977a176bd83e3b08ef87024253060f46681dc483037d8528abecaadd9f0202e2a994239a52d4cc78b3aa3cdad7011ad4c789d789082717 +SHA512 (gcc-15.0.0-20250111.tar.xz) = 4a34058f92167ccfb08ddbbac0b4aa78599b98fd5768ecc02cf89e35e8609b5dcb9e276bf98dd854d24f965795d79497dbd4a3c8ef93d816ee689945689daf07 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz) = 839bb0c45b5023a83e1a5bf8773050af46bd075754502fc49a62ab860144c9a6bdc0a7d52e6c7ded87ba13ce58192755dd3f83333bc7c61ffb184fef4142a808 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 37a386303463dbdaefb097d36a730b6e8edc7df1 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 14 Jan 2025 00:05:44 +0100 Subject: [PATCH 234/293] 15.0.1-0.1 --- .gitignore | 1 + gcc.spec | 52 +++++++++++++++++++++++++---------------- gcc15-d-deps.patch | 19 +++++++++++++++ gcc15-pr118438.patch | 55 ++++++++++++++++++++++++++++++++++++++++++++ sources | 2 +- 5 files changed, 108 insertions(+), 21 deletions(-) create mode 100644 gcc15-d-deps.patch create mode 100644 gcc15-pr118438.patch diff --git a/.gitignore b/.gitignore index eba52e7..aacda01 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /gcc-15.0.0-20250109.tar.xz /newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz /gcc-15.0.0-20250111.tar.xz +/gcc-15.0.1-20250113.tar.xz diff --git a/gcc.spec b/gcc.spec index 0c36924..1492634 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,6 +1,6 @@ -%global DATE 20250111 -%global gitrev 20e73534b5a3aeac8624799d31783f12f24e29cb -%global gcc_version 15.0.0 +%global DATE 20250113 +%global gitrev 074f598e85b434066965fa130b38f32abcbc4f5e +%global gcc_version 15.0.1 %global gcc_major 15 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. @@ -143,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.4%{?dist} +Release: %{gcc_release}.1%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -299,6 +299,8 @@ Patch9: gcc15-Wno-format-security.patch Patch10: gcc15-rh1574936.patch Patch11: gcc15-d-shared-libphobos.patch Patch12: gcc15-pr118206.patch +Patch13: gcc15-d-deps.patch +Patch14: gcc15-pr118438.patch Patch50: isl-rh2155127.patch @@ -914,6 +916,8 @@ so that there cannot be any synchronization problems. %endif %patch -P11 -p0 -b .d-shared-libphobos~ %patch -P12 -p0 -b .pr118206~ +%patch -P13 -p0 -b .d-deps~ +%patch -P14 -p0 -b .pr118438~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -1725,8 +1729,8 @@ ln -sf ../../../libgo.so.23.* libgo.so ln -sf ../../../libquadmath.so.0.* libquadmath.so %endif %if %{build_d} -ln -sf ../../../libgdruntime.so.5.* libgdruntime.so -ln -sf ../../../libgphobos.so.5.* libgphobos.so +ln -sf ../../../libgdruntime.so.6.* libgdruntime.so +ln -sf ../../../libgphobos.so.6.* libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do @@ -1760,8 +1764,8 @@ ln -sf ../../../../%{_lib}/libgo.so.23.* libgo.so ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so %endif %if %{build_d} -ln -sf ../../../../%{_lib}/libgdruntime.so.5.* libgdruntime.so -ln -sf ../../../../%{_lib}/libgphobos.so.5.* libgphobos.so +ln -sf ../../../../%{_lib}/libgdruntime.so.6.* libgdruntime.so +ln -sf ../../../../%{_lib}/libgphobos.so.6.* libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do @@ -1906,10 +1910,10 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libquadmath.so.0.* | sed ' %endif %if %{build_d} rm -f libgdruntime.so libgphobos.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgdruntime.so.5.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgdruntime.so.5.* | sed 's,^.*libg,libg,'`' )' > 64/libgdruntime.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgphobos.so.5.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgphobos.so.5.* | sed 's,^.*libg,libg,'`' )' > 64/libgphobos.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgdruntime.so.6.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgdruntime.so.6.* | sed 's,^.*libg,libg,'`' )' > 64/libgdruntime.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgphobos.so.6.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgphobos.so.6.* | sed 's,^.*libg,libg,'`' )' > 64/libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do @@ -2023,10 +2027,10 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libquadmath.so.0.* | sed ' %endif %if %{build_d} rm -f libgdruntime.so libgphobos.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgdruntime.so.5.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgdruntime.so.5.* | sed 's,^.*libg,libg,'`' )' > 32/libgdruntime.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgphobos.so.5.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgphobos.so.5.* | sed 's,^.*libg,libg,'`' )' > 32/libgphobos.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgdruntime.so.6.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgdruntime.so.6.* | sed 's,^.*libg,libg,'`' )' > 32/libgdruntime.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgphobos.so.6.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgphobos.so.6.* | sed 's,^.*libg,libg,'`' )' > 32/libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do @@ -2203,8 +2207,8 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libcc1.so.0.* chmod 755 %{buildroot}%{_prefix}/%{_lib}/libquadmath.so.0.* %endif %if %{build_d} -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgdruntime.so.5.* -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgphobos.so.5.* +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgdruntime.so.6.* +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgphobos.so.6.* %endif %if %{build_m2} for i in cor iso log min pim; do @@ -3127,8 +3131,8 @@ end %doc rpm.doc/gdc/* %files -n libgphobos -%{_prefix}/%{_lib}/libgdruntime.so.5* -%{_prefix}/%{_lib}/libgphobos.so.5* +%{_prefix}/%{_lib}/libgdruntime.so.6* +%{_prefix}/%{_lib}/libgphobos.so.6* %doc rpm.doc/libphobos/* %files -n libgphobos-static @@ -3673,6 +3677,14 @@ end %endif %changelog +* Mon Jan 11 2025 Jakub Jelinek 15.0.1-0.1 +- update from trunk + - PRs c/118112, c++/114630, d/117701, fortran/115788, fortran/118432, + lto/118181, middle-end/64242, middle-end/118303, middle-end/118411, + middle-end/118415, modula2/118453, rtl-optimization/107455, + target/115910, target/115921, target/118418, tree-optimization/117119, + tree-optimization/117997, tree-optimization/118409 + * Sat Jan 11 2025 Jakub Jelinek 15.0.0-0.4 - update from trunk - PRs ada/18765, ada/118274, c/116060, c/117866, c/118376, c++/117792, diff --git a/gcc15-d-deps.patch b/gcc15-d-deps.patch new file mode 100644 index 0000000..7f77e69 --- /dev/null +++ b/gcc15-d-deps.patch @@ -0,0 +1,19 @@ +2025-01-13 Arsen Arsenović + Jakub Jelinek + + * Make-lang.in (DCOMPILE, DPOSTCOMPILE): Use $(basename $(@F)) + instead of $(*F). + +--- gcc/d/Make-lang.in.jj 2025-01-13 09:12:07.408983471 +0100 ++++ gcc/d/Make-lang.in 2025-01-13 10:57:16.398315375 +0100 +@@ -65,8 +65,8 @@ ALL_DFLAGS = $(DFLAGS-$@) $(GDCFLAGS) -f + $(WARN_DFLAGS) + + DCOMPILE.base = $(GDC) -c $(ALL_DFLAGS) -o $@ +-DCOMPILE = $(DCOMPILE.base) -MT $@ -MMD -MP -MF $(@D)/$(DEPDIR)/$(*F).TPo +-DPOSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(*F).TPo $(@D)/$(DEPDIR)/$(*F).Po ++DCOMPILE = $(DCOMPILE.base) -MT $@ -MMD -MP -MF $(@D)/$(DEPDIR)/$(basename $(@F)).TPo ++DPOSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(basename $(@F)).TPo $(@D)/$(DEPDIR)/$(basename $(@F)).Po + DLINKER = $(GDC) $(NO_PIE_FLAG) -lstdc++ + + # Like LINKER, but use a mutex for serializing front end links. diff --git a/gcc15-pr118438.patch b/gcc15-pr118438.patch new file mode 100644 index 0000000..f428963 --- /dev/null +++ b/gcc15-pr118438.patch @@ -0,0 +1,55 @@ +2025-01-13 Jakub Jelinek + + PR d/118438 + * libdruntime/core/sys/posix/sys/socket.d: Cherry-pick from upstream. + +--- libphobos/libdruntime/core/sys/posix/sys/socket.d.jj ++++ libphobos/libdruntime/core/sys/posix/sys/socket.d +@@ -317,6 +318,7 @@ version (linux) + SO_RCVLOWAT = 0x1004, + SO_RCVTIMEO = 0x1006, + SO_REUSEADDR = 0x0004, ++ SO_REUSEPORT = 0x0200, + SO_SNDBUF = 0x1001, + SO_SNDLOWAT = 0x1003, + SO_SNDTIMEO = 0x1005, +@@ -351,6 +353,7 @@ version (linux) + SO_RCVLOWAT = 0x1004, + SO_RCVTIMEO = 0x1006, + SO_REUSEADDR = 0x0004, ++ SO_REUSEPORT = 0x0200, + SO_SNDBUF = 0x1001, + SO_SNDLOWAT = 0x1003, + SO_SNDTIMEO = 0x1005, +@@ -385,6 +388,7 @@ version (linux) + SO_RCVLOWAT = 16, + SO_RCVTIMEO = 18, + SO_REUSEADDR = 2, ++ SO_REUSEPORT = 15, + SO_SNDBUF = 7, + SO_SNDLOWAT = 17, + SO_SNDTIMEO = 19, +@@ -454,6 +458,7 @@ version (linux) + SO_RCVLOWAT = 18, + SO_RCVTIMEO = 20, + SO_REUSEADDR = 2, ++ SO_REUSEPORT = 15, + SO_SNDBUF = 7, + SO_SNDLOWAT = 19, + SO_SNDTIMEO = 21, +@@ -522,6 +528,7 @@ version (linux) + SO_RCVLOWAT = 18, + SO_RCVTIMEO = 20, + SO_REUSEADDR = 2, ++ SO_REUSEPORT = 15, + SO_SNDBUF = 7, + SO_SNDLOWAT = 19, + SO_SNDTIMEO = 21, +@@ -556,6 +563,7 @@ version (linux) + SO_RCVLOWAT = 18, + SO_RCVTIMEO = 20, + SO_REUSEADDR = 2, ++ SO_REUSEPORT = 15, + SO_SNDBUF = 7, + SO_SNDLOWAT = 19, + SO_SNDTIMEO = 21, diff --git a/sources b/sources index 528bdd4..83dfcc3 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.0.0-20250111.tar.xz) = 4a34058f92167ccfb08ddbbac0b4aa78599b98fd5768ecc02cf89e35e8609b5dcb9e276bf98dd854d24f965795d79497dbd4a3c8ef93d816ee689945689daf07 +SHA512 (gcc-15.0.1-20250113.tar.xz) = 88d7eac76c25894b15836925f108deb65ce4d625a7a7de81ef350fdc5c047c46ded96ecbcfcf11271351c64bb6e8e31e489f1b56574a4e5211540b6be308f160 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz) = 839bb0c45b5023a83e1a5bf8773050af46bd075754502fc49a62ab860144c9a6bdc0a7d52e6c7ded87ba13ce58192755dd3f83333bc7c61ffb184fef4142a808 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 741ed4a5a942f58193bb6dfcedd443c50647c447 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 14 Jan 2025 00:08:34 +0100 Subject: [PATCH 235/293] 15.0.1-0.1 --- gcc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 1492634..4fd2621 100644 --- a/gcc.spec +++ b/gcc.spec @@ -3677,7 +3677,7 @@ end %endif %changelog -* Mon Jan 11 2025 Jakub Jelinek 15.0.1-0.1 +* Mon Jan 13 2025 Jakub Jelinek 15.0.1-0.1 - update from trunk - PRs c/118112, c++/114630, d/117701, fortran/115788, fortran/118432, lto/118181, middle-end/64242, middle-end/118303, middle-end/118411, From 48a562d802e39ab6199694cd9f40a25698c31c33 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 14 Jan 2025 11:45:25 +0100 Subject: [PATCH 236/293] 15.0.1-0.2 --- .gitignore | 1 + gcc.spec | 12 +++++++++--- sources | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index aacda01..b6a5b4a 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz /gcc-15.0.0-20250111.tar.xz /gcc-15.0.1-20250113.tar.xz +/gcc-15.0.1-20250114.tar.xz diff --git a/gcc.spec b/gcc.spec index 4fd2621..dffd6b1 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20250113 -%global gitrev 074f598e85b434066965fa130b38f32abcbc4f5e +%global DATE 20250114 +%global gitrev 6adb681d9cf55f12e8a232c1e9a009e5ca5fdde5 %global gcc_version 15.0.1 %global gcc_major 15 # Note, gcc_release must be integer, if you want to add suffixes to @@ -143,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.1%{?dist} +Release: %{gcc_release}.2%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -3677,6 +3677,12 @@ end %endif %changelog +* Tue Jan 14 2025 Jakub Jelinek 15.0.1-0.2 +- update from trunk +- update from trunk + - PRs ada/118459, c/116871, c++/118445, modula2/116557, target/116030, + target/117682, tree-optimization/118405 + * Mon Jan 13 2025 Jakub Jelinek 15.0.1-0.1 - update from trunk - PRs c/118112, c++/114630, d/117701, fortran/115788, fortran/118432, diff --git a/sources b/sources index 83dfcc3..9794578 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.0.1-20250113.tar.xz) = 88d7eac76c25894b15836925f108deb65ce4d625a7a7de81ef350fdc5c047c46ded96ecbcfcf11271351c64bb6e8e31e489f1b56574a4e5211540b6be308f160 +SHA512 (gcc-15.0.1-20250114.tar.xz) = 54d1749fb3b57c0e96bf9887b64c60d8e61cd634ab460ec03b7e909ea4a54f898988984d2dff7cdefd093ee9c8a235b70f20d2f005cdf14313077b28ddcf6759 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz) = 839bb0c45b5023a83e1a5bf8773050af46bd075754502fc49a62ab860144c9a6bdc0a7d52e6c7ded87ba13ce58192755dd3f83333bc7c61ffb184fef4142a808 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 2f3ea848feb3c9b800e2367ee5a8b81a7fadd5ce Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 14 Jan 2025 11:45:44 +0100 Subject: [PATCH 237/293] 15.0.1-0.2 --- gcc.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index dffd6b1..db61327 100644 --- a/gcc.spec +++ b/gcc.spec @@ -3678,7 +3678,6 @@ end %changelog * Tue Jan 14 2025 Jakub Jelinek 15.0.1-0.2 -- update from trunk - update from trunk - PRs ada/118459, c/116871, c++/118445, modula2/116557, target/116030, target/117682, tree-optimization/118405 From ca394fe46b6a7ffa6ee3c26cd46f30dcbc2beb94 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 14 Jan 2025 13:11:09 +0100 Subject: [PATCH 238/293] 15.0.1-0.3 --- gcc.spec | 7 +- gcc15-pr117231.patch | 177 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 gcc15-pr117231.patch diff --git a/gcc.spec b/gcc.spec index db61327..5746ff6 100644 --- a/gcc.spec +++ b/gcc.spec @@ -143,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.2%{?dist} +Release: %{gcc_release}.3%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -301,6 +301,7 @@ Patch11: gcc15-d-shared-libphobos.patch Patch12: gcc15-pr118206.patch Patch13: gcc15-d-deps.patch Patch14: gcc15-pr118438.patch +Patch15: gcc15-pr117231.patch Patch50: isl-rh2155127.patch @@ -918,6 +919,7 @@ so that there cannot be any synchronization problems. %patch -P12 -p0 -b .pr118206~ %patch -P13 -p0 -b .d-deps~ %patch -P14 -p0 -b .pr118438~ +%patch -P15 -p0 -b .pr117231~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3677,6 +3679,9 @@ end %endif %changelog +* Tue Jan 14 2025 Jakub Jelinek 15.0.1-0.3 +- temporary fix for coroutine range for handling (PR c++/117231) + * Tue Jan 14 2025 Jakub Jelinek 15.0.1-0.2 - update from trunk - PRs ada/118459, c/116871, c++/118445, modula2/116557, target/116030, diff --git a/gcc15-pr117231.patch b/gcc15-pr117231.patch new file mode 100644 index 0000000..ad1a83a --- /dev/null +++ b/gcc15-pr117231.patch @@ -0,0 +1,177 @@ +In the current implementation, statement expressions were intentionally +unsupported (as a C++ extension). However since they are quite heavily +used by end-users and also now emitted by the compiler in some cases +we are now working to add them. This first patch ensures that we +recurse into statement expressions (and therefore handle coroutine +keywords that might appear inside them). + + PR c++/115851 + PR c++/116914 + PR c++/117231 + +gcc/cp/ChangeLog: + + * coroutines.cc (await_statement_expander): Walk into + statement expressions. + (await_statement_walker): Likewise. + +gcc/testsuite/ChangeLog: + + * g++.dg/coroutines/pr115851.C: New test. + * g++.dg/coroutines/pr116914.C: New test. + * g++.dg/coroutines/pr117231.C: New test. + +Signed-off-by: Iain Sandoe +--- + gcc/cp/coroutines.cc | 22 ++++++++++++ + gcc/testsuite/g++.dg/coroutines/pr115851.C | 35 +++++++++++++++++++ + gcc/testsuite/g++.dg/coroutines/pr116914.C | 40 ++++++++++++++++++++++ + gcc/testsuite/g++.dg/coroutines/pr117231.C | 21 ++++++++++++ + 4 files changed, 118 insertions(+) + create mode 100644 gcc/testsuite/g++.dg/coroutines/pr115851.C + create mode 100644 gcc/testsuite/g++.dg/coroutines/pr116914.C + create mode 100644 gcc/testsuite/g++.dg/coroutines/pr117231.C + +--- gcc/cp/coroutines.cc ++++ gcc/cp/coroutines.cc +@@ -2128,6 +2128,14 @@ await_statement_expander (tree *stmt, int *do_subtree, void *d) + } + else if (EXPR_P (*stmt)) + { ++ /* Look for ({}) at the top level - just recurse into these. */ ++ if (TREE_CODE (*stmt) == EXPR_STMT) ++ { ++ tree inner = EXPR_STMT_EXPR (*stmt); ++ if (TREE_CODE (inner) == STATEMENT_LIST ++ || TREE_CODE (inner) == BIND_EXPR) ++ return NULL_TREE; // process contents ++ } + process_one_statement (stmt, d); + *do_subtree = 0; /* Done subtrees. */ + } +@@ -3857,6 +3865,20 @@ await_statement_walker (tree *stmt, int *do_subtree, void *d) + if (!(cp_walk_tree (stmt, find_any_await, &await_ptr, &visited))) + return NULL_TREE; /* Nothing special to do here. */ + ++ /* Handle statement expressions. */ ++ if (TREE_CODE (expr) == EXPR_STMT) ++ { ++ tree inner = EXPR_STMT_EXPR (expr); ++ if (TREE_CODE (inner) == STATEMENT_LIST ++ || TREE_CODE (inner) == BIND_EXPR) ++ { ++ res = cp_walk_tree (&EXPR_STMT_EXPR (expr), ++ await_statement_walker, d, NULL); ++ *do_subtree = 0; ++ return res; ++ } ++ } ++ + visited.empty (); + awpts->saw_awaits = 0; + hash_set truth_aoif_to_expand; +--- gcc/testsuite/g++.dg/coroutines/pr115851.C ++++ gcc/testsuite/g++.dg/coroutines/pr115851.C +@@ -0,0 +1,35 @@ ++// { dg-additional-options "-Wno-pedantic " } ++#include ++ ++struct SuspendNever { ++ bool await_ready() noexcept; ++ void await_suspend(std::coroutine_handle<>) noexcept; ++ void await_resume() noexcept; ++}; ++ ++struct Coroutine; ++ ++struct PromiseType { ++ Coroutine get_return_object(); ++ SuspendNever initial_suspend(); ++ SuspendNever final_suspend() noexcept; ++ void unhandled_exception () {} ++}; ++ ++struct Coroutine { ++ using promise_type = PromiseType; ++}; ++ ++struct ErrorOr { ++ int release_error(); ++}; ++ ++void warnln(int const&); ++ ++Coroutine __async_test_input_basic() { ++ ({ ++ co_await SuspendNever{}; ++ ErrorOr _temporary_result2; ++ warnln(_temporary_result2.release_error()); ++ }); ++} +--- gcc/testsuite/g++.dg/coroutines/pr116914.C ++++ gcc/testsuite/g++.dg/coroutines/pr116914.C +@@ -0,0 +1,40 @@ ++// { dg-additional-options "-std=gnu++20 -fpreprocessed" } ++ ++namespace std { ++template struct coroutine_traits : a {}; ++template struct coroutine_handle { ++ static coroutine_handle from_address(void *); ++ operator coroutine_handle<>(); ++ void *address(); ++}; ++struct b { ++ int await_ready() noexcept; ++ void await_suspend(coroutine_handle<>) noexcept; ++ void await_resume() noexcept; ++}; ++} // namespace std ++struct c; ++struct d { ++ c get_return_object(); ++ std::b initial_suspend(); ++ std::b final_suspend() noexcept; ++ void unhandled_exception(); ++ std::b yield_value(int); ++}; ++struct e { ++ void operator++(); ++ int operator*(); ++ int operator!=(e); ++}; ++struct c { ++ using promise_type = d; ++ e begin(); ++ e end(); ++ c f() { ++ c g; ++ for (auto h : g) { ++ auto i = 1; ++ co_yield i; ++ } ++ } ++}; +--- gcc/testsuite/g++.dg/coroutines/pr117231.C ++++ gcc/testsuite/g++.dg/coroutines/pr117231.C +@@ -0,0 +1,21 @@ ++// { dg-additional-options "-std=c++23 " } ++// { dg-do run } ++#include ++//#include ++#include ++ ++std::generator get_seq() ++{ ++ std::vector data_{1, 2, 3}; ++ for (auto item : data_) ++ co_yield item; ++} ++ ++int main() ++{ ++ int res = 0; ++ for (auto item : get_seq()) ++ res = item; //std::println("{}", item); ++ if (res != 3) ++ __builtin_abort (); ++} From b46eae0019f2b703482637ae7c7fad31a31e919d Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 14 Jan 2025 20:34:30 +0100 Subject: [PATCH 239/293] Add noautorebuild. --- noautorebuild | 1 + 1 file changed, 1 insertion(+) create mode 100644 noautorebuild diff --git a/noautorebuild b/noautorebuild new file mode 100644 index 0000000..a8dc544 --- /dev/null +++ b/noautorebuild @@ -0,0 +1 @@ +GCC has been already rebuilt and will be rebuilt again very soon, so the mass rebuild is waste of resources for it. From c142771541f144194873333eb25ff07ade4e44fb Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 16 Jan 2025 19:32:58 +0000 Subject: [PATCH 240/293] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- gcc.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 5746ff6..fdcd9a8 100644 --- a/gcc.spec +++ b/gcc.spec @@ -143,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.3%{?dist} +Release: %{gcc_release}.3%{?dist}.1 # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -3679,6 +3679,9 @@ end %endif %changelog +* Thu Jan 16 2025 Fedora Release Engineering - 15.0.1-0.3.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Tue Jan 14 2025 Jakub Jelinek 15.0.1-0.3 - temporary fix for coroutine range for handling (PR c++/117231) From 46a6d807645871b4d243ef2be35f9677bd4d68cb Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 21 Jan 2025 17:25:58 +0100 Subject: [PATCH 241/293] Fix up sed command for libstdc++ modules json. --- gcc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index fdcd9a8..2f504cb 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1712,7 +1712,7 @@ cp -a objlibgccjit/gcc/libgdiagnostics.so* %{buildroot}%{_prefix}/%{_lib}/ cp -a ../gcc/libgdiagnostics*.h %{buildroot}%{_prefix}/include/ cp -a objlibgccjit/gcc/sarif-replay %{buildroot}%{_prefix}/bin/ -sed -e 's,\.\./include/,../../../../include,' \ +sed -e 's,\.\./include/,../../../../include/,' \ %{buildroot}%{_prefix}/%{_lib}/libstdc++.modules.json \ > $FULLPATH/libstdc++.modules.json From f97b22af1011d1a9629418ccb1bed9f6a5196855 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 25 Jan 2025 11:06:55 +0100 Subject: [PATCH 242/293] 15.0.1-0.4 --- .gitignore | 1 + gcc.spec | 59 ++++++++++++++++++++++++++++++++------ gcc15-libstdc++-docs.patch | 4 +-- gcc15-pr118438.patch | 55 ----------------------------------- noautorebuild | 1 - sources | 2 +- 6 files changed, 54 insertions(+), 68 deletions(-) delete mode 100644 gcc15-pr118438.patch delete mode 100644 noautorebuild diff --git a/.gitignore b/.gitignore index b6a5b4a..fdfb0cc 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ /gcc-15.0.0-20250111.tar.xz /gcc-15.0.1-20250113.tar.xz /gcc-15.0.1-20250114.tar.xz +/gcc-15.0.1-20250125.tar.xz diff --git a/gcc.spec b/gcc.spec index 2f504cb..f9debcb 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20250114 -%global gitrev 6adb681d9cf55f12e8a232c1e9a009e5ca5fdde5 +%global DATE 20250125 +%global gitrev 971fa9cf8655e9ba26529620b624bac77d9a584b %global gcc_version 15.0.1 %global gcc_major 15 # Note, gcc_release must be integer, if you want to add suffixes to @@ -143,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.3%{?dist}.1 +Release: %{gcc_release}.4%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -300,8 +300,7 @@ Patch10: gcc15-rh1574936.patch Patch11: gcc15-d-shared-libphobos.patch Patch12: gcc15-pr118206.patch Patch13: gcc15-d-deps.patch -Patch14: gcc15-pr118438.patch -Patch15: gcc15-pr117231.patch +Patch14: gcc15-pr117231.patch Patch50: isl-rh2155127.patch @@ -918,8 +917,7 @@ so that there cannot be any synchronization problems. %patch -P11 -p0 -b .d-shared-libphobos~ %patch -P12 -p0 -b .pr118206~ %patch -P13 -p0 -b .d-deps~ -%patch -P14 -p0 -b .pr118438~ -%patch -P15 -p0 -b .pr117231~ +%patch -P14 -p0 -b .pr117231~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3679,8 +3677,51 @@ end %endif %changelog -* Thu Jan 16 2025 Fedora Release Engineering - 15.0.1-0.3.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild +* Sat Jan 25 2025 Jakub Jelinek 15.0.1-0.4 +- update from trunk + - PRs c/118639, c++/105440, c++/107522, c++/107741, c++/115769, c++/116417, + c++/116568, c++/116756, c++/117153, c++/117397, c++/117602, + c++/117775, c++/117827, c++/118047, c++/118049, c++/118101, + c++/118124, c++/118139, c++/118147, c++/118199, c++/118214, + c++/118225, c++/118245, c++/118255, c++/118278, c++/118355, + c++/118390, c++/118396, c++/118454, c++/118486, c++/118509, + c++/118513, c++/118523, c++/118525, c++/118528, c++/118532, + c++/118534, c++/118582, c++/118590, c++/118604, d/114434, d/115249, + d/116373, d/117115, d/118438, d/118448, d/118449, d/118584, + fortran/71884, fortran/81978, fortran/96087, fortran/107122, + fortran/118321, fortran/118359, fortran/118441, fortran/118613, + gcov-profile/116743, ipa/116068, ipa/118400, jit/117886, + libfortran/118406, libfortran/118536, libfortran/118571, + libstdc++/99995, libstdc++/100249, libstdc++/109849, libstdc++/118158, + libstdc++/118185, lto/118238, middle-end/112779, middle-end/113904, + middle-end/114596, middle-end/114877, middle-end/118140, + middle-end/118273, middle-end/118472, modula2/118010, modula2/118589, + objc++/118586, rtl-optimization/109592, rtl-optimization/113994, + rtl-optimization/117868, rtl-optimization/118067, + rtl-optimization/118562, rtl-optimization/118591, + rtl-optimization/1180167, sarif-replay/117670, target/80813, + target/110901, target/113257, target/113560, target/114442, + target/116256, target/116308, target/116593, target/117079, + target/117726, target/118154, target/118170, target/118182, + target/118270, target/118329, target/118357, target/118489, + target/118497, target/118501, target/118510, target/118511, + target/118512, target/118531, target/118560, target/118609, + testsuite/116448, testsuite/117958, testsuite/118451, + tree-optimization/92539, tree-optimization/102705, + tree-optimization/115494, tree-optimization/115777, + tree-optimization/115895, tree-optimization/116010, + tree-optimization/117668, tree-optimization/117875, + tree-optimization/118012, tree-optimization/118077, + tree-optimization/118224, tree-optimization/118348, + tree-optimization/118360, tree-optimization/118384, + tree-optimization/118430, tree-optimization/118456, + tree-optimization/118483, tree-optimization/118487, + tree-optimization/118514, tree-optimization/118522, + tree-optimization/118529, tree-optimization/118552, + tree-optimization/118558, tree-optimization/118569, + tree-optimization/118572, tree-optimization/118605, + tree-optimization/118628, tree-optimization/118634 +- fix libstdc++.modules.json content after relocation * Tue Jan 14 2025 Jakub Jelinek 15.0.1-0.3 - temporary fix for coroutine range for handling (PR c++/117231) diff --git a/gcc15-libstdc++-docs.patch b/gcc15-libstdc++-docs.patch index fc94419..829bb97 100644 --- a/gcc15-libstdc++-docs.patch +++ b/gcc15-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 15.0.0 ++ Release 15.0.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 15.0.0 release, ++ for the 15.0.1 release, + online for each GCC release and diff --git a/gcc15-pr118438.patch b/gcc15-pr118438.patch deleted file mode 100644 index f428963..0000000 --- a/gcc15-pr118438.patch +++ /dev/null @@ -1,55 +0,0 @@ -2025-01-13 Jakub Jelinek - - PR d/118438 - * libdruntime/core/sys/posix/sys/socket.d: Cherry-pick from upstream. - ---- libphobos/libdruntime/core/sys/posix/sys/socket.d.jj -+++ libphobos/libdruntime/core/sys/posix/sys/socket.d -@@ -317,6 +318,7 @@ version (linux) - SO_RCVLOWAT = 0x1004, - SO_RCVTIMEO = 0x1006, - SO_REUSEADDR = 0x0004, -+ SO_REUSEPORT = 0x0200, - SO_SNDBUF = 0x1001, - SO_SNDLOWAT = 0x1003, - SO_SNDTIMEO = 0x1005, -@@ -351,6 +353,7 @@ version (linux) - SO_RCVLOWAT = 0x1004, - SO_RCVTIMEO = 0x1006, - SO_REUSEADDR = 0x0004, -+ SO_REUSEPORT = 0x0200, - SO_SNDBUF = 0x1001, - SO_SNDLOWAT = 0x1003, - SO_SNDTIMEO = 0x1005, -@@ -385,6 +388,7 @@ version (linux) - SO_RCVLOWAT = 16, - SO_RCVTIMEO = 18, - SO_REUSEADDR = 2, -+ SO_REUSEPORT = 15, - SO_SNDBUF = 7, - SO_SNDLOWAT = 17, - SO_SNDTIMEO = 19, -@@ -454,6 +458,7 @@ version (linux) - SO_RCVLOWAT = 18, - SO_RCVTIMEO = 20, - SO_REUSEADDR = 2, -+ SO_REUSEPORT = 15, - SO_SNDBUF = 7, - SO_SNDLOWAT = 19, - SO_SNDTIMEO = 21, -@@ -522,6 +528,7 @@ version (linux) - SO_RCVLOWAT = 18, - SO_RCVTIMEO = 20, - SO_REUSEADDR = 2, -+ SO_REUSEPORT = 15, - SO_SNDBUF = 7, - SO_SNDLOWAT = 19, - SO_SNDTIMEO = 21, -@@ -556,6 +563,7 @@ version (linux) - SO_RCVLOWAT = 18, - SO_RCVTIMEO = 20, - SO_REUSEADDR = 2, -+ SO_REUSEPORT = 15, - SO_SNDBUF = 7, - SO_SNDLOWAT = 19, - SO_SNDTIMEO = 21, diff --git a/noautorebuild b/noautorebuild deleted file mode 100644 index a8dc544..0000000 --- a/noautorebuild +++ /dev/null @@ -1 +0,0 @@ -GCC has been already rebuilt and will be rebuilt again very soon, so the mass rebuild is waste of resources for it. diff --git a/sources b/sources index 9794578..6791fe6 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.0.1-20250114.tar.xz) = 54d1749fb3b57c0e96bf9887b64c60d8e61cd634ab460ec03b7e909ea4a54f898988984d2dff7cdefd093ee9c8a235b70f20d2f005cdf14313077b28ddcf6759 +SHA512 (gcc-15.0.1-20250125.tar.xz) = 5ee2c0a48d740a90ad102b4d4f4e5b51929e57816099d3eb41ab26bc6991fa144b7f1fca81584bad5b7b819687b2bd3c9b51472ba8cb0a2c03d585653458a28e SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz) = 839bb0c45b5023a83e1a5bf8773050af46bd075754502fc49a62ab860144c9a6bdc0a7d52e6c7ded87ba13ce58192755dd3f83333bc7c61ffb184fef4142a808 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 56f71ad78839875a09f1e3232096404f0ee72222 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 30 Jan 2025 18:48:11 +0100 Subject: [PATCH 243/293] 15.0.1-0.5 --- .gitignore | 1 + gcc.spec | 40 +++++-- gcc15-d-deps.patch | 19 --- gcc15-pr118671.patch | 276 +++++++++++++++++++++++++++++++++++++++++++ gcc15-pr118689.patch | 17 +++ sources | 2 +- 6 files changed, 328 insertions(+), 27 deletions(-) delete mode 100644 gcc15-d-deps.patch create mode 100644 gcc15-pr118671.patch create mode 100644 gcc15-pr118689.patch diff --git a/.gitignore b/.gitignore index fdfb0cc..6669449 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /gcc-15.0.1-20250113.tar.xz /gcc-15.0.1-20250114.tar.xz /gcc-15.0.1-20250125.tar.xz +/gcc-15.0.1-20250130.tar.xz diff --git a/gcc.spec b/gcc.spec index f9debcb..4cc796e 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20250125 -%global gitrev 971fa9cf8655e9ba26529620b624bac77d9a584b +%global DATE 20250130 +%global gitrev 54feac44230391f6c2cdd77688075cbcb7ce0995 %global gcc_version 15.0.1 %global gcc_major 15 # Note, gcc_release must be integer, if you want to add suffixes to @@ -143,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.4%{?dist} +Release: %{gcc_release}.5%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -299,8 +299,9 @@ Patch9: gcc15-Wno-format-security.patch Patch10: gcc15-rh1574936.patch Patch11: gcc15-d-shared-libphobos.patch Patch12: gcc15-pr118206.patch -Patch13: gcc15-d-deps.patch -Patch14: gcc15-pr117231.patch +Patch13: gcc15-pr117231.patch +Patch14: gcc15-pr118671.patch +Patch15: gcc15-pr118689.patch Patch50: isl-rh2155127.patch @@ -916,8 +917,9 @@ so that there cannot be any synchronization problems. %endif %patch -P11 -p0 -b .d-shared-libphobos~ %patch -P12 -p0 -b .pr118206~ -%patch -P13 -p0 -b .d-deps~ -%patch -P14 -p0 -b .pr117231~ +%patch -P13 -p0 -b .pr117231~ +%patch -P14 -p0 -b .pr118671~ +%patch -P15 -p0 -b .pr118689~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3677,6 +3679,30 @@ end %endif %changelog +* Thu Jan 30 2025 Jakub Jelinek 15.0.1-0.5 +- update from trunk + - PRs c/116357, c++/57533, c++/114292, c++/116524, c++/117855, c++/118239, + c++/118285, c++/118632, c++/118655, c++/118673, d/118477, + fortran/58857, fortran/110993, fortran/118640, fortran/118683, + libstdc++/98749, libstdc++/118413, libstdc++/118563, + middle-end/118643, middle-end/118684, middle-end/118692, + middle-end/118695, modula2/116073, modula2/117737, modula2/118183, + other/118675, preprocessor/118168, rtl-optimization/118320, + rtl-optimization/118429, rtl-optimization/118638, + rtl-optimization/118662, target/114085, target/116860, target/117173, + target/117688, target/118103, target/118490, target/118642, + target/118646, target/118663, target/118696, testsuite/118127, + tree-optimization/112859, tree-optimization/114052, + tree-optimization/115347, tree-optimization/117270, + tree-optimization/117424, tree-optimization/117892, + tree-optimization/118505, tree-optimization/118637, + tree-optimization/118653 +- fix up C++ list conversion for #embed or large series of comma + separated small constants (PR c++/118671) +- punt in niters clz/ctz creation if internal function can't be used + and frontend didn't build __builtin_c{l,t}z{,l,ll} builtins + (PR tree-optimization/118689) + * Sat Jan 25 2025 Jakub Jelinek 15.0.1-0.4 - update from trunk - PRs c/118639, c++/105440, c++/107522, c++/107741, c++/115769, c++/116417, diff --git a/gcc15-d-deps.patch b/gcc15-d-deps.patch deleted file mode 100644 index 7f77e69..0000000 --- a/gcc15-d-deps.patch +++ /dev/null @@ -1,19 +0,0 @@ -2025-01-13 Arsen Arsenović - Jakub Jelinek - - * Make-lang.in (DCOMPILE, DPOSTCOMPILE): Use $(basename $(@F)) - instead of $(*F). - ---- gcc/d/Make-lang.in.jj 2025-01-13 09:12:07.408983471 +0100 -+++ gcc/d/Make-lang.in 2025-01-13 10:57:16.398315375 +0100 -@@ -65,8 +65,8 @@ ALL_DFLAGS = $(DFLAGS-$@) $(GDCFLAGS) -f - $(WARN_DFLAGS) - - DCOMPILE.base = $(GDC) -c $(ALL_DFLAGS) -o $@ --DCOMPILE = $(DCOMPILE.base) -MT $@ -MMD -MP -MF $(@D)/$(DEPDIR)/$(*F).TPo --DPOSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(*F).TPo $(@D)/$(DEPDIR)/$(*F).Po -+DCOMPILE = $(DCOMPILE.base) -MT $@ -MMD -MP -MF $(@D)/$(DEPDIR)/$(basename $(@F)).TPo -+DPOSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(basename $(@F)).TPo $(@D)/$(DEPDIR)/$(basename $(@F)).Po - DLINKER = $(GDC) $(NO_PIE_FLAG) -lstdc++ - - # Like LINKER, but use a mutex for serializing front end links. diff --git a/gcc15-pr118671.patch b/gcc15-pr118671.patch new file mode 100644 index 0000000..ea9a6e7 --- /dev/null +++ b/gcc15-pr118671.patch @@ -0,0 +1,276 @@ +2025-01-28 Jakub Jelinek + + PR c++/118671 + * call.cc (build_list_conv): For RAW_DATA_CST, call + implicit_conversion with INTEGER_CST representing first byte instead + of the whole RAW_DATA_CST. If it is an optimizable trivial + conversion, just save that to subconvs, otherwise allocate an + artificial ck_list for all the RAW_DATA_CST bytes and create + subsubconv for each of them. + (convert_like_internal): For ck_list with RAW_DATA_CST, instead of + doing all the checks for optimizable conversion just check kind and + assert everything else, otherwise use subsubconversions instead of + the subconversion for each element. + + * g++.dg/cpp/embed-25.C: New test. + * g++.dg/cpp0x/pr118671.C: New test. + +--- gcc/cp/call.cc.jj 2025-01-22 09:22:53.000000000 +0100 ++++ gcc/cp/call.cc 2025-01-27 21:36:31.159889633 +0100 +@@ -868,6 +868,67 @@ build_list_conv (tree type, tree ctor, i + + FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (ctor), i, val) + { ++ if (TREE_CODE (val) == RAW_DATA_CST) ++ { ++ tree elt ++ = build_int_cst (TREE_TYPE (val), RAW_DATA_UCHAR_ELT (val, 0)); ++ conversion *sub ++ = implicit_conversion (elttype, TREE_TYPE (val), elt, ++ false, flags, complain); ++ conversion *next; ++ if (sub == NULL) ++ return NULL; ++ /* For conversion to initializer_list or ++ initializer_list or initializer_list ++ we can optimize and keep RAW_DATA_CST with adjusted ++ type if we report narrowing errors if needed. ++ Use just one subconversion for that case. */ ++ if (sub->kind == ck_std ++ && sub->type ++ && (TREE_CODE (sub->type) == INTEGER_TYPE ++ || is_byte_access_type (sub->type)) ++ && TYPE_PRECISION (sub->type) == CHAR_BIT ++ && (next = next_conversion (sub)) ++ && next->kind == ck_identity) ++ { ++ subconvs[i] = sub; ++ continue; ++ } ++ /* Otherwise. build separate subconv for each RAW_DATA_CST ++ byte. Wrap those into an artificial ck_list which convert_like ++ will then handle. */ ++ conversion **subsubconvs = alloc_conversions (RAW_DATA_LENGTH (val)); ++ unsigned int j; ++ subsubconvs[0] = sub; ++ for (j = 1; j < (unsigned) RAW_DATA_LENGTH (val); ++j) ++ { ++ elt = build_int_cst (TREE_TYPE (val), ++ RAW_DATA_UCHAR_ELT (val, j)); ++ sub = implicit_conversion (elttype, TREE_TYPE (val), elt, ++ false, flags, complain); ++ if (sub == NULL) ++ return NULL; ++ subsubconvs[j] = sub; ++ } ++ ++ t = alloc_conversion (ck_list); ++ t->type = type; ++ t->u.list = subsubconvs; ++ t->rank = cr_exact; ++ for (j = 0; j < (unsigned) RAW_DATA_LENGTH (val); ++j) ++ { ++ sub = subsubconvs[i]; ++ if (sub->rank > t->rank) ++ t->rank = sub->rank; ++ if (sub->user_conv_p) ++ t->user_conv_p = true; ++ if (sub->bad_p) ++ t->bad_p = true; ++ } ++ subconvs[i] = t; ++ continue; ++ } ++ + conversion *sub + = implicit_conversion (elttype, TREE_TYPE (val), val, + false, flags, complain); +@@ -8841,22 +8902,22 @@ convert_like_internal (conversion *convs + { + if (TREE_CODE (val) == RAW_DATA_CST) + { +- tree elt_type; +- conversion *next; + /* For conversion to initializer_list or + initializer_list or initializer_list + we can optimize and keep RAW_DATA_CST with adjusted + type if we report narrowing errors if needed, for + others this converts each element separately. */ +- if (convs->u.list[ix]->kind == ck_std +- && (elt_type = convs->u.list[ix]->type) +- && (TREE_CODE (elt_type) == INTEGER_TYPE +- || is_byte_access_type (elt_type)) +- && TYPE_PRECISION (elt_type) == CHAR_BIT +- && (next = next_conversion (convs->u.list[ix])) +- && next->kind == ck_identity) ++ if (convs->u.list[ix]->kind == ck_std) + { +- if (!TYPE_UNSIGNED (elt_type) ++ tree et = convs->u.list[ix]->type; ++ conversion *next = next_conversion (convs->u.list[ix]); ++ gcc_assert (et ++ && (TREE_CODE (et) == INTEGER_TYPE ++ || is_byte_access_type (et)) ++ && TYPE_PRECISION (et) == CHAR_BIT ++ && next ++ && next->kind == ck_identity); ++ if (!TYPE_UNSIGNED (et) + /* For RAW_DATA_CST, TREE_TYPE (val) can be + either integer_type_node (when it has been + created by the lexer from CPP_EMBED) or +@@ -8882,7 +8943,7 @@ convert_like_internal (conversion *convs + "narrowing conversion of " + "%qd from %qH to %qI", + RAW_DATA_UCHAR_ELT (val, i), +- TREE_TYPE (val), elt_type); ++ TREE_TYPE (val), et); + if (errorcount != savederrorcount) + return error_mark_node; + } +@@ -8890,19 +8951,21 @@ convert_like_internal (conversion *convs + return error_mark_node; + } + tree sub = copy_node (val); +- TREE_TYPE (sub) = elt_type; ++ TREE_TYPE (sub) = et; + CONSTRUCTOR_APPEND_ELT (CONSTRUCTOR_ELTS (new_ctor), + NULL_TREE, sub); + } + else + { ++ conversion *conv = convs->u.list[ix]; ++ gcc_assert (conv->kind == ck_list); + for (int i = 0; i < RAW_DATA_LENGTH (val); ++i) + { + tree elt + = build_int_cst (TREE_TYPE (val), + RAW_DATA_UCHAR_ELT (val, i)); + tree sub +- = convert_like (convs->u.list[ix], elt, ++ = convert_like (conv->u.list[i], elt, + fn, argnum, false, false, + /*nested_p=*/true, complain); + if (sub == error_mark_node) +--- gcc/testsuite/g++.dg/cpp/embed-25.C.jj 2025-01-27 21:51:00.190990295 +0100 ++++ gcc/testsuite/g++.dg/cpp/embed-25.C 2025-01-27 21:50:45.954183524 +0100 +@@ -0,0 +1,56 @@ ++// PR c++/118671 ++// { dg-do run { target c++11 } } ++// { dg-options "-O2" } ++ ++namespace std { ++template ++struct initializer_list { ++private: ++ T *_M_array; ++ decltype (sizeof 0) _M_len; ++public: ++ constexpr decltype (sizeof 0) ++ size () const noexcept { return _M_len; } ++ constexpr const T * ++ begin () const noexcept { return _M_array; } ++ constexpr const T * ++ end () const noexcept { return begin () + size (); } ++}; ++} ++ ++struct A {} a; ++ ++struct B { ++ constexpr B (int x) : B (a, x) {} ++ template ++ constexpr B (A, T... x) : b(x...) {} ++ int b; ++}; ++ ++struct C { ++ C (std::initializer_list x) ++ { ++ unsigned char buf[] = { ++#embed __FILE__ ++ }; ++ if (x.size () != sizeof (buf)) ++ __builtin_abort (); ++ unsigned int i = 0; ++ for (auto a = x.begin (); a < x.end (); ++a, ++i) ++ if (a->b != buf[i]) ++ __builtin_abort (); ++ c = true; ++ } ++ bool c; ++}; ++ ++C c { ++#embed __FILE__ ++}; ++ ++int ++main () ++{ ++ if (!c.c) ++ __builtin_abort (); ++} +--- gcc/testsuite/g++.dg/cpp0x/pr118671.C.jj 2025-01-27 21:47:01.154242793 +0100 ++++ gcc/testsuite/g++.dg/cpp0x/pr118671.C 2025-01-27 21:46:43.379486760 +0100 +@@ -0,0 +1,61 @@ ++// PR c++/118671 ++// { dg-do run { target c++11 } } ++// { dg-options "-O2" } ++ ++namespace std { ++template ++struct initializer_list { ++private: ++ T *_M_array; ++ decltype (sizeof 0) _M_len; ++public: ++ constexpr decltype (sizeof 0) ++ size () const noexcept { return _M_len; } ++ constexpr const T * ++ begin () const noexcept { return _M_array; } ++ constexpr const T * ++ end () const noexcept { return begin () + size (); } ++}; ++} ++ ++struct A {} a; ++ ++struct B { ++ constexpr B (int x) : B (a, x) {} ++ template ++ constexpr B (A, T... x) : b(x...) {} ++ int b; ++}; ++ ++struct C { ++ C (std::initializer_list x) ++ { ++ if (x.size () != 130) ++ __builtin_abort (); ++ unsigned int i = 1; ++ for (auto a = x.begin (); a < x.end (); ++a) ++ if (a->b != i) ++ __builtin_abort (); ++ else ++ i = (i & 15) + 1; ++ c = true; ++ } ++ bool c; ++}; ++ ++C c { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ++ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ++ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ++ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ++ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ++ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ++ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ++ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ++ 1, 2 }; ++ ++int ++main () ++{ ++ if (!c.c) ++ __builtin_abort (); ++} diff --git a/gcc15-pr118689.patch b/gcc15-pr118689.patch new file mode 100644 index 0000000..8d57e15 --- /dev/null +++ b/gcc15-pr118689.patch @@ -0,0 +1,17 @@ +2025-01-30 Jakub Jelinek + + PR tree-optimization/118689 + * tree-ssa-loop-niter.cc (build_cltz_expr): Return NULL_TREE if fn is + NULL and use_ifn is false. + +--- gcc/tree-ssa-loop-niter.cc.jj 2025-01-17 11:29:34.080683133 +0100 ++++ gcc/tree-ssa-loop-niter.cc 2025-01-30 14:51:57.528933620 +0100 +@@ -2238,6 +2238,8 @@ build_cltz_expr (tree src, bool leading, + build_int_cst (integer_type_node, prec)); + } + } ++ else if (fn == NULL_TREE) ++ return NULL_TREE; + else if (prec == 2 * lli_prec) + { + tree src1 = fold_convert (long_long_unsigned_type_node, diff --git a/sources b/sources index 6791fe6..09b7338 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.0.1-20250125.tar.xz) = 5ee2c0a48d740a90ad102b4d4f4e5b51929e57816099d3eb41ab26bc6991fa144b7f1fca81584bad5b7b819687b2bd3c9b51472ba8cb0a2c03d585653458a28e +SHA512 (gcc-15.0.1-20250130.tar.xz) = aca67a07b42f0325a155b4ef3d791797fab66bc771b829ec9ba0569cc47449fa169d08e976afe7849ab59acf46a641ddd46bd1504e730a3c1f496f03ce1f1ca3 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz) = 839bb0c45b5023a83e1a5bf8773050af46bd075754502fc49a62ab860144c9a6bdc0a7d52e6c7ded87ba13ce58192755dd3f83333bc7c61ffb184fef4142a808 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From d634368529a302816278b70dc11f7c8f37c052ce Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 1 Feb 2025 10:29:30 +0100 Subject: [PATCH 244/293] 15.0.1-0.6 --- .gitignore | 7 +------ gcc.spec | 40 +++++++++++++++++++++------------------- gcc15-pr118689.patch | 17 ----------------- sources | 2 +- 4 files changed, 23 insertions(+), 43 deletions(-) delete mode 100644 gcc15-pr118689.patch diff --git a/.gitignore b/.gitignore index 6669449..1f435f0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,4 @@ /isl-0.24.tar.bz2 /nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz -/gcc-15.0.0-20250109.tar.xz /newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz -/gcc-15.0.0-20250111.tar.xz -/gcc-15.0.1-20250113.tar.xz -/gcc-15.0.1-20250114.tar.xz -/gcc-15.0.1-20250125.tar.xz -/gcc-15.0.1-20250130.tar.xz +/gcc-15.0.1-20250201.tar.xz diff --git a/gcc.spec b/gcc.spec index 4cc796e..f9646e1 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20250130 -%global gitrev 54feac44230391f6c2cdd77688075cbcb7ce0995 +%global DATE 20250201 +%global gitrev 3e0244fe19596234d3e6cf38c4afa5ca638f4b8d %global gcc_version 15.0.1 %global gcc_major 15 # Note, gcc_release must be integer, if you want to add suffixes to @@ -143,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.5%{?dist} +Release: %{gcc_release}.6%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -301,7 +301,6 @@ Patch11: gcc15-d-shared-libphobos.patch Patch12: gcc15-pr118206.patch Patch13: gcc15-pr117231.patch Patch14: gcc15-pr118671.patch -Patch15: gcc15-pr118689.patch Patch50: isl-rh2155127.patch @@ -919,7 +918,6 @@ so that there cannot be any synchronization problems. %patch -P12 -p0 -b .pr118206~ %patch -P13 -p0 -b .pr117231~ %patch -P14 -p0 -b .pr118671~ -%patch -P15 -p0 -b .pr118689~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -2424,28 +2422,20 @@ if [ $1 = 0 ]; then %{_sbindir}/update-alternatives --remove go %{_prefix}/bin/go.gcc fi +%{?ldconfig: # Because glibc Prereq's libgcc and /sbin/ldconfig # comes from glibc, it might not exist yet when # libgcc is installed %post -n libgcc -p -if posix.access ("/sbin/ldconfig", "x") then - local pid = posix.fork () - if pid == 0 then - posix.exec ("/sbin/ldconfig") - elseif pid ~= -1 then - posix.wait (pid) - end +if posix.access ("%ldconfig", "x") then + rpm.execute ("%ldconfig") end %postun -n libgcc -p -if posix.access ("/sbin/ldconfig", "x") then - local pid = posix.fork () - if pid == 0 then - posix.exec ("/sbin/ldconfig") - elseif pid ~= -1 then - posix.wait (pid) - end +if posix.access ("%ldconfig", "x") then + rpm.execute ("%ldconfig") end +} %ldconfig_scriptlets -n libstdc++ @@ -2481,6 +2471,8 @@ end %ldconfig_scriptlets -n liblsan +%ldconfig_scriptlets -n libhwasan + %ldconfig_scriptlets -n libgo %files -f %{name}.lang @@ -3679,6 +3671,16 @@ end %endif %changelog +* Sat Feb 1 2025 Jakub Jelinek 15.0.1-0.6 +- update from trunk + - PRs c++/117501, c++/117516, debug/100530, fortran/108454, fortran/118714, + ipa/117432, libstdc++/118156, middle-end/117498, modula2/115032, + rtl-optimization/116234, target/113689, target/115673, + tree-optimization/114277 +- use rpm.execute instead of posix.fork, posix.exec and posix.wait in libgcc + scriptlets; guard them on ldconfig macro existence and use that macro instead + of explicit /sbin/ldconfig (#2291927) + * Thu Jan 30 2025 Jakub Jelinek 15.0.1-0.5 - update from trunk - PRs c/116357, c++/57533, c++/114292, c++/116524, c++/117855, c++/118239, diff --git a/gcc15-pr118689.patch b/gcc15-pr118689.patch deleted file mode 100644 index 8d57e15..0000000 --- a/gcc15-pr118689.patch +++ /dev/null @@ -1,17 +0,0 @@ -2025-01-30 Jakub Jelinek - - PR tree-optimization/118689 - * tree-ssa-loop-niter.cc (build_cltz_expr): Return NULL_TREE if fn is - NULL and use_ifn is false. - ---- gcc/tree-ssa-loop-niter.cc.jj 2025-01-17 11:29:34.080683133 +0100 -+++ gcc/tree-ssa-loop-niter.cc 2025-01-30 14:51:57.528933620 +0100 -@@ -2238,6 +2238,8 @@ build_cltz_expr (tree src, bool leading, - build_int_cst (integer_type_node, prec)); - } - } -+ else if (fn == NULL_TREE) -+ return NULL_TREE; - else if (prec == 2 * lli_prec) - { - tree src1 = fold_convert (long_long_unsigned_type_node, diff --git a/sources b/sources index 09b7338..a9e4c63 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.0.1-20250130.tar.xz) = aca67a07b42f0325a155b4ef3d791797fab66bc771b829ec9ba0569cc47449fa169d08e976afe7849ab59acf46a641ddd46bd1504e730a3c1f496f03ce1f1ca3 +SHA512 (gcc-15.0.1-20250201.tar.xz) = 2b429a615554218d491851b741cfd15ff871ef3beabd27194fe20ce85faa7422e9ac948b6c6bc8c194c33f1564e13ef438e2ec1665d61acc8823443953b01952 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz) = 839bb0c45b5023a83e1a5bf8773050af46bd075754502fc49a62ab860144c9a6bdc0a7d52e6c7ded87ba13ce58192755dd3f83333bc7c61ffb184fef4142a808 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 65505a4c17ef92acd7eba9b9ba72052c2d87c967 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 4 Feb 2025 20:28:37 +0100 Subject: [PATCH 245/293] 15.0.1-0.7 --- .gitignore | 1 + gcc.spec | 23 ++++-- gcc15-pr117231.patch | 177 ------------------------------------------- sources | 2 +- 4 files changed, 18 insertions(+), 185 deletions(-) delete mode 100644 gcc15-pr117231.patch diff --git a/.gitignore b/.gitignore index 1f435f0..bcefcfb 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz /newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz /gcc-15.0.1-20250201.tar.xz +/gcc-15.0.1-20250204.tar.xz diff --git a/gcc.spec b/gcc.spec index f9646e1..a1cf483 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20250201 -%global gitrev 3e0244fe19596234d3e6cf38c4afa5ca638f4b8d +%global DATE 20250204 +%global gitrev 785011ff892f91b1fedd8ba7812ff3203bc17b1a %global gcc_version 15.0.1 %global gcc_major 15 # Note, gcc_release must be integer, if you want to add suffixes to @@ -143,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.6%{?dist} +Release: %{gcc_release}.7%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -299,8 +299,7 @@ Patch9: gcc15-Wno-format-security.patch Patch10: gcc15-rh1574936.patch Patch11: gcc15-d-shared-libphobos.patch Patch12: gcc15-pr118206.patch -Patch13: gcc15-pr117231.patch -Patch14: gcc15-pr118671.patch +Patch13: gcc15-pr118671.patch Patch50: isl-rh2155127.patch @@ -916,8 +915,7 @@ so that there cannot be any synchronization problems. %endif %patch -P11 -p0 -b .d-shared-libphobos~ %patch -P12 -p0 -b .pr118206~ -%patch -P13 -p0 -b .pr117231~ -%patch -P14 -p0 -b .pr118671~ +%patch -P13 -p0 -b .pr118671~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3671,6 +3669,17 @@ end %endif %changelog +* Tue Feb 4 2025 Jakub Jelinek 15.0.1-0.7 +- update from trunk + - PRs ada/118712, ada/118731, c/118742, c++/79786, c++/98893, c++/108205, + c++/109918, c++/114619, c++/116506, c++/116880, c++/116914, + c++/117114, c++/117778, c++/118265, c++/118470, c++/118491, + c++/118718, c++/118719, fortran/93289, lto/113207, middle-end/115913, + middle-end/116926, modula2/117411, modula2/118703, + rtl-optimization/111673, rtl-optimization/117248, + rtl-optimization/117611, target/116010, target/118713, + testsuite/116845, tree-optimization/117113, tree-optimization/118717 + * Sat Feb 1 2025 Jakub Jelinek 15.0.1-0.6 - update from trunk - PRs c++/117501, c++/117516, debug/100530, fortran/108454, fortran/118714, diff --git a/gcc15-pr117231.patch b/gcc15-pr117231.patch deleted file mode 100644 index ad1a83a..0000000 --- a/gcc15-pr117231.patch +++ /dev/null @@ -1,177 +0,0 @@ -In the current implementation, statement expressions were intentionally -unsupported (as a C++ extension). However since they are quite heavily -used by end-users and also now emitted by the compiler in some cases -we are now working to add them. This first patch ensures that we -recurse into statement expressions (and therefore handle coroutine -keywords that might appear inside them). - - PR c++/115851 - PR c++/116914 - PR c++/117231 - -gcc/cp/ChangeLog: - - * coroutines.cc (await_statement_expander): Walk into - statement expressions. - (await_statement_walker): Likewise. - -gcc/testsuite/ChangeLog: - - * g++.dg/coroutines/pr115851.C: New test. - * g++.dg/coroutines/pr116914.C: New test. - * g++.dg/coroutines/pr117231.C: New test. - -Signed-off-by: Iain Sandoe ---- - gcc/cp/coroutines.cc | 22 ++++++++++++ - gcc/testsuite/g++.dg/coroutines/pr115851.C | 35 +++++++++++++++++++ - gcc/testsuite/g++.dg/coroutines/pr116914.C | 40 ++++++++++++++++++++++ - gcc/testsuite/g++.dg/coroutines/pr117231.C | 21 ++++++++++++ - 4 files changed, 118 insertions(+) - create mode 100644 gcc/testsuite/g++.dg/coroutines/pr115851.C - create mode 100644 gcc/testsuite/g++.dg/coroutines/pr116914.C - create mode 100644 gcc/testsuite/g++.dg/coroutines/pr117231.C - ---- gcc/cp/coroutines.cc -+++ gcc/cp/coroutines.cc -@@ -2128,6 +2128,14 @@ await_statement_expander (tree *stmt, int *do_subtree, void *d) - } - else if (EXPR_P (*stmt)) - { -+ /* Look for ({}) at the top level - just recurse into these. */ -+ if (TREE_CODE (*stmt) == EXPR_STMT) -+ { -+ tree inner = EXPR_STMT_EXPR (*stmt); -+ if (TREE_CODE (inner) == STATEMENT_LIST -+ || TREE_CODE (inner) == BIND_EXPR) -+ return NULL_TREE; // process contents -+ } - process_one_statement (stmt, d); - *do_subtree = 0; /* Done subtrees. */ - } -@@ -3857,6 +3865,20 @@ await_statement_walker (tree *stmt, int *do_subtree, void *d) - if (!(cp_walk_tree (stmt, find_any_await, &await_ptr, &visited))) - return NULL_TREE; /* Nothing special to do here. */ - -+ /* Handle statement expressions. */ -+ if (TREE_CODE (expr) == EXPR_STMT) -+ { -+ tree inner = EXPR_STMT_EXPR (expr); -+ if (TREE_CODE (inner) == STATEMENT_LIST -+ || TREE_CODE (inner) == BIND_EXPR) -+ { -+ res = cp_walk_tree (&EXPR_STMT_EXPR (expr), -+ await_statement_walker, d, NULL); -+ *do_subtree = 0; -+ return res; -+ } -+ } -+ - visited.empty (); - awpts->saw_awaits = 0; - hash_set truth_aoif_to_expand; ---- gcc/testsuite/g++.dg/coroutines/pr115851.C -+++ gcc/testsuite/g++.dg/coroutines/pr115851.C -@@ -0,0 +1,35 @@ -+// { dg-additional-options "-Wno-pedantic " } -+#include -+ -+struct SuspendNever { -+ bool await_ready() noexcept; -+ void await_suspend(std::coroutine_handle<>) noexcept; -+ void await_resume() noexcept; -+}; -+ -+struct Coroutine; -+ -+struct PromiseType { -+ Coroutine get_return_object(); -+ SuspendNever initial_suspend(); -+ SuspendNever final_suspend() noexcept; -+ void unhandled_exception () {} -+}; -+ -+struct Coroutine { -+ using promise_type = PromiseType; -+}; -+ -+struct ErrorOr { -+ int release_error(); -+}; -+ -+void warnln(int const&); -+ -+Coroutine __async_test_input_basic() { -+ ({ -+ co_await SuspendNever{}; -+ ErrorOr _temporary_result2; -+ warnln(_temporary_result2.release_error()); -+ }); -+} ---- gcc/testsuite/g++.dg/coroutines/pr116914.C -+++ gcc/testsuite/g++.dg/coroutines/pr116914.C -@@ -0,0 +1,40 @@ -+// { dg-additional-options "-std=gnu++20 -fpreprocessed" } -+ -+namespace std { -+template struct coroutine_traits : a {}; -+template struct coroutine_handle { -+ static coroutine_handle from_address(void *); -+ operator coroutine_handle<>(); -+ void *address(); -+}; -+struct b { -+ int await_ready() noexcept; -+ void await_suspend(coroutine_handle<>) noexcept; -+ void await_resume() noexcept; -+}; -+} // namespace std -+struct c; -+struct d { -+ c get_return_object(); -+ std::b initial_suspend(); -+ std::b final_suspend() noexcept; -+ void unhandled_exception(); -+ std::b yield_value(int); -+}; -+struct e { -+ void operator++(); -+ int operator*(); -+ int operator!=(e); -+}; -+struct c { -+ using promise_type = d; -+ e begin(); -+ e end(); -+ c f() { -+ c g; -+ for (auto h : g) { -+ auto i = 1; -+ co_yield i; -+ } -+ } -+}; ---- gcc/testsuite/g++.dg/coroutines/pr117231.C -+++ gcc/testsuite/g++.dg/coroutines/pr117231.C -@@ -0,0 +1,21 @@ -+// { dg-additional-options "-std=c++23 " } -+// { dg-do run } -+#include -+//#include -+#include -+ -+std::generator get_seq() -+{ -+ std::vector data_{1, 2, 3}; -+ for (auto item : data_) -+ co_yield item; -+} -+ -+int main() -+{ -+ int res = 0; -+ for (auto item : get_seq()) -+ res = item; //std::println("{}", item); -+ if (res != 3) -+ __builtin_abort (); -+} diff --git a/sources b/sources index a9e4c63..a90cbaf 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.0.1-20250201.tar.xz) = 2b429a615554218d491851b741cfd15ff871ef3beabd27194fe20ce85faa7422e9ac948b6c6bc8c194c33f1564e13ef438e2ec1665d61acc8823443953b01952 +SHA512 (gcc-15.0.1-20250204.tar.xz) = 33b9175db47e892b60d9de6d2bbe48b44d7e44ac36f36e08a522cbf020919fe2dc2ef2239fa4c75be63c788fde9725106e64f76663ce1330f984ee3c03fc1ac9 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz) = 839bb0c45b5023a83e1a5bf8773050af46bd075754502fc49a62ab860144c9a6bdc0a7d52e6c7ded87ba13ce58192755dd3f83333bc7c61ffb184fef4142a808 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 7eefe5bcb2c74a9f6c36d34e97adc06d85507631 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 25 Feb 2025 10:14:02 +0100 Subject: [PATCH 246/293] Remove riscv_cmo.h, add sifive_vector.h instead. --- gcc.spec | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index a1cf483..a8cdfb6 100644 --- a/gcc.spec +++ b/gcc.spec @@ -2722,7 +2722,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_crypto.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_bitmanip.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_th_vector.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_cmo.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sifive_vector.h %endif %if %{build_libasan} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sanitizer @@ -3669,6 +3669,8 @@ end %endif %changelog +- drop on riscv riscv_cmo.h header from file list, add sifive_vector.h + * Tue Feb 4 2025 Jakub Jelinek 15.0.1-0.7 - update from trunk - PRs ada/118712, ada/118731, c/118742, c++/79786, c++/98893, c++/108205, From 6a6af0745081d8cf7336f18b26aedc719668f625 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 25 Feb 2025 16:55:58 +0100 Subject: [PATCH 247/293] 15.0.1-0.8 --- .gitignore | 1 + gcc.spec | 59 ++++- gcc15-pr118206.patch | 581 ------------------------------------------- gcc15-pr118671.patch | 276 -------------------- sources | 2 +- 5 files changed, 54 insertions(+), 865 deletions(-) delete mode 100644 gcc15-pr118206.patch delete mode 100644 gcc15-pr118671.patch diff --git a/.gitignore b/.gitignore index bcefcfb..e2ec69c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz /gcc-15.0.1-20250201.tar.xz /gcc-15.0.1-20250204.tar.xz +/gcc-15.0.1-20250225.tar.xz diff --git a/gcc.spec b/gcc.spec index a8cdfb6..8349979 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20250204 -%global gitrev 785011ff892f91b1fedd8ba7812ff3203bc17b1a +%global DATE 20250225 +%global gitrev c22206a9eb8110a2e8890b2851c5c170e1323889 %global gcc_version 15.0.1 %global gcc_major 15 # Note, gcc_release must be integer, if you want to add suffixes to @@ -143,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.7%{?dist} +Release: %{gcc_release}.8%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -298,8 +298,6 @@ Patch8: gcc15-no-add-needed.patch Patch9: gcc15-Wno-format-security.patch Patch10: gcc15-rh1574936.patch Patch11: gcc15-d-shared-libphobos.patch -Patch12: gcc15-pr118206.patch -Patch13: gcc15-pr118671.patch Patch50: isl-rh2155127.patch @@ -914,8 +912,6 @@ so that there cannot be any synchronization problems. %patch -P10 -p0 -b .rh1574936~ %endif %patch -P11 -p0 -b .d-shared-libphobos~ -%patch -P12 -p0 -b .pr118206~ -%patch -P13 -p0 -b .pr118671~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3669,6 +3665,55 @@ end %endif %changelog +* Tue Feb 25 2025 Jakub Jelinek 15.0.1-0.8 +- update from trunk + - PRs analyzer/118300, c/117023, c/119000, c++/66519, c++/66878, c++/70037, + c++/70536, c++/82794, c++/82936, c++/83144, c++/86769, c++/86933, + c++/94100, c++/96364, c++/101740, c++/102455, c++/107637, c++/110345, + c++/113800, c++/115586, c++/116379, c++/117106, c++/117324, + c++/118053, c++/118190, c++/118282, c++/118304, c++/118306, + c++/118319, c++/118574, c++/118661, c++/118763, c++/118773, + c++/118807, c++/118822, c++/118833, c++/118846, c++/118849, + c++/118856, c++/118876, c++/118923, c++/118981, c++/188574, d/111628, + debug/118790, driver/117739, fortran/24878, fortran/47485, + fortran/48958, fortran/56423, fortran/59252, fortran/107635, + fortran/115271, fortran/116829, fortran/117430, fortran/118080, + fortran/118159, fortran/118740, fortran/118745, fortran/118750, + fortran/118845, fortran/118862, go/118746, ipa/118097, jit/118780, + libfortran/114618, libstdc++/100612, libstdc++/111050, + libstdc++/115209, libstdc++/118160, libstdc++/118559, + libstdc++/118701, libstdc++/118811, libstdc++/118855, + libstdc++/118865, lto/118125, middle-end/107067, middle-end/113525, + middle-end/116351, middle-end/117263, middle-end/118288, + middle-end/118950, middle-end/118993, modula2/115112, modula2/118761, + modula2/118978, other/116613, other/118919, rtl-optimization/102150, + rtl-optimization/108840, rtl-optimization/115568, + rtl-optimization/115932, rtl-optimization/116028, + rtl-optimization/116244, rtl-optimization/117081, + rtl-optimization/117082, rtl-optimization/117239, + rtl-optimization/117506, rtl-optimization/117922, + rtl-optimization/118497, sarif-replay/118792, sarif-replay/118881, + target/69374, target/86660, target/94282, target/109093, + target/109780, target/113331, target/114516, target/114522, + target/115123, target/115478, target/115703, target/117674, + target/117991, target/118089, target/118146, target/118248, + target/118540, target/118561, target/118601, target/118623, + target/118685, target/118764, target/118768, target/118771, + target/118772, target/118776, target/118806, target/118813, + target/118815, target/118825, target/118828, target/118832, + target/118835, target/118843, target/118844, target/118872, + target/118878, target/118936, testsuite/116604, testsuite/116986, + testsuite/118754, tree-optimization/82142, tree-optimization/86270, + tree-optimization/90579, tree-optimization/98028, + tree-optimization/98845, tree-optimization/108357, + tree-optimization/110449, tree-optimization/115538, + tree-optimization/117790, tree-optimization/118521, + tree-optimization/118706, tree-optimization/118727, + tree-optimization/118749, tree-optimization/118756, + tree-optimization/118805, tree-optimization/118817, + tree-optimization/118852, tree-optimization/118895, + tree-optimization/118915, tree-optimization/118954, + tree-optimization/118973 - drop on riscv riscv_cmo.h header from file list, add sifive_vector.h * Tue Feb 4 2025 Jakub Jelinek 15.0.1-0.7 diff --git a/gcc15-pr118206.patch b/gcc15-pr118206.patch deleted file mode 100644 index a72ae36..0000000 --- a/gcc15-pr118206.patch +++ /dev/null @@ -1,581 +0,0 @@ -2025-01-09 Jakub Jelinek - - PR tree-optimization/118206 - * gimple-fold.cc (fold_truth_andor_for_ifcombine): Temporarily disable. - * fold-const.cc (decode_field_reference, all_ones_mask_p, unextend, - fold_truth_andor_1): Temporarily revert 2024-12-12 changes. - ---- gcc/gimple-fold.cc.jj 2025-01-02 11:23:09.379616499 +0100 -+++ gcc/gimple-fold.cc 2025-01-09 09:08:53.789628193 +0100 -@@ -8037,7 +8037,8 @@ fold_truth_andor_for_ifcombine (enum tre - it were surrounded with a NE_EXPR. */ - - if (TREE_CODE_CLASS (lcode) != tcc_comparison -- || TREE_CODE_CLASS (rcode) != tcc_comparison) -+ || TREE_CODE_CLASS (rcode) != tcc_comparison -+ || 1) - return 0; - - /* We don't normally find TRUTH_*IF_EXPR in gimple, but these codes may be ---- gcc/fold-const.cc.jj -+++ gcc/fold-const.cc -@@ -137,6 +137,7 @@ static tree range_successor (tree); - static tree fold_range_test (location_t, enum tree_code, tree, tree, tree); - static tree fold_cond_expr_with_comparison (location_t, tree, enum tree_code, - tree, tree, tree, tree); -+static tree unextend (tree, int, int, tree); - static tree extract_muldiv (tree, tree, enum tree_code, tree, bool *); - static tree extract_muldiv_1 (tree, tree, enum tree_code, tree, bool *); - static tree fold_binary_op_with_conditional_arg (location_t, -@@ -5021,6 +5022,136 @@ optimize_bit_field_compare (location_t loc, enum tree_code code, - return lhs; - } - -+/* Subroutine for fold_truth_andor_1: decode a field reference. -+ -+ If EXP is a comparison reference, we return the innermost reference. -+ -+ *PBITSIZE is set to the number of bits in the reference, *PBITPOS is -+ set to the starting bit number. -+ -+ If the innermost field can be completely contained in a mode-sized -+ unit, *PMODE is set to that mode. Otherwise, it is set to VOIDmode. -+ -+ *PVOLATILEP is set to 1 if the any expression encountered is volatile; -+ otherwise it is not changed. -+ -+ *PUNSIGNEDP is set to the signedness of the field. -+ -+ *PREVERSEP is set to the storage order of the field. -+ -+ *PMASK is set to the mask used. This is either contained in a -+ BIT_AND_EXPR or derived from the width of the field. -+ -+ *PAND_MASK is set to the mask found in a BIT_AND_EXPR, if any. -+ -+ Return 0 if this is not a component reference or is one that we can't -+ do anything with. */ -+ -+static tree -+decode_field_reference (location_t loc, tree *exp_, HOST_WIDE_INT *pbitsize, -+ HOST_WIDE_INT *pbitpos, machine_mode *pmode, -+ int *punsignedp, int *preversep, int *pvolatilep, -+ tree *pmask, tree *pand_mask) -+{ -+ tree exp = *exp_; -+ tree outer_type = 0; -+ tree and_mask = 0; -+ tree mask, inner, offset; -+ tree unsigned_type; -+ unsigned int precision; -+ -+ /* All the optimizations using this function assume integer fields. -+ There are problems with FP fields since the type_for_size call -+ below can fail for, e.g., XFmode. */ -+ if (! INTEGRAL_TYPE_P (TREE_TYPE (exp))) -+ return NULL_TREE; -+ -+ /* We are interested in the bare arrangement of bits, so strip everything -+ that doesn't affect the machine mode. However, record the type of the -+ outermost expression if it may matter below. */ -+ if (CONVERT_EXPR_P (exp) -+ || TREE_CODE (exp) == NON_LVALUE_EXPR) -+ outer_type = TREE_TYPE (exp); -+ STRIP_NOPS (exp); -+ -+ if (TREE_CODE (exp) == BIT_AND_EXPR) -+ { -+ and_mask = TREE_OPERAND (exp, 1); -+ exp = TREE_OPERAND (exp, 0); -+ STRIP_NOPS (exp); STRIP_NOPS (and_mask); -+ if (TREE_CODE (and_mask) != INTEGER_CST) -+ return NULL_TREE; -+ } -+ -+ poly_int64 poly_bitsize, poly_bitpos; -+ inner = get_inner_reference (exp, &poly_bitsize, &poly_bitpos, &offset, -+ pmode, punsignedp, preversep, pvolatilep); -+ if ((inner == exp && and_mask == 0) -+ || !poly_bitsize.is_constant (pbitsize) -+ || !poly_bitpos.is_constant (pbitpos) -+ || *pbitsize < 0 -+ || offset != 0 -+ || TREE_CODE (inner) == PLACEHOLDER_EXPR -+ /* We eventually want to build a larger reference and need to take -+ the address of this. */ -+ || (!REFERENCE_CLASS_P (inner) && !DECL_P (inner)) -+ /* Reject out-of-bound accesses (PR79731). */ -+ || (! AGGREGATE_TYPE_P (TREE_TYPE (inner)) -+ && compare_tree_int (TYPE_SIZE (TREE_TYPE (inner)), -+ *pbitpos + *pbitsize) < 0)) -+ return NULL_TREE; -+ -+ unsigned_type = lang_hooks.types.type_for_size (*pbitsize, 1); -+ if (unsigned_type == NULL_TREE) -+ return NULL_TREE; -+ -+ *exp_ = exp; -+ -+ /* If the number of bits in the reference is the same as the bitsize of -+ the outer type, then the outer type gives the signedness. Otherwise -+ (in case of a small bitfield) the signedness is unchanged. */ -+ if (outer_type && *pbitsize == TYPE_PRECISION (outer_type)) -+ *punsignedp = TYPE_UNSIGNED (outer_type); -+ -+ /* Compute the mask to access the bitfield. */ -+ precision = TYPE_PRECISION (unsigned_type); -+ -+ mask = build_int_cst_type (unsigned_type, -1); -+ -+ mask = const_binop (LSHIFT_EXPR, mask, size_int (precision - *pbitsize)); -+ mask = const_binop (RSHIFT_EXPR, mask, size_int (precision - *pbitsize)); -+ -+ /* Merge it with the mask we found in the BIT_AND_EXPR, if any. */ -+ if (and_mask != 0) -+ mask = fold_build2_loc (loc, BIT_AND_EXPR, unsigned_type, -+ fold_convert_loc (loc, unsigned_type, and_mask), mask); -+ -+ *pmask = mask; -+ *pand_mask = and_mask; -+ return inner; -+} -+ -+/* Return nonzero if MASK represents a mask of SIZE ones in the low-order -+ bit positions and MASK is SIGNED. */ -+ -+static bool -+all_ones_mask_p (const_tree mask, unsigned int size) -+{ -+ tree type = TREE_TYPE (mask); -+ unsigned int precision = TYPE_PRECISION (type); -+ -+ /* If this function returns true when the type of the mask is -+ UNSIGNED, then there will be errors. In particular see -+ gcc.c-torture/execute/990326-1.c. There does not appear to be -+ any documentation paper trail as to why this is so. But the pre -+ wide-int worked with that restriction and it has been preserved -+ here. */ -+ if (size > precision || TYPE_SIGN (type) == UNSIGNED) -+ return false; -+ -+ return wi::mask (size, false, precision) == wi::to_wide (mask); -+} -+ - /* Subroutine for fold: determine if VAL is the INTEGER_CONST that - represents the sign bit of EXP's type. If EXP represents a sign - or zero extension, also test VAL against the unextended type. -@@ -6330,6 +6461,48 @@ fold_range_test (location_t loc, enum tree_code code, tree type, - return 0; - } - -+/* Subroutine for fold_truth_andor_1: C is an INTEGER_CST interpreted as a P -+ bit value. Arrange things so the extra bits will be set to zero if and -+ only if C is signed-extended to its full width. If MASK is nonzero, -+ it is an INTEGER_CST that should be AND'ed with the extra bits. */ -+ -+static tree -+unextend (tree c, int p, int unsignedp, tree mask) -+{ -+ tree type = TREE_TYPE (c); -+ int modesize = GET_MODE_BITSIZE (SCALAR_INT_TYPE_MODE (type)); -+ tree temp; -+ -+ if (p == modesize || unsignedp) -+ return c; -+ -+ /* We work by getting just the sign bit into the low-order bit, then -+ into the high-order bit, then sign-extend. We then XOR that value -+ with C. */ -+ temp = build_int_cst (TREE_TYPE (c), -+ wi::extract_uhwi (wi::to_wide (c), p - 1, 1)); -+ -+ /* We must use a signed type in order to get an arithmetic right shift. -+ However, we must also avoid introducing accidental overflows, so that -+ a subsequent call to integer_zerop will work. Hence we must -+ do the type conversion here. At this point, the constant is either -+ zero or one, and the conversion to a signed type can never overflow. -+ We could get an overflow if this conversion is done anywhere else. */ -+ if (TYPE_UNSIGNED (type)) -+ temp = fold_convert (signed_type_for (type), temp); -+ -+ temp = const_binop (LSHIFT_EXPR, temp, size_int (modesize - 1)); -+ temp = const_binop (RSHIFT_EXPR, temp, size_int (modesize - p - 1)); -+ if (mask != 0) -+ temp = const_binop (BIT_AND_EXPR, temp, -+ fold_convert (TREE_TYPE (c), mask)); -+ /* If necessary, convert the type back to match the type of C. */ -+ if (TYPE_UNSIGNED (type)) -+ temp = fold_convert (type, temp); -+ -+ return fold_convert (type, const_binop (BIT_XOR_EXPR, c, temp)); -+} -+ - /* For an expression that has the form - (A && B) || ~B - or -@@ -6400,13 +6573,20 @@ merge_truthop_with_opposite_arm (location_t loc, tree op, tree cmpop, - lhs, rhs); - return NULL_TREE; - } -- -+ - /* Find ways of folding logical expressions of LHS and RHS: - Try to merge two comparisons to the same innermost item. - Look for range tests like "ch >= '0' && ch <= '9'". - Look for combinations of simple terms on machines with expensive branches - and evaluate the RHS unconditionally. - -+ For example, if we have p->a == 2 && p->b == 4 and we can make an -+ object large enough to span both A and B, we can do this with a comparison -+ against the object ANDed with the a mask. -+ -+ If we have p->a == q->a && p->b == q->b, we may be able to use bit masking -+ operations to do this with one comparison. -+ - We check for both normal comparisons and the BIT_AND_EXPRs made this by - function and the one above. - -@@ -6431,9 +6611,24 @@ fold_truth_andor_1 (location_t loc, enum tree_code code, tree truth_type, - convert EQ_EXPR to NE_EXPR so we need not reject the "wrong" - comparison for one-bit fields. */ - -+ enum tree_code wanted_code; - enum tree_code lcode, rcode; - tree ll_arg, lr_arg, rl_arg, rr_arg; -- tree result; -+ tree ll_inner, lr_inner, rl_inner, rr_inner; -+ HOST_WIDE_INT ll_bitsize, ll_bitpos, lr_bitsize, lr_bitpos; -+ HOST_WIDE_INT rl_bitsize, rl_bitpos, rr_bitsize, rr_bitpos; -+ HOST_WIDE_INT xll_bitpos, xlr_bitpos, xrl_bitpos, xrr_bitpos; -+ HOST_WIDE_INT lnbitsize, lnbitpos, rnbitsize, rnbitpos; -+ int ll_unsignedp, lr_unsignedp, rl_unsignedp, rr_unsignedp; -+ int ll_reversep, lr_reversep, rl_reversep, rr_reversep; -+ machine_mode ll_mode, lr_mode, rl_mode, rr_mode; -+ scalar_int_mode lnmode, rnmode; -+ tree ll_mask, lr_mask, rl_mask, rr_mask; -+ tree ll_and_mask, lr_and_mask, rl_and_mask, rr_and_mask; -+ tree l_const, r_const; -+ tree lntype, rntype, result; -+ HOST_WIDE_INT first_bit, end_bit; -+ int volatilep; - - /* Start by getting the comparison codes. Fail if anything is volatile. - If one operand is a BIT_AND_EXPR with the constant one, treat it as if -@@ -6528,7 +6723,316 @@ fold_truth_andor_1 (location_t loc, enum tree_code code, tree truth_type, - build_int_cst (TREE_TYPE (ll_arg), 0)); - } - -- return 0; -+ /* See if the comparisons can be merged. Then get all the parameters for -+ each side. */ -+ -+ if ((lcode != EQ_EXPR && lcode != NE_EXPR) -+ || (rcode != EQ_EXPR && rcode != NE_EXPR)) -+ return 0; -+ -+ ll_reversep = lr_reversep = rl_reversep = rr_reversep = 0; -+ volatilep = 0; -+ ll_inner = decode_field_reference (loc, &ll_arg, -+ &ll_bitsize, &ll_bitpos, &ll_mode, -+ &ll_unsignedp, &ll_reversep, &volatilep, -+ &ll_mask, &ll_and_mask); -+ lr_inner = decode_field_reference (loc, &lr_arg, -+ &lr_bitsize, &lr_bitpos, &lr_mode, -+ &lr_unsignedp, &lr_reversep, &volatilep, -+ &lr_mask, &lr_and_mask); -+ rl_inner = decode_field_reference (loc, &rl_arg, -+ &rl_bitsize, &rl_bitpos, &rl_mode, -+ &rl_unsignedp, &rl_reversep, &volatilep, -+ &rl_mask, &rl_and_mask); -+ rr_inner = decode_field_reference (loc, &rr_arg, -+ &rr_bitsize, &rr_bitpos, &rr_mode, -+ &rr_unsignedp, &rr_reversep, &volatilep, -+ &rr_mask, &rr_and_mask); -+ -+ /* It must be true that the inner operation on the lhs of each -+ comparison must be the same if we are to be able to do anything. -+ Then see if we have constants. If not, the same must be true for -+ the rhs's. */ -+ if (volatilep -+ || ll_reversep != rl_reversep -+ || ll_inner == 0 || rl_inner == 0 -+ || ! operand_equal_p (ll_inner, rl_inner, 0)) -+ return 0; -+ -+ if (TREE_CODE (lr_arg) == INTEGER_CST -+ && TREE_CODE (rr_arg) == INTEGER_CST) -+ { -+ l_const = lr_arg, r_const = rr_arg; -+ lr_reversep = ll_reversep; -+ } -+ else if (lr_reversep != rr_reversep -+ || lr_inner == 0 || rr_inner == 0 -+ || ! operand_equal_p (lr_inner, rr_inner, 0)) -+ return 0; -+ else -+ l_const = r_const = 0; -+ -+ /* If either comparison code is not correct for our logical operation, -+ fail. However, we can convert a one-bit comparison against zero into -+ the opposite comparison against that bit being set in the field. */ -+ -+ wanted_code = (code == TRUTH_AND_EXPR ? EQ_EXPR : NE_EXPR); -+ if (lcode != wanted_code) -+ { -+ if (l_const && integer_zerop (l_const) && integer_pow2p (ll_mask)) -+ { -+ /* Make the left operand unsigned, since we are only interested -+ in the value of one bit. Otherwise we are doing the wrong -+ thing below. */ -+ ll_unsignedp = 1; -+ l_const = ll_mask; -+ } -+ else -+ return 0; -+ } -+ -+ /* This is analogous to the code for l_const above. */ -+ if (rcode != wanted_code) -+ { -+ if (r_const && integer_zerop (r_const) && integer_pow2p (rl_mask)) -+ { -+ rl_unsignedp = 1; -+ r_const = rl_mask; -+ } -+ else -+ return 0; -+ } -+ -+ /* See if we can find a mode that contains both fields being compared on -+ the left. If we can't, fail. Otherwise, update all constants and masks -+ to be relative to a field of that size. */ -+ first_bit = MIN (ll_bitpos, rl_bitpos); -+ end_bit = MAX (ll_bitpos + ll_bitsize, rl_bitpos + rl_bitsize); -+ if (!get_best_mode (end_bit - first_bit, first_bit, 0, 0, -+ TYPE_ALIGN (TREE_TYPE (ll_inner)), BITS_PER_WORD, -+ volatilep, &lnmode)) -+ return 0; -+ -+ lnbitsize = GET_MODE_BITSIZE (lnmode); -+ lnbitpos = first_bit & ~ (lnbitsize - 1); -+ lntype = lang_hooks.types.type_for_size (lnbitsize, 1); -+ xll_bitpos = ll_bitpos - lnbitpos, xrl_bitpos = rl_bitpos - lnbitpos; -+ -+ if (ll_reversep ? !BYTES_BIG_ENDIAN : BYTES_BIG_ENDIAN) -+ { -+ xll_bitpos = lnbitsize - xll_bitpos - ll_bitsize; -+ xrl_bitpos = lnbitsize - xrl_bitpos - rl_bitsize; -+ } -+ -+ ll_mask = const_binop (LSHIFT_EXPR, fold_convert_loc (loc, lntype, ll_mask), -+ size_int (xll_bitpos)); -+ rl_mask = const_binop (LSHIFT_EXPR, fold_convert_loc (loc, lntype, rl_mask), -+ size_int (xrl_bitpos)); -+ if (ll_mask == NULL_TREE || rl_mask == NULL_TREE) -+ return 0; -+ -+ if (l_const) -+ { -+ l_const = fold_convert_loc (loc, lntype, l_const); -+ l_const = unextend (l_const, ll_bitsize, ll_unsignedp, ll_and_mask); -+ l_const = const_binop (LSHIFT_EXPR, l_const, size_int (xll_bitpos)); -+ if (l_const == NULL_TREE) -+ return 0; -+ if (! integer_zerop (const_binop (BIT_AND_EXPR, l_const, -+ fold_build1_loc (loc, BIT_NOT_EXPR, -+ lntype, ll_mask)))) -+ { -+ warning (0, "comparison is always %d", wanted_code == NE_EXPR); -+ -+ return constant_boolean_node (wanted_code == NE_EXPR, truth_type); -+ } -+ } -+ if (r_const) -+ { -+ r_const = fold_convert_loc (loc, lntype, r_const); -+ r_const = unextend (r_const, rl_bitsize, rl_unsignedp, rl_and_mask); -+ r_const = const_binop (LSHIFT_EXPR, r_const, size_int (xrl_bitpos)); -+ if (r_const == NULL_TREE) -+ return 0; -+ if (! integer_zerop (const_binop (BIT_AND_EXPR, r_const, -+ fold_build1_loc (loc, BIT_NOT_EXPR, -+ lntype, rl_mask)))) -+ { -+ warning (0, "comparison is always %d", wanted_code == NE_EXPR); -+ -+ return constant_boolean_node (wanted_code == NE_EXPR, truth_type); -+ } -+ } -+ -+ /* If the right sides are not constant, do the same for it. Also, -+ disallow this optimization if a size, signedness or storage order -+ mismatch occurs between the left and right sides. */ -+ if (l_const == 0) -+ { -+ if (ll_bitsize != lr_bitsize || rl_bitsize != rr_bitsize -+ || ll_unsignedp != lr_unsignedp || rl_unsignedp != rr_unsignedp -+ || ll_reversep != lr_reversep -+ /* Make sure the two fields on the right -+ correspond to the left without being swapped. */ -+ || ll_bitpos - rl_bitpos != lr_bitpos - rr_bitpos) -+ return 0; -+ -+ first_bit = MIN (lr_bitpos, rr_bitpos); -+ end_bit = MAX (lr_bitpos + lr_bitsize, rr_bitpos + rr_bitsize); -+ if (!get_best_mode (end_bit - first_bit, first_bit, 0, 0, -+ TYPE_ALIGN (TREE_TYPE (lr_inner)), BITS_PER_WORD, -+ volatilep, &rnmode)) -+ return 0; -+ -+ rnbitsize = GET_MODE_BITSIZE (rnmode); -+ rnbitpos = first_bit & ~ (rnbitsize - 1); -+ rntype = lang_hooks.types.type_for_size (rnbitsize, 1); -+ xlr_bitpos = lr_bitpos - rnbitpos, xrr_bitpos = rr_bitpos - rnbitpos; -+ -+ if (lr_reversep ? !BYTES_BIG_ENDIAN : BYTES_BIG_ENDIAN) -+ { -+ xlr_bitpos = rnbitsize - xlr_bitpos - lr_bitsize; -+ xrr_bitpos = rnbitsize - xrr_bitpos - rr_bitsize; -+ } -+ -+ lr_mask = const_binop (LSHIFT_EXPR, fold_convert_loc (loc, -+ rntype, lr_mask), -+ size_int (xlr_bitpos)); -+ rr_mask = const_binop (LSHIFT_EXPR, fold_convert_loc (loc, -+ rntype, rr_mask), -+ size_int (xrr_bitpos)); -+ if (lr_mask == NULL_TREE || rr_mask == NULL_TREE) -+ return 0; -+ -+ /* Make a mask that corresponds to both fields being compared. -+ Do this for both items being compared. If the operands are the -+ same size and the bits being compared are in the same position -+ then we can do this by masking both and comparing the masked -+ results. */ -+ ll_mask = const_binop (BIT_IOR_EXPR, ll_mask, rl_mask); -+ lr_mask = const_binop (BIT_IOR_EXPR, lr_mask, rr_mask); -+ if (lnbitsize == rnbitsize -+ && xll_bitpos == xlr_bitpos -+ && lnbitpos >= 0 -+ && rnbitpos >= 0) -+ { -+ lhs = make_bit_field_ref (loc, ll_inner, ll_arg, -+ lntype, lnbitsize, lnbitpos, -+ ll_unsignedp || rl_unsignedp, ll_reversep); -+ if (! all_ones_mask_p (ll_mask, lnbitsize)) -+ lhs = build2 (BIT_AND_EXPR, lntype, lhs, ll_mask); -+ -+ rhs = make_bit_field_ref (loc, lr_inner, lr_arg, -+ rntype, rnbitsize, rnbitpos, -+ lr_unsignedp || rr_unsignedp, lr_reversep); -+ if (! all_ones_mask_p (lr_mask, rnbitsize)) -+ rhs = build2 (BIT_AND_EXPR, rntype, rhs, lr_mask); -+ -+ return build2_loc (loc, wanted_code, truth_type, lhs, rhs); -+ } -+ -+ /* There is still another way we can do something: If both pairs of -+ fields being compared are adjacent, we may be able to make a wider -+ field containing them both. -+ -+ Note that we still must mask the lhs/rhs expressions. Furthermore, -+ the mask must be shifted to account for the shift done by -+ make_bit_field_ref. */ -+ if (((ll_bitsize + ll_bitpos == rl_bitpos -+ && lr_bitsize + lr_bitpos == rr_bitpos) -+ || (ll_bitpos == rl_bitpos + rl_bitsize -+ && lr_bitpos == rr_bitpos + rr_bitsize)) -+ && ll_bitpos >= 0 -+ && rl_bitpos >= 0 -+ && lr_bitpos >= 0 -+ && rr_bitpos >= 0) -+ { -+ tree type; -+ -+ lhs = make_bit_field_ref (loc, ll_inner, ll_arg, lntype, -+ ll_bitsize + rl_bitsize, -+ MIN (ll_bitpos, rl_bitpos), -+ ll_unsignedp, ll_reversep); -+ rhs = make_bit_field_ref (loc, lr_inner, lr_arg, rntype, -+ lr_bitsize + rr_bitsize, -+ MIN (lr_bitpos, rr_bitpos), -+ lr_unsignedp, lr_reversep); -+ -+ ll_mask = const_binop (RSHIFT_EXPR, ll_mask, -+ size_int (MIN (xll_bitpos, xrl_bitpos))); -+ lr_mask = const_binop (RSHIFT_EXPR, lr_mask, -+ size_int (MIN (xlr_bitpos, xrr_bitpos))); -+ if (ll_mask == NULL_TREE || lr_mask == NULL_TREE) -+ return 0; -+ -+ /* Convert to the smaller type before masking out unwanted bits. */ -+ type = lntype; -+ if (lntype != rntype) -+ { -+ if (lnbitsize > rnbitsize) -+ { -+ lhs = fold_convert_loc (loc, rntype, lhs); -+ ll_mask = fold_convert_loc (loc, rntype, ll_mask); -+ type = rntype; -+ } -+ else if (lnbitsize < rnbitsize) -+ { -+ rhs = fold_convert_loc (loc, lntype, rhs); -+ lr_mask = fold_convert_loc (loc, lntype, lr_mask); -+ type = lntype; -+ } -+ } -+ -+ if (! all_ones_mask_p (ll_mask, ll_bitsize + rl_bitsize)) -+ lhs = build2 (BIT_AND_EXPR, type, lhs, ll_mask); -+ -+ if (! all_ones_mask_p (lr_mask, lr_bitsize + rr_bitsize)) -+ rhs = build2 (BIT_AND_EXPR, type, rhs, lr_mask); -+ -+ return build2_loc (loc, wanted_code, truth_type, lhs, rhs); -+ } -+ -+ return 0; -+ } -+ -+ /* Handle the case of comparisons with constants. If there is something in -+ common between the masks, those bits of the constants must be the same. -+ If not, the condition is always false. Test for this to avoid generating -+ incorrect code below. */ -+ result = const_binop (BIT_AND_EXPR, ll_mask, rl_mask); -+ if (! integer_zerop (result) -+ && simple_cst_equal (const_binop (BIT_AND_EXPR, result, l_const), -+ const_binop (BIT_AND_EXPR, result, r_const)) != 1) -+ { -+ if (wanted_code == NE_EXPR) -+ { -+ warning (0, "% of unmatched not-equal tests is always 1"); -+ return constant_boolean_node (true, truth_type); -+ } -+ else -+ { -+ warning (0, "% of mutually exclusive equal-tests is always 0"); -+ return constant_boolean_node (false, truth_type); -+ } -+ } -+ -+ if (lnbitpos < 0) -+ return 0; -+ -+ /* Construct the expression we will return. First get the component -+ reference we will make. Unless the mask is all ones the width of -+ that field, perform the mask operation. Then compare with the -+ merged constant. */ -+ result = make_bit_field_ref (loc, ll_inner, ll_arg, -+ lntype, lnbitsize, lnbitpos, -+ ll_unsignedp || rl_unsignedp, ll_reversep); -+ -+ ll_mask = const_binop (BIT_IOR_EXPR, ll_mask, rl_mask); -+ if (! all_ones_mask_p (ll_mask, lnbitsize)) -+ result = build2_loc (loc, BIT_AND_EXPR, lntype, result, ll_mask); -+ -+ return build2_loc (loc, wanted_code, truth_type, result, -+ const_binop (BIT_IOR_EXPR, l_const, r_const)); - } - - /* T is an integer expression that is being multiplied, divided, or taken a diff --git a/gcc15-pr118671.patch b/gcc15-pr118671.patch deleted file mode 100644 index ea9a6e7..0000000 --- a/gcc15-pr118671.patch +++ /dev/null @@ -1,276 +0,0 @@ -2025-01-28 Jakub Jelinek - - PR c++/118671 - * call.cc (build_list_conv): For RAW_DATA_CST, call - implicit_conversion with INTEGER_CST representing first byte instead - of the whole RAW_DATA_CST. If it is an optimizable trivial - conversion, just save that to subconvs, otherwise allocate an - artificial ck_list for all the RAW_DATA_CST bytes and create - subsubconv for each of them. - (convert_like_internal): For ck_list with RAW_DATA_CST, instead of - doing all the checks for optimizable conversion just check kind and - assert everything else, otherwise use subsubconversions instead of - the subconversion for each element. - - * g++.dg/cpp/embed-25.C: New test. - * g++.dg/cpp0x/pr118671.C: New test. - ---- gcc/cp/call.cc.jj 2025-01-22 09:22:53.000000000 +0100 -+++ gcc/cp/call.cc 2025-01-27 21:36:31.159889633 +0100 -@@ -868,6 +868,67 @@ build_list_conv (tree type, tree ctor, i - - FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (ctor), i, val) - { -+ if (TREE_CODE (val) == RAW_DATA_CST) -+ { -+ tree elt -+ = build_int_cst (TREE_TYPE (val), RAW_DATA_UCHAR_ELT (val, 0)); -+ conversion *sub -+ = implicit_conversion (elttype, TREE_TYPE (val), elt, -+ false, flags, complain); -+ conversion *next; -+ if (sub == NULL) -+ return NULL; -+ /* For conversion to initializer_list or -+ initializer_list or initializer_list -+ we can optimize and keep RAW_DATA_CST with adjusted -+ type if we report narrowing errors if needed. -+ Use just one subconversion for that case. */ -+ if (sub->kind == ck_std -+ && sub->type -+ && (TREE_CODE (sub->type) == INTEGER_TYPE -+ || is_byte_access_type (sub->type)) -+ && TYPE_PRECISION (sub->type) == CHAR_BIT -+ && (next = next_conversion (sub)) -+ && next->kind == ck_identity) -+ { -+ subconvs[i] = sub; -+ continue; -+ } -+ /* Otherwise. build separate subconv for each RAW_DATA_CST -+ byte. Wrap those into an artificial ck_list which convert_like -+ will then handle. */ -+ conversion **subsubconvs = alloc_conversions (RAW_DATA_LENGTH (val)); -+ unsigned int j; -+ subsubconvs[0] = sub; -+ for (j = 1; j < (unsigned) RAW_DATA_LENGTH (val); ++j) -+ { -+ elt = build_int_cst (TREE_TYPE (val), -+ RAW_DATA_UCHAR_ELT (val, j)); -+ sub = implicit_conversion (elttype, TREE_TYPE (val), elt, -+ false, flags, complain); -+ if (sub == NULL) -+ return NULL; -+ subsubconvs[j] = sub; -+ } -+ -+ t = alloc_conversion (ck_list); -+ t->type = type; -+ t->u.list = subsubconvs; -+ t->rank = cr_exact; -+ for (j = 0; j < (unsigned) RAW_DATA_LENGTH (val); ++j) -+ { -+ sub = subsubconvs[i]; -+ if (sub->rank > t->rank) -+ t->rank = sub->rank; -+ if (sub->user_conv_p) -+ t->user_conv_p = true; -+ if (sub->bad_p) -+ t->bad_p = true; -+ } -+ subconvs[i] = t; -+ continue; -+ } -+ - conversion *sub - = implicit_conversion (elttype, TREE_TYPE (val), val, - false, flags, complain); -@@ -8841,22 +8902,22 @@ convert_like_internal (conversion *convs - { - if (TREE_CODE (val) == RAW_DATA_CST) - { -- tree elt_type; -- conversion *next; - /* For conversion to initializer_list or - initializer_list or initializer_list - we can optimize and keep RAW_DATA_CST with adjusted - type if we report narrowing errors if needed, for - others this converts each element separately. */ -- if (convs->u.list[ix]->kind == ck_std -- && (elt_type = convs->u.list[ix]->type) -- && (TREE_CODE (elt_type) == INTEGER_TYPE -- || is_byte_access_type (elt_type)) -- && TYPE_PRECISION (elt_type) == CHAR_BIT -- && (next = next_conversion (convs->u.list[ix])) -- && next->kind == ck_identity) -+ if (convs->u.list[ix]->kind == ck_std) - { -- if (!TYPE_UNSIGNED (elt_type) -+ tree et = convs->u.list[ix]->type; -+ conversion *next = next_conversion (convs->u.list[ix]); -+ gcc_assert (et -+ && (TREE_CODE (et) == INTEGER_TYPE -+ || is_byte_access_type (et)) -+ && TYPE_PRECISION (et) == CHAR_BIT -+ && next -+ && next->kind == ck_identity); -+ if (!TYPE_UNSIGNED (et) - /* For RAW_DATA_CST, TREE_TYPE (val) can be - either integer_type_node (when it has been - created by the lexer from CPP_EMBED) or -@@ -8882,7 +8943,7 @@ convert_like_internal (conversion *convs - "narrowing conversion of " - "%qd from %qH to %qI", - RAW_DATA_UCHAR_ELT (val, i), -- TREE_TYPE (val), elt_type); -+ TREE_TYPE (val), et); - if (errorcount != savederrorcount) - return error_mark_node; - } -@@ -8890,19 +8951,21 @@ convert_like_internal (conversion *convs - return error_mark_node; - } - tree sub = copy_node (val); -- TREE_TYPE (sub) = elt_type; -+ TREE_TYPE (sub) = et; - CONSTRUCTOR_APPEND_ELT (CONSTRUCTOR_ELTS (new_ctor), - NULL_TREE, sub); - } - else - { -+ conversion *conv = convs->u.list[ix]; -+ gcc_assert (conv->kind == ck_list); - for (int i = 0; i < RAW_DATA_LENGTH (val); ++i) - { - tree elt - = build_int_cst (TREE_TYPE (val), - RAW_DATA_UCHAR_ELT (val, i)); - tree sub -- = convert_like (convs->u.list[ix], elt, -+ = convert_like (conv->u.list[i], elt, - fn, argnum, false, false, - /*nested_p=*/true, complain); - if (sub == error_mark_node) ---- gcc/testsuite/g++.dg/cpp/embed-25.C.jj 2025-01-27 21:51:00.190990295 +0100 -+++ gcc/testsuite/g++.dg/cpp/embed-25.C 2025-01-27 21:50:45.954183524 +0100 -@@ -0,0 +1,56 @@ -+// PR c++/118671 -+// { dg-do run { target c++11 } } -+// { dg-options "-O2" } -+ -+namespace std { -+template -+struct initializer_list { -+private: -+ T *_M_array; -+ decltype (sizeof 0) _M_len; -+public: -+ constexpr decltype (sizeof 0) -+ size () const noexcept { return _M_len; } -+ constexpr const T * -+ begin () const noexcept { return _M_array; } -+ constexpr const T * -+ end () const noexcept { return begin () + size (); } -+}; -+} -+ -+struct A {} a; -+ -+struct B { -+ constexpr B (int x) : B (a, x) {} -+ template -+ constexpr B (A, T... x) : b(x...) {} -+ int b; -+}; -+ -+struct C { -+ C (std::initializer_list x) -+ { -+ unsigned char buf[] = { -+#embed __FILE__ -+ }; -+ if (x.size () != sizeof (buf)) -+ __builtin_abort (); -+ unsigned int i = 0; -+ for (auto a = x.begin (); a < x.end (); ++a, ++i) -+ if (a->b != buf[i]) -+ __builtin_abort (); -+ c = true; -+ } -+ bool c; -+}; -+ -+C c { -+#embed __FILE__ -+}; -+ -+int -+main () -+{ -+ if (!c.c) -+ __builtin_abort (); -+} ---- gcc/testsuite/g++.dg/cpp0x/pr118671.C.jj 2025-01-27 21:47:01.154242793 +0100 -+++ gcc/testsuite/g++.dg/cpp0x/pr118671.C 2025-01-27 21:46:43.379486760 +0100 -@@ -0,0 +1,61 @@ -+// PR c++/118671 -+// { dg-do run { target c++11 } } -+// { dg-options "-O2" } -+ -+namespace std { -+template -+struct initializer_list { -+private: -+ T *_M_array; -+ decltype (sizeof 0) _M_len; -+public: -+ constexpr decltype (sizeof 0) -+ size () const noexcept { return _M_len; } -+ constexpr const T * -+ begin () const noexcept { return _M_array; } -+ constexpr const T * -+ end () const noexcept { return begin () + size (); } -+}; -+} -+ -+struct A {} a; -+ -+struct B { -+ constexpr B (int x) : B (a, x) {} -+ template -+ constexpr B (A, T... x) : b(x...) {} -+ int b; -+}; -+ -+struct C { -+ C (std::initializer_list x) -+ { -+ if (x.size () != 130) -+ __builtin_abort (); -+ unsigned int i = 1; -+ for (auto a = x.begin (); a < x.end (); ++a) -+ if (a->b != i) -+ __builtin_abort (); -+ else -+ i = (i & 15) + 1; -+ c = true; -+ } -+ bool c; -+}; -+ -+C c { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -+ 1, 2 }; -+ -+int -+main () -+{ -+ if (!c.c) -+ __builtin_abort (); -+} diff --git a/sources b/sources index a90cbaf..1d5e353 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.0.1-20250204.tar.xz) = 33b9175db47e892b60d9de6d2bbe48b44d7e44ac36f36e08a522cbf020919fe2dc2ef2239fa4c75be63c788fde9725106e64f76663ce1330f984ee3c03fc1ac9 +SHA512 (gcc-15.0.1-20250225.tar.xz) = 8c6c880dc779c075d4ae2fd27f587ad9e3b1b1aaf6ec418b7642e67578fbafebc755cff2c5df6283f88db29f90f5d118557495a3c0fe9c40059639aaa4d47bae SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz) = 839bb0c45b5023a83e1a5bf8773050af46bd075754502fc49a62ab860144c9a6bdc0a7d52e6c7ded87ba13ce58192755dd3f83333bc7c61ffb184fef4142a808 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 264b1809f7956a04301df5145529b229aca1f042 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 1 Mar 2025 13:02:22 +0100 Subject: [PATCH 248/293] 15.0.1-0.9 --- .gitignore | 1 + gcc.spec | 31 ++++++++++++++++-- gcc15-pr118953.patch | 65 +++++++++++++++++++++++++++++++++++++ gcc15-pr119002.patch | 71 +++++++++++++++++++++++++++++++++++++++++ gcc15-pr119006.patch | 76 ++++++++++++++++++++++++++++++++++++++++++++ sources | 2 +- 6 files changed, 242 insertions(+), 4 deletions(-) create mode 100644 gcc15-pr118953.patch create mode 100644 gcc15-pr119002.patch create mode 100644 gcc15-pr119006.patch diff --git a/.gitignore b/.gitignore index e2ec69c..75221f5 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /gcc-15.0.1-20250201.tar.xz /gcc-15.0.1-20250204.tar.xz /gcc-15.0.1-20250225.tar.xz +/gcc-15.0.1-20250301.tar.xz diff --git a/gcc.spec b/gcc.spec index 8349979..828b594 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20250225 -%global gitrev c22206a9eb8110a2e8890b2851c5c170e1323889 +%global DATE 20250301 +%global gitrev 504a13588c3919101c7409909bbe2c6af9dcb829 %global gcc_version 15.0.1 %global gcc_major 15 # Note, gcc_release must be integer, if you want to add suffixes to @@ -143,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.8%{?dist} +Release: %{gcc_release}.9%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -298,6 +298,9 @@ Patch8: gcc15-no-add-needed.patch Patch9: gcc15-Wno-format-security.patch Patch10: gcc15-rh1574936.patch Patch11: gcc15-d-shared-libphobos.patch +Patch12: gcc15-pr118953.patch +Patch13: gcc15-pr119002.patch +Patch14: gcc15-pr119006.patch Patch50: isl-rh2155127.patch @@ -912,6 +915,9 @@ so that there cannot be any synchronization problems. %patch -P10 -p0 -b .rh1574936~ %endif %patch -P11 -p0 -b .d-shared-libphobos~ +%patch -P12 -p0 -b .pr118953~ +%patch -P13 -p0 -b .pr119002~ +%patch -P14 -p0 -b .pr119006~ %patch -P50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 @@ -3665,6 +3671,25 @@ end %endif %changelog +* Sat Mar 1 2025 Jakub Jelinek 15.0.1-0.9 +- update from trunk + - PRs c/114870, c/119001, c++/110822, c++/114913, c++/118516, c++/118928, + c++/118986, c++/119038, c++/119045, d/116961, d/118654, + fortran/108233, fortran/108369, fortran/118730, fortran/118789, + ipa/111245, ipa/118243, jit/117047, libstdc++/93059, libstdc++/104606, + libstdc++/105609, libstdc++/106612, libstdc++/112490, + libstdc++/112803, libstdc++/118083, lto/91299, middle-end/66279, + middle-end/115871, middle-end/118819, middle-end/118860, + middle-end/119021, rtl-optimization/116336, rtl-optimization/117712, + rtl-optimization/119002, target/107635, target/109189, target/115458, + target/118931, target/118940, testsuite/115028, testsuite/116143, + translation/118991, tree-optimization/87984, tree-optimization/116855, + tree-optimization/118464, tree-optimization/119030 +- fix ranger related miscompilation (PR tree-optimization/118953) +- fix miscompilation of floating point comparisons if NaNs can appear + (#2346233, PR rtl-optimization/119002) +- fix ICF related miscompilation (PR ipa/119006) + * Tue Feb 25 2025 Jakub Jelinek 15.0.1-0.8 - update from trunk - PRs analyzer/118300, c/117023, c/119000, c++/66519, c++/66878, c++/70037, diff --git a/gcc15-pr118953.patch b/gcc15-pr118953.patch new file mode 100644 index 0000000..736afac --- /dev/null +++ b/gcc15-pr118953.patch @@ -0,0 +1,65 @@ +2025-02-27 Jakub Jelinek + + PR tree-optimization/118953 + * value-range.cc (irange::union_bitmask): Update m_bitmask if + get_bitmask () is unknown_p and m_bitmask is not even when the + semantic bitmask didn't change and returning false. + + * gcc.dg/torture/pr118953.c: New test. + +--- gcc/value-range.cc.jj 2025-01-02 11:23:25.118396777 +0100 ++++ gcc/value-range.cc 2025-02-26 18:49:10.713107905 +0100 +@@ -2447,7 +2447,7 @@ irange::union_bitmask (const irange &r) + irange_bitmask bm = get_bitmask (); + irange_bitmask save = bm; + bm.union_ (r.get_bitmask ()); +- if (save == bm) ++ if (save == bm && (!bm.unknown_p () || m_bitmask.unknown_p ())) + return false; + + m_bitmask = bm; +--- gcc/testsuite/gcc.dg/torture/pr118953.c.jj 2025-02-26 18:51:47.139936059 +0100 ++++ gcc/testsuite/gcc.dg/torture/pr118953.c 2025-02-26 18:52:33.078298359 +0100 +@@ -0,0 +1,42 @@ ++/* PR tree-optimization/118953 */ ++/* { dg-do run { target int32plus } } */ ++ ++int a, d; ++long long b, c; ++ ++int ++foo (int f, int g, unsigned long long h, long long j) ++{ ++ unsigned long long i = 0; ++ if (g) ++ switch (f) ++ { ++ case 8: ++ i = b; ++ break; ++ case 6: ++ i = c; ++ break; ++ } ++ else ++ switch (f) ++ { ++ case 8: ++ i = h; ++ break; ++ case 24: ++ case 32: ++ i = j; ++ break; ++ } ++ return i; ++} ++ ++int ++main () ++{ ++ int k = a * (409628 - 28); ++ d = foo (k - 1048524, 0, k - 1048487, k - 1048531ULL); ++ if (d) ++ __builtin_abort (); ++} diff --git a/gcc15-pr119002.patch b/gcc15-pr119002.patch new file mode 100644 index 0000000..aac548e --- /dev/null +++ b/gcc15-pr119002.patch @@ -0,0 +1,71 @@ +2025-02-24 Jakub Jelinek + + PR rtl-optimization/119002 + * simplify-rtx.cc: Include tm_p.h. + (simplify_context::simplify_logical_relational_operation): Set + all = 15 also if op0's first operand has MODE_CC mode and it + is or could be floating point comparison which honors NaNs. + + * gcc.c-torture/execute/ieee/pr119002.c: New test. + +--- gcc/simplify-rtx.cc.jj 2025-01-15 08:43:39.611918569 +0100 ++++ gcc/simplify-rtx.cc 2025-02-24 21:16:09.980758481 +0100 +@@ -37,6 +37,7 @@ along with GCC; see the file COPYING3. + #include "selftest-rtl.h" + #include "rtx-vector-builder.h" + #include "rtlanal.h" ++#include "tm_p.h" + + /* Simplification and canonicalization of RTL. */ + +@@ -2675,6 +2676,24 @@ simplify_context::simplify_logical_relat + /* See whether the operands might be unordered. */ + if (HONOR_NANS (GET_MODE (XEXP (op0, 0)))) + all = 15; ++ else if (GET_MODE_CLASS (GET_MODE (XEXP (op0, 0))) == MODE_CC ++ && !flag_finite_math_only) ++ { ++ /* HONOR_NANS will be false for MODE_CC comparisons, eventhough ++ they could actually be floating point. If the mode is ++ reversible, ask the backend if it could be unordered, otherwise ++ err on the side of caution and assume it could be unordered ++ if any supported floating mode honors NaNs. */ ++ machine_mode mode = GET_MODE (XEXP (op0, 0)); ++ if (!REVERSIBLE_CC_MODE (mode) ++ || REVERSE_CONDITION (GT, mode) != LE) ++ FOR_EACH_MODE_IN_CLASS (mode, MODE_FLOAT) ++ if (HONOR_NANS (mode)) ++ { ++ all = 15; ++ break; ++ } ++ } + mask0 = comparison_to_mask (code0) & all; + mask1 = comparison_to_mask (code1) & all; + } +--- gcc/testsuite/gcc.c-torture/execute/ieee/pr119002.c.jj 2025-02-24 21:18:45.880622627 +0100 ++++ gcc/testsuite/gcc.c-torture/execute/ieee/pr119002.c 2025-02-24 21:19:02.418396051 +0100 +@@ -0,0 +1,23 @@ ++/* PR rtl-optimization/119002 */ ++ ++__attribute__((noipa)) unsigned int ++foo (void *x, float y, float z) ++{ ++ unsigned int a, b; ++ float c, d, e; ++ c = y; ++ d = z; ++ a = c < d; ++ d = y; ++ e = z; ++ b = d >= e; ++ a |= b; ++ return a; ++} ++ ++int ++main () ++{ ++ if (foo ((void *) 0, 0.f, __builtin_nanf (""))) ++ __builtin_abort (); ++} diff --git a/gcc15-pr119006.patch b/gcc15-pr119006.patch new file mode 100644 index 0000000..dfbdaa9 --- /dev/null +++ b/gcc15-pr119006.patch @@ -0,0 +1,76 @@ +2025-02-27 Jakub Jelinek + + PR ipa/119006 + * ipa-icf-gimple.cc (func_checker::compare_operand): If t1 and t2 + are ADDR_EXPRs, call operand_equal_p on their operands rather than on + the ADDR_EXPRs themselves. Formatting fix. + + * g++.dg/opt/pr119006.C: New test. + +--- gcc/ipa-icf-gimple.cc.jj 2025-02-01 00:50:02.080774328 +0100 ++++ gcc/ipa-icf-gimple.cc 2025-02-27 14:35:19.931183246 +0100 +@@ -437,12 +437,23 @@ func_checker::compare_operand (tree t1, + ("compare_ao_refs failed (dependence clique difference)"); + gcc_unreachable (); + } ++ else if (TREE_CODE (t1) == ADDR_EXPR && TREE_CODE (t2) == ADDR_EXPR) ++ { ++ /* For ADDR_EXPR compare the operands of the ADDR_EXPR rather than ++ the ADDR_EXPRs themselves. operand_equal_p will compare the ++ operands with OEP_ADDRESS_OF and only care about the value ++ of the ADDR_EXPR, rather than e.g. types of MEM_REFs in there. ++ Some optimizations use such details though, see PR119006. */ ++ if (operand_equal_p (TREE_OPERAND (t1, 0), TREE_OPERAND (t2, 0), ++ OEP_MATCH_SIDE_EFFECTS)) ++ return true; ++ return return_false_with_msg ("operand_equal_p failed"); ++ } + else + { + if (operand_equal_p (t1, t2, OEP_MATCH_SIDE_EFFECTS)) + return true; +- return return_false_with_msg +- ("operand_equal_p failed"); ++ return return_false_with_msg ("operand_equal_p failed"); + } + } + +--- gcc/testsuite/g++.dg/opt/pr119006.C.jj 2025-02-27 14:37:05.952707350 +0100 ++++ gcc/testsuite/g++.dg/opt/pr119006.C 2025-02-27 14:36:29.251218260 +0100 +@@ -0,0 +1,36 @@ ++// PR ipa/119006 ++// { dg-do run { target c++11 } } ++// { dg-options "-O2 -fwhole-program" } ++ ++struct A { ++ bool operator== (const char *x) const { return x && !__builtin_strcmp (a, x); } ++ char a[11]; ++}; ++ ++struct B { ++ bool operator== (const char *x) const { return x && !__builtin_strcmp (a, x); } ++ bool operator!= (const char *x) const { return !(*this == x); } ++ char a[128]; ++}; ++ ++[[gnu::noinline,gnu::used]] int ++foo (const A& lhs, const char* rhs) ++{ ++ return lhs == rhs; ++} ++ ++constexpr const char *t = "abcdefghijklmno"; ++ ++[[gnu::noinline,gnu::used]] void ++bar (B x) ++{ ++ if (x != t) __builtin_abort (); ++} ++ ++int ++main () ++{ ++ B b; ++ __builtin_strcpy (b.a, t); ++ bar (b); ++} diff --git a/sources b/sources index 1d5e353..2abd420 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.0.1-20250225.tar.xz) = 8c6c880dc779c075d4ae2fd27f587ad9e3b1b1aaf6ec418b7642e67578fbafebc755cff2c5df6283f88db29f90f5d118557495a3c0fe9c40059639aaa4d47bae +SHA512 (gcc-15.0.1-20250301.tar.xz) = 9cef1e315d2be10651713caee6853cedb3c6e02b22d13f2bd105df1f6d35250806ec6be702be67ea74386941c11ef27c1b06051760e4ef9fdb0749dec6fb0de9 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz) = 839bb0c45b5023a83e1a5bf8773050af46bd075754502fc49a62ab860144c9a6bdc0a7d52e6c7ded87ba13ce58192755dd3f83333bc7c61ffb184fef4142a808 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From f7f61ee7eae116430a5d586d74758cbec987e89f Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 13 Mar 2025 13:28:27 +0100 Subject: [PATCH 249/293] 15.0.1-0.10 --- .gitignore | 1 + gcc.spec | 71 ++++++++++++++++++++++++++++++-------------- gcc15-pr118953.patch | 65 ---------------------------------------- gcc15-pr119002.patch | 71 -------------------------------------------- sources | 2 +- 5 files changed, 50 insertions(+), 160 deletions(-) delete mode 100644 gcc15-pr118953.patch delete mode 100644 gcc15-pr119002.patch diff --git a/.gitignore b/.gitignore index 75221f5..5e47446 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ /gcc-15.0.1-20250204.tar.xz /gcc-15.0.1-20250225.tar.xz /gcc-15.0.1-20250301.tar.xz +/gcc-15.0.1-20250313.tar.xz diff --git a/gcc.spec b/gcc.spec index 828b594..74ddd77 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20250301 -%global gitrev 504a13588c3919101c7409909bbe2c6af9dcb829 +%global DATE 20250313 +%global gitrev 4fe62f20633b8e1bf4d776d7f4644ce485efd0b2 %global gcc_version 15.0.1 %global gcc_major 15 # Note, gcc_release must be integer, if you want to add suffixes to @@ -143,7 +143,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.9%{?dist} +Release: %{gcc_release}.10%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -298,9 +298,7 @@ Patch8: gcc15-no-add-needed.patch Patch9: gcc15-Wno-format-security.patch Patch10: gcc15-rh1574936.patch Patch11: gcc15-d-shared-libphobos.patch -Patch12: gcc15-pr118953.patch -Patch13: gcc15-pr119002.patch -Patch14: gcc15-pr119006.patch +Patch12: gcc15-pr119006.patch Patch50: isl-rh2155127.patch @@ -898,32 +896,22 @@ so that there cannot be any synchronization problems. %prep %setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 -a 3 -%patch -P0 -p0 -b .hack~ -%patch -P2 -p0 -b .sparc-config-detection~ -%patch -P3 -p0 -b .libgomp-omp_h-multilib~ -%patch -P4 -p0 -b .libtool-no-rpath~ +%autopatch -p0 -m 0 -M 4 %if %{build_isl} -%patch -P5 -p0 -b .isl-dl~ -%patch -P6 -p0 -b .isl-dl2~ +%autopatch -p0 -m 5 -M 6 %endif %if %{build_libstdcxx_docs} -%patch -P7 -p0 -b .libstdc++-docs~ +%autopatch -p0 7 %endif -%patch -P8 -p0 -b .no-add-needed~ -%patch -P9 -p0 -b .Wno-format-security~ +%autopatch -p0 -m 8 -M 9 %if 0%{?fedora} >= 29 || 0%{?rhel} > 7 -%patch -P10 -p0 -b .rh1574936~ +%autopatch -p0 10 %endif -%patch -P11 -p0 -b .d-shared-libphobos~ -%patch -P12 -p0 -b .pr118953~ -%patch -P13 -p0 -b .pr119002~ -%patch -P14 -p0 -b .pr119006~ - -%patch -P50 -p0 -b .rh2155127~ +%autopatch -p0 -m 11 -M 99 touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 %if 0%{?rhel} >= 9 -%patch -P100 -p1 -b .fortran-fdec-duplicates~ +%autopatch -p1 100 %endif %ifarch %{arm} @@ -3671,6 +3659,43 @@ end %endif %changelog +* Thu Mar 13 2025 Jakub Jelinek 15.0.1-0.10 +- update from trunk + - PRs analyzer/117262, c/60440, c/67301, c/112960, c/113515, c/117029, + c/117178, c/118579, c/119183, c++/98533, c++/100589, c++/109431, + c++/110584, c++/114795, c++/115580, c++/116740, c++/117364, + c++/117504, c++/117512, c++/118775, c++/118787, c++/118799, + c++/118874, c++/119073, c++/119076, c++/119102, c++/119123, + c++/119134, c++/119138, c++/119150, c++/119154, c++/119162, + cobol/119216, cobol/119229, d/119139, debug/119190, fortran/47928, + fortran/77872, fortran/98903, fortran/101577, fortran/103391, + fortran/104684, fortran/104826, fortran/107143, fortran/118747, + fortran/119049, fortran/119054, fortran/119074, fortran/119078, + fortran/119118, fortran/119157, fortran/119199, ipa/118318, + ipa/118785, ipa/119067, libgcc/119151, libstdc++/108053, + libstdc++/113310, libstdc++/115215, libstdc++/115218, + libstdc++/119081, libstdc++/119110, libstdc++/119121, + libstdc++/119144, lto/114501, middle-end/97323, middle-end/118457, + middle-end/118801, middle-end/119119, middle-end/119204, + middle-end/119219, middle-end/119226, modula2/118998, modula2/119088, + modula2/119192, other/38768, other/119052, preprocessor/119202, + rtl-optimization/114492, rtl-optimization/116564, + rtl-optimization/117477, rtl-optimization/118739, + rtl-optimization/119046, rtl-optimization/119071, + rtl-optimization/119099, sanitizer/56682, target/114222, + target/114991, target/115258, target/115439, target/115485, + target/115835, target/116708, target/116901, target/117931, + target/117955, target/118351, target/118892, target/118906, + target/118934, target/118942, target/118956, target/119084, + target/119115, target/119127, target/119131, target/119133, + target/119171, target/119238, testsuite/115248, + tree-optimization/116125, tree-optimization/116901, + tree-optimization/117919, tree-optimization/118922, + tree-optimization/118976, tree-optimization/119057, + tree-optimization/119096, tree-optimization/119145, + tree-optimization/119166 +- use %%autopatch in the spec file + * Sat Mar 1 2025 Jakub Jelinek 15.0.1-0.9 - update from trunk - PRs c/114870, c/119001, c++/110822, c++/114913, c++/118516, c++/118928, diff --git a/gcc15-pr118953.patch b/gcc15-pr118953.patch deleted file mode 100644 index 736afac..0000000 --- a/gcc15-pr118953.patch +++ /dev/null @@ -1,65 +0,0 @@ -2025-02-27 Jakub Jelinek - - PR tree-optimization/118953 - * value-range.cc (irange::union_bitmask): Update m_bitmask if - get_bitmask () is unknown_p and m_bitmask is not even when the - semantic bitmask didn't change and returning false. - - * gcc.dg/torture/pr118953.c: New test. - ---- gcc/value-range.cc.jj 2025-01-02 11:23:25.118396777 +0100 -+++ gcc/value-range.cc 2025-02-26 18:49:10.713107905 +0100 -@@ -2447,7 +2447,7 @@ irange::union_bitmask (const irange &r) - irange_bitmask bm = get_bitmask (); - irange_bitmask save = bm; - bm.union_ (r.get_bitmask ()); -- if (save == bm) -+ if (save == bm && (!bm.unknown_p () || m_bitmask.unknown_p ())) - return false; - - m_bitmask = bm; ---- gcc/testsuite/gcc.dg/torture/pr118953.c.jj 2025-02-26 18:51:47.139936059 +0100 -+++ gcc/testsuite/gcc.dg/torture/pr118953.c 2025-02-26 18:52:33.078298359 +0100 -@@ -0,0 +1,42 @@ -+/* PR tree-optimization/118953 */ -+/* { dg-do run { target int32plus } } */ -+ -+int a, d; -+long long b, c; -+ -+int -+foo (int f, int g, unsigned long long h, long long j) -+{ -+ unsigned long long i = 0; -+ if (g) -+ switch (f) -+ { -+ case 8: -+ i = b; -+ break; -+ case 6: -+ i = c; -+ break; -+ } -+ else -+ switch (f) -+ { -+ case 8: -+ i = h; -+ break; -+ case 24: -+ case 32: -+ i = j; -+ break; -+ } -+ return i; -+} -+ -+int -+main () -+{ -+ int k = a * (409628 - 28); -+ d = foo (k - 1048524, 0, k - 1048487, k - 1048531ULL); -+ if (d) -+ __builtin_abort (); -+} diff --git a/gcc15-pr119002.patch b/gcc15-pr119002.patch deleted file mode 100644 index aac548e..0000000 --- a/gcc15-pr119002.patch +++ /dev/null @@ -1,71 +0,0 @@ -2025-02-24 Jakub Jelinek - - PR rtl-optimization/119002 - * simplify-rtx.cc: Include tm_p.h. - (simplify_context::simplify_logical_relational_operation): Set - all = 15 also if op0's first operand has MODE_CC mode and it - is or could be floating point comparison which honors NaNs. - - * gcc.c-torture/execute/ieee/pr119002.c: New test. - ---- gcc/simplify-rtx.cc.jj 2025-01-15 08:43:39.611918569 +0100 -+++ gcc/simplify-rtx.cc 2025-02-24 21:16:09.980758481 +0100 -@@ -37,6 +37,7 @@ along with GCC; see the file COPYING3. - #include "selftest-rtl.h" - #include "rtx-vector-builder.h" - #include "rtlanal.h" -+#include "tm_p.h" - - /* Simplification and canonicalization of RTL. */ - -@@ -2675,6 +2676,24 @@ simplify_context::simplify_logical_relat - /* See whether the operands might be unordered. */ - if (HONOR_NANS (GET_MODE (XEXP (op0, 0)))) - all = 15; -+ else if (GET_MODE_CLASS (GET_MODE (XEXP (op0, 0))) == MODE_CC -+ && !flag_finite_math_only) -+ { -+ /* HONOR_NANS will be false for MODE_CC comparisons, eventhough -+ they could actually be floating point. If the mode is -+ reversible, ask the backend if it could be unordered, otherwise -+ err on the side of caution and assume it could be unordered -+ if any supported floating mode honors NaNs. */ -+ machine_mode mode = GET_MODE (XEXP (op0, 0)); -+ if (!REVERSIBLE_CC_MODE (mode) -+ || REVERSE_CONDITION (GT, mode) != LE) -+ FOR_EACH_MODE_IN_CLASS (mode, MODE_FLOAT) -+ if (HONOR_NANS (mode)) -+ { -+ all = 15; -+ break; -+ } -+ } - mask0 = comparison_to_mask (code0) & all; - mask1 = comparison_to_mask (code1) & all; - } ---- gcc/testsuite/gcc.c-torture/execute/ieee/pr119002.c.jj 2025-02-24 21:18:45.880622627 +0100 -+++ gcc/testsuite/gcc.c-torture/execute/ieee/pr119002.c 2025-02-24 21:19:02.418396051 +0100 -@@ -0,0 +1,23 @@ -+/* PR rtl-optimization/119002 */ -+ -+__attribute__((noipa)) unsigned int -+foo (void *x, float y, float z) -+{ -+ unsigned int a, b; -+ float c, d, e; -+ c = y; -+ d = z; -+ a = c < d; -+ d = y; -+ e = z; -+ b = d >= e; -+ a |= b; -+ return a; -+} -+ -+int -+main () -+{ -+ if (foo ((void *) 0, 0.f, __builtin_nanf (""))) -+ __builtin_abort (); -+} diff --git a/sources b/sources index 2abd420..13bc153 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.0.1-20250301.tar.xz) = 9cef1e315d2be10651713caee6853cedb3c6e02b22d13f2bd105df1f6d35250806ec6be702be67ea74386941c11ef27c1b06051760e4ef9fdb0749dec6fb0de9 +SHA512 (gcc-15.0.1-20250313.tar.xz) = 09aeb1bdab2a8bb6081262e8a2a3141e0be93e03ac0895179de2b8d23e1307e0124ed157a8ddc6161fb61385384fe254100502bf08f35a187f50e9c70c677cc4 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz) = 839bb0c45b5023a83e1a5bf8773050af46bd075754502fc49a62ab860144c9a6bdc0a7d52e6c7ded87ba13ce58192755dd3f83333bc7c61ffb184fef4142a808 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 2d6ea7bce26589f48b2bc9f2a5b24316a0737cfd Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 13 Mar 2025 13:40:46 +0100 Subject: [PATCH 250/293] 15.0.1-0.10 --- gcc.spec | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/gcc.spec b/gcc.spec index 74ddd77..225267a 100644 --- a/gcc.spec +++ b/gcc.spec @@ -324,7 +324,7 @@ Patch100: gcc15-fortran-fdec-duplicates.patch %if %{build_go} # Avoid stripping these libraries and binaries. %global __os_install_post \ -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.23.* \ +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.24.* \ chmod 644 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -332,7 +332,7 @@ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/test2json \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/vet \ %__os_install_post \ -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.23.* \ +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.24.* \ chmod 755 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 755 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -1711,7 +1711,7 @@ ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../libgfortran.so.5.* libgfortran.so ln -sf ../../../libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../libgo.so.23.* libgo.so +ln -sf ../../../libgo.so.24.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../libquadmath.so.0.* libquadmath.so @@ -1746,7 +1746,7 @@ ln -sf ../../../../%{_lib}/libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../../%{_lib}/libgfortran.so.5.* libgfortran.so ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../../%{_lib}/libgo.so.23.* libgo.so +ln -sf ../../../../%{_lib}/libgo.so.24.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so @@ -1888,8 +1888,8 @@ ln -sf ../`echo ../../../../lib/libgfortran.so.5.* | sed s~/lib/~/lib64/~` 64/li ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.23.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.23.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.24.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.24.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -2005,8 +2005,8 @@ ln -sf ../`echo ../../../../lib64/libgfortran.so.5.* | sed s~/../lib64/~/~` 32/l ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.23.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.23.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.24.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.24.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -2226,7 +2226,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.* %endif %if %{build_go} # Avoid stripping these libraries and binaries. -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.23.* +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.24.* chmod 644 %{buildroot}%{_prefix}/bin/go.gcc chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo @@ -3507,7 +3507,7 @@ end %doc rpm.doc/go/* %files -n libgo -%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.23* +%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.24* %doc rpm.doc/libgo/* %files -n libgo-devel From f659fed8f809edd2626e75fa524ee45a4ea65c4f Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 13 Mar 2025 21:39:31 +0100 Subject: [PATCH 251/293] 15.0.1-0.10 --- gcc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 225267a..75ae5a6 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1588,7 +1588,7 @@ cp -r -p ../libstdc++-v3/doc/html ../rpm.doc/libstdc++-v3/html cp -r -p $libstdcxx_doc_builddir/html ../rpm.doc/libstdc++-v3/html/api mkdir -p %{buildroot}%{_mandir}/man3 cp -r -p $libstdcxx_doc_builddir/man/man3/* %{buildroot}%{_mandir}/man3/ -find ../rpm.doc/libstdc++-v3 -name \*~ | xargs rm +find ../rpm.doc/libstdc++-v3 -name \*~ -o -name \*.orig | xargs rm -f %endif %ifarch sparcv9 sparc64 From 6a75c861d441eff5516c01a308f3a0b249fadde2 Mon Sep 17 00:00:00 2001 From: Siddhesh Poyarekar Date: Mon, 3 Mar 2025 10:33:50 -0500 Subject: [PATCH 252/293] Add version for libmudflap, etc. Fix warnings that fedpkg prep throws whenever gcc sources are prepped. --- gcc.spec | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/gcc.spec b/gcc.spec index 75ae5a6..fe1f90b 100644 --- a/gcc.spec +++ b/gcc.spec @@ -352,17 +352,17 @@ Autoreq: false %if !%{build_ada} Obsoletes: libgnat < %{version}-%{release} %endif -Obsoletes: libmudflap -Obsoletes: libmudflap-devel -Obsoletes: libmudflap-static +Obsoletes: libmudflap < %{version}-%{release} +Obsoletes: libmudflap-devel < %{version}-%{release} +Obsoletes: libmudflap-static < %{version}-%{release} Obsoletes: libgcj < %{version}-%{release} Obsoletes: libgcj-devel < %{version}-%{release} Obsoletes: libgcj-src < %{version}-%{release} %ifarch %{ix86} x86_64 -Obsoletes: libcilkrts -Obsoletes: libcilkrts-static -Obsoletes: libmpx -Obsoletes: libmpx-static +Obsoletes: libcilkrts < %{version}-%{release} +Obsoletes: libcilkrts-static < %{version}-%{release} +Obsoletes: libmpx < %{version}-%{release} +Obsoletes: libmpx-static < %{version}-%{release} %endif %description -n libgcc From d831ac9ded9f251aff91736b3877b7d4e129a5ca Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 29 Mar 2025 13:04:21 +0100 Subject: [PATCH 253/293] 15.0.1-0.11 --- .gitignore | 1 + gcc.spec | 163 +++++++++++++++++++++++++++++++++++++++-- gcc15-pr119291-1.patch | 81 ++++++++++++++++++++ gcc15-pr119291-2.patch | 51 +++++++++++++ gcc15-pr119327.patch | 47 ++++++++++++ sources | 2 +- 6 files changed, 337 insertions(+), 8 deletions(-) create mode 100644 gcc15-pr119291-1.patch create mode 100644 gcc15-pr119291-2.patch create mode 100644 gcc15-pr119327.patch diff --git a/.gitignore b/.gitignore index 5e47446..c887ae7 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /gcc-15.0.1-20250225.tar.xz /gcc-15.0.1-20250301.tar.xz /gcc-15.0.1-20250313.tar.xz +/gcc-15.0.1-20250329.tar.xz diff --git a/gcc.spec b/gcc.spec index fe1f90b..9f666cd 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20250313 -%global gitrev 4fe62f20633b8e1bf4d776d7f4644ce485efd0b2 +%global DATE 20250329 +%global gitrev 3d14ac28b1c0233636b21171759b471b39ecee35 %global gcc_version 15.0.1 %global gcc_major 15 # Note, gcc_release must be integer, if you want to add suffixes to @@ -37,6 +37,7 @@ %global build_go 0 %global build_d 0 %global build_m2 0 +%global build_cobol 0 %else %ifarch %{ix86} x86_64 ia64 ppc %{power64} alpha s390x %{arm} aarch64 riscv64 %global build_ada 1 @@ -59,6 +60,11 @@ %else %global build_m2 0 %endif +%ifarch x86_64 aarch64 +%global build_cobol 1 +%else +%global build_cobol 0 +%endif %endif %ifarch %{ix86} x86_64 ia64 ppc64le %global build_libquadmath 1 @@ -143,7 +149,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.10%{?dist} +Release: %{gcc_release}.11%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -299,6 +305,9 @@ Patch9: gcc15-Wno-format-security.patch Patch10: gcc15-rh1574936.patch Patch11: gcc15-d-shared-libphobos.patch Patch12: gcc15-pr119006.patch +Patch13: gcc15-pr119291-1.patch +Patch14: gcc15-pr119291-2.patch +Patch15: gcc15-pr119327.patch Patch50: isl-rh2155127.patch @@ -547,6 +556,32 @@ Requires: gcc-gm2 = %{version}-%{release} %description -n libgm2-static This package contains static Modula-2 libraries. +%package gcobol +Summary: COBOL support +Requires: gcc = %{version}-%{release} +Requires: libgcobol = %{version}-%{release} +Autoreq: true + +%description gcobol +The gcc-gcobol package provides support for compiling COBOL +programs with the GNU Compiler Collection. + +%package -n libgcobol +Summary: COBOL runtime +Autoreq: true + +%description -n libgcobol +This package contains COBOL shared libraries which are needed to run +COBOL dynamically linked programs. + +%package -n libgcobol-static +Summary: Static COBOL libraries +Requires: libgcobol = %{version}-%{release} +Requires: gcc-gcobol = %{version}-%{release} + +%description -n libgcobol-static +This package contains static COBOL libraries. + %package -n libgomp Summary: GCC OpenMP v4.5 shared support library @@ -1105,6 +1140,9 @@ enableld=,d %if %{build_m2} enablelm2=,m2 %endif +%if %{build_cobol} +enablelm2=,cobol +%endif offloadtgts= %if %{build_offload_nvptx} offloadtgts=nvptx-none @@ -1339,7 +1377,7 @@ cd ../.. # Copy various doc files here and there cd .. -mkdir -p rpm.doc/{gfortran,objc,gdc,libphobos,gm2,libgm2,libgdiagnostics-devel} +mkdir -p rpm.doc/{gfortran,objc,gdc,libphobos,gm2,libgm2,libgdiagnostics-devel,gcobol,libgcobol} mkdir -p rpm.doc/go rpm.doc/libgo rpm.doc/libquadmath rpm.doc/libitm mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/ada,gcc/jit,libstdc++-v3,libobjc,libgomp,libcc1,libatomic,libsanitizer} @@ -1375,10 +1413,21 @@ done) cp -p $i ../rpm.doc/libgm2/$i.libgm2 done) %endif +%if %{build_cobol} +(cd gcc/cobol; for i in ChangeLog* LICENSE; do + cp -p $i ../../rpm.doc/gcobol/$i.gcobol +done +cp -p LICENSE ../../rpm.doc/libgcobol/$i.libgcobol) +(cd libgcobol; for i in ChangeLog*; do + cp -p $i ../rpm.doc/libgcobol/$i.libgcobol +done) +%endif %if %{build_libquadmath} (cd libquadmath; for i in ChangeLog* COPYING.LIB; do cp -p $i ../rpm.doc/libquadmath/$i.libquadmath -done) +done; +sed -n '/==========/,/==========/{/==========/d;s/^ \* *//p}' math/cosq.c \ + > ../rpm.doc/libquadmath/LICENSE.SunPro) %endif %if %{build_libitm} (cd libitm; for i in ChangeLog*; do @@ -1725,6 +1774,9 @@ for i in cor iso log min pim; do ln -sf ../../../libm2$i.so.20.* libm2$i.so done %endif +%if %{build_cobol} +ln -sf ../../../libgcobol.so.1.* libgcobol.so +%endif %if %{build_libitm} ln -sf ../../../libitm.so.1.* libitm.so %endif @@ -1760,6 +1812,9 @@ for i in cor iso log min pim; do ln -sf ../../../../%{_lib}/libm2$i.so.20.* libm2$i.so done %endif +%if %{build_cobol} +ln -sf ../../../../%{_lib}/libgcobol.so.1.* libgcobol.so +%endif %if %{build_libitm} ln -sf ../../../../%{_lib}/libitm.so.1.* libitm.so %endif @@ -1813,6 +1868,9 @@ for i in cor iso log min pim; do ln -sf ../../libm2$i.a m2/m2$i/ done %endif +%if %{build_cobol} +mv -f %{buildroot}%{_prefix}/%{_lib}/libgcobol.*a $FULLLPATH/ +%endif %if %{build_libitm} mv -f %{buildroot}%{_prefix}/%{_lib}/libitm.*a $FULLLPATH/ %endif @@ -1913,6 +1971,11 @@ for i in cor iso log min pim; do ln -sf ../../libm2$i.a 64/m2/m2$i/ done %endif +%if %{build_cobol} +rm -f libgcobol.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgcobol.so.1.* | sed 's,^.*libg,libg,'`' )' > libgcobol.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgcobol.so.1.* | sed 's,^.*libg,libg,'`' )' > 64/libgcobol.so +%endif %if %{build_libitm} rm -f libitm.so echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libitm.so.1.* | sed 's,^.*libi,libi,'`' )' > libitm.so @@ -1964,6 +2027,10 @@ for i in cor iso log min pim; do ln -sf ../lib64/libm2$i.a 64/libm2$i.a done %endif +%if %{build_cobol} +ln -sf lib32/libgcobol.a libgcobol.a +ln -sf ../lib64/libgcobol.a 64/libgcobol.a +%endif %if %{build_libitm} ln -sf lib32/libitm.a libitm.a ln -sf ../lib64/libitm.a 64/libitm.a @@ -2030,6 +2097,11 @@ for i in cor iso log min pim; do ln -sf ../../libm2$i.a 32/m2/m2$i/ done %endif +%if %{build_cobol} +rm -f libgcobol.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgcobol.so.1.* | sed 's,^.*libg,libg,'`' )' > libgcobol.so +#echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgcobol.so.1.* | sed 's,^.*libg,libg,'`' )' > 32/libgcobol.so +%endif %if %{build_libitm} rm -f libitm.so echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libitm.so.1.* | sed 's,^.*libi,libi,'`' )' > libitm.so @@ -2083,6 +2155,10 @@ for i in cor iso log min pim; do ln -sf lib64/libm2$i.a libm2$i.a done %endif +%if %{build_cobol} +ln -sf ../lib32/libgcobol.a 32/libgcobol.a +ln -sf lib64/libgcobol.a libgcobol.a +%endif %if %{build_libitm} ln -sf ../lib32/libitm.a 32/libitm.a ln -sf lib64/libitm.a libitm.a @@ -2132,6 +2208,9 @@ for i in cor iso log min pim; do ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libm2$i.a 32/libm2$i.a done %endif +%if %{build_cobol} +#ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libgcobol.a 32/libgcobol.a +%endif %if %{build_libitm} ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libitm.a 32/libitm.a %endif @@ -2172,7 +2251,7 @@ for d in . $FULLLSUBDIR; do -o -name libobjc.a -o -name libgdruntime.a -o -name libgphobos.a \ -o -name libm2\*.a -o -name libquadmath.a -o -name libstdc++.a \ -o -name libstdc++fs.a -o -name libstdc++exp.a \ - -o -name libsupc++.a \ + -o -name libsupc++.a -o -name libgcobol.a \ -o -name libtsan.a -o -name libubsan.a \) -a -type f`; do cp -a $f $RPM_BUILD_ROOT%{_prefix}/lib/debug%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/$d/ done @@ -2185,7 +2264,8 @@ strip -g `find . \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \ -o -name libgdruntime.a -o -name libgphobos.a -o -name libm2\*.a \ -o -name libitm.a -o -name libgo.a -o -name libcaf\*.a \ -o -name libatomic.a -o -name libasan.a -o -name libtsan.a \ - -o -name libubsan.a -o -name liblsan.a -o -name libcc1.a \) \ + -o -name libubsan.a -o -name liblsan.a -o -name libcc1.a \ + -o -name libgcobol.a \) \ -a -type f` popd chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgfortran.so.5.* @@ -2203,6 +2283,9 @@ for i in cor iso log min pim; do chmod 755 %{buildroot}%{_prefix}/%{_lib}/libm2$i.so.20.* done %endif +%if %{build_cobol} +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgcobol.so.1.* +%endif %if %{build_libitm} chmod 755 %{buildroot}%{_prefix}/%{_lib}/libitm.so.1.* %endif @@ -3191,6 +3274,31 @@ end %endif %endif +%if %{build_cobol} +%files gcobol +%{_prefix}/bin/gcobol +%{_prefix}/bin/gcobc +%{_mandir}/man1/gcobol.1* +%{_mandir}/man3/gcobol.3* +%dir %{_prefix}/libexec/gcc +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} +%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cobol1 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcobol.so +%{_datadir}/gcobol +%doc rpm.doc/gcobol/* + +%files -n libgcobol +%{_prefix}/%{_lib}/libgcobol.so.1* +%doc rpm.doc/libgcobol/* + +%files -n libgcobol-static +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcobol.a +%endif + %if %{build_ada} %files gnat %{_prefix}/bin/gnat @@ -3659,6 +3767,47 @@ end %endif %changelog +* Sat Mar 29 2025 Jakub Jelinek 15.0.1-0.11 +- update from trunk + - PRs ada/119265, ada/119440, analyzer/119278, bootstrap/119513, c/116545, + c/118061, c/118765, c/119311, c/119350, c/119366, c++/101881, + c++/114525, c++/114992, c++/118104, c++/118920, c++/118961, + c++/119194, c++/119233, c++/119316, c++/119344, c++/119370, + c++/119378, c++/119379, cobol/119213, cobol/119214, cobol/119241, + cobol/119242, cobol/119244, cobol/119290, cobol/119301, cobol/119390, + d/117621, d/118545, debug/101533, driver/101544, fortran/60560, + fortran/85836, fortran/116706, fortran/118796, fortran/119272, + fortran/119338, fortran/119349, fortran/119380, fortran/119403, + fortran/119406, fortran/119419, gcov-profile/118442, ipa/98265, + ipa/116572, ipa/119147, ipa/119376, ipa/119484, libfortran/85836, + libgomp/96835, libitm/88319, libstdc++/101527, libstdc++/101587, + libstdc++/108487, libstdc++/111055, libstdc++/111138, + libstdc++/116440, libstdc++/117214, libstdc++/117983, + libstdc++/118699, libstdc++/119135, libstdc++/119282, + libstdc++/119358, libstdc++/119415, libstdc++/119429, + libstdc++/119469, libstdc++/119488, middle-end/93437, + middle-end/112938, middle-end/113546, middle-end/117811, + middle-end/118627, middle-end/118795, middle-end/119325, + modula2/115111, modula2/118045, modula2/118600, modula2/119449, + modula2/119504, other/42270, other/119218, other/119250, other/119510, + preprocessor/108900, rtl-optimization/118615, rtl-optimization/118914, + rtl-optimization/119285, rtl-optimization/119307, rust/119333, + target/55583, target/91614, target/92713, target/96226, target/98743, + target/101544, target/112980, target/117069, target/117092, + target/117452, target/118068, target/119010, target/119114, + target/119120, target/119172, target/119224, target/119235, + target/119270, target/119286, target/119355, target/119357, + target/119408, target/119421, target/119425, target/119428, + target/119450, target/119465, testsuite/113634, testsuite/113965, + testsuite/116163, testsuite/119220, testsuite/119382, + testsuite/119489, tree-optimization/37143, tree-optimization/105820, + tree-optimization/118616, tree-optimization/119155, + tree-optimization/119274, tree-optimization/119287, + tree-optimization/119389, tree-optimization/119417, + tree-optimization/119483 +- package gcc-gcobol on x86_64 and aarch64 so far +- turn unversioned obsoletes into versioned ones + * Thu Mar 13 2025 Jakub Jelinek 15.0.1-0.10 - update from trunk - PRs analyzer/117262, c/60440, c/67301, c/112960, c/113515, c/117029, diff --git a/gcc15-pr119291-1.patch b/gcc15-pr119291-1.patch new file mode 100644 index 0000000..c9b37a0 --- /dev/null +++ b/gcc15-pr119291-1.patch @@ -0,0 +1,81 @@ +2025-03-28 Jakub Jelinek + + PR rtl-optimization/119291 + * combine.cc (try_combine): For splitting of PARALLEL with + 2 independent SETs into i2 and i3 sets check reg_used_between_p + of the SET_DESTs rather than just modified_between_p. + + * gcc.c-torture/execute/pr119291.c: New test. + +--- gcc/combine.cc.jj 2025-03-25 09:34:33.469102343 +0100 ++++ gcc/combine.cc 2025-03-27 09:50:15.768567383 +0100 +@@ -4012,18 +4012,18 @@ try_combine (rtx_insn *i3, rtx_insn *i2, + rtx set1 = XVECEXP (newpat, 0, 1); + + /* Normally, it doesn't matter which of the two is done first, but +- one which uses any regs/memory set in between i2 and i3 can't +- be first. The PARALLEL might also have been pre-existing in i3, +- so we need to make sure that we won't wrongly hoist a SET to i2 +- that would conflict with a death note present in there, or would +- have its dest modified between i2 and i3. */ ++ one which uses any regs/memory set or used in between i2 and i3 ++ can't be first. The PARALLEL might also have been pre-existing ++ in i3, so we need to make sure that we won't wrongly hoist a SET ++ to i2 that would conflict with a death note present in there, or ++ would have its dest modified or used between i2 and i3. */ + if (!modified_between_p (SET_SRC (set1), i2, i3) + && !(REG_P (SET_DEST (set1)) + && find_reg_note (i2, REG_DEAD, SET_DEST (set1))) + && !(GET_CODE (SET_DEST (set1)) == SUBREG + && find_reg_note (i2, REG_DEAD, + SUBREG_REG (SET_DEST (set1)))) +- && !modified_between_p (SET_DEST (set1), i2, i3) ++ && !reg_used_between_p (SET_DEST (set1), i2, i3) + /* If I3 is a jump, ensure that set0 is a jump so that + we do not create invalid RTL. */ + && (!JUMP_P (i3) || SET_DEST (set0) == pc_rtx) +@@ -4038,7 +4038,7 @@ try_combine (rtx_insn *i3, rtx_insn *i2, + && !(GET_CODE (SET_DEST (set0)) == SUBREG + && find_reg_note (i2, REG_DEAD, + SUBREG_REG (SET_DEST (set0)))) +- && !modified_between_p (SET_DEST (set0), i2, i3) ++ && !reg_used_between_p (SET_DEST (set0), i2, i3) + /* If I3 is a jump, ensure that set1 is a jump so that + we do not create invalid RTL. */ + && (!JUMP_P (i3) || SET_DEST (set1) == pc_rtx) +--- gcc/testsuite/gcc.c-torture/execute/pr119291.c.jj 2025-03-27 09:48:01.917407084 +0100 ++++ gcc/testsuite/gcc.c-torture/execute/pr119291.c 2025-03-27 09:47:48.020598094 +0100 +@@ -0,0 +1,33 @@ ++/* PR rtl-optimization/119291 */ ++ ++int a; ++long c; ++ ++__attribute__((noipa)) void ++foo (int x) ++{ ++ if (x != 0) ++ __builtin_abort (); ++ a = 42; ++} ++ ++int ++main () ++{ ++ int e = 1; ++lab: ++ if (a < 2) ++ { ++ int b = e; ++ _Bool d = a != 0; ++ _Bool f = b != 0; ++ unsigned long g = -(d & f); ++ unsigned long h = c & g; ++ unsigned long i = ~c; ++ e = -(i & h); ++ c = e != 0; ++ a = ~e + b; ++ foo (e); ++ goto lab; ++ } ++} diff --git a/gcc15-pr119291-2.patch b/gcc15-pr119291-2.patch new file mode 100644 index 0000000..8e8e51f --- /dev/null +++ b/gcc15-pr119291-2.patch @@ -0,0 +1,51 @@ +2025-03-28 Jakub Jelinek + + * combine.cc (try_combine): Sets which satisfy set_noop_p can go + to i2 unless i3 is a jump and the other set is not. + +--- gcc/combine.cc.jj 2025-03-28 11:44:15.491458700 +0100 ++++ gcc/combine.cc 2025-03-28 12:11:49.505835983 +0100 +@@ -4017,13 +4017,14 @@ try_combine (rtx_insn *i3, rtx_insn *i2, + in i3, so we need to make sure that we won't wrongly hoist a SET + to i2 that would conflict with a death note present in there, or + would have its dest modified or used between i2 and i3. */ +- if (!modified_between_p (SET_SRC (set1), i2, i3) +- && !(REG_P (SET_DEST (set1)) +- && find_reg_note (i2, REG_DEAD, SET_DEST (set1))) +- && !(GET_CODE (SET_DEST (set1)) == SUBREG +- && find_reg_note (i2, REG_DEAD, +- SUBREG_REG (SET_DEST (set1)))) +- && !reg_used_between_p (SET_DEST (set1), i2, i3) ++ if ((set_noop_p (set1) ++ || (!modified_between_p (SET_SRC (set1), i2, i3) ++ && !(REG_P (SET_DEST (set1)) ++ && find_reg_note (i2, REG_DEAD, SET_DEST (set1))) ++ && !(GET_CODE (SET_DEST (set1)) == SUBREG ++ && find_reg_note (i2, REG_DEAD, ++ SUBREG_REG (SET_DEST (set1)))) ++ && !reg_used_between_p (SET_DEST (set1), i2, i3))) + /* If I3 is a jump, ensure that set0 is a jump so that + we do not create invalid RTL. */ + && (!JUMP_P (i3) || SET_DEST (set0) == pc_rtx) +@@ -4032,13 +4033,14 @@ try_combine (rtx_insn *i3, rtx_insn *i2, + newi2pat = set1; + newpat = set0; + } +- else if (!modified_between_p (SET_SRC (set0), i2, i3) +- && !(REG_P (SET_DEST (set0)) +- && find_reg_note (i2, REG_DEAD, SET_DEST (set0))) +- && !(GET_CODE (SET_DEST (set0)) == SUBREG +- && find_reg_note (i2, REG_DEAD, +- SUBREG_REG (SET_DEST (set0)))) +- && !reg_used_between_p (SET_DEST (set0), i2, i3) ++ else if ((set_noop_p (set0) ++ || (!modified_between_p (SET_SRC (set0), i2, i3) ++ && !(REG_P (SET_DEST (set0)) ++ && find_reg_note (i2, REG_DEAD, SET_DEST (set0))) ++ && !(GET_CODE (SET_DEST (set0)) == SUBREG ++ && find_reg_note (i2, REG_DEAD, ++ SUBREG_REG (SET_DEST (set0)))) ++ && !reg_used_between_p (SET_DEST (set0), i2, i3))) + /* If I3 is a jump, ensure that set1 is a jump so that + we do not create invalid RTL. */ + && (!JUMP_P (i3) || SET_DEST (set1) == pc_rtx) diff --git a/gcc15-pr119327.patch b/gcc15-pr119327.patch new file mode 100644 index 0000000..a9fdd77 --- /dev/null +++ b/gcc15-pr119327.patch @@ -0,0 +1,47 @@ +2025-03-26 Jakub Jelinek + + PR target/119327 + * config/rs6000/rs6000.cc (rs6000_can_inline_p): Ignore also + OPTION_MASK_SAVE_TOC_INDIRECT differences. + + * g++.dg/opt/pr119327.C: New test. + +--- gcc/config/rs6000/rs6000.cc.jj 2025-03-18 14:56:37.990023768 +0100 ++++ gcc/config/rs6000/rs6000.cc 2025-03-25 13:21:33.174568536 +0100 +@@ -25765,10 +25765,13 @@ rs6000_can_inline_p (tree caller, tree c + } + } + +- /* Ignore -mpower8-fusion and -mpower10-fusion options for inlining +- purposes. */ +- callee_isa &= ~(OPTION_MASK_P8_FUSION | OPTION_MASK_P10_FUSION); +- explicit_isa &= ~(OPTION_MASK_P8_FUSION | OPTION_MASK_P10_FUSION); ++ /* Ignore -mpower8-fusion, -mpower10-fusion and -msave-toc-indirect options ++ for inlining purposes. */ ++ HOST_WIDE_INT ignored_isas = (OPTION_MASK_P8_FUSION ++ | OPTION_MASK_P10_FUSION ++ | OPTION_MASK_SAVE_TOC_INDIRECT); ++ callee_isa &= ~ignored_isas; ++ explicit_isa &= ~ignored_isas; + + /* The callee's options must be a subset of the caller's options, i.e. + a vsx function may inline an altivec function, but a no-vsx function +--- gcc/testsuite/g++.dg/opt/pr119327.C.jj 2025-03-25 13:24:45.129988649 +0100 ++++ gcc/testsuite/g++.dg/opt/pr119327.C 2025-03-25 13:25:09.513661266 +0100 +@@ -0,0 +1,16 @@ ++// PR target/119327 ++// { dg-do compile { target c++11 } } ++// { dg-options "-Os" } ++ ++#pragma GCC optimize "fp-contract=off" ++ ++template ++void ++foo (T f) ++{ ++ f (); ++} ++ ++struct S { ++ S () { [] {}; foo ([] __attribute__((always_inline)) {}); } ++} s; diff --git a/sources b/sources index 13bc153..cd6e23e 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.0.1-20250313.tar.xz) = 09aeb1bdab2a8bb6081262e8a2a3141e0be93e03ac0895179de2b8d23e1307e0124ed157a8ddc6161fb61385384fe254100502bf08f35a187f50e9c70c677cc4 +SHA512 (gcc-15.0.1-20250329.tar.xz) = 5180ad4bef3acec74fa713043270eebc6504dec4812ec150caf46715486215a48c561c26cdad21a93b15bed9d7fe79839769e7afb0c4e657b5c37158e2d76d75 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz) = 839bb0c45b5023a83e1a5bf8773050af46bd075754502fc49a62ab860144c9a6bdc0a7d52e6c7ded87ba13ce58192755dd3f83333bc7c61ffb184fef4142a808 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From f4a22ed0935aa1f4a0a68b1a171fb112b3d00911 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 29 Mar 2025 19:16:28 +0100 Subject: [PATCH 254/293] 15.0.1-0.11 --- gcc.spec | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gcc.spec b/gcc.spec index 9f666cd..ec5e4d5 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1125,6 +1125,8 @@ enablelgo= enablelada= enablelobjc= enableld= +enablelm2= +enablelcob= %if %{build_objc} enablelobjc=,objc,obj-c++ %endif @@ -1141,7 +1143,7 @@ enableld=,d enablelm2=,m2 %endif %if %{build_cobol} -enablelm2=,cobol +enablelcob=,cobol %endif offloadtgts= %if %{build_offload_nvptx} @@ -1321,7 +1323,7 @@ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \ | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \ XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \ ../configure --enable-bootstrap \ - --enable-languages=c,c++,fortran${enablelobjc}${enablelada}${enablelgo}${enableld}${enablelm2},lto \ + --enable-languages=c,c++,fortran${enablelobjc}${enablelada}${enablelgo}${enableld}${enablelm2}${enablelcob},lto \ $CONFIGURE_OPTS %ifarch sparc sparcv9 sparc64 @@ -2729,7 +2731,6 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2copyintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2mediaintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2minmaxintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2roundingintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2satcvtintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/movrsintrin.h %endif From 82d154466dd372d35a11bc9718c7cc09f6cbad40 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 10 Apr 2025 09:23:14 +0200 Subject: [PATCH 255/293] 15.0.1-0.12 --- .gitignore | 2 ++ gcc.spec | 49 +++++++++++++++++++++---- gcc15-pr119291-1.patch | 81 ------------------------------------------ gcc15-pr119291-2.patch | 51 -------------------------- sources | 4 +-- 5 files changed, 46 insertions(+), 141 deletions(-) delete mode 100644 gcc15-pr119291-1.patch delete mode 100644 gcc15-pr119291-2.patch diff --git a/.gitignore b/.gitignore index c887ae7..a126b84 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ /gcc-15.0.1-20250301.tar.xz /gcc-15.0.1-20250313.tar.xz /gcc-15.0.1-20250329.tar.xz +/gcc-15.0.1-20250410.tar.xz +/newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz diff --git a/gcc.spec b/gcc.spec index ec5e4d5..d5797aa 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,12 +1,12 @@ -%global DATE 20250329 -%global gitrev 3d14ac28b1c0233636b21171759b471b39ecee35 +%global DATE 20250410 +%global gitrev 5f1acb12c814822a776336abcae1988c1e42858e %global gcc_version 15.0.1 %global gcc_major 15 # 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 0 %global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804 -%global newlib_cygwin_gitrev 2e4db338ac125579d555aeee516e48588a628a16 +%global newlib_cygwin_gitrev d35cc82b5ec15bb8a5fe0fe11e183d1887992e99 %global _unpackaged_files_terminate_build 0 %if 0%{?fedora:1} %global _performance_build 1 @@ -149,7 +149,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.11%{?dist} +Release: %{gcc_release}.12%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -305,9 +305,7 @@ Patch9: gcc15-Wno-format-security.patch Patch10: gcc15-rh1574936.patch Patch11: gcc15-d-shared-libphobos.patch Patch12: gcc15-pr119006.patch -Patch13: gcc15-pr119291-1.patch -Patch14: gcc15-pr119291-2.patch -Patch15: gcc15-pr119327.patch +Patch13: gcc15-pr119327.patch Patch50: isl-rh2155127.patch @@ -559,6 +557,7 @@ This package contains static Modula-2 libraries. %package gcobol Summary: COBOL support Requires: gcc = %{version}-%{release} +Requires: gcc-c++ = %{version}-%{release} Requires: libgcobol = %{version}-%{release} Autoreq: true @@ -3768,6 +3767,42 @@ end %endif %changelog +* Thu Apr 10 2025 Jakub Jelinek 15.0.1-0.12 +- update from trunk + - PRs ada/119571, analyzer/113253, bootstrap/119680, c/78008, c/81831, + c/101440, c/114957, c/117689, c/118118, c/119173, c/119582, c/119612, + c++/60972, c++/64500, c++/90468, c++/99546, c++/106976, c++/109961, + c++/113925, c++/116285, c++/116960, c++/117336, c++/117530, + c++/117849, c++/118249, c++/118626, c++/118629, c++/118698, + c++/118982, c++/119303, c++/119383, c++/119387, c++/119401, + c++/119462, c++/119518, c++/119551, c++/119563, c++/119564, + c++/119574, c++/119608, c++/119652, cobol/119283, cobol/119295, + cobol/119364, cobol/119414, cobol/119521, cobol/119682, d/117002, + d/117832, d/118309, driver/58973, fortran/101602, fortran/119460, + fortran/119656, gcov-profile/119535, gcov-profile/119553, + gcov-profile/119618, ipa/119599, libfortran/119460, libstdc++/109162, + libstdc++/110498, libstdc++/114758, libstdc++/114945, + libstdc++/115046, libstdc++/119517, libstdc++/119545, + libstdc++/119550, libstdc++/119593, libstdc++/119620, + libstdc++/119642, libstdc++/119671, middle-end/78874, + middle-end/101018, middle-end/112589, middle-end/116595, + middle-end/118965, middle-end/119442, middle-end/119482, + middle-end/119537, middle-end/119541, middle-end/119559, + middle-end/119613, middle-end/119662, preprocessor/118674, + preprocessor/119391, rtl-optimization/119291, rtl-optimization/119594, + rtl-optimization/119672, rtl-optimization/119689, target/117759, + target/119308, target/119369, target/119473, target/119539, + target/119549, target/119556, target/119572, target/119573, + target/119645, target/119664, target/119678, testsuite/116398, + testsuite/118597, tree-optimization/80331, tree-optimization/87502, + tree-optimization/103827, tree-optimization/113281, + tree-optimization/118924, tree-optimization/119491, + tree-optimization/119493, tree-optimization/119532, + tree-optimization/119534, tree-optimization/119586, + tree-optimization/119614, tree-optimization/119616, + tree-optimization/119640, web/119227 + - fix up LTO opts handling (##2356219, PR lto/119625) + * Sat Mar 29 2025 Jakub Jelinek 15.0.1-0.11 - update from trunk - PRs ada/119265, ada/119440, analyzer/119278, bootstrap/119513, c/116545, diff --git a/gcc15-pr119291-1.patch b/gcc15-pr119291-1.patch deleted file mode 100644 index c9b37a0..0000000 --- a/gcc15-pr119291-1.patch +++ /dev/null @@ -1,81 +0,0 @@ -2025-03-28 Jakub Jelinek - - PR rtl-optimization/119291 - * combine.cc (try_combine): For splitting of PARALLEL with - 2 independent SETs into i2 and i3 sets check reg_used_between_p - of the SET_DESTs rather than just modified_between_p. - - * gcc.c-torture/execute/pr119291.c: New test. - ---- gcc/combine.cc.jj 2025-03-25 09:34:33.469102343 +0100 -+++ gcc/combine.cc 2025-03-27 09:50:15.768567383 +0100 -@@ -4012,18 +4012,18 @@ try_combine (rtx_insn *i3, rtx_insn *i2, - rtx set1 = XVECEXP (newpat, 0, 1); - - /* Normally, it doesn't matter which of the two is done first, but -- one which uses any regs/memory set in between i2 and i3 can't -- be first. The PARALLEL might also have been pre-existing in i3, -- so we need to make sure that we won't wrongly hoist a SET to i2 -- that would conflict with a death note present in there, or would -- have its dest modified between i2 and i3. */ -+ one which uses any regs/memory set or used in between i2 and i3 -+ can't be first. The PARALLEL might also have been pre-existing -+ in i3, so we need to make sure that we won't wrongly hoist a SET -+ to i2 that would conflict with a death note present in there, or -+ would have its dest modified or used between i2 and i3. */ - if (!modified_between_p (SET_SRC (set1), i2, i3) - && !(REG_P (SET_DEST (set1)) - && find_reg_note (i2, REG_DEAD, SET_DEST (set1))) - && !(GET_CODE (SET_DEST (set1)) == SUBREG - && find_reg_note (i2, REG_DEAD, - SUBREG_REG (SET_DEST (set1)))) -- && !modified_between_p (SET_DEST (set1), i2, i3) -+ && !reg_used_between_p (SET_DEST (set1), i2, i3) - /* If I3 is a jump, ensure that set0 is a jump so that - we do not create invalid RTL. */ - && (!JUMP_P (i3) || SET_DEST (set0) == pc_rtx) -@@ -4038,7 +4038,7 @@ try_combine (rtx_insn *i3, rtx_insn *i2, - && !(GET_CODE (SET_DEST (set0)) == SUBREG - && find_reg_note (i2, REG_DEAD, - SUBREG_REG (SET_DEST (set0)))) -- && !modified_between_p (SET_DEST (set0), i2, i3) -+ && !reg_used_between_p (SET_DEST (set0), i2, i3) - /* If I3 is a jump, ensure that set1 is a jump so that - we do not create invalid RTL. */ - && (!JUMP_P (i3) || SET_DEST (set1) == pc_rtx) ---- gcc/testsuite/gcc.c-torture/execute/pr119291.c.jj 2025-03-27 09:48:01.917407084 +0100 -+++ gcc/testsuite/gcc.c-torture/execute/pr119291.c 2025-03-27 09:47:48.020598094 +0100 -@@ -0,0 +1,33 @@ -+/* PR rtl-optimization/119291 */ -+ -+int a; -+long c; -+ -+__attribute__((noipa)) void -+foo (int x) -+{ -+ if (x != 0) -+ __builtin_abort (); -+ a = 42; -+} -+ -+int -+main () -+{ -+ int e = 1; -+lab: -+ if (a < 2) -+ { -+ int b = e; -+ _Bool d = a != 0; -+ _Bool f = b != 0; -+ unsigned long g = -(d & f); -+ unsigned long h = c & g; -+ unsigned long i = ~c; -+ e = -(i & h); -+ c = e != 0; -+ a = ~e + b; -+ foo (e); -+ goto lab; -+ } -+} diff --git a/gcc15-pr119291-2.patch b/gcc15-pr119291-2.patch deleted file mode 100644 index 8e8e51f..0000000 --- a/gcc15-pr119291-2.patch +++ /dev/null @@ -1,51 +0,0 @@ -2025-03-28 Jakub Jelinek - - * combine.cc (try_combine): Sets which satisfy set_noop_p can go - to i2 unless i3 is a jump and the other set is not. - ---- gcc/combine.cc.jj 2025-03-28 11:44:15.491458700 +0100 -+++ gcc/combine.cc 2025-03-28 12:11:49.505835983 +0100 -@@ -4017,13 +4017,14 @@ try_combine (rtx_insn *i3, rtx_insn *i2, - in i3, so we need to make sure that we won't wrongly hoist a SET - to i2 that would conflict with a death note present in there, or - would have its dest modified or used between i2 and i3. */ -- if (!modified_between_p (SET_SRC (set1), i2, i3) -- && !(REG_P (SET_DEST (set1)) -- && find_reg_note (i2, REG_DEAD, SET_DEST (set1))) -- && !(GET_CODE (SET_DEST (set1)) == SUBREG -- && find_reg_note (i2, REG_DEAD, -- SUBREG_REG (SET_DEST (set1)))) -- && !reg_used_between_p (SET_DEST (set1), i2, i3) -+ if ((set_noop_p (set1) -+ || (!modified_between_p (SET_SRC (set1), i2, i3) -+ && !(REG_P (SET_DEST (set1)) -+ && find_reg_note (i2, REG_DEAD, SET_DEST (set1))) -+ && !(GET_CODE (SET_DEST (set1)) == SUBREG -+ && find_reg_note (i2, REG_DEAD, -+ SUBREG_REG (SET_DEST (set1)))) -+ && !reg_used_between_p (SET_DEST (set1), i2, i3))) - /* If I3 is a jump, ensure that set0 is a jump so that - we do not create invalid RTL. */ - && (!JUMP_P (i3) || SET_DEST (set0) == pc_rtx) -@@ -4032,13 +4033,14 @@ try_combine (rtx_insn *i3, rtx_insn *i2, - newi2pat = set1; - newpat = set0; - } -- else if (!modified_between_p (SET_SRC (set0), i2, i3) -- && !(REG_P (SET_DEST (set0)) -- && find_reg_note (i2, REG_DEAD, SET_DEST (set0))) -- && !(GET_CODE (SET_DEST (set0)) == SUBREG -- && find_reg_note (i2, REG_DEAD, -- SUBREG_REG (SET_DEST (set0)))) -- && !reg_used_between_p (SET_DEST (set0), i2, i3) -+ else if ((set_noop_p (set0) -+ || (!modified_between_p (SET_SRC (set0), i2, i3) -+ && !(REG_P (SET_DEST (set0)) -+ && find_reg_note (i2, REG_DEAD, SET_DEST (set0))) -+ && !(GET_CODE (SET_DEST (set0)) == SUBREG -+ && find_reg_note (i2, REG_DEAD, -+ SUBREG_REG (SET_DEST (set0)))) -+ && !reg_used_between_p (SET_DEST (set0), i2, i3))) - /* If I3 is a jump, ensure that set1 is a jump so that - we do not create invalid RTL. */ - && (!JUMP_P (i3) || SET_DEST (set1) == pc_rtx) diff --git a/sources b/sources index cd6e23e..af001ca 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.0.1-20250329.tar.xz) = 5180ad4bef3acec74fa713043270eebc6504dec4812ec150caf46715486215a48c561c26cdad21a93b15bed9d7fe79839769e7afb0c4e657b5c37158e2d76d75 +SHA512 (gcc-15.0.1-20250410.tar.xz) = 5123e10184cc095ba8f7ed563b8485047b1588e75bd50d2a9247011f258309579539e97b5b72a6c39e01f6643f231de8620c528af101b113a816ad8a49731ba6 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 -SHA512 (newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz) = 839bb0c45b5023a83e1a5bf8773050af46bd075754502fc49a62ab860144c9a6bdc0a7d52e6c7ded87ba13ce58192755dd3f83333bc7c61ffb184fef4142a808 +SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 222db06f798a38bc656d1d3dd4c1f511f1ddd316 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 17 Apr 2025 20:40:55 +0200 Subject: [PATCH 256/293] 15.0.1-0.13 --- .gitignore | 1 + gcc.spec | 40 +++++++++++++++++++++++++++++++++------- sources | 2 +- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index a126b84..81464dd 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ /gcc-15.0.1-20250329.tar.xz /gcc-15.0.1-20250410.tar.xz /newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz +/gcc-15.0.1-20250417.tar.xz diff --git a/gcc.spec b/gcc.spec index d5797aa..60ce465 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20250410 -%global gitrev 5f1acb12c814822a776336abcae1988c1e42858e +%global DATE 20250417 +%global gitrev dd2ccfe5989486cafb7f6108ff0c4e9f5a93f5a1 %global gcc_version 15.0.1 %global gcc_major 15 # Note, gcc_release must be integer, if you want to add suffixes to @@ -149,7 +149,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.12%{?dist} +Release: %{gcc_release}.13%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -1415,10 +1415,9 @@ done) done) %endif %if %{build_cobol} -(cd gcc/cobol; for i in ChangeLog* LICENSE; do +(cd gcc/cobol; for i in ChangeLog*; do cp -p $i ../../rpm.doc/gcobol/$i.gcobol -done -cp -p LICENSE ../../rpm.doc/libgcobol/$i.libgcobol) +done) (cd libgcobol; for i in ChangeLog*; do cp -p $i ../rpm.doc/libgcobol/$i.libgcobol done) @@ -3279,7 +3278,7 @@ end %{_prefix}/bin/gcobol %{_prefix}/bin/gcobc %{_mandir}/man1/gcobol.1* -%{_mandir}/man3/gcobol.3* +%{_mandir}/man3/gcobol-io.3* %dir %{_prefix}/libexec/gcc %dir %{_prefix}/libexec/gcc/%{gcc_target_platform} %dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} @@ -3767,6 +3766,33 @@ end %endif %changelog +* Thu Apr 17 2025 Jakub Jelinek 15.0.1-0.13 +- update from trunk and releases/gcc-14 branch + - PRs ada/119643, c/88382, c/119717, c++/99214, c++/101180, c++/106618, + c++/111075, c++/112288, c++/113360, c++/113835, c++/114772, + c++/114970, c++/115639, c++/116416, c++/116954, c++/119175, + c++/119345, c++/119687, c++/119692, c++/119755, c++/119807, + cobol/119217, cobol/119302, cobol/119694, cobol/119759, cobol/119776, + cobol/119777, d/109023, d/119758, d/119761, d/119799, d/119817, + d/119826, driver/90465, driver/119727, fortran/106948, fortran/119669, + ipa/113203, ipa/119318, ipa/119803, libfortran/119502, libgcc/101075, + libgcc/119796, libgomp/119849, libstdc++/21334, libstdc++/119725, + libstdc++/119748, libstdc++/119840, lto/119792, middle-end/14708, + middle-end/105548, middle-end/119706, middle-end/119808, + modula2/119735, modula2/119779, rtl-optimization/118502, + rtl-optimization/119785, rust/119341, rust/119342, sanitizer/119801, + target/42683, target/97106, target/97585, target/106445, + target/108134, target/113633, target/116827, target/118794, + target/119298, target/119386, target/119533, target/119547, + target/119673, target/119784, target/119834, testsuite/117706, + translation/119684, tree-optimization/71094, tree-optimization/87909, + tree-optimization/112822, tree-optimization/116093, + tree-optimization/118476, tree-optimization/119351, + tree-optimization/119399, tree-optimization/119706, + tree-optimization/119707, tree-optimization/119718, + tree-optimization/119722, tree-optimization/119757, + tree-optimization/119778 + * Thu Apr 10 2025 Jakub Jelinek 15.0.1-0.12 - update from trunk - PRs ada/119571, analyzer/113253, bootstrap/119680, c/78008, c/81831, diff --git a/sources b/sources index af001ca..e1d7c12 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.0.1-20250410.tar.xz) = 5123e10184cc095ba8f7ed563b8485047b1588e75bd50d2a9247011f258309579539e97b5b72a6c39e01f6643f231de8620c528af101b113a816ad8a49731ba6 +SHA512 (gcc-15.0.1-20250417.tar.xz) = 97ec080cb488806be48ebfac6f712ea0019376f6ab9cb9be8055d65b23bd6b4436994f34e9647cfe926829bf284e33d631b7f8ae7881e7e88dcab3e04b7869d0 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 976f3a74410cc70677a969b7c5838d997229c294 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 18 Apr 2025 20:33:24 +0200 Subject: [PATCH 257/293] 15.0.1-0.14 --- .gitignore | 1 + gcc.spec | 11 ++++++++--- sources | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 81464dd..404e9d5 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ /gcc-15.0.1-20250410.tar.xz /newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz /gcc-15.0.1-20250417.tar.xz +/gcc-15.0.1-20250418.tar.xz diff --git a/gcc.spec b/gcc.spec index 60ce465..ad52cb5 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20250417 -%global gitrev dd2ccfe5989486cafb7f6108ff0c4e9f5a93f5a1 +%global DATE 20250418 +%global gitrev 8f87d3d9a9a578fdc32786927721e4598ca115a3 %global gcc_version 15.0.1 %global gcc_major 15 # Note, gcc_release must be integer, if you want to add suffixes to @@ -149,7 +149,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.13%{?dist} +Release: %{gcc_release}.14%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -3766,6 +3766,11 @@ end %endif %changelog +* Fri Apr 18 2025 Jakub Jelinek 15.0.1-0.14 +- update from releases/gcc-14 branch + - GCC 15.1.0-rc1 + - PRs tree-optimization/119858 + * Thu Apr 17 2025 Jakub Jelinek 15.0.1-0.13 - update from trunk and releases/gcc-14 branch - PRs ada/119643, c/88382, c/119717, c++/99214, c++/101180, c++/106618, diff --git a/sources b/sources index e1d7c12..545945e 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.0.1-20250417.tar.xz) = 97ec080cb488806be48ebfac6f712ea0019376f6ab9cb9be8055d65b23bd6b4436994f34e9647cfe926829bf284e33d631b7f8ae7881e7e88dcab3e04b7869d0 +SHA512 (gcc-15.0.1-20250418.tar.xz) = 6d3b447993f28d21cac3e3c191d0482ba8d2bc1e550b304f805259eecb67f3ea0b9cdf029afe5e6e7abb9abea88c420d15e66334c9aae760427341ffed72d9f9 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 09b578c3e50a419c723566c4ad27a23783364406 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 25 Apr 2025 13:49:40 +0200 Subject: [PATCH 258/293] 15.1.1-1 --- .gitignore | 1 + gcc.spec | 16 ++++++++----- gcc15-libstdc++-docs.patch | 4 ++-- gcc15-pr119327.patch | 47 -------------------------------------- sources | 2 +- 5 files changed, 14 insertions(+), 56 deletions(-) delete mode 100644 gcc15-pr119327.patch diff --git a/.gitignore b/.gitignore index 404e9d5..d980d51 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ /newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz /gcc-15.0.1-20250417.tar.xz /gcc-15.0.1-20250418.tar.xz +/gcc-15.1.1-20250425.tar.xz diff --git a/gcc.spec b/gcc.spec index ad52cb5..3231511 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20250418 -%global gitrev 8f87d3d9a9a578fdc32786927721e4598ca115a3 -%global gcc_version 15.0.1 +%global DATE 20250425 +%global gitrev ac84ab7066626410dfe17804c7abd090e875ba3b +%global gcc_version 15.1.1 %global gcc_major 15 # 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 0 +%global gcc_release 1 %global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804 %global newlib_cygwin_gitrev d35cc82b5ec15bb8a5fe0fe11e183d1887992e99 %global _unpackaged_files_terminate_build 0 @@ -149,7 +149,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.14%{?dist} +Release: %{gcc_release}%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -305,7 +305,6 @@ Patch9: gcc15-Wno-format-security.patch Patch10: gcc15-rh1574936.patch Patch11: gcc15-d-shared-libphobos.patch Patch12: gcc15-pr119006.patch -Patch13: gcc15-pr119327.patch Patch50: isl-rh2155127.patch @@ -3766,6 +3765,11 @@ end %endif %changelog +* Fri Apr 25 2025 Jakub Jelinek 15.1.1-1 +- update from releases/gcc-15 branch + - GCC 15.1 release + - PRs fortran/119836, target/119327, target/119873, tree-optimization/118407 + * Fri Apr 18 2025 Jakub Jelinek 15.0.1-0.14 - update from releases/gcc-14 branch - GCC 15.1.0-rc1 diff --git a/gcc15-libstdc++-docs.patch b/gcc15-libstdc++-docs.patch index 829bb97..15bb496 100644 --- a/gcc15-libstdc++-docs.patch +++ b/gcc15-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 15.0.1 ++ Release 15.1.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 15.0.1 release, ++ for the 15.1.1 release, + online for each GCC release and diff --git a/gcc15-pr119327.patch b/gcc15-pr119327.patch deleted file mode 100644 index a9fdd77..0000000 --- a/gcc15-pr119327.patch +++ /dev/null @@ -1,47 +0,0 @@ -2025-03-26 Jakub Jelinek - - PR target/119327 - * config/rs6000/rs6000.cc (rs6000_can_inline_p): Ignore also - OPTION_MASK_SAVE_TOC_INDIRECT differences. - - * g++.dg/opt/pr119327.C: New test. - ---- gcc/config/rs6000/rs6000.cc.jj 2025-03-18 14:56:37.990023768 +0100 -+++ gcc/config/rs6000/rs6000.cc 2025-03-25 13:21:33.174568536 +0100 -@@ -25765,10 +25765,13 @@ rs6000_can_inline_p (tree caller, tree c - } - } - -- /* Ignore -mpower8-fusion and -mpower10-fusion options for inlining -- purposes. */ -- callee_isa &= ~(OPTION_MASK_P8_FUSION | OPTION_MASK_P10_FUSION); -- explicit_isa &= ~(OPTION_MASK_P8_FUSION | OPTION_MASK_P10_FUSION); -+ /* Ignore -mpower8-fusion, -mpower10-fusion and -msave-toc-indirect options -+ for inlining purposes. */ -+ HOST_WIDE_INT ignored_isas = (OPTION_MASK_P8_FUSION -+ | OPTION_MASK_P10_FUSION -+ | OPTION_MASK_SAVE_TOC_INDIRECT); -+ callee_isa &= ~ignored_isas; -+ explicit_isa &= ~ignored_isas; - - /* The callee's options must be a subset of the caller's options, i.e. - a vsx function may inline an altivec function, but a no-vsx function ---- gcc/testsuite/g++.dg/opt/pr119327.C.jj 2025-03-25 13:24:45.129988649 +0100 -+++ gcc/testsuite/g++.dg/opt/pr119327.C 2025-03-25 13:25:09.513661266 +0100 -@@ -0,0 +1,16 @@ -+// PR target/119327 -+// { dg-do compile { target c++11 } } -+// { dg-options "-Os" } -+ -+#pragma GCC optimize "fp-contract=off" -+ -+template -+void -+foo (T f) -+{ -+ f (); -+} -+ -+struct S { -+ S () { [] {}; foo ([] __attribute__((always_inline)) {}); } -+} s; diff --git a/sources b/sources index 545945e..f005e22 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.0.1-20250418.tar.xz) = 6d3b447993f28d21cac3e3c191d0482ba8d2bc1e550b304f805259eecb67f3ea0b9cdf029afe5e6e7abb9abea88c420d15e66334c9aae760427341ffed72d9f9 +SHA512 (gcc-15.1.1-20250425.tar.xz) = 008506c6bc101f814e8ea8f563931696e2c8e51e2bd6c9bd7614b4a512d25e7b8d1cff41ccc8f8d4424d683b660c5870f35c2e69022e0c75f85a0c251c1e23b3 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 789e812095a434506b600634b38d9051322ee969 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 21 May 2025 14:53:58 +0200 Subject: [PATCH 259/293] 15.1.1-2 --- .gitignore | 1 + gcc.spec | 26 +++++++++++++++++++++++--- sources | 2 +- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index d980d51..62a4252 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /gcc-15.0.1-20250417.tar.xz /gcc-15.0.1-20250418.tar.xz /gcc-15.1.1-20250425.tar.xz +/gcc-15.1.1-20250521.tar.xz diff --git a/gcc.spec b/gcc.spec index 3231511..ae42dfb 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20250425 -%global gitrev ac84ab7066626410dfe17804c7abd090e875ba3b +%global DATE 20250521 +%global gitrev b9def1721b12cae307c1a1ebc49030fce6531dfa %global gcc_version 15.1.1 %global gcc_major 15 # 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 1 +%global gcc_release 2 %global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804 %global newlib_cygwin_gitrev d35cc82b5ec15bb8a5fe0fe11e183d1887992e99 %global _unpackaged_files_terminate_build 0 @@ -3765,6 +3765,26 @@ end %endif %changelog +* Wed May 21 2025 Jakub Jelinek 15.1.1-2 +- update from releases/gcc-15 branch + - PRs ada/112958, ada/120104, c/120057, c++/119863, c++/119864, c++/119938, + c++/119939, c++/119981, c++/119996, c++/120012, c++/120013, + c++/120023, c++/120125, c++/120161, c++/120350, fortran/102891, + fortran/102900, fortran/119928, fortran/119986, fortran/120049, + fortran/120107, fortran/120139, fortran/120163, fortran/120179, + fortran/120191, ipa/119852, ipa/119973, ipa/120006, ipa/120146, + libfortran/120152, libfortran/120153, libfortran/120158, + libfortran/120196, libstdc++/118260, libstdc++/119427, + libstdc++/119714, libstdc++/120029, libstdc++/120114, + libstdc++/120159, libstdc++/120187, libstdc++/120190, + libstdc++/120198, libstdc++/120293, modula2/115276, modula2/119914, + modula2/119915, modula2/120117, modula2/120188, preprocessor/116047, + preprocessor/120061, target/119610, testsuite/119909, + tree-optimization/111873, tree-optimization/119712, + tree-optimization/120043, tree-optimization/120048, + tree-optimization/120074, tree-optimization/120089, + tree-optimization/120143, tree-optimization/120211 + * Fri Apr 25 2025 Jakub Jelinek 15.1.1-1 - update from releases/gcc-15 branch - GCC 15.1 release diff --git a/sources b/sources index f005e22..5bf974f 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.1.1-20250425.tar.xz) = 008506c6bc101f814e8ea8f563931696e2c8e51e2bd6c9bd7614b4a512d25e7b8d1cff41ccc8f8d4424d683b660c5870f35c2e69022e0c75f85a0c251c1e23b3 +SHA512 (gcc-15.1.1-20250521.tar.xz) = 86b06902e10aa6eba4ccbe54e97fee17838e21484e4f6d4aef2e93d0687b04e82f00655828ac0233f4026cd0d2df08bbdfe7dc2eeafc8908cab183584d2fb8ee SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 81055b7d4d6bf3e4f7d09e4ff13c7fdbb42b6bd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kadl=C4=8D=C3=ADk?= Date: Thu, 22 May 2025 10:51:03 +0200 Subject: [PATCH 260/293] Downstream tests moved to CentOS --- plans/ci.fmf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plans/ci.fmf b/plans/ci.fmf index b6a344d..b661134 100644 --- a/plans/ci.fmf +++ b/plans/ci.fmf @@ -1,7 +1,7 @@ summary: CI Gating Plan discover: how: fmf - url: https://src.fedoraproject.org/tests/gcc.git + url: https://gitlab.com/redhat/centos-stream/tests/gcc.git filter: 'tag: Fedora-CI-gating' execute: how: tmt From fcc453986e9f2c0056211aa0cbb2e761bc3207e3 Mon Sep 17 00:00:00 2001 From: Siddhesh Poyarekar Date: Fri, 20 Jun 2025 06:25:45 -0400 Subject: [PATCH 261/293] Update bug reporting URL Use %dist_bug_report_url instead of the hardcoded URL. --- gcc.spec | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/gcc.spec b/gcc.spec index ae42dfb..aa3f48b 100644 --- a/gcc.spec +++ b/gcc.spec @@ -26,6 +26,13 @@ %if 0%{?__brp_strip_lto:1} %global __brp_strip_lto %{__brp_strip_lto} || : %endif +%if 0%{?rhel} > 0 +%define bugurl https://issues.redhat.com +%else +%define bugurl https://bugzilla.redhat.com/bugzilla +%endif +%{!?dist_bug_report_url: %global dist_bug_report_url %bugurl} + %if 0%{?fedora} < 32 && 0%{?rhel} < 8 %global multilib_64_archs sparc64 ppc64 ppc64p7 s390x x86_64 %else @@ -1042,7 +1049,7 @@ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \ --target nvptx-none --enable-as-accelerator-for=%{gcc_target_platform} \ --enable-languages=c,c++,fortran,lto \ --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \ - --with-bugurl=http://bugzilla.redhat.com/bugzilla \ + --with-bugurl=%dist_bug_report_url \ --enable-checking=release --with-system-zlib \ --with-gcc-major-version-only --without-isl make %{?_smp_mflags} @@ -1078,7 +1085,7 @@ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \ --target amdgcn-amdhsa --enable-as-accelerator-for=%{gcc_target_platform} \ --enable-languages=c,c++,fortran,lto \ --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \ - --with-bugurl=http://bugzilla.redhat.com/bugzilla \ + --with-bugurl=%dist_bug_report_url \ --enable-checking=release --with-system-zlib \ --with-gcc-major-version-only --without-isl --disable-libquadmath make %{?_smp_mflags} @@ -1152,7 +1159,7 @@ offloadtgts=${offloadtgts:+${offloadtgts},}amdgcn-amdhsa %endif CONFIGURE_OPTS="\ --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \ - --with-bugurl=http://bugzilla.redhat.com/bugzilla \ + --with-bugurl=%dist_bug_report_url \ --enable-shared --enable-threads=posix --enable-checking=release \ %ifarch ppc64le --enable-targets=powerpcle-linux \ From 017683460653027c00aca7fa13b37030c232a859 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 7 Jul 2025 12:07:31 +0200 Subject: [PATCH 262/293] 15.1.1-3 --- .gitignore | 1 + gcc.spec | 38 +++++++++++++--- gcc15-pr120837.patch | 103 +++++++++++++++++++++++++++++++++++++++++++ sources | 2 +- 4 files changed, 138 insertions(+), 6 deletions(-) create mode 100644 gcc15-pr120837.patch diff --git a/.gitignore b/.gitignore index 62a4252..011212c 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ /gcc-15.0.1-20250418.tar.xz /gcc-15.1.1-20250425.tar.xz /gcc-15.1.1-20250521.tar.xz +/gcc-15.1.1-20250707.tar.xz diff --git a/gcc.spec b/gcc.spec index ae42dfb..b5422ab 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20250521 -%global gitrev b9def1721b12cae307c1a1ebc49030fce6531dfa +%global DATE 20250707 +%global gitrev c138e88e24a87a165b741b7c6e3452a430aca820 %global gcc_version 15.1.1 %global gcc_major 15 # 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 87ce9dc5999e5fca2e1d3478a30888d9864c9804 %global newlib_cygwin_gitrev d35cc82b5ec15bb8a5fe0fe11e183d1887992e99 %global _unpackaged_files_terminate_build 0 @@ -305,6 +305,7 @@ Patch9: gcc15-Wno-format-security.patch Patch10: gcc15-rh1574936.patch Patch11: gcc15-d-shared-libphobos.patch Patch12: gcc15-pr119006.patch +Patch13: gcc15-pr120837.patch Patch50: isl-rh2155127.patch @@ -2432,9 +2433,9 @@ cd obj-%{gcc_target_platform} # run the tests. LC_ALL=C make %{?_smp_mflags} -k check ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++ \ %if 0%{?fedora} >= 20 || 0%{?rhel} > 7 - RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector-strong}'" || : + RUNTESTFLAGS="--target_board=unix/'{-foffload=disable,-fstack-protector-strong/-foffload=disable}'" || : %else - RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector}'" || : + RUNTESTFLAGS="--target_board=unix/'{-foffload=disable,-fstack-protector/-foffload=disable}'" || : %endif %if !%{build_annobin_plugin} if [ -f %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/annobin.so ]; then @@ -3765,6 +3766,33 @@ end %endif %changelog +* Mon Jul 7 2025 Jakub Jelinek 15.1.1-3 +- update from releases/gcc-15 branch + - PRs ada/120665, ada/120705, ada/120854, c/120180, c++/116064, c++/120123, + c++/120363, c++/120413, c++/120414, c++/120471, c++/120502, + c++/120555, c++/120575, c++/120684, c++/120940, fortran/51961, + fortran/85750, fortran/99838, fortran/101735, fortran/102599, + fortran/114022, fortran/119856, fortran/119948, fortran/120193, + fortran/120355, fortran/120483, fortran/120711, fortran/120784, + ipa/120295, libfortran/119856, libstdc++/99832, libstdc++/120367, + libstdc++/120432, libstdc++/120465, libstdc++/120548, + libstdc++/120625, libstdc++/120648, libstdc++/120650, + libstdc++/120931, libstdc++/120934, middle-end/118694, + middle-end/120369, middle-end/120547, middle-end/120608, + middle-end/120631, rtl-optimization/116389, rtl-optimization/120050, + rtl-optimization/120182, rtl-optimization/120347, + rtl-optimization/120423, rtl-optimization/120550, + rtl-optimization/120795, target/86772, target/119971, target/120042, + target/120441, target/120442, target/120480, target/120624, + testsuite/52641, testsuite/120082, testsuite/120919, + tree-optimization/116352, tree-optimization/119960, + tree-optimization/120003, tree-optimization/120341, + tree-optimization/120357, tree-optimization/120638, + tree-optimization/120654, tree-optimization/120677, + tree-optimization/120729, tree-optimization/120927 +- fix up FE lowering of pointer arith (PR c/120837) +- perform %%check with -foffload=disable flag + * Wed May 21 2025 Jakub Jelinek 15.1.1-2 - update from releases/gcc-15 branch - PRs ada/112958, ada/120104, c/120057, c++/119863, c++/119864, c++/119938, diff --git a/gcc15-pr120837.patch b/gcc15-pr120837.patch new file mode 100644 index 0000000..463aa21 --- /dev/null +++ b/gcc15-pr120837.patch @@ -0,0 +1,103 @@ +2025-07-04 Jakub Jelinek + + PR c/120837 + * c-common.cc (pointer_int_sum): Rewrite the intop PLUS_EXPR or + MINUS_EXPR optimization into extension of both intop operands, + their separate multiplication and then addition/subtraction followed + by rest of pointer_int_sum handling after the multiplication. + + * gcc.dg/ubsan/pr120837.c: New test. + +--- gcc/c-family/c-common.cc ++++ gcc/c-family/c-common.cc +@@ -3438,20 +3438,41 @@ pointer_int_sum (location_t loc, enum tree_code resultcode, + an overflow error if the constant is negative but INTOP is not. */ + && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (intop)) + || (TYPE_PRECISION (TREE_TYPE (intop)) +- == TYPE_PRECISION (TREE_TYPE (ptrop))))) +- { +- enum tree_code subcode = resultcode; +- tree int_type = TREE_TYPE (intop); +- if (TREE_CODE (intop) == MINUS_EXPR) +- subcode = (subcode == PLUS_EXPR ? MINUS_EXPR : PLUS_EXPR); +- /* Convert both subexpression types to the type of intop, +- because weird cases involving pointer arithmetic +- can result in a sum or difference with different type args. */ +- ptrop = build_binary_op (EXPR_LOCATION (TREE_OPERAND (intop, 1)), +- subcode, ptrop, +- convert (int_type, TREE_OPERAND (intop, 1)), +- true); +- intop = convert (int_type, TREE_OPERAND (intop, 0)); ++ == TYPE_PRECISION (TREE_TYPE (ptrop)))) ++ && TYPE_PRECISION (TREE_TYPE (intop)) <= TYPE_PRECISION (sizetype)) ++ { ++ tree intop0 = TREE_OPERAND (intop, 0); ++ tree intop1 = TREE_OPERAND (intop, 1); ++ if (TYPE_PRECISION (TREE_TYPE (intop)) != TYPE_PRECISION (sizetype) ++ || TYPE_UNSIGNED (TREE_TYPE (intop)) != TYPE_UNSIGNED (sizetype)) ++ { ++ tree optype = c_common_type_for_size (TYPE_PRECISION (sizetype), ++ TYPE_UNSIGNED (sizetype)); ++ intop0 = convert (optype, intop0); ++ intop1 = convert (optype, intop1); ++ } ++ tree t = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (intop0), intop0, ++ convert (TREE_TYPE (intop0), size_exp)); ++ intop0 = convert (sizetype, t); ++ if (TREE_OVERFLOW_P (intop0) && !TREE_OVERFLOW (t)) ++ intop0 = wide_int_to_tree (TREE_TYPE (intop0), wi::to_wide (intop0)); ++ t = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (intop1), intop1, ++ convert (TREE_TYPE (intop1), size_exp)); ++ intop1 = convert (sizetype, t); ++ if (TREE_OVERFLOW_P (intop1) && !TREE_OVERFLOW (t)) ++ intop1 = wide_int_to_tree (TREE_TYPE (intop1), wi::to_wide (intop1)); ++ intop = build_binary_op (EXPR_LOCATION (intop), TREE_CODE (intop), ++ intop0, intop1, true); ++ ++ /* Create the sum or difference. */ ++ if (resultcode == MINUS_EXPR) ++ intop = fold_build1_loc (loc, NEGATE_EXPR, sizetype, intop); ++ ++ ret = fold_build_pointer_plus_loc (loc, ptrop, intop); ++ ++ fold_undefer_and_ignore_overflow_warnings (); ++ ++ return ret; + } + + /* Convert the integer argument to a type the same size as sizetype +--- gcc/testsuite/gcc.dg/ubsan/pr120837.c ++++ gcc/testsuite/gcc.dg/ubsan/pr120837.c +@@ -0,0 +1,32 @@ ++/* PR c/120837 */ ++/* { dg-do run } */ ++/* { dg-options "-O1 -fsanitize=undefined -fno-sanitize-recover=undefined" } */ ++ ++[[gnu::noipa]] void ++bar (void **x, void **y) ++{ ++ x[0] = 0; ++ x[1] = 0; ++ x[2] = 0; ++ y[0] = 0; ++ y[1] = 0; ++ y[2] = 0; ++ y[3] = 0; ++ y[4] = 0; ++} ++ ++[[gnu::noipa]] void * ++foo (int x, int y) ++{ ++ void *a[3]; ++ void *b[5]; ++ bar (a, b); ++ return (x > y ? b : a)[y - 1]; ++} ++ ++int ++main () ++{ ++ if (foo (2, 1) != 0) ++ __builtin_abort (); ++} diff --git a/sources b/sources index 5bf974f..e064de8 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.1.1-20250521.tar.xz) = 86b06902e10aa6eba4ccbe54e97fee17838e21484e4f6d4aef2e93d0687b04e82f00655828ac0233f4026cd0d2df08bbdfe7dc2eeafc8908cab183584d2fb8ee +SHA512 (gcc-15.1.1-20250707.tar.xz) = d94e6a048ae6e37e3bea98f8628eafa145e2b35b96edddb82d84b2ea830d5698b2790ca4e9e36b56d9aaeb66b0a7db3775703aa49e2dcf587384274f77d6d801 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From 17636a65a5dd3e8a6b72bd9f524ceb6c0b1a5f55 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 18 Jul 2025 12:25:58 +0200 Subject: [PATCH 263/293] 15.1.1-4 --- .gitignore | 1 + gcc.spec | 24 ++++++++-- gcc15-pr120837.patch | 103 ------------------------------------------- sources | 2 +- 4 files changed, 22 insertions(+), 108 deletions(-) delete mode 100644 gcc15-pr120837.patch diff --git a/.gitignore b/.gitignore index 011212c..61466da 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ /gcc-15.1.1-20250425.tar.xz /gcc-15.1.1-20250521.tar.xz /gcc-15.1.1-20250707.tar.xz +/gcc-15.1.1-20250718.tar.xz diff --git a/gcc.spec b/gcc.spec index b5422ab..e5dfbcb 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20250707 -%global gitrev c138e88e24a87a165b741b7c6e3452a430aca820 +%global DATE 20250718 +%global gitrev ef203c5a397a3bcad27a7bb73210f3fbb48782b3 %global gcc_version 15.1.1 %global gcc_major 15 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 3 +%global gcc_release 4 %global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804 %global newlib_cygwin_gitrev d35cc82b5ec15bb8a5fe0fe11e183d1887992e99 %global _unpackaged_files_terminate_build 0 @@ -305,7 +305,6 @@ Patch9: gcc15-Wno-format-security.patch Patch10: gcc15-rh1574936.patch Patch11: gcc15-d-shared-libphobos.patch Patch12: gcc15-pr119006.patch -Patch13: gcc15-pr120837.patch Patch50: isl-rh2155127.patch @@ -3766,6 +3765,23 @@ end %endif %changelog +* Fri Jul 18 Jakub Jelinek 15.1.1-4 +- update from releases/gcc-15 branch + - PRs ada/121056, c++/87097, c++/120569, c++/120628, c++/120954, + fortran/104428, fortran/120637, fortran/120843, fortran/120847, + fortran/121060, ipa/121023, libstdc++/118681, libstdc++/119754, + libstdc++/120997, middle-end/120709, modula2/117203, modula2/119650, + modula2/120253, modula2/120389, modula2/120474, modula2/120497, + modula2/120542, modula2/120606, modula2/120673, modula2/120731, + modula2/120912, rtl-optimization/120242, rtl-optimization/120627, + rtl-optimization/120736, rtl-optimization/120813, target/118241, + target/120356, target/120807, target/120908, target/120995, + target/120999, tree-optimization/118669, tree-optimization/120358, + tree-optimization/120780, tree-optimization/120817, + tree-optimization/120924, tree-optimization/120944, + tree-optimization/121035, tree-optimization/121049, + tree-optimization/121059, tree-optimization/121131 + * Mon Jul 7 2025 Jakub Jelinek 15.1.1-3 - update from releases/gcc-15 branch - PRs ada/120665, ada/120705, ada/120854, c/120180, c++/116064, c++/120123, diff --git a/gcc15-pr120837.patch b/gcc15-pr120837.patch deleted file mode 100644 index 463aa21..0000000 --- a/gcc15-pr120837.patch +++ /dev/null @@ -1,103 +0,0 @@ -2025-07-04 Jakub Jelinek - - PR c/120837 - * c-common.cc (pointer_int_sum): Rewrite the intop PLUS_EXPR or - MINUS_EXPR optimization into extension of both intop operands, - their separate multiplication and then addition/subtraction followed - by rest of pointer_int_sum handling after the multiplication. - - * gcc.dg/ubsan/pr120837.c: New test. - ---- gcc/c-family/c-common.cc -+++ gcc/c-family/c-common.cc -@@ -3438,20 +3438,41 @@ pointer_int_sum (location_t loc, enum tree_code resultcode, - an overflow error if the constant is negative but INTOP is not. */ - && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (intop)) - || (TYPE_PRECISION (TREE_TYPE (intop)) -- == TYPE_PRECISION (TREE_TYPE (ptrop))))) -- { -- enum tree_code subcode = resultcode; -- tree int_type = TREE_TYPE (intop); -- if (TREE_CODE (intop) == MINUS_EXPR) -- subcode = (subcode == PLUS_EXPR ? MINUS_EXPR : PLUS_EXPR); -- /* Convert both subexpression types to the type of intop, -- because weird cases involving pointer arithmetic -- can result in a sum or difference with different type args. */ -- ptrop = build_binary_op (EXPR_LOCATION (TREE_OPERAND (intop, 1)), -- subcode, ptrop, -- convert (int_type, TREE_OPERAND (intop, 1)), -- true); -- intop = convert (int_type, TREE_OPERAND (intop, 0)); -+ == TYPE_PRECISION (TREE_TYPE (ptrop)))) -+ && TYPE_PRECISION (TREE_TYPE (intop)) <= TYPE_PRECISION (sizetype)) -+ { -+ tree intop0 = TREE_OPERAND (intop, 0); -+ tree intop1 = TREE_OPERAND (intop, 1); -+ if (TYPE_PRECISION (TREE_TYPE (intop)) != TYPE_PRECISION (sizetype) -+ || TYPE_UNSIGNED (TREE_TYPE (intop)) != TYPE_UNSIGNED (sizetype)) -+ { -+ tree optype = c_common_type_for_size (TYPE_PRECISION (sizetype), -+ TYPE_UNSIGNED (sizetype)); -+ intop0 = convert (optype, intop0); -+ intop1 = convert (optype, intop1); -+ } -+ tree t = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (intop0), intop0, -+ convert (TREE_TYPE (intop0), size_exp)); -+ intop0 = convert (sizetype, t); -+ if (TREE_OVERFLOW_P (intop0) && !TREE_OVERFLOW (t)) -+ intop0 = wide_int_to_tree (TREE_TYPE (intop0), wi::to_wide (intop0)); -+ t = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (intop1), intop1, -+ convert (TREE_TYPE (intop1), size_exp)); -+ intop1 = convert (sizetype, t); -+ if (TREE_OVERFLOW_P (intop1) && !TREE_OVERFLOW (t)) -+ intop1 = wide_int_to_tree (TREE_TYPE (intop1), wi::to_wide (intop1)); -+ intop = build_binary_op (EXPR_LOCATION (intop), TREE_CODE (intop), -+ intop0, intop1, true); -+ -+ /* Create the sum or difference. */ -+ if (resultcode == MINUS_EXPR) -+ intop = fold_build1_loc (loc, NEGATE_EXPR, sizetype, intop); -+ -+ ret = fold_build_pointer_plus_loc (loc, ptrop, intop); -+ -+ fold_undefer_and_ignore_overflow_warnings (); -+ -+ return ret; - } - - /* Convert the integer argument to a type the same size as sizetype ---- gcc/testsuite/gcc.dg/ubsan/pr120837.c -+++ gcc/testsuite/gcc.dg/ubsan/pr120837.c -@@ -0,0 +1,32 @@ -+/* PR c/120837 */ -+/* { dg-do run } */ -+/* { dg-options "-O1 -fsanitize=undefined -fno-sanitize-recover=undefined" } */ -+ -+[[gnu::noipa]] void -+bar (void **x, void **y) -+{ -+ x[0] = 0; -+ x[1] = 0; -+ x[2] = 0; -+ y[0] = 0; -+ y[1] = 0; -+ y[2] = 0; -+ y[3] = 0; -+ y[4] = 0; -+} -+ -+[[gnu::noipa]] void * -+foo (int x, int y) -+{ -+ void *a[3]; -+ void *b[5]; -+ bar (a, b); -+ return (x > y ? b : a)[y - 1]; -+} -+ -+int -+main () -+{ -+ if (foo (2, 1) != 0) -+ __builtin_abort (); -+} diff --git a/sources b/sources index e064de8..166e73f 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.1.1-20250707.tar.xz) = d94e6a048ae6e37e3bea98f8628eafa145e2b35b96edddb82d84b2ea830d5698b2790ca4e9e36b56d9aaeb66b0a7db3775703aa49e2dcf587384274f77d6d801 +SHA512 (gcc-15.1.1-20250718.tar.xz) = 86216a778b63b95c502dd0649223a9161091d2f10c66f3bee242a3c690d6ea66ddd1063bdbd5ed934264b4f2136b4bb5c7d6d63769870fa49881627172893937 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From a6bc1b37eca3a3963bd4bf9129d54b4cf5ed95fe Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 19 Jul 2025 15:36:22 +0200 Subject: [PATCH 264/293] 15.1.1-5 --- .gitignore | 1 + gcc.spec | 12 ++++++++---- sources | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 61466da..b6772e9 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ /gcc-15.1.1-20250521.tar.xz /gcc-15.1.1-20250707.tar.xz /gcc-15.1.1-20250718.tar.xz +/gcc-15.1.1-20250719.tar.xz diff --git a/gcc.spec b/gcc.spec index e5dfbcb..036749c 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20250718 -%global gitrev ef203c5a397a3bcad27a7bb73210f3fbb48782b3 +%global DATE 20250719 +%global gitrev bb8f920b2f550ec98041230db4bae5837f749371 %global gcc_version 15.1.1 %global gcc_major 15 # 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 4 +%global gcc_release 5 %global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804 %global newlib_cygwin_gitrev d35cc82b5ec15bb8a5fe0fe11e183d1887992e99 %global _unpackaged_files_terminate_build 0 @@ -3765,7 +3765,11 @@ end %endif %changelog -* Fri Jul 18 Jakub Jelinek 15.1.1-4 +* Sat Jul 19 2025 Jakub Jelinek 15.1.1-5 +- update from releases/gcc-15 branch + - PRs cobol/119818, middle-end/120935, modula2/121164, testsuite/119508 + +* Fri Jul 18 2025 Jakub Jelinek 15.1.1-4 - update from releases/gcc-15 branch - PRs ada/121056, c++/87097, c++/120569, c++/120628, c++/120954, fortran/104428, fortran/120637, fortran/120843, fortran/120847, diff --git a/sources b/sources index 166e73f..10cbc60 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.1.1-20250718.tar.xz) = 86216a778b63b95c502dd0649223a9161091d2f10c66f3bee242a3c690d6ea66ddd1063bdbd5ed934264b4f2136b4bb5c7d6d63769870fa49881627172893937 +SHA512 (gcc-15.1.1-20250719.tar.xz) = 4c390b000866bc1d0445392827617ebe4e734a25df05b3f166a44be597dd194723d35c0110546df7a34add5f44191f1150a7042e126dd42765c24175023b1960 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea From e3cc379cd14ca6ad3303d34273e039a76685262d Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 23 Jul 2025 21:09:35 +0000 Subject: [PATCH 265/293] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- gcc.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 036749c..7543113 100644 --- a/gcc.spec +++ b/gcc.spec @@ -149,7 +149,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist} +Release: %{gcc_release}%{?dist}.1 # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -3765,6 +3765,9 @@ end %endif %changelog +* Wed Jul 23 2025 Fedora Release Engineering - 15.1.1-5.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Sat Jul 19 2025 Jakub Jelinek 15.1.1-5 - update from releases/gcc-15 branch - PRs cobol/119818, middle-end/120935, modula2/121164, testsuite/119508 From 8fdb5717b571f71086290542e66ef2f8c185a9fe Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 8 Aug 2025 14:34:22 +0200 Subject: [PATCH 266/293] 15.2.1-1 --- .gitignore | 2 ++ gcc.spec | 40 +++++++++++++++++++++++++++++++------- gcc15-libstdc++-docs.patch | 4 ++-- sources | 4 ++-- 4 files changed, 39 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index b6772e9..2c05112 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,5 @@ /gcc-15.1.1-20250707.tar.xz /gcc-15.1.1-20250718.tar.xz /gcc-15.1.1-20250719.tar.xz +/gcc-15.2.1-20250808.tar.xz +/nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz diff --git a/gcc.spec b/gcc.spec index 7543113..6b0b47d 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20250719 -%global gitrev bb8f920b2f550ec98041230db4bae5837f749371 -%global gcc_version 15.1.1 +%global DATE 20250808 +%global gitrev f833458d29b4fa40ffce6cf3b37ab9a30a864901 +%global gcc_version 15.2.1 %global gcc_major 15 # 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 5 +%global gcc_release 1 %global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804 %global newlib_cygwin_gitrev d35cc82b5ec15bb8a5fe0fe11e183d1887992e99 %global _unpackaged_files_terminate_build 0 @@ -149,7 +149,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist}.1 +Release: %{gcc_release}%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -3765,8 +3765,34 @@ end %endif %changelog -* Wed Jul 23 2025 Fedora Release Engineering - 15.1.1-5.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild +* Fri Aug 8 2025 Jakub Jelinek 15.2.1-1 +- update from releases/gcc-15 branch + - GCC 15.2 release + - PRs ada/120440, ada/121184, c/119950, c/120055, c/120353, c/120354, + c++/95615, c++/108080, c++/109283, c++/115605, c++/115908, c++/116775, + c++/118074, c++/118903, c++/119916, c++/120224, c++/120243, + c++/120273, c++/120412, c++/120453, c++/120495, c++/120577, + c++/120756, c++/120800, c++/120845, c++/121055, c++/121133, + c++/121219, c++/121238, cobol/119231, cobol/119323, cobol/119335, + cobol/119337, cobol/119377, cobol/119524, cobol/119632, cobol/119695, + cobol/119770, cobol/119771, cobol/119772, cobol/119790, cobol/119810, + cobol/119885, cobol/119975, cobol/120251, cobol/120328, cobol/120402, + cobol/120621, cobol/120765, cobol/120772, cobol/120779, cobol/120790, + cobol/120791, cobol/120794, fortran/119106, fortran/121145, + fortran/121203, ipa/114790, libstdc++/119962, libstdc++/121373, + lto/120308, middle-end/119835, middle-end/121095, middle-end/121159, + middle-end/121322, middle-end/121389, rtl-optimization/121340, + target/118891, target/119692, target/119737, target/119853, + target/119854, target/120119, target/120351, target/120427, + target/120530, target/120645, target/120714, target/121027, + target/121028, target/121064, target/121121, target/121274, + target/121277, testsuite/121286, testsuite/121288, + tree-optimization/117423, tree-optimization/118891, + tree-optimization/119085, tree-optimization/121127, + tree-optimization/121130, tree-optimization/121190, + tree-optimization/121202, tree-optimization/121256, + tree-optimization/121264, tree-optimization/121320, + tree-optimization/121323, tree-optimization/121413 * Sat Jul 19 2025 Jakub Jelinek 15.1.1-5 - update from releases/gcc-15 branch diff --git a/gcc15-libstdc++-docs.patch b/gcc15-libstdc++-docs.patch index 15bb496..f9f33a7 100644 --- a/gcc15-libstdc++-docs.patch +++ b/gcc15-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 15.1.1 ++ Release 15.2.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 15.1.1 release, ++ for the 15.2.1 release, + online for each GCC release and diff --git a/sources b/sources index 10cbc60..cbe577b 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.1.1-20250719.tar.xz) = 4c390b000866bc1d0445392827617ebe4e734a25df05b3f166a44be597dd194723d35c0110546df7a34add5f44191f1150a7042e126dd42765c24175023b1960 +SHA512 (gcc-15.2.1-20250808.tar.xz) = 9c0e0f78a353e6b79ad8a421fa8e7eb54935294f2b5136cb3aa911dc7583a00ad155e4d68803c61bcff392c7d6cb84d4229732df1f26392175f020629b125a05 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 -SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea +SHA512 (nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz) = 7f862986065028df70c843fc3f2c89e200a76b48ad0bd51c749ac8a5aab7be0ebdf35be182fad2407b3281615e75be1ac6833ab6a5130ae9920169a0412f94f0 From e37f3dd9226f0ebf6028f437308ab8c192af93a6 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 8 Aug 2025 14:38:51 +0200 Subject: [PATCH 267/293] 15.2.1-1 --- gcc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 6b0b47d..06dbaf0 100644 --- a/gcc.spec +++ b/gcc.spec @@ -5,7 +5,7 @@ # 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 1 -%global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804 +%global nvptx_tools_gitrev a0c1fff6534a4df9fb17937c3c4a4b1071212029 %global newlib_cygwin_gitrev d35cc82b5ec15bb8a5fe0fe11e183d1887992e99 %global _unpackaged_files_terminate_build 0 %if 0%{?fedora:1} From 86392f66e39a483743ffacfee94894695e512fb8 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Fri, 15 Aug 2025 12:48:10 +0200 Subject: [PATCH 268/293] Rebuilt for Python 3.14.0rc2 bytecode --- gcc.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 06dbaf0..09a6a69 100644 --- a/gcc.spec +++ b/gcc.spec @@ -149,7 +149,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist} +Release: %{gcc_release}%{?dist}.1 # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -3765,6 +3765,9 @@ end %endif %changelog +* Fri Aug 15 2025 Python Maint - 15.2.1-1.1 +- Rebuilt for Python 3.14.0rc2 bytecode + * Fri Aug 8 2025 Jakub Jelinek 15.2.1-1 - update from releases/gcc-15 branch - GCC 15.2 release From c5384031e6d84c1909fe430f42e5d418b306aee9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kadl=C4=8D=C3=ADk?= Date: Wed, 13 Aug 2025 07:43:53 +0200 Subject: [PATCH 269/293] Make rpminspect in CI less loud Configure exceptions for rpminspect (fedora-ci.koji-build.rpminspect.static-analysis in Fedora CI) so the reports don't overwhelm us with failures (be it false ones or genuine ones that we are OK with). --- rpminspect.yaml | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 rpminspect.yaml diff --git a/rpminspect.yaml b/rpminspect.yaml new file mode 100644 index 0000000..f31bc02 --- /dev/null +++ b/rpminspect.yaml @@ -0,0 +1,37 @@ +inspections: + # GCC subpackages are inter-dependent but without requesting an explicit + # version - which rpmdeps dislikes and creates huge reports. We can't fix + # it easily and it's not a practical problem anyway. Unfortunately we + # can't tell rpmdeps to ignore just that particular warning. Switching off + # the rpmdeps checks looks like a lesser evil. + rpmdeps: off + +badfuncs: + # GCC doesn't use the so called bad functions "much". If they appear then + # - it is instrumenting them in sanitizers + # - in languages that don't move further downstream. + # We are OK with that. + ignore: + - /usr/lib*/libasan.so.*.*.* + - /usr/lib*/libtsan.so.*.*.* + - /usr/lib*/libgnat-*.so + - /usr/lib*/libgphobos.so.*.*.* + - /usr/lib*/libm2iso.so.*.*.* + - /usr/lib*/libm2pim.so.*.*.* + +pathmigration: + # Incomplete UsrMove, known but not planned at the moment + ignore: + - /lib*/libgcc_s-*.so.* + - /lib*/libgcc_s.so.* + +debuginfo: + # Skip the Go binaries, they ship unstripped + ignore: + - /usr/bin/go.gcc + - /usr/bin/gofmt.gcc + - /usr/lib*/libgo.so.*.*.* + - /usr/libexec/gcc/*-redhat-linux/*/buildid + - /usr/libexec/gcc/*-redhat-linux/*/cgo + - /usr/libexec/gcc/*-redhat-linux/*/test2json + - /usr/libexec/gcc/*-redhat-linux/*/vet From a703174f5b26e0b09a693d423bafe26c5e5d371d Mon Sep 17 00:00:00 2001 From: Python Maint Date: Fri, 19 Sep 2025 12:17:32 +0200 Subject: [PATCH 270/293] Rebuilt for Python 3.14.0rc3 bytecode --- gcc.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 09a6a69..841e2ba 100644 --- a/gcc.spec +++ b/gcc.spec @@ -149,7 +149,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist}.1 +Release: %{gcc_release}%{?dist}.2 # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -3765,6 +3765,9 @@ end %endif %changelog +* Fri Sep 19 2025 Python Maint - 15.2.1-1.2 +- Rebuilt for Python 3.14.0rc3 bytecode + * Fri Aug 15 2025 Python Maint - 15.2.1-1.1 - Rebuilt for Python 3.14.0rc2 bytecode From ec7ee8880e0a6441cc36c42aadee951ea4d117f5 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 24 Sep 2025 18:38:03 +0200 Subject: [PATCH 271/293] 15.2.1-2 --- .gitignore | 1 + gcc.spec | 34 ++++++++++++++++++++++++++-------- sources | 2 +- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 2c05112..c672854 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ /gcc-15.1.1-20250719.tar.xz /gcc-15.2.1-20250808.tar.xz /nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz +/gcc-15.2.1-20250924.tar.xz diff --git a/gcc.spec b/gcc.spec index 841e2ba..83cf75a 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20250808 -%global gitrev f833458d29b4fa40ffce6cf3b37ab9a30a864901 +%global DATE 20250924 +%global gitrev 720a9e91dc822477b5e5417a2134c2a1668da177 %global gcc_version 15.2.1 %global gcc_major 15 # Note, gcc_release must be integer, if you want to add suffixes to @@ -149,7 +149,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist}.2 +Release: %{gcc_release}%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -3765,11 +3765,29 @@ end %endif %changelog -* Fri Sep 19 2025 Python Maint - 15.2.1-1.2 -- Rebuilt for Python 3.14.0rc3 bytecode - -* Fri Aug 15 2025 Python Maint - 15.2.1-1.1 -- Rebuilt for Python 3.14.0rc2 bytecode +* Wed Sep 24 2025 Jakub Jelinek 15.2.1-2 +- update from releases/gcc-15 branch + - PRs ada/121968, bootstrap/118009, bootstrap/119089, c++/97740, c++/119859, + c++/120499, c++/120620, c++/121351, c++/121396, c++/121524, + c++/121724, c++/121795, c++/121801, c++/121977, c++/122015, + c++/122019, fortran/89092, fortran/121263, libfortran/121234, + libgcc/117600, libstdc++/110853, libstdc++/117276, libstdc++/119861, + libstdc++/120390, libstdc++/120698, libstdc++/121097, + libstdc++/121313, libstdc++/121374, libstdc++/121496, + libstdc++/121745, libstdc++/121827, middle-end/121453, + middle-end/121828, middle-end/121831, rtl-optimization/87600, + rtl-optimization/120718, rtl-optimization/120983, + rtl-optimization/121253, rtl-optimization/121757, target/49857, + target/81540, target/116445, target/118280, target/118885, + target/119830, target/120476, target/120691, target/120986, + target/121007, target/121118, target/121208, target/121294, + target/121414, target/121449, target/121464, target/121510, + target/121534, target/121542, target/121548, target/121602, + target/121608, target/121634, target/121749, target/121794, + target/121906, testsuite/118567, tree-optimization/107997, + tree-optimization/121370, tree-optimization/121527, + tree-optimization/121659, tree-optimization/121844, + tree-optimization/121870, tree-optimization/122016 * Fri Aug 8 2025 Jakub Jelinek 15.2.1-1 - update from releases/gcc-15 branch diff --git a/sources b/sources index cbe577b..bce2aba 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.2.1-20250808.tar.xz) = 9c0e0f78a353e6b79ad8a421fa8e7eb54935294f2b5136cb3aa911dc7583a00ad155e4d68803c61bcff392c7d6cb84d4229732df1f26392175f020629b125a05 +SHA512 (gcc-15.2.1-20250924.tar.xz) = 49f478bd761790f3be7fb317942107293ba204ce1484f626fae8865f71a72792445fca66b237263f2f9687d2e3c2accab442f70462da4d45f1fc2a604db79ff8 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz) = 7f862986065028df70c843fc3f2c89e200a76b48ad0bd51c749ac8a5aab7be0ebdf35be182fad2407b3281615e75be1ac6833ab6a5130ae9920169a0412f94f0 From e30d2f705438cf93e3e78471e111b5782c912238 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 24 Sep 2025 18:47:28 +0200 Subject: [PATCH 272/293] 15.2.1-2 --- gcc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 83cf75a..2c27768 100644 --- a/gcc.spec +++ b/gcc.spec @@ -4,7 +4,7 @@ %global gcc_major 15 # 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 1 +%global gcc_release 2 %global nvptx_tools_gitrev a0c1fff6534a4df9fb17937c3c4a4b1071212029 %global newlib_cygwin_gitrev d35cc82b5ec15bb8a5fe0fe11e183d1887992e99 %global _unpackaged_files_terminate_build 0 From a9e44d03b5d510470d25c1be0c68019bfddcd8a9 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 22 Oct 2025 14:00:24 +0200 Subject: [PATCH 273/293] gcc-15.2.1-3 --- .gitignore | 1 + gcc.spec | 23 ++++++++++++++++++++--- sources | 2 +- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index c672854..ee415eb 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ /gcc-15.2.1-20250808.tar.xz /nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz /gcc-15.2.1-20250924.tar.xz +/gcc-15.2.1-20251022.tar.xz diff --git a/gcc.spec b/gcc.spec index 2c27768..9020640 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20250924 -%global gitrev 720a9e91dc822477b5e5417a2134c2a1668da177 +%global DATE 20251022 +%global gitrev ad903636211be01b8c06d8cf09ee5710ac43b2cb %global gcc_version 15.2.1 %global gcc_major 15 # 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 a0c1fff6534a4df9fb17937c3c4a4b1071212029 %global newlib_cygwin_gitrev d35cc82b5ec15bb8a5fe0fe11e183d1887992e99 %global _unpackaged_files_terminate_build 0 @@ -1674,6 +1674,9 @@ mv %{buildroot}%{_prefix}/%{_lib}/libitm.spec $FULLPATH/ %if %{build_libasan} mv %{buildroot}%{_prefix}/%{_lib}/libsanitizer.spec $FULLPATH/ %endif +%if %{build_cobol} +mv %{buildroot}%{_prefix}/%{_lib}/libgcobol.spec $FULLPATH/ +%endif mkdir -p %{buildroot}/%{_lib} mv -f %{buildroot}%{_prefix}/%{_lib}/libgcc_s.so.1 %{buildroot}/%{_lib}/libgcc_s-%{gcc_major}-%{DATE}.so.1 @@ -3282,6 +3285,7 @@ end %dir %{_prefix}/libexec/gcc/%{gcc_target_platform} %dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cobol1 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcobol.spec %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcobol.so %{_datadir}/gcobol %doc rpm.doc/gcobol/* @@ -3765,6 +3769,19 @@ end %endif %changelog +* Wed Oct 21 2025 Jakub Jelinek 15.2.1-3 +- update from releases/gcc-15 branch + - PRs ada/107536, ada/113536, ada/117517, ada/118343, c/122188, c++/120757, + c++/121981, c++/122302, fortran/108581, fortran/121616, + fortran/121939, go/104290, libstdc++/122062, libstdc++/122322, + middle-end/121922, middle-end/122133, target/110812, target/121599, + target/121652, target/121742, target/121780, target/121781, + target/121845, target/121875, target/122119, target/122177, + target/122187, target/122210, target/122220, target/122222, + target/122223, tree-optimization/121772, tree-optimization/122104, + tree-optimization/122213 +- package libgcobol.spec (#2401679) + * Wed Sep 24 2025 Jakub Jelinek 15.2.1-2 - update from releases/gcc-15 branch - PRs ada/121968, bootstrap/118009, bootstrap/119089, c++/97740, c++/119859, diff --git a/sources b/sources index bce2aba..0bdd61a 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.2.1-20250924.tar.xz) = 49f478bd761790f3be7fb317942107293ba204ce1484f626fae8865f71a72792445fca66b237263f2f9687d2e3c2accab442f70462da4d45f1fc2a604db79ff8 +SHA512 (gcc-15.2.1-20251022.tar.xz) = 565fe994bcd3f0b604e952bc55a9184739175679d5595a8a5f7109ec6b90c001b8532a9bc047e356e01dbc416539f78178f56a2393ef67489ef841d544fb4a5b SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz) = 7f862986065028df70c843fc3f2c89e200a76b48ad0bd51c749ac8a5aab7be0ebdf35be182fad2407b3281615e75be1ac6833ab6a5130ae9920169a0412f94f0 From 8e1de27693c2caf57c766104cee88857e524f369 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 11 Nov 2025 09:25:47 +0100 Subject: [PATCH 274/293] 15.2.1-4 --- .gitignore | 1 + gcc.spec | 18 +++++++++++++++--- sources | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index ee415eb..6dd1375 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ /nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz /gcc-15.2.1-20250924.tar.xz /gcc-15.2.1-20251022.tar.xz +/gcc-15.2.1-20251111.tar.xz diff --git a/gcc.spec b/gcc.spec index 9020640..c965a13 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20251022 -%global gitrev ad903636211be01b8c06d8cf09ee5710ac43b2cb +%global DATE 20251111 +%global gitrev 43c569d5324a7f22a16fb0d245a2373e8a85473e %global gcc_version 15.2.1 %global gcc_major 15 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 3 +%global gcc_release 4 %global nvptx_tools_gitrev a0c1fff6534a4df9fb17937c3c4a4b1071212029 %global newlib_cygwin_gitrev d35cc82b5ec15bb8a5fe0fe11e183d1887992e99 %global _unpackaged_files_terminate_build 0 @@ -3769,6 +3769,18 @@ end %endif %changelog +* Tue Nov 11 2025 Jakub Jelinek 15.2.1-4 +- update from releases/gcc-15 branch + - PRs ada/81087, ada/118208, ada/118782, c++/122192, c++/122253, c++/122310, + c++/122381, c++/122421, fortran/107968, fortran/114023, + fortran/122206, fortran/122386, rtl-optimization/122321, + target/99930, target/118460, target/119079, target/120674, + target/121604, target/122097, target/122270, target/122323, + target/122516, target/122527, tree-optimization/122012, + tree-optimization/122394, tree-optimization/122408, + tree-optimization/122505 + - fix ICE while building firefox with LTO+PGO (#2395476, PR lto/122620) + * Wed Oct 21 2025 Jakub Jelinek 15.2.1-3 - update from releases/gcc-15 branch - PRs ada/107536, ada/113536, ada/117517, ada/118343, c/122188, c++/120757, diff --git a/sources b/sources index 0bdd61a..d156995 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.2.1-20251022.tar.xz) = 565fe994bcd3f0b604e952bc55a9184739175679d5595a8a5f7109ec6b90c001b8532a9bc047e356e01dbc416539f78178f56a2393ef67489ef841d544fb4a5b +SHA512 (gcc-15.2.1-20251111.tar.xz) = d31bf7d14dda8dc72feb2f490c2b4dfc90084a578c09de0ece085c18dc8bb948d1449ffccd9eb5ca23d0908ee948eeb95c9604ae1526cf62f2197c74336df83f SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz) = 7f862986065028df70c843fc3f2c89e200a76b48ad0bd51c749ac8a5aab7be0ebdf35be182fad2407b3281615e75be1ac6833ab6a5130ae9920169a0412f94f0 From ecc62ec17c535d747e4ef719d8ddd59e6e92dd9e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 11 Nov 2025 09:27:02 +0100 Subject: [PATCH 275/293] Fix up date. --- gcc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index c965a13..d910939 100644 --- a/gcc.spec +++ b/gcc.spec @@ -3781,7 +3781,7 @@ end tree-optimization/122505 - fix ICE while building firefox with LTO+PGO (#2395476, PR lto/122620) -* Wed Oct 21 2025 Jakub Jelinek 15.2.1-3 +* Wed Oct 22 2025 Jakub Jelinek 15.2.1-3 - update from releases/gcc-15 branch - PRs ada/107536, ada/113536, ada/117517, ada/118343, c/122188, c++/120757, c++/121981, c++/122302, fortran/108581, fortran/121616, From 29a83d755339cfb3f850d556664d0536615af1bd Mon Sep 17 00:00:00 2001 From: Siddhesh Poyarekar Date: Tue, 2 Dec 2025 14:57:49 -0500 Subject: [PATCH 276/293] Create gnatgcc symlink only when building the Ada compiler --- gcc.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gcc.spec b/gcc.spec index d858528..bde5b0e 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1583,7 +1583,9 @@ ln -sf ../bin/cpp %{buildroot}/%{_prefix}/lib/cpp ln -sf gfortran %{buildroot}%{_prefix}/bin/f95 rm -f %{buildroot}%{_infodir}/dir gzip -9 %{buildroot}%{_infodir}/*.info* +%if %{build_ada} ln -sf gcc %{buildroot}%{_prefix}/bin/gnatgcc +%endif mkdir -p %{buildroot}%{_fmoddir} %if %{build_go} @@ -3776,6 +3778,8 @@ end %endif %changelog +- Create gnatgcc symlink only when building ada. + * Tue Nov 11 2025 Jakub Jelinek 15.2.1-4 - update from releases/gcc-15 branch - PRs ada/81087, ada/118208, ada/118782, c++/122192, c++/122253, c++/122310, From 7e1c00df08bdc58a8d64ccd2336cb2acd53261a3 Mon Sep 17 00:00:00 2001 From: Siddhesh Poyarekar Date: Tue, 2 Dec 2025 16:47:18 -0500 Subject: [PATCH 277/293] Disable libssp and avoid building disabled libraries Don't build libquadmath, libatomic and libitm if they have been disabled. Also, disable libssp so that none of its artifacts are built or installed. --- gcc.spec | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index bde5b0e..19cd7d4 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1320,6 +1320,16 @@ CONFIGURE_OPTS="\ %endif %if 0%{?rhel:1} --enable-host-pie --enable-host-bind-now \ +%endif + --disable-libssp \ +%if %{build_libquadmath} == 0 + --disable-libquadmath \ +%endif +%if %{build_libatomic} == 0 + --disable-libatomic \ +%endif +%if %{build_libitm} == 0 + --disable-libitm \ %endif " @@ -2380,7 +2390,6 @@ cd .. rm -f %{buildroot}%{_prefix}/%{_lib}/{libffi*,libiberty.a} || : rm -f $FULLEPATH/install-tools/{mkheaders,fixincl} rm -f %{buildroot}%{_prefix}/lib/{32,64}/libiberty.a -rm -f %{buildroot}%{_prefix}/%{_lib}/libssp* rm -f %{buildroot}%{_prefix}/%{_lib}/libvtv* || : rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gfortran || : rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gccgo || : @@ -3779,6 +3788,7 @@ end %changelog - Create gnatgcc symlink only when building ada. +- Avoid building libssp and disabled libraries. * Tue Nov 11 2025 Jakub Jelinek 15.2.1-4 - update from releases/gcc-15 branch From 03834369aeb2574f8f8d8de33f6af81769ba5b6e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 11 Dec 2025 13:51:51 +0100 Subject: [PATCH 278/293] gcc-15.2.1-5 --- .gitignore | 1 + gcc.spec | 43 +++++++++++++++++++++++++++++++++++++------ sources | 2 +- 3 files changed, 39 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 6dd1375..02ae8bb 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ /gcc-15.2.1-20250924.tar.xz /gcc-15.2.1-20251022.tar.xz /gcc-15.2.1-20251111.tar.xz +/gcc-15.2.1-20251211.tar.xz diff --git a/gcc.spec b/gcc.spec index 19cd7d4..3059693 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20251111 -%global gitrev 43c569d5324a7f22a16fb0d245a2373e8a85473e +%global DATE 20251211 +%global gitrev 3c2c408e5ef993f208fbdcbd39b01717ab15be80 %global gcc_version 15.2.1 %global gcc_major 15 # 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 4 +%global gcc_release 5 %global nvptx_tools_gitrev a0c1fff6534a4df9fb17937c3c4a4b1071212029 %global newlib_cygwin_gitrev d35cc82b5ec15bb8a5fe0fe11e183d1887992e99 %global _unpackaged_files_terminate_build 0 @@ -2258,7 +2258,7 @@ ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/adalib # If we are building a debug package then copy all of the static archives # into the debug directory to keep them as unstripped copies. -%if 0%{?_enable_debug_packages} +%if 0 # %{?_enable_debug_packages} for d in . $FULLLSUBDIR; do mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/debug%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/$d for f in `find $d -maxdepth 1 -a \ @@ -2399,6 +2399,8 @@ rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcc-nm || : rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcc-ranlib || : rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gdc || : rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gm2 || : +rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcobc || : +rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcobol || : %ifarch %{multilib_64_archs} # Remove libraries for the other arch on multilib arches @@ -2422,11 +2424,25 @@ rm -rf %{buildroot}%{_prefix}/lib64/go/%{gcc_major}/%{gcc_target_platform} %endif %endif +rm -f %{buildroot}%{_prefix}/lib*/lib*.spec || : +rm -f %{buildroot}%{_prefix}/lib*/libstdc++.modules.json || : +rm -f %{buildroot}%{_prefix}/%{_lib}/lib{asan,atomic,gcc_s,gcobol,gdruntime,gfortran,go,gomp-plugin-*,gomp,gphobos,hwasan}.so || : +rm -f %{buildroot}%{_prefix}/%{_lib}/lib{itm,lsan,m2{cor,iso,log,min,pim},objc,quadmath,tsan,ubsan}.so || : +rm -f %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/install-tools/{fixinc.sh,mkinstalldirs} || : +rm -f %{buildroot}%{_prefix}/share/locale/*/LC_MESSAGES/libstdc++.mo || : +rm -f %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include-fixed/README || : +rm -rf %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ssp || : +rm -rf %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/install-tools || : + %if %{build_offload_nvptx} rm -f %{buildroot}%{_mandir}/man1/*-accel-*nvptx* +find %{buildroot}%{_prefix}/nvptx-none/lib -name libstdc++.a-gdb.py | xargs rm -f || : +find %{buildroot}%{_prefix}/nvptx-none/lib -name libstdc++.modules.json | xargs rm -f || : %endif %if %{build_offload_amdgcn} rm -f %{buildroot}%{_mandir}/man1/*-accel-*amdgcn* +find %{buildroot}%{_prefix}/amdgcn-amdhsa/lib -name libstdc++.a-gdb.py | xargs rm -f || : +find %{buildroot}%{_prefix}/amdgcn-amdhsa/lib -name libstdc++.modules.json | xargs rm -f || : %endif rm -f %{buildroot}%{_mandir}/man7/{gpl,gfdl,fsf-funding}.7* @@ -3787,8 +3803,23 @@ end %endif %changelog -- Create gnatgcc symlink only when building ada. -- Avoid building libssp and disabled libraries. +* Thu Dec 11 2025 Jakub Jelinek 15.2.1-5 +- update from releases/gcc-15 branch + - PRs ada/111433, ada/115305, ada/122640, ada/123037, c/121506, c/123018, + c++/119580, c++/120529, c++/120876, c++/121325, c++/121445, + c++/122625, c++/122658, c++/122677, c++/122789, fortran/122709, + fortran/122977, libstdc++/122661, libstdc++/122726, libstdc++/122743, + libstdc++/122842, libstdc++/122921, lto/122515, middle-end/120052, + middle-end/120564, middle-end/121581, middle-end/122624, + rtl-optimization/122627, target/110796, target/118446, target/119275, + target/121853, target/122175, target/122189, target/122216, + target/122446, target/122539, target/122652, target/122656, + target/122692, target/122695, target/122858, target/122867, + target/122991, tree-optimization/121776, tree-optimization/122126, + tree-optimization/122225, tree-optimization/122943 +- create gnatgcc symlink only when building Ada +- avoid building libssp and disabled libraries +- remove various unpackaged files from the buildroot * Tue Nov 11 2025 Jakub Jelinek 15.2.1-4 - update from releases/gcc-15 branch diff --git a/sources b/sources index d156995..5429ac5 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.2.1-20251111.tar.xz) = d31bf7d14dda8dc72feb2f490c2b4dfc90084a578c09de0ece085c18dc8bb948d1449ffccd9eb5ca23d0908ee948eeb95c9604ae1526cf62f2197c74336df83f +SHA512 (gcc-15.2.1-20251211.tar.xz) = 9ad5a1ef0f21327fafe37eb52a2e8ff4ebd773c34e9a70053fa70436fa7d35b1eb3b85f0a38211b06fba3fc6a3e35dcb939822d0c0eca1592ea24aa6b2726c99 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz) = 7f862986065028df70c843fc3f2c89e200a76b48ad0bd51c749ac8a5aab7be0ebdf35be182fad2407b3281615e75be1ac6833ab6a5130ae9920169a0412f94f0 From 7d5be559dbddc4eb93bf1e61c41ad90f241917c5 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 11 Dec 2025 13:58:15 +0100 Subject: [PATCH 279/293] gcc-15.2.1-5 --- gcc.spec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc.spec b/gcc.spec index 3059693..91264e0 100644 --- a/gcc.spec +++ b/gcc.spec @@ -2258,7 +2258,8 @@ ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/adalib # If we are building a debug package then copy all of the static archives # into the debug directory to keep them as unstripped copies. -%if 0 # %{?_enable_debug_packages} +# if 0%{?_enable_debug_packages} +%if 0 for d in . $FULLLSUBDIR; do mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/debug%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/$d for f in `find $d -maxdepth 1 -a \ From e938fc85e2ce30108eca74a83417cc332629a2a4 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 11 Dec 2025 14:32:49 +0100 Subject: [PATCH 280/293] gcc-15.2.1-5 --- gcc.spec | 1 + gcc15-libgomp-strchr.patch | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 gcc15-libgomp-strchr.patch diff --git a/gcc.spec b/gcc.spec index 91264e0..a941a87 100644 --- a/gcc.spec +++ b/gcc.spec @@ -312,6 +312,7 @@ Patch9: gcc15-Wno-format-security.patch Patch10: gcc15-rh1574936.patch Patch11: gcc15-d-shared-libphobos.patch Patch12: gcc15-pr119006.patch +Patch13: gcc15-libgomp-strchr.patch Patch50: isl-rh2155127.patch diff --git a/gcc15-libgomp-strchr.patch b/gcc15-libgomp-strchr.patch new file mode 100644 index 0000000..802f142 --- /dev/null +++ b/gcc15-libgomp-strchr.patch @@ -0,0 +1,15 @@ +2025-11-22 Frank Scheiner + + * affinity-fmt.c: Make char *q a pointer to a const char. + +--- libgomp/affinity-fmt.c.jj ++++ libgomp/affinity-fmt.c +@@ -327,7 +327,7 @@ gomp_display_affinity (char *buffer, size_t size, + } + if (c == '{') + { +- char *q = strchr (p + 1, '}'); ++ const char *q = strchr (p + 1, '}'); + if (q) + gomp_fatal ("unsupported long type name '%.*s' in affinity " + "format", (int) (q - (p + 1)), p + 1); From 37b414b69dc7c00dc279290e84a9c105be389810 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 12 Dec 2025 21:57:37 +0100 Subject: [PATCH 281/293] gcc-15.2.1-5 --- gcc.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gcc.spec b/gcc.spec index a941a87..8624697 100644 --- a/gcc.spec +++ b/gcc.spec @@ -2429,12 +2429,15 @@ rm -rf %{buildroot}%{_prefix}/lib64/go/%{gcc_major}/%{gcc_target_platform} rm -f %{buildroot}%{_prefix}/lib*/lib*.spec || : rm -f %{buildroot}%{_prefix}/lib*/libstdc++.modules.json || : rm -f %{buildroot}%{_prefix}/%{_lib}/lib{asan,atomic,gcc_s,gcobol,gdruntime,gfortran,go,gomp-plugin-*,gomp,gphobos,hwasan}.so || : -rm -f %{buildroot}%{_prefix}/%{_lib}/lib{itm,lsan,m2{cor,iso,log,min,pim},objc,quadmath,tsan,ubsan}.so || : +rm -f %{buildroot}%{_prefix}/%{_lib}/lib{itm,lsan,m2{cor,iso,log,min,pim},objc,quadmath,stdc++,tsan,ubsan}.so || : rm -f %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/install-tools/{fixinc.sh,mkinstalldirs} || : rm -f %{buildroot}%{_prefix}/share/locale/*/LC_MESSAGES/libstdc++.mo || : rm -f %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include-fixed/README || : rm -rf %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ssp || : rm -rf %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/install-tools || : +%ifarch ppc ppc64 ppc64le ppc64p7 +rm -f %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/{e,n}crt{i,n}.o || : +%endif %if %{build_offload_nvptx} rm -f %{buildroot}%{_mandir}/man1/*-accel-*nvptx* @@ -3653,7 +3656,8 @@ end %doc rpm.doc/go/* %files -n libgo -%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.24* +%{_prefix}/%{_lib}/libgo.so.24 +%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.24.* %doc rpm.doc/libgo/* %files -n libgo-devel From 8f8d2ea9c326784bce044ff86547107611dda338 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 18 Dec 2025 17:22:02 +0100 Subject: [PATCH 282/293] 16.0.0-0.2 --- .gitignore | 1 + gcc.spec | 766 +++++------------- gcc15-libgomp-strchr.patch | 15 - ...y.patch => gcc16-Wno-format-security.patch | 8 +- ...os.patch => gcc16-d-shared-libphobos.patch | 0 ...tch => gcc16-fortran-fdec-duplicates.patch | 0 gcc15-hack.patch => gcc16-hack.patch | 0 gcc15-isl-dl.patch => gcc16-isl-dl.patch | 0 gcc15-isl-dl2.patch => gcc16-isl-dl2.patch | 0 gcc16-libgomp-build.patch | 17 + ...atch => gcc16-libgomp-omp_h-multilib.patch | 0 ...+-docs.patch => gcc16-libstdc++-docs.patch | 4 +- ...path.patch => gcc16-libtool-no-rpath.patch | 0 ...-needed.patch => gcc16-no-add-needed.patch | 2 +- gcc15-pr119006.patch => gcc16-pr119006.patch | 0 gcc16-pr123114.patch | 46 ++ gcc16-pr123115.patch | 17 + gcc16-pr123152.patch | 157 ++++ ...5-rh1574936.patch => gcc16-rh1574936.patch | 0 ...atch => gcc16-sparc-config-detection.patch | 0 sources | 2 +- 21 files changed, 443 insertions(+), 592 deletions(-) delete mode 100644 gcc15-libgomp-strchr.patch rename gcc15-Wno-format-security.patch => gcc16-Wno-format-security.patch (89%) rename gcc15-d-shared-libphobos.patch => gcc16-d-shared-libphobos.patch (100%) rename gcc15-fortran-fdec-duplicates.patch => gcc16-fortran-fdec-duplicates.patch (100%) rename gcc15-hack.patch => gcc16-hack.patch (100%) rename gcc15-isl-dl.patch => gcc16-isl-dl.patch (100%) rename gcc15-isl-dl2.patch => gcc16-isl-dl2.patch (100%) create mode 100644 gcc16-libgomp-build.patch rename gcc15-libgomp-omp_h-multilib.patch => gcc16-libgomp-omp_h-multilib.patch (100%) rename gcc15-libstdc++-docs.patch => gcc16-libstdc++-docs.patch (96%) rename gcc15-libtool-no-rpath.patch => gcc16-libtool-no-rpath.patch (100%) rename gcc15-no-add-needed.patch => gcc16-no-add-needed.patch (96%) rename gcc15-pr119006.patch => gcc16-pr119006.patch (100%) create mode 100644 gcc16-pr123114.patch create mode 100644 gcc16-pr123115.patch create mode 100644 gcc16-pr123152.patch rename gcc15-rh1574936.patch => gcc16-rh1574936.patch (100%) rename gcc15-sparc-config-detection.patch => gcc16-sparc-config-detection.patch (100%) diff --git a/.gitignore b/.gitignore index 02ae8bb..02b5869 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ /gcc-15.2.1-20251022.tar.xz /gcc-15.2.1-20251111.tar.xz /gcc-15.2.1-20251211.tar.xz +/gcc-16.0.0-20251218.tar.xz diff --git a/gcc.spec b/gcc.spec index 8624697..c1ba99a 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20251211 -%global gitrev 3c2c408e5ef993f208fbdcbd39b01717ab15be80 -%global gcc_version 15.2.1 -%global gcc_major 15 +%global DATE 20251218 +%global gitrev f73d23f06a1b8aa7cdce95a6092c0ce0f5650a00 +%global gcc_version 16.0.0 +%global gcc_major 16 # 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 5 +%global gcc_release 0 %global nvptx_tools_gitrev a0c1fff6534a4df9fb17937c3c4a4b1071212029 %global newlib_cygwin_gitrev d35cc82b5ec15bb8a5fe0fe11e183d1887992e99 %global _unpackaged_files_terminate_build 0 @@ -45,6 +45,7 @@ %global build_d 0 %global build_m2 0 %global build_cobol 0 +%global build_algol68 0 %else %ifarch %{ix86} x86_64 ia64 ppc %{power64} alpha s390x %{arm} aarch64 riscv64 %global build_ada 1 @@ -67,11 +68,12 @@ %else %global build_m2 0 %endif -%ifarch x86_64 aarch64 +%ifarch x86_64 aarch64 ppc64le %global build_cobol 1 %else %global build_cobol 0 %endif +%global build_algol68 1 %endif %ifarch %{ix86} x86_64 ia64 ppc64le %global build_libquadmath 1 @@ -156,7 +158,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist} +Release: %{gcc_release}.2%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -218,6 +220,9 @@ BuildRequires: gcc, gcc-c++, make %if %{build_go} BuildRequires: hostname, procps %endif +%if %{build_cobol} +BuildRequires: libxml2-devel +%endif # For VTA guality testing BuildRequires: gdb # Make sure pthread.h doesn't contain __thread tokens @@ -300,23 +305,26 @@ Provides: bundled(libbacktrace) Provides: bundled(libffi) Provides: gcc(major) = %{gcc_major} -Patch0: gcc15-hack.patch -Patch2: gcc15-sparc-config-detection.patch -Patch3: gcc15-libgomp-omp_h-multilib.patch -Patch4: gcc15-libtool-no-rpath.patch -Patch5: gcc15-isl-dl.patch -Patch6: gcc15-isl-dl2.patch -Patch7: gcc15-libstdc++-docs.patch -Patch8: gcc15-no-add-needed.patch -Patch9: gcc15-Wno-format-security.patch -Patch10: gcc15-rh1574936.patch -Patch11: gcc15-d-shared-libphobos.patch -Patch12: gcc15-pr119006.patch -Patch13: gcc15-libgomp-strchr.patch +Patch0: gcc16-hack.patch +Patch2: gcc16-sparc-config-detection.patch +Patch3: gcc16-libgomp-omp_h-multilib.patch +Patch4: gcc16-libtool-no-rpath.patch +Patch5: gcc16-isl-dl.patch +Patch6: gcc16-isl-dl2.patch +Patch7: gcc16-libstdc++-docs.patch +Patch8: gcc16-no-add-needed.patch +Patch9: gcc16-Wno-format-security.patch +Patch10: gcc16-rh1574936.patch +Patch11: gcc16-d-shared-libphobos.patch +Patch12: gcc16-pr119006.patch +Patch13: gcc16-pr123152.patch +Patch14: gcc16-pr123114.patch +Patch15: gcc16-pr123115.patch +Patch16: gcc16-libgomp-build.patch Patch50: isl-rh2155127.patch -Patch100: gcc15-fortran-fdec-duplicates.patch +Patch100: gcc16-fortran-fdec-duplicates.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -338,7 +346,7 @@ Patch100: gcc15-fortran-fdec-duplicates.patch %if %{build_go} # Avoid stripping these libraries and binaries. %global __os_install_post \ -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.24.* \ +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.25.* \ chmod 644 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -346,7 +354,7 @@ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/test2json \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/vet \ %__os_install_post \ -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.24.* \ +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.25.* \ chmod 755 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 755 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -588,15 +596,41 @@ Requires: gcc-gcobol = %{version}-%{release} %description -n libgcobol-static This package contains static COBOL libraries. +%package algol68 +Summary: Algol 68 support +Requires: gcc = %{version}-%{release} +Requires: libga68 = %{version}-%{release} +Autoreq: true + +%description algol68 +The gcc-algol68 package provides support for compiling Algol 68 +programs with the GNU Compiler Collection. + +%package -n libga68 +Summary: Algol 68 runtime +Autoreq: true + +%description -n libga68 +This package contains Algol 68 shared libraries which are needed to run +Algol 68 dynamically linked programs. + +%package -n libga68-static +Summary: Static Algol 68 libraries +Requires: libga68 = %{version}-%{release} +Requires: gcc-algol68 = %{version}-%{release} + +%description -n libga68-static +This package contains static Algol 68 libraries. + %package -n libgomp -Summary: GCC OpenMP v4.5 shared support library +Summary: GCC OpenMP v5.2 shared support library %description -n libgomp This package contains GCC shared support library which is needed -for OpenMP v4.5 support. +for OpenMP v5.2 support. %package -n libgomp-offload-nvptx -Summary: GCC OpenMP v4.5 plugin for offloading to NVPTX +Summary: GCC OpenMP v5.2 plugin for offloading to NVPTX Requires: libgomp = %{version}-%{release} %description -n libgomp-offload-nvptx @@ -605,7 +639,7 @@ PTX. The plugin needs libcuda.so.1 shared library that has to be installed separately. %package -n libgomp-offload-amdgcn -Summary: GCC OpenMP v4.5 plugin for offloading to AMD GCN +Summary: GCC OpenMP v5.2 plugin for offloading to AMD GCN Requires: libgomp = %{version}-%{release} %if 0%{?fedora:1} Requires: rocm-runtime >= 6.0.0 @@ -963,14 +997,12 @@ rm -f libphobos/testsuite/libphobos.gc/forkgc2.d echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE -cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h - ./contrib/gcc_update --touch LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi sed -i -e 's/Common Driver Var(flag_report_bug)/& Init(1)/' gcc/common.opt -sed -i -e 's/m_report_bug = false;/m_report_bug = true;/' gcc/diagnostic.cc +sed -i -e 's/m_report_bug = false;/m_report_bug = true;/' gcc/diagnostics/context.cc %ifarch ppc if [ -d libstdc++-v3/config/abi/post/powerpc64-linux-gnu ]; then @@ -1133,6 +1165,7 @@ enablelobjc= enableld= enablelm2= enablelcob= +enablela68= %if %{build_objc} enablelobjc=,objc,obj-c++ %endif @@ -1151,6 +1184,9 @@ enablelm2=,m2 %if %{build_cobol} enablelcob=,cobol %endif +%if %{build_algol68} +enablela68=,algol68 +%endif offloadtgts= %if %{build_offload_nvptx} offloadtgts=nvptx-none @@ -1247,6 +1283,9 @@ CONFIGURE_OPTS="\ %ifarch %{ix86} x86_64 --enable-cet \ --with-tune=generic \ +%if 0%{?fedora} >= 44 || 0%{?rhel} >= 11 + --with-tls=gnu2 \ +%endif %endif %if 0%{?rhel} >= 7 %ifarch %{ix86} @@ -1339,7 +1378,7 @@ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \ | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \ XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \ ../configure --enable-bootstrap \ - --enable-languages=c,c++,fortran${enablelobjc}${enablelada}${enablelgo}${enableld}${enablelm2}${enablelcob},lto \ + --enable-languages=c,c++,fortran${enablelobjc}${enablelada}${enablelgo}${enableld}${enablelm2}${enablelcob}${enablela68},lto \ $CONFIGURE_OPTS %ifarch sparc sparcv9 sparc64 @@ -1395,7 +1434,7 @@ cd ../.. # Copy various doc files here and there cd .. -mkdir -p rpm.doc/{gfortran,objc,gdc,libphobos,gm2,libgm2,libgdiagnostics-devel,gcobol,libgcobol} +mkdir -p rpm.doc/{gfortran,objc,gdc,libphobos,gm2,libgm2,libgdiagnostics-devel,gcobol,libgcobol,algol68,libga68} mkdir -p rpm.doc/go rpm.doc/libgo rpm.doc/libquadmath rpm.doc/libitm mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/ada,gcc/jit,libstdc++-v3,libobjc,libgomp,libcc1,libatomic,libsanitizer} @@ -1439,6 +1478,14 @@ done) cp -p $i ../rpm.doc/libgcobol/$i.libgcobol done) %endif +%if %{build_algol68} +(cd gcc/algol68; for i in ChangeLog*; do + cp -p $i ../../rpm.doc/algol68/$i.algol68 +done) +(cd libga68; for i in ChangeLog*; do + cp -p $i ../rpm.doc/libga68/$i.libga68 +done) +%endif %if %{build_libquadmath} (cd libquadmath; for i in ChangeLog* COPYING.LIB; do cp -p $i ../rpm.doc/libquadmath/$i.libquadmath @@ -1697,6 +1744,9 @@ mv %{buildroot}%{_prefix}/%{_lib}/libsanitizer.spec $FULLPATH/ %if %{build_cobol} mv %{buildroot}%{_prefix}/%{_lib}/libgcobol.spec $FULLPATH/ %endif +%if %{build_algol68} +mv %{buildroot}%{_prefix}/%{_lib}/libga68.spec $FULLPATH/ +%endif mkdir -p %{buildroot}/%{_lib} mv -f %{buildroot}%{_prefix}/%{_lib}/libgcc_s.so.1 %{buildroot}/%{_lib}/libgcc_s-%{gcc_major}-%{DATE}.so.1 @@ -1782,7 +1832,7 @@ ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../libgfortran.so.5.* libgfortran.so ln -sf ../../../libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../libgo.so.24.* libgo.so +ln -sf ../../../libgo.so.25.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../libquadmath.so.0.* libquadmath.so @@ -1793,11 +1843,14 @@ ln -sf ../../../libgphobos.so.6.* libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do - ln -sf ../../../libm2$i.so.20.* libm2$i.so + ln -sf ../../../libm2$i.so.21.* libm2$i.so done %endif %if %{build_cobol} -ln -sf ../../../libgcobol.so.1.* libgcobol.so +ln -sf ../../../libgcobol.so.2.* libgcobol.so +%endif +%if %{build_algol68} +ln -sf ../../../libga68.so.2.* libga68.so %endif %if %{build_libitm} ln -sf ../../../libitm.so.1.* libitm.so @@ -1820,7 +1873,7 @@ ln -sf ../../../../%{_lib}/libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../../%{_lib}/libgfortran.so.5.* libgfortran.so ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../../%{_lib}/libgo.so.24.* libgo.so +ln -sf ../../../../%{_lib}/libgo.so.25.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so @@ -1831,11 +1884,14 @@ ln -sf ../../../../%{_lib}/libgphobos.so.6.* libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do - ln -sf ../../../../%{_lib}/libm2$i.so.20.* libm2$i.so + ln -sf ../../../../%{_lib}/libm2$i.so.21.* libm2$i.so done %endif %if %{build_cobol} -ln -sf ../../../../%{_lib}/libgcobol.so.1.* libgcobol.so +ln -sf ../../../../%{_lib}/libgcobol.so.2.* libgcobol.so +%endif +%if %{build_algol68} +ln -sf ../../../../%{_lib}/libga68.so.2.* libga68.so %endif %if %{build_libitm} ln -sf ../../../../%{_lib}/libitm.so.1.* libitm.so @@ -1893,6 +1949,9 @@ done %if %{build_cobol} mv -f %{buildroot}%{_prefix}/%{_lib}/libgcobol.*a $FULLLPATH/ %endif +%if %{build_algol68} +mv -f %{buildroot}%{_prefix}/%{_lib}/libga68.*a $FULLLPATH/ +%endif %if %{build_libitm} mv -f %{buildroot}%{_prefix}/%{_lib}/libitm.*a $FULLLPATH/ %endif @@ -1968,8 +2027,8 @@ ln -sf ../`echo ../../../../lib/libgfortran.so.5.* | sed s~/lib/~/lib64/~` 64/li ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.24.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.24.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.25.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.25.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -1986,8 +2045,8 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgphobos.so.6.* | sed 's %if %{build_m2} for i in cor iso log min pim; do rm -f libm2$i.so - echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libm2$i.so.20.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so - echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libm2$i.so.20.* | sed 's,^.*libm,libm,'`' )' > 64/libm2$i.so + echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libm2$i.so.21.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so + echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libm2$i.so.21.* | sed 's,^.*libm,libm,'`' )' > 64/libm2$i.so rm -f 64/m2/m2$i/*.{a,la} ln -sf ../../libm2$i.so 64/m2/m2$i/ ln -sf ../../libm2$i.a 64/m2/m2$i/ @@ -1995,8 +2054,13 @@ done %endif %if %{build_cobol} rm -f libgcobol.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgcobol.so.1.* | sed 's,^.*libg,libg,'`' )' > libgcobol.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgcobol.so.1.* | sed 's,^.*libg,libg,'`' )' > 64/libgcobol.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgcobol.so.2.* | sed 's,^.*libg,libg,'`' )' > libgcobol.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgcobol.so.2.* | sed 's,^.*libg,libg,'`' )' > 64/libgcobol.so +%endif +%if %{build_algol68} +rm -f libga68.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libga68.so.2.* | sed 's,^.*libg,libg,'`' )' > libga68.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libga68.so.2.* | sed 's,^.*libg,libg,'`' )' > 64/libga68.so %endif %if %{build_libitm} rm -f libitm.so @@ -2053,6 +2117,10 @@ done ln -sf lib32/libgcobol.a libgcobol.a ln -sf ../lib64/libgcobol.a 64/libgcobol.a %endif +%if %{build_algol68} +ln -sf lib32/libga68.a libga68.a +ln -sf ../lib64/libga68.a 64/libga68.a +%endif %if %{build_libitm} ln -sf lib32/libitm.a libitm.a ln -sf ../lib64/libitm.a 64/libitm.a @@ -2094,8 +2162,8 @@ ln -sf ../`echo ../../../../lib64/libgfortran.so.5.* | sed s~/../lib64/~/~` 32/l ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.24.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.24.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.25.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.25.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -2112,8 +2180,8 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgphobos.so.6.* | sed 's %if %{build_m2} for i in cor iso log min pim; do rm -f libm2$i.so - echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libm2$i.so.20.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so - echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libm2$i.so.20.* | sed 's,^.*libm,libm,'`' )' > 32/libm2$i.so + echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libm2$i.so.21.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so + echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libm2$i.so.21.* | sed 's,^.*libm,libm,'`' )' > 32/libm2$i.so rm -f 32/m2/m2$i/*.{a,la} ln -sf ../../libm2$i.so 32/m2/m2$i/ ln -sf ../../libm2$i.a 32/m2/m2$i/ @@ -2121,8 +2189,13 @@ done %endif %if %{build_cobol} rm -f libgcobol.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgcobol.so.1.* | sed 's,^.*libg,libg,'`' )' > libgcobol.so -#echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgcobol.so.1.* | sed 's,^.*libg,libg,'`' )' > 32/libgcobol.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgcobol.so.2.* | sed 's,^.*libg,libg,'`' )' > libgcobol.so +#echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgcobol.so.2.* | sed 's,^.*libg,libg,'`' )' > 32/libgcobol.so +%endif +%if %{build_algol68} +rm -f libga68.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libga68.so.2.* | sed 's,^.*libg,libg,'`' )' > libga68.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libga68.so.2.* | sed 's,^.*libg,libg,'`' )' > 32/libga68.so %endif %if %{build_libitm} rm -f libitm.so @@ -2181,6 +2254,10 @@ done ln -sf ../lib32/libgcobol.a 32/libgcobol.a ln -sf lib64/libgcobol.a libgcobol.a %endif +%if %{build_algol68} +ln -sf ../lib32/libga68.a 32/libga68.a +ln -sf lib64/libga68.a libga68.a +%endif %if %{build_libitm} ln -sf ../lib32/libitm.a 32/libitm.a ln -sf lib64/libitm.a libitm.a @@ -2233,6 +2310,9 @@ done %if %{build_cobol} #ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libgcobol.a 32/libgcobol.a %endif +%if %{build_algol68} +ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libga68.a 32/libga68.a +%endif %if %{build_libitm} ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libitm.a 32/libitm.a %endif @@ -2303,11 +2383,14 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgphobos.so.6.* %endif %if %{build_m2} for i in cor iso log min pim; do - chmod 755 %{buildroot}%{_prefix}/%{_lib}/libm2$i.so.20.* + chmod 755 %{buildroot}%{_prefix}/%{_lib}/libm2$i.so.21.* done %endif %if %{build_cobol} -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgcobol.so.1.* +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgcobol.so.2.* +%endif +%if %{build_algol68} +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libga68.so.2.* %endif %if %{build_libitm} chmod 755 %{buildroot}%{_prefix}/%{_lib}/libitm.so.1.* @@ -2332,7 +2415,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.* %endif %if %{build_go} # Avoid stripping these libraries and binaries. -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.24.* +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.25.* chmod 644 %{buildroot}%{_prefix}/bin/go.gcc chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo @@ -2403,6 +2486,7 @@ rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gdc || : rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gm2 || : rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcobc || : rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcobol || : +rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-ga68 || : %ifarch %{multilib_64_archs} # Remove libraries for the other arch on multilib arches @@ -2428,7 +2512,7 @@ rm -rf %{buildroot}%{_prefix}/lib64/go/%{gcc_major}/%{gcc_target_platform} rm -f %{buildroot}%{_prefix}/lib*/lib*.spec || : rm -f %{buildroot}%{_prefix}/lib*/libstdc++.modules.json || : -rm -f %{buildroot}%{_prefix}/%{_lib}/lib{asan,atomic,gcc_s,gcobol,gdruntime,gfortran,go,gomp-plugin-*,gomp,gphobos,hwasan}.so || : +rm -f %{buildroot}%{_prefix}/%{_lib}/lib{asan,atomic,gcc_s,gcobol,ga68,gdruntime,gfortran,go,gomp-plugin-*,gomp,gphobos,hwasan}.so || : rm -f %{buildroot}%{_prefix}/%{_lib}/lib{itm,lsan,m2{cor,iso,log,min,pim},objc,quadmath,stdc++,tsan,ubsan}.so || : rm -f %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/install-tools/{fixinc.sh,mkinstalldirs} || : rm -f %{buildroot}%{_prefix}/share/locale/*/LC_MESSAGES/libstdc++.mo || : @@ -2648,6 +2732,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdatomic.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/gcov.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdckdint.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdcountof.h %ifarch %{ix86} x86_64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mmintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xmmintrin.h @@ -2759,12 +2844,6 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxfp8intrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxmovrsintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxtf32intrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxtransposeintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2-512bf16intrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2-512convertintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2-512mediaintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2-512minmaxintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2-512satcvtintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2bf16intrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2convertintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2copyintrin.h @@ -2772,6 +2851,8 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2minmaxintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2satcvtintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/movrsintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512bmmintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512bmmvlintrin.h %endif %ifarch ia64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ia64intrin.h @@ -2836,6 +2917,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_bitmanip.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_th_vector.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sifive_vector.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/andes_vector.h %endif %if %{build_libasan} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sanitizer @@ -3294,7 +3376,7 @@ end %doc rpm.doc/gm2/* %files -n libgm2 -%{_prefix}/%{_lib}/libm2*.so.20* +%{_prefix}/%{_lib}/libm2*.so.21* %doc rpm.doc/libgm2/* %files -n libgm2-static @@ -3326,11 +3408,11 @@ end %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cobol1 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcobol.spec %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcobol.so -%{_datadir}/gcobol +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/cobol %doc rpm.doc/gcobol/* %files -n libgcobol -%{_prefix}/%{_lib}/libgcobol.so.1* +%{_prefix}/%{_lib}/libgcobol.so.2* %doc rpm.doc/libgcobol/* %files -n libgcobol-static @@ -3340,6 +3422,53 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcobol.a %endif +%if %{build_algol68} +%files algol68 +%{_prefix}/bin/ga68 +%{_mandir}/man1/ga68.1* +%dir %{_prefix}/libexec/gcc +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} +%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/a681 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libga68.spec +%ifarch sparcv9 sparc64 ppc ppc64 ppc64p7 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libga68.a +%endif +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libga68.so +%ifarch sparcv9 ppc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libga68.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libga68.so +%endif +%ifarch %{multilib_64_archs} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libga68.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libga68.so +%endif +%{_infodir}/ga68* +%doc rpm.doc/algol68/* + +%files -n libga68 +%{_prefix}/%{_lib}/libga68.so.2* +%doc rpm.doc/libga68/* + +%files -n libga68-static +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} +%ifarch sparcv9 ppc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libga68.a +%endif +%ifarch sparc64 ppc64 ppc64p7 +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libga68.a +%endif +%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libga68.a +%endif +%endif + %if %{build_ada} %files gnat %{_prefix}/bin/gnat @@ -3656,8 +3785,8 @@ end %doc rpm.doc/go/* %files -n libgo -%{_prefix}/%{_lib}/libgo.so.24 -%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.24.* +%{_prefix}/%{_lib}/libgo.so.25 +%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.25.* %doc rpm.doc/libgo/* %files -n libgo-devel @@ -3809,510 +3938,5 @@ end %endif %changelog -* Thu Dec 11 2025 Jakub Jelinek 15.2.1-5 -- update from releases/gcc-15 branch - - PRs ada/111433, ada/115305, ada/122640, ada/123037, c/121506, c/123018, - c++/119580, c++/120529, c++/120876, c++/121325, c++/121445, - c++/122625, c++/122658, c++/122677, c++/122789, fortran/122709, - fortran/122977, libstdc++/122661, libstdc++/122726, libstdc++/122743, - libstdc++/122842, libstdc++/122921, lto/122515, middle-end/120052, - middle-end/120564, middle-end/121581, middle-end/122624, - rtl-optimization/122627, target/110796, target/118446, target/119275, - target/121853, target/122175, target/122189, target/122216, - target/122446, target/122539, target/122652, target/122656, - target/122692, target/122695, target/122858, target/122867, - target/122991, tree-optimization/121776, tree-optimization/122126, - tree-optimization/122225, tree-optimization/122943 -- create gnatgcc symlink only when building Ada -- avoid building libssp and disabled libraries -- remove various unpackaged files from the buildroot - -* Tue Nov 11 2025 Jakub Jelinek 15.2.1-4 -- update from releases/gcc-15 branch - - PRs ada/81087, ada/118208, ada/118782, c++/122192, c++/122253, c++/122310, - c++/122381, c++/122421, fortran/107968, fortran/114023, - fortran/122206, fortran/122386, rtl-optimization/122321, - target/99930, target/118460, target/119079, target/120674, - target/121604, target/122097, target/122270, target/122323, - target/122516, target/122527, tree-optimization/122012, - tree-optimization/122394, tree-optimization/122408, - tree-optimization/122505 - - fix ICE while building firefox with LTO+PGO (#2395476, PR lto/122620) - -* Wed Oct 22 2025 Jakub Jelinek 15.2.1-3 -- update from releases/gcc-15 branch - - PRs ada/107536, ada/113536, ada/117517, ada/118343, c/122188, c++/120757, - c++/121981, c++/122302, fortran/108581, fortran/121616, - fortran/121939, go/104290, libstdc++/122062, libstdc++/122322, - middle-end/121922, middle-end/122133, target/110812, target/121599, - target/121652, target/121742, target/121780, target/121781, - target/121845, target/121875, target/122119, target/122177, - target/122187, target/122210, target/122220, target/122222, - target/122223, tree-optimization/121772, tree-optimization/122104, - tree-optimization/122213 -- package libgcobol.spec (#2401679) - -* Wed Sep 24 2025 Jakub Jelinek 15.2.1-2 -- update from releases/gcc-15 branch - - PRs ada/121968, bootstrap/118009, bootstrap/119089, c++/97740, c++/119859, - c++/120499, c++/120620, c++/121351, c++/121396, c++/121524, - c++/121724, c++/121795, c++/121801, c++/121977, c++/122015, - c++/122019, fortran/89092, fortran/121263, libfortran/121234, - libgcc/117600, libstdc++/110853, libstdc++/117276, libstdc++/119861, - libstdc++/120390, libstdc++/120698, libstdc++/121097, - libstdc++/121313, libstdc++/121374, libstdc++/121496, - libstdc++/121745, libstdc++/121827, middle-end/121453, - middle-end/121828, middle-end/121831, rtl-optimization/87600, - rtl-optimization/120718, rtl-optimization/120983, - rtl-optimization/121253, rtl-optimization/121757, target/49857, - target/81540, target/116445, target/118280, target/118885, - target/119830, target/120476, target/120691, target/120986, - target/121007, target/121118, target/121208, target/121294, - target/121414, target/121449, target/121464, target/121510, - target/121534, target/121542, target/121548, target/121602, - target/121608, target/121634, target/121749, target/121794, - target/121906, testsuite/118567, tree-optimization/107997, - tree-optimization/121370, tree-optimization/121527, - tree-optimization/121659, tree-optimization/121844, - tree-optimization/121870, tree-optimization/122016 - -* Fri Aug 8 2025 Jakub Jelinek 15.2.1-1 -- update from releases/gcc-15 branch - - GCC 15.2 release - - PRs ada/120440, ada/121184, c/119950, c/120055, c/120353, c/120354, - c++/95615, c++/108080, c++/109283, c++/115605, c++/115908, c++/116775, - c++/118074, c++/118903, c++/119916, c++/120224, c++/120243, - c++/120273, c++/120412, c++/120453, c++/120495, c++/120577, - c++/120756, c++/120800, c++/120845, c++/121055, c++/121133, - c++/121219, c++/121238, cobol/119231, cobol/119323, cobol/119335, - cobol/119337, cobol/119377, cobol/119524, cobol/119632, cobol/119695, - cobol/119770, cobol/119771, cobol/119772, cobol/119790, cobol/119810, - cobol/119885, cobol/119975, cobol/120251, cobol/120328, cobol/120402, - cobol/120621, cobol/120765, cobol/120772, cobol/120779, cobol/120790, - cobol/120791, cobol/120794, fortran/119106, fortran/121145, - fortran/121203, ipa/114790, libstdc++/119962, libstdc++/121373, - lto/120308, middle-end/119835, middle-end/121095, middle-end/121159, - middle-end/121322, middle-end/121389, rtl-optimization/121340, - target/118891, target/119692, target/119737, target/119853, - target/119854, target/120119, target/120351, target/120427, - target/120530, target/120645, target/120714, target/121027, - target/121028, target/121064, target/121121, target/121274, - target/121277, testsuite/121286, testsuite/121288, - tree-optimization/117423, tree-optimization/118891, - tree-optimization/119085, tree-optimization/121127, - tree-optimization/121130, tree-optimization/121190, - tree-optimization/121202, tree-optimization/121256, - tree-optimization/121264, tree-optimization/121320, - tree-optimization/121323, tree-optimization/121413 - -* Sat Jul 19 2025 Jakub Jelinek 15.1.1-5 -- update from releases/gcc-15 branch - - PRs cobol/119818, middle-end/120935, modula2/121164, testsuite/119508 - -* Fri Jul 18 2025 Jakub Jelinek 15.1.1-4 -- update from releases/gcc-15 branch - - PRs ada/121056, c++/87097, c++/120569, c++/120628, c++/120954, - fortran/104428, fortran/120637, fortran/120843, fortran/120847, - fortran/121060, ipa/121023, libstdc++/118681, libstdc++/119754, - libstdc++/120997, middle-end/120709, modula2/117203, modula2/119650, - modula2/120253, modula2/120389, modula2/120474, modula2/120497, - modula2/120542, modula2/120606, modula2/120673, modula2/120731, - modula2/120912, rtl-optimization/120242, rtl-optimization/120627, - rtl-optimization/120736, rtl-optimization/120813, target/118241, - target/120356, target/120807, target/120908, target/120995, - target/120999, tree-optimization/118669, tree-optimization/120358, - tree-optimization/120780, tree-optimization/120817, - tree-optimization/120924, tree-optimization/120944, - tree-optimization/121035, tree-optimization/121049, - tree-optimization/121059, tree-optimization/121131 - -* Mon Jul 7 2025 Jakub Jelinek 15.1.1-3 -- update from releases/gcc-15 branch - - PRs ada/120665, ada/120705, ada/120854, c/120180, c++/116064, c++/120123, - c++/120363, c++/120413, c++/120414, c++/120471, c++/120502, - c++/120555, c++/120575, c++/120684, c++/120940, fortran/51961, - fortran/85750, fortran/99838, fortran/101735, fortran/102599, - fortran/114022, fortran/119856, fortran/119948, fortran/120193, - fortran/120355, fortran/120483, fortran/120711, fortran/120784, - ipa/120295, libfortran/119856, libstdc++/99832, libstdc++/120367, - libstdc++/120432, libstdc++/120465, libstdc++/120548, - libstdc++/120625, libstdc++/120648, libstdc++/120650, - libstdc++/120931, libstdc++/120934, middle-end/118694, - middle-end/120369, middle-end/120547, middle-end/120608, - middle-end/120631, rtl-optimization/116389, rtl-optimization/120050, - rtl-optimization/120182, rtl-optimization/120347, - rtl-optimization/120423, rtl-optimization/120550, - rtl-optimization/120795, target/86772, target/119971, target/120042, - target/120441, target/120442, target/120480, target/120624, - testsuite/52641, testsuite/120082, testsuite/120919, - tree-optimization/116352, tree-optimization/119960, - tree-optimization/120003, tree-optimization/120341, - tree-optimization/120357, tree-optimization/120638, - tree-optimization/120654, tree-optimization/120677, - tree-optimization/120729, tree-optimization/120927 -- fix up FE lowering of pointer arith (PR c/120837) -- perform %%check with -foffload=disable flag - -* Wed May 21 2025 Jakub Jelinek 15.1.1-2 -- update from releases/gcc-15 branch - - PRs ada/112958, ada/120104, c/120057, c++/119863, c++/119864, c++/119938, - c++/119939, c++/119981, c++/119996, c++/120012, c++/120013, - c++/120023, c++/120125, c++/120161, c++/120350, fortran/102891, - fortran/102900, fortran/119928, fortran/119986, fortran/120049, - fortran/120107, fortran/120139, fortran/120163, fortran/120179, - fortran/120191, ipa/119852, ipa/119973, ipa/120006, ipa/120146, - libfortran/120152, libfortran/120153, libfortran/120158, - libfortran/120196, libstdc++/118260, libstdc++/119427, - libstdc++/119714, libstdc++/120029, libstdc++/120114, - libstdc++/120159, libstdc++/120187, libstdc++/120190, - libstdc++/120198, libstdc++/120293, modula2/115276, modula2/119914, - modula2/119915, modula2/120117, modula2/120188, preprocessor/116047, - preprocessor/120061, target/119610, testsuite/119909, - tree-optimization/111873, tree-optimization/119712, - tree-optimization/120043, tree-optimization/120048, - tree-optimization/120074, tree-optimization/120089, - tree-optimization/120143, tree-optimization/120211 - -* Fri Apr 25 2025 Jakub Jelinek 15.1.1-1 -- update from releases/gcc-15 branch - - GCC 15.1 release - - PRs fortran/119836, target/119327, target/119873, tree-optimization/118407 - -* Fri Apr 18 2025 Jakub Jelinek 15.0.1-0.14 -- update from releases/gcc-14 branch - - GCC 15.1.0-rc1 - - PRs tree-optimization/119858 - -* Thu Apr 17 2025 Jakub Jelinek 15.0.1-0.13 -- update from trunk and releases/gcc-14 branch - - PRs ada/119643, c/88382, c/119717, c++/99214, c++/101180, c++/106618, - c++/111075, c++/112288, c++/113360, c++/113835, c++/114772, - c++/114970, c++/115639, c++/116416, c++/116954, c++/119175, - c++/119345, c++/119687, c++/119692, c++/119755, c++/119807, - cobol/119217, cobol/119302, cobol/119694, cobol/119759, cobol/119776, - cobol/119777, d/109023, d/119758, d/119761, d/119799, d/119817, - d/119826, driver/90465, driver/119727, fortran/106948, fortran/119669, - ipa/113203, ipa/119318, ipa/119803, libfortran/119502, libgcc/101075, - libgcc/119796, libgomp/119849, libstdc++/21334, libstdc++/119725, - libstdc++/119748, libstdc++/119840, lto/119792, middle-end/14708, - middle-end/105548, middle-end/119706, middle-end/119808, - modula2/119735, modula2/119779, rtl-optimization/118502, - rtl-optimization/119785, rust/119341, rust/119342, sanitizer/119801, - target/42683, target/97106, target/97585, target/106445, - target/108134, target/113633, target/116827, target/118794, - target/119298, target/119386, target/119533, target/119547, - target/119673, target/119784, target/119834, testsuite/117706, - translation/119684, tree-optimization/71094, tree-optimization/87909, - tree-optimization/112822, tree-optimization/116093, - tree-optimization/118476, tree-optimization/119351, - tree-optimization/119399, tree-optimization/119706, - tree-optimization/119707, tree-optimization/119718, - tree-optimization/119722, tree-optimization/119757, - tree-optimization/119778 - -* Thu Apr 10 2025 Jakub Jelinek 15.0.1-0.12 -- update from trunk - - PRs ada/119571, analyzer/113253, bootstrap/119680, c/78008, c/81831, - c/101440, c/114957, c/117689, c/118118, c/119173, c/119582, c/119612, - c++/60972, c++/64500, c++/90468, c++/99546, c++/106976, c++/109961, - c++/113925, c++/116285, c++/116960, c++/117336, c++/117530, - c++/117849, c++/118249, c++/118626, c++/118629, c++/118698, - c++/118982, c++/119303, c++/119383, c++/119387, c++/119401, - c++/119462, c++/119518, c++/119551, c++/119563, c++/119564, - c++/119574, c++/119608, c++/119652, cobol/119283, cobol/119295, - cobol/119364, cobol/119414, cobol/119521, cobol/119682, d/117002, - d/117832, d/118309, driver/58973, fortran/101602, fortran/119460, - fortran/119656, gcov-profile/119535, gcov-profile/119553, - gcov-profile/119618, ipa/119599, libfortran/119460, libstdc++/109162, - libstdc++/110498, libstdc++/114758, libstdc++/114945, - libstdc++/115046, libstdc++/119517, libstdc++/119545, - libstdc++/119550, libstdc++/119593, libstdc++/119620, - libstdc++/119642, libstdc++/119671, middle-end/78874, - middle-end/101018, middle-end/112589, middle-end/116595, - middle-end/118965, middle-end/119442, middle-end/119482, - middle-end/119537, middle-end/119541, middle-end/119559, - middle-end/119613, middle-end/119662, preprocessor/118674, - preprocessor/119391, rtl-optimization/119291, rtl-optimization/119594, - rtl-optimization/119672, rtl-optimization/119689, target/117759, - target/119308, target/119369, target/119473, target/119539, - target/119549, target/119556, target/119572, target/119573, - target/119645, target/119664, target/119678, testsuite/116398, - testsuite/118597, tree-optimization/80331, tree-optimization/87502, - tree-optimization/103827, tree-optimization/113281, - tree-optimization/118924, tree-optimization/119491, - tree-optimization/119493, tree-optimization/119532, - tree-optimization/119534, tree-optimization/119586, - tree-optimization/119614, tree-optimization/119616, - tree-optimization/119640, web/119227 - - fix up LTO opts handling (##2356219, PR lto/119625) - -* Sat Mar 29 2025 Jakub Jelinek 15.0.1-0.11 -- update from trunk - - PRs ada/119265, ada/119440, analyzer/119278, bootstrap/119513, c/116545, - c/118061, c/118765, c/119311, c/119350, c/119366, c++/101881, - c++/114525, c++/114992, c++/118104, c++/118920, c++/118961, - c++/119194, c++/119233, c++/119316, c++/119344, c++/119370, - c++/119378, c++/119379, cobol/119213, cobol/119214, cobol/119241, - cobol/119242, cobol/119244, cobol/119290, cobol/119301, cobol/119390, - d/117621, d/118545, debug/101533, driver/101544, fortran/60560, - fortran/85836, fortran/116706, fortran/118796, fortran/119272, - fortran/119338, fortran/119349, fortran/119380, fortran/119403, - fortran/119406, fortran/119419, gcov-profile/118442, ipa/98265, - ipa/116572, ipa/119147, ipa/119376, ipa/119484, libfortran/85836, - libgomp/96835, libitm/88319, libstdc++/101527, libstdc++/101587, - libstdc++/108487, libstdc++/111055, libstdc++/111138, - libstdc++/116440, libstdc++/117214, libstdc++/117983, - libstdc++/118699, libstdc++/119135, libstdc++/119282, - libstdc++/119358, libstdc++/119415, libstdc++/119429, - libstdc++/119469, libstdc++/119488, middle-end/93437, - middle-end/112938, middle-end/113546, middle-end/117811, - middle-end/118627, middle-end/118795, middle-end/119325, - modula2/115111, modula2/118045, modula2/118600, modula2/119449, - modula2/119504, other/42270, other/119218, other/119250, other/119510, - preprocessor/108900, rtl-optimization/118615, rtl-optimization/118914, - rtl-optimization/119285, rtl-optimization/119307, rust/119333, - target/55583, target/91614, target/92713, target/96226, target/98743, - target/101544, target/112980, target/117069, target/117092, - target/117452, target/118068, target/119010, target/119114, - target/119120, target/119172, target/119224, target/119235, - target/119270, target/119286, target/119355, target/119357, - target/119408, target/119421, target/119425, target/119428, - target/119450, target/119465, testsuite/113634, testsuite/113965, - testsuite/116163, testsuite/119220, testsuite/119382, - testsuite/119489, tree-optimization/37143, tree-optimization/105820, - tree-optimization/118616, tree-optimization/119155, - tree-optimization/119274, tree-optimization/119287, - tree-optimization/119389, tree-optimization/119417, - tree-optimization/119483 -- package gcc-gcobol on x86_64 and aarch64 so far -- turn unversioned obsoletes into versioned ones - -* Thu Mar 13 2025 Jakub Jelinek 15.0.1-0.10 -- update from trunk - - PRs analyzer/117262, c/60440, c/67301, c/112960, c/113515, c/117029, - c/117178, c/118579, c/119183, c++/98533, c++/100589, c++/109431, - c++/110584, c++/114795, c++/115580, c++/116740, c++/117364, - c++/117504, c++/117512, c++/118775, c++/118787, c++/118799, - c++/118874, c++/119073, c++/119076, c++/119102, c++/119123, - c++/119134, c++/119138, c++/119150, c++/119154, c++/119162, - cobol/119216, cobol/119229, d/119139, debug/119190, fortran/47928, - fortran/77872, fortran/98903, fortran/101577, fortran/103391, - fortran/104684, fortran/104826, fortran/107143, fortran/118747, - fortran/119049, fortran/119054, fortran/119074, fortran/119078, - fortran/119118, fortran/119157, fortran/119199, ipa/118318, - ipa/118785, ipa/119067, libgcc/119151, libstdc++/108053, - libstdc++/113310, libstdc++/115215, libstdc++/115218, - libstdc++/119081, libstdc++/119110, libstdc++/119121, - libstdc++/119144, lto/114501, middle-end/97323, middle-end/118457, - middle-end/118801, middle-end/119119, middle-end/119204, - middle-end/119219, middle-end/119226, modula2/118998, modula2/119088, - modula2/119192, other/38768, other/119052, preprocessor/119202, - rtl-optimization/114492, rtl-optimization/116564, - rtl-optimization/117477, rtl-optimization/118739, - rtl-optimization/119046, rtl-optimization/119071, - rtl-optimization/119099, sanitizer/56682, target/114222, - target/114991, target/115258, target/115439, target/115485, - target/115835, target/116708, target/116901, target/117931, - target/117955, target/118351, target/118892, target/118906, - target/118934, target/118942, target/118956, target/119084, - target/119115, target/119127, target/119131, target/119133, - target/119171, target/119238, testsuite/115248, - tree-optimization/116125, tree-optimization/116901, - tree-optimization/117919, tree-optimization/118922, - tree-optimization/118976, tree-optimization/119057, - tree-optimization/119096, tree-optimization/119145, - tree-optimization/119166 -- use %%autopatch in the spec file - -* Sat Mar 1 2025 Jakub Jelinek 15.0.1-0.9 -- update from trunk - - PRs c/114870, c/119001, c++/110822, c++/114913, c++/118516, c++/118928, - c++/118986, c++/119038, c++/119045, d/116961, d/118654, - fortran/108233, fortran/108369, fortran/118730, fortran/118789, - ipa/111245, ipa/118243, jit/117047, libstdc++/93059, libstdc++/104606, - libstdc++/105609, libstdc++/106612, libstdc++/112490, - libstdc++/112803, libstdc++/118083, lto/91299, middle-end/66279, - middle-end/115871, middle-end/118819, middle-end/118860, - middle-end/119021, rtl-optimization/116336, rtl-optimization/117712, - rtl-optimization/119002, target/107635, target/109189, target/115458, - target/118931, target/118940, testsuite/115028, testsuite/116143, - translation/118991, tree-optimization/87984, tree-optimization/116855, - tree-optimization/118464, tree-optimization/119030 -- fix ranger related miscompilation (PR tree-optimization/118953) -- fix miscompilation of floating point comparisons if NaNs can appear - (#2346233, PR rtl-optimization/119002) -- fix ICF related miscompilation (PR ipa/119006) - -* Tue Feb 25 2025 Jakub Jelinek 15.0.1-0.8 -- update from trunk - - PRs analyzer/118300, c/117023, c/119000, c++/66519, c++/66878, c++/70037, - c++/70536, c++/82794, c++/82936, c++/83144, c++/86769, c++/86933, - c++/94100, c++/96364, c++/101740, c++/102455, c++/107637, c++/110345, - c++/113800, c++/115586, c++/116379, c++/117106, c++/117324, - c++/118053, c++/118190, c++/118282, c++/118304, c++/118306, - c++/118319, c++/118574, c++/118661, c++/118763, c++/118773, - c++/118807, c++/118822, c++/118833, c++/118846, c++/118849, - c++/118856, c++/118876, c++/118923, c++/118981, c++/188574, d/111628, - debug/118790, driver/117739, fortran/24878, fortran/47485, - fortran/48958, fortran/56423, fortran/59252, fortran/107635, - fortran/115271, fortran/116829, fortran/117430, fortran/118080, - fortran/118159, fortran/118740, fortran/118745, fortran/118750, - fortran/118845, fortran/118862, go/118746, ipa/118097, jit/118780, - libfortran/114618, libstdc++/100612, libstdc++/111050, - libstdc++/115209, libstdc++/118160, libstdc++/118559, - libstdc++/118701, libstdc++/118811, libstdc++/118855, - libstdc++/118865, lto/118125, middle-end/107067, middle-end/113525, - middle-end/116351, middle-end/117263, middle-end/118288, - middle-end/118950, middle-end/118993, modula2/115112, modula2/118761, - modula2/118978, other/116613, other/118919, rtl-optimization/102150, - rtl-optimization/108840, rtl-optimization/115568, - rtl-optimization/115932, rtl-optimization/116028, - rtl-optimization/116244, rtl-optimization/117081, - rtl-optimization/117082, rtl-optimization/117239, - rtl-optimization/117506, rtl-optimization/117922, - rtl-optimization/118497, sarif-replay/118792, sarif-replay/118881, - target/69374, target/86660, target/94282, target/109093, - target/109780, target/113331, target/114516, target/114522, - target/115123, target/115478, target/115703, target/117674, - target/117991, target/118089, target/118146, target/118248, - target/118540, target/118561, target/118601, target/118623, - target/118685, target/118764, target/118768, target/118771, - target/118772, target/118776, target/118806, target/118813, - target/118815, target/118825, target/118828, target/118832, - target/118835, target/118843, target/118844, target/118872, - target/118878, target/118936, testsuite/116604, testsuite/116986, - testsuite/118754, tree-optimization/82142, tree-optimization/86270, - tree-optimization/90579, tree-optimization/98028, - tree-optimization/98845, tree-optimization/108357, - tree-optimization/110449, tree-optimization/115538, - tree-optimization/117790, tree-optimization/118521, - tree-optimization/118706, tree-optimization/118727, - tree-optimization/118749, tree-optimization/118756, - tree-optimization/118805, tree-optimization/118817, - tree-optimization/118852, tree-optimization/118895, - tree-optimization/118915, tree-optimization/118954, - tree-optimization/118973 -- drop on riscv riscv_cmo.h header from file list, add sifive_vector.h - -* Tue Feb 4 2025 Jakub Jelinek 15.0.1-0.7 -- update from trunk - - PRs ada/118712, ada/118731, c/118742, c++/79786, c++/98893, c++/108205, - c++/109918, c++/114619, c++/116506, c++/116880, c++/116914, - c++/117114, c++/117778, c++/118265, c++/118470, c++/118491, - c++/118718, c++/118719, fortran/93289, lto/113207, middle-end/115913, - middle-end/116926, modula2/117411, modula2/118703, - rtl-optimization/111673, rtl-optimization/117248, - rtl-optimization/117611, target/116010, target/118713, - testsuite/116845, tree-optimization/117113, tree-optimization/118717 - -* Sat Feb 1 2025 Jakub Jelinek 15.0.1-0.6 -- update from trunk - - PRs c++/117501, c++/117516, debug/100530, fortran/108454, fortran/118714, - ipa/117432, libstdc++/118156, middle-end/117498, modula2/115032, - rtl-optimization/116234, target/113689, target/115673, - tree-optimization/114277 -- use rpm.execute instead of posix.fork, posix.exec and posix.wait in libgcc - scriptlets; guard them on ldconfig macro existence and use that macro instead - of explicit /sbin/ldconfig (#2291927) - -* Thu Jan 30 2025 Jakub Jelinek 15.0.1-0.5 -- update from trunk - - PRs c/116357, c++/57533, c++/114292, c++/116524, c++/117855, c++/118239, - c++/118285, c++/118632, c++/118655, c++/118673, d/118477, - fortran/58857, fortran/110993, fortran/118640, fortran/118683, - libstdc++/98749, libstdc++/118413, libstdc++/118563, - middle-end/118643, middle-end/118684, middle-end/118692, - middle-end/118695, modula2/116073, modula2/117737, modula2/118183, - other/118675, preprocessor/118168, rtl-optimization/118320, - rtl-optimization/118429, rtl-optimization/118638, - rtl-optimization/118662, target/114085, target/116860, target/117173, - target/117688, target/118103, target/118490, target/118642, - target/118646, target/118663, target/118696, testsuite/118127, - tree-optimization/112859, tree-optimization/114052, - tree-optimization/115347, tree-optimization/117270, - tree-optimization/117424, tree-optimization/117892, - tree-optimization/118505, tree-optimization/118637, - tree-optimization/118653 -- fix up C++ list conversion for #embed or large series of comma - separated small constants (PR c++/118671) -- punt in niters clz/ctz creation if internal function can't be used - and frontend didn't build __builtin_c{l,t}z{,l,ll} builtins - (PR tree-optimization/118689) - -* Sat Jan 25 2025 Jakub Jelinek 15.0.1-0.4 -- update from trunk - - PRs c/118639, c++/105440, c++/107522, c++/107741, c++/115769, c++/116417, - c++/116568, c++/116756, c++/117153, c++/117397, c++/117602, - c++/117775, c++/117827, c++/118047, c++/118049, c++/118101, - c++/118124, c++/118139, c++/118147, c++/118199, c++/118214, - c++/118225, c++/118245, c++/118255, c++/118278, c++/118355, - c++/118390, c++/118396, c++/118454, c++/118486, c++/118509, - c++/118513, c++/118523, c++/118525, c++/118528, c++/118532, - c++/118534, c++/118582, c++/118590, c++/118604, d/114434, d/115249, - d/116373, d/117115, d/118438, d/118448, d/118449, d/118584, - fortran/71884, fortran/81978, fortran/96087, fortran/107122, - fortran/118321, fortran/118359, fortran/118441, fortran/118613, - gcov-profile/116743, ipa/116068, ipa/118400, jit/117886, - libfortran/118406, libfortran/118536, libfortran/118571, - libstdc++/99995, libstdc++/100249, libstdc++/109849, libstdc++/118158, - libstdc++/118185, lto/118238, middle-end/112779, middle-end/113904, - middle-end/114596, middle-end/114877, middle-end/118140, - middle-end/118273, middle-end/118472, modula2/118010, modula2/118589, - objc++/118586, rtl-optimization/109592, rtl-optimization/113994, - rtl-optimization/117868, rtl-optimization/118067, - rtl-optimization/118562, rtl-optimization/118591, - rtl-optimization/1180167, sarif-replay/117670, target/80813, - target/110901, target/113257, target/113560, target/114442, - target/116256, target/116308, target/116593, target/117079, - target/117726, target/118154, target/118170, target/118182, - target/118270, target/118329, target/118357, target/118489, - target/118497, target/118501, target/118510, target/118511, - target/118512, target/118531, target/118560, target/118609, - testsuite/116448, testsuite/117958, testsuite/118451, - tree-optimization/92539, tree-optimization/102705, - tree-optimization/115494, tree-optimization/115777, - tree-optimization/115895, tree-optimization/116010, - tree-optimization/117668, tree-optimization/117875, - tree-optimization/118012, tree-optimization/118077, - tree-optimization/118224, tree-optimization/118348, - tree-optimization/118360, tree-optimization/118384, - tree-optimization/118430, tree-optimization/118456, - tree-optimization/118483, tree-optimization/118487, - tree-optimization/118514, tree-optimization/118522, - tree-optimization/118529, tree-optimization/118552, - tree-optimization/118558, tree-optimization/118569, - tree-optimization/118572, tree-optimization/118605, - tree-optimization/118628, tree-optimization/118634 -- fix libstdc++.modules.json content after relocation - -* Tue Jan 14 2025 Jakub Jelinek 15.0.1-0.3 -- temporary fix for coroutine range for handling (PR c++/117231) - -* Tue Jan 14 2025 Jakub Jelinek 15.0.1-0.2 -- update from trunk - - PRs ada/118459, c/116871, c++/118445, modula2/116557, target/116030, - target/117682, tree-optimization/118405 - -* Mon Jan 13 2025 Jakub Jelinek 15.0.1-0.1 -- update from trunk - - PRs c/118112, c++/114630, d/117701, fortran/115788, fortran/118432, - lto/118181, middle-end/64242, middle-end/118303, middle-end/118411, - middle-end/118415, modula2/118453, rtl-optimization/107455, - target/115910, target/115921, target/118418, tree-optimization/117119, - tree-optimization/117997, tree-optimization/118409 - -* Sat Jan 11 2025 Jakub Jelinek 15.0.0-0.4 -- update from trunk - - PRs ada/18765, ada/118274, c/116060, c/117866, c/118376, c++/117792, - c++/117887, c++/117925, c++/117937, c++/117993, c++/118060, - c++/118277, c++/118387, c++/118391, fortran/108434, fortran/118337, - ipa/118138, rtl-optimization/117186, rtl-optimization/117467, - rtl-optimization/117934, rtl-optimization/118266, target/65181, - target/118017, target/118131, target/118188, target/118332, - target/118362, testsuite/118025, tree-optimization/88575, - tree-optimization/116126, tree-optimization/117927, - tree-optimization/118206, tree-optimization/118211, - tree-optimization/118344 - -* Thu Jan 9 2025 Jakub Jelinek 15.0.0-0.3 +* Thu Dec 18 2025 Jakub Jelinek 16.0.0-0.2 - new package diff --git a/gcc15-libgomp-strchr.patch b/gcc15-libgomp-strchr.patch deleted file mode 100644 index 802f142..0000000 --- a/gcc15-libgomp-strchr.patch +++ /dev/null @@ -1,15 +0,0 @@ -2025-11-22 Frank Scheiner - - * affinity-fmt.c: Make char *q a pointer to a const char. - ---- libgomp/affinity-fmt.c.jj -+++ libgomp/affinity-fmt.c -@@ -327,7 +327,7 @@ gomp_display_affinity (char *buffer, size_t size, - } - if (c == '{') - { -- char *q = strchr (p + 1, '}'); -+ const char *q = strchr (p + 1, '}'); - if (q) - gomp_fatal ("unsupported long type name '%.*s' in affinity " - "format", (int) (q - (p + 1)), p + 1); diff --git a/gcc15-Wno-format-security.patch b/gcc16-Wno-format-security.patch similarity index 89% rename from gcc15-Wno-format-security.patch rename to gcc16-Wno-format-security.patch index 66f62b8..9f4a8f9 100644 --- a/gcc15-Wno-format-security.patch +++ b/gcc16-Wno-format-security.patch @@ -32,14 +32,16 @@ fi --- Makefile.tpl.jj 2023-11-29 13:21:41.680292662 +0100 +++ Makefile.tpl 2024-11-30 13:35:29.303196246 +0100 -@@ -450,9 +450,9 @@ LDFLAGS = @LDFLAGS@ +@@ -450,10 +450,10 @@ LDFLAGS = @LDFLAGS@ LIBCFLAGS = $(CFLAGS) CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates -GOCFLAGS = $(CFLAGS) +-GA68FLAGS = @GA68FLAGS@ -GDCFLAGS = @GDCFLAGS@ -GM2FLAGS = $(CFLAGS) +GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) ++GA68FLAGS = $(filter-out -Wformat-security,@GA68FLAGS@) +GDCFLAGS = $(filter-out -Wformat-security,@GDCFLAGS@) +GM2FLAGS = $(filter-out -Wformat-security,$(CFLAGS)) @@ -47,14 +49,16 @@ --- Makefile.in.jj 2023-11-29 13:21:41.691292507 +0100 +++ Makefile.in 2024-11-30 13:36:12.113594079 +0100 -@@ -447,9 +447,9 @@ LDFLAGS = @LDFLAGS@ +@@ -447,10 +447,10 @@ LDFLAGS = @LDFLAGS@ LIBCFLAGS = $(CFLAGS) CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates -GOCFLAGS = $(CFLAGS) +-GA68FLAGS = @GA68FLAGS@ -GDCFLAGS = @GDCFLAGS@ -GM2FLAGS = $(CFLAGS) +GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) ++GA68FLAGS = $(filter-out -Wformat-security,@GA68FLAGS@) +GDCFLAGS = $(filter-out -Wformat-security,@GDCFLAGS@) +GM2FLAGS = $(filter-out -Wformat-security,$(CFLAGS)) diff --git a/gcc15-d-shared-libphobos.patch b/gcc16-d-shared-libphobos.patch similarity index 100% rename from gcc15-d-shared-libphobos.patch rename to gcc16-d-shared-libphobos.patch diff --git a/gcc15-fortran-fdec-duplicates.patch b/gcc16-fortran-fdec-duplicates.patch similarity index 100% rename from gcc15-fortran-fdec-duplicates.patch rename to gcc16-fortran-fdec-duplicates.patch diff --git a/gcc15-hack.patch b/gcc16-hack.patch similarity index 100% rename from gcc15-hack.patch rename to gcc16-hack.patch diff --git a/gcc15-isl-dl.patch b/gcc16-isl-dl.patch similarity index 100% rename from gcc15-isl-dl.patch rename to gcc16-isl-dl.patch diff --git a/gcc15-isl-dl2.patch b/gcc16-isl-dl2.patch similarity index 100% rename from gcc15-isl-dl2.patch rename to gcc16-isl-dl2.patch diff --git a/gcc16-libgomp-build.patch b/gcc16-libgomp-build.patch new file mode 100644 index 0000000..d814d18 --- /dev/null +++ b/gcc16-libgomp-build.patch @@ -0,0 +1,17 @@ +2025-12-15 Jakub Jelinek + + * plugin/build-target-indirect-htab.h (create_target_indirect_map): + Use (void) htab_find instead of assert (htab_find) to silence + -Werror=unused-function because the latter triggers -Werror=address. + +--- libgomp/plugin/build-target-indirect-htab.h.jj 2025-09-17 09:03:28.934357899 +0200 ++++ libgomp/plugin/build-target-indirect-htab.h 2025-12-15 16:11:51.894866968 +0100 +@@ -65,7 +65,7 @@ void* + create_target_indirect_map (size_t *h_size, size_t count, + uint64_t *host_addrs, uint64_t *device_addrs) + { +- assert (htab_find); /* Silence -Werror=unused-function. */ ++ (void) htab_find; /* Silence -Werror=unused-function. */ + + htab_t indirect_htab = htab_create (count); + diff --git a/gcc15-libgomp-omp_h-multilib.patch b/gcc16-libgomp-omp_h-multilib.patch similarity index 100% rename from gcc15-libgomp-omp_h-multilib.patch rename to gcc16-libgomp-omp_h-multilib.patch diff --git a/gcc15-libstdc++-docs.patch b/gcc16-libstdc++-docs.patch similarity index 96% rename from gcc15-libstdc++-docs.patch rename to gcc16-libstdc++-docs.patch index f9f33a7..f1fa736 100644 --- a/gcc15-libstdc++-docs.patch +++ b/gcc16-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 15.2.1 ++ Release 16.0.0 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 15.2.1 release, ++ for the 16.0.0 release, + online for each GCC release and diff --git a/gcc15-libtool-no-rpath.patch b/gcc16-libtool-no-rpath.patch similarity index 100% rename from gcc15-libtool-no-rpath.patch rename to gcc16-libtool-no-rpath.patch diff --git a/gcc15-no-add-needed.patch b/gcc16-no-add-needed.patch similarity index 96% rename from gcc15-no-add-needed.patch rename to gcc16-no-add-needed.patch index 5817299..74f5c1f 100644 --- a/gcc15-no-add-needed.patch +++ b/gcc16-no-add-needed.patch @@ -34,4 +34,4 @@ +#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} " #endif - #define GNU_USER_TARGET_LINK_GCC_C_SEQUENCE_SPEC \ + diff --git a/gcc15-pr119006.patch b/gcc16-pr119006.patch similarity index 100% rename from gcc15-pr119006.patch rename to gcc16-pr119006.patch diff --git a/gcc16-pr123114.patch b/gcc16-pr123114.patch new file mode 100644 index 0000000..1e8eb9c --- /dev/null +++ b/gcc16-pr123114.patch @@ -0,0 +1,46 @@ +2025-12-13 Jakub Jelinek + + PR rtl-optimization/123114 + * simplify-rtx.cc (simplify_context::simplify_relational_operation): + Verify XEXP (XEXP (op0, 0), 0) mode and use CONST0_RTX (cmp_mode) + instead of CONST0_RTX (mode). + + * gcc.dg/pr123114.c: New test. + +--- gcc/simplify-rtx.cc.jj 2025-12-09 10:18:55.437229339 +0100 ++++ gcc/simplify-rtx.cc 2025-12-13 23:04:14.672186706 +0100 +@@ -6509,8 +6509,9 @@ simplify_context::simplify_relational_op + /* only enters if op1 is 0 */ + /* Verify IOR operand is NE */ + && GET_CODE (XEXP (op0, 0)) == NE ++ && GET_MODE (XEXP (XEXP (op0, 0), 0)) == cmp_mode + /* Verify second NE operand is 0 */ +- && XEXP (XEXP (op0, 0), 1) == CONST0_RTX (mode)) ++ && XEXP (XEXP (op0, 0), 1) == CONST0_RTX (cmp_mode)) + { + rtx t = gen_rtx_IOR (cmp_mode, XEXP (XEXP (op0, 0), 0), XEXP (op0, 1)); + t = gen_rtx_fmt_ee (code, mode, t, CONST0_RTX (mode)); +--- gcc/testsuite/gcc.dg/pr123114.c.jj 2025-12-13 23:13:53.528178273 +0100 ++++ gcc/testsuite/gcc.dg/pr123114.c 2025-12-13 23:13:25.964657498 +0100 +@@ -0,0 +1,21 @@ ++/* PR rtl-optimization/123114 */ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -fno-tree-vrp" } */ ++ ++volatile int a, b, g; ++unsigned short e; ++int f; ++ ++int ++main () ++{ ++ int c, d; ++ while (a) ++ { ++ c = e = b << 2; ++ d = f; ++ g = (c <= 0 && d) || c ? 0 : d; ++ a = g; ++ } ++ return 0; ++} diff --git a/gcc16-pr123115.patch b/gcc16-pr123115.patch new file mode 100644 index 0000000..2a75016 --- /dev/null +++ b/gcc16-pr123115.patch @@ -0,0 +1,17 @@ +2025-12-15 Jakub Jelinek + + PR middle-end/123115 + * defaults.h (EH_RETURN_DATA_REGNO): Add void (N) to the macro + definition inside of a comma expression before INVALID_REGNUM. + +--- gcc/defaults.h.jj 2025-08-05 08:19:26.667814010 +0200 ++++ gcc/defaults.h 2025-12-15 11:33:16.656762266 +0100 +@@ -390,7 +390,7 @@ see the files COPYING3 and COPYING.RUNTI + /* Provide defaults for stuff that may not be defined when using + sjlj exceptions. */ + #ifndef EH_RETURN_DATA_REGNO +-#define EH_RETURN_DATA_REGNO(N) INVALID_REGNUM ++#define EH_RETURN_DATA_REGNO(N) (void (N), INVALID_REGNUM) + #endif + + /* Offset between the eh handler address and entry in eh tables. */ diff --git a/gcc16-pr123152.patch b/gcc16-pr123152.patch new file mode 100644 index 0000000..a19ca73 --- /dev/null +++ b/gcc16-pr123152.patch @@ -0,0 +1,157 @@ +The `recompute_dominator' function used in the code fragment within +this patch assumes correctness in the rest of the CFG. Consequently, +it is wrong to rely upon it before the subsequent updates are made in +the "Update dominators for multiple exits" loop in the function. + +Furthermore, if `loop_exit' == `scalar_exit', the "Update dominators for +multiple exits" logic will already take care of updating the +dominator for `scalar_exit->dest', such that the moved statement is +unnecessary. + +2025-12-18 Victor Do Nascimento + + PR tree-optimization/123152 + * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg): + Correct order of dominator update. + + * gcc.dg/vect/vect-uncounted-prolog-peel_2.c: New. + * gcc.dg/vect/vect-uncounted-prolog-peel_3.c: Likewise. + * g++.dg/vect/vect-uncounted-prolog-peel_1.cc: Likewise. + +--- gcc/tree-vect-loop-manip.cc.jj ++++ gcc/tree-vect-loop-manip.cc +@@ -1989,11 +1989,6 @@ slpeel_tree_duplicate_loop_to_edge_cfg (class loop *loop, edge loop_exit, + flush_pending_stmts (new_exit); + set_immediate_dominator (CDI_DOMINATORS, preheader, new_exit->src); + +- if (create_main_e) +- set_immediate_dominator (CDI_DOMINATORS, scalar_exit->dest, +- recompute_dominator (CDI_DOMINATORS, +- scalar_exit->dest)); +- + /* And remove the non-necessary forwarder again. Keep the other + one so we have a proper pre-header for the loop at the exit edge. */ + redirect_edge_pred (single_succ_edge (new_preheader), +@@ -2024,6 +2019,11 @@ slpeel_tree_duplicate_loop_to_edge_cfg (class loop *loop, edge loop_exit, + } + } + } ++ ++ if (create_main_e && loop_exit != scalar_exit) ++ set_immediate_dominator (CDI_DOMINATORS, scalar_exit->dest, ++ recompute_dominator (CDI_DOMINATORS, ++ scalar_exit->dest)); + } + + free (new_bbs); +--- gcc/testsuite/g++.dg/vect/vect-uncounted-prolog-peel_1.cc.jj ++++ gcc/testsuite/g++.dg/vect/vect-uncounted-prolog-peel_1.cc +@@ -0,0 +1,51 @@ ++/* { dg-add-options vect_early_break } */ ++/* { dg-do compile } */ ++/* { dg-require-effective-target vect_early_break } */ ++/* { dg-require-effective-target vect_int } */ ++/* { dg-additional-options "-w" } */ ++ ++namespace a { ++class b { ++public: ++ b d(long); ++}; ++class e : public b {}; ++typedef short f; ++typedef struct g *h; ++typedef struct g { ++ f c; ++ e *fp; ++ f j, *k, *l; ++} m; ++static h n(m *, unsigned, unsigned *); ++f o(m *, unsigned); ++void p(short *t) { ++ m *ffile; ++ int q; ++ unsigned r; ++ int i; ++ q = t[i]; ++ n(ffile, q, &r); ++} ++h n(m *ffile, unsigned q, unsigned *) { ++ h glyph; ++ for (; glyph;) ++ if (glyph->c) ++ o(ffile, q); ++ int i; ++s: ++ for (i = 0; ffile->j; i++) ++ if (ffile->k[i]) { ++ if (q) ++ ffile->fp->d(ffile->l[i]); ++ break; ++ } ++ if (q < 6) { ++ q += 61440; ++ goto s; ++ } ++} ++} // namespace a ++ ++/* { dg-final { scan-tree-dump {note:\s*Alignment of access forced using peeling.} "vect" } } */ ++/* { dg-final { scan-tree-dump {vectorized 1 loops in function} "vect" } } */ +--- gcc/testsuite/gcc.dg/vect/vect-uncounted-prolog-peel_2.c.jj ++++ gcc/testsuite/gcc.dg/vect/vect-uncounted-prolog-peel_2.c +@@ -0,0 +1,25 @@ ++/* { dg-add-options vect_early_break } */ ++/* { dg-do compile } */ ++/* { dg-require-effective-target vect_early_break } */ ++/* { dg-require-effective-target vect_int } */ ++ ++char b; ++int c(char *d) { ++ int *a = 0; ++ while (*d) { ++ while (*a) ++ if (*a++ == 1) ++ return 1; ++ d++; ++ } ++} ++void e() { ++ c(&b); ++ char *f = &b; ++ while (f[0]) ++ ++b; ++} ++ ++/* { dg-final { scan-tree-dump {note:\s*Alignment of access forced using peeling.} "vect" } } */ ++/* { dg-final { scan-tree-dump {if \(ivtmp_[0-9_]+ >= prolog_loop_niters.[0-9_]+\)\n\s*goto} "vect" } } */ ++/* { dg-final { scan-tree-dump {vectorized 1 loops in function} "vect" } } */ +--- gcc/testsuite/gcc.dg/vect/vect-uncounted-prolog-peel_3.c.jj ++++ gcc/testsuite/gcc.dg/vect/vect-uncounted-prolog-peel_3.c +@@ -0,0 +1,26 @@ ++/* { dg-add-options vect_early_break } */ ++/* { dg-do compile } */ ++/* { dg-require-effective-target vect_early_break } */ ++/* { dg-require-effective-target vect_int } */ ++ ++struct { ++ int segments[]; ++} seek_to_sample_coarse_f; ++ ++int seek_to_sample_coarse_i, seek_to_sample_coarse_f_1; ++ ++void seek_to_sample_coarse() { ++ int end_pos = seek_to_sample_coarse_f_1; ++ for (;;) { ++ seek_to_sample_coarse_i = end_pos; ++ for (; end_pos > 0; --end_pos) ++ if (seek_to_sample_coarse_f.segments[end_pos - 1]) ++ break; ++ if (end_pos) ++ break; ++ } ++} ++ ++/* { dg-final { scan-tree-dump {note:\s*Alignment of access forced using peeling.} "vect" } } */ ++/* { dg-final { scan-tree-dump {if \(ivtmp_[0-9_]+ >= prolog_loop_niters.[0-9_]+\)\n\s*goto} "vect" } } */ ++/* { dg-final { scan-tree-dump {vectorized 1 loops in function} "vect" } } */ diff --git a/gcc15-rh1574936.patch b/gcc16-rh1574936.patch similarity index 100% rename from gcc15-rh1574936.patch rename to gcc16-rh1574936.patch diff --git a/gcc15-sparc-config-detection.patch b/gcc16-sparc-config-detection.patch similarity index 100% rename from gcc15-sparc-config-detection.patch rename to gcc16-sparc-config-detection.patch diff --git a/sources b/sources index 5429ac5..6f41a0a 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-15.2.1-20251211.tar.xz) = 9ad5a1ef0f21327fafe37eb52a2e8ff4ebd773c34e9a70053fa70436fa7d35b1eb3b85f0a38211b06fba3fc6a3e35dcb939822d0c0eca1592ea24aa6b2726c99 +SHA512 (gcc-16.0.0-20251218.tar.xz) = ba37982b367362a525395b4c55a5e289176145e65eb96069a9a889ef0290ad47c3376c4b4877ec0e6efe9724b55c03e75824661a7199eee73109d8f1b50485ae SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz) = 7f862986065028df70c843fc3f2c89e200a76b48ad0bd51c749ac8a5aab7be0ebdf35be182fad2407b3281615e75be1ac6833ab6a5130ae9920169a0412f94f0 From f184fa5d6b9425fa8cdfda4a474134e0af5723c3 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 18 Dec 2025 17:45:18 +0100 Subject: [PATCH 283/293] gcc-16.0.0-0.2 --- gcc.spec | 1 - gcc16-libgomp-build.patch | 17 ----------------- 2 files changed, 18 deletions(-) delete mode 100644 gcc16-libgomp-build.patch diff --git a/gcc.spec b/gcc.spec index c1ba99a..449537f 100644 --- a/gcc.spec +++ b/gcc.spec @@ -320,7 +320,6 @@ Patch12: gcc16-pr119006.patch Patch13: gcc16-pr123152.patch Patch14: gcc16-pr123114.patch Patch15: gcc16-pr123115.patch -Patch16: gcc16-libgomp-build.patch Patch50: isl-rh2155127.patch diff --git a/gcc16-libgomp-build.patch b/gcc16-libgomp-build.patch deleted file mode 100644 index d814d18..0000000 --- a/gcc16-libgomp-build.patch +++ /dev/null @@ -1,17 +0,0 @@ -2025-12-15 Jakub Jelinek - - * plugin/build-target-indirect-htab.h (create_target_indirect_map): - Use (void) htab_find instead of assert (htab_find) to silence - -Werror=unused-function because the latter triggers -Werror=address. - ---- libgomp/plugin/build-target-indirect-htab.h.jj 2025-09-17 09:03:28.934357899 +0200 -+++ libgomp/plugin/build-target-indirect-htab.h 2025-12-15 16:11:51.894866968 +0100 -@@ -65,7 +65,7 @@ void* - create_target_indirect_map (size_t *h_size, size_t count, - uint64_t *host_addrs, uint64_t *device_addrs) - { -- assert (htab_find); /* Silence -Werror=unused-function. */ -+ (void) htab_find; /* Silence -Werror=unused-function. */ - - htab_t indirect_htab = htab_create (count); - From 54fd0a9c601745b8d0113f3784bd00a8827ce018 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 20 Dec 2025 19:06:25 +0100 Subject: [PATCH 284/293] 16.0.0-0.3 --- .gitignore | 1 + gcc.spec | 24 +++++-- gcc16-pr123152.patch | 157 ------------------------------------------- sources | 2 +- 4 files changed, 20 insertions(+), 164 deletions(-) delete mode 100644 gcc16-pr123152.patch diff --git a/.gitignore b/.gitignore index 02b5869..89bdb24 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ /gcc-15.2.1-20251111.tar.xz /gcc-15.2.1-20251211.tar.xz /gcc-16.0.0-20251218.tar.xz +/gcc-16.0.0-20251220.tar.xz diff --git a/gcc.spec b/gcc.spec index 449537f..278d014 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20251218 -%global gitrev f73d23f06a1b8aa7cdce95a6092c0ce0f5650a00 +%global DATE 20251220 +%global gitrev ac4db8ee4097571c12b053c4724d2ca8b98dcfe9 %global gcc_version 16.0.0 %global gcc_major 16 # Note, gcc_release must be integer, if you want to add suffixes to @@ -158,7 +158,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.2%{?dist} +Release: %{gcc_release}.3%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -317,9 +317,8 @@ Patch9: gcc16-Wno-format-security.patch Patch10: gcc16-rh1574936.patch Patch11: gcc16-d-shared-libphobos.patch Patch12: gcc16-pr119006.patch -Patch13: gcc16-pr123152.patch -Patch14: gcc16-pr123114.patch -Patch15: gcc16-pr123115.patch +Patch13: gcc16-pr123114.patch +Patch14: gcc16-pr123115.patch Patch50: isl-rh2155127.patch @@ -3937,5 +3936,18 @@ end %endif %changelog +* Sat Dec 20 2025 Jakub Jelinek 16.0.0-0.3 +- update from trunk + - PRs bootstrap/12407, c/123156, c++/91388, c++/117034, c++/122070, + c++/122509, c++/122690, c++/122712, c++/122772, c++/122834, + c++/122922, c++/122995, c++/123030, c++/123044, c++/123186, + debug/122968, fortran/71565, fortran/92613, libstdc++/112591, + libstdc++/123147, libstdc++/123180, rtl-optimization/123223, + target/55212, target/122970, target/123171, target/123216, + target/123217, tree-optimization/122734, tree-optimization/123097, + tree-optimization/123117, tree-optimization/123118, + tree-optimization/123152, tree-optimization/123153, + tree-optimization/123192, tree-optimization/123205 + * Thu Dec 18 2025 Jakub Jelinek 16.0.0-0.2 - new package diff --git a/gcc16-pr123152.patch b/gcc16-pr123152.patch deleted file mode 100644 index a19ca73..0000000 --- a/gcc16-pr123152.patch +++ /dev/null @@ -1,157 +0,0 @@ -The `recompute_dominator' function used in the code fragment within -this patch assumes correctness in the rest of the CFG. Consequently, -it is wrong to rely upon it before the subsequent updates are made in -the "Update dominators for multiple exits" loop in the function. - -Furthermore, if `loop_exit' == `scalar_exit', the "Update dominators for -multiple exits" logic will already take care of updating the -dominator for `scalar_exit->dest', such that the moved statement is -unnecessary. - -2025-12-18 Victor Do Nascimento - - PR tree-optimization/123152 - * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg): - Correct order of dominator update. - - * gcc.dg/vect/vect-uncounted-prolog-peel_2.c: New. - * gcc.dg/vect/vect-uncounted-prolog-peel_3.c: Likewise. - * g++.dg/vect/vect-uncounted-prolog-peel_1.cc: Likewise. - ---- gcc/tree-vect-loop-manip.cc.jj -+++ gcc/tree-vect-loop-manip.cc -@@ -1989,11 +1989,6 @@ slpeel_tree_duplicate_loop_to_edge_cfg (class loop *loop, edge loop_exit, - flush_pending_stmts (new_exit); - set_immediate_dominator (CDI_DOMINATORS, preheader, new_exit->src); - -- if (create_main_e) -- set_immediate_dominator (CDI_DOMINATORS, scalar_exit->dest, -- recompute_dominator (CDI_DOMINATORS, -- scalar_exit->dest)); -- - /* And remove the non-necessary forwarder again. Keep the other - one so we have a proper pre-header for the loop at the exit edge. */ - redirect_edge_pred (single_succ_edge (new_preheader), -@@ -2024,6 +2019,11 @@ slpeel_tree_duplicate_loop_to_edge_cfg (class loop *loop, edge loop_exit, - } - } - } -+ -+ if (create_main_e && loop_exit != scalar_exit) -+ set_immediate_dominator (CDI_DOMINATORS, scalar_exit->dest, -+ recompute_dominator (CDI_DOMINATORS, -+ scalar_exit->dest)); - } - - free (new_bbs); ---- gcc/testsuite/g++.dg/vect/vect-uncounted-prolog-peel_1.cc.jj -+++ gcc/testsuite/g++.dg/vect/vect-uncounted-prolog-peel_1.cc -@@ -0,0 +1,51 @@ -+/* { dg-add-options vect_early_break } */ -+/* { dg-do compile } */ -+/* { dg-require-effective-target vect_early_break } */ -+/* { dg-require-effective-target vect_int } */ -+/* { dg-additional-options "-w" } */ -+ -+namespace a { -+class b { -+public: -+ b d(long); -+}; -+class e : public b {}; -+typedef short f; -+typedef struct g *h; -+typedef struct g { -+ f c; -+ e *fp; -+ f j, *k, *l; -+} m; -+static h n(m *, unsigned, unsigned *); -+f o(m *, unsigned); -+void p(short *t) { -+ m *ffile; -+ int q; -+ unsigned r; -+ int i; -+ q = t[i]; -+ n(ffile, q, &r); -+} -+h n(m *ffile, unsigned q, unsigned *) { -+ h glyph; -+ for (; glyph;) -+ if (glyph->c) -+ o(ffile, q); -+ int i; -+s: -+ for (i = 0; ffile->j; i++) -+ if (ffile->k[i]) { -+ if (q) -+ ffile->fp->d(ffile->l[i]); -+ break; -+ } -+ if (q < 6) { -+ q += 61440; -+ goto s; -+ } -+} -+} // namespace a -+ -+/* { dg-final { scan-tree-dump {note:\s*Alignment of access forced using peeling.} "vect" } } */ -+/* { dg-final { scan-tree-dump {vectorized 1 loops in function} "vect" } } */ ---- gcc/testsuite/gcc.dg/vect/vect-uncounted-prolog-peel_2.c.jj -+++ gcc/testsuite/gcc.dg/vect/vect-uncounted-prolog-peel_2.c -@@ -0,0 +1,25 @@ -+/* { dg-add-options vect_early_break } */ -+/* { dg-do compile } */ -+/* { dg-require-effective-target vect_early_break } */ -+/* { dg-require-effective-target vect_int } */ -+ -+char b; -+int c(char *d) { -+ int *a = 0; -+ while (*d) { -+ while (*a) -+ if (*a++ == 1) -+ return 1; -+ d++; -+ } -+} -+void e() { -+ c(&b); -+ char *f = &b; -+ while (f[0]) -+ ++b; -+} -+ -+/* { dg-final { scan-tree-dump {note:\s*Alignment of access forced using peeling.} "vect" } } */ -+/* { dg-final { scan-tree-dump {if \(ivtmp_[0-9_]+ >= prolog_loop_niters.[0-9_]+\)\n\s*goto} "vect" } } */ -+/* { dg-final { scan-tree-dump {vectorized 1 loops in function} "vect" } } */ ---- gcc/testsuite/gcc.dg/vect/vect-uncounted-prolog-peel_3.c.jj -+++ gcc/testsuite/gcc.dg/vect/vect-uncounted-prolog-peel_3.c -@@ -0,0 +1,26 @@ -+/* { dg-add-options vect_early_break } */ -+/* { dg-do compile } */ -+/* { dg-require-effective-target vect_early_break } */ -+/* { dg-require-effective-target vect_int } */ -+ -+struct { -+ int segments[]; -+} seek_to_sample_coarse_f; -+ -+int seek_to_sample_coarse_i, seek_to_sample_coarse_f_1; -+ -+void seek_to_sample_coarse() { -+ int end_pos = seek_to_sample_coarse_f_1; -+ for (;;) { -+ seek_to_sample_coarse_i = end_pos; -+ for (; end_pos > 0; --end_pos) -+ if (seek_to_sample_coarse_f.segments[end_pos - 1]) -+ break; -+ if (end_pos) -+ break; -+ } -+} -+ -+/* { dg-final { scan-tree-dump {note:\s*Alignment of access forced using peeling.} "vect" } } */ -+/* { dg-final { scan-tree-dump {if \(ivtmp_[0-9_]+ >= prolog_loop_niters.[0-9_]+\)\n\s*goto} "vect" } } */ -+/* { dg-final { scan-tree-dump {vectorized 1 loops in function} "vect" } } */ diff --git a/sources b/sources index 6f41a0a..7fdac69 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-16.0.0-20251218.tar.xz) = ba37982b367362a525395b4c55a5e289176145e65eb96069a9a889ef0290ad47c3376c4b4877ec0e6efe9724b55c03e75824661a7199eee73109d8f1b50485ae +SHA512 (gcc-16.0.0-20251220.tar.xz) = b705797b1ab6b8c8d2c41782c8b59642daf8d6d162ea62ebe611fd78bbc2d951f9f5b7cf68c0e4d9f68bdd6712cd91291c1657c1dbb3876e317a75d658aa9205 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz) = 7f862986065028df70c843fc3f2c89e200a76b48ad0bd51c749ac8a5aab7be0ebdf35be182fad2407b3281615e75be1ac6833ab6a5130ae9920169a0412f94f0 From 406a54e096359d42f5774227898bf158ba8b096c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 3 Jan 2026 13:41:22 +0100 Subject: [PATCH 285/293] 16.0.0-0.4 --- .gitignore | 1 + gcc.spec | 31 ++++++++++++++++++---- gcc16-pr120250.patch | 61 ++++++++++++++++++++++++++++++++++++++++++++ gcc16-pr123114.patch | 46 --------------------------------- gcc16-pr123372.patch | 49 +++++++++++++++++++++++++++++++++++ sources | 2 +- 6 files changed, 138 insertions(+), 52 deletions(-) create mode 100644 gcc16-pr120250.patch delete mode 100644 gcc16-pr123114.patch create mode 100644 gcc16-pr123372.patch diff --git a/.gitignore b/.gitignore index 89bdb24..b12b8aa 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ /gcc-15.2.1-20251211.tar.xz /gcc-16.0.0-20251218.tar.xz /gcc-16.0.0-20251220.tar.xz +/gcc-16.0.0-20260103.tar.xz diff --git a/gcc.spec b/gcc.spec index 278d014..61bfc5c 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20251220 -%global gitrev ac4db8ee4097571c12b053c4724d2ca8b98dcfe9 +%global DATE 20260103 +%global gitrev b48538f45d8b883ab0ed4e77c445dc12b122cb3a %global gcc_version 16.0.0 %global gcc_major 16 # Note, gcc_release must be integer, if you want to add suffixes to @@ -158,7 +158,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.3%{?dist} +Release: %{gcc_release}.4%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -293,6 +293,9 @@ Requires: glibc >= 2.16 %endif Requires: libgcc >= %{version}-%{release} Requires: libgomp = %{version}-%{release} +%if %{build_libatomic} +Requires: libatomic = %{version}-%{release} +%endif # lto-wrapper invokes make Requires: make %if !%{build_ada} @@ -317,8 +320,9 @@ Patch9: gcc16-Wno-format-security.patch Patch10: gcc16-rh1574936.patch Patch11: gcc16-d-shared-libphobos.patch Patch12: gcc16-pr119006.patch -Patch13: gcc16-pr123114.patch -Patch14: gcc16-pr123115.patch +Patch13: gcc16-pr123115.patch +Patch14: gcc16-pr120250.patch +Patch15: gcc16-pr123372.patch Patch50: isl-rh2155127.patch @@ -3936,6 +3940,23 @@ end %endif %changelog +* Sat Jan 3 2026 Jakub Jelinek 16.0.0-0.4 +- update from trunk + - PRs ada/123060, ada/123088, ada/123185, ada/123289, ada/123302, + ada/123306, ada/15605, c++/117518, c++/119097, c++/120005, c++/121864, + c++/122550, c++/122690, c++/122712, c++/122819, c++/122958, + c++/122994, c++/123080, c++/123261, c++/123277, fortran/101399, + fortran/121472, fortran/121475, fortran/122957, fortran/123201, + fortran/123253, libfortran/119136, middle-end/123067, + middle-end/123222, other/122243, rtl-optimization/123114, + rtl-optimization/123267, rtl-optimization/123276, + rtl-optimization/123295, rtl-optimization/123308, target/121485, + target/122769, target/123216, target/123217, target/123274, + target/123278, target/123283, target/123318, testsuite/123299, + testsuite/123334, tree-optimization/123089 +- require libatomic package from gcc package as -latomic is now linked + as-needed by default + * Sat Dec 20 2025 Jakub Jelinek 16.0.0-0.3 - update from trunk - PRs bootstrap/12407, c/123156, c++/91388, c++/117034, c++/122070, diff --git a/gcc16-pr120250.patch b/gcc16-pr120250.patch new file mode 100644 index 0000000..96aa78b --- /dev/null +++ b/gcc16-pr120250.patch @@ -0,0 +1,61 @@ +2025-11-20 Jakub Jelinek + + PR target/120250 + * combine.cc (recog_for_combine): Don't try to put SET_SRC + into a constant pool if SET_DEST is pc_rtx. + + * gcc.c-torture/compile/pr120250.c: New test. + +--- gcc/combine.cc.jj 2025-10-21 11:27:04.884882995 +0200 ++++ gcc/combine.cc 2025-11-19 15:03:23.350157882 +0100 +@@ -11759,7 +11759,8 @@ recog_for_combine (rtx *pnewpat, rtx_ins + rtx src = SET_SRC (pat); + if (CONSTANT_P (src) + && !CONST_INT_P (src) +- && crtl->uses_const_pool) ++ && crtl->uses_const_pool ++ && SET_DEST (pat) != pc_rtx) + { + machine_mode mode = GET_MODE (src); + if (mode == VOIDmode) +--- gcc/testsuite/gcc.c-torture/compile/pr120250.c.jj 2025-11-19 15:28:12.937891927 +0100 ++++ gcc/testsuite/gcc.c-torture/compile/pr120250.c 2025-11-19 15:27:53.225174446 +0100 +@@ -0,0 +1,38 @@ ++/* PR target/120250 */ ++ ++int a = 5, b = 7, c, *d; ++void *l; ++void foo (const char *s); ++void bar (void); ++void qux (const char *, int); ++ ++int ++baz (int *d, int a, int b) ++{ ++ int c = 0; ++ for (int i = 0; i < a; ++i) ++ for (int j = 0; j < b; ++j) ++ c += d[i * b + j]; ++ return c; ++} ++ ++int ++main () ++{ ++ d = __builtin_malloc (a * b * sizeof (int)); ++ if (!d) ++ { ++ foo ("foo"); ++ __builtin_exit (1); ++ } ++ for (int i = 0; i < a; ++i) ++ for (int j = 0; j < b; ++j) ++ d[i * b + j] = i * b + j; ++ l = (void *) &bar; ++ goto *l; ++bar: ++ c = baz (d, a, b); ++ qux ("bar", c); ++ __builtin_free (d); ++ return 0; ++} diff --git a/gcc16-pr123114.patch b/gcc16-pr123114.patch deleted file mode 100644 index 1e8eb9c..0000000 --- a/gcc16-pr123114.patch +++ /dev/null @@ -1,46 +0,0 @@ -2025-12-13 Jakub Jelinek - - PR rtl-optimization/123114 - * simplify-rtx.cc (simplify_context::simplify_relational_operation): - Verify XEXP (XEXP (op0, 0), 0) mode and use CONST0_RTX (cmp_mode) - instead of CONST0_RTX (mode). - - * gcc.dg/pr123114.c: New test. - ---- gcc/simplify-rtx.cc.jj 2025-12-09 10:18:55.437229339 +0100 -+++ gcc/simplify-rtx.cc 2025-12-13 23:04:14.672186706 +0100 -@@ -6509,8 +6509,9 @@ simplify_context::simplify_relational_op - /* only enters if op1 is 0 */ - /* Verify IOR operand is NE */ - && GET_CODE (XEXP (op0, 0)) == NE -+ && GET_MODE (XEXP (XEXP (op0, 0), 0)) == cmp_mode - /* Verify second NE operand is 0 */ -- && XEXP (XEXP (op0, 0), 1) == CONST0_RTX (mode)) -+ && XEXP (XEXP (op0, 0), 1) == CONST0_RTX (cmp_mode)) - { - rtx t = gen_rtx_IOR (cmp_mode, XEXP (XEXP (op0, 0), 0), XEXP (op0, 1)); - t = gen_rtx_fmt_ee (code, mode, t, CONST0_RTX (mode)); ---- gcc/testsuite/gcc.dg/pr123114.c.jj 2025-12-13 23:13:53.528178273 +0100 -+++ gcc/testsuite/gcc.dg/pr123114.c 2025-12-13 23:13:25.964657498 +0100 -@@ -0,0 +1,21 @@ -+/* PR rtl-optimization/123114 */ -+/* { dg-do compile } */ -+/* { dg-options "-O3 -fno-tree-vrp" } */ -+ -+volatile int a, b, g; -+unsigned short e; -+int f; -+ -+int -+main () -+{ -+ int c, d; -+ while (a) -+ { -+ c = e = b << 2; -+ d = f; -+ g = (c <= 0 && d) || c ? 0 : d; -+ a = g; -+ } -+ return 0; -+} diff --git a/gcc16-pr123372.patch b/gcc16-pr123372.patch new file mode 100644 index 0000000..1f75086 --- /dev/null +++ b/gcc16-pr123372.patch @@ -0,0 +1,49 @@ +2026-01-03 Jakub Jelinek + + PR tree-optimization/123372 + * tree-ssa-math-opts.cc + (build_saturation_binary_arith_call_and_replace): Pass type of op_0 + rather than type of lhs as second argument to + direct_internal_fn_supported_p. + + * gcc.dg/tree-ssa/pr123372.c: New test. + +--- gcc/tree-ssa-math-opts.cc.jj 2026-01-02 09:56:10.390332748 +0100 ++++ gcc/tree-ssa-math-opts.cc 2026-01-02 18:45:57.087546705 +0100 +@@ -4083,7 +4083,7 @@ build_saturation_binary_arith_call_and_r + internal_fn fn, tree lhs, + tree op_0, tree op_1) + { +- if (direct_internal_fn_supported_p (fn, TREE_TYPE (lhs), OPTIMIZE_FOR_BOTH)) ++ if (direct_internal_fn_supported_p (fn, TREE_TYPE (op_0), OPTIMIZE_FOR_BOTH)) + { + gcall *call = gimple_build_call_internal (fn, 2, op_0, op_1); + gimple_call_set_lhs (call, lhs); +--- gcc/testsuite/gcc.dg/tree-ssa/pr123372.c.jj 2026-01-02 18:49:45.419717435 +0100 ++++ gcc/testsuite/gcc.dg/tree-ssa/pr123372.c 2026-01-02 18:51:22.256093427 +0100 +@@ -0,0 +1,25 @@ ++/* PR tree-optimization/123372 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fgimple" } */ ++ ++#ifdef __SIZEOF_INT128__ ++#define T unsigned __int128 ++#else ++#define T unsigned long long ++#endif ++ ++unsigned int __GIMPLE (ssa,startwith("phiopt4")) ++foo (T a, T b) ++{ ++ T _4; ++ unsigned int _1; ++ bool _5; ++ unsigned int _6; ++ ++ __BB(2): ++ _5 = a_2(D) >= b_3(D); ++ _4 = a_2(D) - b_3(D); ++ _6 = (unsigned int) _4; ++ _1 = _5 ? _6 : 0U; ++ return _1; ++} diff --git a/sources b/sources index 7fdac69..bfe5a8f 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-16.0.0-20251220.tar.xz) = b705797b1ab6b8c8d2c41782c8b59642daf8d6d162ea62ebe611fd78bbc2d951f9f5b7cf68c0e4d9f68bdd6712cd91291c1657c1dbb3876e317a75d658aa9205 +SHA512 (gcc-16.0.0-20260103.tar.xz) = cc9c1dcc04eec3ef8357320cac1e1f51166832061a065ba2391d1888a8eddbb4436073c0c3db6c33cd8f79ad1a1cfb35f867a57ed6cbc25f57980b5f60f8fa76 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz) = 7f862986065028df70c843fc3f2c89e200a76b48ad0bd51c749ac8a5aab7be0ebdf35be182fad2407b3281615e75be1ac6833ab6a5130ae9920169a0412f94f0 From 55e669d29afecbf8713ba2e25f3f274800e4cf2b Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 3 Jan 2026 14:04:21 +0100 Subject: [PATCH 286/293] 16.0.0-0.4 --- gcc16-hack.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc16-hack.patch b/gcc16-hack.patch index 9c5d57b..61331bf 100644 --- a/gcc16-hack.patch +++ b/gcc16-hack.patch @@ -64,7 +64,7 @@ + infodir="$(infodir)" \ GOCFLAGS="$(GOCFLAGS) $${flags}" \ GDCFLAGS="$(GDCFLAGS) $${flags}" \ - CXXFLAGS="$(CXXFLAGS) $${flags}" \ + A68FLAGS="$(A68FLAGS) $${flags}" \ --- libcpp/macro.cc.jj 2019-01-09 13:01:21.420552123 +0100 +++ libcpp/macro.cc 2024-11-30 13:16:41.163056391 +0100 @@ -3680,8 +3680,6 @@ static cpp_macro * From 461b2c1a00bdd7f452451952996e8b89f3e9088b Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 3 Jan 2026 14:24:24 +0100 Subject: [PATCH 287/293] 16.0.0-0.4 --- gcc.spec | 41 ++++++----------------------------------- 1 file changed, 6 insertions(+), 35 deletions(-) diff --git a/gcc.spec b/gcc.spec index 61bfc5c..8ca074a 100644 --- a/gcc.spec +++ b/gcc.spec @@ -295,6 +295,7 @@ Requires: libgcc >= %{version}-%{release} Requires: libgomp = %{version}-%{release} %if %{build_libatomic} Requires: libatomic = %{version}-%{release} +Obsoletes: libatomic-static < %{version}-%{release} %endif # lto-wrapper invokes make Requires: make @@ -746,13 +747,6 @@ This package contains the GNU Atomic library which is a GCC support runtime library for atomic operations not supported by hardware. -%package -n libatomic-static -Summary: The GNU Atomic static library -Requires: libatomic = %{version}-%{release} - -%description -n libatomic-static -This package contains GNU Atomic static libraries. - %package -n libasan Summary: The Address Sanitizer runtime library @@ -1958,7 +1952,7 @@ mv -f %{buildroot}%{_prefix}/%{_lib}/libga68.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libitm.*a $FULLLPATH/ %endif %if %{build_libatomic} -mv -f %{buildroot}%{_prefix}/%{_lib}/libatomic.*a $FULLLPATH/ +mv -f %{buildroot}%{_prefix}/%{_lib}/libatomic.*a $FULLPATH/ %endif %if %{build_libasan} mv -f %{buildroot}%{_prefix}/%{_lib}/libasan.*a $FULLLPATH/ @@ -2073,6 +2067,7 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libitm.so.1.* | sed 's,^.* rm -f libatomic.so echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libatomic.so.1.* | sed 's,^.*liba,liba,'`' )' > libatomic.so echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libatomic.so.1.* | sed 's,^.*liba,liba,'`' )' > 64/libatomic.so +mv -f %{buildroot}%{_prefix}/lib64/libatomic.*a 64/ %endif %if %{build_libasan} rm -f libasan.so @@ -2127,10 +2122,6 @@ ln -sf ../lib64/libga68.a 64/libga68.a ln -sf lib32/libitm.a libitm.a ln -sf ../lib64/libitm.a 64/libitm.a %endif -%if %{build_libatomic} -ln -sf lib32/libatomic.a libatomic.a -ln -sf ../lib64/libatomic.a 64/libatomic.a -%endif %if %{build_libasan} ln -sf lib32/libasan.a libasan.a ln -sf ../lib64/libasan.a 64/libasan.a @@ -2208,6 +2199,7 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libitm.so.1.* | sed 's,^.* rm -f libatomic.so echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libatomic.so.1.* | sed 's,^.*liba,liba,'`' )' > libatomic.so echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libatomic.so.1.* | sed 's,^.*liba,liba,'`' )' > 32/libatomic.so +mv -f %{buildroot}%{_prefix}/lib/libatomic.*a 32/ %endif %if %{build_libasan} rm -f libasan.so @@ -2264,10 +2256,6 @@ ln -sf lib64/libga68.a libga68.a ln -sf ../lib32/libitm.a 32/libitm.a ln -sf lib64/libitm.a libitm.a %endif -%if %{build_libatomic} -ln -sf ../lib32/libatomic.a 32/libatomic.a -ln -sf lib64/libatomic.a libatomic.a -%endif %if %{build_libasan} ln -sf ../lib32/libasan.a 32/libasan.a ln -sf lib64/libasan.a libasan.a @@ -2318,9 +2306,6 @@ ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libga6 %if %{build_libitm} ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libitm.a 32/libitm.a %endif -%if %{build_libatomic} -ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libatomic.a 32/libatomic.a -%endif %if %{build_libasan} ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libasan.a 32/libasan.a %endif @@ -3028,6 +3013,7 @@ end %endif %else %if %{build_libatomic} +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.so %endif %if %{build_libasan} @@ -3632,22 +3618,6 @@ end %if %{build_libatomic} %files -n libatomic %{_prefix}/%{_lib}/libatomic.so.1* - -%files -n libatomic-static -%dir %{_prefix}/lib/gcc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} -%ifarch sparcv9 ppc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libatomic.a -%endif -%ifarch sparc64 ppc64 ppc64p7 -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libatomic.a -%endif -%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.a -%endif %doc rpm.doc/changelogs/libatomic/ChangeLog* %endif @@ -3956,6 +3926,7 @@ end testsuite/123334, tree-optimization/123089 - require libatomic package from gcc package as -latomic is now linked as-needed by default +- remove libatomic-static package, move libatomic.a into gcc package * Sat Dec 20 2025 Jakub Jelinek 16.0.0-0.3 - update from trunk From 2df9f5e1831b0143b359addf7e09e7d5c67d9fa4 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 3 Jan 2026 14:56:53 +0100 Subject: [PATCH 288/293] 16.0.0-0.4 --- gcc16-Wno-format-security.patch | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gcc16-Wno-format-security.patch b/gcc16-Wno-format-security.patch index 9f4a8f9..2a4f0f3 100644 --- a/gcc16-Wno-format-security.patch +++ b/gcc16-Wno-format-security.patch @@ -37,11 +37,11 @@ CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates -GOCFLAGS = $(CFLAGS) --GA68FLAGS = @GA68FLAGS@ +-A68FLAGS = @A68FLAGS@ -GDCFLAGS = @GDCFLAGS@ -GM2FLAGS = $(CFLAGS) +GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) -+GA68FLAGS = $(filter-out -Wformat-security,@GA68FLAGS@) ++A68FLAGS = $(filter-out -Wformat-security,@A68FLAGS@) +GDCFLAGS = $(filter-out -Wformat-security,@GDCFLAGS@) +GM2FLAGS = $(filter-out -Wformat-security,$(CFLAGS)) @@ -54,11 +54,11 @@ CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates -GOCFLAGS = $(CFLAGS) --GA68FLAGS = @GA68FLAGS@ +-A68FLAGS = @A68FLAGS@ -GDCFLAGS = @GDCFLAGS@ -GM2FLAGS = $(CFLAGS) +GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) -+GA68FLAGS = $(filter-out -Wformat-security,@GA68FLAGS@) ++A68FLAGS = $(filter-out -Wformat-security,@A68FLAGS@) +GDCFLAGS = $(filter-out -Wformat-security,@GDCFLAGS@) +GM2FLAGS = $(filter-out -Wformat-security,$(CFLAGS)) From bf9047fd71076d22b6887c2cd3375d81467f7892 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 10 Jan 2026 11:57:52 +0100 Subject: [PATCH 289/293] 16.0.0-0.5 --- .gitignore | 1 + gcc.spec | 41 ++++++++++++++++++++++++++++--- gcc16-pr123189.patch | 58 ++++++++++++++++++++++++++++++++++++++++++++ gcc16-pr123273.patch | 54 +++++++++++++++++++++++++++++++++++++++++ gcc16-pr123372.patch | 49 ------------------------------------- sources | 2 +- 6 files changed, 151 insertions(+), 54 deletions(-) create mode 100644 gcc16-pr123189.patch create mode 100644 gcc16-pr123273.patch delete mode 100644 gcc16-pr123372.patch diff --git a/.gitignore b/.gitignore index b12b8aa..2196596 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ /gcc-16.0.0-20251218.tar.xz /gcc-16.0.0-20251220.tar.xz /gcc-16.0.0-20260103.tar.xz +/gcc-16.0.0-20260110.tar.xz diff --git a/gcc.spec b/gcc.spec index 8ca074a..4d79f03 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20260103 -%global gitrev b48538f45d8b883ab0ed4e77c445dc12b122cb3a +%global DATE 20260110 +%global gitrev 000ed919272a9a0a6b6e52ae9e2052d90baa6964 %global gcc_version 16.0.0 %global gcc_major 16 # Note, gcc_release must be integer, if you want to add suffixes to @@ -158,7 +158,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.4%{?dist} +Release: %{gcc_release}.5%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -296,6 +296,7 @@ Requires: libgomp = %{version}-%{release} %if %{build_libatomic} Requires: libatomic = %{version}-%{release} Obsoletes: libatomic-static < %{version}-%{release} +Provides: libatomic-static = %{version}-%{release} %endif # lto-wrapper invokes make Requires: make @@ -323,7 +324,8 @@ Patch11: gcc16-d-shared-libphobos.patch Patch12: gcc16-pr119006.patch Patch13: gcc16-pr123115.patch Patch14: gcc16-pr120250.patch -Patch15: gcc16-pr123372.patch +Patch15: gcc16-pr123189.patch +Patch16: gcc16-pr123273.patch Patch50: isl-rh2155127.patch @@ -3910,6 +3912,37 @@ end %endif %changelog +* Sat Jan 10 2026 Jakub Jelinek 16.0.0-0.5 +- update from trunk + - PRs ada/123003, ada/123371, ada/123490, c/117687, c/121081, c/121507, + c/123212, c/123435, c/123463, c/123475, c++/123331, c++/123347, + c++/123393, debug/123259, fortran/90218, fortran/123012, + fortran/123029, fortran/123071, fortran/123321, fortran/123352, + fortran/123483, gcov-profile/123019, ipa/123383, libstdc++/122878, + libstdc++/123100, libstdc++/123183, libstdc++/123326, + libstdc++/123378, libstdc++/123406, middle-end/111817, + middle-end/123107, rtl-optimization/119291, rtl-optimization/121675, + rtl-optimization/121773, rtl-optimization/123121, + rtl-optimization/123491, target/119430, target/121192, target/121290, + target/121535, target/121778, target/122846, target/123010, + target/123017, target/123268, target/123269, target/123317, + target/123320, target/123390, target/123403, target/123457, + target/123489, target/123492, testsuite/123353, testsuite/123377, + tree-optimization/42196, tree-optimization/102486, + tree-optimization/102954, tree-optimization/122103, + tree-optimization/122608, tree-optimization/122793, + tree-optimization/123197, tree-optimization/123200, + tree-optimization/123221, tree-optimization/123298, + tree-optimization/123300, tree-optimization/123310, + tree-optimization/123315, tree-optimization/123316, + tree-optimization/123319, tree-optimization/123351, + tree-optimization/123372, tree-optimization/123374, + tree-optimization/123382, tree-optimization/123414, + tree-optimization/123431 +- fix ICE on friend with noexcept (PR c++/123189) +- fix -E -fdirectives-only comment handling (PR preprocessor/123273) +- provide libatomic-static from gcc subpackage + * Sat Jan 3 2026 Jakub Jelinek 16.0.0-0.4 - update from trunk - PRs ada/123060, ada/123088, ada/123185, ada/123289, ada/123302, diff --git a/gcc16-pr123189.patch b/gcc16-pr123189.patch new file mode 100644 index 0000000..4262362 --- /dev/null +++ b/gcc16-pr123189.patch @@ -0,0 +1,58 @@ +Since we now defer noexcept parsing for templated friends, some places +need to be updated to cope with friend template specializations -- their +TI_TEMPLATE is a TREE_LIST rather than a TEMPLATE_DECL, and they never +introduce new template parameters. + +2026-01-09 Patrick Palka + + PR c++/123189 + +gcc/cp/ChangeLog: + + * name-lookup.cc (binding_to_template_parms_of_scope_p): + Gracefully handle TEMPLATE_INFO whose TI_TEMPLATE is a TREE_LIST. + * pt.cc (maybe_begin_member_template_processing): For a friend + template specialization consider its class context instead. + +gcc/testsuite/ChangeLog: + + * g++.dg/cpp0x/noexcept92.C: New test. + +--- gcc/cp/name-lookup.cc ++++ gcc/cp/name-lookup.cc +@@ -8004,6 +8004,7 @@ binding_to_template_parms_of_scope_p (cxx_binding *binding, + /* The template of the current scope, iff said scope is a primary + template. */ + tmpl = (tinfo ++ && TREE_CODE (TI_TEMPLATE (tinfo)) == TEMPLATE_DECL + && PRIMARY_TEMPLATE_P (TI_TEMPLATE (tinfo)) + ? TI_TEMPLATE (tinfo) + : NULL_TREE); +--- gcc/cp/pt.cc ++++ gcc/cp/pt.cc +@@ -546,9 +546,9 @@ maybe_begin_member_template_processing (tree decl) + int levels = 0; + bool nsdmi = TREE_CODE (decl) == FIELD_DECL; + +- if (nsdmi) ++ if (nsdmi || decl_specialization_friend_p (decl)) + { +- tree ctx = DECL_CONTEXT (decl); ++ tree ctx = nsdmi ? DECL_CONTEXT (decl) : DECL_CHAIN (decl); + decl = (CLASSTYPE_TEMPLATE_INFO (ctx) + /* Disregard full specializations (c++/60999). */ + && uses_template_parms (ctx) +--- gcc/testsuite/g++.dg/cpp0x/noexcept92.C ++++ gcc/testsuite/g++.dg/cpp0x/noexcept92.C +@@ -0,0 +1,11 @@ ++// PR c++/123189 ++// { dg-do compile { target c++11 } } ++ ++template void f() noexcept(noexcept(T())); ++ ++template ++struct A { ++ friend void f() noexcept(noexcept(T())); ++}; ++ ++template struct A; diff --git a/gcc16-pr123273.patch b/gcc16-pr123273.patch new file mode 100644 index 0000000..987f6e0 --- /dev/null +++ b/gcc16-pr123273.patch @@ -0,0 +1,54 @@ +2026-01-06 Jakub Jelinek + + PR preprocessor/123273 + * lex.cc (cpp_directive_only_process): Only go to done_comment + for '/' if star is true and esc is false. When seeing '\\' with + esc set to true, clear esc as well as star instead of keeping esc + set. + + * c-c++-common/cpp/dir-only-10.c: New test. + * c-c++-common/cpp/dir-only-11.c: New test. + +--- libcpp/lex.cc.jj 2026-01-02 09:56:10.417332292 +0100 ++++ libcpp/lex.cc 2026-01-05 16:40:26.413766032 +0100 +@@ -5461,7 +5461,13 @@ cpp_directive_only_process (cpp_reader * + switch (c) + { + case '\\': +- esc = true; ++ if (esc) ++ { ++ star = false; ++ esc = false; ++ } ++ else ++ esc = true; + break; + + case '\r': +@@ -5492,7 +5498,7 @@ cpp_directive_only_process (cpp_reader * + break; + + case '/': +- if (star) ++ if (star && !esc) + goto done_comment; + /* FALLTHROUGH */ + +--- gcc/testsuite/c-c++-common/cpp/dir-only-10.c.jj 2026-01-05 17:04:26.144566116 +0100 ++++ gcc/testsuite/c-c++-common/cpp/dir-only-10.c 2026-01-05 17:05:02.226946201 +0100 +@@ -0,0 +1,5 @@ ++/* PR preprocessor/123273 */ ++/* { dg-do preprocess } */ ++/* { dg-options -fdirectives-only } */ ++ ++/* *\/""" */ +--- gcc/testsuite/c-c++-common/cpp/dir-only-11.c.jj 2026-01-05 17:05:18.498666647 +0100 ++++ gcc/testsuite/c-c++-common/cpp/dir-only-11.c 2026-01-05 17:06:17.574651691 +0100 +@@ -0,0 +1,6 @@ ++/* PR preprocessor/123273 */ ++/* { dg-do preprocess } */ ++/* { dg-options -fdirectives-only } */ ++ ++/* *\\ ++/""" */ diff --git a/gcc16-pr123372.patch b/gcc16-pr123372.patch deleted file mode 100644 index 1f75086..0000000 --- a/gcc16-pr123372.patch +++ /dev/null @@ -1,49 +0,0 @@ -2026-01-03 Jakub Jelinek - - PR tree-optimization/123372 - * tree-ssa-math-opts.cc - (build_saturation_binary_arith_call_and_replace): Pass type of op_0 - rather than type of lhs as second argument to - direct_internal_fn_supported_p. - - * gcc.dg/tree-ssa/pr123372.c: New test. - ---- gcc/tree-ssa-math-opts.cc.jj 2026-01-02 09:56:10.390332748 +0100 -+++ gcc/tree-ssa-math-opts.cc 2026-01-02 18:45:57.087546705 +0100 -@@ -4083,7 +4083,7 @@ build_saturation_binary_arith_call_and_r - internal_fn fn, tree lhs, - tree op_0, tree op_1) - { -- if (direct_internal_fn_supported_p (fn, TREE_TYPE (lhs), OPTIMIZE_FOR_BOTH)) -+ if (direct_internal_fn_supported_p (fn, TREE_TYPE (op_0), OPTIMIZE_FOR_BOTH)) - { - gcall *call = gimple_build_call_internal (fn, 2, op_0, op_1); - gimple_call_set_lhs (call, lhs); ---- gcc/testsuite/gcc.dg/tree-ssa/pr123372.c.jj 2026-01-02 18:49:45.419717435 +0100 -+++ gcc/testsuite/gcc.dg/tree-ssa/pr123372.c 2026-01-02 18:51:22.256093427 +0100 -@@ -0,0 +1,25 @@ -+/* PR tree-optimization/123372 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -fgimple" } */ -+ -+#ifdef __SIZEOF_INT128__ -+#define T unsigned __int128 -+#else -+#define T unsigned long long -+#endif -+ -+unsigned int __GIMPLE (ssa,startwith("phiopt4")) -+foo (T a, T b) -+{ -+ T _4; -+ unsigned int _1; -+ bool _5; -+ unsigned int _6; -+ -+ __BB(2): -+ _5 = a_2(D) >= b_3(D); -+ _4 = a_2(D) - b_3(D); -+ _6 = (unsigned int) _4; -+ _1 = _5 ? _6 : 0U; -+ return _1; -+} diff --git a/sources b/sources index bfe5a8f..2d3f1fe 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-16.0.0-20260103.tar.xz) = cc9c1dcc04eec3ef8357320cac1e1f51166832061a065ba2391d1888a8eddbb4436073c0c3db6c33cd8f79ad1a1cfb35f867a57ed6cbc25f57980b5f60f8fa76 +SHA512 (gcc-16.0.0-20260110.tar.xz) = 9be9b72ae45f888efe30ef50f8b497ebeaef327d037ab7a70a354d05986567115447dce8ff660b69b96d3cc6e145f509f35261d3f33902f97a7169817a972eed SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz) = 7f862986065028df70c843fc3f2c89e200a76b48ad0bd51c749ac8a5aab7be0ebdf35be182fad2407b3281615e75be1ac6833ab6a5130ae9920169a0412f94f0 From 8d258e58bdb298d7f8c9926d168cc8c808fdf4e3 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 12 Jan 2026 20:15:57 +0100 Subject: [PATCH 290/293] 16.0.1-0.1 --- .gitignore | 2 + gcc.spec | 22 +- gcc16-ipacp-revert.patch | 1079 +++++++++++++++++++++++++++++++++++ gcc16-libstdc++-docs.patch | 4 +- gcc16-pr121778-revert.patch | 170 ++++++ gcc16-pr123189.patch | 58 -- gcc16-pr123414-revert.patch | 92 +++ sources | 2 +- 8 files changed, 1362 insertions(+), 67 deletions(-) create mode 100644 gcc16-ipacp-revert.patch create mode 100644 gcc16-pr121778-revert.patch delete mode 100644 gcc16-pr123189.patch create mode 100644 gcc16-pr123414-revert.patch diff --git a/.gitignore b/.gitignore index 2196596..73b38af 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,5 @@ /gcc-16.0.0-20251220.tar.xz /gcc-16.0.0-20260103.tar.xz /gcc-16.0.0-20260110.tar.xz +/gcc-16.0.0-20260112.tar.xz +/gcc-16.0.1-20260112.tar.xz diff --git a/gcc.spec b/gcc.spec index 4d79f03..e461bcf 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,6 +1,6 @@ -%global DATE 20260110 -%global gitrev 000ed919272a9a0a6b6e52ae9e2052d90baa6964 -%global gcc_version 16.0.0 +%global DATE 20260112 +%global gitrev 25ea0dce3d78a294015cf5df891a4630172b0d12 +%global gcc_version 16.0.1 %global gcc_major 16 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. @@ -158,7 +158,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.5%{?dist} +Release: %{gcc_release}.1%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -324,8 +324,10 @@ Patch11: gcc16-d-shared-libphobos.patch Patch12: gcc16-pr119006.patch Patch13: gcc16-pr123115.patch Patch14: gcc16-pr120250.patch -Patch15: gcc16-pr123189.patch -Patch16: gcc16-pr123273.patch +Patch15: gcc16-pr123273.patch +Patch16: gcc16-ipacp-revert.patch +Patch17: gcc16-pr121778-revert.patch +Patch18: gcc16-pr123414-revert.patch Patch50: isl-rh2155127.patch @@ -3912,6 +3914,14 @@ end %endif %changelog +* Mon Jan 12 2026 Jakub Jelinek 16.0.1-0.1 +- update from trunk + - PRs c++/81337, c++/115163, c++/123526, fortran/77415, ipa/122458, + ipa/123543, libfortran/123012, middle-end/123175, + rtl-optimization/123523, target/123415, testsuite/121752, + testsuite/123129, tree-optimization/122824, tree-optimization/122830, + tree-optimization/123417, tree-optimization/123528 + * Sat Jan 10 2026 Jakub Jelinek 16.0.0-0.5 - update from trunk - PRs ada/123003, ada/123371, ada/123490, c/117687, c/121081, c/121507, diff --git a/gcc16-ipacp-revert.patch b/gcc16-ipacp-revert.patch new file mode 100644 index 0000000..dae3ba2 --- /dev/null +++ b/gcc16-ipacp-revert.patch @@ -0,0 +1,1079 @@ +Temporarily revert until PR123542 is resolved. + +2026-01-06 Martin Jambor + + * ipa-cp.h (class ipcp_bits_lattice): New members set_recipient_only, + recipient_only_p and m_recipient_only. + (class ipcp_vr_lattice): Likewise. + (ipcp_vr_lattice::init): Initialize also m_recipient_only. + * ipa-cp.cc (ipcp_bits_lattice::print): Adjust printting to also + print the new flag. + (ipcp_vr_lattice::print): Likewise. + (ipcp_vr_lattice::set_recipient_only): New function. + (ipcp_bits_lattice::set_recipient_only): Likewise. + (set_all_contains_variable): New parameter MAKE_SIMPLE_RECIPIENTS, set + bits and vr lattices to recibient only insted to bottom when it is + true. + (initialize_node_lattices): Pass true to the second parameter of + set_all_contains_variable. + (propagate_bits_across_jump_function): Treat recipient_only source + lattices like bottom. + (propagate_vr_across_jump_function): Likewise. + (ipcp_store_vr_results): Skip non-local nodes. + +2026-01-09 Martin Jambor + + * ipa-cp.cc (good_cloning_opportunity_p): Dump a message when + bailing out early too. + (find_more_scalar_values_for_callers_subset): Rename to + find_scalar_values_for_callers_subset, collect constants regardless of + what is already in the vector. Remove dumping. + (find_more_contexts_for_caller_subset): Rename to + find_contexts_for_caller_subset, collect contexts regardless of what + is already in the vector. Remove dumping. + (find_aggregate_values_for_callers_subset): Rename to + find_aggregate_values_for_callers_subset_gc, implement using new + functions. + (find_aggregate_values_for_callers_subset_1): New function. + (find_aggregate_values_for_callers_subset): Likewise. + (copy_known_vectors_add_val): Removed. + (dump_reestimation_message): New function. + (decide_about_value): Remove formal parameter avals, compute it + independently, and use it to estimate local cloning effects. + (struct cloning_opportunity_ranking): New type. + (compare_cloning_opportunities): New function. + (cloning_opportunity_ranking_evaluation): Likewise. + (decide_whether_version_node): Pre-sort candidates for cloning before + really evaluating them. Calculate context independent values only + when considering versioning for all contexts. + (ipcp_val_agg_replacement_ok_p): Renamed to + ipcp_val_replacement_ok_p, check also non-aggregate values. + +--- gcc/ipa-cp.cc ++++ gcc/ipa-cp.cc +@@ -339,25 +339,18 @@ ipcp_print_widest_int (FILE *f, const widest_int &value) + void + ipcp_bits_lattice::print (FILE *f) + { +- if (bottom_p ()) +- { +- fprintf (f, " Bits unusable (BOTTOM)\n"); +- return; +- } +- + if (top_p ()) +- fprintf (f, " Bits unknown (TOP)"); ++ fprintf (f, " Bits unknown (TOP)\n"); ++ else if (bottom_p ()) ++ fprintf (f, " Bits unusable (BOTTOM)\n"); + else + { + fprintf (f, " Bits: value = "); + ipcp_print_widest_int (f, get_value ()); + fprintf (f, ", mask = "); + ipcp_print_widest_int (f, get_mask ()); ++ fprintf (f, "\n"); + } +- +- if (m_recipient_only) +- fprintf (f, " (recipient only)"); +- fprintf (f, "\n"); + } + + /* Print value range lattice to F. */ +@@ -365,8 +358,6 @@ ipcp_bits_lattice::print (FILE *f) + void + ipcp_vr_lattice::print (FILE * f) + { +- if (m_recipient_only) +- fprintf (f, "(recipient only) "); + m_vr.dump (f); + } + +@@ -897,18 +888,6 @@ ipcp_vr_lattice::set_to_bottom () + return true; + } + +-/* Set the flag that this lattice is a recipient only, return true if it was +- not set before. */ +- +-bool +-ipcp_vr_lattice::set_recipient_only () +-{ +- if (m_recipient_only) +- return false; +- m_recipient_only = true; +- return true; +-} +- + /* Set lattice value to bottom, if it already isn't the case. */ + + bool +@@ -945,18 +924,6 @@ ipcp_bits_lattice::known_nonzero_p () const + return wi::ne_p (wi::bit_and (wi::bit_not (m_mask), m_value), 0); + } + +-/* Set the flag that this lattice is a recipient only, return true if it was not +- set before. */ +- +-bool +-ipcp_bits_lattice::set_recipient_only () +-{ +- if (m_recipient_only) +- return false; +- m_recipient_only = true; +- return true; +-} +- + /* Convert operand to value, mask form. */ + + void +@@ -1359,28 +1326,17 @@ intersect_argaggs_with (vec &elts, + } + + /* Mark bot aggregate and scalar lattices as containing an unknown variable, +- return true is any of them has not been marked as such so far. If if +- MAKE_SIMPLE_RECIPIENTS is true, set the lattices that can only hold one +- value to being recipients only, otherwise also set them to bottom. */ ++ return true is any of them has not been marked as such so far. */ + + static inline bool +-set_all_contains_variable (class ipcp_param_lattices *plats, +- bool make_simple_recipients = false) ++set_all_contains_variable (class ipcp_param_lattices *plats) + { + bool ret; + ret = plats->itself.set_contains_variable (); + ret |= plats->ctxlat.set_contains_variable (); + ret |= set_agg_lats_contain_variable (plats); +- if (make_simple_recipients) +- { +- ret |= plats->bits_lattice.set_recipient_only (); +- ret |= plats->m_value_range.set_recipient_only (); +- } +- else +- { +- ret |= plats->bits_lattice.set_to_bottom (); +- ret |= plats->m_value_range.set_to_bottom (); +- } ++ ret |= plats->bits_lattice.set_to_bottom (); ++ ret |= plats->m_value_range.set_to_bottom (); + return ret; + } + +@@ -1525,7 +1481,7 @@ initialize_node_lattices (struct cgraph_node *node) + { + plats->m_value_range.init (type); + if (variable) +- set_all_contains_variable (plats, true); ++ set_all_contains_variable (plats); + } + } + +@@ -2617,8 +2573,7 @@ propagate_bits_across_jump_function (cgraph_edge *cs, int idx, + result of x & 0xff == 0xff, which gets computed during ccp1 pass + and we store it in jump function during analysis stage. */ + +- if (!src_lats->bits_lattice.bottom_p () +- && !src_lats->bits_lattice.recipient_only_p ()) ++ if (!src_lats->bits_lattice.bottom_p ()) + { + if (!op_type) + op_type = ipa_get_type (caller_info, src_idx); +@@ -2684,8 +2639,7 @@ propagate_vr_across_jump_function (cgraph_edge *cs, ipa_jump_func *jfunc, + = ipa_get_parm_lattices (caller_info, src_idx); + tree operand_type = ipa_get_type (caller_info, src_idx); + +- if (src_lats->m_value_range.bottom_p () +- || src_lats->m_value_range.recipient_only_p ()) ++ if (src_lats->m_value_range.bottom_p ()) + return dest_lat->set_to_bottom (); + + if (ipa_get_jf_pass_through_operation (jfunc) == NOP_EXPR +@@ -3443,13 +3397,7 @@ good_cloning_opportunity_p (struct cgraph_node *node, sreal time_benefit, + /* If there is no call which was executed in profiling or where + profile is missing, we do not want to clone. */ + || (!called_without_ipa_profile && !count_sum.nonzero_p ())) +- { +- if (dump_file && (dump_flags & TDF_DETAILS)) +- fprintf (dump_file, " good_cloning_opportunity_p (time: %g, " +- "size: %i): Definitely not good or prohibited.\n", +- time_benefit.to_double (), size_cost); +- return false; +- } ++ return false; + + gcc_assert (size_cost > 0); + +@@ -5290,29 +5238,24 @@ self_recursive_agg_pass_through_p (const cgraph_edge *cs, + KNOWN_CSTS with constants that are also known for all of the CALLERS. */ + + static void +-find_scalar_values_for_callers_subset (vec &known_csts, +- ipa_node_params *info, +- const vec &callers) ++find_more_scalar_values_for_callers_subset (struct cgraph_node *node, ++ vec &known_csts, ++ const vec &callers) + { ++ ipa_node_params *info = ipa_node_params_sum->get (node); + int i, count = ipa_get_param_count (info); + + for (i = 0; i < count; i++) + { +- ipcp_lattice *lat = ipa_get_scalar_lat (info, i); +- if (lat->bottom) +- continue; +- if (lat->is_single_const ()) +- { +- known_csts[i] = lat->values->value; +- continue; +- } +- + struct cgraph_edge *cs; + tree newval = NULL_TREE; + int j; + bool first = true; + tree type = ipa_get_type (info, i); + ++ if (ipa_get_scalar_lat (info, i)->bottom || known_csts[i]) ++ continue; ++ + FOR_EACH_VEC_ELT (callers, j, cs) + { + struct ipa_jump_func *jump_func; +@@ -5369,7 +5312,18 @@ find_scalar_values_for_callers_subset (vec &known_csts, + } + + if (newval) +- known_csts[i] = newval; ++ { ++ if (dump_file && (dump_flags & TDF_DETAILS)) ++ { ++ fprintf (dump_file, " adding an extra known scalar value "); ++ print_ipcp_constant_value (dump_file, newval); ++ fprintf (dump_file, " for "); ++ ipa_dump_param (dump_file, info, i); ++ fprintf (dump_file, "\n"); ++ } ++ ++ known_csts[i] = newval; ++ } + } + } + +@@ -5378,34 +5332,23 @@ find_scalar_values_for_callers_subset (vec &known_csts, + CALLERS. */ + + static void +-find_contexts_for_caller_subset (vec +- &known_contexts, +- ipa_node_params *info, +- const vec &callers) ++find_more_contexts_for_caller_subset (cgraph_node *node, ++ vec ++ *known_contexts, ++ const vec &callers) + { ++ ipa_node_params *info = ipa_node_params_sum->get (node); + int i, count = ipa_get_param_count (info); + + for (i = 0; i < count; i++) + { +- if (!ipa_is_param_used (info, i)) +- continue; ++ cgraph_edge *cs; + +- ipcp_lattice *ctxlat +- = ipa_get_poly_ctx_lat (info, i); +- if (ctxlat->bottom) ++ if (ipa_get_poly_ctx_lat (info, i)->bottom ++ || (known_contexts->exists () ++ && !(*known_contexts)[i].useless_p ())) + continue; +- if (ctxlat->is_single_const ()) +- { +- if (!ctxlat->values->value.useless_p ()) +- { +- if (known_contexts.is_empty ()) +- known_contexts.safe_grow_cleared (count, true); +- known_contexts[i] = ctxlat->values->value; +- } +- continue; +- } + +- cgraph_edge *cs; + ipa_polymorphic_call_context newval; + bool first = true; + int j; +@@ -5433,9 +5376,20 @@ find_contexts_for_caller_subset (vec + + if (!newval.useless_p ()) + { +- if (known_contexts.is_empty ()) +- known_contexts.safe_grow_cleared (count, true); +- known_contexts[i] = newval; ++ if (dump_file && (dump_flags & TDF_DETAILS)) ++ { ++ fprintf (dump_file, " adding an extra known polymorphic " ++ "context "); ++ print_ipcp_constant_value (dump_file, newval); ++ fprintf (dump_file, " for "); ++ ipa_dump_param (dump_file, info, i); ++ fprintf (dump_file, "\n"); ++ } ++ ++ if (!known_contexts->exists ()) ++ known_contexts->safe_grow_cleared (ipa_get_param_count (info), ++ true); ++ (*known_contexts)[i] = newval; + } + + } +@@ -5622,12 +5576,11 @@ push_agg_values_from_edge (struct cgraph_edge *cs, + + + /* Look at edges in CALLERS and collect all known aggregate values that arrive +- from all of them into INTERIM. Return how many there are. */ ++ from all of them. Return nullptr if there are none. */ + +-static unsigned int +-find_aggregate_values_for_callers_subset_1 (vec &interim, +- struct cgraph_node *node, +- const vec &callers) ++static struct vec * ++find_aggregate_values_for_callers_subset (struct cgraph_node *node, ++ const vec &callers) + { + ipa_node_params *dest_info = ipa_node_params_sum->get (node); + if (dest_info->ipcp_orig_node) +@@ -5635,11 +5588,12 @@ find_aggregate_values_for_callers_subset_1 (vec &interim, + + /* gather_edges_for_value puts a non-recursive call into the first element of + callers if it can. */ ++ auto_vec interim; + push_agg_values_from_edge (callers[0], dest_info, &interim, NULL, true); + + unsigned valid_entries = interim.length (); + if (!valid_entries) +- return 0; ++ return nullptr; + + unsigned caller_count = callers.length(); + for (unsigned i = 1; i < caller_count; i++) +@@ -5650,47 +5604,9 @@ find_aggregate_values_for_callers_subset_1 (vec &interim, + + valid_entries = intersect_argaggs_with (interim, last); + if (!valid_entries) +- return 0; ++ return nullptr; + } + +- return valid_entries; +-} +- +-/* Look at edges in CALLERS and collect all known aggregate values that arrive +- from all of them and return them in a garbage-collected vector. Return +- nullptr if there are none. */ +- +-static void +-find_aggregate_values_for_callers_subset (vec &res, +- struct cgraph_node *node, +- const vec &callers) +-{ +- auto_vec interim; +- unsigned valid_entries +- = find_aggregate_values_for_callers_subset_1 (interim, node, callers); +- if (!valid_entries) +- return; +- +- for (const ipa_argagg_value &av : interim) +- if (av.value) +- res.safe_push(av); +- return; +-} +- +-/* Look at edges in CALLERS and collect all known aggregate values that arrive +- from all of them and return them in a garbage-collected vector. Return +- nullptr if there are none. */ +- +-static struct vec * +-find_aggregate_values_for_callers_subset_gc (struct cgraph_node *node, +- const vec &callers) +-{ +- auto_vec interim; +- unsigned valid_entries +- = find_aggregate_values_for_callers_subset_1 (interim, node, callers); +- if (!valid_entries) +- return nullptr; +- + vec *res = NULL; + vec_safe_reserve_exact (res, valid_entries); + for (const ipa_argagg_value &av : interim) +@@ -5821,78 +5737,62 @@ copy_useful_known_contexts (const vec &known_conte + return vNULL; + } + +-/* Return true if the VALUE is represented in KNOWN_CSTS at INDEX if OFFSET is +- minus one or in AGGVALS for INDEX and OFFSET otherwise. */ ++/* Copy known scalar values from AVALS into KNOWN_CSTS and modify the copy ++ according to VAL and INDEX. If non-empty, replace KNOWN_CONTEXTS with its ++ copy too. */ + +-DEBUG_FUNCTION bool +-ipcp_val_replacement_ok_p (vec &known_csts, +- vec &, +- vec *aggvals, +- int index, HOST_WIDE_INT offset, tree value) ++static void ++copy_known_vectors_add_val (ipa_auto_call_arg_values *avals, ++ vec *known_csts, ++ vec *known_contexts, ++ ipcp_value *val, int index) + { +- tree v; +- if (offset == -1) +- v = known_csts[index]; +- else +- { +- const ipa_argagg_value_list avl (aggvals); +- v = avl.get_value (index, offset / BITS_PER_UNIT); +- } ++ *known_csts = avals->m_known_vals.copy (); ++ *known_contexts = copy_useful_known_contexts (avals->m_known_contexts); ++ (*known_csts)[index] = val->value; ++} + +- return v && values_equal_for_ipcp_p (v, value); ++/* Copy known scalar values from AVALS into KNOWN_CSTS. Similarly, copy ++ contexts to KNOWN_CONTEXTS and modify the copy according to VAL and ++ INDEX. */ ++ ++static void ++copy_known_vectors_add_val (ipa_auto_call_arg_values *avals, ++ vec *known_csts, ++ vec *known_contexts, ++ ipcp_value *val, ++ int index) ++{ ++ *known_csts = avals->m_known_vals.copy (); ++ *known_contexts = avals->m_known_contexts.copy (); ++ (*known_contexts)[index] = val->value; + } + +-/* Dump to F all the values in AVALS for which we are re-evaluating the effects +- on the function represented b INFO. */ ++/* Return true if OFFSET indicates this was not an aggregate value or there is ++ a replacement equivalent to VALUE, INDEX and OFFSET among those in the ++ AGGVALS list. */ + +-DEBUG_FUNCTION void +-dump_reestimation_message (FILE *f, ipa_node_params *info, +- const ipa_auto_call_arg_values &avals) +-{ +- fprintf (f, " Re-estimating effects with\n" +- " Scalar constants:"); +- int param_count = ipa_get_param_count (info); +- for (int i = 0; i < param_count; i++) +- if (avals.m_known_vals[i]) +- { +- fprintf (f, " %i:", i); +- print_ipcp_constant_value (f, avals.m_known_vals[i]); +- } +- fprintf (f, "\n"); +- if (!avals.m_known_contexts.is_empty ()) +- { +- fprintf (f, " Pol. contexts:"); +- for (int i = 0; i < param_count; i++) +- if (!avals.m_known_contexts[i].useless_p ()) +- { +- fprintf (f, " %i:", i); +- avals.m_known_contexts[i].dump (f); +- } +- fprintf (f, "\n"); +- } +- if (!avals.m_known_aggs.is_empty ()) +- { +- fprintf (f, " Aggregate replacements:"); +- ipa_argagg_value_list avs (&avals); +- avs.dump (f); +- } ++DEBUG_FUNCTION bool ++ipcp_val_agg_replacement_ok_p (vec *aggvals, ++ int index, HOST_WIDE_INT offset, tree value) ++{ ++ if (offset == -1) ++ return true; ++ ++ const ipa_argagg_value_list avl (aggvals); ++ tree v = avl.get_value (index, offset / BITS_PER_UNIT); ++ return v && values_equal_for_ipcp_p (v, value); + } + +-/* Return true if the VALUE is represented in KNOWN_CONTEXTS at INDEX and that +- if OFFSET is is equal to minus one (because source of a polymorphic context +- cannot be an aggregate value). */ ++/* Return true if offset is minus one because source of a polymorphic context ++ cannot be an aggregate value. */ + + DEBUG_FUNCTION bool +-ipcp_val_replacement_ok_p (vec &, +- vec &known_contexts, +- vec *, +- int index, HOST_WIDE_INT offset, +- ipa_polymorphic_call_context value) ++ipcp_val_agg_replacement_ok_p (vec *, ++ int , HOST_WIDE_INT offset, ++ ipa_polymorphic_call_context) + { +- if (offset != -1) +- return false; +- return (!known_contexts[index].useless_p () +- && known_contexts[index].equal_to (value)); ++ return offset == -1; + } + + /* Decide whether to create a special version of NODE for value VAL of +@@ -5906,12 +5806,13 @@ ipcp_val_replacement_ok_p (vec &, + template + static bool + decide_about_value (struct cgraph_node *node, int index, HOST_WIDE_INT offset, +- ipcp_value *val, ++ ipcp_value *val, ipa_auto_call_arg_values *avals, + vec *self_gen_clones, int cur_sweep) + { + int caller_count; + sreal freq_sum; + profile_count count_sum, rec_count_sum; ++ vec callers; + bool called_without_ipa_profile; + + if (val->spec_node) +@@ -5965,78 +5866,36 @@ decide_about_value (struct cgraph_node *node, int index, HOST_WIDE_INT offset, + fprintf (dump_file, " (caller_count: %i)\n", caller_count); + } + +- vec callers; +- callers = gather_edges_for_value (val, node, caller_count); +- ipa_node_params *info = ipa_node_params_sum->get (node); +- ipa_auto_call_arg_values avals; +- avals.m_known_vals.safe_grow_cleared (ipa_get_param_count (info), true); +- find_scalar_values_for_callers_subset (avals.m_known_vals, info, callers); +- find_contexts_for_caller_subset (avals.m_known_contexts, info, callers); +- find_aggregate_values_for_callers_subset (avals.m_known_aggs, node, callers); +- +- +- if (good_cloning_opportunity_p (node, val->prop_time_benefit, +- freq_sum, count_sum, val->prop_size_cost, +- called_without_ipa_profile, cur_sweep)) +- ; +- else +- { +- /* Extern inline functions are only meaningful to clione to propagate +- values to their callees. */ +- if (DECL_EXTERNAL (node->decl) && DECL_DECLARED_INLINE_P (node->decl)) +- { +- if (dump_file && (dump_flags & TDF_DETAILS)) +- fprintf (dump_file, " Skipping extern inline.\n"); +- return false; +- } +- if (dump_file && (dump_flags & TDF_DETAILS)) +- dump_reestimation_message (dump_file, info, avals); +- +- ipa_call_estimates estimates; +- estimate_ipcp_clone_size_and_time (node, &avals, &estimates); +- int removable_params_cost = 0; +- for (tree t : avals.m_known_vals) +- if (t) +- removable_params_cost += estimate_move_cost (TREE_TYPE (t), true); +- +- int size = estimates.size - caller_count * removable_params_cost; +- +- if (size <= 0) +- { +- if (dump_file) +- fprintf (dump_file, " Code not going to grow.\n"); +- } +- else +- { +- sreal time_benefit +- = ((estimates.nonspecialized_time - estimates.time) +- + hint_time_bonus (node, estimates) +- + (devirtualization_time_bonus (node, &avals) +- + removable_params_cost)); +- +- if (!good_cloning_opportunity_p (node, time_benefit, freq_sum, +- count_sum, size, +- called_without_ipa_profile, +- cur_sweep)) +- return false; +- } +- } ++ if (!good_cloning_opportunity_p (node, val->local_time_benefit, ++ freq_sum, count_sum, ++ val->local_size_cost, ++ called_without_ipa_profile, cur_sweep) ++ && !good_cloning_opportunity_p (node, val->prop_time_benefit, ++ freq_sum, count_sum, val->prop_size_cost, ++ called_without_ipa_profile, cur_sweep)) ++ return false; + + if (dump_file) + fprintf (dump_file, " Creating a specialized node of %s.\n", + node->dump_name ()); + +- vec known_csts = avals.m_known_vals.copy (); +- vec known_contexts +- = copy_useful_known_contexts (avals.m_known_contexts); +- +- vec *aggvals = NULL; +- vec_safe_reserve_exact (aggvals, avals.m_known_aggs.length ()); +- for (const ipa_argagg_value &av : avals.m_known_aggs) +- aggvals->quick_push (av); +- gcc_checking_assert (ipcp_val_replacement_ok_p (known_csts, known_contexts, +- aggvals, index, +- offset, val->value)); ++ vec known_csts; ++ vec known_contexts; ++ ++ callers = gather_edges_for_value (val, node, caller_count); ++ if (offset == -1) ++ copy_known_vectors_add_val (avals, &known_csts, &known_contexts, val, index); ++ else ++ { ++ known_csts = avals->m_known_vals.copy (); ++ known_contexts = copy_useful_known_contexts (avals->m_known_contexts); ++ } ++ find_more_scalar_values_for_callers_subset (node, known_csts, callers); ++ find_more_contexts_for_caller_subset (node, &known_contexts, callers); ++ vec *aggvals ++ = find_aggregate_values_for_callers_subset (node, callers); ++ gcc_checking_assert (ipcp_val_agg_replacement_ok_p (aggvals, index, ++ offset, val->value)); + val->spec_node = create_specialized_node (node, known_csts, known_contexts, + aggvals, callers); + +@@ -6074,52 +5933,6 @@ ipa_range_contains_p (const vrange &r, tree val) + return r.contains_p (val); + } + +-/* Structure holding opportunitties so that they can be pre-sorted. */ +- +-struct cloning_opportunity_ranking +-{ +- /* A very rough evaluation of likely benefit. */ +- sreal eval; +- /* In the case of aggregate constants, a non-negative offset within their +- aggregates. -1 for scalar constants, -2 for polymorphic contexts. */ +- HOST_WIDE_INT offset; +- /* The value being considered for evaluation for cloning. */ +- ipcp_value_base *val; +- /* Index of the formal parameter the value is coming in. */ +- int index; +-}; +- +-/* Helper function to qsort a vecotr of cloning opportunities. */ +- +-static int +-compare_cloning_opportunities (const void *a, const void *b) +-{ +- const cloning_opportunity_ranking *o1 +- = (const cloning_opportunity_ranking *) a; +- const cloning_opportunity_ranking *o2 +- = (const cloning_opportunity_ranking *) b; +- if (o1->eval < o2->eval) +- return 1; +- if (o1->eval > o2->eval) +- return -1; +- return 0; +-} +- +-/* Use the estimations in VAL to determine how good a candidate it represents +- for the purposes of ordering real evaluation of opportunities (which +- includes information about incoming edges, among other things). */ +- +-static sreal +-cloning_opportunity_ranking_evaluation (const ipcp_value_base *val) +-{ +- sreal e1 = (val->local_time_benefit * 1000) / MAX (val->local_size_cost, 1); +- sreal e2 = (val->prop_time_benefit * 1000) / MAX (val->prop_size_cost, 1); +- if (e2 > e1) +- return e2; +- else +- return e1; +-} +- + /* Decide whether and what specialized clones of NODE should be created. + CUR_SWEEP is the number of the current sweep of the call-graph during the + decision stage. */ +@@ -6128,7 +5941,7 @@ static bool + decide_whether_version_node (struct cgraph_node *node, int cur_sweep) + { + ipa_node_params *info = ipa_node_params_sum->get (node); +- int count = ipa_get_param_count (info); ++ int i, count = ipa_get_param_count (info); + bool ret = false; + + if (info->node_dead || count == 0) +@@ -6138,8 +5951,13 @@ decide_whether_version_node (struct cgraph_node *node, int cur_sweep) + fprintf (dump_file, "\nEvaluating opportunities for %s.\n", + node->dump_name ()); + +- auto_vec opp_ranking; +- for (int i = 0; i < count;i++) ++ auto_vec self_gen_clones; ++ ipa_auto_call_arg_values avals; ++ int removable_params_cost; ++ bool ctx_independent_const ++ = gather_context_independent_values (info, &avals, &removable_params_cost); ++ ++ for (i = 0; i < count;i++) + { + if (!ipa_is_param_used (info, i)) + continue; +@@ -6149,7 +5967,7 @@ decide_whether_version_node (struct cgraph_node *node, int cur_sweep) + ipcp_lattice *ctxlat = &plats->ctxlat; + + if (!lat->bottom +- && !lat->is_single_const ()) ++ && !avals.m_known_vals[i]) + { + ipcp_value *val; + for (val = lat->values; val; val = val->next) +@@ -6176,12 +5994,8 @@ decide_whether_version_node (struct cgraph_node *node, int cur_sweep) + } + continue; + } +- cloning_opportunity_ranking opp; +- opp.eval = cloning_opportunity_ranking_evaluation (val); +- opp.offset = -1; +- opp.val = val; +- opp.index = i; +- opp_ranking.safe_push (opp); ++ ret |= decide_about_value (node, i, -1, val, &avals, ++ &self_gen_clones, cur_sweep); + } + } + +@@ -6196,83 +6010,37 @@ decide_whether_version_node (struct cgraph_node *node, int cur_sweep) + && (plats->aggs_contain_variable + || !aglat->is_single_const ())) + for (val = aglat->values; val; val = val->next) +- { +- cloning_opportunity_ranking opp; +- opp.eval = cloning_opportunity_ranking_evaluation (val); +- opp.offset = aglat->offset; +- opp.val = val; +- opp.index = i; +- opp_ranking.safe_push (opp); +- } ++ ret |= decide_about_value (node, i, aglat->offset, val, &avals, ++ &self_gen_clones, cur_sweep); + } + + if (!ctxlat->bottom +- && !ctxlat->is_single_const ()) ++ && avals.m_known_contexts[i].useless_p ()) + { + ipcp_value *val; + for (val = ctxlat->values; val; val = val->next) +- if (!val->value.useless_p ()) +- { +- cloning_opportunity_ranking opp; +- opp.eval = cloning_opportunity_ranking_evaluation (val); +- opp.offset = -2; +- opp.val = val; +- opp.index = i; +- opp_ranking.safe_push (opp); +- } +- } +- } +- +- if (!opp_ranking.is_empty ()) +- { +- opp_ranking.qsort (compare_cloning_opportunities); +- auto_vec self_gen_clones; +- for (const cloning_opportunity_ranking &opp : opp_ranking) +- if (opp.offset == -2) +- { +- ipcp_value *val +- = static_cast *> +- (opp.val); +- ret |= decide_about_value (node, opp.index, -1, val, ++ ret |= decide_about_value (node, i, -1, val, &avals, + &self_gen_clones, cur_sweep); +- } +- else +- { +- ipcp_value *val = static_cast *> (opp.val); +- ret |= decide_about_value (node, opp.index, opp.offset, val, +- &self_gen_clones, cur_sweep); +- } +- +- if (!self_gen_clones.is_empty ()) +- { +- self_gen_clones.safe_push (node); +- update_counts_for_self_gen_clones (node, self_gen_clones); + } + } + +- struct caller_statistics stats; +- init_caller_stats (&stats); +- node->call_for_symbol_thunks_and_aliases (gather_caller_stats, &stats, +- false); +- if (!stats.n_calls) ++ if (!self_gen_clones.is_empty ()) + { +- if (dump_file) +- fprintf (dump_file, " Not cloning for all contexts because " +- "there are no callers of the original node (any more).\n"); +- return ret; ++ self_gen_clones.safe_push (node); ++ update_counts_for_self_gen_clones (node, self_gen_clones); + } + + bool do_clone_for_all_contexts = false; +- ipa_auto_call_arg_values avals; +- int removable_params_cost; +- bool ctx_independent_const +- = gather_context_independent_values (info, &avals, &removable_params_cost); + sreal devirt_bonus = devirtualization_time_bonus (node, &avals); + if (ctx_independent_const || devirt_bonus > 0 + || (removable_params_cost && clone_for_param_removal_p (node))) + { +- ipa_call_estimates estimates; ++ struct caller_statistics stats; ++ ipa_call_estimates estimates; + ++ init_caller_stats (&stats); ++ node->call_for_symbol_thunks_and_aliases (gather_caller_stats, &stats, ++ false); + estimate_ipcp_clone_size_and_time (node, &avals, &estimates); + sreal time = estimates.nonspecialized_time - estimates.time; + time += devirt_bonus; +@@ -6284,7 +6052,13 @@ decide_whether_version_node (struct cgraph_node *node, int cur_sweep) + fprintf (dump_file, " - context independent values, size: %i, " + "time_benefit: %f\n", size, (time).to_double ()); + +- if (size <= 0 || node->local) ++ if (!stats.n_calls) ++ { ++ if (dump_file) ++ fprintf (dump_file, " Not cloning for all contexts because " ++ "there are no callers of the original node left.\n"); ++ } ++ else if (size <= 0 || node->local) + { + if (!dbg_cnt (ipa_cp_values)) + return ret; +@@ -6344,14 +6118,19 @@ decide_whether_version_node (struct cgraph_node *node, int cur_sweep) + fprintf (dump_file, " Creating a specialized node of %s " + "for all known contexts.\n", node->dump_name ()); + +- vec known_csts = vNULL; +- known_csts.safe_grow_cleared (count, true); +- find_scalar_values_for_callers_subset (known_csts, info, callers); +- vec known_contexts = vNULL; +- find_contexts_for_caller_subset (known_contexts, info, callers); ++ vec known_csts = avals.m_known_vals.copy (); ++ vec known_contexts ++ = copy_useful_known_contexts (avals.m_known_contexts); ++ find_more_scalar_values_for_callers_subset (node, known_csts, callers); ++ find_more_contexts_for_caller_subset (node, &known_contexts, callers); + vec *aggvals +- = find_aggregate_values_for_callers_subset_gc (node, callers); ++ = find_aggregate_values_for_callers_subset (node, callers); + ++ if (!known_contexts_useful_p (known_contexts)) ++ { ++ known_contexts.release (); ++ known_contexts = vNULL; ++ } + struct cgraph_node *clone = create_specialized_node (node, known_csts, + known_contexts, + aggvals, callers); +@@ -6576,11 +6355,6 @@ ipcp_store_vr_results (void) + bool do_vr = true; + bool do_bits = true; + +- /* If the function is not local, the gathered information is only useful +- for clones. */ +- if (!node->local) +- continue; +- + if (!info || !opt_for_fn (node->decl, flag_ipa_vrp)) + { + if (dump_file) +--- gcc/ipa-cp.h ++++ gcc/ipa-cp.h +@@ -201,8 +201,6 @@ public: + bool set_to_bottom (); + bool set_to_constant (widest_int, widest_int); + bool known_nonzero_p () const; +- bool set_recipient_only (); +- bool recipient_only_p () const {return m_recipient_only; } + + widest_int get_value () const { return m_value; } + widest_int get_mask () const { return m_mask; } +@@ -218,11 +216,6 @@ private: + enum { IPA_BITS_UNDEFINED, IPA_BITS_CONSTANT, IPA_BITS_VARYING } + m_lattice_val = IPA_BITS_UNDEFINED; + +- /* Set to true if the lattice is valid only as a recipient of propagatad +- values but cannot be used as source of propagation because there may be +- unknown callers. */ +- bool m_recipient_only; +- + /* Similar to ccp_lattice_t, mask represents which bits of value are constant. + If a bit in mask is set to 0, then the corresponding bit in + value is known to be constant. */ +@@ -238,16 +231,10 @@ class ipcp_vr_lattice + { + public: + value_range m_vr; +- /* Set to true if the lattice is valid only as a recipient of propagatad +- values but cannot be used as source of propagation because there may be +- unknown callers. */ +- bool m_recipient_only; + + inline bool bottom_p () const; + inline bool top_p () const; + inline bool set_to_bottom (); +- bool set_recipient_only (); +- bool recipient_only_p () const {return m_recipient_only; } + bool meet_with (const vrange &p_vr); + bool meet_with (const ipcp_vr_lattice &other); + void init (tree type); +@@ -264,7 +251,6 @@ ipcp_vr_lattice::init (tree type) + m_vr.set_type (type); + + // Otherwise m_vr will default to unsupported_range. +- m_recipient_only = false; + } + + /* Structure containing lattices for a parameter itself and for pieces of +--- gcc/testsuite/gcc.dg/ipa/ipcp-agg-14.c ++++ gcc/testsuite/gcc.dg/ipa/ipcp-agg-14.c +@@ -1,49 +0,0 @@ +-/* { dg-do compile } */ +-/* { dg-options "-O3 -fno-ipa-sra -fno-partial-inlining -fdump-ipa-cp-details" } */ +- +-struct S +-{ +- int a, b, m, n, o, p; +-}; +- +- +-void __attribute__ ((noinline)) +-foo (struct S *p, double *x, double *y, double *z) +-{ +- if (p->a == 0 && p->b == 0) +- return; +- +- /* Something long so that we do not clone unless we know it will +- disappear: */ +- for (int i = 0; i < p->m; i++) +- { +- if (i < p->m-1) +- x[i] += x[i+1] * y[0]; +- for (int j = 0; j < p->n; j++) +- for (int k = 0; j < p->o; k++) +- { +- double s = *z; +- for (int l = 1; l < p->p; l++) +- s += z[l]; +- x[i] += s + 2*y[j] + 7*z[k]; +- } +- } +-} +- +-int get_int (void); +- +-void +- entry (int c, double *x, double *y, double *z) +-{ +- struct S s; +- +- s.a = 0; +- s.b = 0; +- s.m = get_int (); +- s.n = get_int (); +- s.o = get_int (); +- s.p = get_int (); +- foo (&s, x, y, z); +-} +- +-/* { dg-final { scan-ipa-dump "Creating a specialized node of foo" "cp" } } */ +--- gcc/testsuite/gcc.dg/ipa/ipcp-agg-2.c ++++ gcc/testsuite/gcc.dg/ipa/ipcp-agg-2.c +@@ -37,5 +37,5 @@ entry (int c) + foo (&s); + } + /* { dg-final { scan-ipa-dump-times "Creating a specialized node of foo/\[0-9\]*\\." 2 "cp" } } */ +-/* { dg-final { scan-ipa-dump "Aggregate replacements:" "cp" } } */ ++/* { dg-final { scan-ipa-dump-times "Aggregate replacements:" 4 "cp" } } */ + /* { dg-final { scan-tree-dump-not "->c;" "optimized" } } */ +--- gcc/testsuite/gcc.dg/ipa/ipcp-agg-3.c ++++ gcc/testsuite/gcc.dg/ipa/ipcp-agg-3.c +@@ -37,6 +37,6 @@ entry (int c) + foo (0, &s); + } + /* { dg-final { scan-ipa-dump-times "Creating a specialized node of foo/\[0-9\]*\\." 2 "cp" } } */ +-/* { dg-final { scan-ipa-dump "Aggregate replacements: 1" "cp" } } */ +-/* { dg-final { scan-ipa-dump "Aggregate replacements: 0" "cp" } } */ ++/* { dg-final { scan-ipa-dump-times "Aggregate replacements: 1" 2 "cp" } } */ ++/* { dg-final { scan-ipa-dump-times "Aggregate replacements: 0" 2 "cp" } } */ + /* { dg-final { scan-tree-dump-not "->c;" "optimized" } } */ +--- gcc/testsuite/gcc.dg/ipa/ipcp-agg-4.c ++++ gcc/testsuite/gcc.dg/ipa/ipcp-agg-4.c +@@ -56,5 +56,5 @@ entry2 (int c) + } + + /* { dg-final { scan-ipa-dump-times "Creating a specialized node of foo/\[0-9\]*\\." 2 "cp" } } */ +-/* { dg-final { scan-ipa-dump "Aggregate replacements:" "cp" } } */ ++/* { dg-final { scan-ipa-dump-times "Aggregate replacements:" 4 "cp" } } */ + /* { dg-final { scan-tree-dump-not "->c;" "optimized" } } */ +--- gcc/testsuite/gcc.dg/vect/pr101145_1.c ++++ gcc/testsuite/gcc.dg/vect/pr101145_1.c +@@ -1,5 +1,5 @@ + /* { dg-require-effective-target vect_char_add } */ +-/* { dg-additional-options "-O3 -fno-ipa-cp" } */ ++/* { dg-additional-options "-O3" } */ + #define TYPE signed char + #define MIN -128 + #define MAX 127 +--- gcc/testsuite/gcc.dg/vect/pr101145_2.c ++++ gcc/testsuite/gcc.dg/vect/pr101145_2.c +@@ -1,5 +1,5 @@ + /* { dg-require-effective-target vect_char_add } */ +-/* { dg-additional-options "-O3 -fno-ipa-cp" } */ ++/* { dg-additional-options "-O3" } */ + #define TYPE unsigned char + #define MIN 0 + #define MAX 255 +--- gcc/testsuite/gcc.dg/vect/pr101145_3.c ++++ gcc/testsuite/gcc.dg/vect/pr101145_3.c +@@ -1,5 +1,5 @@ + /* { dg-require-effective-target vect_long_long } */ +-/* { dg-additional-options "-O3 -fno-ipa-cp" } */ ++/* { dg-additional-options "-O3" } */ + #define TYPE int * + #define MIN ((TYPE)0) + #define MAX ((TYPE)((long long)-1)) +--- gcc/testsuite/gcc.dg/ipa/pr123543.c ++++ gcc/testsuite/gcc.dg/ipa/pr123543.c +@@ -1,14 +0,0 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3" } */ ++ ++__attribute__((noinline)) ++static int local_f(int a, int b) { return a + b; } ++ ++__attribute__((noinline)) ++int extern_f(int a, int b) { return local_f(a, b); } ++ ++int unused_g1(int b) { return extern_f(0, b); } ++ ++int (*volatile fp)(int, int) = extern_f; ++ ++int main() { if (fp(1, 2) != 3) __builtin_abort(); } diff --git a/gcc16-libstdc++-docs.patch b/gcc16-libstdc++-docs.patch index f1fa736..7d2d357 100644 --- a/gcc16-libstdc++-docs.patch +++ b/gcc16-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 16.0.0 ++ Release 16.0.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation @@ -17,7 +17,7 @@

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 16.0.0 release, ++ for the 16.0.1 release, + online for each GCC release and diff --git a/gcc16-pr121778-revert.patch b/gcc16-pr121778-revert.patch new file mode 100644 index 0000000..5d43cad --- /dev/null +++ b/gcc16-pr121778-revert.patch @@ -0,0 +1,170 @@ +Temporarily revert PR121778 until PR123530 is fixed. + +2026-01-09 Shreya Munnangi + Jeff Law + + PR target/121778 + gcc/ + * match.pd: Add pattern to recognize rotate with one or more + bits flipped via xor. + * config/sh/sh.md (*rotcl); New variant which handles the output + we get after the match.pd change above. + + gcc/testsuite/ + * gcc.target/riscv/pr121778.c: New test. + +--- gcc/config/sh/sh.md ++++ gcc/config/sh/sh.md +@@ -3271,25 +3271,6 @@ (define_insn_and_split "*rotcl" + operands[3] = get_t_reg_rtx (); + }) + +-(define_insn_and_split "*rotcl" +- [(set (match_operand:SI 0 "arith_reg_dest") +- (xor:SI (rotate:SI (match_operand:SI 1 "arith_reg_operand") +- (const_int 1)) +- (const_int 1))) +- (clobber (reg:SI T_REG))] +- "TARGET_SH1 && can_create_pseudo_p ()" +- "#" +- "&& 1" +- [(parallel [(set (match_dup 0) +- (ior:SI (ashift:SI (match_dup 1) (const_int 1)) +- (and:SI (match_dup 3) (const_int 1)))) +- (clobber (reg:SI T_REG))])] +-{ +- rtx t = gen_rtx_GE (SImode, operands[1], const0_rtx); +- sh_split_treg_set_expr (t, curr_insn); +- operands[3] = get_t_reg_rtx (); +-}) +- + (define_insn_and_split "*rotcl" + [(set (match_operand:SI 0 "arith_reg_dest") + (ior:SI (and:SI (match_operand:SI 1 "arith_reg_or_t_reg_operand") +--- gcc/match.pd ++++ gcc/match.pd +@@ -12172,27 +12172,3 @@ and, + (simplify + (IFN_VEC_SHL_INSERT (vec_duplicate@1 @0) @0) + @1) +- +-/* In this case the XOR flips bits that originate from the result of the +- right shift and do not impact the result of the left shift. We can +- reassociate the XOR to work on the final result and simplify the rest +- to a rotate. */ +-(simplify +- (bit_ior:c (lshift @0 INTEGER_CST@1) +- (bit_xor (rshift @2 INTEGER_CST@3) INTEGER_CST@4)) +- (if (((~((HOST_WIDE_INT_1U << tree_to_uhwi (@1)) - 1)) & tree_to_uhwi (@4)) == 0 +- && (tree_to_uhwi (@1) + tree_to_uhwi (@3)) == TYPE_PRECISION (type) +- && TYPE_UNSIGNED (type) +- && @0 == @2) +- (bit_xor (rrotate @0 @3) @4))) +- +-/* Similarly, but in this case the XOR flips bits that originate from the +- result of the left shift. */ +-(simplify +- (bit_ior:c (bit_xor (lshift @0 INTEGER_CST@1) INTEGER_CST@2) +- (rshift @3 INTEGER_CST@4)) +- (if ((((((HOST_WIDE_INT_1U << tree_to_uhwi (@1)) - 1)) & tree_to_uhwi (@2)) == 0) +- && (tree_to_uhwi (@1) + tree_to_uhwi (@4)) == TYPE_PRECISION (type) +- && TYPE_UNSIGNED (type) +- && @0 == @3) +- (bit_xor (rrotate @0 @4) @2))) +--- gcc/testsuite/gcc.target/riscv/pr121778.c ++++ gcc/testsuite/gcc.target/riscv/pr121778.c +@@ -1,94 +0,0 @@ +-/* { dg-do compile } */ +-/* { dg-options "-O2 -march=rv64gcb -mabi=lp64d" { target rv64} } */ +-/* { dg-options "-O2 -march=rv32gcb -mabi=ilp32" { target rv32} } */ +- +-/* We need to adjust the constant so this works for rv32 and rv64. */ +-#if __riscv_xlen == 32 +-#define ONE 1U +-#define TYPE unsigned int +-#else +-#define ONE 1UL +-#define TYPE unsigned long +-#endif +- +-#define F1(C) TYPE test_01##C (TYPE a) { return (a << (__riscv_xlen - C)) | ((a >> C) ^ 1); } +-#define F2(C) TYPE test_02##C (TYPE a) { return ((a >> (__riscv_xlen - C)) ^ 1) | (a << C); } +-#define F3(C) TYPE test_03##C (TYPE a) { return ((a << (__riscv_xlen - C)) ^ (ONE << (__riscv_xlen - 1))) | (a >> C); } +-#define F4(C) TYPE test_04##C (TYPE a) { return (a >> (__riscv_xlen - C)) | ((a << C) ^ (ONE << (__riscv_xlen - 1))); } +- +-#define F(C) F1(C) F2(C) F3(C) F4(C) +- +- +-F (1) +-F (2) +-F (3) +-F (4) +-F (5) +-F (6) +-F (7) +-F (8) +-F (9) +-F (10) +-F (11) +-F (12) +-F (13) +-F (14) +-F (15) +-F (16) +-F (17) +-F (18) +-F (19) +-F (20) +-F (21) +-F (22) +-F (23) +-F (24) +-F (25) +-F (26) +-F (27) +-F (28) +-F (29) +-F (30) +-F (31) +-#if __riscv_xlen == 64 +-F (32) +-F (33) +-F (34) +-F (35) +-F (36) +-F (37) +-F (38) +-F (39) +-F (40) +-F (41) +-F (42) +-F (43) +-F (44) +-F (45) +-F (46) +-F (47) +-F (48) +-F (49) +-F (50) +-F (51) +-F (52) +-F (53) +-F (54) +-F (55) +-F (56) +-F (57) +-F (58) +-F (59) +-F (60) +-F (61) +-F (62) +-F (63) +- +-/* { dg-final { scan-assembler-times "\trori" 252 { target { rv64 } } } } */ +-/* { dg-final { scan-assembler-times "\txori" 126 { target { rv64 } } } } */ +-/* { dg-final { scan-assembler-times "\tbinv" 126 { target { rv64 } } } } */ +- +-/* { dg-final { scan-assembler-times "\trori" 124 { target { rv32 } } } } */ +-/* { dg-final { scan-assembler-times "\txori" 62 { target { rv32 } } } } */ +-/* { dg-final { scan-assembler-times "\tbinv" 62 { target { rv32 } } } } */ +-#endif diff --git a/gcc16-pr123189.patch b/gcc16-pr123189.patch deleted file mode 100644 index 4262362..0000000 --- a/gcc16-pr123189.patch +++ /dev/null @@ -1,58 +0,0 @@ -Since we now defer noexcept parsing for templated friends, some places -need to be updated to cope with friend template specializations -- their -TI_TEMPLATE is a TREE_LIST rather than a TEMPLATE_DECL, and they never -introduce new template parameters. - -2026-01-09 Patrick Palka - - PR c++/123189 - -gcc/cp/ChangeLog: - - * name-lookup.cc (binding_to_template_parms_of_scope_p): - Gracefully handle TEMPLATE_INFO whose TI_TEMPLATE is a TREE_LIST. - * pt.cc (maybe_begin_member_template_processing): For a friend - template specialization consider its class context instead. - -gcc/testsuite/ChangeLog: - - * g++.dg/cpp0x/noexcept92.C: New test. - ---- gcc/cp/name-lookup.cc -+++ gcc/cp/name-lookup.cc -@@ -8004,6 +8004,7 @@ binding_to_template_parms_of_scope_p (cxx_binding *binding, - /* The template of the current scope, iff said scope is a primary - template. */ - tmpl = (tinfo -+ && TREE_CODE (TI_TEMPLATE (tinfo)) == TEMPLATE_DECL - && PRIMARY_TEMPLATE_P (TI_TEMPLATE (tinfo)) - ? TI_TEMPLATE (tinfo) - : NULL_TREE); ---- gcc/cp/pt.cc -+++ gcc/cp/pt.cc -@@ -546,9 +546,9 @@ maybe_begin_member_template_processing (tree decl) - int levels = 0; - bool nsdmi = TREE_CODE (decl) == FIELD_DECL; - -- if (nsdmi) -+ if (nsdmi || decl_specialization_friend_p (decl)) - { -- tree ctx = DECL_CONTEXT (decl); -+ tree ctx = nsdmi ? DECL_CONTEXT (decl) : DECL_CHAIN (decl); - decl = (CLASSTYPE_TEMPLATE_INFO (ctx) - /* Disregard full specializations (c++/60999). */ - && uses_template_parms (ctx) ---- gcc/testsuite/g++.dg/cpp0x/noexcept92.C -+++ gcc/testsuite/g++.dg/cpp0x/noexcept92.C -@@ -0,0 +1,11 @@ -+// PR c++/123189 -+// { dg-do compile { target c++11 } } -+ -+template void f() noexcept(noexcept(T())); -+ -+template -+struct A { -+ friend void f() noexcept(noexcept(T())); -+}; -+ -+template struct A; diff --git a/gcc16-pr123414-revert.patch b/gcc16-pr123414-revert.patch new file mode 100644 index 0000000..475ca7b --- /dev/null +++ b/gcc16-pr123414-revert.patch @@ -0,0 +1,92 @@ +Temporarily revert PR123414 until PR123525 is fixed. + +2026-01-09 Robin Dapp + + PR tree-optimization/123414 + * tree-ssa-forwprop.cc (simplify_vector_constructor): + Use ssizetype as mask type. + +--- gcc/tree-ssa-forwprop.cc ++++ gcc/tree-ssa-forwprop.cc +@@ -3829,8 +3829,8 @@ static bool + simplify_vector_constructor (gimple_stmt_iterator *gsi) + { + gimple *stmt = gsi_stmt (*gsi); +- tree op, orig[2], type; +- unsigned i; ++ tree op, orig[2], type, elem_type; ++ unsigned elem_size, i; + unsigned HOST_WIDE_INT nelts; + unsigned HOST_WIDE_INT refnelts; + enum tree_code conv_code; +@@ -3843,6 +3843,8 @@ simplify_vector_constructor (gimple_stmt_iterator *gsi) + + if (!TYPE_VECTOR_SUBPARTS (type).is_constant (&nelts)) + return false; ++ elem_type = TREE_TYPE (type); ++ elem_size = TREE_INT_CST_LOW (TYPE_SIZE (elem_type)); + + orig[0] = NULL; + orig[1] = NULL; +@@ -4175,7 +4177,13 @@ simplify_vector_constructor (gimple_stmt_iterator *gsi) + machine_mode vmode = TYPE_MODE (perm_type); + if (!can_vec_perm_const_p (vmode, vmode, indices)) + return false; +- mask_type = build_vector_type (ssizetype, refnelts); ++ mask_type ++ = build_vector_type (build_nonstandard_integer_type (elem_size, 1), ++ refnelts); ++ if (GET_MODE_CLASS (TYPE_MODE (mask_type)) != MODE_VECTOR_INT ++ || maybe_ne (GET_MODE_SIZE (TYPE_MODE (mask_type)), ++ GET_MODE_SIZE (TYPE_MODE (perm_type)))) ++ return false; + tree op2 = vec_perm_indices_to_tree (mask_type, indices); + bool converted_orig1 = false; + gimple_seq stmts = NULL; +@@ -4240,7 +4248,13 @@ simplify_vector_constructor (gimple_stmt_iterator *gsi) + machine_mode vmode = TYPE_MODE (type); + if (!can_vec_perm_const_p (vmode, vmode, indices)) + return false; +- mask_type = build_vector_type (ssizetype, nelts); ++ mask_type ++ = build_vector_type (build_nonstandard_integer_type (elem_size, 1), ++ nelts); ++ if (GET_MODE_CLASS (TYPE_MODE (mask_type)) != MODE_VECTOR_INT ++ || maybe_ne (GET_MODE_SIZE (TYPE_MODE (mask_type)), ++ GET_MODE_SIZE (TYPE_MODE (type)))) ++ return false; + blend_op2 = vec_perm_indices_to_tree (mask_type, indices); + } + +--- gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123414.c ++++ gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123414.c +@@ -1,29 +0,0 @@ +-/* { dg-do compile } */ +-/* { dg-options "-march=rv64gcv_zvl256b -mabi=lp64d -mrvv-max-lmul=m8 -O3 -fsigned-char -fno-strict-aliasing -fwrapv -fdump-tree-optimized -std=gnu99" } */ +- +-signed char a=2; +-long long b; +-long c = 93; +-int e[1][9]; +- +-void +-g (long cc, int ee[][9]) +-{ +- for (int i = 0; i < 4; i++) +- for (int j = 0; j < 5; j++) +- for (unsigned k = 0; k < 9; k++) +- { +- a *= cc; +- for (int l = 0; l < 6; l += (ee[k] <= 0) + 2) +- ; +- } +-} +- +-int main() { +- g( c, e); +- b = (int)a; +- if (b != 34) +- __builtin_abort (); +-} +- +-/* { dg-final { scan-tree-dump-times "\[a-zA-Z_\]\[a-zA-Z0-9_\]+.=.VEC_PERM_EXPR <_\[0-9\]+, \\\{ 1(?:, 1){255} \\\}, \\\{ 0, 257, 258" 3 "optimized" } } */ diff --git a/sources b/sources index 2d3f1fe..7ba5726 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-16.0.0-20260110.tar.xz) = 9be9b72ae45f888efe30ef50f8b497ebeaef327d037ab7a70a354d05986567115447dce8ff660b69b96d3cc6e145f509f35261d3f33902f97a7169817a972eed +SHA512 (gcc-16.0.1-20260112.tar.xz) = ca2a3a0daae98b90dbde92591126de93325e8caee66fd7f6cbdff7ef453d1329e87c0593636e4db5d63a3503645cabede86ed894760ce6d3ccd3a95a974dc120 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz) = 7f862986065028df70c843fc3f2c89e200a76b48ad0bd51c749ac8a5aab7be0ebdf35be182fad2407b3281615e75be1ac6833ab6a5130ae9920169a0412f94f0 From 1c7da76a52dc36fd6ace3cfeba45abdee82d820d Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 12 Jan 2026 20:27:05 +0100 Subject: [PATCH 291/293] 16.0.1-0.1 --- gcc16-ipacp-revert.patch | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/gcc16-ipacp-revert.patch b/gcc16-ipacp-revert.patch index dae3ba2..c1424b4 100644 --- a/gcc16-ipacp-revert.patch +++ b/gcc16-ipacp-revert.patch @@ -1063,17 +1063,17 @@ Temporarily revert until PR123542 is resolved. --- gcc/testsuite/gcc.dg/ipa/pr123543.c +++ gcc/testsuite/gcc.dg/ipa/pr123543.c @@ -1,14 +0,0 @@ -+/* { dg-do run } */ -+/* { dg-options "-O3" } */ -+ -+__attribute__((noinline)) -+static int local_f(int a, int b) { return a + b; } -+ -+__attribute__((noinline)) -+int extern_f(int a, int b) { return local_f(a, b); } -+ -+int unused_g1(int b) { return extern_f(0, b); } -+ -+int (*volatile fp)(int, int) = extern_f; -+ -+int main() { if (fp(1, 2) != 3) __builtin_abort(); } +-/* { dg-do run } */ +-/* { dg-options "-O3" } */ +- +-__attribute__((noinline)) +-static int local_f(int a, int b) { return a + b; } +- +-__attribute__((noinline)) +-int extern_f(int a, int b) { return local_f(a, b); } +- +-int unused_g1(int b) { return extern_f(0, b); } +- +-int (*volatile fp)(int, int) = extern_f; +- +-int main() { if (fp(1, 2) != 3) __builtin_abort(); } From fa1effd14b1163d57f66a353a5cb3a20f13edf04 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 13 Jan 2026 14:43:02 +0100 Subject: [PATCH 292/293] 16.0.1-0.2 --- .gitignore | 1 + gcc.spec | 76 ++++++++++++++++++++++++++++-- gcc16-pr123414-revert.patch | 92 ------------------------------------- gcc16-pr123573.patch | 53 +++++++++++++++++++++ sources | 2 +- 5 files changed, 127 insertions(+), 97 deletions(-) delete mode 100644 gcc16-pr123414-revert.patch create mode 100644 gcc16-pr123573.patch diff --git a/.gitignore b/.gitignore index 73b38af..5fed11f 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ /gcc-16.0.0-20260110.tar.xz /gcc-16.0.0-20260112.tar.xz /gcc-16.0.1-20260112.tar.xz +/gcc-16.0.1-20260113.tar.xz diff --git a/gcc.spec b/gcc.spec index e461bcf..6e7eb04 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20260112 -%global gitrev 25ea0dce3d78a294015cf5df891a4630172b0d12 +%global DATE 20260113 +%global gitrev a0ec01c1ccb192681b09dd03c265e84fe2bd00e5 %global gcc_version 16.0.1 %global gcc_major 16 # Note, gcc_release must be integer, if you want to add suffixes to @@ -158,7 +158,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.1%{?dist} +Release: %{gcc_release}.2%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -327,7 +327,7 @@ Patch14: gcc16-pr120250.patch Patch15: gcc16-pr123273.patch Patch16: gcc16-ipacp-revert.patch Patch17: gcc16-pr121778-revert.patch -Patch18: gcc16-pr123414-revert.patch +Patch18: gcc16-pr123573.patch Patch50: isl-rh2155127.patch @@ -1762,6 +1762,11 @@ GROUP ( /%{_lib}/libgcc_s.so.1 libgcc.a )' > $FULLPATH/libgcc_s.so %else ln -sf /%{_lib}/libgcc_s.so.1 $FULLPATH/libgcc_s.so %endif +rm -f $FULLPATH/libgcc_s_asneeded.so +echo '/* GNU ld script + Add DT_NEEDED entry for libgcc_s.so only if needed. */ +OUTPUT_FORMAT('`gcc -Wl,--print-output-format -nostdlib -r -o /dev/null`') +INPUT ( AS_NEEDED ( -lgcc_s ) )' > $FULLPATH/libgcc_s_asneeded.so %ifarch sparcv9 ppc %ifarch ppc rm -f $FULLPATH/64/libgcc_s.so @@ -1773,6 +1778,11 @@ GROUP ( /lib64/libgcc_s.so.1 libgcc.a )' > $FULLPATH/64/libgcc_s.so %else ln -sf /lib64/libgcc_s.so.1 $FULLPATH/64/libgcc_s.so %endif +rm -f $FULLPATH/64/libgcc_s_asneeded.so +echo '/* GNU ld script + Add DT_NEEDED entry for libgcc_s.so only if needed. */ +OUTPUT_FORMAT('`gcc -m64 -Wl,--print-output-format -nostdlib -r -o /dev/null`') +INPUT ( AS_NEEDED ( -lgcc_s ) )' > $FULLPATH/64/libgcc_s_asneeded.so %endif %ifarch %{multilib_64_archs} %ifarch x86_64 ppc64 ppc64p7 @@ -1785,6 +1795,11 @@ GROUP ( /lib/libgcc_s.so.1 libgcc.a )' > $FULLPATH/32/libgcc_s.so %else ln -sf /lib/libgcc_s.so.1 $FULLPATH/32/libgcc_s.so %endif +rm -f $FULLPATH/32/libgcc_s_asneeded.so +echo '/* GNU ld script + Add DT_NEEDED entry for libgcc_s.so only if needed. */ +OUTPUT_FORMAT('`gcc -m32 -Wl,--print-output-format -nostdlib -r -o /dev/null`') +INPUT ( AS_NEEDED ( -lgcc_s ) )' > $FULLPATH/32/libgcc_s_asneeded.so %endif mv -f %{buildroot}%{_prefix}/%{_lib}/libgomp.spec $FULLPATH/ @@ -1857,6 +1872,12 @@ ln -sf ../../../libitm.so.1.* libitm.so %endif %if %{build_libatomic} ln -sf ../../../libatomic.so.1.* libatomic.so +rm -f libatomic_asneeded.so libatomic_asneeded.a +echo '/* GNU ld script + Add DT_NEEDED entry for -latomic only if needed. */ +OUTPUT_FORMAT('`gcc -Wl,--print-output-format -nostdlib -r -o /dev/null`') +INPUT ( AS_NEEDED ( -latomic ) )' > libatomic_asneeded.so +ln -sf libatomic.a libatomic_asneeded.a %endif %if %{build_libasan} ln -sf ../../../libasan.so.8.* libasan.so @@ -1898,6 +1919,12 @@ ln -sf ../../../../%{_lib}/libitm.so.1.* libitm.so %endif %if %{build_libatomic} ln -sf ../../../../%{_lib}/libatomic.so.1.* libatomic.so +rm -f libatomic_asneeded.so libatomic_asneeded.a +echo '/* GNU ld script + Add DT_NEEDED entry for -latomic only if needed. */ +OUTPUT_FORMAT('`gcc -Wl,--print-output-format -nostdlib -r -o /dev/null`') +INPUT ( AS_NEEDED ( -latomic ) )' > libatomic_asneeded.so +ln -sf libatomic.a libatomic_asneeded.a %endif %if %{build_libasan} ln -sf ../../../../%{_lib}/libasan.so.8.* libasan.so @@ -2072,6 +2099,17 @@ rm -f libatomic.so echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libatomic.so.1.* | sed 's,^.*liba,liba,'`' )' > libatomic.so echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libatomic.so.1.* | sed 's,^.*liba,liba,'`' )' > 64/libatomic.so mv -f %{buildroot}%{_prefix}/lib64/libatomic.*a 64/ +rm -f libatomic_asneeded.so libatomic_asneeded.a 64/libatomic_asneeded.so 64/libatomic_asneeded.a +echo '/* GNU ld script + Add DT_NEEDED entry for -latomic only if needed. */ +OUTPUT_FORMAT('`gcc -Wl,--print-output-format -nostdlib -r -o /dev/null`') +INPUT ( AS_NEEDED ( -latomic ) )' > libatomic_asneeded.so +ln -sf libatomic.a libatomic_asneeded.a +echo '/* GNU ld script + Add DT_NEEDED entry for -latomic only if needed. */ +OUTPUT_FORMAT('`gcc -m64 -Wl,--print-output-format -nostdlib -r -o /dev/null`') +INPUT ( AS_NEEDED ( -latomic ) )' > 64/libatomic_asneeded.so +ln -sf libatomic.a 64/libatomic_asneeded.a %endif %if %{build_libasan} rm -f libasan.so @@ -2204,6 +2242,17 @@ rm -f libatomic.so echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libatomic.so.1.* | sed 's,^.*liba,liba,'`' )' > libatomic.so echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libatomic.so.1.* | sed 's,^.*liba,liba,'`' )' > 32/libatomic.so mv -f %{buildroot}%{_prefix}/lib/libatomic.*a 32/ +rm -f libatomic_asneeded.so libatomic_asneeded.a 32/libatomic_asneeded.so 32/libatomic_asneeded.a +echo '/* GNU ld script + Add DT_NEEDED entry for -latomic only if needed. */ +OUTPUT_FORMAT('`gcc -Wl,--print-output-format -nostdlib -r -o /dev/null`') +INPUT ( AS_NEEDED ( -latomic ) )' > libatomic_asneeded.so +ln -sf libatomic.a libatomic_asneeded.a +echo '/* GNU ld script + Add DT_NEEDED entry for -latomic only if needed. */ +OUTPUT_FORMAT('`gcc -m32 -Wl,--print-output-format -nostdlib -r -o /dev/null`') +INPUT ( AS_NEEDED ( -latomic ) )' > 32/libatomic_asneeded.so +ln -sf libatomic.a 32/libatomic_asneeded.a %endif %if %{build_libasan} rm -f libasan.so @@ -2919,6 +2968,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcov.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcc_eh.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcc_s.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcc_s_asneeded.so %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp.spec %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp.so @@ -2938,6 +2988,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcov.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcc_eh.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcc_s.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcc_s_asneeded.so %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgomp.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgomp.so %if %{build_libquadmath} @@ -2951,6 +3002,8 @@ end %if %{build_libatomic} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libatomic.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libatomic.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libatomic_asneeded.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libatomic_asneeded.so %endif %if %{build_libasan} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libasan.a @@ -2969,6 +3022,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcov.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcc_eh.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcc_s.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcc_s_asneeded.so %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgomp.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgomp.so %if %{build_libquadmath} @@ -2982,6 +3036,8 @@ end %if %{build_libatomic} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic_asneeded.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic_asneeded.so %endif %if %{build_libasan} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan.a @@ -3005,6 +3061,8 @@ end %if %{build_libatomic} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic_asneeded.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic_asneeded.so %endif %if %{build_libasan} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.a @@ -3019,6 +3077,8 @@ end %if %{build_libatomic} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic_asneeded.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic_asneeded.so %endif %if %{build_libasan} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.so @@ -3914,6 +3974,14 @@ end %endif %changelog +* Tue Jan 13 2026 Jakub Jelinek 16.0.1-0.2 +- update from trunk + - PRs fortran/91960, fortran/112460, libstdc++/123396, + rtl-optimization/123444, rtl-optimization/123501, target/117581, + target/123484, testsuite/123098, tree-optimization/122843, + tree-optimization/122845, tree-optimization/123301, + tree-optimization/123525, tree-optimization/123539 + * Mon Jan 12 2026 Jakub Jelinek 16.0.1-0.1 - update from trunk - PRs c++/81337, c++/115163, c++/123526, fortran/77415, ipa/122458, diff --git a/gcc16-pr123414-revert.patch b/gcc16-pr123414-revert.patch deleted file mode 100644 index 475ca7b..0000000 --- a/gcc16-pr123414-revert.patch +++ /dev/null @@ -1,92 +0,0 @@ -Temporarily revert PR123414 until PR123525 is fixed. - -2026-01-09 Robin Dapp - - PR tree-optimization/123414 - * tree-ssa-forwprop.cc (simplify_vector_constructor): - Use ssizetype as mask type. - ---- gcc/tree-ssa-forwprop.cc -+++ gcc/tree-ssa-forwprop.cc -@@ -3829,8 +3829,8 @@ static bool - simplify_vector_constructor (gimple_stmt_iterator *gsi) - { - gimple *stmt = gsi_stmt (*gsi); -- tree op, orig[2], type; -- unsigned i; -+ tree op, orig[2], type, elem_type; -+ unsigned elem_size, i; - unsigned HOST_WIDE_INT nelts; - unsigned HOST_WIDE_INT refnelts; - enum tree_code conv_code; -@@ -3843,6 +3843,8 @@ simplify_vector_constructor (gimple_stmt_iterator *gsi) - - if (!TYPE_VECTOR_SUBPARTS (type).is_constant (&nelts)) - return false; -+ elem_type = TREE_TYPE (type); -+ elem_size = TREE_INT_CST_LOW (TYPE_SIZE (elem_type)); - - orig[0] = NULL; - orig[1] = NULL; -@@ -4175,7 +4177,13 @@ simplify_vector_constructor (gimple_stmt_iterator *gsi) - machine_mode vmode = TYPE_MODE (perm_type); - if (!can_vec_perm_const_p (vmode, vmode, indices)) - return false; -- mask_type = build_vector_type (ssizetype, refnelts); -+ mask_type -+ = build_vector_type (build_nonstandard_integer_type (elem_size, 1), -+ refnelts); -+ if (GET_MODE_CLASS (TYPE_MODE (mask_type)) != MODE_VECTOR_INT -+ || maybe_ne (GET_MODE_SIZE (TYPE_MODE (mask_type)), -+ GET_MODE_SIZE (TYPE_MODE (perm_type)))) -+ return false; - tree op2 = vec_perm_indices_to_tree (mask_type, indices); - bool converted_orig1 = false; - gimple_seq stmts = NULL; -@@ -4240,7 +4248,13 @@ simplify_vector_constructor (gimple_stmt_iterator *gsi) - machine_mode vmode = TYPE_MODE (type); - if (!can_vec_perm_const_p (vmode, vmode, indices)) - return false; -- mask_type = build_vector_type (ssizetype, nelts); -+ mask_type -+ = build_vector_type (build_nonstandard_integer_type (elem_size, 1), -+ nelts); -+ if (GET_MODE_CLASS (TYPE_MODE (mask_type)) != MODE_VECTOR_INT -+ || maybe_ne (GET_MODE_SIZE (TYPE_MODE (mask_type)), -+ GET_MODE_SIZE (TYPE_MODE (type)))) -+ return false; - blend_op2 = vec_perm_indices_to_tree (mask_type, indices); - } - ---- gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123414.c -+++ gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123414.c -@@ -1,29 +0,0 @@ --/* { dg-do compile } */ --/* { dg-options "-march=rv64gcv_zvl256b -mabi=lp64d -mrvv-max-lmul=m8 -O3 -fsigned-char -fno-strict-aliasing -fwrapv -fdump-tree-optimized -std=gnu99" } */ -- --signed char a=2; --long long b; --long c = 93; --int e[1][9]; -- --void --g (long cc, int ee[][9]) --{ -- for (int i = 0; i < 4; i++) -- for (int j = 0; j < 5; j++) -- for (unsigned k = 0; k < 9; k++) -- { -- a *= cc; -- for (int l = 0; l < 6; l += (ee[k] <= 0) + 2) -- ; -- } --} -- --int main() { -- g( c, e); -- b = (int)a; -- if (b != 34) -- __builtin_abort (); --} -- --/* { dg-final { scan-tree-dump-times "\[a-zA-Z_\]\[a-zA-Z0-9_\]+.=.VEC_PERM_EXPR <_\[0-9\]+, \\\{ 1(?:, 1){255} \\\}, \\\{ 0, 257, 258" 3 "optimized" } } */ diff --git a/gcc16-pr123573.patch b/gcc16-pr123573.patch new file mode 100644 index 0000000..2bc769d --- /dev/null +++ b/gcc16-pr123573.patch @@ -0,0 +1,53 @@ +The following fixes the fix from r16-6709-ga4716ece529dfd some +more by making sure permute to one operand folding faces same +element number vectors but also insert a VIEW_CONVERT_EXPR for +the case one is VLA and one is VLS (when the VLA case is actually +constant, like with -msve-vector-bits=128). It also makes the +assert that output and input element numbers match done in +fold_vec_perm which this pattern eventually dispatches to into +a check (as the comment already indicates). + +Testcases are in the target specific aarch64 testsuite already. + +Bootstrap and regtest ongoing on x86_64-unknown-linux-gnu. + +2026-01-13 Richard Biener + + PR middle-end/123573 + * fold-const.cc (fold_vec_perm): Actually check, not assert, + that input and output vector element numbers agree. + * match.pd (vec_perm @0 @1 @2): Make sure element numbers + are the same when folding to an input vector and wrap that + inside a VIEW_CONVERT_EXPR. + +--- gcc/fold-const.cc ++++ gcc/fold-const.cc +@@ -10704,11 +10704,10 @@ fold_vec_perm (tree type, tree arg0, tree arg1, const vec_perm_indices &sel) + + /* For fall back case, we want to ensure we have VLS vectors + with equal length. */ +- if (!sel.length ().is_constant (&nelts)) ++ if (!sel.length ().is_constant (&nelts) ++ || !known_eq (sel.length (), TYPE_VECTOR_SUBPARTS (TREE_TYPE (arg0)))) + return NULL_TREE; + +- gcc_assert (known_eq (sel.length (), +- TYPE_VECTOR_SUBPARTS (TREE_TYPE (arg0)))); + tree *in_elts = XALLOCAVEC (tree, nelts * 2); + if (!vec_cst_ctor_to_array (arg0, nelts, in_elts) + || !vec_cst_ctor_to_array (arg1, nelts, in_elts + nelts)) +--- gcc/match.pd ++++ gcc/match.pd +@@ -11528,9 +11528,9 @@ and, + vec_perm_indices sel (builder, single_arg ? 1 : 2, nelts_in); + } + (if (known_eq (nelts, nelts_in) && sel.series_p (0, 1, 0, 1)) +- { op0; } +- (if (sel.series_p (0, 1, nelts_in, 1)) +- { op1; } ++ (view_convert @0) ++ (if (known_eq (nelts, nelts_in) && sel.series_p (0, 1, nelts_in, 1)) ++ (view_convert @1) + (with + { + if (!single_arg) diff --git a/sources b/sources index 7ba5726..5fa3693 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-16.0.1-20260112.tar.xz) = ca2a3a0daae98b90dbde92591126de93325e8caee66fd7f6cbdff7ef453d1329e87c0593636e4db5d63a3503645cabede86ed894760ce6d3ccd3a95a974dc120 +SHA512 (gcc-16.0.1-20260113.tar.xz) = 1cd4985667f4a0add59b053bc1ba945f8e7176eace95f3ba05e15de10e50ceaccc4343237c7e552d9bad36c35a7c15c46dccd9d2ff195ab5a85a32cbd5a78e82 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz) = 7f862986065028df70c843fc3f2c89e200a76b48ad0bd51c749ac8a5aab7be0ebdf35be182fad2407b3281615e75be1ac6833ab6a5130ae9920169a0412f94f0 From 11a761516774c8cdcf418b698858b56a72414a39 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 15 Jan 2026 16:59:36 +0100 Subject: [PATCH 293/293] 16.0.1-0.3 --- .gitignore | 1 + gcc.spec | 27 +- gcc16-ipacp-revert.patch | 1079 ----------------------------------- gcc16-pr120250.patch | 61 -- gcc16-pr121778-revert.patch | 170 ------ gcc16-pr123115.patch | 17 - gcc16-pr123573.patch | 53 -- sources | 2 +- 8 files changed, 19 insertions(+), 1391 deletions(-) delete mode 100644 gcc16-ipacp-revert.patch delete mode 100644 gcc16-pr120250.patch delete mode 100644 gcc16-pr121778-revert.patch delete mode 100644 gcc16-pr123115.patch delete mode 100644 gcc16-pr123573.patch diff --git a/.gitignore b/.gitignore index 5fed11f..b67c902 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ /gcc-16.0.0-20260112.tar.xz /gcc-16.0.1-20260112.tar.xz /gcc-16.0.1-20260113.tar.xz +/gcc-16.0.1-20260115.tar.xz diff --git a/gcc.spec b/gcc.spec index 6e7eb04..71e5d1d 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20260113 -%global gitrev a0ec01c1ccb192681b09dd03c265e84fe2bd00e5 +%global DATE 20260115 +%global gitrev 1a9a51aca25eaad91d80869c43859274fe5e1096 %global gcc_version 16.0.1 %global gcc_major 16 # Note, gcc_release must be integer, if you want to add suffixes to @@ -158,7 +158,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.2%{?dist} +Release: %{gcc_release}.3%{?dist} # License notes for some of the less obvious ones: # gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para # isl: MIT, BSD-2-Clause @@ -322,12 +322,7 @@ Patch9: gcc16-Wno-format-security.patch Patch10: gcc16-rh1574936.patch Patch11: gcc16-d-shared-libphobos.patch Patch12: gcc16-pr119006.patch -Patch13: gcc16-pr123115.patch -Patch14: gcc16-pr120250.patch -Patch15: gcc16-pr123273.patch -Patch16: gcc16-ipacp-revert.patch -Patch17: gcc16-pr121778-revert.patch -Patch18: gcc16-pr123573.patch +Patch13: gcc16-pr123273.patch Patch50: isl-rh2155127.patch @@ -2553,7 +2548,8 @@ rm -rf %{buildroot}%{_prefix}/lib64/go/%{gcc_major}/%{gcc_target_platform} rm -f %{buildroot}%{_prefix}/lib*/lib*.spec || : rm -f %{buildroot}%{_prefix}/lib*/libstdc++.modules.json || : rm -f %{buildroot}%{_prefix}/%{_lib}/lib{asan,atomic,gcc_s,gcobol,ga68,gdruntime,gfortran,go,gomp-plugin-*,gomp,gphobos,hwasan}.so || : -rm -f %{buildroot}%{_prefix}/%{_lib}/lib{itm,lsan,m2{cor,iso,log,min,pim},objc,quadmath,stdc++,tsan,ubsan}.so || : +rm -f %{buildroot}%{_prefix}/%{_lib}/lib{itm,lsan,m2{cor,iso,log,min,pim},objc,quadmath,stdc++,tsan,ubsan,gcc_s_asneeded,atomic_asneeded}.so || : +rm -f %{buildroot}%{_prefix}/%{_lib}/libatomic_asneeded.a || : rm -f %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/install-tools/{fixinc.sh,mkinstalldirs} || : rm -f %{buildroot}%{_prefix}/share/locale/*/LC_MESSAGES/libstdc++.mo || : rm -f %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include-fixed/README || : @@ -3974,6 +3970,17 @@ end %endif %changelog +* Thu Jan 15 2026 Jakub Jelinek 16.0.1-0.3 +- update from trunk + - PRs c/123309, c++/120775, c++/122634, c++/123081, c++/123551, + debug/121045, driver/108865, driver/123504, ipa/122852, ipa/123542, + middle-end/123115, middle-end/123392, middle-end/123573, + rtl-optimization/123312, rtl-optimization/123544, target/38118, + target/114528, target/120250, target/121240, target/123092, + testsuite/122522, tree-optimization/119402, tree-optimization/120322, + tree-optimization/123109, tree-optimization/123190, + tree-optimization/123530 + * Tue Jan 13 2026 Jakub Jelinek 16.0.1-0.2 - update from trunk - PRs fortran/91960, fortran/112460, libstdc++/123396, diff --git a/gcc16-ipacp-revert.patch b/gcc16-ipacp-revert.patch deleted file mode 100644 index c1424b4..0000000 --- a/gcc16-ipacp-revert.patch +++ /dev/null @@ -1,1079 +0,0 @@ -Temporarily revert until PR123542 is resolved. - -2026-01-06 Martin Jambor - - * ipa-cp.h (class ipcp_bits_lattice): New members set_recipient_only, - recipient_only_p and m_recipient_only. - (class ipcp_vr_lattice): Likewise. - (ipcp_vr_lattice::init): Initialize also m_recipient_only. - * ipa-cp.cc (ipcp_bits_lattice::print): Adjust printting to also - print the new flag. - (ipcp_vr_lattice::print): Likewise. - (ipcp_vr_lattice::set_recipient_only): New function. - (ipcp_bits_lattice::set_recipient_only): Likewise. - (set_all_contains_variable): New parameter MAKE_SIMPLE_RECIPIENTS, set - bits and vr lattices to recibient only insted to bottom when it is - true. - (initialize_node_lattices): Pass true to the second parameter of - set_all_contains_variable. - (propagate_bits_across_jump_function): Treat recipient_only source - lattices like bottom. - (propagate_vr_across_jump_function): Likewise. - (ipcp_store_vr_results): Skip non-local nodes. - -2026-01-09 Martin Jambor - - * ipa-cp.cc (good_cloning_opportunity_p): Dump a message when - bailing out early too. - (find_more_scalar_values_for_callers_subset): Rename to - find_scalar_values_for_callers_subset, collect constants regardless of - what is already in the vector. Remove dumping. - (find_more_contexts_for_caller_subset): Rename to - find_contexts_for_caller_subset, collect contexts regardless of what - is already in the vector. Remove dumping. - (find_aggregate_values_for_callers_subset): Rename to - find_aggregate_values_for_callers_subset_gc, implement using new - functions. - (find_aggregate_values_for_callers_subset_1): New function. - (find_aggregate_values_for_callers_subset): Likewise. - (copy_known_vectors_add_val): Removed. - (dump_reestimation_message): New function. - (decide_about_value): Remove formal parameter avals, compute it - independently, and use it to estimate local cloning effects. - (struct cloning_opportunity_ranking): New type. - (compare_cloning_opportunities): New function. - (cloning_opportunity_ranking_evaluation): Likewise. - (decide_whether_version_node): Pre-sort candidates for cloning before - really evaluating them. Calculate context independent values only - when considering versioning for all contexts. - (ipcp_val_agg_replacement_ok_p): Renamed to - ipcp_val_replacement_ok_p, check also non-aggregate values. - ---- gcc/ipa-cp.cc -+++ gcc/ipa-cp.cc -@@ -339,25 +339,18 @@ ipcp_print_widest_int (FILE *f, const widest_int &value) - void - ipcp_bits_lattice::print (FILE *f) - { -- if (bottom_p ()) -- { -- fprintf (f, " Bits unusable (BOTTOM)\n"); -- return; -- } -- - if (top_p ()) -- fprintf (f, " Bits unknown (TOP)"); -+ fprintf (f, " Bits unknown (TOP)\n"); -+ else if (bottom_p ()) -+ fprintf (f, " Bits unusable (BOTTOM)\n"); - else - { - fprintf (f, " Bits: value = "); - ipcp_print_widest_int (f, get_value ()); - fprintf (f, ", mask = "); - ipcp_print_widest_int (f, get_mask ()); -+ fprintf (f, "\n"); - } -- -- if (m_recipient_only) -- fprintf (f, " (recipient only)"); -- fprintf (f, "\n"); - } - - /* Print value range lattice to F. */ -@@ -365,8 +358,6 @@ ipcp_bits_lattice::print (FILE *f) - void - ipcp_vr_lattice::print (FILE * f) - { -- if (m_recipient_only) -- fprintf (f, "(recipient only) "); - m_vr.dump (f); - } - -@@ -897,18 +888,6 @@ ipcp_vr_lattice::set_to_bottom () - return true; - } - --/* Set the flag that this lattice is a recipient only, return true if it was -- not set before. */ -- --bool --ipcp_vr_lattice::set_recipient_only () --{ -- if (m_recipient_only) -- return false; -- m_recipient_only = true; -- return true; --} -- - /* Set lattice value to bottom, if it already isn't the case. */ - - bool -@@ -945,18 +924,6 @@ ipcp_bits_lattice::known_nonzero_p () const - return wi::ne_p (wi::bit_and (wi::bit_not (m_mask), m_value), 0); - } - --/* Set the flag that this lattice is a recipient only, return true if it was not -- set before. */ -- --bool --ipcp_bits_lattice::set_recipient_only () --{ -- if (m_recipient_only) -- return false; -- m_recipient_only = true; -- return true; --} -- - /* Convert operand to value, mask form. */ - - void -@@ -1359,28 +1326,17 @@ intersect_argaggs_with (vec &elts, - } - - /* Mark bot aggregate and scalar lattices as containing an unknown variable, -- return true is any of them has not been marked as such so far. If if -- MAKE_SIMPLE_RECIPIENTS is true, set the lattices that can only hold one -- value to being recipients only, otherwise also set them to bottom. */ -+ return true is any of them has not been marked as such so far. */ - - static inline bool --set_all_contains_variable (class ipcp_param_lattices *plats, -- bool make_simple_recipients = false) -+set_all_contains_variable (class ipcp_param_lattices *plats) - { - bool ret; - ret = plats->itself.set_contains_variable (); - ret |= plats->ctxlat.set_contains_variable (); - ret |= set_agg_lats_contain_variable (plats); -- if (make_simple_recipients) -- { -- ret |= plats->bits_lattice.set_recipient_only (); -- ret |= plats->m_value_range.set_recipient_only (); -- } -- else -- { -- ret |= plats->bits_lattice.set_to_bottom (); -- ret |= plats->m_value_range.set_to_bottom (); -- } -+ ret |= plats->bits_lattice.set_to_bottom (); -+ ret |= plats->m_value_range.set_to_bottom (); - return ret; - } - -@@ -1525,7 +1481,7 @@ initialize_node_lattices (struct cgraph_node *node) - { - plats->m_value_range.init (type); - if (variable) -- set_all_contains_variable (plats, true); -+ set_all_contains_variable (plats); - } - } - -@@ -2617,8 +2573,7 @@ propagate_bits_across_jump_function (cgraph_edge *cs, int idx, - result of x & 0xff == 0xff, which gets computed during ccp1 pass - and we store it in jump function during analysis stage. */ - -- if (!src_lats->bits_lattice.bottom_p () -- && !src_lats->bits_lattice.recipient_only_p ()) -+ if (!src_lats->bits_lattice.bottom_p ()) - { - if (!op_type) - op_type = ipa_get_type (caller_info, src_idx); -@@ -2684,8 +2639,7 @@ propagate_vr_across_jump_function (cgraph_edge *cs, ipa_jump_func *jfunc, - = ipa_get_parm_lattices (caller_info, src_idx); - tree operand_type = ipa_get_type (caller_info, src_idx); - -- if (src_lats->m_value_range.bottom_p () -- || src_lats->m_value_range.recipient_only_p ()) -+ if (src_lats->m_value_range.bottom_p ()) - return dest_lat->set_to_bottom (); - - if (ipa_get_jf_pass_through_operation (jfunc) == NOP_EXPR -@@ -3443,13 +3397,7 @@ good_cloning_opportunity_p (struct cgraph_node *node, sreal time_benefit, - /* If there is no call which was executed in profiling or where - profile is missing, we do not want to clone. */ - || (!called_without_ipa_profile && !count_sum.nonzero_p ())) -- { -- if (dump_file && (dump_flags & TDF_DETAILS)) -- fprintf (dump_file, " good_cloning_opportunity_p (time: %g, " -- "size: %i): Definitely not good or prohibited.\n", -- time_benefit.to_double (), size_cost); -- return false; -- } -+ return false; - - gcc_assert (size_cost > 0); - -@@ -5290,29 +5238,24 @@ self_recursive_agg_pass_through_p (const cgraph_edge *cs, - KNOWN_CSTS with constants that are also known for all of the CALLERS. */ - - static void --find_scalar_values_for_callers_subset (vec &known_csts, -- ipa_node_params *info, -- const vec &callers) -+find_more_scalar_values_for_callers_subset (struct cgraph_node *node, -+ vec &known_csts, -+ const vec &callers) - { -+ ipa_node_params *info = ipa_node_params_sum->get (node); - int i, count = ipa_get_param_count (info); - - for (i = 0; i < count; i++) - { -- ipcp_lattice *lat = ipa_get_scalar_lat (info, i); -- if (lat->bottom) -- continue; -- if (lat->is_single_const ()) -- { -- known_csts[i] = lat->values->value; -- continue; -- } -- - struct cgraph_edge *cs; - tree newval = NULL_TREE; - int j; - bool first = true; - tree type = ipa_get_type (info, i); - -+ if (ipa_get_scalar_lat (info, i)->bottom || known_csts[i]) -+ continue; -+ - FOR_EACH_VEC_ELT (callers, j, cs) - { - struct ipa_jump_func *jump_func; -@@ -5369,7 +5312,18 @@ find_scalar_values_for_callers_subset (vec &known_csts, - } - - if (newval) -- known_csts[i] = newval; -+ { -+ if (dump_file && (dump_flags & TDF_DETAILS)) -+ { -+ fprintf (dump_file, " adding an extra known scalar value "); -+ print_ipcp_constant_value (dump_file, newval); -+ fprintf (dump_file, " for "); -+ ipa_dump_param (dump_file, info, i); -+ fprintf (dump_file, "\n"); -+ } -+ -+ known_csts[i] = newval; -+ } - } - } - -@@ -5378,34 +5332,23 @@ find_scalar_values_for_callers_subset (vec &known_csts, - CALLERS. */ - - static void --find_contexts_for_caller_subset (vec -- &known_contexts, -- ipa_node_params *info, -- const vec &callers) -+find_more_contexts_for_caller_subset (cgraph_node *node, -+ vec -+ *known_contexts, -+ const vec &callers) - { -+ ipa_node_params *info = ipa_node_params_sum->get (node); - int i, count = ipa_get_param_count (info); - - for (i = 0; i < count; i++) - { -- if (!ipa_is_param_used (info, i)) -- continue; -+ cgraph_edge *cs; - -- ipcp_lattice *ctxlat -- = ipa_get_poly_ctx_lat (info, i); -- if (ctxlat->bottom) -+ if (ipa_get_poly_ctx_lat (info, i)->bottom -+ || (known_contexts->exists () -+ && !(*known_contexts)[i].useless_p ())) - continue; -- if (ctxlat->is_single_const ()) -- { -- if (!ctxlat->values->value.useless_p ()) -- { -- if (known_contexts.is_empty ()) -- known_contexts.safe_grow_cleared (count, true); -- known_contexts[i] = ctxlat->values->value; -- } -- continue; -- } - -- cgraph_edge *cs; - ipa_polymorphic_call_context newval; - bool first = true; - int j; -@@ -5433,9 +5376,20 @@ find_contexts_for_caller_subset (vec - - if (!newval.useless_p ()) - { -- if (known_contexts.is_empty ()) -- known_contexts.safe_grow_cleared (count, true); -- known_contexts[i] = newval; -+ if (dump_file && (dump_flags & TDF_DETAILS)) -+ { -+ fprintf (dump_file, " adding an extra known polymorphic " -+ "context "); -+ print_ipcp_constant_value (dump_file, newval); -+ fprintf (dump_file, " for "); -+ ipa_dump_param (dump_file, info, i); -+ fprintf (dump_file, "\n"); -+ } -+ -+ if (!known_contexts->exists ()) -+ known_contexts->safe_grow_cleared (ipa_get_param_count (info), -+ true); -+ (*known_contexts)[i] = newval; - } - - } -@@ -5622,12 +5576,11 @@ push_agg_values_from_edge (struct cgraph_edge *cs, - - - /* Look at edges in CALLERS and collect all known aggregate values that arrive -- from all of them into INTERIM. Return how many there are. */ -+ from all of them. Return nullptr if there are none. */ - --static unsigned int --find_aggregate_values_for_callers_subset_1 (vec &interim, -- struct cgraph_node *node, -- const vec &callers) -+static struct vec * -+find_aggregate_values_for_callers_subset (struct cgraph_node *node, -+ const vec &callers) - { - ipa_node_params *dest_info = ipa_node_params_sum->get (node); - if (dest_info->ipcp_orig_node) -@@ -5635,11 +5588,12 @@ find_aggregate_values_for_callers_subset_1 (vec &interim, - - /* gather_edges_for_value puts a non-recursive call into the first element of - callers if it can. */ -+ auto_vec interim; - push_agg_values_from_edge (callers[0], dest_info, &interim, NULL, true); - - unsigned valid_entries = interim.length (); - if (!valid_entries) -- return 0; -+ return nullptr; - - unsigned caller_count = callers.length(); - for (unsigned i = 1; i < caller_count; i++) -@@ -5650,47 +5604,9 @@ find_aggregate_values_for_callers_subset_1 (vec &interim, - - valid_entries = intersect_argaggs_with (interim, last); - if (!valid_entries) -- return 0; -+ return nullptr; - } - -- return valid_entries; --} -- --/* Look at edges in CALLERS and collect all known aggregate values that arrive -- from all of them and return them in a garbage-collected vector. Return -- nullptr if there are none. */ -- --static void --find_aggregate_values_for_callers_subset (vec &res, -- struct cgraph_node *node, -- const vec &callers) --{ -- auto_vec interim; -- unsigned valid_entries -- = find_aggregate_values_for_callers_subset_1 (interim, node, callers); -- if (!valid_entries) -- return; -- -- for (const ipa_argagg_value &av : interim) -- if (av.value) -- res.safe_push(av); -- return; --} -- --/* Look at edges in CALLERS and collect all known aggregate values that arrive -- from all of them and return them in a garbage-collected vector. Return -- nullptr if there are none. */ -- --static struct vec * --find_aggregate_values_for_callers_subset_gc (struct cgraph_node *node, -- const vec &callers) --{ -- auto_vec interim; -- unsigned valid_entries -- = find_aggregate_values_for_callers_subset_1 (interim, node, callers); -- if (!valid_entries) -- return nullptr; -- - vec *res = NULL; - vec_safe_reserve_exact (res, valid_entries); - for (const ipa_argagg_value &av : interim) -@@ -5821,78 +5737,62 @@ copy_useful_known_contexts (const vec &known_conte - return vNULL; - } - --/* Return true if the VALUE is represented in KNOWN_CSTS at INDEX if OFFSET is -- minus one or in AGGVALS for INDEX and OFFSET otherwise. */ -+/* Copy known scalar values from AVALS into KNOWN_CSTS and modify the copy -+ according to VAL and INDEX. If non-empty, replace KNOWN_CONTEXTS with its -+ copy too. */ - --DEBUG_FUNCTION bool --ipcp_val_replacement_ok_p (vec &known_csts, -- vec &, -- vec *aggvals, -- int index, HOST_WIDE_INT offset, tree value) -+static void -+copy_known_vectors_add_val (ipa_auto_call_arg_values *avals, -+ vec *known_csts, -+ vec *known_contexts, -+ ipcp_value *val, int index) - { -- tree v; -- if (offset == -1) -- v = known_csts[index]; -- else -- { -- const ipa_argagg_value_list avl (aggvals); -- v = avl.get_value (index, offset / BITS_PER_UNIT); -- } -+ *known_csts = avals->m_known_vals.copy (); -+ *known_contexts = copy_useful_known_contexts (avals->m_known_contexts); -+ (*known_csts)[index] = val->value; -+} - -- return v && values_equal_for_ipcp_p (v, value); -+/* Copy known scalar values from AVALS into KNOWN_CSTS. Similarly, copy -+ contexts to KNOWN_CONTEXTS and modify the copy according to VAL and -+ INDEX. */ -+ -+static void -+copy_known_vectors_add_val (ipa_auto_call_arg_values *avals, -+ vec *known_csts, -+ vec *known_contexts, -+ ipcp_value *val, -+ int index) -+{ -+ *known_csts = avals->m_known_vals.copy (); -+ *known_contexts = avals->m_known_contexts.copy (); -+ (*known_contexts)[index] = val->value; - } - --/* Dump to F all the values in AVALS for which we are re-evaluating the effects -- on the function represented b INFO. */ -+/* Return true if OFFSET indicates this was not an aggregate value or there is -+ a replacement equivalent to VALUE, INDEX and OFFSET among those in the -+ AGGVALS list. */ - --DEBUG_FUNCTION void --dump_reestimation_message (FILE *f, ipa_node_params *info, -- const ipa_auto_call_arg_values &avals) --{ -- fprintf (f, " Re-estimating effects with\n" -- " Scalar constants:"); -- int param_count = ipa_get_param_count (info); -- for (int i = 0; i < param_count; i++) -- if (avals.m_known_vals[i]) -- { -- fprintf (f, " %i:", i); -- print_ipcp_constant_value (f, avals.m_known_vals[i]); -- } -- fprintf (f, "\n"); -- if (!avals.m_known_contexts.is_empty ()) -- { -- fprintf (f, " Pol. contexts:"); -- for (int i = 0; i < param_count; i++) -- if (!avals.m_known_contexts[i].useless_p ()) -- { -- fprintf (f, " %i:", i); -- avals.m_known_contexts[i].dump (f); -- } -- fprintf (f, "\n"); -- } -- if (!avals.m_known_aggs.is_empty ()) -- { -- fprintf (f, " Aggregate replacements:"); -- ipa_argagg_value_list avs (&avals); -- avs.dump (f); -- } -+DEBUG_FUNCTION bool -+ipcp_val_agg_replacement_ok_p (vec *aggvals, -+ int index, HOST_WIDE_INT offset, tree value) -+{ -+ if (offset == -1) -+ return true; -+ -+ const ipa_argagg_value_list avl (aggvals); -+ tree v = avl.get_value (index, offset / BITS_PER_UNIT); -+ return v && values_equal_for_ipcp_p (v, value); - } - --/* Return true if the VALUE is represented in KNOWN_CONTEXTS at INDEX and that -- if OFFSET is is equal to minus one (because source of a polymorphic context -- cannot be an aggregate value). */ -+/* Return true if offset is minus one because source of a polymorphic context -+ cannot be an aggregate value. */ - - DEBUG_FUNCTION bool --ipcp_val_replacement_ok_p (vec &, -- vec &known_contexts, -- vec *, -- int index, HOST_WIDE_INT offset, -- ipa_polymorphic_call_context value) -+ipcp_val_agg_replacement_ok_p (vec *, -+ int , HOST_WIDE_INT offset, -+ ipa_polymorphic_call_context) - { -- if (offset != -1) -- return false; -- return (!known_contexts[index].useless_p () -- && known_contexts[index].equal_to (value)); -+ return offset == -1; - } - - /* Decide whether to create a special version of NODE for value VAL of -@@ -5906,12 +5806,13 @@ ipcp_val_replacement_ok_p (vec &, - template - static bool - decide_about_value (struct cgraph_node *node, int index, HOST_WIDE_INT offset, -- ipcp_value *val, -+ ipcp_value *val, ipa_auto_call_arg_values *avals, - vec *self_gen_clones, int cur_sweep) - { - int caller_count; - sreal freq_sum; - profile_count count_sum, rec_count_sum; -+ vec callers; - bool called_without_ipa_profile; - - if (val->spec_node) -@@ -5965,78 +5866,36 @@ decide_about_value (struct cgraph_node *node, int index, HOST_WIDE_INT offset, - fprintf (dump_file, " (caller_count: %i)\n", caller_count); - } - -- vec callers; -- callers = gather_edges_for_value (val, node, caller_count); -- ipa_node_params *info = ipa_node_params_sum->get (node); -- ipa_auto_call_arg_values avals; -- avals.m_known_vals.safe_grow_cleared (ipa_get_param_count (info), true); -- find_scalar_values_for_callers_subset (avals.m_known_vals, info, callers); -- find_contexts_for_caller_subset (avals.m_known_contexts, info, callers); -- find_aggregate_values_for_callers_subset (avals.m_known_aggs, node, callers); -- -- -- if (good_cloning_opportunity_p (node, val->prop_time_benefit, -- freq_sum, count_sum, val->prop_size_cost, -- called_without_ipa_profile, cur_sweep)) -- ; -- else -- { -- /* Extern inline functions are only meaningful to clione to propagate -- values to their callees. */ -- if (DECL_EXTERNAL (node->decl) && DECL_DECLARED_INLINE_P (node->decl)) -- { -- if (dump_file && (dump_flags & TDF_DETAILS)) -- fprintf (dump_file, " Skipping extern inline.\n"); -- return false; -- } -- if (dump_file && (dump_flags & TDF_DETAILS)) -- dump_reestimation_message (dump_file, info, avals); -- -- ipa_call_estimates estimates; -- estimate_ipcp_clone_size_and_time (node, &avals, &estimates); -- int removable_params_cost = 0; -- for (tree t : avals.m_known_vals) -- if (t) -- removable_params_cost += estimate_move_cost (TREE_TYPE (t), true); -- -- int size = estimates.size - caller_count * removable_params_cost; -- -- if (size <= 0) -- { -- if (dump_file) -- fprintf (dump_file, " Code not going to grow.\n"); -- } -- else -- { -- sreal time_benefit -- = ((estimates.nonspecialized_time - estimates.time) -- + hint_time_bonus (node, estimates) -- + (devirtualization_time_bonus (node, &avals) -- + removable_params_cost)); -- -- if (!good_cloning_opportunity_p (node, time_benefit, freq_sum, -- count_sum, size, -- called_without_ipa_profile, -- cur_sweep)) -- return false; -- } -- } -+ if (!good_cloning_opportunity_p (node, val->local_time_benefit, -+ freq_sum, count_sum, -+ val->local_size_cost, -+ called_without_ipa_profile, cur_sweep) -+ && !good_cloning_opportunity_p (node, val->prop_time_benefit, -+ freq_sum, count_sum, val->prop_size_cost, -+ called_without_ipa_profile, cur_sweep)) -+ return false; - - if (dump_file) - fprintf (dump_file, " Creating a specialized node of %s.\n", - node->dump_name ()); - -- vec known_csts = avals.m_known_vals.copy (); -- vec known_contexts -- = copy_useful_known_contexts (avals.m_known_contexts); -- -- vec *aggvals = NULL; -- vec_safe_reserve_exact (aggvals, avals.m_known_aggs.length ()); -- for (const ipa_argagg_value &av : avals.m_known_aggs) -- aggvals->quick_push (av); -- gcc_checking_assert (ipcp_val_replacement_ok_p (known_csts, known_contexts, -- aggvals, index, -- offset, val->value)); -+ vec known_csts; -+ vec known_contexts; -+ -+ callers = gather_edges_for_value (val, node, caller_count); -+ if (offset == -1) -+ copy_known_vectors_add_val (avals, &known_csts, &known_contexts, val, index); -+ else -+ { -+ known_csts = avals->m_known_vals.copy (); -+ known_contexts = copy_useful_known_contexts (avals->m_known_contexts); -+ } -+ find_more_scalar_values_for_callers_subset (node, known_csts, callers); -+ find_more_contexts_for_caller_subset (node, &known_contexts, callers); -+ vec *aggvals -+ = find_aggregate_values_for_callers_subset (node, callers); -+ gcc_checking_assert (ipcp_val_agg_replacement_ok_p (aggvals, index, -+ offset, val->value)); - val->spec_node = create_specialized_node (node, known_csts, known_contexts, - aggvals, callers); - -@@ -6074,52 +5933,6 @@ ipa_range_contains_p (const vrange &r, tree val) - return r.contains_p (val); - } - --/* Structure holding opportunitties so that they can be pre-sorted. */ -- --struct cloning_opportunity_ranking --{ -- /* A very rough evaluation of likely benefit. */ -- sreal eval; -- /* In the case of aggregate constants, a non-negative offset within their -- aggregates. -1 for scalar constants, -2 for polymorphic contexts. */ -- HOST_WIDE_INT offset; -- /* The value being considered for evaluation for cloning. */ -- ipcp_value_base *val; -- /* Index of the formal parameter the value is coming in. */ -- int index; --}; -- --/* Helper function to qsort a vecotr of cloning opportunities. */ -- --static int --compare_cloning_opportunities (const void *a, const void *b) --{ -- const cloning_opportunity_ranking *o1 -- = (const cloning_opportunity_ranking *) a; -- const cloning_opportunity_ranking *o2 -- = (const cloning_opportunity_ranking *) b; -- if (o1->eval < o2->eval) -- return 1; -- if (o1->eval > o2->eval) -- return -1; -- return 0; --} -- --/* Use the estimations in VAL to determine how good a candidate it represents -- for the purposes of ordering real evaluation of opportunities (which -- includes information about incoming edges, among other things). */ -- --static sreal --cloning_opportunity_ranking_evaluation (const ipcp_value_base *val) --{ -- sreal e1 = (val->local_time_benefit * 1000) / MAX (val->local_size_cost, 1); -- sreal e2 = (val->prop_time_benefit * 1000) / MAX (val->prop_size_cost, 1); -- if (e2 > e1) -- return e2; -- else -- return e1; --} -- - /* Decide whether and what specialized clones of NODE should be created. - CUR_SWEEP is the number of the current sweep of the call-graph during the - decision stage. */ -@@ -6128,7 +5941,7 @@ static bool - decide_whether_version_node (struct cgraph_node *node, int cur_sweep) - { - ipa_node_params *info = ipa_node_params_sum->get (node); -- int count = ipa_get_param_count (info); -+ int i, count = ipa_get_param_count (info); - bool ret = false; - - if (info->node_dead || count == 0) -@@ -6138,8 +5951,13 @@ decide_whether_version_node (struct cgraph_node *node, int cur_sweep) - fprintf (dump_file, "\nEvaluating opportunities for %s.\n", - node->dump_name ()); - -- auto_vec opp_ranking; -- for (int i = 0; i < count;i++) -+ auto_vec self_gen_clones; -+ ipa_auto_call_arg_values avals; -+ int removable_params_cost; -+ bool ctx_independent_const -+ = gather_context_independent_values (info, &avals, &removable_params_cost); -+ -+ for (i = 0; i < count;i++) - { - if (!ipa_is_param_used (info, i)) - continue; -@@ -6149,7 +5967,7 @@ decide_whether_version_node (struct cgraph_node *node, int cur_sweep) - ipcp_lattice *ctxlat = &plats->ctxlat; - - if (!lat->bottom -- && !lat->is_single_const ()) -+ && !avals.m_known_vals[i]) - { - ipcp_value *val; - for (val = lat->values; val; val = val->next) -@@ -6176,12 +5994,8 @@ decide_whether_version_node (struct cgraph_node *node, int cur_sweep) - } - continue; - } -- cloning_opportunity_ranking opp; -- opp.eval = cloning_opportunity_ranking_evaluation (val); -- opp.offset = -1; -- opp.val = val; -- opp.index = i; -- opp_ranking.safe_push (opp); -+ ret |= decide_about_value (node, i, -1, val, &avals, -+ &self_gen_clones, cur_sweep); - } - } - -@@ -6196,83 +6010,37 @@ decide_whether_version_node (struct cgraph_node *node, int cur_sweep) - && (plats->aggs_contain_variable - || !aglat->is_single_const ())) - for (val = aglat->values; val; val = val->next) -- { -- cloning_opportunity_ranking opp; -- opp.eval = cloning_opportunity_ranking_evaluation (val); -- opp.offset = aglat->offset; -- opp.val = val; -- opp.index = i; -- opp_ranking.safe_push (opp); -- } -+ ret |= decide_about_value (node, i, aglat->offset, val, &avals, -+ &self_gen_clones, cur_sweep); - } - - if (!ctxlat->bottom -- && !ctxlat->is_single_const ()) -+ && avals.m_known_contexts[i].useless_p ()) - { - ipcp_value *val; - for (val = ctxlat->values; val; val = val->next) -- if (!val->value.useless_p ()) -- { -- cloning_opportunity_ranking opp; -- opp.eval = cloning_opportunity_ranking_evaluation (val); -- opp.offset = -2; -- opp.val = val; -- opp.index = i; -- opp_ranking.safe_push (opp); -- } -- } -- } -- -- if (!opp_ranking.is_empty ()) -- { -- opp_ranking.qsort (compare_cloning_opportunities); -- auto_vec self_gen_clones; -- for (const cloning_opportunity_ranking &opp : opp_ranking) -- if (opp.offset == -2) -- { -- ipcp_value *val -- = static_cast *> -- (opp.val); -- ret |= decide_about_value (node, opp.index, -1, val, -+ ret |= decide_about_value (node, i, -1, val, &avals, - &self_gen_clones, cur_sweep); -- } -- else -- { -- ipcp_value *val = static_cast *> (opp.val); -- ret |= decide_about_value (node, opp.index, opp.offset, val, -- &self_gen_clones, cur_sweep); -- } -- -- if (!self_gen_clones.is_empty ()) -- { -- self_gen_clones.safe_push (node); -- update_counts_for_self_gen_clones (node, self_gen_clones); - } - } - -- struct caller_statistics stats; -- init_caller_stats (&stats); -- node->call_for_symbol_thunks_and_aliases (gather_caller_stats, &stats, -- false); -- if (!stats.n_calls) -+ if (!self_gen_clones.is_empty ()) - { -- if (dump_file) -- fprintf (dump_file, " Not cloning for all contexts because " -- "there are no callers of the original node (any more).\n"); -- return ret; -+ self_gen_clones.safe_push (node); -+ update_counts_for_self_gen_clones (node, self_gen_clones); - } - - bool do_clone_for_all_contexts = false; -- ipa_auto_call_arg_values avals; -- int removable_params_cost; -- bool ctx_independent_const -- = gather_context_independent_values (info, &avals, &removable_params_cost); - sreal devirt_bonus = devirtualization_time_bonus (node, &avals); - if (ctx_independent_const || devirt_bonus > 0 - || (removable_params_cost && clone_for_param_removal_p (node))) - { -- ipa_call_estimates estimates; -+ struct caller_statistics stats; -+ ipa_call_estimates estimates; - -+ init_caller_stats (&stats); -+ node->call_for_symbol_thunks_and_aliases (gather_caller_stats, &stats, -+ false); - estimate_ipcp_clone_size_and_time (node, &avals, &estimates); - sreal time = estimates.nonspecialized_time - estimates.time; - time += devirt_bonus; -@@ -6284,7 +6052,13 @@ decide_whether_version_node (struct cgraph_node *node, int cur_sweep) - fprintf (dump_file, " - context independent values, size: %i, " - "time_benefit: %f\n", size, (time).to_double ()); - -- if (size <= 0 || node->local) -+ if (!stats.n_calls) -+ { -+ if (dump_file) -+ fprintf (dump_file, " Not cloning for all contexts because " -+ "there are no callers of the original node left.\n"); -+ } -+ else if (size <= 0 || node->local) - { - if (!dbg_cnt (ipa_cp_values)) - return ret; -@@ -6344,14 +6118,19 @@ decide_whether_version_node (struct cgraph_node *node, int cur_sweep) - fprintf (dump_file, " Creating a specialized node of %s " - "for all known contexts.\n", node->dump_name ()); - -- vec known_csts = vNULL; -- known_csts.safe_grow_cleared (count, true); -- find_scalar_values_for_callers_subset (known_csts, info, callers); -- vec known_contexts = vNULL; -- find_contexts_for_caller_subset (known_contexts, info, callers); -+ vec known_csts = avals.m_known_vals.copy (); -+ vec known_contexts -+ = copy_useful_known_contexts (avals.m_known_contexts); -+ find_more_scalar_values_for_callers_subset (node, known_csts, callers); -+ find_more_contexts_for_caller_subset (node, &known_contexts, callers); - vec *aggvals -- = find_aggregate_values_for_callers_subset_gc (node, callers); -+ = find_aggregate_values_for_callers_subset (node, callers); - -+ if (!known_contexts_useful_p (known_contexts)) -+ { -+ known_contexts.release (); -+ known_contexts = vNULL; -+ } - struct cgraph_node *clone = create_specialized_node (node, known_csts, - known_contexts, - aggvals, callers); -@@ -6576,11 +6355,6 @@ ipcp_store_vr_results (void) - bool do_vr = true; - bool do_bits = true; - -- /* If the function is not local, the gathered information is only useful -- for clones. */ -- if (!node->local) -- continue; -- - if (!info || !opt_for_fn (node->decl, flag_ipa_vrp)) - { - if (dump_file) ---- gcc/ipa-cp.h -+++ gcc/ipa-cp.h -@@ -201,8 +201,6 @@ public: - bool set_to_bottom (); - bool set_to_constant (widest_int, widest_int); - bool known_nonzero_p () const; -- bool set_recipient_only (); -- bool recipient_only_p () const {return m_recipient_only; } - - widest_int get_value () const { return m_value; } - widest_int get_mask () const { return m_mask; } -@@ -218,11 +216,6 @@ private: - enum { IPA_BITS_UNDEFINED, IPA_BITS_CONSTANT, IPA_BITS_VARYING } - m_lattice_val = IPA_BITS_UNDEFINED; - -- /* Set to true if the lattice is valid only as a recipient of propagatad -- values but cannot be used as source of propagation because there may be -- unknown callers. */ -- bool m_recipient_only; -- - /* Similar to ccp_lattice_t, mask represents which bits of value are constant. - If a bit in mask is set to 0, then the corresponding bit in - value is known to be constant. */ -@@ -238,16 +231,10 @@ class ipcp_vr_lattice - { - public: - value_range m_vr; -- /* Set to true if the lattice is valid only as a recipient of propagatad -- values but cannot be used as source of propagation because there may be -- unknown callers. */ -- bool m_recipient_only; - - inline bool bottom_p () const; - inline bool top_p () const; - inline bool set_to_bottom (); -- bool set_recipient_only (); -- bool recipient_only_p () const {return m_recipient_only; } - bool meet_with (const vrange &p_vr); - bool meet_with (const ipcp_vr_lattice &other); - void init (tree type); -@@ -264,7 +251,6 @@ ipcp_vr_lattice::init (tree type) - m_vr.set_type (type); - - // Otherwise m_vr will default to unsupported_range. -- m_recipient_only = false; - } - - /* Structure containing lattices for a parameter itself and for pieces of ---- gcc/testsuite/gcc.dg/ipa/ipcp-agg-14.c -+++ gcc/testsuite/gcc.dg/ipa/ipcp-agg-14.c -@@ -1,49 +0,0 @@ --/* { dg-do compile } */ --/* { dg-options "-O3 -fno-ipa-sra -fno-partial-inlining -fdump-ipa-cp-details" } */ -- --struct S --{ -- int a, b, m, n, o, p; --}; -- -- --void __attribute__ ((noinline)) --foo (struct S *p, double *x, double *y, double *z) --{ -- if (p->a == 0 && p->b == 0) -- return; -- -- /* Something long so that we do not clone unless we know it will -- disappear: */ -- for (int i = 0; i < p->m; i++) -- { -- if (i < p->m-1) -- x[i] += x[i+1] * y[0]; -- for (int j = 0; j < p->n; j++) -- for (int k = 0; j < p->o; k++) -- { -- double s = *z; -- for (int l = 1; l < p->p; l++) -- s += z[l]; -- x[i] += s + 2*y[j] + 7*z[k]; -- } -- } --} -- --int get_int (void); -- --void -- entry (int c, double *x, double *y, double *z) --{ -- struct S s; -- -- s.a = 0; -- s.b = 0; -- s.m = get_int (); -- s.n = get_int (); -- s.o = get_int (); -- s.p = get_int (); -- foo (&s, x, y, z); --} -- --/* { dg-final { scan-ipa-dump "Creating a specialized node of foo" "cp" } } */ ---- gcc/testsuite/gcc.dg/ipa/ipcp-agg-2.c -+++ gcc/testsuite/gcc.dg/ipa/ipcp-agg-2.c -@@ -37,5 +37,5 @@ entry (int c) - foo (&s); - } - /* { dg-final { scan-ipa-dump-times "Creating a specialized node of foo/\[0-9\]*\\." 2 "cp" } } */ --/* { dg-final { scan-ipa-dump "Aggregate replacements:" "cp" } } */ -+/* { dg-final { scan-ipa-dump-times "Aggregate replacements:" 4 "cp" } } */ - /* { dg-final { scan-tree-dump-not "->c;" "optimized" } } */ ---- gcc/testsuite/gcc.dg/ipa/ipcp-agg-3.c -+++ gcc/testsuite/gcc.dg/ipa/ipcp-agg-3.c -@@ -37,6 +37,6 @@ entry (int c) - foo (0, &s); - } - /* { dg-final { scan-ipa-dump-times "Creating a specialized node of foo/\[0-9\]*\\." 2 "cp" } } */ --/* { dg-final { scan-ipa-dump "Aggregate replacements: 1" "cp" } } */ --/* { dg-final { scan-ipa-dump "Aggregate replacements: 0" "cp" } } */ -+/* { dg-final { scan-ipa-dump-times "Aggregate replacements: 1" 2 "cp" } } */ -+/* { dg-final { scan-ipa-dump-times "Aggregate replacements: 0" 2 "cp" } } */ - /* { dg-final { scan-tree-dump-not "->c;" "optimized" } } */ ---- gcc/testsuite/gcc.dg/ipa/ipcp-agg-4.c -+++ gcc/testsuite/gcc.dg/ipa/ipcp-agg-4.c -@@ -56,5 +56,5 @@ entry2 (int c) - } - - /* { dg-final { scan-ipa-dump-times "Creating a specialized node of foo/\[0-9\]*\\." 2 "cp" } } */ --/* { dg-final { scan-ipa-dump "Aggregate replacements:" "cp" } } */ -+/* { dg-final { scan-ipa-dump-times "Aggregate replacements:" 4 "cp" } } */ - /* { dg-final { scan-tree-dump-not "->c;" "optimized" } } */ ---- gcc/testsuite/gcc.dg/vect/pr101145_1.c -+++ gcc/testsuite/gcc.dg/vect/pr101145_1.c -@@ -1,5 +1,5 @@ - /* { dg-require-effective-target vect_char_add } */ --/* { dg-additional-options "-O3 -fno-ipa-cp" } */ -+/* { dg-additional-options "-O3" } */ - #define TYPE signed char - #define MIN -128 - #define MAX 127 ---- gcc/testsuite/gcc.dg/vect/pr101145_2.c -+++ gcc/testsuite/gcc.dg/vect/pr101145_2.c -@@ -1,5 +1,5 @@ - /* { dg-require-effective-target vect_char_add } */ --/* { dg-additional-options "-O3 -fno-ipa-cp" } */ -+/* { dg-additional-options "-O3" } */ - #define TYPE unsigned char - #define MIN 0 - #define MAX 255 ---- gcc/testsuite/gcc.dg/vect/pr101145_3.c -+++ gcc/testsuite/gcc.dg/vect/pr101145_3.c -@@ -1,5 +1,5 @@ - /* { dg-require-effective-target vect_long_long } */ --/* { dg-additional-options "-O3 -fno-ipa-cp" } */ -+/* { dg-additional-options "-O3" } */ - #define TYPE int * - #define MIN ((TYPE)0) - #define MAX ((TYPE)((long long)-1)) ---- gcc/testsuite/gcc.dg/ipa/pr123543.c -+++ gcc/testsuite/gcc.dg/ipa/pr123543.c -@@ -1,14 +0,0 @@ --/* { dg-do run } */ --/* { dg-options "-O3" } */ -- --__attribute__((noinline)) --static int local_f(int a, int b) { return a + b; } -- --__attribute__((noinline)) --int extern_f(int a, int b) { return local_f(a, b); } -- --int unused_g1(int b) { return extern_f(0, b); } -- --int (*volatile fp)(int, int) = extern_f; -- --int main() { if (fp(1, 2) != 3) __builtin_abort(); } diff --git a/gcc16-pr120250.patch b/gcc16-pr120250.patch deleted file mode 100644 index 96aa78b..0000000 --- a/gcc16-pr120250.patch +++ /dev/null @@ -1,61 +0,0 @@ -2025-11-20 Jakub Jelinek - - PR target/120250 - * combine.cc (recog_for_combine): Don't try to put SET_SRC - into a constant pool if SET_DEST is pc_rtx. - - * gcc.c-torture/compile/pr120250.c: New test. - ---- gcc/combine.cc.jj 2025-10-21 11:27:04.884882995 +0200 -+++ gcc/combine.cc 2025-11-19 15:03:23.350157882 +0100 -@@ -11759,7 +11759,8 @@ recog_for_combine (rtx *pnewpat, rtx_ins - rtx src = SET_SRC (pat); - if (CONSTANT_P (src) - && !CONST_INT_P (src) -- && crtl->uses_const_pool) -+ && crtl->uses_const_pool -+ && SET_DEST (pat) != pc_rtx) - { - machine_mode mode = GET_MODE (src); - if (mode == VOIDmode) ---- gcc/testsuite/gcc.c-torture/compile/pr120250.c.jj 2025-11-19 15:28:12.937891927 +0100 -+++ gcc/testsuite/gcc.c-torture/compile/pr120250.c 2025-11-19 15:27:53.225174446 +0100 -@@ -0,0 +1,38 @@ -+/* PR target/120250 */ -+ -+int a = 5, b = 7, c, *d; -+void *l; -+void foo (const char *s); -+void bar (void); -+void qux (const char *, int); -+ -+int -+baz (int *d, int a, int b) -+{ -+ int c = 0; -+ for (int i = 0; i < a; ++i) -+ for (int j = 0; j < b; ++j) -+ c += d[i * b + j]; -+ return c; -+} -+ -+int -+main () -+{ -+ d = __builtin_malloc (a * b * sizeof (int)); -+ if (!d) -+ { -+ foo ("foo"); -+ __builtin_exit (1); -+ } -+ for (int i = 0; i < a; ++i) -+ for (int j = 0; j < b; ++j) -+ d[i * b + j] = i * b + j; -+ l = (void *) &bar; -+ goto *l; -+bar: -+ c = baz (d, a, b); -+ qux ("bar", c); -+ __builtin_free (d); -+ return 0; -+} diff --git a/gcc16-pr121778-revert.patch b/gcc16-pr121778-revert.patch deleted file mode 100644 index 5d43cad..0000000 --- a/gcc16-pr121778-revert.patch +++ /dev/null @@ -1,170 +0,0 @@ -Temporarily revert PR121778 until PR123530 is fixed. - -2026-01-09 Shreya Munnangi - Jeff Law - - PR target/121778 - gcc/ - * match.pd: Add pattern to recognize rotate with one or more - bits flipped via xor. - * config/sh/sh.md (*rotcl); New variant which handles the output - we get after the match.pd change above. - - gcc/testsuite/ - * gcc.target/riscv/pr121778.c: New test. - ---- gcc/config/sh/sh.md -+++ gcc/config/sh/sh.md -@@ -3271,25 +3271,6 @@ (define_insn_and_split "*rotcl" - operands[3] = get_t_reg_rtx (); - }) - --(define_insn_and_split "*rotcl" -- [(set (match_operand:SI 0 "arith_reg_dest") -- (xor:SI (rotate:SI (match_operand:SI 1 "arith_reg_operand") -- (const_int 1)) -- (const_int 1))) -- (clobber (reg:SI T_REG))] -- "TARGET_SH1 && can_create_pseudo_p ()" -- "#" -- "&& 1" -- [(parallel [(set (match_dup 0) -- (ior:SI (ashift:SI (match_dup 1) (const_int 1)) -- (and:SI (match_dup 3) (const_int 1)))) -- (clobber (reg:SI T_REG))])] --{ -- rtx t = gen_rtx_GE (SImode, operands[1], const0_rtx); -- sh_split_treg_set_expr (t, curr_insn); -- operands[3] = get_t_reg_rtx (); --}) -- - (define_insn_and_split "*rotcl" - [(set (match_operand:SI 0 "arith_reg_dest") - (ior:SI (and:SI (match_operand:SI 1 "arith_reg_or_t_reg_operand") ---- gcc/match.pd -+++ gcc/match.pd -@@ -12172,27 +12172,3 @@ and, - (simplify - (IFN_VEC_SHL_INSERT (vec_duplicate@1 @0) @0) - @1) -- --/* In this case the XOR flips bits that originate from the result of the -- right shift and do not impact the result of the left shift. We can -- reassociate the XOR to work on the final result and simplify the rest -- to a rotate. */ --(simplify -- (bit_ior:c (lshift @0 INTEGER_CST@1) -- (bit_xor (rshift @2 INTEGER_CST@3) INTEGER_CST@4)) -- (if (((~((HOST_WIDE_INT_1U << tree_to_uhwi (@1)) - 1)) & tree_to_uhwi (@4)) == 0 -- && (tree_to_uhwi (@1) + tree_to_uhwi (@3)) == TYPE_PRECISION (type) -- && TYPE_UNSIGNED (type) -- && @0 == @2) -- (bit_xor (rrotate @0 @3) @4))) -- --/* Similarly, but in this case the XOR flips bits that originate from the -- result of the left shift. */ --(simplify -- (bit_ior:c (bit_xor (lshift @0 INTEGER_CST@1) INTEGER_CST@2) -- (rshift @3 INTEGER_CST@4)) -- (if ((((((HOST_WIDE_INT_1U << tree_to_uhwi (@1)) - 1)) & tree_to_uhwi (@2)) == 0) -- && (tree_to_uhwi (@1) + tree_to_uhwi (@4)) == TYPE_PRECISION (type) -- && TYPE_UNSIGNED (type) -- && @0 == @3) -- (bit_xor (rrotate @0 @4) @2))) ---- gcc/testsuite/gcc.target/riscv/pr121778.c -+++ gcc/testsuite/gcc.target/riscv/pr121778.c -@@ -1,94 +0,0 @@ --/* { dg-do compile } */ --/* { dg-options "-O2 -march=rv64gcb -mabi=lp64d" { target rv64} } */ --/* { dg-options "-O2 -march=rv32gcb -mabi=ilp32" { target rv32} } */ -- --/* We need to adjust the constant so this works for rv32 and rv64. */ --#if __riscv_xlen == 32 --#define ONE 1U --#define TYPE unsigned int --#else --#define ONE 1UL --#define TYPE unsigned long --#endif -- --#define F1(C) TYPE test_01##C (TYPE a) { return (a << (__riscv_xlen - C)) | ((a >> C) ^ 1); } --#define F2(C) TYPE test_02##C (TYPE a) { return ((a >> (__riscv_xlen - C)) ^ 1) | (a << C); } --#define F3(C) TYPE test_03##C (TYPE a) { return ((a << (__riscv_xlen - C)) ^ (ONE << (__riscv_xlen - 1))) | (a >> C); } --#define F4(C) TYPE test_04##C (TYPE a) { return (a >> (__riscv_xlen - C)) | ((a << C) ^ (ONE << (__riscv_xlen - 1))); } -- --#define F(C) F1(C) F2(C) F3(C) F4(C) -- -- --F (1) --F (2) --F (3) --F (4) --F (5) --F (6) --F (7) --F (8) --F (9) --F (10) --F (11) --F (12) --F (13) --F (14) --F (15) --F (16) --F (17) --F (18) --F (19) --F (20) --F (21) --F (22) --F (23) --F (24) --F (25) --F (26) --F (27) --F (28) --F (29) --F (30) --F (31) --#if __riscv_xlen == 64 --F (32) --F (33) --F (34) --F (35) --F (36) --F (37) --F (38) --F (39) --F (40) --F (41) --F (42) --F (43) --F (44) --F (45) --F (46) --F (47) --F (48) --F (49) --F (50) --F (51) --F (52) --F (53) --F (54) --F (55) --F (56) --F (57) --F (58) --F (59) --F (60) --F (61) --F (62) --F (63) -- --/* { dg-final { scan-assembler-times "\trori" 252 { target { rv64 } } } } */ --/* { dg-final { scan-assembler-times "\txori" 126 { target { rv64 } } } } */ --/* { dg-final { scan-assembler-times "\tbinv" 126 { target { rv64 } } } } */ -- --/* { dg-final { scan-assembler-times "\trori" 124 { target { rv32 } } } } */ --/* { dg-final { scan-assembler-times "\txori" 62 { target { rv32 } } } } */ --/* { dg-final { scan-assembler-times "\tbinv" 62 { target { rv32 } } } } */ --#endif diff --git a/gcc16-pr123115.patch b/gcc16-pr123115.patch deleted file mode 100644 index 2a75016..0000000 --- a/gcc16-pr123115.patch +++ /dev/null @@ -1,17 +0,0 @@ -2025-12-15 Jakub Jelinek - - PR middle-end/123115 - * defaults.h (EH_RETURN_DATA_REGNO): Add void (N) to the macro - definition inside of a comma expression before INVALID_REGNUM. - ---- gcc/defaults.h.jj 2025-08-05 08:19:26.667814010 +0200 -+++ gcc/defaults.h 2025-12-15 11:33:16.656762266 +0100 -@@ -390,7 +390,7 @@ see the files COPYING3 and COPYING.RUNTI - /* Provide defaults for stuff that may not be defined when using - sjlj exceptions. */ - #ifndef EH_RETURN_DATA_REGNO --#define EH_RETURN_DATA_REGNO(N) INVALID_REGNUM -+#define EH_RETURN_DATA_REGNO(N) (void (N), INVALID_REGNUM) - #endif - - /* Offset between the eh handler address and entry in eh tables. */ diff --git a/gcc16-pr123573.patch b/gcc16-pr123573.patch deleted file mode 100644 index 2bc769d..0000000 --- a/gcc16-pr123573.patch +++ /dev/null @@ -1,53 +0,0 @@ -The following fixes the fix from r16-6709-ga4716ece529dfd some -more by making sure permute to one operand folding faces same -element number vectors but also insert a VIEW_CONVERT_EXPR for -the case one is VLA and one is VLS (when the VLA case is actually -constant, like with -msve-vector-bits=128). It also makes the -assert that output and input element numbers match done in -fold_vec_perm which this pattern eventually dispatches to into -a check (as the comment already indicates). - -Testcases are in the target specific aarch64 testsuite already. - -Bootstrap and regtest ongoing on x86_64-unknown-linux-gnu. - -2026-01-13 Richard Biener - - PR middle-end/123573 - * fold-const.cc (fold_vec_perm): Actually check, not assert, - that input and output vector element numbers agree. - * match.pd (vec_perm @0 @1 @2): Make sure element numbers - are the same when folding to an input vector and wrap that - inside a VIEW_CONVERT_EXPR. - ---- gcc/fold-const.cc -+++ gcc/fold-const.cc -@@ -10704,11 +10704,10 @@ fold_vec_perm (tree type, tree arg0, tree arg1, const vec_perm_indices &sel) - - /* For fall back case, we want to ensure we have VLS vectors - with equal length. */ -- if (!sel.length ().is_constant (&nelts)) -+ if (!sel.length ().is_constant (&nelts) -+ || !known_eq (sel.length (), TYPE_VECTOR_SUBPARTS (TREE_TYPE (arg0)))) - return NULL_TREE; - -- gcc_assert (known_eq (sel.length (), -- TYPE_VECTOR_SUBPARTS (TREE_TYPE (arg0)))); - tree *in_elts = XALLOCAVEC (tree, nelts * 2); - if (!vec_cst_ctor_to_array (arg0, nelts, in_elts) - || !vec_cst_ctor_to_array (arg1, nelts, in_elts + nelts)) ---- gcc/match.pd -+++ gcc/match.pd -@@ -11528,9 +11528,9 @@ and, - vec_perm_indices sel (builder, single_arg ? 1 : 2, nelts_in); - } - (if (known_eq (nelts, nelts_in) && sel.series_p (0, 1, 0, 1)) -- { op0; } -- (if (sel.series_p (0, 1, nelts_in, 1)) -- { op1; } -+ (view_convert @0) -+ (if (known_eq (nelts, nelts_in) && sel.series_p (0, 1, nelts_in, 1)) -+ (view_convert @1) - (with - { - if (!single_arg) diff --git a/sources b/sources index 5fa3693..f1dba4c 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-16.0.1-20260113.tar.xz) = 1cd4985667f4a0add59b053bc1ba945f8e7176eace95f3ba05e15de10e50ceaccc4343237c7e552d9bad36c35a7c15c46dccd9d2ff195ab5a85a32cbd5a78e82 +SHA512 (gcc-16.0.1-20260115.tar.xz) = 51ab079dedde5547caba601ce03954d4c5b2bf687538f106d3e851a8918162017fe65817d9e22fd115cf4d4f970bfba6a70a34db183141ce28c5c203a68eec0b SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 SHA512 (nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz) = 7f862986065028df70c843fc3f2c89e200a76b48ad0bd51c749ac8a5aab7be0ebdf35be182fad2407b3281615e75be1ac6833ab6a5130ae9920169a0412f94f0