From 1c8b31bfd336b7e46713283f8c8aa55462a6052f Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 19 Feb 2017 13:23:23 +0100 Subject: [PATCH] 7.0.1-0.9 --- .gitignore | 1 + gcc.spec | 32 +++-- gcc7-isl-dl.patch | 38 ++---- gcc7-pr79232.patch | 318 --------------------------------------------- gcc7-pr79288.patch | 72 ---------- gcc7-pr79341.patch | 26 ---- gcc7-pr79388.patch | 76 ----------- sources | 2 +- 8 files changed, 32 insertions(+), 533 deletions(-) delete mode 100644 gcc7-pr79232.patch delete mode 100644 gcc7-pr79288.patch delete mode 100644 gcc7-pr79341.patch delete mode 100644 gcc7-pr79388.patch diff --git a/.gitignore b/.gitignore index d0b1268..1220370 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ /gcc-7.0.1-20170204.tar.bz2 /gcc-7.0.1-20170209.tar.bz2 /gcc-7.0.1-20170211.tar.bz2 +/gcc-7.0.1-20170219.tar.bz2 diff --git a/gcc.spec b/gcc.spec index 09e0712..7d48035 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20170211 -%global SVNREV 245356 +%global DATE 20170219 +%global SVNREV 245573 %global gcc_version 7.0.1 %global gcc_major 7 # 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.8 +%global gcc_release 0.9 %global nvptx_tools_gitrev c28050f60193b3b95a18866a96f03334e874e78f %global nvptx_newlib_gitrev aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24 %global _unpackaged_files_terminate_build 0 @@ -231,10 +231,6 @@ Patch7: gcc7-libstdc++-docs.patch Patch8: gcc7-no-add-needed.patch Patch9: gcc7-aarch64-async-unw-tables.patch Patch10: gcc7-foffload-default.patch -Patch11: gcc7-pr79232.patch -Patch12: gcc7-pr79288.patch -Patch13: gcc7-pr79341.patch -Patch14: gcc7-pr79388.patch Patch1000: nvptx-tools-no-ptxas.patch Patch1001: nvptx-tools-build.patch @@ -822,10 +818,6 @@ package or when debugging this package. %patch8 -p0 -b .no-add-needed~ %patch9 -p0 -b .aarch64-async-unw-tables~ %patch10 -p0 -b .foffload-default~ -%patch11 -p0 -b .pr79232~ -%patch12 -p0 -b .pr79288~ -%patch13 -p0 -b .pr79341~ -%patch14 -p0 -b .pr79388~ cd nvptx-tools-%{nvptx_tools_gitrev} %patch1000 -p1 -b .nvptx-tools-no-ptxas~ @@ -3241,6 +3233,24 @@ fi %endif %changelog +* Sun Feb 19 2017 Jakub Jelinek 7.0.1-0.9 +- update from the trunk + - PRs bootstrap/79567, c++/77659, c++/77790, c++/78572, c++/78690, + c++/79050, c++/79296, c++/79301, c++/79363, c++/79420, c++/79461, + c++/79463, c++/79464, c++/79502, c++/79508, c++/79512, c++/79533, + c++/79549, c++/79556, c/79471, c/79478, c/79515, fortran/65542, + ipa/79224, libstdc++/78723, libstdc++/79348, libstdc++/79467, + libstdc++/79486, libstdc++/79513, middle-end/61225, middle-end/79432, + middle-end/79448, middle-end/79496, middle-end/79505, + middle-end/79521, middle-end/79536, middle-end/79576, + rtl-optimization/78127, rtl-optimization/79286, + rtl-optimization/79541, rtl-optimization/79574, + rtl-optimization/79577, sanitizer/79562, target/79261, target/79282, + target/79404, target/79421, target/79449, target/79462, target/79481, + target/79487, target/79495, target/79498, target/79559, target/79569, + tree-optimization/79095, tree-optimization/79347, + tree-optimization/79529, tree-optimization/79552, tree-ssa/56727 + * Sat Feb 11 2017 Jakub Jelinek 7.0.1-0.8 - update from the trunk - PRs c++/71285, c++/78897, c++/78908, c++/79143, c++/79184, c++/79316, diff --git a/gcc7-isl-dl.patch b/gcc7-isl-dl.patch index 07deb56..8c39d70 100644 --- a/gcc7-isl-dl.patch +++ b/gcc7-isl-dl.patch @@ -1,6 +1,6 @@ --- gcc/Makefile.in.jj 2015-06-06 10:00:25.000000000 +0200 +++ gcc/Makefile.in 2015-11-04 14:56:02.643536437 +0100 -@@ -1013,7 +1013,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY) +@@ -1046,7 +1046,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY) # and the system's installed libraries. LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \ $(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS) @@ -9,7 +9,7 @@ $(ZLIB) # Any system libraries needed just for GNAT. SYSLIBS = @GNAT_LIBEXC@ -@@ -2058,6 +2058,15 @@ $(out_object_file): $(out_file) +@@ -2196,6 +2196,15 @@ $(out_object_file): $(out_file) $(common_out_object_file): $(common_out_file) $(COMPILE) $< $(POSTCOMPILE) @@ -27,25 +27,11 @@ # and compile them. --- gcc/graphite.h.jj 2016-01-27 12:44:06.000000000 +0100 +++ gcc/graphite.h 2016-01-27 13:26:38.309876856 +0100 -@@ -36,6 +36,7 @@ along with GCC; see the file COPYING3. - #include +@@ -37,6 +37,579 @@ along with GCC; see the file COPYING3. #include #include + #include +#include - - #ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS - /* isl 0.15 or later. */ -@@ -47,6 +48,591 @@ along with GCC; see the file COPYING3. - # define isl_stat_ok 0 - #endif - -+#ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS -+#define DYNSYM_SCHEDULE_FUSE DYNSYM (isl_options_set_schedule_serialize_sccs) -+#define DYNSYM_SET_YAML_STYLE DYNSYM (isl_printer_set_yaml_style); -+#else -+#define DYNSYM_SCHEDULE_FUSE DYNSYM (isl_options_set_schedule_fuse) -+#define DYNSYM_SET_YAML_STYLE -+#endif + +#define DYNSYMS \ + DYNSYM (isl_aff_add_coefficient_si); \ @@ -109,8 +95,8 @@ + DYNSYM (isl_map_set_tuple_id); \ + DYNSYM (isl_map_universe); \ + DYNSYM (isl_options_set_on_error); \ -+ DYNSYM_SCHEDULE_FUSE; \ -+ DYNSYM_SET_YAML_STYLE \ ++ DYNSYM (isl_options_set_schedule_serialize_sccs); \ ++ DYNSYM (isl_printer_set_yaml_style); \ + DYNSYM (isl_options_set_schedule_max_constant_term); \ + DYNSYM (isl_options_set_schedule_maximize_band_depth); \ + DYNSYM (isl_printer_free); \ @@ -399,12 +385,8 @@ +#define isl_map_set_tuple_id (*isl_pointers__.p_isl_map_set_tuple_id) +#define isl_map_universe (*isl_pointers__.p_isl_map_universe) +#define isl_options_set_on_error (*isl_pointers__.p_isl_options_set_on_error) -+#ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS +#define isl_options_set_schedule_serialize_sccs (*isl_pointers__.p_isl_options_set_schedule_serialize_sccs) +#define isl_printer_set_yaml_style (*isl_pointers__.p_isl_printer_set_yaml_style) -+#else -+#define isl_options_set_schedule_fuse (*isl_pointers__.p_isl_options_set_schedule_fuse) -+#endif +#define isl_options_set_schedule_max_constant_term (*isl_pointers__.p_isl_options_set_schedule_max_constant_term) +#define isl_options_set_schedule_maximize_band_depth (*isl_pointers__.p_isl_options_set_schedule_maximize_band_depth) +#define isl_printer_free (*isl_pointers__.p_isl_printer_free) @@ -574,7 +556,6 @@ +#define isl_printer_print_schedule (*isl_pointers__.p_isl_printer_print_schedule) +#define isl_set_set_dim_id (*isl_pointers__.p_isl_set_set_dim_id) +#define isl_union_map_coalesce (*isl_pointers__.p_isl_union_map_coalesce) -+ +#define isl_multi_val_set_val (*isl_pointers__.p_isl_multi_val_set_val) +#define isl_multi_val_zero (*isl_pointers__.p_isl_multi_val_zero) +#define isl_options_set_schedule_max_coefficient (*isl_pointers__.p_isl_options_set_schedule_max_coefficient) @@ -623,13 +604,12 @@ +#define isl_ast_node_mark_get_node (*isl_pointers__.p_isl_ast_node_mark_get_node) +#define isl_schedule_node_band_member_get_ast_loop_type (*isl_pointers__.p_isl_schedule_node_band_member_get_ast_loop_type) +#define isl_schedule_node_band_member_set_ast_loop_type (*isl_pointers__.p_isl_schedule_node_band_member_set_ast_loop_type) -+ + typedef struct poly_dr *poly_dr_p; - typedef struct poly_bb *poly_bb_p; --- gcc/graphite.c.jj 2015-11-04 14:15:32.000000000 +0100 +++ gcc/graphite.c 2015-11-04 14:56:02.645536409 +0100 -@@ -54,6 +54,34 @@ along with GCC; see the file COPYING3. +@@ -55,6 +55,34 @@ along with GCC; see the file COPYING3. #include "tree-vectorizer.h" #include "graphite.h" @@ -664,7 +644,7 @@ /* Print global statistics to FILE. */ static void -@@ -298,6 +326,15 @@ graphite_transform_loops (void) +@@ -299,6 +327,15 @@ graphite_transform_loops (void) if (parallelized_function_p (cfun->decl)) return; diff --git a/gcc7-pr79232.patch b/gcc7-pr79232.patch deleted file mode 100644 index 84f25a6..0000000 --- a/gcc7-pr79232.patch +++ /dev/null @@ -1,318 +0,0 @@ -2017-01-30 Jakub Jelinek - - PR c++/79232 - * typeck.c (cp_build_modify_expr): Handle properly COMPOUND_EXPRs - on lhs that have {PRE{DEC,INC}REMENT,MODIFY,MIN,MAX,COND}_EXPR - in the rightmost operand. - - * g++.dg/cpp1z/eval-order4.C: New test. - * g++.dg/other/pr79232.C: New test. - ---- gcc/cp/typeck.c.jj 2017-01-30 09:31:43.076595640 +0100 -+++ gcc/cp/typeck.c 2017-01-30 15:56:33.601002577 +0100 -@@ -7568,16 +7568,26 @@ tree - cp_build_modify_expr (location_t loc, tree lhs, enum tree_code modifycode, - tree rhs, tsubst_flags_t complain) - { -- tree result; -+ tree result = NULL_TREE; - tree newrhs = rhs; - tree lhstype = TREE_TYPE (lhs); -+ tree olhs = lhs; - tree olhstype = lhstype; - bool plain_assign = (modifycode == NOP_EXPR); -+ bool compound_side_effects_p = false; -+ tree preeval = NULL_TREE; - - /* Avoid duplicate error messages from operands that had errors. */ - if (error_operand_p (lhs) || error_operand_p (rhs)) - return error_mark_node; - -+ while (TREE_CODE (lhs) == COMPOUND_EXPR) -+ { -+ if (TREE_SIDE_EFFECTS (TREE_OPERAND (lhs, 0))) -+ compound_side_effects_p = true; -+ lhs = TREE_OPERAND (lhs, 1); -+ } -+ - /* Handle control structure constructs used as "lvalues". Note that we - leave COMPOUND_EXPR on the LHS because it is sequenced after the RHS. */ - switch (TREE_CODE (lhs)) -@@ -7585,20 +7595,57 @@ cp_build_modify_expr (location_t loc, tr - /* Handle --foo = 5; as these are valid constructs in C++. */ - case PREDECREMENT_EXPR: - case PREINCREMENT_EXPR: -+ if (compound_side_effects_p) -+ { -+ if (VOID_TYPE_P (TREE_TYPE (rhs))) -+ { -+ if (complain & tf_error) -+ error ("void value not ignored as it ought to be"); -+ return error_mark_node; -+ } -+ newrhs = rhs = stabilize_expr (rhs, &preeval); -+ } - if (TREE_SIDE_EFFECTS (TREE_OPERAND (lhs, 0))) - lhs = build2 (TREE_CODE (lhs), TREE_TYPE (lhs), - cp_stabilize_reference (TREE_OPERAND (lhs, 0)), - TREE_OPERAND (lhs, 1)); - lhs = build2 (COMPOUND_EXPR, lhstype, lhs, TREE_OPERAND (lhs, 0)); -+ maybe_add_compound: -+ /* If we had (bar, --foo) = 5; or (bar, (baz, --foo)) = 5; -+ and looked through the COMPOUND_EXPRs, readd them now around -+ the resulting lhs. */ -+ if (TREE_CODE (olhs) == COMPOUND_EXPR) -+ { -+ lhs = build2 (COMPOUND_EXPR, lhstype, TREE_OPERAND (olhs, 0), lhs); -+ tree *ptr = &TREE_OPERAND (lhs, 1); -+ for (olhs = TREE_OPERAND (olhs, 1); -+ TREE_CODE (olhs) == COMPOUND_EXPR; -+ olhs = TREE_OPERAND (olhs, 1)) -+ { -+ *ptr = build2 (COMPOUND_EXPR, lhstype, -+ TREE_OPERAND (olhs, 0), *ptr); -+ ptr = &TREE_OPERAND (*ptr, 1); -+ } -+ } - break; - - case MODIFY_EXPR: -+ if (compound_side_effects_p) -+ { -+ if (VOID_TYPE_P (TREE_TYPE (rhs))) -+ { -+ if (complain & tf_error) -+ error ("void value not ignored as it ought to be"); -+ return error_mark_node; -+ } -+ newrhs = rhs = stabilize_expr (rhs, &preeval); -+ } - if (TREE_SIDE_EFFECTS (TREE_OPERAND (lhs, 0))) - lhs = build2 (TREE_CODE (lhs), TREE_TYPE (lhs), - cp_stabilize_reference (TREE_OPERAND (lhs, 0)), - TREE_OPERAND (lhs, 1)); - lhs = build2 (COMPOUND_EXPR, lhstype, lhs, TREE_OPERAND (lhs, 0)); -- break; -+ goto maybe_add_compound; - - case MIN_EXPR: - case MAX_EXPR: -@@ -7626,7 +7673,6 @@ cp_build_modify_expr (location_t loc, tr - except that the RHS goes through a save-expr - so the code to compute it is only emitted once. */ - tree cond; -- tree preeval = NULL_TREE; - - if (VOID_TYPE_P (TREE_TYPE (rhs))) - { -@@ -7652,14 +7698,31 @@ cp_build_modify_expr (location_t loc, tr - - if (cond == error_mark_node) - return cond; -+ /* If we had (e, (a ? b : c)) = d; or (e, (f, (a ? b : c))) = d; -+ and looked through the COMPOUND_EXPRs, readd them now around -+ the resulting cond before adding the preevaluated rhs. */ -+ if (TREE_CODE (olhs) == COMPOUND_EXPR) -+ { -+ cond = build2 (COMPOUND_EXPR, TREE_TYPE (cond), -+ TREE_OPERAND (olhs, 0), cond); -+ tree *ptr = &TREE_OPERAND (cond, 1); -+ for (olhs = TREE_OPERAND (olhs, 1); -+ TREE_CODE (olhs) == COMPOUND_EXPR; -+ olhs = TREE_OPERAND (olhs, 1)) -+ { -+ *ptr = build2 (COMPOUND_EXPR, TREE_TYPE (cond), -+ TREE_OPERAND (olhs, 0), *ptr); -+ ptr = &TREE_OPERAND (*ptr, 1); -+ } -+ } - /* Make sure the code to compute the rhs comes out - before the split. */ -- if (preeval) -- cond = build2 (COMPOUND_EXPR, TREE_TYPE (lhs), preeval, cond); -- return cond; -+ result = cond; -+ goto ret; - } - - default: -+ lhs = olhs; - break; - } - -@@ -7675,7 +7738,7 @@ cp_build_modify_expr (location_t loc, tr - rhs = convert (lhstype, rhs); - result = build2 (INIT_EXPR, lhstype, lhs, rhs); - TREE_SIDE_EFFECTS (result) = 1; -- return result; -+ goto ret; - } - else if (! MAYBE_CLASS_TYPE_P (lhstype)) - /* Do the default thing. */; -@@ -7688,7 +7751,7 @@ cp_build_modify_expr (location_t loc, tr - release_tree_vector (rhs_vec); - if (result == NULL_TREE) - return error_mark_node; -- return result; -+ goto ret; - } - } - else -@@ -7703,7 +7766,7 @@ cp_build_modify_expr (location_t loc, tr - { - result = objc_maybe_build_modify_expr (lhs, rhs); - if (result) -- return result; -+ goto ret; - } - - /* `operator=' is not an inheritable operator. */ -@@ -7717,7 +7780,7 @@ cp_build_modify_expr (location_t loc, tr - complain); - if (result == NULL_TREE) - return error_mark_node; -- return result; -+ goto ret; - } - lhstype = olhstype; - } -@@ -7762,7 +7825,7 @@ cp_build_modify_expr (location_t loc, tr - { - result = objc_maybe_build_modify_expr (lhs, newrhs); - if (result) -- return result; -+ goto ret; - } - } - gcc_assert (TREE_CODE (lhstype) != REFERENCE_TYPE); -@@ -7858,9 +7921,10 @@ cp_build_modify_expr (location_t loc, tr - - from_array = TREE_CODE (TREE_TYPE (newrhs)) == ARRAY_TYPE - ? 1 + (modifycode != INIT_EXPR): 0; -- return build_vec_init (lhs, NULL_TREE, newrhs, -- /*explicit_value_init_p=*/false, -- from_array, complain); -+ result = build_vec_init (lhs, NULL_TREE, newrhs, -+ /*explicit_value_init_p=*/false, -+ from_array, complain); -+ goto ret; - } - - if (modifycode == INIT_EXPR) -@@ -7899,7 +7963,7 @@ cp_build_modify_expr (location_t loc, tr - result = objc_generate_write_barrier (lhs, modifycode, newrhs); - - if (result) -- return result; -+ goto ret; - } - - result = build2 (modifycode == NOP_EXPR ? MODIFY_EXPR : INIT_EXPR, -@@ -7909,6 +7973,9 @@ cp_build_modify_expr (location_t loc, tr - if (!plain_assign) - TREE_NO_WARNING (result) = 1; - -+ ret: -+ if (preeval) -+ result = build2 (COMPOUND_EXPR, TREE_TYPE (result), preeval, result); - return result; - } - ---- gcc/testsuite/g++.dg/cpp1z/eval-order4.C.jj 2017-01-30 16:08:22.195641383 +0100 -+++ gcc/testsuite/g++.dg/cpp1z/eval-order4.C 2017-01-30 16:08:09.000000000 +0100 -@@ -0,0 +1,80 @@ -+// PR c++/79232 -+// { dg-do run } -+// { dg-options "-fstrong-eval-order" } -+ -+int last = 0; -+ -+int -+foo (int i) -+{ -+ if (i != last + 1) -+ __builtin_abort (); -+ last = i; -+ return i; -+} -+ -+char a, b; -+int c; -+ -+char & -+bar (int i, int j) -+{ -+ foo (i); -+ return j ? a : b; -+} -+ -+int -+main () -+{ -+ (foo (2) ? bar (3, 0) : bar (3, 1)) = foo (1); -+ if (last != 3) -+ __builtin_abort (); -+ last = 0; -+ (foo (2), foo (3) ? bar (4, 0) : bar (4, 1)) = foo (1); -+ if (last != 4) -+ __builtin_abort (); -+ last = 0; -+ (foo (2), (foo (3) ? bar (4, 0) : bar (4, 1))) = foo (1); -+ if (last != 4) -+ __builtin_abort (); -+ last = 0; -+ (foo (2), foo (3), foo (4) ? bar (5, 0) : bar (5, 1)) = foo (1); -+ if (last != 5) -+ __builtin_abort (); -+ last = 0; -+ (foo (2), (foo (3), (foo (4) ? bar (5, 0) : bar (5, 1)))) = foo (1); -+ if (last != 5) -+ __builtin_abort (); -+ last = 0; -+ --c = foo (1); -+ if (c != 1) -+ __builtin_abort (); -+ last = 0; -+ (foo (2), --c) = foo (1); -+ if (last != 2 || c != 1) -+ __builtin_abort (); -+ last = 0; -+ (foo (2), foo (3), --c) = foo (1); -+ if (last != 3 || c != 1) -+ __builtin_abort (); -+ last = 0; -+ (foo (2), (foo (3), --c)) = foo (1); -+ if (last != 3 || c != 1) -+ __builtin_abort (); -+ last = 0; -+ bar (2, 0) = foo (1); -+ if (last != 2) -+ __builtin_abort (); -+ last = 0; -+ (foo (2), bar (3, 0)) = foo (1); -+ if (last != 3) -+ __builtin_abort (); -+ last = 0; -+ (foo (2), foo (3), bar (4, 0)) = foo (1); -+ if (last != 4) -+ __builtin_abort (); -+ last = 0; -+ (foo (2), (foo (3), bar (4, 0))) = foo (1); -+ if (last != 4) -+ __builtin_abort (); -+} ---- gcc/testsuite/g++.dg/other/pr79232.C.jj 2017-01-30 13:37:32.095090643 +0100 -+++ gcc/testsuite/g++.dg/other/pr79232.C 2017-01-30 13:35:17.000000000 +0100 -@@ -0,0 +1,12 @@ -+// PR c++/79232 -+// { dg-do compile } -+ -+extern char a[]; -+int b; -+char c, e; -+ -+void -+foo (long d) -+{ -+ (0, b ? &c : a)[d] = e; -+} diff --git a/gcc7-pr79288.patch b/gcc7-pr79288.patch deleted file mode 100644 index f4f9ae1..0000000 --- a/gcc7-pr79288.patch +++ /dev/null @@ -1,72 +0,0 @@ -2017-01-30 Jakub Jelinek - - PR c++/79288 - * decl.c (grokdeclarator): For static data members, handle thread_p - only after handling inline. - - * g++.dg/tls/pr79288.C: New test. - ---- gcc/cp/decl.c.jj 2017-01-26 09:14:24.000000000 +0100 -+++ gcc/cp/decl.c 2017-01-30 18:49:38.544438710 +0100 -@@ -12049,14 +12049,6 @@ grokdeclarator (const cp_declarator *dec - : input_location, - VAR_DECL, unqualified_id, type); - set_linkage_for_static_data_member (decl); -- if (thread_p) -- { -- CP_DECL_THREAD_LOCAL_P (decl) = true; -- if (!processing_template_decl) -- set_decl_tls_model (decl, decl_default_tls_model (decl)); -- if (declspecs->gnu_thread_keyword_p) -- SET_DECL_GNU_TLS_P (decl); -- } - if (concept_p) - error ("static data member %qE declared %", - unqualified_id); -@@ -12077,6 +12069,15 @@ grokdeclarator (const cp_declarator *dec - definition is provided, unless this is an inline - variable. */ - DECL_EXTERNAL (decl) = 1; -+ -+ if (thread_p) -+ { -+ CP_DECL_THREAD_LOCAL_P (decl) = true; -+ if (!processing_template_decl) -+ set_decl_tls_model (decl, decl_default_tls_model (decl)); -+ if (declspecs->gnu_thread_keyword_p) -+ SET_DECL_GNU_TLS_P (decl); -+ } - } - else - { ---- gcc/testsuite/g++.dg/tls/pr79288.C.jj 2017-01-30 18:55:05.754282818 +0100 -+++ gcc/testsuite/g++.dg/tls/pr79288.C 2017-01-30 18:54:52.000000000 +0100 -@@ -0,0 +1,28 @@ -+// PR c++/79288 -+// { dg-do compile { target nonpic } } -+// { dg-require-effective-target tls } -+// { dg-options "-O2" } -+// { dg-final { scan-assembler-not "@tpoff" { target i?86-*-* x86_64-*-* } } } -+ -+struct S -+{ -+ static __thread int *p; -+}; -+ -+template -+struct T -+{ -+ static __thread int *p; -+}; -+ -+int * -+foo () -+{ -+ return S::p; -+} -+ -+int * -+bar () -+{ -+ return T<0>::p; -+} diff --git a/gcc7-pr79341.patch b/gcc7-pr79341.patch deleted file mode 100644 index 0fd726d..0000000 --- a/gcc7-pr79341.patch +++ /dev/null @@ -1,26 +0,0 @@ -2017-02-10 Jakub Jelinek - - PR sanitizer/79341 - * c-c++-common/ubsan/float-cast-overflow-8.c (TEST): Make min and max - variables volatile. - ---- gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-8.c.jj 2015-10-29 09:14:30.000000000 +0100 -+++ gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-8.c 2017-02-10 18:09:47.767251774 +0100 -@@ -8,7 +8,7 @@ - #define TEST(type1, type2) \ - if (type1##_MIN) \ - { \ -- type2 min = type1##_MIN; \ -+ volatile type2 min = type1##_MIN; \ - type2 add = -1.0; \ - while (1) \ - { \ -@@ -28,7 +28,7 @@ - volatile type1 tem3 = cvt_##type1##_##type2 (-1.0f); \ - } \ - { \ -- type2 max = type1##_MAX; \ -+ volatile type2 max = type1##_MAX; \ - type2 add = 1.0; \ - while (1) \ - { \ diff --git a/gcc7-pr79388.patch b/gcc7-pr79388.patch deleted file mode 100644 index 097e0eb..0000000 --- a/gcc7-pr79388.patch +++ /dev/null @@ -1,76 +0,0 @@ -2017-02-10 Jakub Jelinek - - PR rtl-optimization/79388 - PR rtl-optimization/79450 - * combine.c (distribute_notes): When removing TEM_INSN for which - corresponding dest has last value recorded, invalidate that last - value. - - * gcc.c-torture/execute/pr79388.c: New test. - * gcc.c-torture/execute/pr79450.c: New test. - ---- gcc/combine.c.jj 2017-01-30 09:31:48.000000000 +0100 -+++ gcc/combine.c 2017-02-10 17:05:57.500482518 +0100 -@@ -14288,6 +14288,11 @@ distribute_notes (rtx notes, rtx_insn *f - NULL_RTX, NULL_RTX, NULL_RTX); - distribute_links (LOG_LINKS (tem_insn)); - -+ unsigned int regno = REGNO (XEXP (note, 0)); -+ reg_stat_type *rsp = ®_stat[regno]; -+ if (rsp->last_set == tem_insn) -+ record_value_for_reg (XEXP (note, 0), NULL, NULL_RTX); -+ - SET_INSN_DELETED (tem_insn); - if (tem_insn == i2) - i2 = NULL; ---- gcc/testsuite/gcc.c-torture/execute/pr79388.c.jj 2017-02-10 17:03:01.993814529 +0100 -+++ gcc/testsuite/gcc.c-torture/execute/pr79388.c 2017-02-10 17:02:50.000000000 +0100 -@@ -0,0 +1,23 @@ -+/* PR rtl-optimization/79388 */ -+/* { dg-additional-options "-fno-tree-coalesce-vars" } */ -+ -+unsigned int a, c; -+ -+__attribute__ ((noinline, noclone)) unsigned int -+foo (unsigned int p) -+{ -+ p |= 1; -+ p &= 0xfffe; -+ p %= 0xffff; -+ c = p; -+ return a + p; -+} -+ -+int -+main (void) -+{ -+ int x = foo (6); -+ if (x != 6) -+ __builtin_abort(); -+ return 0; -+} ---- gcc/testsuite/gcc.c-torture/execute/pr79450.c.jj 2017-02-10 17:03:45.698233423 +0100 -+++ gcc/testsuite/gcc.c-torture/execute/pr79450.c 2017-02-10 17:03:39.000000000 +0100 -@@ -0,0 +1,22 @@ -+/* PR rtl-optimization/79450 */ -+ -+unsigned int -+foo (unsigned char x, unsigned long long y) -+{ -+ do -+ { -+ x &= !y; -+ x %= 24; -+ } -+ while (x < y); -+ return x + y; -+} -+ -+int -+main (void) -+{ -+ unsigned int x = foo (1, 0); -+ if (x != 1) -+ __builtin_abort (); -+ return 0; -+} diff --git a/sources b/sources index 043ea9e..ab54377 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-7.0.1-20170211.tar.bz2) = bcc672ca80bb0c6e8e396bcf2f3f7fb22d3a8688317181c193c9085bcd0379b945cc25d8d44b0eded94661b50079dbce4c26ff947ae51b42b7509eb9c384ec60 +SHA512 (gcc-7.0.1-20170219.tar.bz2) = b8ead6d4441edeeebe032d12f1484e4fdc8f6513df8d3634dc181429fe7105683544a721a44fde83b522398b9a93d47b671c157189b9f1b5356d4754b4889908 SHA512 (nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.bz2) = 38f97c9297ad108568352a4d28277455a3c01fd8b7864e798037e5006b6f757022e874bbf3f165775fe3b873781bc108137bbeb42dd5ed3c7d3e6747746fa918 SHA512 (nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.bz2) = 95b577a06a93bb044dbc8033e550cb36bcf2ab2687da030a7318cdc90e7467ed49665e247dcafb5ff4a7e92cdc264291d19728bd17fab902fb64b22491269330