diff --git a/.gitignore b/.gitignore index d7d8337..8e5eadc 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /gcc-6.1.1-20160721.tar.bz2 /gcc-6.1.1-20160810.tar.bz2 /gcc-6.1.1-20160817.tar.bz2 +/gcc-6.2.1-20160901.tar.bz2 diff --git a/gcc.spec b/gcc.spec index 5415004..cffb5ef 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,9 +1,9 @@ -%global DATE 20160817 -%global SVNREV 239541 -%global gcc_version 6.1.1 +%global DATE 20160901 +%global SVNREV 239935 +%global gcc_version 6.2.1 # 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 1 %global _unpackaged_files_terminate_build 0 %global _performance_build 1 # Hardening slows the compiler way too much. @@ -207,7 +207,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-pr77259.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -774,7 +773,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 .pr77259~ %if 0%{?_enable_debug_packages} mkdir dwz-wrapper @@ -3110,6 +3108,19 @@ fi %doc rpm.doc/changelogs/libcc1/ChangeLog* %changelog +* Thu Sep 1 2016 Jakub Jelinek 6.2.1-1 +- update from the 6 branch + - GCC 6.2 release + - PRs bootstrap/77279, debug/77363, fortran/69281, fortran/71014, + fortran/72744, fortran/77352, fortran/77358, fortran/77374, + libstdc++/77334, libstdc++/77395, lto/70955, middle-end/70895, + middle-end/71700, middle-end/77377, target/71338, target/71910, + target/72863, target/72867, target/77270, target/77281, target/77403, + tree-optimization/62171, tree-optimization/68542, + tree-optimization/71077, tree-optimization/72851, + tree-optimization/72866, tree-optimization/76490, + tree-optimization/76783 + * Wed Aug 17 2016 Jakub Jelinek 6.1.1-6 - update from the 6 branch - PRs c++/71972, c++/72868, c++/73456, c/67410, c/71512, c/72816, diff --git a/gcc6-pr77259.patch b/gcc6-pr77259.patch deleted file mode 100644 index bd0dbd4..0000000 --- a/gcc6-pr77259.patch +++ /dev/null @@ -1,109 +0,0 @@ -2016-08-17 Jakub Jelinek - - PR middle-end/77259 - * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): If - turning a call into __builtin_unreachable-like noreturn call, adjust - gimple_call_set_fntype. - * tree-cfgcleanup.c (fixup_noreturn_call): Remove lhs also if - gimple_call_fntype has void return type. - - * g++.dg/ipa/devirt-52.C: New test. - ---- gcc/tree-ssa-pre.c.jj 2016-08-16 13:22:49.095671219 +0200 -+++ gcc/tree-ssa-pre.c 2016-08-17 10:24:42.498730917 +0200 -@@ -4543,6 +4543,15 @@ eliminate_dom_walker::before_dom_childre - lang_hooks.decl_printable_name (fn, 2)); - } - gimple_call_set_fndecl (call_stmt, fn); -+ /* If changing the call to __builtin_unreachable -+ or similar noreturn function, adjust gimple_call_fntype -+ too. */ -+ if (gimple_call_noreturn_p (call_stmt) -+ && VOID_TYPE_P (TREE_TYPE (TREE_TYPE (fn))) -+ && TYPE_ARG_TYPES (TREE_TYPE (fn)) -+ && (TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (fn))) -+ == void_type_node)) -+ gimple_call_set_fntype (call_stmt, TREE_TYPE (fn)); - maybe_remove_unused_call_args (cfun, call_stmt); - gimple_set_modified (stmt, true); - } ---- gcc/tree-cfgcleanup.c.jj 2016-08-09 09:41:14.000000000 +0200 -+++ gcc/tree-cfgcleanup.c 2016-08-17 10:36:24.198791289 +0200 -@@ -602,10 +602,15 @@ fixup_noreturn_call (gimple *stmt) - /* If there is an LHS, remove it, but only if its type has fixed size. - The LHS will need to be recreated during RTL expansion and creating - temporaries of variable-sized types is not supported. Also don't -- do this with TREE_ADDRESSABLE types, as assign_temp will abort. */ -+ do this with TREE_ADDRESSABLE types, as assign_temp will abort. -+ Drop LHS regardless of TREE_ADDRESSABLE, if the function call -+ has been changed into a call that does not return a value, like -+ __builtin_unreachable or __cxa_pure_virtual. */ - tree lhs = gimple_call_lhs (stmt); -- if (lhs && TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (lhs))) == INTEGER_CST -- && !TREE_ADDRESSABLE (TREE_TYPE (lhs))) -+ if (lhs -+ && ((TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (lhs))) == INTEGER_CST -+ && !TREE_ADDRESSABLE (TREE_TYPE (lhs))) -+ || VOID_TYPE_P (TREE_TYPE (gimple_call_fntype (stmt))))) - { - gimple_call_set_lhs (stmt, NULL_TREE); - ---- gcc/testsuite/g++.dg/ipa/devirt-52.C.jj 2016-08-17 10:23:39.775528901 +0200 -+++ gcc/testsuite/g++.dg/ipa/devirt-52.C 2016-08-17 10:23:39.775528901 +0200 -@@ -0,0 +1,56 @@ -+// PR middle-end/77259 -+// { dg-do compile { target c++11 } } -+// { dg-options "-O2" } -+ -+template class A; -+template struct A -+{ -+ A (A &&); -+}; -+template -+A operator+(S *, const A &); -+template -+void operator+(const A &, S *); -+struct B -+{ -+ template B (V); -+}; -+template V foo (B) {} -+class C; -+template struct D -+{ -+ C *operator->() { return d; } -+ C *d; -+}; -+struct C -+{ -+ virtual A bar (); -+}; -+struct E -+{ -+ ~E (); -+ virtual A bar (const B &) const; -+}; -+template struct F : E -+{ -+}; -+template struct F> : E -+{ -+ A bar (const B &) const try -+ { -+ D a = baz (); -+ } -+ catch (int) -+ { -+ } -+ D baz () const -+ { -+ D b = foo>(0); -+ "" + b->bar () + ""; -+ } -+}; -+struct G : F> -+{ -+ G (int); -+}; -+void test () { G (0); } diff --git a/sources b/sources index 2f1135e..b6c41ff 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -353d904ccfe4dc9cfd8d9ddf67e4ad1d gcc-6.1.1-20160817.tar.bz2 +87ef2d4f344fa8d66006b4d7579b96bd gcc-6.2.1-20160901.tar.bz2