Resolves: RHEL-29971
This commit is contained in:
Marek Polacek 2024-06-10 13:54:05 -04:00
parent e665b52be9
commit f164eb2f63
5 changed files with 85 additions and 33 deletions

2
.gitignore vendored
View File

@ -11,3 +11,5 @@
/gcc-14.0.1-20240411.tar.xz /gcc-14.0.1-20240411.tar.xz
/gcc-14.1.1-20240508.tar.xz /gcc-14.1.1-20240508.tar.xz
/nvptx-tools-9962793f41e016318dc5eca07ae602041cf526ff.tar.xz /nvptx-tools-9962793f41e016318dc5eca07ae602041cf526ff.tar.xz
/gcc-14.1.1-20240607.tar.xz
/nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz

View File

@ -1,11 +1,11 @@
%global DATE 20240508 %global DATE 20240607
%global gitrev 9ae733ecd3cd76d7e2f99385520783b01ab7e5dd %global gitrev 1de1e03e8bd3490b53f6fe454f7a48ddc1c839f2
%global gcc_version 14.1.1 %global gcc_version 14.1.1
%global gcc_major 14 %global gcc_major 14
# Note, gcc_release must be integer, if you want to add suffixes to # Note, gcc_release must be integer, if you want to add suffixes to
# %%{release}, append them after %%{gcc_release} on Release: line. # %%{release}, append them after %%{gcc_release} on Release: line.
%global gcc_release 2 %global gcc_release 5
%global nvptx_tools_gitrev 9962793f41e016318dc5eca07ae602041cf526ff %global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804
%global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed %global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed
%global _unpackaged_files_terminate_build 0 %global _unpackaged_files_terminate_build 0
%if 0%{?fedora:1} %if 0%{?fedora:1}
@ -150,23 +150,17 @@ Release: %{gcc_release}%{?dist}
# libcody: Apache-2.0 # libcody: Apache-2.0
# libphobos/src/etc/c/curl.d: curl # libphobos/src/etc/c/curl.d: curl
# All of the remaining license soup is in newlib. # All of the remaining license soup is in newlib.
# Outstanding new SPDX identifier requests: 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
# 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. # The source for this package was pulled from upstream's vcs.
# %%{gitrev} is some commit from the # %%{gitrev} is some commit from the
# https://gcc.gnu.org/git/?p=gcc.git;h=refs/vendors/redhat/heads/gcc-%%{gcc_major}-branch # 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: # branch. Use the following command to generate the tarball:
# git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp # ./update-gcc.sh %%{gitrev}
# git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin %%{gitrev} # optionally if say /usr/src/gcc/.git/ is an existing gcc git clone
# git --git-dir=gcc-dir.tmp/.git archive --prefix=%%{name}-%%{version}-%%{DATE}/ %%{gitrev} | xz -9e > %%{name}-%%{version}-%%{DATE}.tar.xz # ./update-gcc.sh %%{gitrev} /usr/src/gcc/.git/
# rm -rf gcc-dir.tmp # 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 Source0: gcc-%{version}-%{DATE}.tar.xz
# The source for nvptx-tools package was pulled from upstream's vcs. Use the # The source for nvptx-tools package was pulled from upstream's vcs. Use the
# following commands to generate the tarball: # following commands to generate the tarball:
@ -3632,6 +3626,33 @@ end
%endif %endif
%changelog %changelog
* Fri Jun 7 2024 Jakub Jelinek <jakub@redhat.com> 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 <jakub@redhat.com> 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 <siddhesh@redhat.com> 14.1.1-3
- update new SPDX identifiers from all outstanding issues
* Thu May 16 2024 Marek Polacek <polacek@redhat.com> 14.1.1-2 * Thu May 16 2024 Marek Polacek <polacek@redhat.com> 14.1.1-2
- fix a combinatorial explosion in combine (PR rtl-optimization/101523) - fix a combinatorial explosion in combine (PR rtl-optimization/101523)

View File

@ -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 Bootstrap and regtest running ontop of a reversal of
r14-9692-g839bc42772ba7a. 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 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 PR rtl-optimization/101523
* combine.cc (try_combine): When the pattern of i2 doesn't * 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 +/* Number of times I2 didn't change in try_combine. Used to prevent a
+ combinatorial explosion. */ + combinatorial explosion. */
+ +
+static int combine_unchanged; +static int combine_i2_unchanged;
+ +
/* Number of attempts to combine instructions in this function. */ /* 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; return false;
combine_attempts = 0; combine_attempts = 0;
+ combine_unchanged = 0; + combine_i2_unchanged = 0;
combine_merges = 0; combine_merges = 0;
combine_extras = 0; combine_extras = 0;
combine_successes = 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); adjust_for_new_dest (i3);
} }
+ bool i2_unchanged = false; + bool i2_i2_unchanged = false;
+ if (rtx_equal_p (newi2pat, PATTERN (i2))) + 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 /* We now know that we can do this combination. Merge the insns and
update the status of registers and LOG_LINKS. */ 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++; combine_successes++;
undo_commit (); undo_commit ();
+ if (i2_unchanged) + if (i2_i2_unchanged)
+ { + {
+ if (combine_unchanged == 1000) + if (combine_i2_unchanged == 1000)
+ return i3; + return i3;
+ ++combine_unchanged; + ++combine_i2_unchanged;
+ } + }
+ +
rtx_insn *ret = newi2pat ? i2 : i3; rtx_insn *ret = newi2pat ? i2 : i3;

View File

@ -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 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95
SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d SHA512 (newlib-cygwin-d45261f62a15f8abd94a1031020b9a9f455e4eed.tar.xz) = 31bfc19429797236e268e22b752c5abeabb9c0f39b1058634af8dab329b4f028fc72a35888193c9575f6cee5cf2c069669d79fcb4d4e3a4318f57413452f707d
SHA512 (nvptx-tools-9962793f41e016318dc5eca07ae602041cf526ff.tar.xz) = 97ef04cf721f562f6859b948debf1a2b5a5c7970b60281d3162535669c9173f0e73585650b6798e2844860b08405252db074488418be167a9a0c4883e62f9432 SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea

View File

@ -1,7 +1,36 @@
#!/bin/sh #!/bin/sh
[ -d gcc-dir.tmp ] && echo gcc-dir.tmp already exists && exit 1 if [ "$#" -eq 0 ]; then
git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp echo "Usage: ./update-gcc.sh gcc/redhat/heads/gcc-NN-branch_commit_hash [git_reference_dir_to_speed_up]"
git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 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'` 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 rm -rf gcc-dir.tmp
fedpkg new-sources gcc-$v-$d.tar.xz `sed 's/SHA512 (\(.*\)) = [0-9a-f]\+$/\1/' sources | grep -v '^gcc-'`