[gcc-6] 296/401: * Update to SVN 20161123 (r242770, 6.2.1) from the gcc-6-branch.
Ximin Luo
infinity0 at debian.org
Wed Apr 5 15:50:09 UTC 2017
This is an automated email from the git hooks/post-receive script.
infinity0 pushed a commit to branch pu/reproducible_builds
in repository gcc-6.
commit c4ee7ff2f2ca5b1e53de0bb810c60441f9a40a99
Author: doko <doko at 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>
Date: Wed Nov 23 18:05:13 2016 +0000
* Update to SVN 20161123 (r242770, 6.2.1) from the gcc-6-branch.
git-svn-id: svn://anonscm.debian.org/gcccvs/branches/sid/gcc-6@9128 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
---
debian/changelog | 11 +-
debian/patches/svn-updates.diff | 770 ++++++++++++++++++++++++++++++++++++++--
2 files changed, 744 insertions(+), 37 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index 7f6251c..2b25c38 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,13 +1,16 @@
-gcc-6 (6.2.1-5) UNRELEASED; urgency=medium
+gcc-6 (6.2.1-4.2) UNRELEASED; urgency=medium
- * Update to SVN 20161122 (r242728, 6.2.1) from the gcc-6-branch.
- - Fix PR target/77822 (AArch64), PR fortran/58001, PR fortran/69741.
+ * Update to SVN 20161123 (r242770, 6.2.1) from the gcc-6-branch.
+ - Fix PR target/77822 (AArch64), PR fortran/58001, PR fortran/69741,
+ PR libstdc++/78490, PR lto/78472, PR middle-end/78305,
+ PR middle-end/78333, PR tree-optimization/78228, PR middle-end/78185,
+ PR tree-optimization/77855, PR fortran/66227.
* Don't apply the ada patches for stage builds.
* Add pkg-config to the build dependencies.
* Drop the work around for PR libstdc++/65913.
* gdc: Link with the shared libgphobos runtime by default. Closes: #845377.
- -- Matthias Klose <doko at debian.org> Sun, 20 Nov 2016 17:12:08 +0100
+ -- Matthias Klose <doko at debian.org> Wed, 23 Nov 2016 18:25:55 +0100
gcc-6 (6.2.1-4) unstable; urgency=medium
diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff
index 626f9c6..7bf72c6 100644
--- a/debian/patches/svn-updates.diff
+++ b/debian/patches/svn-updates.diff
@@ -1,10 +1,10 @@
-# DP: updates from the 6 branch upto 20161122 (r242728).
+# DP: updates from the 6 branch upto 20161123 (r242770).
last_update()
{
cat > ${dir}LAST_UPDATED <EOF
-Wed Nov 23 00:28:43 CET 2016
-Tue Nov 22 23:28:43 UTC 2016 (revision 242728)
+Wed Nov 23 18:13:35 CET 2016
+Wed Nov 23 17:13:35 UTC 2016 (revision 242770)
EOF
}
@@ -1518,6 +1518,22 @@ Index: libstdc++-v3/include/experimental/propagate_const
private:
template <typename _Up>
+@@ -153,6 +154,7 @@
+ constexpr propagate_const& operator=(propagate_const<_Up>&& __pu)
+ {
+ _M_t = std::move(get_underlying(__pu));
++ return *this;
+ }
+
+ template <typename _Up, typename =
+@@ -163,6 +165,7 @@
+ constexpr propagate_const& operator=(_Up&& __u)
+ {
+ _M_t = std::forward<_Up>(__u);
++ return *this;
+ }
+
+ // [propagate_const.const_observers], const observers
Index: libstdc++-v3/include/experimental/chrono
===================================================================
--- a/src/libstdc++-v3/include/experimental/chrono (.../tags/gcc_6_2_0_release)
@@ -2697,7 +2713,26 @@ Index: libstdc++-v3/ChangeLog
===================================================================
--- a/src/libstdc++-v3/ChangeLog (.../tags/gcc_6_2_0_release)
+++ b/src/libstdc++-v3/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,468 @@
+@@ -1,3 +1,487 @@
++2016-11-23 Jonathan Wakely <jwakely at redhat.com>
++
++ * testsuite/24_iterators/reverse_iterator/71771.cc: Replace calls to
++ C++14 std::rbeing and std::rend. Use dg-options instead of
++ effective-target.
++ * testsuite/27_io/headers/cstdio/functions_neg.cc: Use dg-options
++ instead of effective-target.
++ * testsuite/experimental/numeric/77801.cc: Likewise.
++
++2016-11-23 Felix Morgner <felix.morgner at gmail.com>
++ Jonathan Wakely <jwakely at redhat.com>
++
++ PR libstdc++/78490
++ * include/experimental/propagate_const (propagate_const::operator=):
++ Add missing return statements.
++ * testsuite/experimental/propagate_const/assignment/move_neg.cc:
++ Adjust dg-error line numbers.
++ * testsuite/experimental/propagate_const/requirements2.cc: Likewise.
++
+2016-11-22 Uros Bizjak <ubizjak at gmail.com>
+
+ * testsuite/Makefile.am
@@ -3170,7 +3205,7 @@ Index: libstdc++-v3/testsuite/24_iterators/reverse_iterator/71771.cc
===================================================================
--- a/src/libstdc++-v3/testsuite/24_iterators/reverse_iterator/71771.cc (.../tags/gcc_6_2_0_release)
+++ b/src/libstdc++-v3/testsuite/24_iterators/reverse_iterator/71771.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,43 @@
+@@ -0,0 +1,46 @@
+// Copyright (C) 2016 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
@@ -3188,7 +3223,8 @@ Index: libstdc++-v3/testsuite/24_iterators/reverse_iterator/71771.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+// { dg-do compile { target c++11 } }
++// { dg-options "-std=gnu++11" }
++// { dg-do compile }
+
+#include <iterator>
+#include <testsuite_iterators.h>
@@ -3212,7 +3248,9 @@ Index: libstdc++-v3/testsuite/24_iterators/reverse_iterator/71771.cc
+ int i[2];
+ __gnu_test::test_container<int, __gnu_test::bidirectional_iterator_wrapper>
+ c(i);
-+ diff2(std::rbegin(c), std::rend(c));
++ using reverse_iterator
++ = std::reverse_iterator<__gnu_test::bidirectional_iterator_wrapper<int>>;
++ diff2(reverse_iterator(c.end()), reverse_iterator(c.begin()));
+}
Index: libstdc++-v3/testsuite/Makefile.in
===================================================================
@@ -3497,8 +3535,9 @@ Index: libstdc++-v3/testsuite/27_io/headers/cstdio/functions_neg.cc
===================================================================
--- a/src/libstdc++-v3/testsuite/27_io/headers/cstdio/functions_neg.cc (.../tags/gcc_6_2_0_release)
+++ b/src/libstdc++-v3/testsuite/27_io/headers/cstdio/functions_neg.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,25 @@
-+// { dg-do compile { target c++14 } }
+@@ -0,0 +1,26 @@
++// { dg-options "-std=gnu++14" }
++// { dg-do compile }
+
+// Copyright (C) 2007-2016 Free Software Foundation, Inc.
+//
@@ -4706,7 +4745,7 @@ Index: libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.c
using std::unique_ptr;
-// { dg-error "no type" "" { target *-*-* } 158 }
-+// { dg-error "no type" "" { target *-*-* } 159 }
++// { dg-error "no type" "" { target *-*-* } 160 }
int main()
{
@@ -4759,8 +4798,8 @@ Index: libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc
-// { dg-error "forming pointer to reference type" "" { target *-*-* } 210 }
+// { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 105 }
+// { dg-error "not a pointer-to-object type" "" { target *-*-* } 66 }
-+// { dg-error "forming pointer to reference type" "" { target *-*-* } 185 }
-+// { dg-error "forming pointer to reference type" "" { target *-*-* } 211 }
++// { dg-error "forming pointer to reference type" "" { target *-*-* } 187 }
++// { dg-error "forming pointer to reference type" "" { target *-*-* } 213 }
propagate_const<void*> test1;
Index: libstdc++-v3/testsuite/experimental/propagate_const/observers/1.cc
@@ -4961,7 +5000,7 @@ Index: libstdc++-v3/testsuite/experimental/numeric/77801.cc
===================================================================
--- a/src/libstdc++-v3/testsuite/experimental/numeric/77801.cc (.../tags/gcc_6_2_0_release)
+++ b/src/libstdc++-v3/testsuite/experimental/numeric/77801.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,22 @@
+@@ -0,0 +1,23 @@
+// Copyright (C) 2016 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
@@ -4979,7 +5018,8 @@ Index: libstdc++-v3/testsuite/experimental/numeric/77801.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+// { dg-do compile { target c++14 } }
++// { dg-options "-std=gnu++14" }
++// { dg-do compile }
+
+#include <cstdlib>
+#include <experimental/numeric>
@@ -6399,6 +6439,37 @@ Index: gcc/tree-vrp.c
}
static void
+Index: gcc/tree-ssa-loop-im.c
+===================================================================
+--- a/src/gcc/tree-ssa-loop-im.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/tree-ssa-loop-im.c (.../branches/gcc-6-branch)
+@@ -44,6 +44,7 @@
+ #include "trans-mem.h"
+ #include "gimple-fold.h"
+ #include "tree-scalar-evolution.h"
++#include "tree-ssa-loop-niter.h"
+
+ /* TODO: Support for predicated code motion. I.e.
+
+@@ -2348,8 +2349,16 @@
+ break;
+
+ FOR_EACH_EDGE (e, ei, bb->succs)
+- if (!flow_bb_inside_loop_p (loop, e->dest))
+- break;
++ {
++ /* If there is an exit from this BB. */
++ if (!flow_bb_inside_loop_p (loop, e->dest))
++ break;
++ /* Or we enter a possibly non-finite loop. */
++ if (flow_loop_nested_p (bb->loop_father,
++ e->dest->loop_father)
++ && ! finite_loop_p (e->dest->loop_father))
++ break;
++ }
+ if (e)
+ break;
+
Index: gcc/tree-ssa-tail-merge.c
===================================================================
--- a/src/gcc/tree-ssa-tail-merge.c (.../tags/gcc_6_2_0_release)
@@ -6632,7 +6703,7 @@ Index: gcc/DATESTAMP
+++ b/src/gcc/DATESTAMP (.../branches/gcc-6-branch)
@@ -1 +1 @@
-20160822
-+20161122
++20161123
Index: gcc/tree.c
===================================================================
--- a/src/gcc/tree.c (.../tags/gcc_6_2_0_release)
@@ -6708,6 +6779,24 @@ Index: gcc/tree.c
/* Make fixed-point nodes based on sat/non-sat and signed/unsigned. */
#define MAKE_FIXED_TYPE_NODE(KIND,SIZE) \
+@@ -13495,10 +13506,14 @@
+ f1 || f2;
+ f1 = TREE_CHAIN (f1), f2 = TREE_CHAIN (f2))
+ {
+- /* Skip non-fields. */
+- while (f1 && TREE_CODE (f1) != FIELD_DECL)
++ /* Skip non-fields and zero-sized fields. */
++ while (f1 && (TREE_CODE (f1) != FIELD_DECL
++ || (DECL_SIZE (f1)
++ && integer_zerop (DECL_SIZE (f1)))))
+ f1 = TREE_CHAIN (f1);
+- while (f2 && TREE_CODE (f2) != FIELD_DECL)
++ while (f2 && (TREE_CODE (f2) != FIELD_DECL
++ || (DECL_SIZE (f2)
++ && integer_zerop (DECL_SIZE (f2)))))
+ f2 = TREE_CHAIN (f2);
+ if (!f1 || !f2)
+ break;
Index: gcc/tree.h
===================================================================
--- a/src/gcc/tree.h (.../tags/gcc_6_2_0_release)
@@ -6782,6 +6871,23 @@ Index: gcc/fold-const.c
===================================================================
--- a/src/gcc/fold-const.c (.../tags/gcc_6_2_0_release)
+++ b/src/gcc/fold-const.c (.../branches/gcc-6-branch)
+@@ -458,13 +458,13 @@
+ if (TYPE_UNSIGNED (type))
+ break;
+ /* INT_MIN/n * n doesn't overflow while negating one operand it does
+- if n is a power of two. */
++ if n is a (negative) power of two. */
+ if (INTEGRAL_TYPE_P (TREE_TYPE (t))
+ && ! TYPE_OVERFLOW_WRAPS (TREE_TYPE (t))
+ && ! ((TREE_CODE (TREE_OPERAND (t, 0)) == INTEGER_CST
+- && ! integer_pow2p (TREE_OPERAND (t, 0)))
++ && wi::popcount (wi::abs (TREE_OPERAND (t, 0))) != 1)
+ || (TREE_CODE (TREE_OPERAND (t, 1)) == INTEGER_CST
+- && ! integer_pow2p (TREE_OPERAND (t, 1)))))
++ && wi::popcount (wi::abs (TREE_OPERAND (t, 1))) != 1)))
+ break;
+
+ /* Fall through. */
@@ -837,15 +837,16 @@
var = negate_expr (var);
}
@@ -7028,7 +7134,66 @@ Index: gcc/ChangeLog
===================================================================
--- a/src/gcc/ChangeLog (.../tags/gcc_6_2_0_release)
+++ b/src/gcc/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,841 @@
+@@ -1,3 +1,900 @@
++2016-11-23 Richard Biener <rguenther at suse.de>
++
++ Backport from mainline
++ 2016-11-23 Richard Biener <rguenther at suse.de>
++
++ PR lto/78472
++ * tree.c (gimple_canonical_types_compatible_p): Ignore zero-sized
++ fields.
++
++ 2016-11-17 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/78305
++ * fold-const.c (negate_expr_p): Fix multiplication case.
++
++ 2016-11-16 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/78333
++ * gimplify.c (gimplify_function_tree): Do not instrument
++ GNU extern inline functions.
++
++ 2016-11-07 Richard Biener <rguenther at suse.de>
++
++ PR tree-optimization/78228
++ * tree-ssa-phiopt.c (abs_replacement): Avoid introducing
++ undefined behavior.
++
++ 2016-11-04 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/78185
++ * loop-invariant.c (find_exits): Record entering inner
++ loops as possibly exiting to handle infinite sub-loops.
++ * tree-ssa-loop-im.c: Include tree-ssa-loop-niter.h.
++ (fill_always_executed_in_1): Honor infinite child loops.
++
++ 2016-10-06 Richard Biener <rguenther at suse.de>
++
++ PR tree-optimization/77855
++ * tree-ssa-pre.c (prune_clobbered_mems): Queue exprs to remove
++ instead of removing the current item while iterating over the set
++ which is not safe.
++
++2016-11-22 Walter Lee <walt at tilera.com>
++
++ Backport from mainline
++ 2016-11-22 Walter Lee <walt at tilera.com>
++
++ * config/tilegx/tilegx.md (trap): New pattern.
++ * config/tilepro/tilepro.md (trap): Likewise.
++
++2016-11-22 Walter Lee <walt at tilera.com>
++
++ Backport from mainline
++ 2016-11-22 Walter Lee <walt at tilera.com>
++
++ * config/tilegx/tilegx.md (*zero_extract): Use
++ define_insn_and_split instead of define_insn; Handle pos + size >
++ 64.
++ (*sign_extract): Likewise.
++
+2016-11-22 Uros Bizjak <ubizjak at gmail.com>
+
+ * Makefile.in ($(lang_checks_parallelized)): Fix detection
@@ -7870,7 +8035,7 @@ Index: gcc/ChangeLog
2016-08-22 Release Manager
* GCC 6.2.0 released.
-@@ -205,9 +1043,9 @@
+@@ -205,9 +1102,9 @@
2016-08-09 Martin Jambor <mjambor at suse.cz>
@@ -10296,6 +10461,91 @@ Index: gcc/testsuite/gfortran.dg/pr77420_3.f90
+ equivalence(h5p_flags, h5p_default_f)
+end module h5global
+! { dg-final { cleanup-modules "h5global" } }
+Index: gcc/testsuite/gfortran.dg/extends_type_of_3.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/extends_type_of_3.f90 (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/extends_type_of_3.f90 (.../branches/gcc-6-branch)
+@@ -3,9 +3,7 @@
+ !
+ ! PR fortran/41580
+ !
+-! Compile-time simplification of SAME_TYPE_AS
+-! and EXTENDS_TYPE_OF.
+-!
++! Compile-time simplification of SAME_TYPE_AS and EXTENDS_TYPE_OF.
+
+ implicit none
+ type t1
+@@ -37,6 +35,8 @@
+
+ if (p1 .or. p2 .or. p3 .or. p4 .or. .not. p5 .or. .not. p6) call should_not_exist()
+
++if (same_type_as(b1,b1) .neqv. .true.) call should_not_exist()
++
+ ! Not (trivially) compile-time simplifiable:
+ if (same_type_as(b1,a1) .neqv. .true.) call abort()
+ if (same_type_as(b1,a11) .neqv. .false.) call abort()
+@@ -49,6 +49,7 @@
+ if (same_type_as(b1,a11) .neqv. .true.) call abort()
+ deallocate(b1)
+
++
+ ! .true. -> same type
+ if (extends_type_of(a1,a1) .neqv. .true.) call should_not_exist()
+ if (extends_type_of(a11,a11) .neqv. .true.) call should_not_exist()
+@@ -78,33 +79,47 @@
+ ! type extension possible, compile-time checkable
+ if (extends_type_of(a1,a11) .neqv. .false.) call should_not_exist()
+ if (extends_type_of(a11,a1) .neqv. .true.) call should_not_exist()
+-if (extends_type_of(a1,a11) .neqv. .false.) call should_not_exist()
+
+ if (extends_type_of(b1,a1) .neqv. .true.) call should_not_exist()
+ if (extends_type_of(b11,a1) .neqv. .true.) call should_not_exist()
+ if (extends_type_of(b11,a11) .neqv. .true.) call should_not_exist()
+-if (extends_type_of(b1,a11) .neqv. .false.) call should_not_exist()
+
+-if (extends_type_of(a1,b11) .neqv. .false.) call abort()
++if (extends_type_of(a1,b11) .neqv. .false.) call should_not_exist()
+
++
+ ! Special case, simplified at tree folding:
+ if (extends_type_of(b1,b1) .neqv. .true.) call abort()
+
+ ! All other possibilities are not compile-time checkable
+ if (extends_type_of(b11,b1) .neqv. .true.) call abort()
+-!if (extends_type_of(b1,b11) .neqv. .false.) call abort() ! FAILS due to PR 47189
++if (extends_type_of(b1,b11) .neqv. .false.) call abort()
+ if (extends_type_of(a11,b11) .neqv. .true.) call abort()
++
+ allocate(t11 :: b11)
+ if (extends_type_of(a11,b11) .neqv. .true.) call abort()
+ deallocate(b11)
++
+ allocate(t111 :: b11)
+ if (extends_type_of(a11,b11) .neqv. .false.) call abort()
+ deallocate(b11)
++
+ allocate(t11 :: b1)
+ if (extends_type_of(a11,b1) .neqv. .true.) call abort()
+ deallocate(b1)
+
++allocate(t11::b1)
++if (extends_type_of(b1,a11) .neqv. .true.) call abort()
++deallocate(b1)
++
++allocate(b1,source=a11)
++if (extends_type_of(b1,a11) .neqv. .true.) call abort()
++deallocate(b1)
++
++allocate( b1,source=a1)
++if (extends_type_of(b1,a11) .neqv. .false.) call abort()
++deallocate(b1)
++
+ end
+
+-! { dg-final { scan-tree-dump-times "abort" 13 "original" } }
++! { dg-final { scan-tree-dump-times "abort" 16 "original" } }
+ ! { dg-final { scan-tree-dump-times "should_not_exist" 0 "original" } }
Index: gcc/testsuite/gfortran.dg/c_assoc_2.f03
===================================================================
--- a/src/gcc/testsuite/gfortran.dg/c_assoc_2.f03 (.../tags/gcc_6_2_0_release)
@@ -11606,6 +11856,20 @@ Index: gcc/testsuite/gcc.dg/pr70955.c
+
+ return 0;
+}
+Index: gcc/testsuite/gcc.dg/pr78333.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr78333.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/pr78333.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,9 @@
++/* { dg-do link } */
++/* { dg-options "-finstrument-functions" } */
++
++extern inline __attribute__((gnu_inline, always_inline)) int foo () { }
++int main()
++{
++ foo ();
++ return 0;
++}
Index: gcc/testsuite/gcc.dg/init-excess-2.c
===================================================================
--- a/src/gcc/testsuite/gcc.dg/init-excess-2.c (.../tags/gcc_6_2_0_release)
@@ -11710,6 +11974,39 @@ Index: gcc/testsuite/gcc.dg/lto/pr70955_1.c
+ __builtin_ms_va_end (ap);
+ return sum;
+}
+Index: gcc/testsuite/gcc.dg/pr78185.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr78185.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/pr78185.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,28 @@
++/* { dg-do run { target *-*-linux* *-*-gnu* } } */
++/* { dg-options "-O" } */
++
++#include <unistd.h>
++#include <signal.h>
++#include <stdlib.h>
++
++static char var1 = 0L;
++static char *var2 = &var1;
++
++void do_exit (int i)
++{
++ exit (0);
++}
++
++int main(void)
++{
++ struct sigaction s;
++ sigemptyset (&s.sa_mask);
++ s.sa_handler = do_exit;
++ s.sa_flags = 0;
++ sigaction (SIGALRM, &s, NULL);
++ alarm (1);
++ /* The following loop is infinite, the division by zero should not
++ be hoisted out of it. */
++ for (; (var1 == 0 ? 0 : (100 / var1)) == *var2; );
++ return 0;
++}
Index: gcc/testsuite/gcc.dg/torture/pr77916.c
===================================================================
--- a/src/gcc/testsuite/gcc.dg/torture/pr77916.c (.../tags/gcc_6_2_0_release)
@@ -11797,6 +12094,78 @@ Index: gcc/testsuite/gcc.dg/torture/pr72851.c
+ for (i = 0; i < 16; i++)
+ K[i] = shuffle(CDn, PC2_shuffle, sizeof(PC2_shuffle));
+}
+Index: gcc/testsuite/gcc.dg/torture/pr77855.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr77855.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr77855.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,48 @@
++/* { dg-do run } */
++
++int a, b = 1, c, e, f, g, k, m, n, o;
++char d, h, i, j, l;
++char res[2];
++
++void __attribute__ ((noinline,noclone)) fn2 ()
++{
++ d = 2;
++}
++
++void fn3 ()
++{
++ for (;;)
++ {
++ for (; b; b--)
++ {
++ fn2 ();
++ if (e)
++ j = 1;
++ if (f)
++ L1:
++ k = j | (a & l);
++ for (;;)
++ {
++ __builtin_snprintf (res, 2, "%d\n", d);
++ if (d)
++ break;
++ for (; o; o--)
++ for (; n;)
++ for (; m; m++)
++ ;
++ goto L1;
++ }
++ }
++ g = h;
++ c = i;
++ break;
++ }
++}
++
++int main ()
++{
++ fn3 ();
++ if (res[0] != '2')
++ __builtin_abort ();
++ return 0;
++}
+Index: gcc/testsuite/gcc.dg/torture/pr78305.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr78305.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr78305.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,14 @@
++/* { dg-require-effective-target int32plus } */
++/* { dg-do run } */
++
++int main ()
++{
++ int a = 2;
++ int b = 1;
++
++ int t = -1 * ( -0x40000000 * a / ( -0x20000000 + b ) ) / -1;
++
++ if (t != 4) __builtin_abort();
++
++ return 0;
++}
Index: gcc/testsuite/gcc.dg/torture/pr77839.c
===================================================================
--- a/src/gcc/testsuite/gcc.dg/torture/pr77839.c (.../tags/gcc_6_2_0_release)
@@ -12033,6 +12402,23 @@ Index: gcc/testsuite/gcc.dg/dg-test-1.c
+bar (int e, int f, int g, int h)/* { dg-warning "unused parameter 'g'" "warn3" { target *-*-* } . } */
+{ /* { dg-warning "unused parameter 'h'" "warn4" { target *-*-* } .-1 } */
+}
+Index: gcc/testsuite/gcc.dg/tree-ssa/phi-opt-15.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-15.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-15.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,12 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-tree-optimized" } */
++
++int
++foo (int i)
++{
++ if (i > 0)
++ i = -i;
++ return i;
++}
++
++/* { dg-final { scan-tree-dump-not "ABS" "optimized" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/update-unroll-1.c
===================================================================
--- a/src/gcc/testsuite/gcc.dg/tree-ssa/update-unroll-1.c (.../tags/gcc_6_2_0_release)
@@ -12279,7 +12665,47 @@ Index: gcc/testsuite/ChangeLog
===================================================================
--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_6_2_0_release)
+++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,787 @@
+@@ -1,3 +1,827 @@
++2016-11-23 Janus Weil <janus at gcc.gnu.org>
++
++ Backport from trunk
++ PR fortran/66227
++ * gfortran.dg/extends_type_of_3.f90: Fix and extend the test case.
++
++2016-11-23 Richard Biener <rguenther at suse.de>
++
++ Backport from mainline
++ 2016-11-23 Richard Biener <rguenther at suse.de>
++
++ PR lto/78472
++ * g++.dg/lto/pr78472_0.c: New testcase.
++ * g++.dg/lto/pr78472_1.C: Likewise.
++
++ 2016-11-17 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/78305
++ * gcc.dg/torture/pr78305.c: New testcase.
++
++ 2016-11-16 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/78333
++ * gcc.dg/pr78333.c: New testcase.
++
++ 2016-11-07 Richard Biener <rguenther at suse.de>
++
++ PR tree-optimization/78228
++ * gcc.dg/tree-ssa/phi-opt-15.c: New testcase.
++
++ 2016-11-04 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/78185
++ * gcc.dg/pr78185.c: New testcase.
++
++ 2016-10-06 Richard Biener <rguenther at suse.de>
++
++ PR tree-optimization/77855
++ * gcc.dg/torture/pr77855.c: New testcase.
++
+2016-11-22 Steven G. Kargl <kargl at gcc.gnu.org>
+
+ PR fortran/58001
@@ -13067,7 +13493,7 @@ Index: gcc/testsuite/ChangeLog
2016-08-22 Release Manager
* GCC 6.2.0 released.
-@@ -150,8 +934,8 @@
+@@ -150,8 +974,8 @@
2016-08-09 Martin Jambor <mjambor at suse.cz>
@@ -13078,7 +13504,7 @@ Index: gcc/testsuite/ChangeLog
2016-08-09 Richard Biener <rguenther at suse.de>
-@@ -276,8 +1060,8 @@
+@@ -276,8 +1100,8 @@
2016-07-20 Martin Jambor <mjambor at suse.cz>
@@ -13089,7 +13515,7 @@ Index: gcc/testsuite/ChangeLog
2016-07-19 Jakub Jelinek <jakub at redhat.com>
-@@ -418,7 +1202,7 @@
+@@ -418,7 +1242,7 @@
2016-07-06 Yuri Rumyantsev <ysrumyan at gmail.com>
PR tree-optimization/71518
@@ -13098,7 +13524,7 @@ Index: gcc/testsuite/ChangeLog
2016-07-09 Thomas Koenig <tkoenig at gcc.gnu.org>
-@@ -1639,7 +2423,7 @@
+@@ -1639,7 +2463,7 @@
* g++.dg/cpp1y/vla13.C: Same.
* g++.dg/cpp1y/vla14.C: Same.
* g++.dg/cpp1y/vla3.C: Same.
@@ -13107,7 +13533,7 @@ Index: gcc/testsuite/ChangeLog
* g++.dg/ubsan/vla-1.C: Same.
2016-04-14 Marek Polacek <polacek at redhat.com>
-@@ -1671,7 +2455,7 @@
+@@ -1671,7 +2495,7 @@
* g++.dg/cpp1y/vla13.C: New test.
* g++.dg/cpp1y/vla14.C: New test.
* g++.dg/cpp1y/vla3.C: Restore deleted test.
@@ -13116,7 +13542,7 @@ Index: gcc/testsuite/ChangeLog
* g++.dg/ubsan/vla-1.C: Disable exceptions.
2016-04-13 Jakub Jelinek <jakub at redhat.com>
-@@ -1699,8 +2483,8 @@
+@@ -1699,8 +2523,8 @@
2016-04-13 Marek Polacek <polacek at redhat.com>
PR c/70436
@@ -13127,7 +13553,7 @@ Index: gcc/testsuite/ChangeLog
2016-04-13 Ilya Enkovich <ilya.enkovich at intel.com>
-@@ -1947,7 +2731,7 @@
+@@ -1947,7 +2771,7 @@
2016-04-06 Vladimir Makarov <vmakarov at redhat.com>
PR rtl-optimization/70398
@@ -14364,6 +14790,37 @@ Index: gcc/testsuite/g++.dg/tree-ssa/pr77943.C
+ } catch (...) {
+ }
+}
+Index: gcc/testsuite/g++.dg/lto/pr78472_0.c
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/lto/pr78472_0.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/lto/pr78472_0.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,12 @@
++// { dg-lto-do link }
++
++extern struct S
++{
++ unsigned i:4;
++ unsigned :0;
++} s;
++static void *f(void)
++{
++ return &s;
++}
++int main() {}
+Index: gcc/testsuite/g++.dg/lto/pr78472_1.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/lto/pr78472_1.C (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/lto/pr78472_1.C (.../branches/gcc-6-branch)
+@@ -0,0 +1,9 @@
++struct S
++{
++ unsigned i:4;
++ unsigned :0;
++} s;
++static void *f(void)
++{
++ return &s;
++}
Index: gcc/testsuite/g++.dg/warn/Wplacement-new-size-4.C
===================================================================
--- a/src/gcc/testsuite/g++.dg/warn/Wplacement-new-size-4.C (.../tags/gcc_6_2_0_release)
@@ -17965,7 +18422,14 @@ Index: gcc/fortran/ChangeLog
===================================================================
--- a/src/gcc/fortran/ChangeLog (.../tags/gcc_6_2_0_release)
+++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,285 @@
+@@ -1,3 +1,292 @@
++2016-11-23 Janus Weil <janus at gcc.gnu.org>
++
++ Backport from trunk
++ PR fortran/66227
++ * simplify.c (gfc_simplify_extends_type_of): Fix missed optimization.
++ Prevent over-simplification. Fix a comment. Add a comment.
++
+2016-11-22 Steven G. Kargl <kargl at gcc.gnu.org>
+
+ PR fortran/58001
@@ -19316,7 +19780,41 @@ Index: gcc/fortran/simplify.c
return a;
result = gfc_copy_expr (a);
-@@ -7043,10 +7045,18 @@
+@@ -2371,7 +2373,7 @@
+ if (UNLIMITED_POLY (a) || UNLIMITED_POLY (mold))
+ return NULL;
+
+- /* Return .false. if the dynamic type can never be the same. */
++ /* Return .false. if the dynamic type can never be an extension. */
+ if ((a->ts.type == BT_CLASS && mold->ts.type == BT_CLASS
+ && !gfc_type_is_extension_of
+ (mold->ts.u.derived->components->ts.u.derived,
+@@ -2381,18 +2383,19 @@
+ mold->ts.u.derived->components->ts.u.derived))
+ || (a->ts.type == BT_DERIVED && mold->ts.type == BT_CLASS
+ && !gfc_type_is_extension_of
+- (a->ts.u.derived,
+- mold->ts.u.derived->components->ts.u.derived)
+- && !gfc_type_is_extension_of
+ (mold->ts.u.derived->components->ts.u.derived,
+ a->ts.u.derived))
+ || (a->ts.type == BT_CLASS && mold->ts.type == BT_DERIVED
+ && !gfc_type_is_extension_of
+ (mold->ts.u.derived,
+- a->ts.u.derived->components->ts.u.derived)))
++ a->ts.u.derived->components->ts.u.derived)
++ && !gfc_type_is_extension_of
++ (a->ts.u.derived->components->ts.u.derived,
++ mold->ts.u.derived)))
+ return gfc_get_logical_expr (gfc_default_logical_kind, &a->where, false);
+
+- if (mold->ts.type == BT_DERIVED
++ /* Return .true. if the dynamic type is guaranteed to be an extension. */
++ if (a->ts.type == BT_CLASS && mold->ts.type == BT_DERIVED
+ && gfc_type_is_extension_of (mold->ts.u.derived,
+ a->ts.u.derived->components->ts.u.derived))
+ return gfc_get_logical_expr (gfc_default_logical_kind, &a->where, true);
+@@ -7043,10 +7046,18 @@
gfc_expr *
simplify_ieee_selected_real_kind (gfc_expr *expr)
{
@@ -19454,6 +19952,17 @@ Index: gcc/gimplify.c
return GS_ALL_DONE;
}
}
+@@ -11693,6 +11692,10 @@
+ /* ??? Add some way to ignore exceptions for this TFE. */
+ if (flag_instrument_function_entry_exit
+ && !DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (fndecl)
++ /* Do not instrument extern inline functions. */
++ && !(DECL_DECLARED_INLINE_P (fndecl)
++ && DECL_EXTERNAL (fndecl)
++ && DECL_DISREGARD_INLINE_LIMITS (fndecl))
+ && !flag_instrument_functions_exclude_p (fndecl))
+ {
+ tree x;
Index: gcc/lra-constraints.c
===================================================================
--- a/src/gcc/lra-constraints.c (.../tags/gcc_6_2_0_release)
@@ -19585,6 +20094,25 @@ Index: gcc/lra-constraints.c
if (optional_p)
{
lra_assert (REG_P (op));
+Index: gcc/tree-ssa-phiopt.c
+===================================================================
+--- a/src/gcc/tree-ssa-phiopt.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/tree-ssa-phiopt.c (.../branches/gcc-6-branch)
+@@ -1453,6 +1453,14 @@
+ else
+ negate = false;
+
++ /* If the code negates only iff positive then make sure to not
++ introduce undefined behavior when negating or computing the absolute.
++ ??? We could use range info if present to check for arg1 == INT_MIN. */
++ if (negate
++ && (ANY_INTEGRAL_TYPE_P (TREE_TYPE (arg1))
++ && ! TYPE_OVERFLOW_WRAPS (TREE_TYPE (arg1))))
++ return false;
++
+ result = duplicate_ssa_name (result, NULL);
+
+ if (negate)
Index: gcc/gimple-fold.c
===================================================================
--- a/src/gcc/gimple-fold.c (.../tags/gcc_6_2_0_release)
@@ -19666,7 +20194,49 @@ Index: gcc/tree-ssa-pre.c
/* TODO:
-@@ -2896,7 +2897,24 @@
+@@ -2027,9 +2028,17 @@
+ {
+ bitmap_iterator bi;
+ unsigned i;
++ pre_expr to_remove = NULL;
+
+ FOR_EACH_EXPR_ID_IN_SET (set, i, bi)
+ {
++ /* Remove queued expr. */
++ if (to_remove)
++ {
++ bitmap_remove_from_set (set, to_remove);
++ to_remove = NULL;
++ }
++
+ pre_expr expr = expression_for_id (i);
+ if (expr->kind == REFERENCE)
+ {
+@@ -2043,7 +2052,7 @@
+ block, gimple_bb (def_stmt)))
+ || (gimple_bb (def_stmt) == block
+ && value_dies_in_block_x (expr, block))))
+- bitmap_remove_from_set (set, expr);
++ to_remove = expr;
+ }
+ }
+ else if (expr->kind == NARY)
+@@ -2055,9 +2064,13 @@
+ as the available expression might be after the exit point. */
+ if (BB_MAY_NOTRETURN (block)
+ && vn_nary_may_trap (nary))
+- bitmap_remove_from_set (set, expr);
++ to_remove = expr;
+ }
+ }
++
++ /* Remove queued expr. */
++ if (to_remove)
++ bitmap_remove_from_set (set, to_remove);
+ }
+
+ static sbitmap has_abnormal_preds;
+@@ -2896,7 +2909,24 @@
gimple_seq_discard (forced_stmts);
return folded;
}
@@ -19692,7 +20262,7 @@ Index: gcc/tree-ssa-pre.c
gcc_assert (TREE_CODE (folded) == SSA_NAME);
/* If we have any intermediate expressions to the value sets, add them
-@@ -4207,26 +4225,36 @@
+@@ -4207,26 +4237,36 @@
&& !is_gimple_reg (gimple_assign_lhs (stmt))
&& (TREE_CODE (gimple_assign_rhs1 (stmt)) == SSA_NAME
|| is_gimple_min_invariant (gimple_assign_rhs1 (stmt))))
@@ -19747,7 +20317,7 @@ Index: gcc/tree-ssa-pre.c
}
/* If this is a control statement value numbering left edges
-@@ -4335,6 +4363,15 @@
+@@ -4335,6 +4375,15 @@
lang_hooks.decl_printable_name (fn, 2));
}
gimple_call_set_fndecl (call_stmt, fn);
@@ -19806,11 +20376,51 @@ Index: gcc/explow.c
}
/* If X is a memory reference to a member of an object block, try rewriting
+Index: gcc/loop-invariant.c
+===================================================================
+--- a/src/gcc/loop-invariant.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/loop-invariant.c (.../branches/gcc-6-branch)
+@@ -597,13 +597,17 @@
+
+ FOR_EACH_EDGE (e, ei, body[i]->succs)
+ {
+- if (flow_bb_inside_loop_p (loop, e->dest))
+- continue;
+-
+- bitmap_set_bit (may_exit, i);
+- bitmap_set_bit (has_exit, i);
+- outermost_exit = find_common_loop (outermost_exit,
+- e->dest->loop_father);
++ if (! flow_bb_inside_loop_p (loop, e->dest))
++ {
++ bitmap_set_bit (may_exit, i);
++ bitmap_set_bit (has_exit, i);
++ outermost_exit = find_common_loop (outermost_exit,
++ e->dest->loop_father);
++ }
++ /* If we enter a subloop that might never terminate treat
++ it like a possible exit. */
++ if (flow_loop_nested_p (loop, e->dest->loop_father))
++ bitmap_set_bit (may_exit, i);
+ }
+ continue;
+ }
Index: gcc/lto/lto.c
===================================================================
--- a/src/gcc/lto/lto.c (.../tags/gcc_6_2_0_release)
+++ b/src/gcc/lto/lto.c (.../branches/gcc-6-branch)
-@@ -3099,6 +3099,10 @@
+@@ -372,7 +372,9 @@
+ tree f;
+
+ for (f = TYPE_FIELDS (type), nf = 0; f; f = TREE_CHAIN (f))
+- if (TREE_CODE (f) == FIELD_DECL)
++ if (TREE_CODE (f) == FIELD_DECL
++ && (! DECL_SIZE (f)
++ || ! integer_zerop (DECL_SIZE (f))))
+ {
+ iterative_hash_canonical_type (TREE_TYPE (f), hstate);
+ nf++;
+@@ -3099,6 +3101,10 @@
execute_ipa_pass_list (g->get_passes ()->all_regular_ipa_passes);
@@ -19825,7 +20435,15 @@ Index: gcc/lto/ChangeLog
===================================================================
--- a/src/gcc/lto/ChangeLog (.../tags/gcc_6_2_0_release)
+++ b/src/gcc/lto/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,12 @@
+@@ -1,3 +1,20 @@
++2016-11-23 Richard Biener <rguenther at suse.de>
++
++ Backport from mainline
++ 2016-11-23 Richard Biener <rguenther at suse.de>
++
++ PR lto/78472
++ * lto.c (hash_canonical_type): Ignore zero-sized fields.
++
+2016-11-02 Richard Biener <rguenther at suse.de>
+
+ Backport from mainline
@@ -593184,7 +593802,63 @@ Index: gcc/config/tilegx/tilegx.md
===================================================================
--- a/src/gcc/config/tilegx/tilegx.md (.../tags/gcc_6_2_0_release)
+++ b/src/gcc/config/tilegx/tilegx.md (.../branches/gcc-6-branch)
-@@ -1798,20 +1798,21 @@
+@@ -1237,7 +1237,7 @@
+ "ld<four_s_if_si>_tls\t%0, %1, tls_ie_load(%2)"
+ [(set_attr "type" "X1_2cycle")])
+
+-(define_insn "*zero_extract<mode>"
++(define_insn_and_split "*zero_extract<mode>"
+ [(set (match_operand:I48MODE 0 "register_operand" "=r")
+ (zero_extract:I48MODE
+ (match_operand:I48MODE 1 "reg_or_0_operand" "r")
+@@ -1245,6 +1245,18 @@
+ (match_operand:I48MODE 3 "u6bit_cint_operand" "n")))]
+ ""
+ "bfextu\t%0, %r1, %3, %3+%2-1"
++ "&& reload_completed"
++ [(set (match_dup 0) (zero_extract:I48MODE
++ (match_dup 1)
++ (match_dup 2)
++ (match_dup 3)))]
++{
++ HOST_WIDE_INT bit_width = INTVAL (operands[2]);
++ HOST_WIDE_INT bit_offset = INTVAL (operands[3]);
++
++ if (bit_offset + bit_width > 64)
++ operands[2] = GEN_INT (64 - bit_offset);
++}
+ [(set_attr "type" "X0")])
+
+ (define_insn "*sign_extract_low32"
+@@ -1256,7 +1268,7 @@
+ "INTVAL (operands[3]) == 0 && INTVAL (operands[2]) == 32"
+ "addxi\t%0, %r1, 0")
+
+-(define_insn "*sign_extract"
++(define_insn_and_split "*sign_extract"
+ [(set (match_operand:I48MODE 0 "register_operand" "=r")
+ (sign_extract:I48MODE
+ (match_operand:I48MODE 1 "reg_or_0_operand" "r")
+@@ -1264,6 +1276,18 @@
+ (match_operand:I48MODE 3 "u6bit_cint_operand" "n")))]
+ ""
+ "bfexts\t%0, %r1, %3, %3+%2-1"
++ "&& reload_completed"
++ [(set (match_dup 0) (sign_extract:I48MODE
++ (match_dup 1)
++ (match_dup 2)
++ (match_dup 3)))]
++{
++ HOST_WIDE_INT bit_width = INTVAL (operands[2]);
++ HOST_WIDE_INT bit_offset = INTVAL (operands[3]);
++
++ if (bit_offset + bit_width > 64)
++ operands[2] = GEN_INT (64 - bit_offset);
++}
+ [(set_attr "type" "X0")])
+
+
+@@ -1798,20 +1822,21 @@
[(set_attr "type" "Y0")])
(define_expand "clzsi2"
@@ -593219,6 +593893,19 @@ Index: gcc/config/tilegx/tilegx.md
(define_insn "ctz<mode>2"
[(set (match_operand:I48MODE 0 "register_operand" "=r")
(ctz:I48MODE (match_operand:DI 1 "reg_or_0_operand" "rO")))]
+@@ -2748,6 +2773,12 @@
+ "nop"
+ [(set_attr "type" "Y01")])
+
++(define_insn "trap"
++ [(trap_if (const_int 1) (const_int 0))]
++ ""
++ "raise; moveli zero, 6"
++ [(set_attr "type" "cannot_bundle")])
++
+
+ ;;
+ ;; Conditional branches
Index: gcc/config/tilegx/tilegx.c
===================================================================
--- a/src/gcc/config/tilegx/tilegx.c (.../tags/gcc_6_2_0_release)
@@ -593527,6 +594214,23 @@ Index: gcc/config/rs6000/rs6000.md
[(set_attr "type" "vecmove")])
+Index: gcc/config/tilepro/tilepro.md
+===================================================================
+--- a/src/gcc/config/tilepro/tilepro.md (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/config/tilepro/tilepro.md (.../branches/gcc-6-branch)
+@@ -1578,6 +1578,12 @@
+ "nop"
+ [(set_attr "type" "Y01")])
+
++(define_insn "trap"
++ [(trap_if (const_int 1) (const_int 0))]
++ ""
++ "raise; moveli zero, 6"
++ [(set_attr "type" "cannot_bundle")])
++
+
+ ;;
+ ;; Conditional branches
Index: gcc/config/arm/arm.c
===================================================================
--- a/src/gcc/config/arm/arm.c (.../tags/gcc_6_2_0_release)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/gcc-6.git
More information about the Reproducible-commits
mailing list