From f164eb2f631a0c20e5e0b6171df7c6c84222a400 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Mon, 10 Jun 2024 13:54:05 -0400 Subject: [PATCH] 14.1.1-5 Resolves: RHEL-29971 --- .gitignore | 2 ++ gcc.spec | 57 ++++++++++++++++++++++++++++++-------------- gcc14-pr101523.patch | 18 +++++++------- sources | 4 ++-- update-gcc.sh | 37 ++++++++++++++++++++++++---- 5 files changed, 85 insertions(+), 33 deletions(-) diff --git a/.gitignore b/.gitignore index 4ba696a..9d59756 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,5 @@ /gcc-14.0.1-20240411.tar.xz /gcc-14.1.1-20240508.tar.xz /nvptx-tools-9962793f41e016318dc5eca07ae602041cf526ff.tar.xz +/gcc-14.1.1-20240607.tar.xz +/nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz diff --git a/gcc.spec b/gcc.spec index 0d6b4bd..94e56d9 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,11 +1,11 @@ -%global DATE 20240508 -%global gitrev 9ae733ecd3cd76d7e2f99385520783b01ab7e5dd +%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 2 -%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} @@ -150,23 +150,17 @@ 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 # 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: @@ -3632,6 +3626,33 @@ 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, + 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) 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..5d32c89 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-14.1.1-20240508.tar.xz) = 2c0106d8a92ea76dacd78bcb2ac988d3662f15aa846772f5c3b1c93aa77f3a5e4cc601a4ece208ab414e8075d1fef49ebe66dea658b24ab9594618717356a8d7 +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 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-'`