6.0.0-0.19
This commit is contained in:
parent
34ff97e734
commit
47e7711955
1
.gitignore
vendored
1
.gitignore
vendored
@ -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
|
||||
|
26
gcc.spec
26
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 <jakub@redhat.com> 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 <jakub@redhat.com> 6.0.0-0.18
|
||||
- update from the trunk
|
||||
- PRs bootstrap/69513, c++/53792, c++/58281, c++/70095, c++/70096,
|
||||
|
@ -1,154 +0,0 @@
|
||||
2016-03-10 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
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<constructor_elt, va_gc> **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, "");
|
17
gcc6-pr70404.patch
Normal file
17
gcc6-pr70404.patch
Normal file
@ -0,0 +1,17 @@
|
||||
2016-03-31 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
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);
|
Loading…
Reference in New Issue
Block a user