9.0.1-0.14

This commit is contained in:
Jakub Jelinek 2019-04-18 13:23:34 +02:00
parent 84af04ddb6
commit a3fcce8f5b
6 changed files with 16 additions and 307 deletions

1
.gitignore vendored
View File

@ -72,3 +72,4 @@
/gcc-9.0.1-20190320.tar.xz /gcc-9.0.1-20190320.tar.xz
/gcc-9.0.1-20190328.tar.xz /gcc-9.0.1-20190328.tar.xz
/gcc-9.0.1-20190415.tar.xz /gcc-9.0.1-20190415.tar.xz
/gcc-9.0.1-20190418.tar.xz

View File

@ -1,10 +1,10 @@
%global DATE 20190415 %global DATE 20190418
%global SVNREV 270367 %global SVNREV 270440
%global gcc_version 9.0.1 %global gcc_version 9.0.1
%global gcc_major 9 %global gcc_major 9
# 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 0.13 %global gcc_release 0.14
%global nvptx_tools_gitrev c28050f60193b3b95a18866a96f03334e874e78f %global nvptx_tools_gitrev c28050f60193b3b95a18866a96f03334e874e78f
%global nvptx_newlib_gitrev aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24 %global nvptx_newlib_gitrev aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24
%global _unpackaged_files_terminate_build 0 %global _unpackaged_files_terminate_build 0
@ -151,7 +151,7 @@ BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, sharutils
BuildRequires: texinfo, texinfo-tex, /usr/bin/pod2man BuildRequires: texinfo, texinfo-tex, /usr/bin/pod2man
BuildRequires: systemtap-sdt-devel >= 1.3 BuildRequires: systemtap-sdt-devel >= 1.3
BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1 BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1
BuildRequires: python2-devel, python3-devel BuildRequires: python2-devel, python3-devel, /usr/bin/python
BuildRequires: gcc, gcc-c++ BuildRequires: gcc, gcc-c++
%if %{build_go} %if %{build_go}
BuildRequires: hostname, procps BuildRequires: hostname, procps
@ -255,9 +255,6 @@ Patch9: gcc9-Wno-format-security.patch
Patch10: gcc9-rh1574936.patch Patch10: gcc9-rh1574936.patch
Patch11: gcc9-d-shared-libphobos.patch Patch11: gcc9-d-shared-libphobos.patch
Patch12: gcc9-pr89093.patch Patch12: gcc9-pr89093.patch
Patch13: gcc9-pr89794.patch
Patch14: gcc9-pr90071.patch
Patch15: gcc9-pr90074.patch
Patch1000: nvptx-tools-no-ptxas.patch Patch1000: nvptx-tools-no-ptxas.patch
Patch1001: nvptx-tools-build.patch Patch1001: nvptx-tools-build.patch
@ -769,9 +766,6 @@ to NVidia PTX capable devices if available.
%endif %endif
%patch11 -p0 -b .d-shared-libphobos~ %patch11 -p0 -b .d-shared-libphobos~
%patch12 -p0 -b .pr89093~ %patch12 -p0 -b .pr89093~
%patch13 -p0 -b .pr89794~
%patch14 -p0 -b .pr90071~
%patch15 -p0 -b .pr90074~
cd nvptx-tools-%{nvptx_tools_gitrev} cd nvptx-tools-%{nvptx_tools_gitrev}
%patch1000 -p1 -b .nvptx-tools-no-ptxas~ %patch1000 -p1 -b .nvptx-tools-no-ptxas~
@ -2963,6 +2957,16 @@ end
%endif %endif
%changelog %changelog
* Thu Apr 18 2019 Jakub Jelinek <jakub@redhat.com> 9.0.1-0.14
- update from trunk
- PRs bootstrap/89864, c++/86953, c++/89325, c++/90047, c++/90124,
debug/89528, fortran/90048, fortran/90067, fortran/90114,
libstdc++/90105, middle-end/90095, rtl-optimization/86438,
rtl-optimization/90082, target/17108, target/84369, target/90096,
target/90125, translation/79183, tree-optimization/56049,
tree-optimization/90090
- buildrequire /usr/bin/python for better dg-extract-results.sh
* Mon Apr 15 2019 Jakub Jelinek <jakub@redhat.com> 9.0.1-0.13 * Mon Apr 15 2019 Jakub Jelinek <jakub@redhat.com> 9.0.1-0.13
- update from trunk - update from trunk
- PRs bootstrap/89980, c++/47488, c++/56643, c++/61327, c++/62207, - PRs bootstrap/89980, c++/47488, c++/56643, c++/61327, c++/62207,

View File

@ -1,142 +0,0 @@
2019-04-15 Segher Boessenkool <segher@kernel.crashing.org>
PR rtl-optimization/89794
* combine.c (count_auto_inc): New function.
(try_combine): Count how many auto_inc expressions there were in the
original instructions. Ensure we have the same number in the new
instructions. Remove the code that tried to ensure auto_inc side
effects on i1 and i0 are not lost.
* gcc.dg/torture/pr89794.c: New testcase.
--- gcc/combine.c (revision 270367)
+++ gcc/combine.c (revision 270368)
@@ -2641,6 +2641,16 @@ is_just_move (rtx x)
return (GET_CODE (x) == SET && general_operand (SET_SRC (x), VOIDmode));
}
+/* Callback function to count autoincs. */
+
+static int
+count_auto_inc (rtx, rtx, rtx, rtx, rtx, void *arg)
+{
+ (*((int *) arg))++;
+
+ return 0;
+}
+
/* Try to combine the insns I0, I1 and I2 into I3.
Here I0, I1 and I2 appear earlier than I3.
I0 and I1 can be zero; then we combine just I2 into I3, or I1 and I2 into
@@ -2706,6 +2716,7 @@ try_combine (rtx_insn *i3, rtx_insn *i2,
int split_i2i3 = 0;
int changed_i3_dest = 0;
bool i2_was_move = false, i3_was_move = false;
+ int n_auto_inc = 0;
int maxreg;
rtx_insn *temp_insn;
@@ -3210,6 +3221,16 @@ try_combine (rtx_insn *i3, rtx_insn *i2,
return 0;
}
+ /* Count how many auto_inc expressions there were in the original insns;
+ we need to have the same number in the resulting patterns. */
+
+ if (i0)
+ for_each_inc_dec (PATTERN (i0), count_auto_inc, &n_auto_inc);
+ if (i1)
+ for_each_inc_dec (PATTERN (i1), count_auto_inc, &n_auto_inc);
+ for_each_inc_dec (PATTERN (i2), count_auto_inc, &n_auto_inc);
+ for_each_inc_dec (PATTERN (i3), count_auto_inc, &n_auto_inc);
+
/* If the set in I2 needs to be kept around, we must make a copy of
PATTERN (I2), so that when we substitute I1SRC for I1DEST in
PATTERN (I2), we are only substituting for the original I1DEST, not into
@@ -3411,18 +3432,11 @@ try_combine (rtx_insn *i3, rtx_insn *i2,
if (i1 && GET_CODE (newpat) != CLOBBER)
{
- /* Check that an autoincrement side-effect on I1 has not been lost.
- This happens if I1DEST is mentioned in I2 and dies there, and
- has disappeared from the new pattern. */
- if ((FIND_REG_INC_NOTE (i1, NULL_RTX) != 0
- && i1_feeds_i2_n
- && dead_or_set_p (i2, i1dest)
- && !reg_overlap_mentioned_p (i1dest, newpat))
- /* Before we can do this substitution, we must redo the test done
- above (see detailed comments there) that ensures I1DEST isn't
- mentioned in any SETs in NEWPAT that are field assignments. */
- || !combinable_i3pat (NULL, &newpat, i1dest, NULL_RTX, NULL_RTX,
- 0, 0, 0))
+ /* Before we can do this substitution, we must redo the test done
+ above (see detailed comments there) that ensures I1DEST isn't
+ mentioned in any SETs in NEWPAT that are field assignments. */
+ if (!combinable_i3pat (NULL, &newpat, i1dest, NULL_RTX, NULL_RTX,
+ 0, 0, 0))
{
undo_all ();
return 0;
@@ -3452,12 +3466,8 @@ try_combine (rtx_insn *i3, rtx_insn *i2,
if (i0 && GET_CODE (newpat) != CLOBBER)
{
- if ((FIND_REG_INC_NOTE (i0, NULL_RTX) != 0
- && ((i0_feeds_i2_n && dead_or_set_p (i2, i0dest))
- || (i0_feeds_i1_n && dead_or_set_p (i1, i0dest)))
- && !reg_overlap_mentioned_p (i0dest, newpat))
- || !combinable_i3pat (NULL, &newpat, i0dest, NULL_RTX, NULL_RTX,
- 0, 0, 0))
+ if (!combinable_i3pat (NULL, &newpat, i0dest, NULL_RTX, NULL_RTX,
+ 0, 0, 0))
{
undo_all ();
return 0;
@@ -3478,6 +3488,20 @@ try_combine (rtx_insn *i3, rtx_insn *i2,
substed_i0 = 1;
}
+ if (n_auto_inc)
+ {
+ int new_n_auto_inc = 0;
+ for_each_inc_dec (newpat, count_auto_inc, &new_n_auto_inc);
+
+ if (n_auto_inc != new_n_auto_inc)
+ {
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ fprintf (dump_file, "Number of auto_inc expressions changed\n");
+ undo_all ();
+ return 0;
+ }
+ }
+
/* Fail if an autoincrement side-effect has been duplicated. Be careful
to count all the ways that I2SRC and I1SRC can be used. */
if ((FIND_REG_INC_NOTE (i2, NULL_RTX) != 0
--- gcc/testsuite/gcc.dg/torture/pr89794.c (nonexistent)
+++ gcc/testsuite/gcc.dg/torture/pr89794.c (revision 270368)
@@ -0,0 +1,24 @@
+/* { dg-do run } */
+
+typedef unsigned short u16;
+typedef unsigned int u32;
+typedef unsigned long long u64;
+
+u32 a, b, c, d;
+
+u32 foo (u32 f, u32 g, u32 g2, u32 g3, u16 h, u16 i)
+{
+ (void)g, (void)g2, (void)g3, (void)h;
+ d = __builtin_bswap64 (i);
+ __builtin_sub_overflow (0, d, &b);
+ __builtin_memset (&i, c, 2);
+ a = 0;
+ return b + f + i + c;
+}
+
+int main (void)
+{
+ u32 x = foo (0, 0, 0, 0, 0, 0);
+ asm ("" :: "r" (x));
+ return 0;
+}

View File

@ -1,47 +0,0 @@
2019-04-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/90071
* tree-ssa-reassoc.c (init_range_entry): Do not pick up
abnormal operands from def stmts.
* gcc.dg/torture/pr90071.c: New testcase.
--- gcc/tree-ssa-reassoc.c (revision 270368)
+++ gcc/tree-ssa-reassoc.c (revision 270369)
@@ -2143,7 +2143,8 @@ init_range_entry (struct range_entry *r,
exp_type = boolean_type_node;
}
- if (TREE_CODE (arg0) != SSA_NAME)
+ if (TREE_CODE (arg0) != SSA_NAME
+ || SSA_NAME_OCCURS_IN_ABNORMAL_PHI (arg0))
break;
loc = gimple_location (stmt);
switch (code)
--- gcc/testsuite/gcc.dg/torture/pr90071.c (nonexistent)
+++ gcc/testsuite/gcc.dg/torture/pr90071.c (revision 270369)
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+
+int a;
+static int b;
+
+void
+foo ()
+{
+ int d;
+ int e = (int) (__INTPTR_TYPE__) &&f;
+ void *g = &&h;
+h: ++e;
+ if (a)
+ i: goto *g;
+ for (;;)
+ {
+ e = 0;
+ if (b)
+ goto i;
+ }
+f:
+ goto *({ d || e < 0 || e >= 2; });
+ &e;
+}

View File

@ -1,107 +0,0 @@
2019-04-15 Richard Biener <rguenther@suse.de>
PR debug/90074
* tree-loop-distribution.c (destroy_loop): Preserve correct
debug info.
* gcc.dg/guality/pr90074.c: New testcase.
--- gcc/tree-loop-distribution.c (revision 270369)
+++ gcc/tree-loop-distribution.c (revision 270370)
@@ -1094,12 +1094,8 @@ destroy_loop (struct loop *loop)
bbs = get_loop_body_in_dom_order (loop);
- redirect_edge_pred (exit, src);
- exit->flags &= ~(EDGE_TRUE_VALUE|EDGE_FALSE_VALUE);
- exit->flags |= EDGE_FALLTHRU;
- cancel_loop_tree (loop);
- rescan_loop_exit (exit, false, true);
-
+ gimple_stmt_iterator dst_gsi = gsi_after_labels (exit->dest);
+ bool safe_p = single_pred_p (exit->dest);
i = nbbs;
do
{
@@ -1116,14 +1112,45 @@ destroy_loop (struct loop *loop)
if (virtual_operand_p (gimple_phi_result (phi)))
mark_virtual_phi_result_for_renaming (phi);
}
- for (gimple_stmt_iterator gsi = gsi_start_bb (bbs[i]); !gsi_end_p (gsi);
- gsi_next (&gsi))
+ for (gimple_stmt_iterator gsi = gsi_start_bb (bbs[i]); !gsi_end_p (gsi);)
{
gimple *stmt = gsi_stmt (gsi);
tree vdef = gimple_vdef (stmt);
if (vdef && TREE_CODE (vdef) == SSA_NAME)
mark_virtual_operand_for_renaming (vdef);
+ /* Also move and eventually reset debug stmts. We can leave
+ constant values in place in case the stmt dominates the exit.
+ ??? Non-constant values from the last iteration can be
+ replaced with final values if we can compute them. */
+ if (gimple_debug_bind_p (stmt))
+ {
+ tree val = gimple_debug_bind_get_value (stmt);
+ gsi_move_before (&gsi, &dst_gsi);
+ if (val
+ && (!safe_p
+ || !is_gimple_min_invariant (val)
+ || !dominated_by_p (CDI_DOMINATORS, exit->src, bbs[i])))
+ {
+ gimple_debug_bind_reset_value (stmt);
+ update_stmt (stmt);
+ }
+ }
+ else
+ gsi_next (&gsi);
}
+ }
+ while (i != 0);
+
+ redirect_edge_pred (exit, src);
+ exit->flags &= ~(EDGE_TRUE_VALUE|EDGE_FALSE_VALUE);
+ exit->flags |= EDGE_FALLTHRU;
+ cancel_loop_tree (loop);
+ rescan_loop_exit (exit, false, true);
+
+ i = nbbs;
+ do
+ {
+ --i;
delete_basic_block (bbs[i]);
}
while (i != 0);
--- gcc/testsuite/gcc.dg/guality/pr90074.c (nonexistent)
+++ gcc/testsuite/gcc.dg/guality/pr90074.c (revision 270370)
@@ -0,0 +1,31 @@
+/* { dg-do run } */
+/* { dg-options "-g" } */
+
+void __attribute__((noinline))
+optimize_me_not ()
+{
+ __asm__ volatile ("" : : : "memory");
+}
+char a;
+short b[7][1];
+int main()
+{
+ int i, c;
+ a = 0;
+ i = 0;
+ for (; i < 7; i++) {
+ c = 0;
+ for (; c < 1; c++)
+ b[i][c] = 0;
+ }
+ /* i may very well be optimized out, so we cannot test for i == 7.
+ Instead test i + 1 which will make the test UNSUPPORTED if i
+ is optimized out. Since the test previously had wrong debug
+ with i == 0 this is acceptable. Optimally we'd produce a
+ debug stmt for the final value of the loop during loop distribution
+ which would fix the UNSUPPORTED cases.
+ c is optimized out at -Og for no obvious reason. */
+ optimize_me_not(); /* { dg-final { gdb-test . "i + 1" "8" } } */
+ /* { dg-final { gdb-test .-1 "c + 1" "2" } } */
+ return 0;
+}

View File

@ -1,3 +1,3 @@
SHA512 (gcc-9.0.1-20190415.tar.xz) = 873029d6cc80d43d898a7c5eca30ddf64cceb6f155c5e087e892290590a7026df4fd32ca5d2e2c0f9b80b7fee8bb372f514d1f5e9845490a1ffcb9cc50649b92 SHA512 (gcc-9.0.1-20190418.tar.xz) = 7fd8b5a1d184632ae42dad7cf71d280061e96c106f23b1697823f0d6c2f8023f7e4351059d7d8faae5f6303a91cf2af760d8cd3d507c575f32a0256268c125ab
SHA512 (nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.xz) = 94f7089365296f7dfa485107b4143bebc850a81586f3460fd896bbbb6ba099a00217d4042133424fd2183b352132f4fd367e6a60599bdae2a26dfd48a77d0e04 SHA512 (nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.xz) = 94f7089365296f7dfa485107b4143bebc850a81586f3460fd896bbbb6ba099a00217d4042133424fd2183b352132f4fd367e6a60599bdae2a26dfd48a77d0e04
SHA512 (nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.xz) = a688cb12cf805950a5abbb13b52f45c81dbee98e310b7ed57ae20e76dbfa5964a16270148374a6426d177db71909d28360490f091c86a5d19d4faa5127beeee1 SHA512 (nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.xz) = a688cb12cf805950a5abbb13b52f45c81dbee98e310b7ed57ae20e76dbfa5964a16270148374a6426d177db71909d28360490f091c86a5d19d4faa5127beeee1