From bd1b81e9ec65bc93fc298c482b241a0f6481fb4c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 29 Jan 2016 21:59:00 +0100 Subject: [PATCH] 6.0.0-0.7.fc24 --- .gitignore | 1 + gcc.spec | 27 ++++++++---- gcc6-pr66869.patch | 44 ------------------- gcc6-pr69126-revert.patch | 91 --------------------------------------- gcc6-pr69546.patch | 69 +++++++++++++++++++++++++++++ gcc6-pr69558.patch | 62 ++++++++++++++++++++++++++ sources | 2 +- 7 files changed, 152 insertions(+), 144 deletions(-) delete mode 100644 gcc6-pr66869.patch delete mode 100644 gcc6-pr69126-revert.patch create mode 100644 gcc6-pr69546.patch create mode 100644 gcc6-pr69558.patch diff --git a/.gitignore b/.gitignore index 6ba1427..dea2692 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /gcc-6.0.0-20160127.tar.bz2 /gcc-6.0.0-20160128.tar.bz2 +/gcc-6.0.0-20160129.tar.bz2 diff --git a/gcc.spec b/gcc.spec index 62a851a..b51d2a5 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,9 +1,9 @@ -%global DATE 20160128 -%global SVNREV 232948 +%global DATE 20160129 +%global SVNREV 232999 %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.6 +%global gcc_release 0.7 %global _unpackaged_files_terminate_build 0 %global _performance_build 1 # Hardening slows the compiler way too much. @@ -119,7 +119,7 @@ BuildRequires: texinfo, texinfo-tex, /usr/bin/pod2man BuildRequires: systemtap-sdt-devel >= 1.3 BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1 %if %{build_go} -BuildRequires: hostname +BuildRequires: hostname, procps %endif # For VTA guality testing BuildRequires: gdb @@ -206,8 +206,8 @@ 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-pr66869.patch -Patch15: gcc6-pr69126-revert.patch +Patch14: gcc6-pr69546.patch +Patch15: gcc6-pr69558.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -772,8 +772,8 @@ 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 .pr66869~ -%patch15 -p0 -b .pr69126-revert~ +%patch14 -p0 -b .pr69546~ +%patch15 -p0 -b .pr69558~ %if 0%{?_enable_debug_packages} mkdir dwz-wrapper @@ -3066,6 +3066,17 @@ fi %doc rpm.doc/changelogs/libcc1/ChangeLog* %changelog +* Fri Jan 29 2016 Jakub Jelinek 6.0.0-0.7 +- update from the trunk + - PRs c++/69462, c++/69509, c++/69516, debug/69518, libstdc++/69506, + middle-end/69537, other/69006, pch/68176, target/17381, target/65604, + target/66137, target/68400, target/69299, target/69459, target/69530, + target/69551, tree-optimization/69378, tree-optimization/69547 +- buildrequire procps for go testing +- fix __uint128_t division (PR tree-optimization/69546) +- restore old behavior of _Pragma GCC diagnostics in macros + (PR preprocessor/69543, PR c/69558) + * Thu Jan 28 2016 Jakub Jelinek 6.0.0-0.6 - update from the trunk - PRs ada/69488, c++/24208, c++/67407, c++/69317, c++/69379, c++/69496, diff --git a/gcc6-pr66869.patch b/gcc6-pr66869.patch deleted file mode 100644 index 4bd3e19..0000000 --- a/gcc6-pr66869.patch +++ /dev/null @@ -1,44 +0,0 @@ -2016-01-28 Jakub Jelinek - - PR debug/66869 - * decl.c (wrapup_globals_for_namespace): Warn about unused static - function declarations. - - * g++.dg/warn/Wunused-function2.C: New test. - ---- gcc/cp/decl.c.jj 2016-01-25 09:31:01.000000000 +0100 -+++ gcc/cp/decl.c 2016-01-28 13:14:10.783286136 +0100 -@@ -879,6 +879,24 @@ wrapup_globals_for_namespace (tree name_ - tree *vec = statics->address (); - int len = statics->length (); - -+ if (warn_unused_function) -+ { -+ tree decl; -+ unsigned int i; -+ FOR_EACH_VEC_SAFE_ELT (statics, i, decl) -+ if (TREE_CODE (decl) == FUNCTION_DECL -+ && DECL_INITIAL (decl) == 0 -+ && DECL_EXTERNAL (decl) -+ && !TREE_PUBLIC (decl) -+ && !DECL_ARTIFICIAL (decl) -+ && !TREE_NO_WARNING (decl)) -+ { -+ warning (OPT_Wunused_function, -+ "%q+F declared % but never defined", decl); -+ TREE_NO_WARNING (decl) = 1; -+ } -+ } -+ - /* Write out any globals that need to be output. */ - return wrapup_global_declarations (vec, len); - } ---- gcc/testsuite/g++.dg/warn/Wunused-function2.C.jj 2016-01-28 13:40:10.201053364 +0100 -+++ gcc/testsuite/g++.dg/warn/Wunused-function2.C 2016-01-28 13:41:43.006788487 +0100 -@@ -0,0 +1,6 @@ -+// PR debug/66869 -+// { dg-do compile } -+// { dg-options "-Wunused-function" } -+ -+static void test (void); // { dg-warning "'void test..' declared 'static' but never defined" } -+int i; diff --git a/gcc6-pr69126-revert.patch b/gcc6-pr69126-revert.patch deleted file mode 100644 index 58b4e0a..0000000 --- a/gcc6-pr69126-revert.patch +++ /dev/null @@ -1,91 +0,0 @@ -Revert: -2016-01-28 Jakub Jelinek - - * directives.c (destringize_and_run): Adjust prototype. - -2016-01-27 David Malcolm - - PR preprocessor/69126 - * directives.c (destringize_and_run): Add expansion_loc param; use - it when handling unexpanded pragmas to fixup the locations of the - synthesized tokens. - (_cpp_do__Pragma): Add expansion_loc param and use it when calling - destringize_and_run. - * internal.h (_cpp_do__Pragma): Add expansion_loc param. - * macro.c (builtin_macro): Pass expansion location of _Pragma to - _cpp_do__Pragma. - ---- libcpp/macro.c (revision 232893) -+++ libcpp/macro.c (revision 232892) -@@ -430,7 +430,7 @@ builtin_macro (cpp_reader *pfile, cpp_ha - if (pfile->state.in_directive) - return 0; - -- return _cpp_do__Pragma (pfile, loc); -+ return _cpp_do__Pragma (pfile); - } - - buf = _cpp_builtin_macro_text (pfile, node); ---- libcpp/directives.c (revision 232928) -+++ libcpp/directives.c (revision 232892) -@@ -122,8 +122,7 @@ static void do_pragma_error (cpp_reader - static void do_linemarker (cpp_reader *); - static const cpp_token *get_token_no_padding (cpp_reader *); - static const cpp_token *get__Pragma_string (cpp_reader *); --static void destringize_and_run (cpp_reader *, const cpp_string *, -- source_location); -+static void destringize_and_run (cpp_reader *, const cpp_string *); - static int parse_answer (cpp_reader *, struct answer **, int, source_location); - static cpp_hashnode *parse_assertion (cpp_reader *, struct answer **, int); - static struct answer ** find_answer (cpp_hashnode *, const struct answer *); -@@ -1753,8 +1752,7 @@ get__Pragma_string (cpp_reader *pfile) - /* Destringize IN into a temporary buffer, by removing the first \ of - \" and \\ sequences, and process the result as a #pragma directive. */ - static void --destringize_and_run (cpp_reader *pfile, const cpp_string *in, -- source_location expansion_loc) -+destringize_and_run (cpp_reader *pfile, const cpp_string *in) - { - const unsigned char *src, *limit; - char *dest, *result; -@@ -1834,12 +1832,6 @@ destringize_and_run (cpp_reader *pfile, - toks = XRESIZEVEC (cpp_token, toks, maxcount); - } - toks[count] = *cpp_get_token (pfile); -- /* _Pragma is a builtin, so we're not within a macro-map, and so -- the token locations are set to bogus ordinary locations -- near to, but after that of the "_Pragma". -- Paper over this by setting them equal to the location of the -- _Pragma itself (PR preprocessor/69126). */ -- toks[count].src_loc = expansion_loc; - /* Macros have been already expanded by cpp_get_token - if the pragma allowed expansion. */ - toks[count++].flags |= NO_EXPAND; -@@ -1874,14 +1866,14 @@ destringize_and_run (cpp_reader *pfile, - - /* Handle the _Pragma operator. Return 0 on error, 1 if ok. */ - int --_cpp_do__Pragma (cpp_reader *pfile, source_location expansion_loc) -+_cpp_do__Pragma (cpp_reader *pfile) - { - const cpp_token *string = get__Pragma_string (pfile); - pfile->directive_result.type = CPP_PADDING; - - if (string) - { -- destringize_and_run (pfile, &string->val.str, expansion_loc); -+ destringize_and_run (pfile, &string->val.str); - return 1; - } - cpp_error (pfile, CPP_DL_ERROR, ---- libcpp/internal.h (revision 232893) -+++ libcpp/internal.h (revision 232892) -@@ -688,7 +688,7 @@ extern int _cpp_handle_directive (cpp_re - extern void _cpp_define_builtin (cpp_reader *, const char *); - extern char ** _cpp_save_pragma_names (cpp_reader *); - extern void _cpp_restore_pragma_names (cpp_reader *, char **); --extern int _cpp_do__Pragma (cpp_reader *, source_location); -+extern int _cpp_do__Pragma (cpp_reader *); - extern void _cpp_init_directives (cpp_reader *); - extern void _cpp_init_internal_pragmas (cpp_reader *); - extern void _cpp_do_file_change (cpp_reader *, enum lc_reason, const char *, diff --git a/gcc6-pr69546.patch b/gcc6-pr69546.patch new file mode 100644 index 0000000..7a00971 --- /dev/null +++ b/gcc6-pr69546.patch @@ -0,0 +1,69 @@ +2016-01-29 Jakub Jelinek + + PR tree-optimization/69546 + * wide-int.cc (wi::divmod_internal): For unsigned division + where both operands fit into uhwi, if o1 is 1 and o0 has + msb set, if divident_prec is larger than bits per hwi, + clear another quotient word and return 2 instead of 1. + + * gcc.dg/torture/pr69546.c: New test. + +--- gcc/wide-int.cc.jj 2016-01-26 11:46:39.000000000 +0100 ++++ gcc/wide-int.cc 2016-01-29 11:59:33.348852003 +0100 +@@ -1788,15 +1788,25 @@ wi::divmod_internal (HOST_WIDE_INT *quot + { + unsigned HOST_WIDE_INT o0 = dividend.to_uhwi (); + unsigned HOST_WIDE_INT o1 = divisor.to_uhwi (); ++ unsigned int quotient_len = 1; + + if (quotient) +- quotient[0] = o0 / o1; ++ { ++ quotient[0] = o0 / o1; ++ if (o1 == 1 ++ && (HOST_WIDE_INT) o0 < 0 ++ && dividend_prec > HOST_BITS_PER_WIDE_INT) ++ { ++ quotient[1] = 0; ++ quotient_len = 2; ++ } ++ } + if (remainder) + { + remainder[0] = o0 % o1; + *remainder_len = 1; + } +- return 1; ++ return quotient_len; + } + + /* Make the divisor and dividend positive and remember what we +--- gcc/testsuite/gcc.dg/torture/pr69546.c.jj 2016-01-29 12:06:03.148516651 +0100 ++++ gcc/testsuite/gcc.dg/torture/pr69546.c 2016-01-29 12:08:17.847672967 +0100 +@@ -0,0 +1,26 @@ ++/* PR tree-optimization/69546 */ ++/* { dg-do run { target int128 } } */ ++ ++unsigned __int128 __attribute__ ((noinline, noclone)) ++foo (unsigned long long x) ++{ ++ unsigned __int128 y = ~0ULL; ++ x >>= 63; ++ return y / (x | 1); ++} ++ ++unsigned __int128 __attribute__ ((noinline, noclone)) ++bar (unsigned long long x) ++{ ++ unsigned __int128 y = ~33ULL; ++ x >>= 63; ++ return y / (x | 1); ++} ++ ++int ++main () ++{ ++ if (foo (1) != ~0ULL || bar (17) != ~33ULL) ++ __builtin_abort (); ++ return 0; ++} diff --git a/gcc6-pr69558.patch b/gcc6-pr69558.patch new file mode 100644 index 0000000..9d13731 --- /dev/null +++ b/gcc6-pr69558.patch @@ -0,0 +1,62 @@ +2016-01-29 Jakub Jelinek + + PR preprocessor/69543 + PR c/69558 + * c-pragma.c (handle_pragma_diagnostic): Pass input_location + instead of loc to control_warning_option. + + * gcc.dg/pr69543.c: New test. + * gcc.dg/pr69558.c: New test. + +--- gcc/c-family/c-pragma.c.jj 2016-01-15 21:57:00.000000000 +0100 ++++ gcc/c-family/c-pragma.c 2016-01-29 18:34:51.743943283 +0100 +@@ -819,7 +819,7 @@ handle_pragma_diagnostic(cpp_reader *ARG + arg = option_string + 1 + cl_options[option_index].opt_len; + control_warning_option (option_index, (int) kind, + arg, kind != DK_IGNORED, +- loc, lang_mask, &handlers, ++ input_location, lang_mask, &handlers, + &global_options, &global_options_set, + global_dc); + } +--- gcc/testsuite/gcc.dg/pr69558.c.jj 2016-01-29 18:43:32.191665058 +0100 ++++ gcc/testsuite/gcc.dg/pr69558.c 2016-01-29 18:40:05.000000000 +0100 +@@ -0,0 +1,17 @@ ++/* PR c/69558 */ ++/* { dg-do compile } */ ++/* { dg-options "-Wdeprecated-declarations" } */ ++ ++#define A \ ++ _Pragma ("GCC diagnostic push") \ ++ _Pragma ("GCC diagnostic ignored \"-Wdeprecated-declarations\"") ++#define B \ ++ _Pragma ("GCC diagnostic pop") ++#define C(x) \ ++ A \ ++ static inline void bar (void) { x (); } \ ++ B ++ ++__attribute__((deprecated)) void foo (void); /* { dg-bogus "declared here" } */ ++ ++C (foo) /* { dg-bogus "is deprecated" } */ +--- gcc/testsuite/gcc.dg/pr69543.c.jj 2016-01-29 18:45:09.520323395 +0100 ++++ gcc/testsuite/gcc.dg/pr69543.c 2016-01-29 18:44:56.000000000 +0100 +@@ -0,0 +1,18 @@ ++/* PR preprocessor/69543 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -Wuninitialized" } */ ++ ++# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ ++ _Pragma ("GCC diagnostic push") \ ++ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ ++ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") ++# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ ++ _Pragma ("GCC diagnostic pop") ++ ++void test (char yylval) ++{ ++ char *yyvsp; ++ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++ *++yyvsp = yylval; ++ YY_IGNORE_MAYBE_UNINITIALIZED_END ++} diff --git a/sources b/sources index 0f0996b..05b1aba 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -cbd21a4b3232d4202dd894f4587932d7 gcc-6.0.0-20160128.tar.bz2 +e5c10abeb36d1e8659e83f9c6d208249 gcc-6.0.0-20160129.tar.bz2