diff --git a/.gitignore b/.gitignore index b6d2915..ff49246 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1 @@ -/gcc-6.0.0-20160127.tar.bz2 -/gcc-6.0.0-20160128.tar.bz2 -/gcc-6.0.0-20160129.tar.bz2 -/gcc-6.0.0-20160201.tar.bz2 -/gcc-6.0.0-20160205.tar.bz2 -/gcc-6.0.0-20160212.tar.bz2 -/gcc-gnat-6.0.0-0.7.s390x.tar.bz2 +/gcc-6.0.0-20160219.tar.bz2 diff --git a/gcc.spec b/gcc.spec index e88562a..66b3c02 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,15 +1,15 @@ -%global DATE 20160212 -%global SVNREV 233372 +%global DATE 20160219 +%global SVNREV 233570 %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.11.1 +%global gcc_release 0.12 %global _unpackaged_files_terminate_build 0 %global _performance_build 1 # Hardening slows the compiler way too much. %undefine _hardened_build %global multilib_64_archs sparc64 ppc64 ppc64p7 s390x x86_64 -%ifarch %{ix86} x86_64 ia64 ppc ppc64 ppc64p7 alpha %{arm} aarch64 s390x +%ifarch %{ix86} x86_64 ia64 ppc ppc64 ppc64p7 alpha s390x %{arm} aarch64 %global build_ada 1 %else %global build_ada 0 @@ -96,7 +96,6 @@ Group: Development/Languages # svn export svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-6-branch@%{SVNREV} gcc-%{version}-%{DATE} # tar cf - gcc-%{version}-%{DATE} | bzip2 -9 > gcc-%{version}-%{DATE}.tar.bz2 Source0: gcc-%{version}-%{DATE}.tar.bz2 -Source1: gcc-gnat-6.0.0-0.7.s390x.tar.bz2 %global isl_version 0.14 URL: http://gcc.gnu.org BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -139,11 +138,9 @@ BuildRequires: glibc >= 2.3.90-35 BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so %endif %if %{build_ada} -%ifnarch s390x # Ada requires Ada to build BuildRequires: gcc-gnat >= 3.1, libgnat >= 3.1 %endif -%endif %ifarch ia64 BuildRequires: libunwind >= 0.98 %endif @@ -209,11 +206,6 @@ 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-pr65932-cse-revert.patch -Patch15: gcc6-pr69241.patch -Patch16: gcc6-pr69658.patch -Patch17: gcc6-pr10200-revert.patch -Patch18: gcc6-pr68672.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -780,11 +772,6 @@ 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 .pr65932-cse-revert~ -%patch15 -p0 -b .pr69241~ -%patch16 -p0 -b .pr69658~ -%patch17 -p0 -b .pr10200~ -%patch18 -p0 -b .pr68672~ %if 0%{?_enable_debug_packages} mkdir dwz-wrapper @@ -917,12 +904,6 @@ fi # This test causes fork failures, because it spawns way too many threads rm -f gcc/testsuite/go.test/test/chan/goroutines.go -%ifarch s390x -tar xjf %SOURCE1 -ln -sf /usr/lib/gcc/*/*/* usr/lib/gcc/*/*/ -ln -sf /usr/libexec/gcc/*/*/* usr/libexec/gcc/*/*/ -%endif - %build # Undo the broken autoconf change in recent Fedora versions @@ -934,12 +915,6 @@ cd obj-%{gcc_target_platform} CC=gcc CXX=g++ -%ifarch s390x - CC=`pwd`/../usr/bin/gcc - export PATH=`pwd`/../usr/bin:$PATH - export LD_LIBRARY_PATH=`pwd`/../usr/lib64 -%endif - OPT_FLAGS=`echo %{optflags}|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mfpmath=sse/-mfpmath=sse -msse2/g'` @@ -3089,6 +3064,26 @@ fi %doc rpm.doc/changelogs/libcc1/ChangeLog* %changelog +* Fri Feb 19 2016 Jakub Jelinek 6.0.0-0.12 +- update from the trunk + - PRs bootstrap/69816, c++/65985, c++/67767, c++/68585, c++/68679, + c++/68890, c++/69753, c++/69797, c++/69842, c++/69850, c++/69851, + c/64748, c/69835, driver/69265, driver/69453, driver/69779, + fortran/60526, fortran/68746, fortran/69742, libgfortran/69651, + libgfortran/69668, libstdc++/69794, lto/67709, lto/69655, + middle-end/69553, middle-end/69801, middle-end/69838, + middle-end/69854, other/69554, rtl-optimization/69609, + rtl-optimization/69648, rtl-optimization/69752, + rtl-optimization/69764, rtl-optimization/69771, sanitizer/69863, + target/48344, target/62254, target/64345, target/67260, target/67636, + target/68973, target/69161, target/69532, target/69610, target/69671, + target/69729, target/69820, testsuite/68580, testsuite/68886, + testsuite/69573, testsuite/69586, tree-optimization/69586, + tree-optimization/69714, tree-optimization/69776, + tree-optimization/69783, tree-optimization/69802, + tree-optimization/69820 +- enable Ada on s390x + * Fri Feb 12 2016 Jakub Jelinek 6.0.0-0.11 - update from the trunk - PRs c++/10200, c++/59627, c++/67835, c++/68726, c++/68926, c++/69098, diff --git a/gcc6-pr10200-revert.patch b/gcc6-pr10200-revert.patch deleted file mode 100644 index 29ff7ce..0000000 --- a/gcc6-pr10200-revert.patch +++ /dev/null @@ -1,104 +0,0 @@ -Revert due to PR69753: -2016-02-10 Jason Merrill - - PR c++/10200 - * parser.c (cp_parser_lookup_name): When looking for a template - after . or ->, only consider class templates. - (cp_parser_postfix_dot_deref_expression): Handle the current - instantiation. Remember a dependent object expression. - * typeck2.c (build_x_arrow): Handle the current instantiation. - ---- gcc/cp/typeck2.c (revision 233277) -+++ gcc/cp/typeck2.c (revision 233276) -@@ -1694,10 +1694,7 @@ build_x_arrow (location_t loc, tree expr - - if (processing_template_decl) - { -- if (type && TREE_CODE (type) == POINTER_TYPE -- && !dependent_scope_p (TREE_TYPE (type))) -- /* Pointer to current instantiation, don't treat as dependent. */; -- else if (type_dependent_expression_p (expr)) -+ if (type_dependent_expression_p (expr)) - return build_min_nt_loc (loc, ARROW_EXPR, expr); - expr = build_non_dependent_expr (expr); - } ---- gcc/cp/parser.c (revision 233277) -+++ gcc/cp/parser.c (revision 233276) -@@ -7184,16 +7184,8 @@ cp_parser_postfix_dot_deref_expression ( - if (token_type == CPP_DEREF) - postfix_expression = build_x_arrow (location, postfix_expression, - tf_warning_or_error); -- /* According to the standard, no expression should ever have -- reference type. Unfortunately, we do not currently match -- the standard in this respect in that our internal representation -- of an expression may have reference type even when the standard -- says it does not. Therefore, we have to manually obtain the -- underlying type here. */ -- scope = non_reference (TREE_TYPE (postfix_expression)); -- /* Check to see whether or not the expression is type-dependent and -- not the current instantiation. */ -- dependent_p = !scope || dependent_scope_p (scope); -+ /* Check to see whether or not the expression is type-dependent. */ -+ dependent_p = type_dependent_expression_p (postfix_expression); - /* The identifier following the `->' or `.' is not qualified. */ - parser->scope = NULL_TREE; - parser->qualifying_scope = NULL_TREE; -@@ -7202,8 +7194,16 @@ cp_parser_postfix_dot_deref_expression ( - - /* Enter the scope corresponding to the type of the object - given by the POSTFIX_EXPRESSION. */ -- if (!dependent_p) -+ if (!dependent_p && TREE_TYPE (postfix_expression) != NULL_TREE) - { -+ scope = TREE_TYPE (postfix_expression); -+ /* According to the standard, no expression should ever have -+ reference type. Unfortunately, we do not currently match -+ the standard in this respect in that our internal representation -+ of an expression may have reference type even when the standard -+ says it does not. Therefore, we have to manually obtain the -+ underlying type here. */ -+ scope = non_reference (scope); - /* The type of the POSTFIX_EXPRESSION must be complete. */ - if (scope == unknown_type_node) - { -@@ -7215,10 +7215,7 @@ cp_parser_postfix_dot_deref_expression ( - required to be of complete type for purposes of class member - access (5.2.5) outside the member function body. */ - else if (postfix_expression != current_class_ref -- && !(processing_template_decl -- && current_class_type -- && (same_type_ignoring_top_level_qualifiers_p -- (scope, current_class_type)))) -+ && !(processing_template_decl && scope == current_class_type)) - scope = complete_type_or_else (scope, NULL_TREE); - /* Let the name lookup machinery know that we are processing a - class member access expression. */ -@@ -7234,10 +7231,6 @@ cp_parser_postfix_dot_deref_expression ( - if (scope == error_mark_node) - postfix_expression = error_mark_node; - } -- else -- /* Tell cp_parser_lookup_name that there was an object, even though it's -- type-dependent. */ -- parser->context->object_type = unknown_type_node; - - /* Assume this expression is not a pseudo-destructor access. */ - pseudo_destructor_p = false; -@@ -24727,15 +24720,10 @@ cp_parser_lookup_name (cp_parser *parser - decl = NULL_TREE; - - if (!decl) -- /* Look it up in the enclosing context. DR 141: When looking for a -- template-name after -> or ., only consider class templates. */ -- decl = lookup_name_real (name, tag_type != none_type || is_template, -+ /* Look it up in the enclosing context. */ -+ decl = lookup_name_real (name, tag_type != none_type, - /*nonclass=*/0, - /*block_p=*/true, is_namespace, 0); -- if (object_type == unknown_type_node) -- /* The object is type-dependent, so we can't look anything up; we used -- this to get the DR 141 behavior. */ -- object_type = NULL_TREE; - parser->object_scope = object_type; - parser->qualifying_scope = NULL_TREE; - } diff --git a/gcc6-pr65932-cse-revert.patch b/gcc6-pr65932-cse-revert.patch deleted file mode 100644 index 12be488..0000000 --- a/gcc6-pr65932-cse-revert.patch +++ /dev/null @@ -1,19 +0,0 @@ -Revert: -2016-02-04 Kyrylo Tkachov - - PR target/65932 - PR target/67714 - * cse.c (cse_insn): Pass NULL to fold_rtx when initially - folding the source of a SET. - ---- gcc/cse.c (revision 233133) -+++ gcc/cse.c (revision 233132) -@@ -4636,7 +4636,7 @@ cse_insn (rtx_insn *insn) - - /* Simplify and foldable subexpressions in SRC. Then get the fully- - simplified result, which may not necessarily be valid. */ -- src_folded = fold_rtx (src, NULL); -+ src_folded = fold_rtx (src, insn); - - #if 0 - /* ??? This caused bad code to be generated for the m68k port with -O2. diff --git a/gcc6-pr68672.patch b/gcc6-pr68672.patch deleted file mode 100644 index ed7c8bf..0000000 --- a/gcc6-pr68672.patch +++ /dev/null @@ -1,299 +0,0 @@ -2016-02-11 Jakub Jelinek - - PR ipa/68672 - * ipa-split.c (split_function): Don't compute/use main_part_return_p. - Compute retval and retbnd early in all cases if split_part_return_p - and return_bb is not EXIT. Remove all clobber stmts and reset - all debug stmts that refer to SSA_NAMEs defined in split part, - except if it is retval, in that case replace the old retval with the - lhs of the call to the split part. - - * g++.dg/ipa/pr68672-1.C: New test. - * g++.dg/ipa/pr68672-2.C: New test. - * g++.dg/ipa/pr68672-3.C: New test. - ---- gcc/ipa-split.c.jj 2016-02-11 10:50:52.888220581 +0100 -+++ gcc/ipa-split.c 2016-02-11 12:46:15.975777652 +0100 -@@ -1244,28 +1244,13 @@ split_function (basic_block return_bb, s - args_to_pass.safe_push (arg); - } - -- /* See if the split function or the main part will return. */ -- bool main_part_return_p = false; -+ /* See if the split function will return. */ - bool split_part_return_p = false; - FOR_EACH_EDGE (e, ei, return_bb->preds) - { - if (bitmap_bit_p (split_point->split_bbs, e->src->index)) - split_part_return_p = true; -- else -- main_part_return_p = true; - } -- /* The main part also returns if we split on a fallthru edge -- and the split part returns. */ -- if (split_part_return_p) -- FOR_EACH_EDGE (e, ei, split_point->entry_bb->preds) -- { -- if (! bitmap_bit_p (split_point->split_bbs, e->src->index) -- && single_succ_p (e->src)) -- { -- main_part_return_p = true; -- break; -- } -- } - - /* Add return block to what will become the split function. - We do not return; no return block is needed. */ -@@ -1279,8 +1264,8 @@ split_function (basic_block return_bb, s - FIXME: Once we are able to change return type, we should change function - to return void instead of just outputting function with undefined return - value. For structures this affects quality of codegen. */ -- else if (!split_point->split_part_set_retval -- && (retval = find_retval (return_bb))) -+ else if ((retval = find_retval (return_bb)) -+ && !split_point->split_part_set_retval) - { - bool redirected = true; - basic_block new_return_bb = create_basic_block (NULL, 0, return_bb); -@@ -1308,12 +1293,10 @@ split_function (basic_block return_bb, s - } - /* When we pass around the value, use existing return block. */ - else -- bitmap_set_bit (split_point->split_bbs, return_bb->index); -- -- /* If the main part doesn't return pretend the return block wasn't -- found for all of the following. */ -- if (! main_part_return_p) -- return_bb = EXIT_BLOCK_PTR_FOR_FN (cfun); -+ { -+ bitmap_set_bit (split_point->split_bbs, return_bb->index); -+ retbnd = find_retbnd (return_bb); -+ } - - /* If RETURN_BB has virtual operand PHIs, they must be removed and the - virtual operand marked for renaming as we change the CFG in a way that -@@ -1382,6 +1365,44 @@ split_function (basic_block return_bb, s - DECL_FUNCTION_CODE (node->decl) = (enum built_in_function) 0; - } - -+ /* If return_bb contains any clobbers that refer to SSA_NAMEs -+ set in the split part, remove them. Also reset debug stmts that -+ refer to SSA_NAMEs set in the split part. */ -+ if (return_bb != EXIT_BLOCK_PTR_FOR_FN (cfun)) -+ { -+ gimple_stmt_iterator gsi = gsi_start_bb (return_bb); -+ while (!gsi_end_p (gsi)) -+ { -+ tree op; -+ ssa_op_iter iter; -+ gimple *stmt = gsi_stmt (gsi); -+ bool remove = false; -+ if (gimple_clobber_p (stmt) || is_gimple_debug (stmt)) -+ FOR_EACH_SSA_TREE_OPERAND (op, stmt, iter, SSA_OP_USE) -+ { -+ basic_block bb = gimple_bb (SSA_NAME_DEF_STMT (op)); -+ if (op != retval -+ && bb -+ && bb != return_bb -+ && bitmap_bit_p (split_point->split_bbs, bb->index)) -+ { -+ if (is_gimple_debug (stmt)) -+ { -+ gimple_debug_bind_reset_value (stmt); -+ update_stmt (stmt); -+ } -+ else -+ remove = true; -+ break; -+ } -+ } -+ if (remove) -+ gsi_remove (&gsi, true); -+ else -+ gsi_next (&gsi); -+ } -+ } -+ - /* If the original function is instrumented then it's - part is also instrumented. */ - if (with_bounds) -@@ -1499,9 +1520,7 @@ split_function (basic_block return_bb, s - return value into and put call just before it. */ - if (return_bb != EXIT_BLOCK_PTR_FOR_FN (cfun)) - { -- real_retval = retval = find_retval (return_bb); -- retbnd = find_retbnd (return_bb); -- -+ real_retval = retval; - if (real_retval && split_point->split_part_set_retval) - { - gphi_iterator psi; -@@ -1545,6 +1564,28 @@ split_function (basic_block return_bb, s - break; - } - update_stmt (gsi_stmt (bsi)); -+ /* Also adjust clobbers and debug stmts in return_bb. */ -+ for (bsi = gsi_start_bb (return_bb); !gsi_end_p (bsi); -+ gsi_next (&bsi)) -+ { -+ gimple *stmt = gsi_stmt (bsi); -+ if (gimple_clobber_p (stmt) -+ || is_gimple_debug (stmt)) -+ { -+ ssa_op_iter iter; -+ use_operand_p use_p; -+ bool update = false; -+ FOR_EACH_SSA_USE_OPERAND (use_p, stmt, iter, -+ SSA_OP_USE) -+ if (USE_FROM_PTR (use_p) == real_retval) -+ { -+ SET_USE (use_p, retval); -+ update = true; -+ } -+ if (update) -+ update_stmt (stmt); -+ } -+ } - } - - /* Replace retbnd with new one. */ ---- gcc/testsuite/g++.dg/ipa/pr68672-1.C.jj 2016-02-11 12:31:27.344497187 +0100 -+++ gcc/testsuite/g++.dg/ipa/pr68672-1.C 2016-02-11 12:31:01.000000000 +0100 -@@ -0,0 +1,20 @@ -+// PR ipa/68672 -+// { dg-do compile } -+// { dg-options "-O -finline-small-functions -fpartial-inlining --param=partial-inlining-entry-probability=100" } -+ -+void f2 (void *); -+void *a; -+struct C { virtual void m1 (); }; -+struct D { C *m2 () { if (a) __builtin_abort (); } }; -+D f1 (); -+struct E { int e; ~E () { if (e) f2 (&e); } }; -+E *b; -+struct I { virtual void m3 (); }; -+ -+void -+I::m3 () -+{ -+ if (a) -+ f1 ().m2 ()->m1 (); -+ b->~E (); -+} ---- gcc/testsuite/g++.dg/ipa/pr68672-2.C.jj 2016-02-11 12:33:50.744438948 +0100 -+++ gcc/testsuite/g++.dg/ipa/pr68672-2.C 2016-02-11 12:32:50.000000000 +0100 -@@ -0,0 +1,54 @@ -+// PR ipa/68672 -+// { dg-do compile } -+// { dg-options "-O3 --param=partial-inlining-entry-probability=100 -g" } -+ -+struct S { ~S () {} }; -+S *a; -+int *b; -+void bar (); -+void baz (); -+void fn (int *); -+ -+static int -+foo () -+{ -+ S *c = a; -+ if (c) -+ { -+ bar (); -+ if (a) -+ __builtin_abort (); -+ baz (); -+ } -+ int p = *b; -+ if (p) -+ { -+ fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); -+ fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); -+ fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); -+ fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); -+ } -+ c->~S (); -+ int q = 2 * p; -+ int r = 3 * q; -+ S *d = c; -+ return p; -+} -+ -+void -+use1 () -+{ -+ foo (); -+} -+ -+void -+use2 () -+{ -+ foo (); -+} -+ -+void -+use3 () -+{ -+ foo (); -+} ---- gcc/testsuite/g++.dg/ipa/pr68672-3.C.jj 2016-02-11 12:34:02.374272024 +0100 -+++ gcc/testsuite/g++.dg/ipa/pr68672-3.C 2016-02-11 12:34:22.337985482 +0100 -@@ -0,0 +1,57 @@ -+// PR ipa/68672 -+// { dg-do compile } -+// { dg-options "-O3 --param=partial-inlining-entry-probability=100 -g" } -+ -+struct S { ~S () {} }; -+S *a, *e; -+int *b; -+void bar (); -+void baz (); -+void fn (int *); -+void fn2 (S *); -+ -+static int -+foo () -+{ -+ S *c = a; -+ if (c) -+ { -+ bar (); -+ if (a) -+ __builtin_abort (); -+ baz (); -+ } -+ int p = *b; -+ S *f = e; -+ if (p) -+ { -+ fn2 (f); -+ fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); -+ fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); -+ fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); -+ fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); -+ } -+ f->~S (); -+ int q = 2 * p; -+ int r = 3 * q; -+ S *d = c; -+ return p; -+} -+ -+void -+use1 () -+{ -+ foo (); -+} -+ -+void -+use2 () -+{ -+ foo (); -+} -+ -+void -+use3 () -+{ -+ foo (); -+} diff --git a/gcc6-pr69241.patch b/gcc6-pr69241.patch deleted file mode 100644 index 39f6f1b..0000000 --- a/gcc6-pr69241.patch +++ /dev/null @@ -1,88 +0,0 @@ -2016-02-10 Jakub Jelinek - - PR ipa/69241 - * ipa-split.c (split_function): If split part returns TREE_ADDRESSABLE - type by reference, force lhs on the call. - - * g++.dg/ipa/pr69241-4.C: New test. - ---- gcc/ipa-split.c.jj 2016-02-11 12:46:15.975777652 +0100 -+++ gcc/ipa-split.c 2016-02-11 13:06:57.715241871 +0100 -@@ -629,7 +629,18 @@ consider_split (struct split_point *curr - 4) For non-SSA we need to look where the var is computed. */ - retval = find_retval (return_bb); - if (!retval) -- current->split_part_set_retval = true; -+ { -+ /* If there is a return_bb with no return value in function returning -+ value by reference, also make the split part return void, otherwise -+ we expansion would try to create a non-POD temporary, which is -+ invalid. */ -+ if (return_bb != EXIT_BLOCK_PTR_FOR_FN (cfun) -+ && DECL_RESULT (current_function_decl) -+ && DECL_BY_REFERENCE (DECL_RESULT (current_function_decl))) -+ current->split_part_set_retval = false; -+ else -+ current->split_part_set_retval = true; -+ } - else if (is_gimple_min_invariant (retval)) - current->split_part_set_retval = false; - /* Special case is value returned by reference we record as if it was non-ssa ---- gcc/testsuite/g++.dg/ipa/pr69241-4.C.jj 2016-02-11 13:00:04.160075417 +0100 -+++ gcc/testsuite/g++.dg/ipa/pr69241-4.C 2016-02-11 13:00:04.160075417 +0100 -@@ -0,0 +1,55 @@ -+// PR ipa/69241 -+// { dg-do compile { target c++11 } } -+// { dg-options "-O2 -Wno-return-type" } -+ -+template class A; -+struct B { -+ using pointer = int *; -+}; -+template > class basic_string { -+ long _M_string_length; -+ enum { _S_local_capacity = 15 } _M_local_buf[_S_local_capacity]; -+ B::pointer _M_local_data; -+ -+public: -+ ~basic_string(); -+}; -+template -+int operator<<(_Traits, basic_string<_CharT, _Alloc>); -+class C { -+ basic_string> _M_string; -+}; -+class D { -+ C _M_stringbuf; -+}; -+class F { -+ int stream; -+ D stream_; -+}; -+class G { -+public: -+ void operator&(int); -+}; -+class H { -+public: -+ H(unsigned); -+ H(H &&); -+ bool m_fn1(); -+}; -+class I { -+ void m_fn2(const int &&); -+ static H m_fn3(const int &); -+}; -+template void Bind(Functor); -+class J { -+public: -+ static basic_string m_fn4(); -+}; -+int a; -+void I::m_fn2(const int &&) { Bind(m_fn3); } -+H I::m_fn3(const int &) { -+ !false ? (void)0 : G() & F() << J::m_fn4(); -+ H b(a); -+ if (b.m_fn1()) -+ F(); -+} diff --git a/gcc6-pr69658.patch b/gcc6-pr69658.patch deleted file mode 100644 index 781e873..0000000 --- a/gcc6-pr69658.patch +++ /dev/null @@ -1,41 +0,0 @@ -2016-02-04 Jakub Jelinek - - PR c++/69658 - * init.c (expand_default_init): Only call reshape_init - in the direct-initialization from an initializer list case. - - * g++.dg/init/pr69658.C: New test. - ---- gcc/cp/init.c.jj 2016-01-29 12:12:46.000000000 +0100 -+++ gcc/cp/init.c 2016-02-04 18:53:26.865318337 +0100 -@@ -1636,16 +1636,17 @@ expand_default_init (tree binfo, tree tr - gcc_checking_assert ((flags & LOOKUP_ONLYCONVERTING) == 0 - && TREE_CHAIN (init) == NULL_TREE); - init = TREE_VALUE (init); -+ /* Only call reshape_init if it has not been called earlier -+ by the callers. */ -+ if (BRACE_ENCLOSED_INITIALIZER_P (init) && CP_AGGREGATE_TYPE_P (type)) -+ init = reshape_init (type, init, complain); - } - - if (init && BRACE_ENCLOSED_INITIALIZER_P (init) - && CP_AGGREGATE_TYPE_P (type)) - /* A brace-enclosed initializer for an aggregate. In C++0x this can - happen for direct-initialization, too. */ -- { -- init = reshape_init (type, init, complain); -- init = digest_init (type, init, complain); -- } -+ init = digest_init (type, init, complain); - - /* A CONSTRUCTOR of the target's type is a previously digested - initializer, whether that happened just above or in ---- gcc/testsuite/g++.dg/init/pr69658.C.jj 2016-02-04 18:55:46.862390961 +0100 -+++ gcc/testsuite/g++.dg/init/pr69658.C 2016-02-04 18:54:58.000000000 +0100 -@@ -0,0 +1,6 @@ -+// PR c++/69658 -+// { dg-do compile } -+ -+struct S { S (int); }; -+struct T { char n[6]; S s; }; -+T t[1] = { { "foo", 1 } }; // { dg-bogus "C99 designator" } diff --git a/sources b/sources index e028d43..949b9c6 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -9add2f51dd3d4c93c13801fadfd8fb6e gcc-6.0.0-20160212.tar.bz2 -b97b050ef8c394c48409713d0e5471b4 gcc-gnat-6.0.0-0.7.s390x.tar.bz2 +930f315c148900b693cd38286aa086a4 gcc-6.0.0-20160219.tar.bz2