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-'`