diff --git a/.gitignore b/.gitignore index 80128da..0bb6643 100644 --- a/.gitignore +++ b/.gitignore @@ -114,3 +114,7 @@ /gcc-13.2.1-20231011.tar.xz /gcc-13.2.1-20231113.tar.xz /gcc-13.2.1-20231205.tar.xz +/gcc-13.2.1-20240316.tar.xz +/gcc-13.3.1-20240522.tar.xz +/gcc-13.3.1-20240611.tar.xz +/gcc-13.3.1-20240913.tar.xz diff --git a/gcc.spec b/gcc.spec index 664d00c..b8f5ad5 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20231205 -%global gitrev f783814ad6a04ae5ef44595216596a2b75eda15b -%global gcc_version 13.2.1 +%global DATE 20240913 +%global gitrev 2fcca36eb1d34066437939cf1b54810a75dd553f +%global gcc_version 13.3.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 6 +%global gcc_release 3 %global nvptx_tools_gitrev aa3404ad5a496cda5d79a50bedb1344fd63e8763 %global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409 %global _unpackaged_files_terminate_build 0 @@ -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-pr110792.patch Patch50: isl-rh2155127.patch @@ -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 @@ -1308,7 +1306,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 @@ -3459,6 +3458,145 @@ end %endif %changelog +* Fri Sep 13 2024 Jakub Jelinek 13.3.1-3 +- update from releases/gcc-13 branch + - PRs c/115290, c++/113063, c++/115511, c++/116289, c++/116449, + driver/115440, fortran/83865, fortran/84006, fortran/98534, + fortran/100027, fortran/103115, fortran/103312, fortran/108889, + fortran/113363, ipa/115277, ipa/116410, jit/115442, libstdc++/114770, + libstdc++/114958, libstdc++/115247, libstdc++/115308, + libstdc++/115454, libstdc++/115522, libstdc++/115575, + libstdc++/115585, libstdc++/115668, libstdc++/115807, + libstdc++/116070, lto/116614, middle-end/115527, middle-end/115836, + rtl-optimization/115049, rtl-optimization/115565, target/87376, + target/88236, target/97367, target/98762, target/103100, + target/105090, target/106069, target/111343, target/113384, + target/113780, target/114603, target/114607, target/114759, + target/114846, target/115253, target/115355, target/115360, + target/115389, target/115457, target/115475, target/115526, + target/115611, target/115618, target/115691, target/115726, + target/115752, target/115872, target/115988, target/116043, + target/116189, target/116287, target/116407, target/116512, + target/116617, testsuite/116061, tree-optimization/113281, + tree-optimization/115843, tree-optimization/116034 + +* Tue Jun 11 2024 Jakub Jelinek 13.3.1-2 +- update from releases/gcc-13 branch + - PRs ada/114398, ada/114708, c/114493, c++/111529, c++/113598, + fortran/110415, fortran/114827, fortran/115150, libstdc++/114940, + libstdc++/115269, middle-end/108789, rtl-optimization/114902, + rtl-optimization/115092, target/113281, target/113719, target/115297, + target/115317, target/115324, tree-optimization/115192, + tree-optimization/115307, tree-optimization/115337 + +* Wed May 22 2024 Jakub Jelinek 13.3.1-1 +- update from releases/gcc-13 branch + - GCC 13.3 release + - PRs analyzer/104042, analyzer/108171, analyzer/109251, analyzer/109577, + analyzer/110014, analyzer/110112, analyzer/110700, analyzer/110882, + analyzer/111289, analyzer/112790, analyzer/112889, analyzer/112969, + analyzer/113253, analyzer/113333, analyzer/114408, analyzer/114473, + bootstrap/106472, bootstrap/114369, c/112571, c/114780, c++/89224, + c++/97990, c++/100667, c++/103825, c++/110006, c++/111284, c++/112769, + c++/113141, c++/113966, c++/114303, c++/114377, c++/114537, + c++/114561, c++/114562, c++/114572, c++/114580, c++/114634, + c++/114691, c++/114709, debug/112718, driver/111700, fortran/36337, + fortran/50410, fortran/55978, fortran/89462, fortran/93678, + fortran/95374, fortran/101135, fortran/102003, fortran/103707, + fortran/103715, fortran/103716, fortran/104352, fortran/106987, + fortran/106999, fortran/107426, fortran/110987, fortran/112407, + fortran/113799, fortran/113866, fortran/113885, fortran/113956, + fortran/114001, fortran/114474, fortran/114535, fortran/114739, + fortran/114825, fortran/115039, gcov-profile/114115, + gcov-profile/114715, ipa/92606, ipa/108007, ipa/111571, ipa/112616, + ipa/113359, ipa/113907, ipa/113964, jit/110466, libgcc/111731, + libquadmath/114533, libstdc++/66146, libstdc++/93672, + libstdc++/104606, libstdc++/107800, libstdc++/108976, + libstdc++/110050, libstdc++/110054, libstdc++/113841, + libstdc++/114147, libstdc++/114316, libstdc++/114359, + libstdc++/114367, libstdc++/114401, libstdc++/114750, + libstdc++/114803, libstdc++/114863, libstdc++/115063, lto/114655, + middle-end/110027, middle-end/111151, middle-end/111632, + middle-end/111683, middle-end/112684, middle-end/112732, + middle-end/113396, middle-end/113622, middle-end/114070, + middle-end/114348, middle-end/114552, middle-end/114599, + middle-end/114734, middle-end/114753, middle-end/114907, + rtl-optimization/54052, rtl-optimization/114415, + rtl-optimization/114768, rtl-optimization/114924, sanitizer/97696, + sanitizer/114687, sanitizer/114743, sanitizer/114956, + sanitizer/115172, target/88309, target/101865, target/105522, + target/110621, target/111234, target/111600, target/111610, + target/111822, target/112397, target/113095, target/113233, + target/113950, target/114049, target/114130, target/114160, + target/114172, target/114175, target/114272, target/114747, + target/114752, target/114794, target/114837, target/114848, + target/114981, testsuite/111066, testsuite/112297, testsuite/114034, + testsuite/114036, testsuite/114662, tree-optimization/91838, + tree-optimization/109925, tree-optimization/110838, + tree-optimization/111009, tree-optimization/111268, + tree-optimization/111407, tree-optimization/111736, + tree-optimization/111882, tree-optimization/112281, + tree-optimization/112303, tree-optimization/112793, + tree-optimization/112961, tree-optimization/112991, + tree-optimization/113552, tree-optimization/113630, + tree-optimization/113670, tree-optimization/113831, + tree-optimization/113910, tree-optimization/114027, + tree-optimization/114115, tree-optimization/114121, + tree-optimization/114203, tree-optimization/114231, + tree-optimization/114246, tree-optimization/114375, + tree-optimization/114396, tree-optimization/114485, + tree-optimization/114566, tree-optimization/114672, + tree-optimization/114733, tree-optimization/114736, + tree-optimization/114749, tree-optimization/114787, + tree-optimization/114799, tree-optimization/114876, + tree-optimization/114965, tree-optimization/115143, + tree-optimization/115152, tree-optimization/115154 +- add --without-clang-plugin --without-llvm-plugin to annobin configure + options + +* Sat Mar 16 2024 Jakub Jelinek 13.2.1-7 +- update from releases/gcc-13 branch + - PRs ada/112781, ada/113893, ada/113979, c++/95226, c++/99493, c++/103185, + c++/104634, c++/107291, c++/109359, c++/109876, c++/109899, + c++/110084, c++/110106, c++/111286, c++/112410, c++/112437, + c++/112439, c++/112795, c++/113088, c++/113242, c++/113347, + c++/113529, c++/113545, c++/113612, c++/113638, c++/113674, + c/113262, c/114007, d/112285, d/112290, d/113125, d/113758, + d/114171, driver/114314, fortran/67277, fortran/93762, + fortran/97592, fortran/100651, fortran/100988, fortran/104819, + fortran/104908, fortran/110826, fortran/114012, fortran/114024, + libfortran/105437, libfortran/105473, libfortran/110651, + libfortran/111022, libfortran/114304, libgcc/113850, libgomp/113192, + libstdc++/90276, libstdc++/99117, libstdc++/107466, + libstdc++/110133, libstdc++/110167, libstdc++/111826, + libstdc++/111948, libstdc++/112467, libstdc++/112473, + libstdc++/112477, libstdc++/112480, libstdc++/112832, + libstdc++/113200, libstdc++/113241, libstdc++/113250, + libstdc++/113258, libstdc++/113294, libstdc++/113450, + libstdc++/113500, libstdc++/113512, libstdc++/113960, + libstdc++/114152, middle-end/90348, middle-end/95351, + middle-end/107385, middle-end/110115, middle-end/110176, + middle-end/110754, middle-end/111422, middle-end/112733, + middle-end/113907, middle-end/113921, middle-end/114136, + other/109668, preprocessor/105608, rtl-optimization/110079, + rtl-optimization/112758, rtl-optimization/113140, + rtl-optimization/113656, rtl-optimization/114211, sanitizer/111736, + sanitizer/112709, sanitizer/112727, target/101737, target/105523, + target/107201, target/108120, target/108174, target/111677, + target/112299, target/112330, target/112759, target/112787, + target/112816, target/112837, target/112845, target/112891, + target/112952, target/113122, target/113156, target/113601, + target/113824, target/113927, target/114098, target/114184, + target/114310, target/114339, testsuite/106879, testsuite/108321, + testsuite/113175, testsuite/113366, testsuite/114343, + tree-optimization/109804, tree-optimization/110221, + tree-optimization/110422, tree-optimization/112495, + tree-optimization/112505, tree-optimization/112618, + tree-optimization/113012, tree-optimization/113013, + tree-optimization/113372, tree-optimization/113603, + tree-optimization/113896, tree-optimization/113993, + tree-optimization/114041, tree-optimization/114090 + * 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, diff --git a/gcc13-libstdc++-docs.patch b/gcc13-libstdc++-docs.patch index ce94f5d..b007822 100644 --- a/gcc13-libstdc++-docs.patch +++ b/gcc13-libstdc++-docs.patch @@ -4,7 +4,7 @@ FSF

-+ Release 13.2.1 ++ Release 13.3.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 13.3.1 release, + online for each GCC release and 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/sources b/sources index 9509f03..abc61b0 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-13.2.1-20231205.tar.xz) = f132a2d35d6ea0b0d82043870f1c9f60dda119e63df6833b16d20e2c93e2978f62698d4cc72a6e2eefbaeded0683107de9ebeb93923b96c57dcd612504aa6a1b +SHA512 (gcc-13.3.1-20240913.tar.xz) = adc6c54e8ddffbc59d55a144b5ef27ad84a3664af24907029eadbe379397a3b64600a42a16802e94f9329d52ec974ee5edc778d174f23cb9f8eead372d121fa7 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983 SHA512 (nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz) = 33a024326426375533cb5dd9b68b2508f37540be418d2506bfa19a5f5866485e9af150469064e9059b68136ad8cb080b3b12e7eb5c6b7d1288cf6bfb3f6bb5d0 diff --git a/update-gcc.sh b/update-gcc.sh index b49ed15..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-13.2.1-$d/ $1 | xz -9e > gcc-13.2.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-'`