diff --git a/.gitignore b/.gitignore index ec5433f..8c93ff6 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /gcc-6.0.0-20160305.tar.bz2 /gcc-6.0.0-20160311.tar.bz2 /gcc-6.0.0-20160323.tar.bz2 +/gcc-6.0.0-20160331.tar.bz2 diff --git a/gcc.spec b/gcc.spec index 8f16562..cb08d34 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,9 +1,9 @@ -%global DATE 20160323 -%global SVNREV 234421 +%global DATE 20160331 +%global SVNREV 234619 %global gcc_version 6.0.0 # 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 0.18 +%global gcc_release 0.19 %global _unpackaged_files_terminate_build 0 %global _performance_build 1 # Hardening slows the compiler way too much. @@ -206,7 +206,7 @@ Patch10: gcc6-no-add-needed.patch Patch11: gcc6-libgo-p224.patch Patch12: gcc6-aarch64-async-unw-tables.patch Patch13: gcc6-libsanitize-aarch64-va42.patch -Patch14: gcc6-pr70001.patch +Patch14: gcc6-pr70404.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -773,7 +773,7 @@ package or when debugging this package. rm -f libgo/go/crypto/elliptic/p224{,_test}.go %patch12 -p0 -b .aarch64-async-unw-tables~ %patch13 -p0 -b .libsanitize-aarch64-va42~ -%patch14 -p0 -b .pr70001~ +%patch14 -p0 -b .pr70404~ %if 0%{?_enable_debug_packages} mkdir dwz-wrapper @@ -3066,6 +3066,22 @@ fi %doc rpm.doc/changelogs/libcc1/ChangeLog* %changelog +* Thu Mar 31 2016 Jakub Jelinek 6.0.0-0.19 +- update from the trunk + - PRs c++/62212, c++/64266, c++/69315, c++/69884, c++/70323, c++/70332, + c++/70344, c++/70347, c++/70353, c++/70376, c++/70386, c++/70422, + c++/70430, fortran/70397, ipa/12392, ipa/70283, ipa/70366, + libgfortran/70235, libgomp/69414, libstdc++/69945, lto/69650, + middle-end/69845, middle-end/70355, middle-end/70370, + middle-end/70424, middle-end/70450, rtl-optimization/68695, + rtl-optimization/70429, rtl-optimization/70460, target/63890, + target/69917, target/70052, target/70120, target/70290, target/70319, + target/70381, target/70406, target/70421, testsuite/64177, + testsuite/70356, tree-optimization/59124, tree-optimization/69042, + tree-optimization/70372, tree-optimization/70396, + tree-optimization/70405 +- fix s390x ICE (PR target/70404) + * Wed Mar 23 2016 Jakub Jelinek 6.0.0-0.18 - update from the trunk - PRs bootstrap/69513, c++/53792, c++/58281, c++/70095, c++/70096, diff --git a/gcc6-pr70001.patch b/gcc6-pr70001.patch deleted file mode 100644 index 8019dfa..0000000 --- a/gcc6-pr70001.patch +++ /dev/null @@ -1,154 +0,0 @@ -2016-03-10 Jakub Jelinek - - PR c++/70001 - * constexpr.c (cxx_eval_vec_init_1): Reuse CONSTRUCTOR initializers - for 1..max even for multi-dimensional arrays. Call unshare_expr - on it. - - * g++.dg/cpp0x/constexpr-70001-4.C: New test. - * g++.dg/cpp1y/pr70001.C: New test. - ---- gcc/cp/constexpr.c.jj 2016-03-10 12:52:04.000000000 +0100 -+++ gcc/cp/constexpr.c 2016-03-10 19:24:28.435537864 +0100 -@@ -2340,7 +2340,6 @@ cxx_eval_vec_init_1 (const constexpr_ctx - vec **p = &CONSTRUCTOR_ELTS (ctx->ctor); - vec_alloc (*p, max + 1); - bool pre_init = false; -- tree pre_init_elt = NULL_TREE; - unsigned HOST_WIDE_INT i; - - /* For the default constructor, build up a call to the default -@@ -2370,6 +2369,7 @@ cxx_eval_vec_init_1 (const constexpr_ctx - { - tree idx = build_int_cst (size_type_node, i); - tree eltinit; -+ bool reuse = false; - constexpr_ctx new_ctx; - init_subob_ctx (ctx, new_ctx, idx, pre_init ? init : elttype); - if (new_ctx.ctor != ctx->ctor) -@@ -2378,7 +2378,10 @@ cxx_eval_vec_init_1 (const constexpr_ctx - { - /* A multidimensional array; recurse. */ - if (value_init || init == NULL_TREE) -- eltinit = NULL_TREE; -+ { -+ eltinit = NULL_TREE; -+ reuse = i == 0; -+ } - else - eltinit = cp_build_array_ref (input_location, init, idx, - tf_warning_or_error); -@@ -2390,18 +2393,9 @@ cxx_eval_vec_init_1 (const constexpr_ctx - { - /* Initializing an element using value or default initialization - we just pre-built above. */ -- if (pre_init_elt == NULL_TREE) -- pre_init_elt -- = cxx_eval_constant_expression (&new_ctx, init, lval, -- non_constant_p, overflow_p); -- eltinit = pre_init_elt; -- /* Don't reuse the result of cxx_eval_constant_expression -- call if it isn't a constant initializer or if it requires -- relocations. */ -- if (initializer_constant_valid_p (pre_init_elt, -- TREE_TYPE (pre_init_elt)) -- != null_pointer_node) -- pre_init_elt = NULL_TREE; -+ eltinit = cxx_eval_constant_expression (&new_ctx, init, lval, -+ non_constant_p, overflow_p); -+ reuse = i == 0; - } - else - { -@@ -2427,6 +2421,23 @@ cxx_eval_vec_init_1 (const constexpr_ctx - } - else - CONSTRUCTOR_APPEND_ELT (*p, idx, eltinit); -+ /* Reuse the result of cxx_eval_constant_expression call -+ from the first iteration to all others if it is a constant -+ initializer that doesn't require relocations. */ -+ if (reuse -+ && max > 1 -+ && (initializer_constant_valid_p (eltinit, TREE_TYPE (eltinit)) -+ == null_pointer_node)) -+ { -+ if (new_ctx.ctor != ctx->ctor) -+ eltinit = new_ctx.ctor; -+ for (i = 1; i < max; ++i) -+ { -+ idx = build_int_cst (size_type_node, i); -+ CONSTRUCTOR_APPEND_ELT (*p, idx, unshare_expr (eltinit)); -+ } -+ break; -+ } - } - - if (!*non_constant_p) ---- gcc/testsuite/g++.dg/cpp0x/constexpr-70001-4.C.jj 2016-03-10 19:28:13.386481311 +0100 -+++ gcc/testsuite/g++.dg/cpp0x/constexpr-70001-4.C 2016-03-10 19:28:43.295074924 +0100 -@@ -0,0 +1,13 @@ -+// PR c++/70001 -+// { dg-do compile { target c++11 } } -+ -+struct B -+{ -+ int a; -+ constexpr B () : a (0) { } -+}; -+ -+struct A -+{ -+ B b[1 << 19][1][1][1]; -+} c; ---- gcc/testsuite/g++.dg/cpp1y/pr70001.C.jj 2016-03-11 18:22:15.526046513 +0100 -+++ gcc/testsuite/g++.dg/cpp1y/pr70001.C 2016-03-11 18:21:43.000000000 +0100 -@@ -0,0 +1,49 @@ -+// PR c++/70001 -+// { dg-do compile { target c++14 } } -+ -+struct B -+{ -+ int a; -+ constexpr B () : a (0) { } -+ constexpr B (int x) : a (x) { } -+}; -+struct C -+{ -+ B c; -+ constexpr C () : c (0) { } -+}; -+struct A -+{ -+ B b[1 << 4]; -+}; -+struct D -+{ -+ C d[1 << 4]; -+}; -+ -+constexpr int -+foo (int a, int b) -+{ -+ A c; -+ c.b[a].a += b; -+ c.b[b].a += a; -+ return c.b[0].a + c.b[a].a + c.b[b].a; -+} -+ -+constexpr int -+bar (int a, int b) -+{ -+ D c; -+ c.d[a].c.a += b; -+ c.d[b].c.a += a; -+ return c.d[0].c.a + c.d[a].c.a + c.d[b].c.a; -+} -+ -+constexpr int d = foo (1, 2); -+constexpr int e = foo (0, 3); -+constexpr int f = foo (2, 4); -+constexpr int g = bar (1, 2); -+constexpr int h = bar (0, 3); -+constexpr int i = bar (2, 4); -+static_assert (d == 3 && e == 6 && f == 6, ""); -+static_assert (g == 3 && h == 6 && i == 6, ""); diff --git a/gcc6-pr70404.patch b/gcc6-pr70404.patch new file mode 100644 index 0000000..f285126 --- /dev/null +++ b/gcc6-pr70404.patch @@ -0,0 +1,17 @@ +2016-03-31 Jakub Jelinek + + PR target/70404 + * config/s390/s390.c (s390_expand_insv): Force src to REG + if not nonimmediate_operand. + +--- gcc/config/s390/s390.c.jj 2016-03-11 17:37:38.000000000 +0100 ++++ gcc/config/s390/s390.c 2016-03-31 10:32:26.424442770 +0200 +@@ -6083,6 +6083,8 @@ s390_expand_insv (rtx dest, rtx op1, rtx + src = force_reg (mode_s, src); + src = gen_lowpart (mode, src); + } ++ else if (!nonimmediate_operand (src, mode)) ++ src = force_reg (mode, src); + + op = gen_rtx_ZERO_EXTRACT (mode, dest, op1, op2), + op = gen_rtx_SET (op, src); diff --git a/sources b/sources index d5f7d65..8a112a9 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -23d982c1fd321106481c8addf21bd44c gcc-6.0.0-20160323.tar.bz2 +74e1140e5b98e78cc603b84cb6a964ad gcc-6.0.0-20160331.tar.bz2