public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Jakub Jelinek <jakub@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/gcc] rhel-f41-base: 6.0.0-0.10
Date: Mon, 29 Jun 2026 12:27:02 GMT	[thread overview]
Message-ID: <178273602201.1.15094387518825383677.rpms-gcc-97475d9eac9d@fedoraproject.org> (raw)

A new commit has been pushed.

Repo   : rpms/gcc
Branch : rhel-f41-base
Commit : 97475d9eac9d18ba55240820ce483e3ab898b638
Author : Jakub Jelinek <jakub@redhat.com>
Date   : 2016-02-05T20:32:59+01:00
Stats  : +454/-235 in 10 file(s)
URL    : https://src.fedoraproject.org/rpms/gcc/c/97475d9eac9d18ba55240820ce483e3ab898b638?branch=rhel-f41-base

Log:
6.0.0-0.10

---
diff --git a/.gitignore b/.gitignore
index b11fa57..eee8aca 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
 /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

diff --git a/gcc.spec b/gcc.spec
index 6959985..93159dc 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,9 +1,9 @@
-%global DATE 20160201
-%global SVNREV 233052
+%global DATE 20160205
+%global SVNREV 233185
 %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.9
+%global gcc_release 0.10
 %global _unpackaged_files_terminate_build 0
 %global _performance_build 1
 # Hardening slows the compiler way too much.
@@ -206,8 +206,11 @@ 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-pr69558.patch
-Patch15: gcc6-pr69592.patch
+Patch14: gcc6-pr65932-cse-revert.patch
+Patch15: gcc6-pr69241.patch
+Patch16: gcc6-pr69628.patch
+Patch17: gcc6-pr69658.patch
+Patch18: gcc6-pr69691.patch
 
 # On ARM EABI systems, we do want -gnueabi to be part of the
 # target triple.
@@ -774,8 +777,11 @@ 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 .pr69558~
-%patch15 -p0 -b .pr69592~
+%patch14 -p0 -b .pr65932-cse-revert~
+%patch15 -p0 -b .pr69241~
+%patch16 -p0 -b .pr69628~
+%patch17 -p0 -b .pr69658~
+%patch18 -p0 -b .pr69691~
 
 %if 0%{?_enable_debug_packages}
 mkdir dwz-wrapper
@@ -835,7 +841,7 @@ if [ -f "${BUILDDIR}"/debugfiles.list \
   done
   cp -a "${BUILDDIR}"/debugfiles-base.list "${BUILDDIR}"/debugfiles-remove.list
 %if %{build_go}
-  libgoso=`basename .%{_prefix}/%{_lib}/libgo.so.8.*`
+  libgoso=`basename .%{_prefix}/%{_lib}/libgo.so.9.*`
   for f in %{_prefix}/bin/go.gcc \
 	   %{_prefix}/bin/gofmt.gcc \
 	   %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cgo \
@@ -846,8 +852,8 @@ if [ -f "${BUILDDIR}"/debugfiles.list \
     rm -f usr/lib/debug$f.debug
     echo "/usr/lib/debug$f.debug" >> "${BUILDDIR}"/debugfiles-remove.list
   done
-  rm -f usr/lib/debug%{_prefix}/%{_lib}/libgo.so.8.debug
-  echo "/usr/lib/debug%{_prefix}/%{_lib}/libgo.so.8.debug" >> "${BUILDDIR}"/debugfiles-remove.list
+  rm -f usr/lib/debug%{_prefix}/%{_lib}/libgo.so.9.debug
+  echo "/usr/lib/debug%{_prefix}/%{_lib}/libgo.so.9.debug" >> "${BUILDDIR}"/debugfiles-remove.list
   for f in `find usr/lib/debug/.build-id -type l`; do
     if ls -l "$f" | egrep -q -- '->.*(/bin/go.gcc|/bin/gofmt.gcc|/cgo|lib[0-9]*/libgo\.so)'; then
       echo "/$f" >> "${BUILDDIR}"/debugfiles-remove.list
@@ -1339,7 +1345,7 @@ ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so
 ln -sf ../../../libgfortran.so.3.* libgfortran.so
 ln -sf ../../../libgomp.so.1.* libgomp.so
 %if %{build_go}
-ln -sf ../../../libgo.so.8.* libgo.so
+ln -sf ../../../libgo.so.9.* libgo.so
 %endif
 %if %{build_libquadmath}
 ln -sf ../../../libquadmath.so.0.* libquadmath.so
@@ -1370,7 +1376,7 @@ ln -sf ../../../../%{_lib}/libstdc++.so.6.*[0-9] libstdc++.so
 ln -sf ../../../../%{_lib}/libgfortran.so.3.* libgfortran.so
 ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so
 %if %{build_go}
-ln -sf ../../../../%{_lib}/libgo.so.8.* libgo.so
+ln -sf ../../../../%{_lib}/libgo.so.9.* libgo.so
 %endif
 %if %{build_libquadmath}
 ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so
@@ -1491,8 +1497,8 @@ ln -sf ../`echo ../../../../lib/libgfortran.so.3.* | sed s~/lib/~/lib64/~` 64/li
 ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so
 %if %{build_go}
 rm -f libgo.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.8.* | sed 's,^.*libg,libg,'`' )' > libgo.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.8.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.9.* | sed 's,^.*libg,libg,'`' )' > libgo.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.9.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so
 %endif
 %if %{build_libquadmath}
 rm -f libquadmath.so
@@ -1598,8 +1604,8 @@ ln -sf ../`echo ../../../../lib64/libgfortran.so.3.* | sed s~/../lib64/~/~` 32/l
 ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so
 %if %{build_go}
 rm -f libgo.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.8.* | sed 's,^.*libg,libg,'`' )' > libgo.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.8.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.9.* | sed 's,^.*libg,libg,'`' )' > libgo.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.9.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so
 %endif
 %if %{build_libquadmath}
 rm -f libquadmath.so
@@ -1780,7 +1786,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libtsan.so.0.*
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.*
 %endif
 %if %{build_go}
-chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.8.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.9.*
 %endif
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libobjc.so.4.*
 
@@ -2982,7 +2988,7 @@ fi
 %doc rpm.doc/go/*
 
 %files -n libgo
-%{_prefix}/%{_lib}/libgo.so.8*
+%{_prefix}/%{_lib}/libgo.so.9*
 %doc rpm.doc/libgo/*
 
 %files -n libgo-devel
@@ -3068,6 +3074,24 @@ fi
 %doc rpm.doc/changelogs/libcc1/ChangeLog*
 
 %changelog
+* Fri Feb  5 2016 Jakub Jelinek <jakub@redhat.com> 6.0.0-0.10
+- update from the trunk
+  - PRs bootstrap/69611, bootstrap/69677, c++/68948, c++/69056, c++/69251,
+	c++/69253, c++/69277, c++/69290, c++/69349, c/69627, c/69669,
+	fortran/67451, fortran/69368, fortran/69418, libstdc++/69626,
+	middle-end/68542, rtl-opt/67609, rtl-optimization/64682,
+	rtl-optimization/69567, rtl-optimization/69577, sanitizer/69276,
+	target/65932, target/67032, target/67714, target/68124, target/68662,
+	target/69118, target/69369, target/69454, target/69461, target/69548,
+	target/69619, target/69625, target/69644, target/69667, target/69677,
+	testsuite/65940, tree-optimization/69580, tree-optimization/69595,
+	tree-optimization/69606
+  - Go 1.6rc1
+- fix various C++ ICEs in assign_temp (PR ipa/69241, PR c++/69649)
+- fix character constant error recovery (PR c++/69628)
+- fix invalid diagnostics on C++ array initializers (PR c++/69658)
+- fix RA subreg handling (PR rtl-optimization/69691)
+
 * Mon Feb  1 2016 Jakub Jelinek <jakub@redhat.com> 6.0.0-0.9
 - update from the trunk
   - PRs middle-end/69556, tree-optimization/67921, tree-optimization/69574

diff --git a/gcc6-pr65932-cse-revert.patch b/gcc6-pr65932-cse-revert.patch
new file mode 100644
index 0000000..12be488
--- /dev/null
+++ b/gcc6-pr65932-cse-revert.patch
@@ -0,0 +1,19 @@
+Revert:
+2016-02-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+	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-pr69241.patch b/gcc6-pr69241.patch
new file mode 100644
index 0000000..74bf6ad
--- /dev/null
+++ b/gcc6-pr69241.patch
@@ -0,0 +1,163 @@
+2016-02-03  Jakub Jelinek  <jakub@redhat.com>
+	    Patrick Palka  <ppalka@gcc.gnu.org>
+
+	PR ipa/69241
+	PR c++/69649
+	* gimplify.c (gimplify_modify_expr): Set lhs even for noreturn
+	calls if the return type is TREE_ADDRESSABLE.
+	* cgraphunit.c (cgraph_node::expand_thunk): Likewise.
+	* ipa-split.c (split_function): Fix doubled "we" in comment.
+	Use void return type for the split part even if
+	!split_point->split_part_set_retval.
+
+	* g++.dg/ipa/pr69241-1.C: New test.
+	* g++.dg/ipa/pr69241-2.C: New test.
+	* g++.dg/ipa/pr69241-3.C: New test.
+	* g++.dg/ipa/pr69649.C: New test.
+
+--- gcc/gimplify.c.jj	2016-02-02 20:42:00.000000000 +0100
++++ gcc/gimplify.c	2016-02-03 11:04:06.400757668 +0100
+@@ -4828,7 +4828,8 @@ gimplify_modify_expr (tree *expr_p, gimp
+ 	    }
+ 	}
+       notice_special_calls (call_stmt);
+-      if (!gimple_call_noreturn_p (call_stmt))
++      if (!gimple_call_noreturn_p (call_stmt)
++	  || TREE_ADDRESSABLE (TREE_TYPE (*to_p)))
+ 	gimple_call_set_lhs (call_stmt, *to_p);
+       assign = call_stmt;
+     }
+--- gcc/cgraphunit.c.jj	2016-01-20 10:55:15.000000000 +0100
++++ gcc/cgraphunit.c	2016-02-03 11:04:41.034279370 +0100
+@@ -1703,7 +1703,8 @@ cgraph_node::expand_thunk (bool output_a
+       bsi = gsi_start_bb (bb);
+ 
+       /* Build call to the function being thunked.  */
+-      if (!VOID_TYPE_P (restype) && !alias_is_noreturn)
++      if (!VOID_TYPE_P (restype)
++	  && (!alias_is_noreturn || TREE_ADDRESSABLE (restype)))
+ 	{
+ 	  if (DECL_BY_REFERENCE (resdecl))
+ 	    {
+@@ -1770,7 +1771,7 @@ cgraph_node::expand_thunk (bool output_a
+ 	      || DECL_BY_REFERENCE (resdecl)))
+         gimple_call_set_return_slot_opt (call, true);
+ 
+-      if (restmp && !alias_is_noreturn)
++      if (restmp)
+ 	{
+           gimple_call_set_lhs (call, restmp);
+ 	  gcc_assert (useless_type_conversion_p (TREE_TYPE (restmp),
+--- gcc/ipa-split.c.jj	2016-01-04 14:55:52.000000000 +0100
++++ gcc/ipa-split.c	2016-02-03 13:01:45.905136051 +0100
+@@ -1254,7 +1254,7 @@ split_function (basic_block return_bb, s
+       else
+ 	main_part_return_p = true;
+     }
+-  /* The main part also returns if we we split on a fallthru edge
++  /* 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)
+@@ -1364,8 +1364,9 @@ split_function (basic_block return_bb, s
+   /* Now create the actual clone.  */
+   cgraph_edge::rebuild_edges ();
+   node = cur_node->create_version_clone_with_body
+-    (vNULL, NULL, args_to_skip, !split_part_return_p, split_point->split_bbs,
+-     split_point->entry_bb, "part");
++    (vNULL, NULL, args_to_skip,
++     !split_part_return_p || !split_point->split_part_set_retval,
++     split_point->split_bbs, split_point->entry_bb, "part");
+ 
+   node->split_part = true;
+ 
+--- gcc/testsuite/g++.dg/ipa/pr69241-1.C.jj	2016-02-03 10:56:10.624328263 +0100
++++ gcc/testsuite/g++.dg/ipa/pr69241-1.C	2016-02-03 11:01:18.600075039 +0100
+@@ -0,0 +1,12 @@
++// PR ipa/69241
++// { dg-do compile }
++// { dg-options "-O2" }
++
++struct R { R (const R &) {} };
++__attribute__ ((noreturn)) R bar ();
++
++R
++foo ()
++{
++  bar ();
++}
+--- gcc/testsuite/g++.dg/ipa/pr69241-2.C.jj	2016-02-03 10:56:07.996364556 +0100
++++ gcc/testsuite/g++.dg/ipa/pr69241-2.C	2016-02-03 11:01:42.958738639 +0100
+@@ -0,0 +1,18 @@
++// PR ipa/69241
++// { dg-do compile }
++// { dg-options "-O2" }
++
++__attribute__((noreturn)) void foo (int);
++struct R { R (const R &) {} };
++
++R
++bar ()
++{
++  foo (0);
++}
++
++R
++baz ()
++{
++  foo (0);
++}
+--- gcc/testsuite/g++.dg/ipa/pr69241-3.C.jj	2016-02-03 11:00:39.840610317 +0100
++++ gcc/testsuite/g++.dg/ipa/pr69241-3.C	2016-02-03 11:01:02.044303678 +0100
+@@ -0,0 +1,12 @@
++// PR ipa/69241
++// { dg-do compile }
++// { dg-options "-O2" }
++
++struct R { int x[100]; };
++__attribute__ ((noreturn)) R bar ();
++
++void
++foo ()
++{
++  bar ();
++}
+--- gcc/testsuite/g++.dg/ipa/pr69649.C.jj	2016-02-03 13:19:00.850845887 +0100
++++ gcc/testsuite/g++.dg/ipa/pr69649.C	2016-02-03 13:18:43.000000000 +0100
+@@ -0,0 +1,36 @@
++// PR c++/69649
++// { dg-do compile }
++// { dg-options "-O2" }
++
++struct A { virtual void m1 (); };
++struct C : A { void m1 () { m1 (); } };
++template <class T> struct B
++{
++  T *t;
++  B (T *x) : t (x) { if (t) t->m1 (); }
++  B (const B &);
++};
++struct D : public C {};
++struct F : public D
++{
++  virtual B<D> m2 ();
++  virtual B<D> m3 ();
++  int m4 ();
++};
++struct G : F
++{
++  B<D> m2 ();
++  B<D> m3 ();
++};
++B<D> G::m2 ()
++{
++  if (m4 () == 0)
++    return this;
++  return 0;
++}
++B<D> G::m3 ()
++{
++  if (m4 () == 0)
++    return this;
++  return 0;
++}

diff --git a/gcc6-pr69558.patch b/gcc6-pr69558.patch
deleted file mode 100644
index 9d13731..0000000
--- a/gcc6-pr69558.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-2016-01-29  Jakub Jelinek  <jakub@redhat.com>
-
-	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/gcc6-pr69592.patch b/gcc6-pr69592.patch
deleted file mode 100644
index 2fab52a..0000000
--- a/gcc6-pr69592.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-2016-02-01  Jakub Jelinek  <jakub@redhat.com>
-
-	PR rtl-optimization/69592
-	* rtlanal.c (nonzero_bits_binary_arith_p): New inline function.
-	(cached_nonzero_bits): Use it instead of ARITHMETIC_P.
-	(num_sign_bit_copies_binary_arith_p): New inline function.
-	(cached_num_sign_bit_copies): Use it instead of ARITHMETIC_P.
-
-	* gcc.dg/pr69592.c: New test.
-
---- gcc/rtlanal.c.jj	2016-01-21 21:27:57.000000000 +0100
-+++ gcc/rtlanal.c	2016-02-01 18:53:06.130934333 +0100
-@@ -4163,6 +4163,36 @@ num_sign_bit_copies (const_rtx x, machin
-   return cached_num_sign_bit_copies (x, mode, NULL_RTX, VOIDmode, 0);
- }
- 
-+/* Return true if nonzero_bits1 might recurse into both operands
-+   of X.  */
-+
-+static inline bool
-+nonzero_bits_binary_arith_p (const_rtx x)
-+{
-+  if (!ARITHMETIC_P (x))
-+    return false;
-+  switch (GET_CODE (x))
-+    {
-+    case AND:
-+    case XOR:
-+    case IOR:
-+    case UMIN:
-+    case UMAX:
-+    case SMIN:
-+    case SMAX:
-+    case PLUS:
-+    case MINUS:
-+    case MULT:
-+    case DIV:
-+    case UDIV:
-+    case MOD:
-+    case UMOD:
-+      return true;
-+    default:
-+      return false;
-+    }
-+}
-+
- /* The function cached_nonzero_bits is a wrapper around nonzero_bits1.
-    It avoids exponential behavior in nonzero_bits1 when X has
-    identical subexpressions on the first or the second level.  */
-@@ -4179,7 +4209,7 @@ cached_nonzero_bits (const_rtx x, machin
-      nonzero_bits1 on X with the subexpressions as KNOWN_X and the
-      precomputed value for the subexpression as KNOWN_RET.  */
- 
--  if (ARITHMETIC_P (x))
-+  if (nonzero_bits_binary_arith_p (x))
-     {
-       rtx x0 = XEXP (x, 0);
-       rtx x1 = XEXP (x, 1);
-@@ -4191,13 +4221,13 @@ cached_nonzero_bits (const_rtx x, machin
- 						   known_mode, known_ret));
- 
-       /* Check the second level.  */
--      if (ARITHMETIC_P (x0)
-+      if (nonzero_bits_binary_arith_p (x0)
- 	  && (x1 == XEXP (x0, 0) || x1 == XEXP (x0, 1)))
- 	return nonzero_bits1 (x, mode, x1, mode,
- 			      cached_nonzero_bits (x1, mode, known_x,
- 						   known_mode, known_ret));
- 
--      if (ARITHMETIC_P (x1)
-+      if (nonzero_bits_binary_arith_p (x1)
- 	  && (x0 == XEXP (x1, 0) || x0 == XEXP (x1, 1)))
- 	return nonzero_bits1 (x, mode, x0, mode,
- 			      cached_nonzero_bits (x0, mode, known_x,
-@@ -4672,6 +4702,33 @@ nonzero_bits1 (const_rtx x, machine_mode
- #undef cached_num_sign_bit_copies
- 
- \f
-+/* Return true if num_sign_bit_copies1 might recurse into both operands
-+   of X.  */
-+
-+static inline bool
-+num_sign_bit_copies_binary_arith_p (const_rtx x)
-+{
-+  if (!ARITHMETIC_P (x))
-+    return false;
-+  switch (GET_CODE (x))
-+    {
-+    case IOR:
-+    case AND:
-+    case XOR:
-+    case SMIN:
-+    case SMAX:
-+    case UMIN:
-+    case UMAX:
-+    case PLUS:
-+    case MINUS:
-+    case MULT:
-+      return true;
-+    default:
-+      return false;
-+    }
-+}
-+
-+
- /* The function cached_num_sign_bit_copies is a wrapper around
-    num_sign_bit_copies1.  It avoids exponential behavior in
-    num_sign_bit_copies1 when X has identical subexpressions on the
-@@ -4689,7 +4746,7 @@ cached_num_sign_bit_copies (const_rtx x,
-      num_sign_bit_copies1 on X with the subexpressions as KNOWN_X and
-      the precomputed value for the subexpression as KNOWN_RET.  */
- 
--  if (ARITHMETIC_P (x))
-+  if (num_sign_bit_copies_binary_arith_p (x))
-     {
-       rtx x0 = XEXP (x, 0);
-       rtx x1 = XEXP (x, 1);
-@@ -4703,7 +4760,7 @@ cached_num_sign_bit_copies (const_rtx x,
- 							    known_ret));
- 
-       /* Check the second level.  */
--      if (ARITHMETIC_P (x0)
-+      if (num_sign_bit_copies_binary_arith_p (x0)
- 	  && (x1 == XEXP (x0, 0) || x1 == XEXP (x0, 1)))
- 	return
- 	  num_sign_bit_copies1 (x, mode, x1, mode,
-@@ -4711,7 +4768,7 @@ cached_num_sign_bit_copies (const_rtx x,
- 							    known_mode,
- 							    known_ret));
- 
--      if (ARITHMETIC_P (x1)
-+      if (num_sign_bit_copies_binary_arith_p (x1)
- 	  && (x0 == XEXP (x1, 0) || x0 == XEXP (x1, 1)))
- 	return
- 	  num_sign_bit_copies1 (x, mode, x0, mode,
---- gcc/testsuite/gcc.dg/pr69592.c.jj	2016-02-01 19:02:23.122251761 +0100
-+++ gcc/testsuite/gcc.dg/pr69592.c	2016-02-01 19:00:30.000000000 +0100
-@@ -0,0 +1,16 @@
-+/* PR rtl-optimization/69592 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2" } */
-+
-+unsigned int
-+foo (unsigned int a, unsigned int *b, unsigned int c)
-+{
-+  unsigned int d;
-+#define A(n) d = a + b[n]; if (d < a) c++; a = d;
-+#define B(n) A(n##0) A(n##1) A(n##2) A(n##3) A(n##4) A(n##5) A(n##6) A(n##7) A(n##8) A(n##9)
-+#define C(n) B(n##0) B(n##1) B(n##2) B(n##3) B(n##4) B(n##5) B(n##6) B(n##7) B(n##8) B(n##9)
-+#define D(n) C(n##0) C(n##1) C(n##2) C(n##3) C(n##4) C(n##5) C(n##6) C(n##7) C(n##8) C(n##9)
-+#define E(n) D(n##0) D(n##1) D(n##2) D(n##3) D(n##4) D(n##5) D(n##6) D(n##7) D(n##8) D(n##9)
-+  C(1) C(2) C(3) C(4) C(5) C(6)
-+  return d + c;
-+}

diff --git a/gcc6-pr69628.patch b/gcc6-pr69628.patch
new file mode 100644
index 0000000..2a06d55
--- /dev/null
+++ b/gcc6-pr69628.patch
@@ -0,0 +1,38 @@
+2016-02-03  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/69628
+	* charset.c (cpp_interpret_charconst): Clear *PCHARS_SEEN
+	and *UNSIGNEDP if bailing out early due to errors.
+
+	* g++.dg/parse/pr69628.C: New test.
+
+--- libcpp/charset.c.jj	2016-01-04 15:14:08.000000000 +0100
++++ libcpp/charset.c	2016-02-03 13:44:05.100120898 +0100
+@@ -1620,10 +1620,17 @@ cpp_interpret_charconst (cpp_reader *pfi
+   if (token->val.str.len == (size_t) (2 + wide + u8))
+     {
+       cpp_error (pfile, CPP_DL_ERROR, "empty character constant");
++      *pchars_seen = 0;
++      *unsignedp = 0;
++      return 0;
++    }
++  else if (!cpp_interpret_string (pfile, &token->val.str, 1, &str,
++				  token->type))
++    {
++      *pchars_seen = 0;
++      *unsignedp = 0;
+       return 0;
+     }
+-  else if (!cpp_interpret_string (pfile, &token->val.str, 1, &str, token->type))
+-    return 0;
+ 
+   if (wide)
+     result = wide_str_to_charconst (pfile, str, pchars_seen, unsignedp,
+--- gcc/testsuite/g++.dg/parse/pr69628.C.jj	2016-02-03 13:47:55.300061110 +0100
++++ gcc/testsuite/g++.dg/parse/pr69628.C	2016-02-03 13:47:32.000000000 +0100
+@@ -0,0 +1,5 @@
++// PR c++/69628
++// { dg-do compile }
++
++0''; // { dg-error "empty character constant" }
++// { dg-error "expected unqualified-id before numeric constant" "" { target *-*-* } 4 }

diff --git a/gcc6-pr69658.patch b/gcc6-pr69658.patch
new file mode 100644
index 0000000..781e873
--- /dev/null
+++ b/gcc6-pr69658.patch
@@ -0,0 +1,41 @@
+2016-02-04  Jakub Jelinek  <jakub@redhat.com>
+
+	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/gcc6-pr69691.patch b/gcc6-pr69691.patch
new file mode 100644
index 0000000..528931b
--- /dev/null
+++ b/gcc6-pr69691.patch
@@ -0,0 +1,149 @@
+2016-02-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR rtl-optimization/69691
+	* lra-eliminations.c (move_plus_up): Don't add the addend twice.
+
+	* gcc.c-torture/execute/pr69691.c: New test.
+
+--- gcc/lra-eliminations.c.jj	2016-01-14 20:57:03.000000000 +0100
++++ gcc/lra-eliminations.c	2016-02-05 16:54:42.142004224 +0100
+@@ -303,7 +303,8 @@ move_plus_up (rtx x)
+ 				 subreg_lowpart_offset (x_mode,
+ 							subreg_reg_mode));
+       if (cst && CONSTANT_P (cst))
+-	return gen_rtx_PLUS (x_mode, lowpart_subreg (x_mode, subreg_reg,
++	return gen_rtx_PLUS (x_mode, lowpart_subreg (x_mode,
++						     XEXP (subreg_reg, 0),
+ 						     subreg_reg_mode), cst);
+     }
+   return x;
+--- gcc/testsuite/gcc.c-torture/execute/pr69691.c.jj	2016-02-05 17:08:31.582557031 +0100
++++ gcc/testsuite/gcc.c-torture/execute/pr69691.c	2016-02-05 17:08:24.000000000 +0100
+@@ -0,0 +1,127 @@
++/* PR rtl-optimization/69691 */
++
++char u[] = { 46, 97, 99, 104, 52, 0 };
++char *v[] = { u, 0 };
++struct S { char a[10]; struct S *b[31]; };
++struct S r[7], *r2 = r;
++static struct S *w = 0;
++
++__attribute__((noinline, noclone)) int
++fn (int x)
++{
++  if (__builtin_strchr (u, x) || x == 96)
++    return x;
++  __builtin_abort ();
++}
++
++__attribute__((noinline, noclone)) int
++foo (char x)
++{
++  if (x == 0)
++    __builtin_abort ();
++  if (fn (x) >= 96 && fn (x) <= 122)
++    return (fn (x) - 96);
++  else if (x == 46)
++    return 0;
++  else
++    {
++      __builtin_printf ("foo %d\n", x);
++      return -1;
++    }
++}
++
++__attribute__((noinline, noclone)) void
++bar (char **x)
++{
++  char **b, c, *d, e[500], *f, g[10];
++  int z, l, h, i;
++  struct S *s;
++
++  w = r2++;
++  for (b = x; *b; b++)
++    {
++      __builtin_strcpy (e, *b);
++      f = e;
++      do
++	{
++	  d = __builtin_strchr (f, 32);
++	  if (d)
++	    *d = 0;
++	  l = __builtin_strlen (f);
++	  h = 0;
++	  s = w;
++	  __builtin_memset (g, 0, sizeof (g));
++	  for (z = 0; z < l; z++)
++	    {
++	      c = f[z];
++	      if (c >= 48 && c <= 57)
++		g[h] = c - 48;
++	      else
++		{
++		  i = foo (c);
++		  if (!s->b[i])
++		    {
++		      s->b[i] = r2++;
++		      if (r2 == &r[7])
++			__builtin_abort ();
++		    }
++		  s = s->b[i];
++		  h++;
++		}
++	    }
++	  __builtin_memcpy (s->a, g, 10);
++	  if (d)
++	    f = d + 1;
++	}
++      while (d);
++    }
++}
++
++__attribute__((noinline, noclone)) void
++baz (char *x)
++{
++  char a[300], b[300];
++  int z, y, t, l;
++  struct S *s;
++
++  l = __builtin_strlen (x);
++  *a = 96;
++  for (z = 0; z < l; z++)
++    {
++      a[z + 1] = fn ((unsigned int) x[z]);
++      if (foo (a[z + 1]) <= 0)
++	return;
++    }
++  a[l + 1] = 96;
++  l += 2;
++  __builtin_memset (b, 0, l + 2);
++
++  if (!w)
++    return;
++
++  for (z = 0; z < l; z++)
++    {
++      s = w;
++      for (y = z; y < l; y++)
++	{
++	  s = s->b[foo (a[y])];
++	  if (!s)
++	    break;
++	  for (t = 0; t <= y - z + 2; t++)
++	    if (s->a[t] > b[z + t])
++	      b[z + t] = s->a[t];
++	}
++    }
++  for (z = 3; z < l - 2; z++)
++    if ((b[z] & 1) == 1)
++     asm ("");
++}
++
++int
++main ()
++{
++  bar (v);
++  char c[] = { 97, 97, 97, 97, 97, 0 };
++  baz (c);
++  return 0;
++}

diff --git a/sources b/sources
index 12fef62..9b4ccae 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-a5ea3b53e3c52e684097d088f7d9a565  gcc-6.0.0-20160201.tar.bz2
+8f3f950e75ddde6b87c71096c645efb8  gcc-6.0.0-20160205.tar.bz2

             reply	other threads:[~2026-06-29 12:27 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-29 12:27 Jakub Jelinek [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-06-29 12:27 [rpms/gcc] rhel-f41-base: 6.0.0-0.10 Jakub Jelinek
2026-06-29 12:27 Jakub Jelinek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178273602201.1.15094387518825383677.rpms-gcc-97475d9eac9d@fedoraproject.org \
    --to=jakub@redhat.com \
    --cc=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox