Merge branch 'autopar_rebase2' into autopar_devel

Quickly commit changes in the rebase branch.
diff --git a/.gitignore b/.gitignore
index d9d3967..d9eeaf2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,6 +36,7 @@
 .lvimrc
 
 .clang-format
+.clang-tidy
 .clangd
 compile_commands.json
 
diff --git a/ChangeLog b/ChangeLog
index a7fcf77..47b09e6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,46 @@
+2020-08-16  Sergei Trofimovich  <slyfox@gcc.gnu.org>
+
+	* MAINTAINERS (Write After Approval): Add myself.
+
+2020-08-12  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
+
+	* MAINTAINERS: Update my email address.
+
+2020-07-30  Joe Ramsay  <joe.ramsay@arm.com>
+
+	* MAINTAINERS (Write After Approval): Add myself.
+
+2020-07-22  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+
+	* MAINTAINERS (Write After Approval): Add myself.
+
+2020-06-12  Martin Liska  <mliska@suse.cz>
+
+	* .gitignore: Add .clang-tidy.
+
+2020-06-08  Jason Merrill  <jason@redhat.com>
+
+	* configure.ac: Check AX_CXX_COMPILE_STDCXX if not bootstrapping.
+	* configure: Regenerate.
+
+2020-06-06  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* MAINTAINERS: Add myself as xtensa port maintainer.
+
+2020-05-28  Nicolas Bértolo  <nicolasbertolo@gmail.com>
+
+	* configure.ac: Don't require --enable-host-shared when building
+	for Mingw.
+	* configure: Regenerate.
+
+2020-05-18  Jason Merrill  <jason@redhat.com>
+
+	* configure.ac: Update bootstrap dialect to -std=c++11.
+
+2020-05-18  Alex Coplan  <alex.coplan@arm.com>
+
+	* MAINTAINERS (Write After Approval): Add myself.
+
 2020-04-29  Thomas Schwinge  <thomas@codesourcery.com>
 
 	PR target/92713
diff --git a/MAINTAINERS b/MAINTAINERS
index 336346a..8912b52 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -118,6 +118,7 @@
 x86-64 port		Jan Hubicka		<hubicka@ucw.cz>
 xstormy16 port		Nick Clifton		<nickc@redhat.com>
 xtensa port		Sterling Augustine	<augustine.sterling@gmail.com>
+xtensa port		Max Filippov		<jcmvbkbc@gmail.com>
 
 			OS Port Maintainers	(OS alphabetical order)
 
@@ -353,6 +354,7 @@
 Michael Collison				<michael.collison@arm.com>
 Josh Conner					<joshconner@google.com>
 R. Kelley Cook					<kcook@gcc.gnu.org>
+Alex Coplan					<alex.coplan@arm.com>
 Andrea Corallo					<andrea.corallo@arm.com>
 Christian Cornelssen				<ccorn@cs.tu-berlin.de>
 Ludovic Courtès					<ludo@gnu.org>
@@ -382,7 +384,6 @@
 Alessandro Fanfarillo				<fanfarillo.gcc@gmail.com>
 Changpeng Fang					<changpeng.fang@amd.com>
 Li Feng						<nemokingdom@gmail.com>
-Max Filippov					<jcmvbkbc@gmail.com>
 Thomas Fitzsimmons				<fitzsim@redhat.com>
 Alexander Fomin					<afomin.mailbox@gmail.com>
 Brian Ford					<ford@vss.fsi.com>
@@ -562,6 +563,7 @@
 Yao Qi						<yao@codesourcery.com>
 Jerry Quinn					<jlquinn@optonline.net>
 Easwaran Raman					<eraman@google.com>
+Joe Ramsay					<joe.ramsay@arm.com>
 Rolf Rasmussen					<rolfwr@gcc.gnu.org>
 Fritz Reese					<fritzoreese@gmail.com>
 Volker Reichelt					<v.reichelt@netcologne.de>
@@ -586,7 +588,7 @@
 Tilo Schwarz					<tilo@tilo-schwarz.de>
 Martin Sebor					<msebor@gcc.gnu.org>
 Svein Seldal					<svein@dev.seldal.com>
-Senthil Kumar Selvaraj				<senthil_kumar.selvaraj@atmel.com>
+Senthil Kumar Selvaraj				<saaadhu@gcc.gnu.org>
 Thiemo Seufer					<ths@networkno.de>
 Bill Seurer					<seurer@linux.vnet.ibm.com>
 Tim Shen					<timshen@google.com>
@@ -620,6 +622,7 @@
 Daniel Towner					<dant@picochip.com>
 Konrad Trifunovic				<konrad.trifunovic@inria.fr>
 Markus Trippelsdorf				<markus@trippelsdorf.de>
+Sergei Trofimovich				<slyfox@gcc.gnu.org>
 Igor Tsimbalist					<igor.v.tsimbalist@intel.com>
 Martin Uecker					<uecker@eecs.berkeley.edu>
 David Ung					<davidu@mips.com>
@@ -644,6 +647,7 @@
 Edmar Wienskoski				<edmar@freescale.com>
 Ollie Wild					<aaw@google.com>
 Kevin Williams					<kevin.williams@inria.fr>
+Przemyslaw Wirkus				<przemyslaw.wirkus@arm.com>
 Carlo Wood					<carlo@alinoe.com>
 Jackson Woodruff				<jackson.woodruff@arm.com>
 Mingjie Xing					<mingjie.xing@gmail.com>
diff --git a/config/ChangeLog b/config/ChangeLog
index 5ab14d9..83543a1 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,36 @@
+2020-07-30  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR bootstrap/96202
+	* cet.m4 (GCC_CET_HOST_FLAGS): Don't enable CET without CET
+	support in stage1 nor for build support.
+
+2020-05-29  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR bootstrap/95413
+	* cet.m4: Replace save_CFLAGS and save_LDFLAGS with
+	cet_save_CFLAGS and cet_save_LDFLAGS.
+
+2020-05-18  Jason Merrill  <jason@redhat.com>
+
+	* ax_cxx_compile_stdcxx.m4: Import from autoconf archive with
+	an adjustment to try the default mode.
+
+2020-05-15  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR bootstrap/95147
+	* cet.m4 (GCC_CET_FLAGS): Also check if -fcf-protection works
+	when defaulting to auto.
+
+2020-05-14  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* cet.m4 (GCC_CET_FLAGS): Change default to auto.
+
+2020-05-12  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR bootstrap/94998
+	* cet.m4 (GCC_CET_HOST_FLAGS): Enable CET in cross compiler if
+	possible.
+
 2020-04-28  H.J. Lu  <hongjiu.lu@intel.com>
 
 	PR bootstrap/94739
diff --git a/config/ax_cxx_compile_stdcxx.m4 b/config/ax_cxx_compile_stdcxx.m4
new file mode 100644
index 0000000..9413da6
--- /dev/null
+++ b/config/ax_cxx_compile_stdcxx.m4
@@ -0,0 +1,962 @@
+# ===========================================================================
+#  https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
+#
+# DESCRIPTION
+#
+#   Check for baseline language coverage in the compiler for the specified
+#   version of the C++ standard.  If necessary, add switches to CXX and
+#   CXXCPP to enable support.  VERSION may be '11' (for the C++11 standard)
+#   or '14' (for the C++14 standard).
+#
+#   The second argument, if specified, indicates whether you insist on an
+#   extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
+#   -std=c++11).  If neither is specified, you get whatever works, with
+#   preference for no added switch, and then for an extended mode.
+#
+#   The third argument, if specified 'mandatory' or if left unspecified,
+#   indicates that baseline support for the specified C++ standard is
+#   required and that the macro should error out if no mode with that
+#   support is found.  If specified 'optional', then configuration proceeds
+#   regardless, after defining HAVE_CXX${VERSION} if and only if a
+#   supporting mode is found.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
+#   Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
+#   Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
+#   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
+#   Copyright (c) 2015 Paul Norman <penorman@mac.com>
+#   Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
+#   Copyright (c) 2016, 2018 Krzesimir Nowak <qdlacz@gmail.com>
+#   Copyright (c) 2019 Enji Cooper <yaneurabeya@gmail.com>
+#   Copyright (c) 2020 Jason Merrill <jason@redhat.com>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved.  This file is offered as-is, without any
+#   warranty.
+
+#serial 12
+
+dnl  This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
+dnl  (serial version number 13).
+
+AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
+  m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"],
+        [$1], [14], [ax_cxx_compile_alternatives="14 1y"],
+        [$1], [17], [ax_cxx_compile_alternatives="17 1z"],
+        [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
+  m4_if([$2], [], [],
+        [$2], [ext], [],
+        [$2], [noext], [],
+        [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl
+  m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true],
+        [$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
+        [$3], [optional], [ax_cxx_compile_cxx$1_required=false],
+        [m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
+  AC_LANG_PUSH([C++])dnl
+  ac_success=no
+
+  m4_if([$2], [], [dnl
+    AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
+		   ax_cv_cxx_compile_cxx$1,
+      [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+        [ax_cv_cxx_compile_cxx$1=yes],
+        [ax_cv_cxx_compile_cxx$1=no])])
+    if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
+      ac_success=yes
+    fi])
+
+  m4_if([$2], [noext], [], [dnl
+  if test x$ac_success = xno; then
+    for alternative in ${ax_cxx_compile_alternatives}; do
+      switch="-std=gnu++${alternative}"
+      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
+      AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+                     $cachevar,
+        [ac_save_CXX="$CXX"
+         CXX="$CXX $switch"
+         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+          [eval $cachevar=yes],
+          [eval $cachevar=no])
+         CXX="$ac_save_CXX"])
+      if eval test x\$$cachevar = xyes; then
+        CXX="$CXX $switch"
+        if test -n "$CXXCPP" ; then
+          CXXCPP="$CXXCPP $switch"
+        fi
+        ac_success=yes
+        break
+      fi
+    done
+  fi])
+
+  m4_if([$2], [ext], [], [dnl
+  if test x$ac_success = xno; then
+    dnl HP's aCC needs +std=c++11 according to:
+    dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
+    dnl Cray's crayCC needs "-h std=c++11"
+    for alternative in ${ax_cxx_compile_alternatives}; do
+      for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
+        cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
+        AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+                       $cachevar,
+          [ac_save_CXX="$CXX"
+           CXX="$CXX $switch"
+           AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+            [eval $cachevar=yes],
+            [eval $cachevar=no])
+           CXX="$ac_save_CXX"])
+        if eval test x\$$cachevar = xyes; then
+          CXX="$CXX $switch"
+          if test -n "$CXXCPP" ; then
+            CXXCPP="$CXXCPP $switch"
+          fi
+          ac_success=yes
+          break
+        fi
+      done
+      if test x$ac_success = xyes; then
+        break
+      fi
+    done
+  fi])
+  AC_LANG_POP([C++])
+  if test x$ax_cxx_compile_cxx$1_required = xtrue; then
+    if test x$ac_success = xno; then
+      AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.])
+    fi
+  fi
+  if test x$ac_success = xno; then
+    HAVE_CXX$1=0
+    AC_MSG_NOTICE([No compiler with C++$1 support was found])
+  else
+    HAVE_CXX$1=1
+    AC_DEFINE(HAVE_CXX$1,1,
+              [define if the compiler supports basic C++$1 syntax])
+  fi
+  AC_SUBST(HAVE_CXX$1)
+])
+
+
+dnl  Test body for checking C++11 support
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+)
+
+
+dnl  Test body for checking C++14 support
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
+)
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17],
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_17
+)
+
+dnl  Tests for new features in C++11
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
+
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201103L
+
+#error "This is not a C++11 compiler"
+
+#else
+
+namespace cxx11
+{
+
+  namespace test_static_assert
+  {
+
+    template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+  }
+
+  namespace test_final_override
+  {
+
+    struct Base
+    {
+      virtual ~Base() {}
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual ~Derived() override {}
+      virtual void f() override {}
+    };
+
+  }
+
+  namespace test_double_right_angle_brackets
+  {
+
+    template < typename T >
+    struct check {};
+
+    typedef check<void> single_type;
+    typedef check<check<void>> double_type;
+    typedef check<check<check<void>>> triple_type;
+    typedef check<check<check<check<void>>>> quadruple_type;
+
+  }
+
+  namespace test_decltype
+  {
+
+    int
+    f()
+    {
+      int a = 1;
+      decltype(a) b = 2;
+      return a + b;
+    }
+
+  }
+
+  namespace test_type_deduction
+  {
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static const bool value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static const bool value = true;
+    };
+
+    template < typename T1, typename T2 >
+    auto
+    add(T1 a1, T2 a2) -> decltype(a1 + a2)
+    {
+      return a1 + a2;
+    }
+
+    int
+    test(const int c, volatile int v)
+    {
+      static_assert(is_same<int, decltype(0)>::value == true, "");
+      static_assert(is_same<int, decltype(c)>::value == false, "");
+      static_assert(is_same<int, decltype(v)>::value == false, "");
+      auto ac = c;
+      auto av = v;
+      auto sumi = ac + av + 'x';
+      auto sumf = ac + av + 1.0;
+      static_assert(is_same<int, decltype(ac)>::value == true, "");
+      static_assert(is_same<int, decltype(av)>::value == true, "");
+      static_assert(is_same<int, decltype(sumi)>::value == true, "");
+      static_assert(is_same<int, decltype(sumf)>::value == false, "");
+      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+      return (sumf > 0.0) ? sumi : add(c, v);
+    }
+
+  }
+
+  namespace test_noexcept
+  {
+
+    int f() { return 0; }
+    int g() noexcept { return 0; }
+
+    static_assert(noexcept(f()) == false, "");
+    static_assert(noexcept(g()) == true, "");
+
+  }
+
+  namespace test_constexpr
+  {
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+    {
+      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+    }
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c(const CharT *const s) noexcept
+    {
+      return strlen_c_r(s, 0UL);
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("1") == 1UL, "");
+    static_assert(strlen_c("example") == 7UL, "");
+    static_assert(strlen_c("another\0example") == 7UL, "");
+
+  }
+
+  namespace test_rvalue_references
+  {
+
+    template < int N >
+    struct answer
+    {
+      static constexpr int value = N;
+    };
+
+    answer<1> f(int&)       { return answer<1>(); }
+    answer<2> f(const int&) { return answer<2>(); }
+    answer<3> f(int&&)      { return answer<3>(); }
+
+    void
+    test()
+    {
+      int i = 0;
+      const int c = 0;
+      static_assert(decltype(f(i))::value == 1, "");
+      static_assert(decltype(f(c))::value == 2, "");
+      static_assert(decltype(f(0))::value == 3, "");
+    }
+
+  }
+
+  namespace test_uniform_initialization
+  {
+
+    struct test
+    {
+      static const int zero {};
+      static const int one {1};
+    };
+
+    static_assert(test::zero == 0, "");
+    static_assert(test::one == 1, "");
+
+  }
+
+  namespace test_lambdas
+  {
+
+    void
+    test1()
+    {
+      auto lambda1 = [](){};
+      auto lambda2 = lambda1;
+      lambda1();
+      lambda2();
+    }
+
+    int
+    test2()
+    {
+      auto a = [](int i, int j){ return i + j; }(1, 2);
+      auto b = []() -> int { return '0'; }();
+      auto c = [=](){ return a + b; }();
+      auto d = [&](){ return c; }();
+      auto e = [a, &b](int x) mutable {
+        const auto identity = [](int y){ return y; };
+        for (auto i = 0; i < a; ++i)
+          a += b--;
+        return x + identity(a + b);
+      }(0);
+      return a + b + c + d + e;
+    }
+
+    int
+    test3()
+    {
+      const auto nullary = [](){ return 0; };
+      const auto unary = [](int x){ return x; };
+      using nullary_t = decltype(nullary);
+      using unary_t = decltype(unary);
+      const auto higher1st = [](nullary_t f){ return f(); };
+      const auto higher2nd = [unary](nullary_t f1){
+        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+      };
+      return higher1st(nullary) + higher2nd(nullary)(unary);
+    }
+
+  }
+
+  namespace test_variadic_templates
+  {
+
+    template <int...>
+    struct sum;
+
+    template <int N0, int... N1toN>
+    struct sum<N0, N1toN...>
+    {
+      static constexpr auto value = N0 + sum<N1toN...>::value;
+    };
+
+    template <>
+    struct sum<>
+    {
+      static constexpr auto value = 0;
+    };
+
+    static_assert(sum<>::value == 0, "");
+    static_assert(sum<1>::value == 1, "");
+    static_assert(sum<23>::value == 23, "");
+    static_assert(sum<1, 2>::value == 3, "");
+    static_assert(sum<5, 5, 11>::value == 21, "");
+    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+
+  }
+
+  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+  // because of this.
+  namespace test_template_alias_sfinae
+  {
+
+    struct foo {};
+
+    template<typename T>
+    using member = typename T::member_type;
+
+    template<typename T>
+    void func(...) {}
+
+    template<typename T>
+    void func(member<T>*) {}
+
+    void test();
+
+    void test() { func<foo>(0); }
+
+  }
+
+}  // namespace cxx11
+
+#endif  // __cplusplus >= 201103L
+
+]])
+
+
+dnl  Tests for new features in C++14
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+  namespace test_polymorphic_lambdas
+  {
+
+    int
+    test()
+    {
+      const auto lambda = [](auto&&... args){
+        const auto istiny = [](auto x){
+          return (sizeof(x) == 1UL) ? 1 : 0;
+        };
+        const int aretiny[] = { istiny(args)... };
+        return aretiny[0];
+      };
+      return lambda(1, 1L, 1.0f, '1');
+    }
+
+  }
+
+  namespace test_binary_literals
+  {
+
+    constexpr auto ivii = 0b0000000000101010;
+    static_assert(ivii == 42, "wrong value");
+
+  }
+
+  namespace test_generalized_constexpr
+  {
+
+    template < typename CharT >
+    constexpr unsigned long
+    strlen_c(const CharT *const s) noexcept
+    {
+      auto length = 0UL;
+      for (auto p = s; *p; ++p)
+        ++length;
+      return length;
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("x") == 1UL, "");
+    static_assert(strlen_c("test") == 4UL, "");
+    static_assert(strlen_c("another\0test") == 7UL, "");
+
+  }
+
+  namespace test_lambda_init_capture
+  {
+
+    int
+    test()
+    {
+      auto x = 0;
+      const auto lambda1 = [a = x](int b){ return a + b; };
+      const auto lambda2 = [a = lambda1(x)](){ return a; };
+      return lambda2();
+    }
+
+  }
+
+  namespace test_digit_separators
+  {
+
+    constexpr auto ten_million = 100'000'000;
+    static_assert(ten_million == 100000000, "");
+
+  }
+
+  namespace test_return_type_deduction
+  {
+
+    auto f(int& x) { return x; }
+    decltype(auto) g(int& x) { return x; }
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static constexpr auto value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static constexpr auto value = true;
+    };
+
+    int
+    test()
+    {
+      auto x = 0;
+      static_assert(is_same<int, decltype(f(x))>::value, "");
+      static_assert(is_same<int&, decltype(g(x))>::value, "");
+      return x;
+    }
+
+  }
+
+}  // namespace cxx14
+
+#endif  // __cplusplus >= 201402L
+
+]])
+
+
+dnl  Tests for new features in C++17
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[
+
+// If the compiler admits that it is not ready for C++17, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201703L
+
+#error "This is not a C++17 compiler"
+
+#else
+
+#include <initializer_list>
+#include <utility>
+#include <type_traits>
+
+namespace cxx17
+{
+
+  namespace test_constexpr_lambdas
+  {
+
+    constexpr int foo = [](){return 42;}();
+
+  }
+
+  namespace test::nested_namespace::definitions
+  {
+
+  }
+
+  namespace test_fold_expression
+  {
+
+    template<typename... Args>
+    int multiply(Args... args)
+    {
+      return (args * ... * 1);
+    }
+
+    template<typename... Args>
+    bool all(Args... args)
+    {
+      return (args && ...);
+    }
+
+  }
+
+  namespace test_extended_static_assert
+  {
+
+    static_assert (true);
+
+  }
+
+  namespace test_auto_brace_init_list
+  {
+
+    auto foo = {5};
+    auto bar {5};
+
+    static_assert(std::is_same<std::initializer_list<int>, decltype(foo)>::value);
+    static_assert(std::is_same<int, decltype(bar)>::value);
+  }
+
+  namespace test_typename_in_template_template_parameter
+  {
+
+    template<template<typename> typename X> struct D;
+
+  }
+
+  namespace test_fallthrough_nodiscard_maybe_unused_attributes
+  {
+
+    int f1()
+    {
+      return 42;
+    }
+
+    [[nodiscard]] int f2()
+    {
+      [[maybe_unused]] auto unused = f1();
+
+      switch (f1())
+      {
+      case 17:
+        f1();
+        [[fallthrough]];
+      case 42:
+        f1();
+      }
+      return f1();
+    }
+
+  }
+
+  namespace test_extended_aggregate_initialization
+  {
+
+    struct base1
+    {
+      int b1, b2 = 42;
+    };
+
+    struct base2
+    {
+      base2() {
+        b3 = 42;
+      }
+      int b3;
+    };
+
+    struct derived : base1, base2
+    {
+        int d;
+    };
+
+    derived d1 {{1, 2}, {}, 4};  // full initialization
+    derived d2 {{}, {}, 4};      // value-initialized bases
+
+  }
+
+  namespace test_general_range_based_for_loop
+  {
+
+    struct iter
+    {
+      int i;
+
+      int& operator* ()
+      {
+        return i;
+      }
+
+      const int& operator* () const
+      {
+        return i;
+      }
+
+      iter& operator++()
+      {
+        ++i;
+        return *this;
+      }
+    };
+
+    struct sentinel
+    {
+      int i;
+    };
+
+    bool operator== (const iter& i, const sentinel& s)
+    {
+      return i.i == s.i;
+    }
+
+    bool operator!= (const iter& i, const sentinel& s)
+    {
+      return !(i == s);
+    }
+
+    struct range
+    {
+      iter begin() const
+      {
+        return {0};
+      }
+
+      sentinel end() const
+      {
+        return {5};
+      }
+    };
+
+    void f()
+    {
+      range r {};
+
+      for (auto i : r)
+      {
+        [[maybe_unused]] auto v = i;
+      }
+    }
+
+  }
+
+  namespace test_lambda_capture_asterisk_this_by_value
+  {
+
+    struct t
+    {
+      int i;
+      int foo()
+      {
+        return [*this]()
+        {
+          return i;
+        }();
+      }
+    };
+
+  }
+
+  namespace test_enum_class_construction
+  {
+
+    enum class byte : unsigned char
+    {};
+
+    byte foo {42};
+
+  }
+
+  namespace test_constexpr_if
+  {
+
+    template <bool cond>
+    int f ()
+    {
+      if constexpr(cond)
+      {
+        return 13;
+      }
+      else
+      {
+        return 42;
+      }
+    }
+
+  }
+
+  namespace test_selection_statement_with_initializer
+  {
+
+    int f()
+    {
+      return 13;
+    }
+
+    int f2()
+    {
+      if (auto i = f(); i > 0)
+      {
+        return 3;
+      }
+
+      switch (auto i = f(); i + 4)
+      {
+      case 17:
+        return 2;
+
+      default:
+        return 1;
+      }
+    }
+
+  }
+
+  namespace test_template_argument_deduction_for_class_templates
+  {
+
+    template <typename T1, typename T2>
+    struct pair
+    {
+      pair (T1 p1, T2 p2)
+        : m1 {p1},
+          m2 {p2}
+      {}
+
+      T1 m1;
+      T2 m2;
+    };
+
+    void f()
+    {
+      [[maybe_unused]] auto p = pair{13, 42u};
+    }
+
+  }
+
+  namespace test_non_type_auto_template_parameters
+  {
+
+    template <auto n>
+    struct B
+    {};
+
+    B<5> b1;
+    B<'a'> b2;
+
+  }
+
+  namespace test_structured_bindings
+  {
+
+    int arr[2] = { 1, 2 };
+    std::pair<int, int> pr = { 1, 2 };
+
+    auto f1() -> int(&)[2]
+    {
+      return arr;
+    }
+
+    auto f2() -> std::pair<int, int>&
+    {
+      return pr;
+    }
+
+    struct S
+    {
+      int x1 : 2;
+      volatile double y1;
+    };
+
+    S f3()
+    {
+      return {};
+    }
+
+    auto [ x1, y1 ] = f1();
+    auto& [ xr1, yr1 ] = f1();
+    auto [ x2, y2 ] = f2();
+    auto& [ xr2, yr2 ] = f2();
+    const auto [ x3, y3 ] = f3();
+
+  }
+
+  namespace test_exception_spec_type_system
+  {
+
+    struct Good {};
+    struct Bad {};
+
+    void g1() noexcept;
+    void g2();
+
+    template<typename T>
+    Bad
+    f(T*, T*);
+
+    template<typename T1, typename T2>
+    Good
+    f(T1*, T2*);
+
+    static_assert (std::is_same_v<Good, decltype(f(g1, g2))>);
+
+  }
+
+  namespace test_inline_variables
+  {
+
+    template<class T> void f(T)
+    {}
+
+    template<class T> inline T g(T)
+    {
+      return T{};
+    }
+
+    template<> inline void f<>(int)
+    {}
+
+    template<> int g<>(int)
+    {
+      return 5;
+    }
+
+  }
+
+}  // namespace cxx17
+
+#endif  // __cplusplus < 201703L
+
+]])
diff --git a/config/cet.m4 b/config/cet.m4
index ea616b7..c67fb4f 100644
--- a/config/cet.m4
+++ b/config/cet.m4
@@ -3,16 +3,19 @@
 dnl    (SHELL-CODE_HANDLER)
 dnl
 AC_DEFUN([GCC_CET_FLAGS],[dnl
-GCC_ENABLE(cet, no, ,[enable Intel CET in target libraries],
+GCC_ENABLE(cet, auto, ,[enable Intel CET in target libraries],
 	   permit yes|no|auto)
 AC_MSG_CHECKING([for CET support])
 
+# NB: Avoid nested save_CFLAGS and save_LDFLAGS.
 case "$host" in
   i[[34567]]86-*-linux* | x86_64-*-linux*)
     case "$enable_cet" in
       auto)
 	# Check if target supports multi-byte NOPs
-	# and if assembler supports CET insn.
+	# and if compiler and assembler support CET insn.
+	cet_save_CFLAGS="$CFLAGS"
+	CFLAGS="$CFLAGS -fcf-protection"
 	AC_COMPILE_IFELSE(
 	 [AC_LANG_PROGRAM(
 	  [],
@@ -25,6 +28,7 @@
 	  ])],
 	 [enable_cet=yes],
 	 [enable_cet=no])
+	CFLAGS="$cet_save_CFLAGS"
 	;;
       yes)
 	# Check if assembler supports CET.
@@ -61,12 +65,12 @@
 case "$host" in
   i[[34567]]86-*-linux* | x86_64-*-linux*)
     may_have_cet=yes
-    save_CFLAGS="$CFLAGS"
+    cet_save_CFLAGS="$CFLAGS"
     CFLAGS="$CFLAGS -fcf-protection"
     case "$enable_cet" in
       auto)
 	# Check if target supports multi-byte NOPs
-	# and if assembler supports CET insn.
+	# and if compiler and assembler support CET.
 	AC_COMPILE_IFELSE(
 	 [AC_LANG_PROGRAM(
 	  [],
@@ -81,16 +85,29 @@
 	 [enable_cet=no])
 	;;
       yes)
-	# Check if assembler supports CET.
+	# Check if compiler and assembler support CET.
 	AC_COMPILE_IFELSE(
 	 [AC_LANG_PROGRAM(
 	  [],
 	  [asm ("setssbsy");])],
-	 [],
-	 [AC_MSG_ERROR([assembler with CET support is required for --enable-cet])])
+	 [support_cet=yes],
+	 [support_cet=no])
+	if test $support_cet = "no"; then
+	  if test x$enable_bootstrap != xno \
+	     && test -z "${with_build_subdir}" \
+	     && (test ! -f ../stage_current \
+	         || test `cat ../stage_current` != "stage1"); then
+	    # Require CET support only for the final GCC build.
+	    AC_MSG_ERROR([compiler and assembler with CET support are required for --enable-cet])
+	  else
+	    # Don't enable CET without CET support for non-bootstrap
+	    # build, in stage1 nor for build support.
+	    enable_cet=no
+	  fi
+	fi
 	;;
     esac
-    CFLAGS="$save_CFLAGS"
+    CFLAGS="$cet_save_CFLAGS"
     ;;
   *)
     may_have_cet=no
@@ -98,9 +115,9 @@
     ;;
 esac
 
-save_CFLAGS="$CFLAGS"
+cet_save_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -fcf-protection=none"
-save_LDFLAGS="$LDFLAGS"
+cet_save_LDFLAGS="$LDFLAGS"
 LDFLAGS="$LDFLAGS -Wl,-z,ibt,-z,shstk"
 if test x$may_have_cet = xyes; then
   # Check whether -fcf-protection=none -Wl,-z,ibt,-z,shstk work.
@@ -111,7 +128,8 @@
 fi
 
 if test x$may_have_cet = xyes; then
-  AC_TRY_RUN([
+  if test x$cross_compiling = xno; then
+    AC_TRY_RUN([
 static void
 foo (void)
 {
@@ -137,12 +155,17 @@
   bar ();
   return 0;
 }
-  ],
-  [have_cet=no],
-  [have_cet=yes])
-  if test x$enable_cet = xno -a x$have_cet = xyes; then
-    AC_MSG_ERROR([Intel CET must be enabled on Intel CET enabled host])
+    ],
+    [have_cet=no],
+    [have_cet=yes])
+    if test x$enable_cet = xno -a x$have_cet = xyes; then
+      AC_MSG_ERROR([Intel CET must be enabled on Intel CET enabled host])
+    fi
   fi
+else
+  # Enable CET in cross compiler if possible so that it will run on both
+  # CET and non-CET hosts.
+  have_cet=yes
 fi
 if test x$enable_cet = xyes; then
   $1="-fcf-protection"
@@ -150,6 +173,6 @@
 else
   AC_MSG_RESULT([no])
 fi
-CFLAGS="$save_CFLAGS"
-LDFLAGS="$save_LDFLAGS"
+CFLAGS="$cet_save_CFLAGS"
+LDFLAGS="$cet_save_LDFLAGS"
 ])
diff --git a/configure b/configure
index 4cc938e..a0c5aca 100755
--- a/configure
+++ b/configure
@@ -694,6 +694,7 @@
 extra_mpfr_configure_flags
 gmpinc
 gmplibs
+HAVE_CXX11
 do_compare
 GNATMAKE
 GNATBIND
@@ -5523,10 +5524,1003 @@
     ;;
 esac
 
-# When bootstrapping with GCC, build stage 1 in C++98 mode to ensure that a
-# C++98 compiler can still start the bootstrap.
+# When bootstrapping with GCC, build stage 1 in C++11 mode to ensure that a
+# C++11 compiler can still start the bootstrap.  Otherwise, if building GCC,
+# require C++11 (or higher).
 if test "$enable_bootstrap:$GXX" = "yes:yes"; then
-  CXX="$CXX -std=gnu++98"
+  CXX="$CXX -std=c++11"
+elif test "$have_compiler" = yes; then
+    ax_cxx_compile_alternatives="11 0x"    ax_cxx_compile_cxx11_required=true
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+  ac_success=no
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5
+$as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; }
+if ${ax_cv_cxx_compile_cxx11+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201103L
+
+#error "This is not a C++11 compiler"
+
+#else
+
+namespace cxx11
+{
+
+  namespace test_static_assert
+  {
+
+    template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+  }
+
+  namespace test_final_override
+  {
+
+    struct Base
+    {
+      virtual ~Base() {}
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual ~Derived() override {}
+      virtual void f() override {}
+    };
+
+  }
+
+  namespace test_double_right_angle_brackets
+  {
+
+    template < typename T >
+    struct check {};
+
+    typedef check<void> single_type;
+    typedef check<check<void>> double_type;
+    typedef check<check<check<void>>> triple_type;
+    typedef check<check<check<check<void>>>> quadruple_type;
+
+  }
+
+  namespace test_decltype
+  {
+
+    int
+    f()
+    {
+      int a = 1;
+      decltype(a) b = 2;
+      return a + b;
+    }
+
+  }
+
+  namespace test_type_deduction
+  {
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static const bool value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static const bool value = true;
+    };
+
+    template < typename T1, typename T2 >
+    auto
+    add(T1 a1, T2 a2) -> decltype(a1 + a2)
+    {
+      return a1 + a2;
+    }
+
+    int
+    test(const int c, volatile int v)
+    {
+      static_assert(is_same<int, decltype(0)>::value == true, "");
+      static_assert(is_same<int, decltype(c)>::value == false, "");
+      static_assert(is_same<int, decltype(v)>::value == false, "");
+      auto ac = c;
+      auto av = v;
+      auto sumi = ac + av + 'x';
+      auto sumf = ac + av + 1.0;
+      static_assert(is_same<int, decltype(ac)>::value == true, "");
+      static_assert(is_same<int, decltype(av)>::value == true, "");
+      static_assert(is_same<int, decltype(sumi)>::value == true, "");
+      static_assert(is_same<int, decltype(sumf)>::value == false, "");
+      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+      return (sumf > 0.0) ? sumi : add(c, v);
+    }
+
+  }
+
+  namespace test_noexcept
+  {
+
+    int f() { return 0; }
+    int g() noexcept { return 0; }
+
+    static_assert(noexcept(f()) == false, "");
+    static_assert(noexcept(g()) == true, "");
+
+  }
+
+  namespace test_constexpr
+  {
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+    {
+      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+    }
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c(const CharT *const s) noexcept
+    {
+      return strlen_c_r(s, 0UL);
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("1") == 1UL, "");
+    static_assert(strlen_c("example") == 7UL, "");
+    static_assert(strlen_c("another\0example") == 7UL, "");
+
+  }
+
+  namespace test_rvalue_references
+  {
+
+    template < int N >
+    struct answer
+    {
+      static constexpr int value = N;
+    };
+
+    answer<1> f(int&)       { return answer<1>(); }
+    answer<2> f(const int&) { return answer<2>(); }
+    answer<3> f(int&&)      { return answer<3>(); }
+
+    void
+    test()
+    {
+      int i = 0;
+      const int c = 0;
+      static_assert(decltype(f(i))::value == 1, "");
+      static_assert(decltype(f(c))::value == 2, "");
+      static_assert(decltype(f(0))::value == 3, "");
+    }
+
+  }
+
+  namespace test_uniform_initialization
+  {
+
+    struct test
+    {
+      static const int zero {};
+      static const int one {1};
+    };
+
+    static_assert(test::zero == 0, "");
+    static_assert(test::one == 1, "");
+
+  }
+
+  namespace test_lambdas
+  {
+
+    void
+    test1()
+    {
+      auto lambda1 = [](){};
+      auto lambda2 = lambda1;
+      lambda1();
+      lambda2();
+    }
+
+    int
+    test2()
+    {
+      auto a = [](int i, int j){ return i + j; }(1, 2);
+      auto b = []() -> int { return '0'; }();
+      auto c = [=](){ return a + b; }();
+      auto d = [&](){ return c; }();
+      auto e = [a, &b](int x) mutable {
+        const auto identity = [](int y){ return y; };
+        for (auto i = 0; i < a; ++i)
+          a += b--;
+        return x + identity(a + b);
+      }(0);
+      return a + b + c + d + e;
+    }
+
+    int
+    test3()
+    {
+      const auto nullary = [](){ return 0; };
+      const auto unary = [](int x){ return x; };
+      using nullary_t = decltype(nullary);
+      using unary_t = decltype(unary);
+      const auto higher1st = [](nullary_t f){ return f(); };
+      const auto higher2nd = [unary](nullary_t f1){
+        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+      };
+      return higher1st(nullary) + higher2nd(nullary)(unary);
+    }
+
+  }
+
+  namespace test_variadic_templates
+  {
+
+    template <int...>
+    struct sum;
+
+    template <int N0, int... N1toN>
+    struct sum<N0, N1toN...>
+    {
+      static constexpr auto value = N0 + sum<N1toN...>::value;
+    };
+
+    template <>
+    struct sum<>
+    {
+      static constexpr auto value = 0;
+    };
+
+    static_assert(sum<>::value == 0, "");
+    static_assert(sum<1>::value == 1, "");
+    static_assert(sum<23>::value == 23, "");
+    static_assert(sum<1, 2>::value == 3, "");
+    static_assert(sum<5, 5, 11>::value == 21, "");
+    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+
+  }
+
+  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+  // because of this.
+  namespace test_template_alias_sfinae
+  {
+
+    struct foo {};
+
+    template<typename T>
+    using member = typename T::member_type;
+
+    template<typename T>
+    void func(...) {}
+
+    template<typename T>
+    void func(member<T>*) {}
+
+    void test();
+
+    void test() { func<foo>(0); }
+
+  }
+
+}  // namespace cxx11
+
+#endif  // __cplusplus >= 201103L
+
+
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_cxx_compile_cxx11=yes
+else
+  ax_cv_cxx_compile_cxx11=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5
+$as_echo "$ax_cv_cxx_compile_cxx11" >&6; }
+    if test x$ax_cv_cxx_compile_cxx11 = xyes; then
+      ac_success=yes
+    fi
+
+    if test x$ac_success = xno; then
+    for alternative in ${ax_cxx_compile_alternatives}; do
+      switch="-std=gnu++${alternative}"
+      cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh`
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
+$as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; }
+if eval \${$cachevar+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_CXX="$CXX"
+         CXX="$CXX $switch"
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201103L
+
+#error "This is not a C++11 compiler"
+
+#else
+
+namespace cxx11
+{
+
+  namespace test_static_assert
+  {
+
+    template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+  }
+
+  namespace test_final_override
+  {
+
+    struct Base
+    {
+      virtual ~Base() {}
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual ~Derived() override {}
+      virtual void f() override {}
+    };
+
+  }
+
+  namespace test_double_right_angle_brackets
+  {
+
+    template < typename T >
+    struct check {};
+
+    typedef check<void> single_type;
+    typedef check<check<void>> double_type;
+    typedef check<check<check<void>>> triple_type;
+    typedef check<check<check<check<void>>>> quadruple_type;
+
+  }
+
+  namespace test_decltype
+  {
+
+    int
+    f()
+    {
+      int a = 1;
+      decltype(a) b = 2;
+      return a + b;
+    }
+
+  }
+
+  namespace test_type_deduction
+  {
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static const bool value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static const bool value = true;
+    };
+
+    template < typename T1, typename T2 >
+    auto
+    add(T1 a1, T2 a2) -> decltype(a1 + a2)
+    {
+      return a1 + a2;
+    }
+
+    int
+    test(const int c, volatile int v)
+    {
+      static_assert(is_same<int, decltype(0)>::value == true, "");
+      static_assert(is_same<int, decltype(c)>::value == false, "");
+      static_assert(is_same<int, decltype(v)>::value == false, "");
+      auto ac = c;
+      auto av = v;
+      auto sumi = ac + av + 'x';
+      auto sumf = ac + av + 1.0;
+      static_assert(is_same<int, decltype(ac)>::value == true, "");
+      static_assert(is_same<int, decltype(av)>::value == true, "");
+      static_assert(is_same<int, decltype(sumi)>::value == true, "");
+      static_assert(is_same<int, decltype(sumf)>::value == false, "");
+      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+      return (sumf > 0.0) ? sumi : add(c, v);
+    }
+
+  }
+
+  namespace test_noexcept
+  {
+
+    int f() { return 0; }
+    int g() noexcept { return 0; }
+
+    static_assert(noexcept(f()) == false, "");
+    static_assert(noexcept(g()) == true, "");
+
+  }
+
+  namespace test_constexpr
+  {
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+    {
+      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+    }
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c(const CharT *const s) noexcept
+    {
+      return strlen_c_r(s, 0UL);
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("1") == 1UL, "");
+    static_assert(strlen_c("example") == 7UL, "");
+    static_assert(strlen_c("another\0example") == 7UL, "");
+
+  }
+
+  namespace test_rvalue_references
+  {
+
+    template < int N >
+    struct answer
+    {
+      static constexpr int value = N;
+    };
+
+    answer<1> f(int&)       { return answer<1>(); }
+    answer<2> f(const int&) { return answer<2>(); }
+    answer<3> f(int&&)      { return answer<3>(); }
+
+    void
+    test()
+    {
+      int i = 0;
+      const int c = 0;
+      static_assert(decltype(f(i))::value == 1, "");
+      static_assert(decltype(f(c))::value == 2, "");
+      static_assert(decltype(f(0))::value == 3, "");
+    }
+
+  }
+
+  namespace test_uniform_initialization
+  {
+
+    struct test
+    {
+      static const int zero {};
+      static const int one {1};
+    };
+
+    static_assert(test::zero == 0, "");
+    static_assert(test::one == 1, "");
+
+  }
+
+  namespace test_lambdas
+  {
+
+    void
+    test1()
+    {
+      auto lambda1 = [](){};
+      auto lambda2 = lambda1;
+      lambda1();
+      lambda2();
+    }
+
+    int
+    test2()
+    {
+      auto a = [](int i, int j){ return i + j; }(1, 2);
+      auto b = []() -> int { return '0'; }();
+      auto c = [=](){ return a + b; }();
+      auto d = [&](){ return c; }();
+      auto e = [a, &b](int x) mutable {
+        const auto identity = [](int y){ return y; };
+        for (auto i = 0; i < a; ++i)
+          a += b--;
+        return x + identity(a + b);
+      }(0);
+      return a + b + c + d + e;
+    }
+
+    int
+    test3()
+    {
+      const auto nullary = [](){ return 0; };
+      const auto unary = [](int x){ return x; };
+      using nullary_t = decltype(nullary);
+      using unary_t = decltype(unary);
+      const auto higher1st = [](nullary_t f){ return f(); };
+      const auto higher2nd = [unary](nullary_t f1){
+        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+      };
+      return higher1st(nullary) + higher2nd(nullary)(unary);
+    }
+
+  }
+
+  namespace test_variadic_templates
+  {
+
+    template <int...>
+    struct sum;
+
+    template <int N0, int... N1toN>
+    struct sum<N0, N1toN...>
+    {
+      static constexpr auto value = N0 + sum<N1toN...>::value;
+    };
+
+    template <>
+    struct sum<>
+    {
+      static constexpr auto value = 0;
+    };
+
+    static_assert(sum<>::value == 0, "");
+    static_assert(sum<1>::value == 1, "");
+    static_assert(sum<23>::value == 23, "");
+    static_assert(sum<1, 2>::value == 3, "");
+    static_assert(sum<5, 5, 11>::value == 21, "");
+    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+
+  }
+
+  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+  // because of this.
+  namespace test_template_alias_sfinae
+  {
+
+    struct foo {};
+
+    template<typename T>
+    using member = typename T::member_type;
+
+    template<typename T>
+    void func(...) {}
+
+    template<typename T>
+    void func(member<T>*) {}
+
+    void test();
+
+    void test() { func<foo>(0); }
+
+  }
+
+}  // namespace cxx11
+
+#endif  // __cplusplus >= 201103L
+
+
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval $cachevar=yes
+else
+  eval $cachevar=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         CXX="$ac_save_CXX"
+fi
+eval ac_res=\$$cachevar
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+      if eval test x\$$cachevar = xyes; then
+        CXX="$CXX $switch"
+        if test -n "$CXXCPP" ; then
+          CXXCPP="$CXXCPP $switch"
+        fi
+        ac_success=yes
+        break
+      fi
+    done
+  fi
+
+    if test x$ac_success = xno; then
+                for alternative in ${ax_cxx_compile_alternatives}; do
+      for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
+        cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh`
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
+$as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; }
+if eval \${$cachevar+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_CXX="$CXX"
+           CXX="$CXX $switch"
+           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201103L
+
+#error "This is not a C++11 compiler"
+
+#else
+
+namespace cxx11
+{
+
+  namespace test_static_assert
+  {
+
+    template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+  }
+
+  namespace test_final_override
+  {
+
+    struct Base
+    {
+      virtual ~Base() {}
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual ~Derived() override {}
+      virtual void f() override {}
+    };
+
+  }
+
+  namespace test_double_right_angle_brackets
+  {
+
+    template < typename T >
+    struct check {};
+
+    typedef check<void> single_type;
+    typedef check<check<void>> double_type;
+    typedef check<check<check<void>>> triple_type;
+    typedef check<check<check<check<void>>>> quadruple_type;
+
+  }
+
+  namespace test_decltype
+  {
+
+    int
+    f()
+    {
+      int a = 1;
+      decltype(a) b = 2;
+      return a + b;
+    }
+
+  }
+
+  namespace test_type_deduction
+  {
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static const bool value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static const bool value = true;
+    };
+
+    template < typename T1, typename T2 >
+    auto
+    add(T1 a1, T2 a2) -> decltype(a1 + a2)
+    {
+      return a1 + a2;
+    }
+
+    int
+    test(const int c, volatile int v)
+    {
+      static_assert(is_same<int, decltype(0)>::value == true, "");
+      static_assert(is_same<int, decltype(c)>::value == false, "");
+      static_assert(is_same<int, decltype(v)>::value == false, "");
+      auto ac = c;
+      auto av = v;
+      auto sumi = ac + av + 'x';
+      auto sumf = ac + av + 1.0;
+      static_assert(is_same<int, decltype(ac)>::value == true, "");
+      static_assert(is_same<int, decltype(av)>::value == true, "");
+      static_assert(is_same<int, decltype(sumi)>::value == true, "");
+      static_assert(is_same<int, decltype(sumf)>::value == false, "");
+      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+      return (sumf > 0.0) ? sumi : add(c, v);
+    }
+
+  }
+
+  namespace test_noexcept
+  {
+
+    int f() { return 0; }
+    int g() noexcept { return 0; }
+
+    static_assert(noexcept(f()) == false, "");
+    static_assert(noexcept(g()) == true, "");
+
+  }
+
+  namespace test_constexpr
+  {
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+    {
+      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+    }
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c(const CharT *const s) noexcept
+    {
+      return strlen_c_r(s, 0UL);
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("1") == 1UL, "");
+    static_assert(strlen_c("example") == 7UL, "");
+    static_assert(strlen_c("another\0example") == 7UL, "");
+
+  }
+
+  namespace test_rvalue_references
+  {
+
+    template < int N >
+    struct answer
+    {
+      static constexpr int value = N;
+    };
+
+    answer<1> f(int&)       { return answer<1>(); }
+    answer<2> f(const int&) { return answer<2>(); }
+    answer<3> f(int&&)      { return answer<3>(); }
+
+    void
+    test()
+    {
+      int i = 0;
+      const int c = 0;
+      static_assert(decltype(f(i))::value == 1, "");
+      static_assert(decltype(f(c))::value == 2, "");
+      static_assert(decltype(f(0))::value == 3, "");
+    }
+
+  }
+
+  namespace test_uniform_initialization
+  {
+
+    struct test
+    {
+      static const int zero {};
+      static const int one {1};
+    };
+
+    static_assert(test::zero == 0, "");
+    static_assert(test::one == 1, "");
+
+  }
+
+  namespace test_lambdas
+  {
+
+    void
+    test1()
+    {
+      auto lambda1 = [](){};
+      auto lambda2 = lambda1;
+      lambda1();
+      lambda2();
+    }
+
+    int
+    test2()
+    {
+      auto a = [](int i, int j){ return i + j; }(1, 2);
+      auto b = []() -> int { return '0'; }();
+      auto c = [=](){ return a + b; }();
+      auto d = [&](){ return c; }();
+      auto e = [a, &b](int x) mutable {
+        const auto identity = [](int y){ return y; };
+        for (auto i = 0; i < a; ++i)
+          a += b--;
+        return x + identity(a + b);
+      }(0);
+      return a + b + c + d + e;
+    }
+
+    int
+    test3()
+    {
+      const auto nullary = [](){ return 0; };
+      const auto unary = [](int x){ return x; };
+      using nullary_t = decltype(nullary);
+      using unary_t = decltype(unary);
+      const auto higher1st = [](nullary_t f){ return f(); };
+      const auto higher2nd = [unary](nullary_t f1){
+        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+      };
+      return higher1st(nullary) + higher2nd(nullary)(unary);
+    }
+
+  }
+
+  namespace test_variadic_templates
+  {
+
+    template <int...>
+    struct sum;
+
+    template <int N0, int... N1toN>
+    struct sum<N0, N1toN...>
+    {
+      static constexpr auto value = N0 + sum<N1toN...>::value;
+    };
+
+    template <>
+    struct sum<>
+    {
+      static constexpr auto value = 0;
+    };
+
+    static_assert(sum<>::value == 0, "");
+    static_assert(sum<1>::value == 1, "");
+    static_assert(sum<23>::value == 23, "");
+    static_assert(sum<1, 2>::value == 3, "");
+    static_assert(sum<5, 5, 11>::value == 21, "");
+    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+
+  }
+
+  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+  // because of this.
+  namespace test_template_alias_sfinae
+  {
+
+    struct foo {};
+
+    template<typename T>
+    using member = typename T::member_type;
+
+    template<typename T>
+    void func(...) {}
+
+    template<typename T>
+    void func(member<T>*) {}
+
+    void test();
+
+    void test() { func<foo>(0); }
+
+  }
+
+}  // namespace cxx11
+
+#endif  // __cplusplus >= 201103L
+
+
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval $cachevar=yes
+else
+  eval $cachevar=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+           CXX="$ac_save_CXX"
+fi
+eval ac_res=\$$cachevar
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+        if eval test x\$$cachevar = xyes; then
+          CXX="$CXX $switch"
+          if test -n "$CXXCPP" ; then
+            CXXCPP="$CXXCPP $switch"
+          fi
+          ac_success=yes
+          break
+        fi
+      done
+      if test x$ac_success = xyes; then
+        break
+      fi
+    done
+  fi
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+  if test x$ax_cxx_compile_cxx11_required = xtrue; then
+    if test x$ac_success = xno; then
+      as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5
+    fi
+  fi
+  if test x$ac_success = xno; then
+    HAVE_CXX11=0
+    { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5
+$as_echo "$as_me: No compiler with C++11 support was found" >&6;}
+  else
+    HAVE_CXX11=1
+
+$as_echo "#define HAVE_CXX11 1" >>confdefs.h
+
+  fi
+
+
 fi
 
 # Used for setting $lt_cv_objdir
@@ -6489,9 +7483,14 @@
         esac
 
         # Disable jit if -enable-host-shared not specified
-        case ${add_this_lang}:${language}:${host_shared} in
-          yes:jit:no)
-	    # PR jit/64780: explicitly specify --enable-host-shared
+        # but not if building for Mingw. All code in Windows
+        # is position independent code (PIC).
+        case $target in
+          *mingw*) ;;
+          *)
+          case ${add_this_lang}:${language}:${host_shared} in
+            yes:jit:no)
+	           # PR jit/64780: explicitly specify --enable-host-shared
 	    as_fn_error $? "
 Enabling language \"jit\" requires --enable-host-shared.
 
@@ -6502,17 +7501,19 @@
 best to do this via two separate configure/builds, in separate
 directories, to avoid imposing the performance cost of
 --enable-host-shared on the regular compiler." "$LINENO" 5
-	    ;;
-          all:jit:no)
-	    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-host-shared required to build $language" >&5
+	            ;;
+            all:jit:no)
+	      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-host-shared required to build $language" >&5
 $as_echo "$as_me: WARNING: --enable-host-shared required to build $language" >&2;}
-            add_this_lang=unsupported
-            ;;
-          *:jit:no)
-            # Silently disable.
-            add_this_lang=unsupported
-            ;;
-	esac
+              add_this_lang=unsupported
+              ;;
+            *:jit:no)
+              # Silently disable.
+              add_this_lang=unsupported
+              ;;
+	        esac
+          ;;
+        esac
 
         # Disable a language that is unsupported by the target.
 	case "${add_this_lang}: $unsupported_languages " in
diff --git a/configure.ac b/configure.ac
index c78d9cb..1a53ed4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,6 +23,7 @@
 m4_include(config/override.m4)
 m4_include(config/proginstall.m4)
 m4_include(config/elf.m4)
+m4_include(config/ax_cxx_compile_stdcxx.m4)
 m4_include([libtool.m4])
 m4_include([ltoptions.m4])
 m4_include([ltsugar.m4])
@@ -1462,10 +1463,13 @@
     ;;
 esac
 
-# When bootstrapping with GCC, build stage 1 in C++98 mode to ensure that a
-# C++98 compiler can still start the bootstrap.
+# When bootstrapping with GCC, build stage 1 in C++11 mode to ensure that a
+# C++11 compiler can still start the bootstrap.  Otherwise, if building GCC,
+# require C++11 (or higher).
 if test "$enable_bootstrap:$GXX" = "yes:yes"; then
-  CXX="$CXX -std=gnu++98"
+  CXX="$CXX -std=c++11"
+elif test "$have_compiler" = yes; then
+  AX_CXX_COMPILE_STDCXX(11)
 fi
 
 # Used for setting $lt_cv_objdir
@@ -2079,9 +2083,14 @@
         esac
 
         # Disable jit if -enable-host-shared not specified
-        case ${add_this_lang}:${language}:${host_shared} in
-          yes:jit:no)
-	    # PR jit/64780: explicitly specify --enable-host-shared
+        # but not if building for Mingw. All code in Windows
+        # is position independent code (PIC).
+        case $target in
+          *mingw*) ;;
+          *)
+          case ${add_this_lang}:${language}:${host_shared} in
+            yes:jit:no)
+	           # PR jit/64780: explicitly specify --enable-host-shared
 	    AC_MSG_ERROR([
 Enabling language "jit" requires --enable-host-shared.
 
@@ -2092,16 +2101,18 @@
 best to do this via two separate configure/builds, in separate
 directories, to avoid imposing the performance cost of
 --enable-host-shared on the regular compiler.])
-	    ;;
-          all:jit:no)
-	    AC_MSG_WARN([--enable-host-shared required to build $language])
-            add_this_lang=unsupported
-            ;;
-          *:jit:no)
-            # Silently disable.
-            add_this_lang=unsupported
-            ;;
-	esac
+	            ;;
+            all:jit:no)
+	      AC_MSG_WARN([--enable-host-shared required to build $language])
+              add_this_lang=unsupported
+              ;;
+            *:jit:no)
+              # Silently disable.
+              add_this_lang=unsupported
+              ;;
+	        esac
+          ;;
+        esac
 
         # Disable a language that is unsupported by the target.
 	case "${add_this_lang}: $unsupported_languages " in
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 43fe1e7..754174b 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,423 @@
+2020-07-29  Martin Liska  <mliska@suse.cz>
+
+	* git-backport.py: fix how are ChangeLog paths combined.
+
+2020-07-23  Patrick Palka  <ppalka@redhat.com>
+
+	* vimrc (SetStyle): Also inspect &filetype to determine whether
+	a file is C-like.
+
+2020-07-23  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: When reverting a backport,
+	we should print only Revert header.
+
+2020-07-17  Jonathan Wakely  <jwakely@redhat.com>
+
+	* gcc-changelog/git_update_version.py: Fix typo.
+
+2020-07-10  Mike Nolta  <mike@nolta.net>
+
+	* download_prerequisites: Don't pass wget options to curl.
+
+2020-07-07  Alexandre Oliva  <oliva@adacore.com>
+	    Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Support CASE and COND.
+	* gcc-changelog/test_patches.txt: Add test.
+	* gcc-changelog/test_email.py: Add test.
+
+2020-06-30  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_repository.py: Support older releases of
+	GitPython when renamed_file was named renamed.
+
+2020-06-30  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_check_commit.py: Print revision
+	of original_info.
+	* gcc-changelog/git_commit.py: Support Revert commits.
+
+2020-06-30  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_check_commit.py: Use GitInfo
+	* gcc-changelog/git_commit.py: Add GitInfo class.
+	* gcc-changelog/git_email.py: Use GitInfo class.
+	* gcc-changelog/git_repository.py: Likewise.
+
+2020-06-24  Ilya Leoshkevich  <iii@linux.ibm.com>
+
+	* download_prerequisites: Support AIX and OpenBSD unames.
+	Pipe `{gzip,bzip2} -d` to `tar -xf -`.
+
+2020-06-18  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_update_version.py: First checkout and then
+	run git pull ---rebase.
+
+2020-06-18  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_update_version.py: Support merge commits
+	and walk only on the branch that is being merged and generate
+	missing ChangeLog entries.
+
+2020-06-18  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Fix Backported from timestamp when
+	use_commit_ts=True is used.
+
+2020-06-17  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Print 'Backported from master'
+	heading to backported commits.
+	* gcc-changelog/test_email.py: Test it.
+	* gcc-changelog/test_patches.txt: Add new patch.
+	* gcc-changelog/git_repository.py: Add commit_to_date hook.
+	* gcc-changelog/git_email.py: Add fuzzy implementation
+	of commit_to_date_hook.
+
+2020-06-11  Jonathan Wakely  <jwakely@redhat.com>
+
+	* prepare-commit-msg: Use the gcc-config.mklog-hook-type Git
+	config key instead of the GCC_FORCE_MKLOG environment variable.
+	Optionally disable generating a new ChangeLog template for
+	amended commits when the existing log is still OK.
+
+2020-06-11  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_update_version.py: Add --curent argument.
+
+2020-06-11  Martin Liska  <mliska@suse.cz>
+
+	* prepare-commit-msg: Replace ENV variable with a git config
+	value.
+
+2020-06-11  Jonathan Wakely  <jwakely@redhat.com>
+
+	* prepare-commit-msg: Use 'tee' to save the diff to a file
+	instead of running 'git diff' twice.
+
+2020-06-10  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Fix renamed files in
+	parse_git_name_status.
+	* gcc-changelog/test_email.py: Add test for it.
+
+2020-06-10  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Add more supported prefixes.
+	* gcc-changelog/test_email.py: Fix one flake8 error.
+	* gcc-changelog/test_patches.txt: Add tested for newly
+	supported prefixes.
+
+2020-06-10  Jonathan Wakely  <jwakely@redhat.com>
+
+	* gcc-changelog/git_commit.py (GitCommit.parse_changelog):
+	Improve error strings.
+	* gcc-changelog/test_email.py: Update expected errors.
+
+2020-06-09  Jonathan Wakely  <jwakely@redhat.com>
+
+	* gcc-changelog/git_email.py: Set exit status on error.
+
+2020-06-09  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Fix ChangeLog regex in order to
+	match the top-level ChangeLog.
+	* gcc-changelog/test_email.py: Add test.
+	* gcc-changelog/test_patches.txt: Likewise.
+
+2020-06-02  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Support foo/bar/*: patterns in
+	wildcard_prefixes locations.
+	* gcc-changelog/test_email.py: Test it.
+	* gcc-changelog/test_patches.txt: Add 3 new patches.
+
+2020-06-02  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	* gcc-changelog/git_commit.py (ignored_prefixes): Add
+	gcc/testsuite/gdc.test/.
+
+2020-06-02  Jonathan Wakely  <jwakely@redhat.com>
+
+	* gcc-changelog/test_email.py (TestGccChangelog.test_long_lines):
+	Update expected error message.
+
+2020-06-02  Jonathan Wakely  <jwakely@redhat.com>
+
+	* gcc-changelog/git_commit.py (GitCommit.parse_changelog): Fix
+	grammar.
+
+2020-06-02  Jonathan Wakely  <jwakely@redhat.com>
+
+	* prepare-commit-msg: Do nothing if the mklog.py script isn't
+	present.
+
+2020-06-02  Jonathan Wakely  <jwakely@redhat.com>
+
+	* gcc-changelog/git_commit.py (GitCommit.check_mentioned_files):
+	Improve error text.
+
+2020-05-31  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	* config-list.mk (LIST): Add v850e1-elf.
+
+2020-05-31  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	* config-list.mk (LIST): Add or1k-elf, or1k-linux-*, and or1k-rtems.
+
+2020-05-31  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	* config-list.mk (LIST): Remove arm-wrs-vxworks.
+
+2020-05-31  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	* config-list.mk (LIST): Remove cris-linux, crisv32-elf, and
+	crisv32-linux.
+
+2020-05-31  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	* config-list.mk (LIST): Add pru-elf.
+
+2020-05-29  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	* config-list.mk (LIST): Remove rs6000-ibm-aix5.3.0.
+
+2020-05-29  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Find empty change descriptions.
+	* gcc-changelog/test_email.py: New test.
+	* gcc-changelog/test_patches.txt: New patch that tests that.
+
+2020-05-29  Martin Liska  <mliska@suse.cz>
+
+	* git-backport.py: The script did 'git co HEAD~' when
+	there was no modified ChangeLog file in a successful
+	git cherry pick.
+	Run cherry-pick --continue without editor.
+
+2020-05-29  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Properly
+	handle duplicite authors.
+	* gcc-changelog/test_email.py: New test.
+	* gcc-changelog/test_patches.txt: New patch.
+
+2020-05-28  Pierre-Marie de Rodat  <derodat@adacore.com>
+
+	* gcc-changelog/git_email.py (GitEmail.__init__): Interpret file
+	renamings as a file deletion plus a file addition.
+	* gcc-changelog/git_repository.py (parse_git_revisions):
+	Likewise.
+	* gcc-changelog/test_email.py: New testcase.
+	* gcc-changelog/test_patches.txt: New testcase.
+
+2020-05-28  Martin Liska  <mliska@suse.cz>
+
+	* check-params-in-docs.py: Update to new format
+	of help.  Apply flake8 corrections.
+
+2020-05-28  Martin Liska  <mliska@suse.cz>
+
+	* mklog.py: Support renaming of files.
+	One needs unidiff 0.6.0+.
+	* test_mklog.py: Test it.
+
+2020-05-27  Martin Liska  <mliska@suse.cz>
+
+	* gcc-git-customization.sh: Use git-backport.py to drop
+	all changes for ChangeLog files.
+	* git-backport.py: New file.
+
+2020-05-27  Martin Liska  <mliska@suse.cz>
+
+	* gcc-git-customization.sh: Rename
+	commit-mklog to gcc-commit-mklog.
+
+2020-05-27  Martin Liska  <mliska@suse.cz>
+
+	* prepare-commit-msg: Save diff to a file if
+	the GCC_GIT_DIFF_FILE variable is set.
+
+2020-05-26  Pierre-Marie de Rodat  <derodat@adacore.com>
+
+	* gcc-changelog/git_commit.py (ChangeLogEntry): Handle entries
+	with multi-line file lists.
+	* gcc-changelog/test_email.py: New testcase.
+	* gcc-changelog/test_patches.txt: Likewise.
+
+2020-05-26  Pierre-Marie de Rodat  <derodat@adacore.com>
+
+	* gcc-changelog/git_update_version.py: Close file objects after
+	use.
+	* gcc-changelog/git_email.py: Likewise.
+	* gcc-changelog/test_email.py: Likewise.
+
+2020-05-26  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_update_version.py: Add 2 new options.
+
+2020-05-26  Alexandre Oliva  <oliva@gnu.org>
+
+	* gcc-changelog/git_commit.py (changelog_regex): Accept optional
+	'for' prefix.
+
+2020-05-26  Alexandre Oliva  <oliva@adacore.com>
+
+	* compare-debug: Adjust for .gkd files named as dump files,
+	with the source suffix rather than the object suffix.
+
+2020-05-26  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Parse changelog entries for
+	ignored locations.
+	* gcc-changelog/test_email.py: Add new test for it.
+	* gcc-changelog/test_patches.txt: Likewise.
+
+2020-05-26  Jason Merrill  <jason@redhat.com>
+
+	* prepare-commit-msg: New file.
+	* gcc-git-customization.sh: Install it.  Add commit-mklog alias.
+	* mklog.py: Add new option -c which appends
+	to a ChangeLog file.
+
+2020-05-25  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Add trailing '/'
+	for libdruntime.  Allow empty changelog for
+	only ignored files.
+	* gcc-changelog/test_email.py: New test for go
+	patch in ignored location.
+	* gcc-changelog/test_patches.txt: Add test.
+
+2020-05-22  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc-changelog/git_commit.py: Add trailing / to
+	gcc/testsuite/go.test/test and replace gcc/go/frontend/
+	with gcc/go/gofrontend/ in ignored locations.
+
+2020-05-22  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Add gcc/testsuite/go.test/test
+	to ignored locations.
+
+2020-05-21  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_update_version.py: Prepare the script, the
+	only missing piece is pushing of the updated branches.
+
+2020-05-21  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Support DR entries/
+	* gcc-changelog/test_email.py: New test for it.
+	* gcc-changelog/test_patches.txt: New patch for it.
+
+2020-05-21  Martin Liska  <mliska@suse.cz>
+
+	* mklog.py: Support DR parsing.
+	* test_mklog.py: New test for DR parsing.
+
+2020-05-20  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Add author_tuple
+	only if not present in author_lines.
+	* gcc-changelog/test_email.py: New test.
+	* gcc-changelog/test_patches.txt: Add new patch.
+
+2020-05-20  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Refactor to make flake8 happy.
+	* gcc-changelog/test_email.py: Add new test.
+	* gcc-changelog/test_patches.txt: Add new patch.
+
+2020-05-20  Frederik Harwath  <frederik@codesourcery.com>
+
+	* gcc-changelog/git_commit.py: Skip over lines starting
+	with "Reviewed-by: ", "Reviewed-on: ", or "Signed-off-by: "
+
+2020-05-20  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_check_commit.py: Change
+	--allow-non-strict-mode to --non-strict-mode.
+
+2020-05-20  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Support cherry pick
+	prefix.
+	* gcc-changelog/test_email.py: Test it.
+	* gcc-changelog/test_patches.txt: Add new patch.
+	* gcc-git-customization.sh: Add gcc-backport.
+
+2020-05-19  Martin Liska  <mliska@suse.cz>
+
+	* mklog.py: Use REST API for bug title downloading.
+
+2020-05-19  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Add param use_commit_ts
+	for to_changelog_entries.
+	* gcc-changelog/git_update_version.py: Se use_commit_ts to True.
+
+2020-05-19  Martin Liska  <mliska@suse.cz>
+
+	* mklog.py: Skip GTY for struct names.  Make flake8 happy.
+	* test_mklog.py: Add test for GTY.
+
+2020-05-19  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_update_version.py:
+	Fill up entries in reverse order.
+
+2020-05-19  Martin Liska  <mliska@suse.cz>
+
+	* gcc-git-customization.sh: Add
+	alias.gcc-mklog new hook.
+	* mklog.py: New file.
+	* test_mklog.py: New file.
+
+2020-05-19  Martin Liska  <mliska@suse.cz>
+
+	* legacy/mklog: Moved from mklog.
+	* legacy/mklog.pl: Moved from mklog.pl.
+
+2020-05-19  Martin Liska  <mliska@suse.cz>
+
+	* gcc-git-customization.sh: Add gcc-verify alias
+	that uses contrib/gcc-changelog/git_check_commit.py.
+
+2020-05-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dg-extract-results.py: Handle GDB specific test types.
+	* dg-extract-results.sh: Likewise.
+
+2020-05-14  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/test_email.py: New file.
+	* gcc-changelog/test_patches.txt: New file.
+
+2020-05-13  Patrick Palka  <ppalka@redhat.com>
+
+	* vimrc: Reduce textwidth to 72 for Git commit messages.
+
+2020-05-13  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_check_commit.py: Add default argument HEAD
+	for revisions and improve error message output.
+
+2020-05-13  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_commit.py: Restore print_output syntax
+	in git_commit.py.
+
+2020-05-13  Martin Liska  <mliska@suse.cz>
+
+	* gcc-changelog/git_check_commit.py: New file.
+	* gcc-changelog/git_commit.py: New file.
+	* gcc-changelog/git_email.py: New file.
+	* gcc-changelog/git_repository.py: New file.
+	* gcc-changelog/git_update_version.py: New file.
+
 2020-04-17  Martin Liska  <mliska@suse.cz>
 
 	* vimrc: We do not want to modify tab options
diff --git a/contrib/check-params-in-docs.py b/contrib/check-params-in-docs.py
index 6cff090..dfbfa3d 100755
--- a/contrib/check-params-in-docs.py
+++ b/contrib/check-params-in-docs.py
@@ -22,16 +22,19 @@
 #
 #
 
-import sys
-import json
 import argparse
+from itertools import dropwhile, takewhile
 
-from itertools import *
 
 def get_param_tuple(line):
-    line = line.strip()
+    line = line.strip().replace('--param=', '')
     i = line.find(' ')
-    return (line[:i], line[i:].strip())
+    name = line[:i]
+    if '=' in name:
+        name = name[:name.find('=')]
+    description = line[i:].strip()
+    return (name, description)
+
 
 parser = argparse.ArgumentParser()
 parser.add_argument('texi_file')
@@ -49,8 +52,8 @@
 
 # Find section in .texi manual with parameters
 texi = ([x.strip() for x in open(args.texi_file).readlines()])
-texi = dropwhile(lambda x: not 'item --param' in x, texi)
-texi = takewhile(lambda x: not '@node Instrumentation Options' in x, texi)
+texi = dropwhile(lambda x: 'item --param' not in x, texi)
+texi = takewhile(lambda x: '@node Instrumentation Options' not in x, texi)
 texi = list(texi)[1:]
 
 token = '@item '
diff --git a/contrib/compare-debug b/contrib/compare-debug
index 22870cf..cf80ae3 100755
--- a/contrib/compare-debug
+++ b/contrib/compare-debug
@@ -2,7 +2,7 @@
 
 # Compare stripped copies of two given object files.
 
-# Copyright (C) 2007, 2008, 2009, 2010, 2012 Free Software Foundation
+# Copyright (C) 2007, 2008, 2009, 2010, 2012, 2020 Free Software Foundation
 # Originally by Alexandre Oliva <aoliva@redhat.com>
 
 # This file is part of GCC.
@@ -183,8 +183,28 @@
 
 trap "exit $status; exit" 0 1 2 15
 
-if test -f "$1".gkd || test -f "$2".gkd; then
-  if cmp "$1".gkd "$2".gkd; then
+# Replace the suffix in $1 and $2 with .*.gkd, compare them if a
+# single file is found by the globbing.
+base1=`echo "$1" | sed '$s,\.[^.]*$,,'` gkd1=
+for f in "$base1".*.gkd; do
+  if test "x$gkd1" != x; then
+    gkd1=
+    break
+  elif test -f "$f"; then
+    gkd1=$f
+  fi
+done
+base2=`echo "$2" | sed '$s,\.[^.]*$,,'` gkd2=
+for f in "$base2".*.gkd; do
+  if test "x$gkd2" != x; then
+    gkd2=
+    break
+  elif test -f "$f"; then
+    gkd2=$f
+  fi
+done
+if test "x$gkd1" != x || test "x$gkd2" != x; then
+  if cmp "${gkd1-/dev/null}" "${gkd2-/dev/null}"; then
     :
   else
     status=$?
diff --git a/contrib/config-list.mk b/contrib/config-list.mk
index d154286..5818f7d 100644
--- a/contrib/config-list.mk
+++ b/contrib/config-list.mk
@@ -29,19 +29,18 @@
 #     > make.out 2>&1 &
 #
 
-# v850e1-elf is rejected by config.sub
 LIST = aarch64-elf aarch64-linux-gnu aarch64-rtems \
   alpha-linux-gnu alpha-netbsd alpha-openbsd \
   alpha64-dec-vms alpha-dec-vms \
   amdgcn-amdhsa \
   arc-elf32OPT-with-cpu=arc600 arc-elf32OPT-with-cpu=arc700 \
   arc-linux-uclibcOPT-with-cpu=arc700 arceb-linux-uclibcOPT-with-cpu=arc700 \
-  arm-wrs-vxworks arm-netbsdelf \
+  arm-netbsdelf \
   arm-linux-androideabi arm-uclinux_eabi arm-eabi arm-rtems \
   arm-symbianelf avr-elf \
   bfin-elf bfin-uclinux bfin-linux-uclibc bfin-rtems bfin-openbsd \
   bpf-unknown-none \
-  c6x-elf c6x-uclinux cr16-elf cris-elf cris-linux crisv32-elf crisv32-linux \
+  c6x-elf c6x-uclinux cr16-elf cris-elf \
   csky-elf csky-linux-gnu \
   epiphany-elf epiphany-elfOPT-with-stack-offset=16 fido-elf \
   fr30-elf frv-elf frv-linux ft32-elf h8300-elf hppa-linux-gnu \
@@ -72,6 +71,7 @@
   nds32le-elf nds32be-elf \
   nios2-elf nios2-linux-gnu nios2-rtems \
   nvptx-none \
+  or1k-elf or1k-linux-uclibc or1k-linux-musl or1k-rtems \
   pdp11-aout \
   powerpc-darwin8 \
   powerpc-darwin7 powerpc64-darwin powerpc-freebsd6 powerpc-netbsd \
@@ -82,8 +82,9 @@
   powerpc-wrs-vxworks powerpc-wrs-vxworksae powerpc-wrs-vxworksmils \
   powerpc-lynxos powerpcle-elf \
   powerpcle-eabisim powerpcle-eabi \
+  pru-elf \
   riscv32-unknown-linux-gnu riscv64-unknown-linux-gnu \
-  rs6000-ibm-aix5.3.0 rs6000-ibm-aix6.1 rs6000-ibm-aix7.1 \
+  rs6000-ibm-aix6.1 rs6000-ibm-aix7.1 \
   rl78-elf rx-elf s390-linux-gnu s390x-linux-gnu s390x-ibm-tpf sh-elf \
   shle-linux sh-netbsdelf sh-superh-elf \
   sh-rtems sh-wrs-vxworks sparc-elf \
@@ -93,7 +94,7 @@
   sparc-wrs-vxworks sparc64-elf sparc64-rtems sparc64-linux sparc64-freebsd6 \
   sparc64-netbsd sparc64-openbsd \
   tilegx-linux-gnu tilegxbe-linux-gnu tilepro-linux-gnu \
-  v850e-elf v850-elf v850-rtems vax-linux-gnu \
+  v850e1-elf v850e-elf v850-elf v850-rtems vax-linux-gnu \
   vax-netbsdelf vax-openbsd visium-elf x86_64-apple-darwin \
   x86_64-pc-linux-gnuOPT-with-fpmath=avx \
   x86_64-elfOPT-with-fpmath=sse x86_64-freebsd6 x86_64-netbsd \
diff --git a/contrib/dg-extract-results.py b/contrib/dg-extract-results.py
index 7100794..30aa687 100644
--- a/contrib/dg-extract-results.py
+++ b/contrib/dg-extract-results.py
@@ -117,7 +117,7 @@
         self.tool_re = re.compile (r'^\t\t=== (.*) tests ===$')
         self.result_re = re.compile (r'^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED'
                                      r'|WARNING|ERROR|UNSUPPORTED|UNTESTED'
-                                     r'|KFAIL|KPASS):\s*(.+)')
+                                     r'|KFAIL|KPASS|PATH|DUPLICATE):\s*(.+)')
         self.completed_re = re.compile (r'.* completed at (.*)')
         # Pieces of text to write at the head of the output.
         # start_line is a pair in which the first element is a datetime
@@ -143,7 +143,9 @@
             '# of known failures\t\t',
             '# of untested testcases\t\t',
             '# of unresolved testcases\t',
-            '# of unsupported tests\t\t'
+            '# of unsupported tests\t\t',
+            '# of paths in test names\t',
+            '# of duplicate test names\t'
         ]
         self.runs = dict()
 
diff --git a/contrib/dg-extract-results.sh b/contrib/dg-extract-results.sh
index f948088..ff6c50d 100755
--- a/contrib/dg-extract-results.sh
+++ b/contrib/dg-extract-results.sh
@@ -326,7 +326,7 @@
   }
 }
 /^\t\t=== .* ===$/ { curvar = ""; next }
-/^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED|WARNING|ERROR|UNSUPPORTED|UNTESTED|KFAIL|KPASS):/ {
+/^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED|WARNING|ERROR|UNSUPPORTED|UNTESTED|KFAIL|KPASS|PATH|DUPLICATE):/ {
   testname=\$2
   # Ugly hack for gfortran.dg/dg.exp
   if ("$TOOL" == "gfortran" && testname ~ /^gfortran.dg\/g77\//)
@@ -400,6 +400,7 @@
   variant="$VAR"
   tool="$TOOL"
   passcnt=0; failcnt=0; untstcnt=0; xpasscnt=0; xfailcnt=0; kpasscnt=0; kfailcnt=0; unsupcnt=0; unrescnt=0; dgerrorcnt=0;
+  pathcnt=0; dupcnt=0
   curvar=""; insummary=0
 }
 /^Running target /		{ curvar = \$3; next }
@@ -414,6 +415,8 @@
 /^# of untested testcases/	{ if (insummary == 1) untstcnt += \$5; next; }
 /^# of unresolved testcases/	{ if (insummary == 1) unrescnt += \$5; next; }
 /^# of unsupported tests/	{ if (insummary == 1) unsupcnt += \$5; next; }
+/^# of paths in test names/	{ if (insummary == 1) pathcnt += \$7; next; }
+/^# of duplicate test names/	{ if (insummary == 1) dupcnt += \$6; next; }
 /^$/				{ if (insummary == 1)
 				    { insummary = 0; curvar = "" }
 				  next
@@ -431,6 +434,8 @@
   if (untstcnt != 0) printf ("# of untested testcases\t\t%d\n", untstcnt)
   if (unrescnt != 0) printf ("# of unresolved testcases\t%d\n", unrescnt)
   if (unsupcnt != 0) printf ("# of unsupported tests\t\t%d\n", unsupcnt)
+  if (pathcnt != 0) printf ("# of paths in test names\t%d\n", pathcnt)
+  if (dupcnt != 0) printf ("# of duplicate test names\t%d\n", dupcnt)
 }
 EOF
 
@@ -452,6 +457,7 @@
 BEGIN {
   tool="$TOOL"
   passcnt=0; failcnt=0; untstcnt=0; xpasscnt=0; xfailcnt=0; kfailcnt=0; unsupcnt=0; unrescnt=0; dgerrorcnt=0
+  pathcnt=0; dupcnt=0
 }
 /^# of DejaGnu errors/		{ dgerrorcnt += \$5 }
 /^# of expected passes/		{ passcnt += \$5 }
@@ -463,6 +469,8 @@
 /^# of untested testcases/	{ untstcnt += \$5 }
 /^# of unresolved testcases/	{ unrescnt += \$5 }
 /^# of unsupported tests/	{ unsupcnt += \$5 }
+/^# of paths in test names/	{ pathcnt += \$7 }
+/^# of duplicate test names/	{ dupcnt += \$6 }
 END {
   printf ("\n\t\t=== %s Summary ===\n\n", tool)
   if (dgerrorcnt != 0) printf ("# of DejaGnu errors\t\t%d\n", dgerrorcnt)
@@ -475,6 +483,8 @@
   if (untstcnt != 0) printf ("# of untested testcases\t\t%d\n", untstcnt)
   if (unrescnt != 0) printf ("# of unresolved testcases\t%d\n", unrescnt)
   if (unsupcnt != 0) printf ("# of unsupported tests\t\t%d\n", unsupcnt)
+  if (pathcnt != 0) printf ("# of paths in test names\t%d\n", pathcnt)
+  if (dupcnt != 0) printf ("# of duplicate test names\t%d\n", dupcnt)
 }
 EOF
 
diff --git a/contrib/download_prerequisites b/contrib/download_prerequisites
index aa0356e6..7d0c4b5 100755
--- a/contrib/download_prerequisites
+++ b/contrib/download_prerequisites
@@ -47,9 +47,12 @@
 OS=$(uname)
 
 case $OS in
-  "Darwin"|"FreeBSD"|"DragonFly")
+  "Darwin"|"FreeBSD"|"DragonFly"|"AIX")
     chksum='shasum -a 512 --check'
   ;;
+  "OpenBSD")
+    chksum='sha512 -c'
+  ;;
   *)
     chksum='sha512sum -c'
   ;;
@@ -219,7 +222,7 @@
 do
     if [ ${force} -gt 0 ]; then rm -f "${directory}/${ar}"; fi
     [ -e "${directory}/${ar}" ]                                               \
-        || ${fetch} --no-verbose -O "${directory}/${ar}" "${base_url}${ar}"       \
+        || ( cd "${directory}" && ${fetch} --no-verbose "${base_url}${ar}" )  \
         || die "Cannot download ${ar} from ${base_url}"
 done
 unset ar
@@ -242,8 +245,19 @@
 do
     package="${ar%.tar*}"
     if [ ${force} -gt 0 ]; then rm -rf "${directory}/${package}"; fi
+    case $ar in
+    *.gz)
+	uncompress='gzip -d'
+	;;
+    *.bz2)
+	uncompress='bzip2 -d'
+	;;
+    *)
+	uncompress='cat'
+	;;
+    esac
     [ -e "${directory}/${package}" ]                                          \
-        || ( cd "${directory}" && tar -xf "${ar}" )                           \
+        || ( cd "${directory}" && $uncompress <"${ar}" | tar -xf - )          \
         || die "Cannot extract package from ${ar}"
     unset package
 done
diff --git a/contrib/gcc-changelog/git_check_commit.py b/contrib/gcc-changelog/git_check_commit.py
new file mode 100755
index 0000000..935425e
--- /dev/null
+++ b/contrib/gcc-changelog/git_check_commit.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python3
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3, or (at your option) any later
+# version.
+#
+# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.  */
+
+import argparse
+
+from git_repository import parse_git_revisions
+
+parser = argparse.ArgumentParser(description='Check git ChangeLog format '
+                                 'of a commit')
+parser.add_argument('revisions', default='HEAD', nargs='?',
+                    help='Git revisions (e.g. hash~5..hash or just hash)')
+parser.add_argument('-g', '--git-path', default='.',
+                    help='Path to git repository')
+parser.add_argument('-p', '--print-changelog', action='store_true',
+                    help='Print final changelog entires')
+parser.add_argument('-n', '--non-strict-mode', action='store_true',
+                    help='Use non-strict mode (allow changes in ChangeLog and '
+                    'other automatically updated files).')
+args = parser.parse_args()
+
+retval = 0
+for git_commit in parse_git_revisions(args.git_path, args.revisions,
+                                      not args.non_strict_mode):
+    res = 'OK' if git_commit.success else 'FAILED'
+    print('Checking %s: %s' % (git_commit.original_info.hexsha, res))
+    if git_commit.success:
+        if args.print_changelog:
+            git_commit.print_output()
+    else:
+        for error in git_commit.errors:
+            print('ERR: %s' % error)
+        retval = 1
+
+exit(retval)
diff --git a/contrib/gcc-changelog/git_commit.py b/contrib/gcc-changelog/git_commit.py
new file mode 100755
index 0000000..5a9cc4c
--- /dev/null
+++ b/contrib/gcc-changelog/git_commit.py
@@ -0,0 +1,677 @@
+#!/usr/bin/env python3
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3, or (at your option) any later
+# version.
+#
+# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.  */
+
+import os
+import re
+
+changelog_locations = set([
+    'config',
+    'contrib',
+    'contrib/header-tools',
+    'contrib/reghunt',
+    'contrib/regression',
+    'fixincludes',
+    'gcc/ada',
+    'gcc/analyzer',
+    'gcc/brig',
+    'gcc/c',
+    'gcc/c-family',
+    'gcc',
+    'gcc/cp',
+    'gcc/d',
+    'gcc/fortran',
+    'gcc/go',
+    'gcc/jit',
+    'gcc/lto',
+    'gcc/objc',
+    'gcc/objcp',
+    'gcc/po',
+    'gcc/testsuite',
+    'gnattools',
+    'gotools',
+    'include',
+    'intl',
+    'libada',
+    'libatomic',
+    'libbacktrace',
+    'libcc1',
+    'libcpp',
+    'libcpp/po',
+    'libdecnumber',
+    'libffi',
+    'libgcc',
+    'libgcc/config/avr/libf7',
+    'libgcc/config/libbid',
+    'libgfortran',
+    'libgomp',
+    'libhsail-rt',
+    'libiberty',
+    'libitm',
+    'libobjc',
+    'liboffloadmic',
+    'libphobos',
+    'libquadmath',
+    'libsanitizer',
+    'libssp',
+    'libstdc++-v3',
+    'libvtv',
+    'lto-plugin',
+    'maintainer-scripts',
+    'zlib'])
+
+bug_components = set([
+    'ada',
+    'analyzer',
+    'boehm-gc',
+    'bootstrap',
+    'c',
+    'c++',
+    'd',
+    'debug',
+    'demangler',
+    'driver',
+    'fastjar',
+    'fortran',
+    'gcov-profile',
+    'go',
+    'hsa',
+    'inline-asm',
+    'ipa',
+    'java',
+    'jit',
+    'libbacktrace',
+    'libf2c',
+    'libffi',
+    'libfortran',
+    'libgcc',
+    'libgcj',
+    'libgomp',
+    'libitm',
+    'libobjc',
+    'libquadmath',
+    'libstdc++',
+    'lto',
+    'middle-end',
+    'modula2',
+    'objc',
+    'objc++',
+    'other',
+    'pch',
+    'pending',
+    'plugins',
+    'preprocessor',
+    'regression',
+    'rtl-optimization',
+    'sanitizer',
+    'spam',
+    'target',
+    'testsuite',
+    'translation',
+    'tree-optimization',
+    'web'])
+
+ignored_prefixes = [
+    'gcc/d/dmd/',
+    'gcc/go/gofrontend/',
+    'gcc/testsuite/gdc.test/',
+    'gcc/testsuite/go.test/test/',
+    'libgo/',
+    'libphobos/libdruntime/',
+    'libphobos/src/',
+    'libsanitizer/',
+    ]
+
+wildcard_prefixes = [
+    'gcc/testsuite/',
+    'libstdc++-v3/doc/html/'
+    ]
+
+misc_files = [
+    'gcc/DATESTAMP',
+    'gcc/BASE-VER',
+    'gcc/DEV-PHASE'
+    ]
+
+author_line_regex = \
+        re.compile(r'^(?P<datetime>\d{4}-\d{2}-\d{2})\ {2}(?P<name>.*  <.*>)')
+additional_author_regex = re.compile(r'^\t(?P<spaces>\ *)?(?P<name>.*  <.*>)')
+changelog_regex = re.compile(r'^(?:[fF]or +)?([a-z0-9+-/]*)ChangeLog:?')
+pr_regex = re.compile(r'\tPR (?P<component>[a-z+-]+\/)?([0-9]+)$')
+dr_regex = re.compile(r'\tDR ([0-9]+)$')
+star_prefix_regex = re.compile(r'\t\*(?P<spaces>\ *)(?P<content>.*)')
+end_of_location_regex = re.compile(r'[\[<(:]')
+
+LINE_LIMIT = 100
+TAB_WIDTH = 8
+CO_AUTHORED_BY_PREFIX = 'co-authored-by: '
+CHERRY_PICK_PREFIX = '(cherry picked from commit '
+REVERT_PREFIX = 'This reverts commit '
+
+REVIEW_PREFIXES = ('reviewed-by: ', 'reviewed-on: ', 'signed-off-by: ',
+                   'acked-by: ', 'tested-by: ', 'reported-by: ',
+                   'suggested-by: ')
+DATE_FORMAT = '%Y-%m-%d'
+
+
+class Error:
+    def __init__(self, message, line=None):
+        self.message = message
+        self.line = line
+
+    def __repr__(self):
+        s = self.message
+        if self.line:
+            s += ':"%s"' % self.line
+        return s
+
+
+class ChangeLogEntry:
+    def __init__(self, folder, authors, prs):
+        self.folder = folder
+        # The 'list.copy()' function is not available before Python 3.3
+        self.author_lines = list(authors)
+        self.initial_prs = list(prs)
+        self.prs = list(prs)
+        self.lines = []
+        self.files = []
+        self.file_patterns = []
+
+    def parse_file_names(self):
+        # Whether the content currently processed is between a star prefix the
+        # end of the file list: a colon or an open paren.
+        in_location = False
+
+        for line in self.lines:
+            # If this line matches the star prefix, start the location
+            # processing on the information that follows the star.
+            m = star_prefix_regex.match(line)
+            if m:
+                in_location = True
+                line = m.group('content')
+
+            if in_location:
+                # Strip everything that is not a filename in "line":
+                # entities "(NAME)", cases "<PATTERN>", conditions
+                # "[COND]", entry text (the colon, if present, and
+                # anything that follows it).
+                m = end_of_location_regex.search(line)
+                if m:
+                    line = line[:m.start()]
+                    in_location = False
+
+                # At this point, all that's left is a list of filenames
+                # separated by commas and whitespaces.
+                for file in line.split(','):
+                    file = file.strip()
+                    if file:
+                        if file.endswith('*'):
+                            self.file_patterns.append(file[:-1])
+                        else:
+                            self.files.append(file)
+
+    @property
+    def datetime(self):
+        for author in self.author_lines:
+            if author[1]:
+                return author[1]
+        return None
+
+    @property
+    def authors(self):
+        return [author_line[0] for author_line in self.author_lines]
+
+    @property
+    def is_empty(self):
+        return not self.lines and self.prs == self.initial_prs
+
+    def contains_author(self, author):
+        for author_lines in self.author_lines:
+            if author_lines[0] == author:
+                return True
+        return False
+
+
+class GitInfo:
+    def __init__(self, hexsha, date, author, lines, modified_files):
+        self.hexsha = hexsha
+        self.date = date
+        self.author = author
+        self.lines = lines
+        self.modified_files = modified_files
+
+
+class GitCommit:
+    def __init__(self, info, strict=True, commit_to_info_hook=None):
+        self.original_info = info
+        self.info = info
+        self.message = None
+        self.changes = None
+        self.changelog_entries = []
+        self.errors = []
+        self.top_level_authors = []
+        self.co_authors = []
+        self.top_level_prs = []
+        self.cherry_pick_commit = None
+        self.revert_commit = None
+        self.commit_to_info_hook = commit_to_info_hook
+
+        # Identify first if the commit is a Revert commit
+        for line in self.info.lines:
+            if line.startswith(REVERT_PREFIX):
+                self.revert_commit = line[len(REVERT_PREFIX):].rstrip('.')
+                break
+        if self.revert_commit:
+            self.info = self.commit_to_info_hook(self.revert_commit)
+
+        project_files = [f for f in self.info.modified_files
+                         if self.is_changelog_filename(f[0])
+                         or f[0] in misc_files]
+        ignored_files = [f for f in self.info.modified_files
+                         if self.in_ignored_location(f[0])]
+        if len(project_files) == len(self.info.modified_files):
+            # All modified files are only MISC files
+            return
+        elif project_files and strict:
+            self.errors.append(Error('ChangeLog, DATESTAMP, BASE-VER and '
+                                     'DEV-PHASE updates should be done '
+                                     'separately from normal commits'))
+            return
+
+        all_are_ignored = (len(project_files) + len(ignored_files)
+                           == len(self.info.modified_files))
+        self.parse_lines(all_are_ignored)
+        if self.changes:
+            self.parse_changelog()
+            self.parse_file_names()
+            self.check_for_empty_description()
+            self.deduce_changelog_locations()
+            self.check_file_patterns()
+            if not self.errors:
+                self.check_mentioned_files()
+                self.check_for_correct_changelog()
+
+    @property
+    def success(self):
+        return not self.errors
+
+    @property
+    def new_files(self):
+        return [x[0] for x in self.info.modified_files if x[1] == 'A']
+
+    @classmethod
+    def is_changelog_filename(cls, path):
+        return path.endswith('/ChangeLog') or path == 'ChangeLog'
+
+    @classmethod
+    def find_changelog_location(cls, name):
+        if name.startswith('\t'):
+            name = name[1:]
+        if name.endswith(':'):
+            name = name[:-1]
+        if name.endswith('/'):
+            name = name[:-1]
+        return name if name in changelog_locations else None
+
+    @classmethod
+    def format_git_author(cls, author):
+        assert '<' in author
+        return author.replace('<', ' <')
+
+    @classmethod
+    def parse_git_name_status(cls, string):
+        modified_files = []
+        for entry in string.split('\n'):
+            parts = entry.split('\t')
+            t = parts[0]
+            if t == 'A' or t == 'D' or t == 'M':
+                modified_files.append((parts[1], t))
+            elif t.startswith('R'):
+                modified_files.append((parts[1], 'D'))
+                modified_files.append((parts[2], 'A'))
+        return modified_files
+
+    def parse_lines(self, all_are_ignored):
+        body = self.info.lines
+
+        for i, b in enumerate(body):
+            if not b:
+                continue
+            if (changelog_regex.match(b) or self.find_changelog_location(b)
+                    or star_prefix_regex.match(b) or pr_regex.match(b)
+                    or dr_regex.match(b) or author_line_regex.match(b)):
+                self.changes = body[i:]
+                return
+        if not all_are_ignored:
+            self.errors.append(Error('cannot find a ChangeLog location in '
+                                     'message'))
+
+    def parse_changelog(self):
+        last_entry = None
+        will_deduce = False
+        for line in self.changes:
+            if not line:
+                if last_entry and will_deduce:
+                    last_entry = None
+                continue
+            if line != line.rstrip():
+                self.errors.append(Error('trailing whitespace', line))
+            if len(line.replace('\t', ' ' * TAB_WIDTH)) > LINE_LIMIT:
+                self.errors.append(Error('line exceeds %d character limit'
+                                         % LINE_LIMIT, line))
+            m = changelog_regex.match(line)
+            if m:
+                last_entry = ChangeLogEntry(m.group(1).rstrip('/'),
+                                            self.top_level_authors,
+                                            self.top_level_prs)
+                self.changelog_entries.append(last_entry)
+            elif self.find_changelog_location(line):
+                last_entry = ChangeLogEntry(self.find_changelog_location(line),
+                                            self.top_level_authors,
+                                            self.top_level_prs)
+                self.changelog_entries.append(last_entry)
+            else:
+                author_tuple = None
+                pr_line = None
+                if author_line_regex.match(line):
+                    m = author_line_regex.match(line)
+                    author_tuple = (m.group('name'), m.group('datetime'))
+                elif additional_author_regex.match(line):
+                    m = additional_author_regex.match(line)
+                    if len(m.group('spaces')) != 4:
+                        msg = 'additional author must be indented with '\
+                              'one tab and four spaces'
+                        self.errors.append(Error(msg, line))
+                    else:
+                        author_tuple = (m.group('name'), None)
+                elif pr_regex.match(line):
+                    component = pr_regex.match(line).group('component')
+                    if not component:
+                        self.errors.append(Error('missing PR component', line))
+                        continue
+                    elif not component[:-1] in bug_components:
+                        self.errors.append(Error('invalid PR component', line))
+                        continue
+                    else:
+                        pr_line = line.lstrip()
+                elif dr_regex.match(line):
+                    pr_line = line.lstrip()
+
+                lowered_line = line.lower()
+                if lowered_line.startswith(CO_AUTHORED_BY_PREFIX):
+                    name = line[len(CO_AUTHORED_BY_PREFIX):]
+                    author = self.format_git_author(name)
+                    self.co_authors.append(author)
+                    continue
+                elif lowered_line.startswith(REVIEW_PREFIXES):
+                    continue
+                elif line.startswith(CHERRY_PICK_PREFIX):
+                    commit = line[len(CHERRY_PICK_PREFIX):].rstrip(')')
+                    self.cherry_pick_commit = commit
+                    continue
+
+                # ChangeLog name will be deduced later
+                if not last_entry:
+                    if author_tuple:
+                        self.top_level_authors.append(author_tuple)
+                        continue
+                    elif pr_line:
+                        # append to top_level_prs only when we haven't met
+                        # a ChangeLog entry
+                        if (pr_line not in self.top_level_prs
+                                and not self.changelog_entries):
+                            self.top_level_prs.append(pr_line)
+                        continue
+                    else:
+                        last_entry = ChangeLogEntry(None,
+                                                    self.top_level_authors,
+                                                    self.top_level_prs)
+                        self.changelog_entries.append(last_entry)
+                        will_deduce = True
+                elif author_tuple:
+                    if not last_entry.contains_author(author_tuple[0]):
+                        last_entry.author_lines.append(author_tuple)
+                    continue
+
+                if not line.startswith('\t'):
+                    err = Error('line should start with a tab', line)
+                    self.errors.append(err)
+                elif pr_line:
+                    last_entry.prs.append(pr_line)
+                else:
+                    m = star_prefix_regex.match(line)
+                    if m:
+                        if len(m.group('spaces')) != 1:
+                            msg = 'one space should follow asterisk'
+                            self.errors.append(Error(msg, line))
+                        else:
+                            last_entry.lines.append(line)
+                    else:
+                        if last_entry.is_empty:
+                            msg = 'first line should start with a tab, ' \
+                                  'an asterisk and a space'
+                            self.errors.append(Error(msg, line))
+                        else:
+                            last_entry.lines.append(line)
+
+    def parse_file_names(self):
+        for entry in self.changelog_entries:
+            entry.parse_file_names()
+
+    def check_file_patterns(self):
+        for entry in self.changelog_entries:
+            for pattern in entry.file_patterns:
+                name = os.path.join(entry.folder, pattern)
+                if name not in wildcard_prefixes:
+                    msg = 'unsupported wildcard prefix'
+                    self.errors.append(Error(msg, name))
+
+    def check_for_empty_description(self):
+        for entry in self.changelog_entries:
+            for i, line in enumerate(entry.lines):
+                if (star_prefix_regex.match(line) and line.endswith(':') and
+                    (i == len(entry.lines) - 1
+                     or star_prefix_regex.match(entry.lines[i + 1]))):
+                    msg = 'missing description of a change'
+                    self.errors.append(Error(msg, line))
+
+    def get_file_changelog_location(self, changelog_file):
+        for file in self.info.modified_files:
+            if file[0] == changelog_file:
+                # root ChangeLog file
+                return ''
+            index = file[0].find('/' + changelog_file)
+            if index != -1:
+                return file[0][:index]
+        return None
+
+    def deduce_changelog_locations(self):
+        for entry in self.changelog_entries:
+            if not entry.folder:
+                changelog = None
+                for file in entry.files:
+                    location = self.get_file_changelog_location(file)
+                    if (location == ''
+                       or (location and location in changelog_locations)):
+                        if changelog and changelog != location:
+                            msg = 'could not deduce ChangeLog file, ' \
+                                  'not unique location'
+                            self.errors.append(Error(msg))
+                            return
+                        changelog = location
+                if changelog is not None:
+                    entry.folder = changelog
+                else:
+                    msg = 'could not deduce ChangeLog file'
+                    self.errors.append(Error(msg))
+
+    @classmethod
+    def in_ignored_location(cls, path):
+        for ignored in ignored_prefixes:
+            if path.startswith(ignored):
+                return True
+        return False
+
+    @classmethod
+    def get_changelog_by_path(cls, path):
+        components = path.split('/')
+        while components:
+            if '/'.join(components) in changelog_locations:
+                break
+            components = components[:-1]
+        return '/'.join(components)
+
+    def check_mentioned_files(self):
+        folder_count = len([x.folder for x in self.changelog_entries])
+        assert folder_count == len(self.changelog_entries)
+
+        mentioned_files = set()
+        mentioned_patterns = []
+        used_patterns = set()
+        for entry in self.changelog_entries:
+            if not entry.files:
+                msg = 'no files mentioned for ChangeLog in directory'
+                self.errors.append(Error(msg, entry.folder))
+            assert not entry.folder.endswith('/')
+            for file in entry.files:
+                if not self.is_changelog_filename(file):
+                    mentioned_files.add(os.path.join(entry.folder, file))
+            for pattern in entry.file_patterns:
+                mentioned_patterns.append(os.path.join(entry.folder, pattern))
+
+        cand = [x[0] for x in self.info.modified_files
+                if not self.is_changelog_filename(x[0])]
+        changed_files = set(cand)
+        for file in sorted(mentioned_files - changed_files):
+            msg = 'unchanged file mentioned in a ChangeLog'
+            self.errors.append(Error(msg, file))
+        for file in sorted(changed_files - mentioned_files):
+            if not self.in_ignored_location(file):
+                if file in self.new_files:
+                    changelog_location = self.get_changelog_by_path(file)
+                    # Python2: we cannot use next(filter(...))
+                    entries = filter(lambda x: x.folder == changelog_location,
+                                     self.changelog_entries)
+                    entries = list(entries)
+                    entry = entries[0] if entries else None
+                    if not entry:
+                        prs = self.top_level_prs
+                        if not prs:
+                            # if all ChangeLog entries have identical PRs
+                            # then use them
+                            prs = self.changelog_entries[0].prs
+                            for entry in self.changelog_entries:
+                                if entry.prs != prs:
+                                    prs = []
+                                    break
+                        entry = ChangeLogEntry(changelog_location,
+                                               self.top_level_authors,
+                                               prs)
+                        self.changelog_entries.append(entry)
+                    # strip prefix of the file
+                    assert file.startswith(entry.folder)
+                    file = file[len(entry.folder):].lstrip('/')
+                    entry.lines.append('\t* %s: New file.' % file)
+                    entry.files.append(file)
+                else:
+                    used_pattern = [p for p in mentioned_patterns
+                                    if file.startswith(p)]
+                    used_pattern = used_pattern[0] if used_pattern else None
+                    if used_pattern:
+                        used_patterns.add(used_pattern)
+                    else:
+                        msg = 'changed file not mentioned in a ChangeLog'
+                        self.errors.append(Error(msg, file))
+
+        for pattern in mentioned_patterns:
+            if pattern not in used_patterns:
+                error = 'pattern doesn''t match any changed files'
+                self.errors.append(Error(error, pattern))
+
+    def check_for_correct_changelog(self):
+        for entry in self.changelog_entries:
+            for file in entry.files:
+                full_path = os.path.join(entry.folder, file)
+                changelog_location = self.get_changelog_by_path(full_path)
+                if changelog_location != entry.folder:
+                    msg = 'wrong ChangeLog location "%s", should be "%s"'
+                    err = Error(msg % (entry.folder, changelog_location), file)
+                    self.errors.append(err)
+
+    @classmethod
+    def format_authors_in_changelog(cls, authors, timestamp, prefix=''):
+        output = ''
+        for i, author in enumerate(authors):
+            if i == 0:
+                output += '%s%s  %s\n' % (prefix, timestamp, author)
+            else:
+                output += '%s\t    %s\n' % (prefix, author)
+        output += '\n'
+        return output
+
+    def to_changelog_entries(self, use_commit_ts=False):
+        current_timestamp = self.info.date.strftime(DATE_FORMAT)
+        for entry in self.changelog_entries:
+            output = ''
+            timestamp = entry.datetime
+            if self.revert_commit:
+                timestamp = current_timestamp
+                orig_date = self.original_info.date
+                current_timestamp = orig_date.strftime(DATE_FORMAT)
+            elif self.cherry_pick_commit:
+                info = self.commit_to_info_hook(self.cherry_pick_commit)
+                # it can happen that it is a cherry-pick for a different
+                # repository
+                if info:
+                    timestamp = info.date.strftime(DATE_FORMAT)
+                else:
+                    timestamp = current_timestamp
+            elif not timestamp or use_commit_ts:
+                timestamp = current_timestamp
+            authors = entry.authors if entry.authors else [self.info.author]
+            # add Co-Authored-By authors to all ChangeLog entries
+            for author in self.co_authors:
+                if author not in authors:
+                    authors.append(author)
+
+            if self.cherry_pick_commit or self.revert_commit:
+                original_author = self.original_info.author
+                output += self.format_authors_in_changelog([original_author],
+                                                           current_timestamp)
+                if self.revert_commit:
+                    output += '\tRevert:\n'
+                else:
+                    output += '\tBackported from master:\n'
+                output += self.format_authors_in_changelog(authors,
+                                                           timestamp, '\t')
+            else:
+                output += self.format_authors_in_changelog(authors, timestamp)
+            for pr in entry.prs:
+                output += '\t%s\n' % pr
+            for line in entry.lines:
+                output += line + '\n'
+            yield (entry.folder, output.rstrip())
+
+    def print_output(self):
+        for entry, output in self.to_changelog_entries():
+            print('------ %s/ChangeLog ------ ' % entry)
+            print(output)
+
+    def print_errors(self):
+        print('Errors:')
+        for error in self.errors:
+            print(error)
diff --git a/contrib/gcc-changelog/git_email.py b/contrib/gcc-changelog/git_email.py
new file mode 100755
index 0000000..014fdd1
--- /dev/null
+++ b/contrib/gcc-changelog/git_email.py
@@ -0,0 +1,107 @@
+#!/usr/bin/env python3
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3, or (at your option) any later
+# version.
+#
+# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.  */
+
+import os
+import sys
+from itertools import takewhile
+
+from dateutil.parser import parse
+
+from git_commit import GitCommit, GitInfo
+
+from unidiff import PatchSet
+
+DATE_PREFIX = 'Date: '
+FROM_PREFIX = 'From: '
+
+
+class GitEmail(GitCommit):
+    def __init__(self, filename, strict=False):
+        self.filename = filename
+        diff = PatchSet.from_filename(filename)
+        date = None
+        author = None
+
+        with open(self.filename, 'r') as f:
+            lines = f.read().splitlines()
+        lines = list(takewhile(lambda line: line != '---', lines))
+        for line in lines:
+            if line.startswith(DATE_PREFIX):
+                date = parse(line[len(DATE_PREFIX):])
+            elif line.startswith(FROM_PREFIX):
+                author = GitCommit.format_git_author(line[len(FROM_PREFIX):])
+        header = list(takewhile(lambda line: line != '', lines))
+        body = lines[len(header) + 1:]
+
+        modified_files = []
+        for f in diff:
+            # Strip "a/" and "b/" prefixes
+            source = f.source_file[2:]
+            target = f.target_file[2:]
+
+            if f.is_added_file:
+                t = 'A'
+            elif f.is_removed_file:
+                t = 'D'
+            elif f.is_rename:
+                # Consider that renamed files are two operations: the deletion
+                # of the original name and the addition of the new one.
+                modified_files.append((source, 'D'))
+                t = 'A'
+            else:
+                t = 'M'
+            modified_files.append((target, t))
+        git_info = GitInfo(None, date, author, body, modified_files)
+        super().__init__(git_info, strict=strict,
+                         commit_to_info_hook=lambda x: None)
+
+
+# With zero arguments, process every patch file in the ./patches directory.
+# With one argument, process the named patch file.
+# Patch files must be in 'git format-patch' format.
+if __name__ == '__main__':
+    if len(sys.argv) == 1:
+        allfiles = []
+        for root, _dirs, files in os.walk('patches'):
+            for f in files:
+                full = os.path.join(root, f)
+                allfiles.append(full)
+
+        success = 0
+        for full in sorted(allfiles):
+            email = GitEmail(full, False)
+            print(email.filename)
+            if email.success:
+                success += 1
+                print('  OK')
+            else:
+                for error in email.errors:
+                    print('  ERR: %s' % error)
+
+        print()
+        print('Successfully parsed: %d/%d' % (success, len(allfiles)))
+    else:
+        email = GitEmail(sys.argv[1], False)
+        if email.success:
+            print('OK')
+            email.print_output()
+        else:
+            if not email.info.lines:
+                print('Error: patch contains no parsed lines', file=sys.stderr)
+            email.print_errors()
+            sys.exit(1)
diff --git a/contrib/gcc-changelog/git_repository.py b/contrib/gcc-changelog/git_repository.py
new file mode 100755
index 0000000..90edc3c
--- /dev/null
+++ b/contrib/gcc-changelog/git_repository.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python3
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3, or (at your option) any later
+# version.
+#
+# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.  */
+
+from datetime import datetime
+
+try:
+    from git import Repo
+except ImportError:
+    print('Cannot import GitPython package, please install the package:')
+    print('  Fedora, openSUSE: python3-GitPython')
+    print('  Debian, Ubuntu: python3-git')
+    exit(1)
+
+from git_commit import GitCommit, GitInfo
+
+
+def parse_git_revisions(repo_path, revisions, strict=False):
+    repo = Repo(repo_path)
+
+    def commit_to_info(commit):
+        try:
+            c = repo.commit(commit)
+            diff = repo.commit(commit + '~').diff(commit)
+
+            modified_files = []
+            for file in diff:
+                if hasattr(file, 'renamed_file'):
+                    is_renamed = file.renamed_file
+                else:
+                    is_renamed = file.renamed
+                if file.new_file:
+                    t = 'A'
+                elif file.deleted_file:
+                    t = 'D'
+                elif is_renamed:
+                    # Consider that renamed files are two operations:
+                    # the deletion of the original name
+                    # and the addition of the new one.
+                    modified_files.append((file.a_path, 'D'))
+                    t = 'A'
+                else:
+                    t = 'M'
+                modified_files.append((file.b_path, t))
+
+            date = datetime.utcfromtimestamp(c.committed_date)
+            author = '%s  <%s>' % (c.author.name, c.author.email)
+            git_info = GitInfo(c.hexsha, date, author,
+                               c.message.split('\n'), modified_files)
+            return git_info
+        except ValueError:
+            return None
+
+    parsed_commits = []
+    if '..' in revisions:
+        commits = list(repo.iter_commits(revisions))
+    else:
+        commits = [repo.commit(revisions)]
+
+    for commit in commits:
+        git_commit = GitCommit(commit_to_info(commit.hexsha), strict=strict,
+                               commit_to_info_hook=commit_to_info)
+        parsed_commits.append(git_commit)
+    return parsed_commits
diff --git a/contrib/gcc-changelog/git_update_version.py b/contrib/gcc-changelog/git_update_version.py
new file mode 100755
index 0000000..d2cadb8
--- /dev/null
+++ b/contrib/gcc-changelog/git_update_version.py
@@ -0,0 +1,145 @@
+#!/usr/bin/env python3
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3, or (at your option) any later
+# version.
+#
+# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.  */
+
+import argparse
+import datetime
+import os
+
+from git import Repo
+
+from git_repository import parse_git_revisions
+
+current_timestamp = datetime.datetime.now().strftime('%Y%m%d\n')
+
+
+def read_timestamp(path):
+    with open(path) as f:
+        return f.read()
+
+
+def prepend_to_changelog_files(repo, folder, git_commit, add_to_git):
+    if not git_commit.success:
+        for error in git_commit.errors:
+            print(error)
+        raise AssertionError()
+    for entry, output in git_commit.to_changelog_entries(use_commit_ts=True):
+        full_path = os.path.join(folder, entry, 'ChangeLog')
+        print('writing to %s' % full_path)
+        if os.path.exists(full_path):
+            with open(full_path) as f:
+                content = f.read()
+        else:
+            content = ''
+        with open(full_path, 'w+') as f:
+            f.write(output)
+            if content:
+                f.write('\n\n')
+                f.write(content)
+        if add_to_git:
+            repo.git.add(full_path)
+
+
+active_refs = ['master', 'releases/gcc-8', 'releases/gcc-9', 'releases/gcc-10']
+
+parser = argparse.ArgumentParser(description='Update DATESTAMP and generate '
+                                 'ChangeLog entries')
+parser.add_argument('-g', '--git-path', default='.',
+                    help='Path to git repository')
+parser.add_argument('-p', '--push', action='store_true',
+                    help='Push updated active branches')
+parser.add_argument('-d', '--dry-mode',
+                    help='Generate patch for ChangeLog entries and do it'
+                         ' even if DATESTAMP is unchanged; folder argument'
+                         ' is expected')
+parser.add_argument('-c', '--current', action='store_true',
+                    help='Modify current branch (--push argument is ignored)')
+args = parser.parse_args()
+
+repo = Repo(args.git_path)
+origin = repo.remotes['origin']
+
+
+def update_current_branch():
+    commit = repo.head.commit
+    commit_count = 1
+    while commit:
+        if (commit.author.email == 'gccadmin@gcc.gnu.org'
+                and commit.message.strip() == 'Daily bump.'):
+            break
+        # We support merge commits but only with 2 parensts
+        assert len(commit.parents) <= 2
+        commit = commit.parents[-1]
+        commit_count += 1
+
+    print('%d revisions since last Daily bump' % commit_count)
+    datestamp_path = os.path.join(args.git_path, 'gcc/DATESTAMP')
+    if (read_timestamp(datestamp_path) != current_timestamp
+            or args.dry_mode or args.current):
+        head = repo.head.commit
+        # if HEAD is a merge commit, start with second parent
+        # (branched that is being merged into the current one)
+        assert len(head.parents) <= 2
+        if len(head.parents) == 2:
+            head = head.parents[1]
+        commits = parse_git_revisions(args.git_path, '%s..%s'
+                                      % (commit.hexsha, head.hexsha))
+        for git_commit in reversed(commits):
+            prepend_to_changelog_files(repo, args.git_path, git_commit,
+                                       not args.dry_mode)
+        if args.dry_mode:
+            diff = repo.git.diff('HEAD')
+            patch = os.path.join(args.dry_mode,
+                                 branch.name.split('/')[-1] + '.patch')
+            with open(patch, 'w+') as f:
+                f.write(diff)
+            print('branch diff written to %s' % patch)
+            repo.git.checkout(force=True)
+        else:
+            # update timestamp
+            print('DATESTAMP will be changed:')
+            with open(datestamp_path, 'w+') as f:
+                f.write(current_timestamp)
+            repo.git.add(datestamp_path)
+            if not args.current:
+                repo.index.commit('Daily bump.')
+                if args.push:
+                    repo.git.push('origin', branch)
+                    print('branch is pushed')
+    else:
+        print('DATESTAMP unchanged')
+
+
+if args.current:
+    print('=== Working on the current branch ===', flush=True)
+    update_current_branch()
+else:
+    for ref in origin.refs:
+        assert ref.name.startswith('origin/')
+        name = ref.name[len('origin/'):]
+        if name in active_refs:
+            if name in repo.branches:
+                branch = repo.branches[name]
+            else:
+                branch = repo.create_head(name, ref).set_tracking_branch(ref)
+            print('=== Working on: %s ===' % branch, flush=True)
+            branch.checkout()
+            origin.pull(rebase=True)
+            print('branch pulled and checked out')
+            update_current_branch()
+            assert not repo.index.diff(None)
+            print('branch is done\n', flush=True)
diff --git a/contrib/gcc-changelog/test_email.py b/contrib/gcc-changelog/test_email.py
new file mode 100755
index 0000000..b6fbe6a
--- /dev/null
+++ b/contrib/gcc-changelog/test_email.py
@@ -0,0 +1,367 @@
+#!/usr/bin/env python3
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3, or (at your option) any later
+# version.
+#
+# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.  */
+
+import os
+import tempfile
+import unittest
+
+from git_commit import GitCommit
+
+from git_email import GitEmail
+
+import unidiff
+
+script_path = os.path.dirname(os.path.realpath(__file__))
+
+unidiff_supports_renaming = hasattr(unidiff.PatchedFile(), 'is_rename')
+
+
+NAME_STATUS1 = """
+M	gcc/ada/impunit.adb'
+R097	gcc/ada/libgnat/s-atopar.adb	gcc/ada/libgnat/s-aoinar.adb
+"""
+
+
+class TestGccChangelog(unittest.TestCase):
+    def setUp(self):
+        self.patches = {}
+        self.temps = []
+
+        filename = None
+        patch_lines = []
+        with open(os.path.join(script_path, 'test_patches.txt')) as f:
+            lines = f.read()
+        for line in lines.split('\n'):
+            if line.startswith('==='):
+                if patch_lines:
+                    self.patches[filename] = patch_lines
+                filename = line.split(' ')[1]
+                patch_lines = []
+            else:
+                patch_lines.append(line)
+        if patch_lines:
+            self.patches[filename] = patch_lines
+
+    def tearDown(self):
+        for t in self.temps:
+            assert t.endswith('.patch')
+            os.remove(t)
+
+    def get_git_email(self, filename, strict=False):
+        with tempfile.NamedTemporaryFile(mode='w+', suffix='.patch',
+                                         delete=False) as f:
+            f.write('\n'.join(self.patches[filename]))
+            self.temps.append(f.name)
+        return GitEmail(f.name, strict)
+
+    def from_patch_glob(self, name, strict=False):
+        files = [f for f in self.patches.keys() if f.startswith(name)]
+        assert len(files) == 1
+        return self.get_git_email(files[0], strict)
+
+    def test_simple_patch_format(self):
+        email = self.get_git_email('0577-aarch64-Add-an-and.patch')
+        assert not email.errors
+        assert len(email.changelog_entries) == 2
+        entry = email.changelog_entries[0]
+        assert (entry.author_lines ==
+                [('Richard Sandiford  <richard.sandiford@arm.com>',
+                  '2020-02-06')])
+        assert len(entry.authors) == 1
+        assert (entry.authors[0]
+                == 'Richard Sandiford  <richard.sandiford@arm.com>')
+        assert entry.folder == 'gcc'
+        assert entry.prs == ['PR target/87763']
+        assert len(entry.files) == 3
+        assert entry.files[0] == 'config/aarch64/aarch64-protos.h'
+
+    def test_daily_bump(self):
+        email = self.get_git_email('0085-Daily-bump.patch')
+        assert not email.errors
+        assert not email.changelog_entries
+
+    def test_deduce_changelog_entries(self):
+        email = self.from_patch_glob('0040')
+        assert len(email.changelog_entries) == 2
+        assert email.changelog_entries[0].folder == 'gcc/cp'
+        assert email.changelog_entries[0].prs == ['PR c++/90916']
+        assert email.changelog_entries[0].files == ['pt.c']
+        # this one is added automatically
+        assert email.changelog_entries[1].folder == 'gcc/testsuite'
+
+    def test_only_changelog_updated(self):
+        email = self.from_patch_glob('0129')
+        assert not email.errors
+        assert not email.changelog_entries
+
+    def test_wrong_mentioned_filename(self):
+        email = self.from_patch_glob('0096')
+        assert email.errors
+        err = email.errors[0]
+        assert err.message == 'unchanged file mentioned in a ChangeLog'
+        assert err.line == 'gcc/testsuite/gcc.target/aarch64/' \
+                           'advsimd-intrinsics/vdot-compile-3-1.c'
+
+    def test_missing_tab(self):
+        email = self.from_patch_glob('0031')
+        assert len(email.errors) == 2
+        err = email.errors[0]
+        assert err.message == 'line should start with a tab'
+        assert err.line == '    * cfgloopanal.c (average_num_loop_insns): ' \
+                           'Free bbs when early'
+
+    def test_leading_changelog_format(self):
+        email = self.from_patch_glob('0184')
+        assert len(email.errors) == 4
+        assert email.errors[0].line == 'gcc/c-family/c-cppbuiltins.c'
+        assert email.errors[2].line == 'gcc/c-family/c-cppbuiltin.c'
+
+    def test_cannot_deduce_no_blank_line(self):
+        email = self.from_patch_glob('0334')
+        assert len(email.errors) == 1
+        assert len(email.changelog_entries) == 1
+        assert email.changelog_entries[0].folder is None
+
+    def test_author_lines(self):
+        email = self.from_patch_glob('0814')
+        assert not email.errors
+        assert (email.changelog_entries[0].author_lines ==
+                [('Martin Jambor  <mjambor@suse.cz>', '2020-02-19')])
+
+    def test_multiple_authors_and_prs(self):
+        email = self.from_patch_glob('0735')
+        assert len(email.changelog_entries) == 1
+        entry = email.changelog_entries[0]
+        assert len(entry.author_lines) == 2
+        assert len(entry.authors) == 2
+        assert (entry.author_lines[1] ==
+                ('Bernd Edlinger  <bernd.edlinger@hotmail.de>', None))
+
+    def test_multiple_prs(self):
+        email = self.from_patch_glob('1699')
+        assert len(email.changelog_entries) == 2
+        assert len(email.changelog_entries[0].prs) == 2
+
+    def test_missing_PR_component(self):
+        email = self.from_patch_glob('0735')
+        assert len(email.errors) == 1
+        assert email.errors[0].message == 'missing PR component'
+
+    def test_invalid_PR_component(self):
+        email = self.from_patch_glob('0198')
+        assert len(email.errors) == 1
+        assert email.errors[0].message == 'invalid PR component'
+
+    def test_additional_author_list(self):
+        email = self.from_patch_glob('0342')
+        msg = 'additional author must be indented ' \
+              'with one tab and four spaces'
+        assert email.errors[1].message == msg
+
+    def test_trailing_whitespaces(self):
+        email = self.get_git_email('trailing-whitespaces.patch')
+        assert len(email.errors) == 3
+
+    def test_space_after_asterisk(self):
+        email = self.from_patch_glob('1999')
+        assert len(email.errors) == 1
+        assert email.errors[0].message == 'one space should follow asterisk'
+
+    def test_long_lines(self):
+        email = self.get_git_email('long-lines.patch')
+        assert len(email.errors) == 1
+        assert email.errors[0].message == 'line exceeds 100 character limit'
+
+    def test_new_files(self):
+        email = self.from_patch_glob('0030')
+        assert not email.errors
+
+    def test_wrong_changelog_location(self):
+        email = self.from_patch_glob('0043')
+        assert len(email.errors) == 2
+        assert (email.errors[0].message ==
+                'wrong ChangeLog location "gcc", should be "gcc/testsuite"')
+
+    def test_single_author_name(self):
+        email = self.from_patch_glob('1975')
+        assert len(email.changelog_entries) == 2
+        assert len(email.changelog_entries[0].author_lines) == 1
+        assert len(email.changelog_entries[1].author_lines) == 1
+
+    def test_bad_first_line(self):
+        email = self.from_patch_glob('0413')
+        assert len(email.errors) == 1
+
+    def test_co_authored_by(self):
+        email = self.from_patch_glob('1850')
+        assert email.co_authors == ['Jakub Jelinek  <jakub@redhat.com>']
+        output_entries = list(email.to_changelog_entries())
+        assert len(output_entries) == 2
+        ent0 = output_entries[0]
+        assert ent0[1].startswith('2020-04-16  Martin Liska  '
+                                  '<mliska@suse.cz>\n\t'
+                                  '    Jakub Jelinek  <jakub@redhat.com>')
+
+    def test_multiple_co_author_formats(self):
+        email = self.get_git_email('co-authored-by.patch')
+        assert len(email.co_authors) == 3
+        assert email.co_authors[0] == 'Jakub Jelinek  <jakub@redhat.com>'
+        assert email.co_authors[1] == 'John Miller  <jm@example.com>'
+        assert email.co_authors[2] == 'John Miller2  <jm2@example.com>'
+
+    def test_new_file_added_entry(self):
+        email = self.from_patch_glob('1957')
+        output_entries = list(email.to_changelog_entries())
+        assert len(output_entries) == 2
+        needle = ('\t* g++.dg/cpp2a/lambda-generic-variadic20.C'
+                  ': New file.')
+        assert output_entries[1][1].endswith(needle)
+        assert email.changelog_entries[1].prs == ['PR c++/94546']
+
+    def test_global_pr_entry(self):
+        email = self.from_patch_glob('2004')
+        assert not email.errors
+        assert email.changelog_entries[0].prs == ['PR other/94629']
+
+    def test_unique_prs(self):
+        email = self.get_git_email('pr-check1.patch')
+        assert not email.errors
+        assert email.changelog_entries[0].prs == ['PR ipa/12345']
+        assert email.changelog_entries[1].prs == []
+
+    def test_multiple_prs_not_added(self):
+        email = self.from_patch_glob('0001-Add-patch_are')
+        assert not email.errors
+        assert email.changelog_entries[0].prs == ['PR target/93492']
+        assert email.changelog_entries[1].prs == ['PR target/12345']
+        assert email.changelog_entries[2].prs == []
+        assert email.changelog_entries[2].folder == 'gcc/testsuite'
+
+    def test_strict_mode(self):
+        email = self.from_patch_glob('0001-Add-patch_are',
+                                     True)
+        msg = 'ChangeLog, DATESTAMP, BASE-VER and DEV-PHASE updates should ' \
+              'be done separately from normal commits'
+        assert email.errors[0].message == msg
+
+    def test_strict_mode_normal_patch(self):
+        email = self.get_git_email('0001-Just-test-it.patch', True)
+        assert not email.errors
+
+    def test_strict_mode_datestamp_only(self):
+        email = self.get_git_email('0002-Bump-date.patch', True)
+        assert not email.errors
+
+    def test_wrong_changelog_entry(self):
+        email = self.from_patch_glob('0020-IPA-Avoid')
+        msg = 'first line should start with a tab, an asterisk and a space'
+        assert (email.errors[0].message == msg)
+
+    def test_cherry_pick_format(self):
+        email = self.from_patch_glob('0001-c-Alias.patch')
+        assert not email.errors
+
+    def test_signatures(self):
+        email = self.from_patch_glob('0001-RISC-V-Make-unique.patch')
+        assert not email.errors
+        assert len(email.changelog_entries) == 1
+
+    def test_duplicate_top_level_author(self):
+        email = self.from_patch_glob('0001-Fortran-ProcPtr-function.patch')
+        assert not email.errors
+        assert len(email.changelog_entries[0].author_lines) == 1
+
+    def test_dr_entry(self):
+        email = self.from_patch_glob('0001-c-C-20-DR-2237.patch')
+        assert email.changelog_entries[0].prs == ['DR 2237']
+
+    def test_changes_only_in_ignored_location(self):
+        email = self.from_patch_glob('0001-go-in-ignored-location.patch')
+        assert not email.errors
+
+    def test_changelog_for_ignored_location(self):
+        email = self.from_patch_glob('0001-Update-merge.sh-to-reflect.patch')
+        assert (email.changelog_entries[0].lines[0]
+                == '\t* LOCAL_PATCHES: Use git hash instead of SVN id.')
+
+    def test_multiline_file_list(self):
+        email = self.from_patch_glob(
+            '0001-Ada-Reuse-Is_Package_Or_Generic_Package-where-possib.patch')
+        assert (email.changelog_entries[0].files
+                == ['contracts.adb', 'einfo.adb', 'exp_ch9.adb',
+                    'sem_ch12.adb', 'sem_ch4.adb', 'sem_ch7.adb',
+                    'sem_ch8.adb', 'sem_elab.adb', 'sem_type.adb',
+                    'sem_util.adb'])
+
+    @unittest.skipIf(not unidiff_supports_renaming,
+                     'Newer version of unidiff is needed (0.6.0+)')
+    def test_renamed_file(self):
+        email = self.from_patch_glob(
+            '0001-Ada-Add-support-for-XDR-streaming-in-the-default-run.patch')
+        assert not email.errors
+
+    def test_duplicite_author_lines(self):
+        email = self.from_patch_glob('0001-Fortran-type-is-real-kind-1.patch')
+        assert (email.changelog_entries[0].author_lines[0][0]
+                == 'Steven G. Kargl  <kargl@gcc.gnu.org>')
+        assert (email.changelog_entries[0].author_lines[1][0]
+                == 'Mark Eggleston  <markeggleston@gcc.gnu.org>')
+
+    def test_missing_change_description(self):
+        email = self.from_patch_glob('0001-Missing-change-description.patch')
+        assert len(email.errors) == 2
+        assert email.errors[0].message == 'missing description of a change'
+        assert email.errors[1].message == 'missing description of a change'
+
+    def test_libstdcxx_html_regenerated(self):
+        email = self.from_patch_glob('0001-Fix-text-of-hyperlink')
+        assert not email.errors
+        email = self.from_patch_glob('0002-libstdc-Fake-test-change-1.patch')
+        assert len(email.errors) == 1
+        msg = 'pattern doesn''t match any changed files'
+        assert email.errors[0].message == msg
+        assert email.errors[0].line == 'libstdc++-v3/doc/html/'
+        email = self.from_patch_glob('0003-libstdc-Fake-test-change-2.patch')
+        assert len(email.errors) == 1
+        msg = 'changed file not mentioned in a ChangeLog'
+        assert email.errors[0].message == msg
+
+    def test_not_deduce(self):
+        email = self.from_patch_glob('0001-configure.patch')
+        assert not email.errors
+        assert len(email.changelog_entries) == 2
+
+    def test_parse_git_name_status(self):
+        modified_files = GitCommit.parse_git_name_status(NAME_STATUS1)
+        assert len(modified_files) == 3
+        assert modified_files[1] == ('gcc/ada/libgnat/s-atopar.adb', 'D')
+        assert modified_files[2] == ('gcc/ada/libgnat/s-aoinar.adb', 'A')
+
+    def test_backport(self):
+        email = self.from_patch_glob('0001-asan-fix-RTX-emission.patch')
+        assert not email.errors
+        assert len(email.changelog_entries) == 1
+        entry = list(email.to_changelog_entries())[0][1]
+        assert entry.startswith('2020-06-11  Martin Liska  <mliska@suse.cz>')
+        assert '\tBackported from master:' in entry
+        assert '\t2020-06-11  Martin Liska  <mliska@suse.cz>' in entry
+        assert '\t\t    Jakub Jelinek  <jakub@redhat.com>' in entry
+
+    def test_square_and_lt_gt(self):
+        email = self.from_patch_glob('0001-Check-for-more-missing')
+        assert not email.errors
diff --git a/contrib/gcc-changelog/test_patches.txt b/contrib/gcc-changelog/test_patches.txt
new file mode 100644
index 0000000..2bf5d1a
--- /dev/null
+++ b/contrib/gcc-changelog/test_patches.txt
@@ -0,0 +1,3197 @@
+=== 0342-ARC-Propagate-uncached-type-attribute-to-each-member.patch ===
+From 62a715c706d8482560dadfa9ead0766f3c20e434 Mon Sep 17 00:00:00 2001
+From: Claudiu Zissulescu <claziss@gmail.com>
+Date: Mon, 27 Jan 2020 14:51:03 +0200
+Subject: [PATCH 0342/2034] [ARC] Propagate uncached type attribute to each
+ member of a struct.
+
+Like `packed` type attribute, the ARC's `uncached` type attribute
+needs to be propagated to each member of the struct where it is used,
+triggering the .di flag for any access of the struct members. However,
+any complex CFG manipulation may drop memory pointer type attributes,
+leading to the impossibility to discriminate the direct accesses from
+normal ones. To solve this issue, we will treat the direct memory
+accessed specially via unspecs.
+
+gcc/
+xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
+	Petro Karashchenko  <petro.karashchenko@ring.com>
+
+	* config/arc/arc.c (arc_is_uncached_mem_p): Check struct
+	attributes if needed.
+	(prepare_move_operands): Generate special
+	unspec instruction for direct access.
+	(arc_isuncached_mem_p): Propagate uncached attribute to each
+	structure member.
+	* config/arc/arc.md (VUNSPEC_ARC_LDDI): Define.
+	(VUNSPEC_ARC_STDI): Likewise.
+	(ALLI): New mode iterator.
+	(mALLI): New mode attribute.
+	(lddi): New instruction pattern.
+	(stdi): Likewise.
+	(stdidi_split): Split instruction for architectures which are not
+	supporting ll64 option.
+	(lddidi_split): Likewise.
+
+testsuite/
+xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
+	Petro Karashchenko  <petro.karashchenko@ring.com>
+
+	* gcc.target/arc/uncached-1.c: Update test.
+	* gcc.target/arc/uncached-2.c: Likewise.
+	* gcc.target/arc/uncached-3.c: New test.
+	* gcc.target/arc/uncached-4.c: Likewise.
+	* gcc.target/arc/uncached-5.c: Likewise.
+	* gcc.target/arc/uncached-6.c: Likewise.
+	* gcc.target/arc/uncached-7.c: Likewise.
+	* gcc.target/arc/uncached-8.c: Likewise.
+	* gcc.target/arc/arc.exp (ll64): New predicate.
+---
+ gcc/ChangeLog                             |  19 ++++
+ gcc/config/arc/arc.c                      | 118 ++++++++++++++--------
+ gcc/config/arc/arc.md                     |  60 +++++++++++
+ gcc/testsuite/ChangeLog                   |  11 ++
+ gcc/testsuite/gcc.target/arc/arc.exp      |   9 ++
+ gcc/testsuite/gcc.target/arc/uncached-1.c |   2 +-
+ gcc/testsuite/gcc.target/arc/uncached-2.c |   2 +-
+ gcc/testsuite/gcc.target/arc/uncached-3.c |  22 ++++
+ gcc/testsuite/gcc.target/arc/uncached-4.c |  42 ++++++++
+ gcc/testsuite/gcc.target/arc/uncached-5.c |  29 ++++++
+ gcc/testsuite/gcc.target/arc/uncached-6.c |  35 +++++++
+ gcc/testsuite/gcc.target/arc/uncached-7.c |  11 ++
+ gcc/testsuite/gcc.target/arc/uncached-8.c |  33 ++++++
+ 13 files changed, 351 insertions(+), 42 deletions(-)
+ create mode 100644 gcc/testsuite/gcc.target/arc/uncached-3.c
+ create mode 100644 gcc/testsuite/gcc.target/arc/uncached-4.c
+ create mode 100644 gcc/testsuite/gcc.target/arc/uncached-5.c
+ create mode 100644 gcc/testsuite/gcc.target/arc/uncached-6.c
+ create mode 100644 gcc/testsuite/gcc.target/arc/uncached-7.c
+ create mode 100644 gcc/testsuite/gcc.target/arc/uncached-8.c
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index 91dfcd71a4b..2cc61d68cf3 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
+index 22475f2732e..e1a865f02e6 100644
+--- a/gcc/config/arc/arc.c
++++ b/gcc/config/arc/arc.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md
+index cf7aa8d83c9..46cb254ed28 100644
+--- a/gcc/config/arc/arc.md
++++ b/gcc/config/arc/arc.md
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
+index 16ddef07516..991934272e0 100644
+--- a/gcc/testsuite/ChangeLog
++++ b/gcc/testsuite/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/arc/arc.exp b/gcc/testsuite/gcc.target/arc/arc.exp
+index 8d1844edd22..501d4589c53 100644
+--- a/gcc/testsuite/gcc.target/arc/arc.exp
++++ b/gcc/testsuite/gcc.target/arc/arc.exp
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/arc/uncached-1.c b/gcc/testsuite/gcc.target/arc/uncached-1.c
+index 7a6bade81c4..fa5ecb7b7d3 100644
+--- a/gcc/testsuite/gcc.target/arc/uncached-1.c
++++ b/gcc/testsuite/gcc.target/arc/uncached-1.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/arc/uncached-2.c b/gcc/testsuite/gcc.target/arc/uncached-2.c
+index 89eed326e01..9d6bfbbb50e 100644
+--- a/gcc/testsuite/gcc.target/arc/uncached-2.c
++++ b/gcc/testsuite/gcc.target/arc/uncached-2.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/arc/uncached-3.c b/gcc/testsuite/gcc.target/arc/uncached-3.c
+new file mode 100644
+index 00000000000..f2a317b2816
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arc/uncached-3.c
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/gcc.target/arc/uncached-4.c b/gcc/testsuite/gcc.target/arc/uncached-4.c
+new file mode 100644
+index 00000000000..fecb16648b8
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arc/uncached-4.c
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/gcc.target/arc/uncached-5.c b/gcc/testsuite/gcc.target/arc/uncached-5.c
+new file mode 100644
+index 00000000000..4fe0464fdde
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arc/uncached-5.c
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/gcc.target/arc/uncached-6.c b/gcc/testsuite/gcc.target/arc/uncached-6.c
+new file mode 100644
+index 00000000000..581a9eccb3b
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arc/uncached-6.c
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/gcc.target/arc/uncached-7.c b/gcc/testsuite/gcc.target/arc/uncached-7.c
+new file mode 100644
+index 00000000000..4001b8bd821
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arc/uncached-7.c
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/gcc.target/arc/uncached-8.c b/gcc/testsuite/gcc.target/arc/uncached-8.c
+new file mode 100644
+index 00000000000..060229b11df
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arc/uncached-8.c
+@@ -0,0 +1 @@
++
+-- 
+2.26.1
+
+=== 0814-sra-Avoid-totally-scalarizing-overallping-field_decl.patch ===
+From 665c5bad168ab63629b29ed2ce08ed042c088dc2 Mon Sep 17 00:00:00 2001
+From: Martin Jambor <mjambor@suse.cz>
+Date: Wed, 19 Feb 2020 11:08:40 +0100
+Subject: [PATCH 0814/2034] sra: Avoid totally scalarizing overallping
+ field_decls (PR 93667)
+
+[[no_unique_address]] C++ attribute can cause two fields of a
+RECORD_TYPE overlap, which currently confuses the totally scalarizing
+code into creating invalid access tree.  For GCC 10, I'd like to
+simply disable total scalarization of types where this happens.
+
+For GCC 11 I'll write down a TODO item to enable total scalarization
+of cases like this where the problematic fields are basically empty -
+despite having a non-zero size - i.e. when they are just RECORD_TYPEs
+without any data fields.
+
+2020-02-19  Martin Jambor  <mjambor@suse.cz>
+
+	gcc/
+
+	PR tree-optimization/93667
+	* tree-sra.c (scalarizable_type_p): Return false if record fields
+	do not follow wach other.
+
+	gcc/testsuite/
+
+	PR tree-optimization/93667
+	* g++.dg/tree-ssa/pr93667.C: New test.
+---
+ gcc/ChangeLog                           |  6 ++++++
+ gcc/testsuite/ChangeLog                 |  5 +++++
+ gcc/testsuite/g++.dg/tree-ssa/pr93667.C | 11 +++++++++++
+ gcc/tree-sra.c                          | 14 ++++++++++++++
+ 4 files changed, 36 insertions(+)
+ create mode 100644 gcc/testsuite/g++.dg/tree-ssa/pr93667.C
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index 77c2a9ad810..6b53f9a2f07 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
+index 9b4fe11a6f6..8033fa0a3bb 100644
+--- a/gcc/testsuite/ChangeLog
++++ b/gcc/testsuite/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr93667.C b/gcc/testsuite/g++.dg/tree-ssa/pr93667.C
+new file mode 100644
+index 00000000000..d875f53d9ec
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/tree-ssa/pr93667.C
+@@ -0,0 +1 @@
++
+diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
+index 0cfac0a8192..4c7d651e6b9 100644
+--- a/gcc/tree-sra.c
++++ b/gcc/tree-sra.c
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== 0413-SRA-Total-scalarization-after-access-propagation-PR9.patch ===
+From 636e80eea24b780f1d5f4c14c58fc00001df8508 Mon Sep 17 00:00:00 2001
+From: Martin Jambor <mjambor@suse.cz>
+Date: Wed, 29 Jan 2020 13:13:13 +0100
+Subject: [PATCH 0413/2034] SRA: Total scalarization after access propagation
+ [PR92706]
+
+2020-01-29  Martin Jambor  <mjambor@suse.cz>
+
+	PR tree-optimization/92706
+	* tree-sra.c (struct access): Adjust comment of
+	grp_total_scalarization.
+	(find_access_in_subtree): Look for single children spanning an entire
+	access.
+	(scalarizable_type_p): Allow register accesses, adjust callers.
+	(completely_scalarize): Remove function.
+	(scalarize_elem): Likewise.
+	(create_total_scalarization_access): Likewise.
+	(sort_and_splice_var_accesses): Do not track total scalarization
+	flags.
+	(analyze_access_subtree): New parameter totally, adjust to new meaning
+	of grp_total_scalarization.
+	(analyze_access_trees): Pass new parameter to analyze_access_subtree.
+	(can_totally_scalarize_forest_p): New function.
+	(create_total_scalarization_access): Likewise.
+	(create_total_access_and_reshape): Likewise.
+	(total_should_skip_creating_access): Likewise.
+	(totally_scalarize_subtree): Likewise.
+	(analyze_all_variable_accesses): Perform total scalarization after
+	subaccess propagation using the new functions above.
+	(initialize_constant_pool_replacements): Output initializers by
+	traversing the access tree.
+
+	testsuite/
+	* gcc.dg/tree-ssa/pr92706-2.c: New test.
+	* gcc.dg/guality/pr59776.c: Xfail tests for s2.g.
+---
+ gcc/ChangeLog                             |  26 +
+ gcc/testsuite/ChangeLog                   |   6 +
+ gcc/testsuite/gcc.dg/guality/pr59776.c    |   4 +-
+ gcc/testsuite/gcc.dg/tree-ssa/pr92706-2.c |  19 +
+ gcc/tree-sra.c                            | 666 ++++++++++++++++------
+ 5 files changed, 537 insertions(+), 184 deletions(-)
+ create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr92706-2.c
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index 16247a59304..61da54df346 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
+index 05518848829..38758207989 100644
+--- a/gcc/testsuite/ChangeLog
++++ b/gcc/testsuite/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.dg/guality/pr59776.c b/gcc/testsuite/gcc.dg/guality/pr59776.c
+index 382abb622bb..6c1c8165b70 100644
+--- a/gcc/testsuite/gcc.dg/guality/pr59776.c
++++ b/gcc/testsuite/gcc.dg/guality/pr59776.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr92706-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pr92706-2.c
+new file mode 100644
+index 00000000000..37ab9765db0
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/tree-ssa/pr92706-2.c
+@@ -0,0 +1 @@
++
+diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
+index 36106fecaf1..2b0849858de 100644
+--- a/gcc/tree-sra.c
++++ b/gcc/tree-sra.c
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== 0334-Do-not-generate-a-unique-fnname-for-resolver.patch ===
+From c2bd2b4664be8b73f8fd58a64dec1e93871797cc Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Mon, 27 Jan 2020 10:48:18 +0100
+Subject: [PATCH 0334/2034] Do not generate a unique fnname for resolver.
+
+	PR target/93274
+	* config/i386/i386-features.c (make_resolver_func):
+	Align the code with ppc64 target implementation.
+	Do not generate a unique name for resolver function.
+	PR target/93274
+	* gcc.target/i386/pr81213.c: Adjust to not expect
+	a globally unique name.
+---
+ gcc/ChangeLog                           |  7 +++++++
+ gcc/config/i386/i386-features.c         | 19 ++++---------------
+ gcc/testsuite/ChangeLog                 |  6 ++++++
+ gcc/testsuite/gcc.target/i386/pr81213.c |  4 ++--
+ 4 files changed, 19 insertions(+), 17 deletions(-)
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index 45075840824..59806baa757 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/config/i386/i386-features.c b/gcc/config/i386/i386-features.c
+index e580b26b995..b49e6f8d408 100644
+--- a/gcc/config/i386/i386-features.c
++++ b/gcc/config/i386/i386-features.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
+index 2de060843d9..22a37dd1ab2 100644
+--- a/gcc/testsuite/ChangeLog
++++ b/gcc/testsuite/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/i386/pr81213.c b/gcc/testsuite/gcc.target/i386/pr81213.c
+index 13e15d5fef0..89c47529861 100644
+--- a/gcc/testsuite/gcc.target/i386/pr81213.c
++++ b/gcc/testsuite/gcc.target/i386/pr81213.c
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== 1850-List-valid-pairs-for-new-and-delete-operators.patch ===
+From d7a65edb629a010f7ef907d457343abcb569fab7 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Thu, 16 Apr 2020 15:39:22 +0200
+Subject: [PATCH 1850/2034] List valid pairs for new and delete operators.
+
+	PR c++/94314
+	* cgraphclones.c (set_new_clone_decl_and_node_flags): Drop
+	DECL_IS_REPLACEABLE_OPERATOR during cloning.
+	* tree-ssa-dce.c (valid_new_delete_pair_p): New function.
+	(propagate_necessity): Check operator names.
+
+	PR c++/94314
+	* g++.dg/pr94314.C: Do not use dg-additional-options
+	and remove not needed stdio.h include.
+	* g++.dg/pr94314-2.C: Likewise.
+	* g++.dg/pr94314-3.C: Likewise.
+	* g++.dg/pr94314-4.C: New test.
+
+Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
+---
+ gcc/ChangeLog                    |  9 +++
+ gcc/cgraphclones.c               |  2 +
+ gcc/testsuite/ChangeLog          | 10 ++++
+ gcc/testsuite/g++.dg/pr94314-2.C |  5 +-
+ gcc/testsuite/g++.dg/pr94314-3.C |  5 +-
+ gcc/testsuite/g++.dg/pr94314-4.C | 30 ++++++++++
+ gcc/testsuite/g++.dg/pr94314.C   |  5 +-
+ gcc/tree-ssa-dce.c               | 98 ++++++++++++++++++++++++++++----
+ 8 files changed, 142 insertions(+), 22 deletions(-)
+ create mode 100644 gcc/testsuite/g++.dg/pr94314-4.C
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index 74dbeeb44c6..9e499ec9c86 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c
+index c73b8f810f0..8f541a28b6e 100644
+--- a/gcc/cgraphclones.c
++++ b/gcc/cgraphclones.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
+index 756f1d759e6..94d2312022d 100644
+--- a/gcc/testsuite/ChangeLog
++++ b/gcc/testsuite/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/pr94314-2.C b/gcc/testsuite/g++.dg/pr94314-2.C
+index 36b93ed6d4d..998ce601767 100644
+--- a/gcc/testsuite/g++.dg/pr94314-2.C
++++ b/gcc/testsuite/g++.dg/pr94314-2.C
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/pr94314-3.C b/gcc/testsuite/g++.dg/pr94314-3.C
+index 575ba9d8ad8..846a5d6a3d8 100644
+--- a/gcc/testsuite/g++.dg/pr94314-3.C
++++ b/gcc/testsuite/g++.dg/pr94314-3.C
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/pr94314-4.C b/gcc/testsuite/g++.dg/pr94314-4.C
+new file mode 100644
+index 00000000000..d097f29d4ad
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/pr94314-4.C
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/g++.dg/pr94314.C b/gcc/testsuite/g++.dg/pr94314.C
+index 86e651d10ba..4e5ae122e9f 100644
+--- a/gcc/testsuite/g++.dg/pr94314.C
++++ b/gcc/testsuite/g++.dg/pr94314.C
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c
+index fd5f24c746c..757cfad5b5e 100644
+--- a/gcc/tree-ssa-dce.c
++++ b/gcc/tree-ssa-dce.c
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== 0085-Daily-bump.patch ===
+From 03647d2e26176bb874460b67deab0c30aa715d59 Mon Sep 17 00:00:00 2001
+From: GCC Administrator <gccadmin@gcc.gnu.org>
+Date: Thu, 16 Jan 2020 00:16:32 +0000
+Subject: [PATCH 0085/2034] Daily bump.
+
+---
+ gcc/DATESTAMP | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
+index ba948c594d4..62611957f86 100644
+--- a/gcc/DATESTAMP
++++ b/gcc/DATESTAMP
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== 0040-PR90916-ICE-in-retrieve-specialization.patch ===
+From a5a3c2dcf73aa245b0eb6f6cf56c4d03ab6056da Mon Sep 17 00:00:00 2001
+From: Nathan Sidwell <nathans@fb.com>
+Date: Tue, 14 Jan 2020 11:12:40 -0800
+Subject: [PATCH 0040/2034] [PR90916] ICE in retrieve specialization
+
+https://gcc.gnu.org/ml/gcc-patches/2020-01/msg00809.html
+	PR c++/90916
+	* pt.c (retrieve_specialization): Get the TI from the decl or the
+	classtype as appropriate.
+---
+ gcc/cp/ChangeLog                        |  6 ++++++
+ gcc/cp/pt.c                             | 15 ++++++++++-----
+ gcc/testsuite/g++.dg/template/pr90916.C |  8 ++++++++
+ 3 files changed, 24 insertions(+), 5 deletions(-)
+ create mode 100644 gcc/testsuite/g++.dg/template/pr90916.C
+
+diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
+index 004ce0fdcdf..3cc7c48b490 100644
+--- a/gcc/cp/ChangeLog
++++ b/gcc/cp/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
+index fa82ecad233..4fdc74f9ca8 100644
+--- a/gcc/cp/pt.c
++++ b/gcc/cp/pt.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/template/pr90916.C b/gcc/testsuite/g++.dg/template/pr90916.C
+new file mode 100644
+index 00000000000..bdb7e7b58ef
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/template/pr90916.C
+@@ -0,0 +1 @@
++
+-- 
+2.26.1
+
+=== 2004-amdgcn-Check-HSA-return-codes-PR94629.patch ===
+From 966de09be91c639d66d252c9ae6ab8da5ebfca18 Mon Sep 17 00:00:00 2001
+From: Andrew Stubbs <ams@codesourcery.com>
+Date: Mon, 20 Apr 2020 15:25:31 +0100
+Subject: [PATCH 2004/2034] amdgcn: Check HSA return codes [PR94629]
+
+Ensure that the returned status values are not ignored.  The old code was
+not broken, but this is both safer and satisfies static analysis.
+
+2020-04-23  Andrew Stubbs  <ams@codesourcery.com>
+
+	PR other/94629
+
+	libgomp/
+	* plugin/plugin-gcn.c (init_hsa_context): Check return value from
+	hsa_iterate_agents.
+	(GOMP_OFFLOAD_init_device): Check return values from both calls to
+	hsa_agent_iterate_regions.
+---
+ libgomp/ChangeLog           | 9 +++++++++
+ libgomp/plugin/plugin-gcn.c | 8 ++++++++
+ 2 files changed, 17 insertions(+)
+
+diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
+index c524abbbfb6..ee1764d4ae3 100644
+--- a/libgomp/ChangeLog
++++ b/libgomp/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c
+index dc72c90962c..4c6a4c03b6e 100644
+--- a/libgomp/plugin/plugin-gcn.c
++++ b/libgomp/plugin/plugin-gcn.c
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== 0198-Change-recursive-prepare_block_for_update-to-use-a-w.patch ===
+From 6fc2f9337311c11dabcc464c808cbef205f17a52 Mon Sep 17 00:00:00 2001
+From: Andrew Pinski <apinski@marvell.com>
+Date: Tue, 21 Jan 2020 08:34:42 +0000
+Subject: [PATCH 0198/2034] Change recursive prepare_block_for_update to use a
+ worklist
+
+Reported as PR 93321, prepare_block_for_update with some huge
+recusive inlining can go past the stack limit. Transforming this
+recursive into worklist improves the stack usage here and we no
+longer seg fault for the testcase.  Note the order we walk the siblings
+change.
+
+ChangeLog:
+	PR tree-opt/93321
+	* tree-into-ssa.c (prepare_block_for_update_1): Split out from ...
+	(prepare_block_for_update): This.  Use a worklist instead of recursing.
+---
+ gcc/ChangeLog       |  8 ++++++
+ gcc/tree-into-ssa.c | 59 ++++++++++++++++++++++++++++++++++++---------
+ 2 files changed, 55 insertions(+), 12 deletions(-)
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index 8c17e5992d2..262f0d6506f 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c
+index c27bf2ce121..6528acac31a 100644
+--- a/gcc/tree-into-ssa.c
++++ b/gcc/tree-into-ssa.c
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== 0184-PR-80005-Fix-__has_include.patch ===
+From ad1a3914ae8d67c94b0d2428e3f9672e7db491a1 Mon Sep 17 00:00:00 2001
+From: Nathan Sidwell <nathan@acm.org>
+Date: Mon, 20 Jan 2020 05:39:59 -0800
+Subject: [PATCH 0184/2034] [PR 80005]  Fix __has_include
+
+__has_include is funky in that it is macro-like from the POV of #ifdef and
+friends, but lexes its parenthesize argument #include-like.  We were
+failing the second part of that, because we used a forwarding macro to an
+internal name, and hence always lexed the argument in macro-parameter
+context.  We componded that by not setting the right flag when lexing, so
+it didn't even know.  Mostly users got lucky.
+
+This reimplements the handline.
+1) Remove the forwarding, but declare object-like macros that
+expand to themselves.  This satisfies the #ifdef requirement
+
+2) Correctly set angled_brackets when lexing the parameter.  This tells
+the lexer (a) <...> is a header name and (b) "..." is too (not a string).
+
+3) Remove the in__has_include lexer state, just tell find_file that that's
+what's happenning, so it doesn't emit an error.
+
+We lose the (undocumented) ability to #undef __has_include.  That may well
+have been an accident of implementation.  There are no tests for it.
+
+We gain __has_include behaviour for all users of the preprocessors -- not
+just the C-family ones that defined a forwarding macro.
+
+	libcpp/
+	PR preprocessor/80005
+	* include/cpplib.h (BT_HAS_ATTRIBUTE): Fix comment.
+	* internal.h (struct lexer_state): Delete in__has_include field.
+	(struct spec_nodes): Rename n__has_include{,_next}__ fields.
+	(_cpp_defined_macro_p): New.
+	(_cpp_find_file): Add has_include parm.
+	* directives.c (lex_macro_node): Combine defined,
+	__has_inline{,_next} checking.
+	(do_ifdef, do_ifndef): Use _cpp_defined_macro_p.
+	(_cpp_init_directives): Refactor.
+	* expr.c (parse_defined): Use _cpp_defined_macro_p.
+	(eval_token): Adjust parse_has_include calls.
+	(parse_has_include): Add OP parameter.  Reimplement.
+	* files.c (_cpp_find_file): Add HAS_INCLUDE parm.  Use it to
+	inhibit error message.
+	(_cpp_stack_include): Adjust _cpp_find_file call.
+	(_cpp_fake_include, _cpp_compare_file_date): Likewise.
+	(open_file_failed): Remove in__has_include check.
+	(_cpp_has_header): Adjust _cpp_find_file call.
+	* identifiers.c (_cpp_init_hashtable): Don't init
+	__has_include{,_next} here ...
+	* init.c (cpp_init_builtins): ... init them here.  Define as
+	macros.
+	(cpp_read_main_file): Adjust _cpp_find_file call.
+	* pch.c (cpp_read_state): Adjust __has_include{,_next} access.
+	* traditional.c (_cpp_scan_out_locgical_line): Likewise.
+
+	gcc/c-family/
+	PR preprocessor/80005
+	* c-cppbuiltins.c (c_cpp_builtins): Don't define __has_include{,_next}.
+
+	gcc/testsuite/
+	PR preprocessor/80005
+	* g++.dg/cpp1y/feat-cxx14.C: Adjust.
+	* g++.dg/cpp1z/feat-cxx17.C: Adjust.
+	* g++.dg/cpp2a/feat-cxx2a.C: Adjust.
+	* g++.dg/cpp/pr80005.C: New.
+---
+ gcc/c-family/ChangeLog                  |  5 ++++
+ gcc/c-family/c-cppbuiltin.c             |  6 -----
+ gcc/testsuite/ChangeLog                 |  8 +++++++
+ gcc/testsuite/g++.dg/cpp/pr80005.C      | 24 +++++++++++++++++++
+ gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C | 10 ++------
+ gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C | 10 ++------
+ gcc/testsuite/g++.dg/cpp2a/feat-cxx2a.C | 10 ++------
+ libcpp/ChangeLog                        | 29 +++++++++++++++++++++-
+ libcpp/directives.c                     | 29 ++++++++--------------
+ libcpp/expr.c                           | 32 ++++++++++++-------------
+ libcpp/files.c                          | 27 +++++++++++----------
+ libcpp/identifiers.c                    |  3 +--
+ libcpp/include/cpplib.h                 |  2 +-
+ libcpp/init.c                           | 14 ++++++++++-
+ libcpp/internal.h                       | 20 +++++++++++-----
+ libcpp/pch.c                            |  4 ++--
+ libcpp/traditional.c                    |  8 +++----
+ 17 files changed, 146 insertions(+), 95 deletions(-)
+ create mode 100644 gcc/testsuite/g++.dg/cpp/pr80005.C
+
+diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
+index 09ba2c8b40f..fdddb98a74d 100644
+--- a/gcc/c-family/ChangeLog
++++ b/gcc/c-family/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c
+index a6308921dc9..70a12055e27 100644
+--- a/gcc/c-family/c-cppbuiltin.c
++++ b/gcc/c-family/c-cppbuiltin.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
+index a526e32ac89..67d5f2e9e28 100644
+--- a/gcc/testsuite/ChangeLog
++++ b/gcc/testsuite/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/cpp/pr80005.C b/gcc/testsuite/g++.dg/cpp/pr80005.C
+new file mode 100644
+index 00000000000..cc752616782
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/cpp/pr80005.C
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C b/gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C
+index a2a93f437b3..a78b6a36f36 100644
+--- a/gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C
++++ b/gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C b/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C
+index 55e56a06fe8..e6f456b2415 100644
+--- a/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C
++++ b/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/cpp2a/feat-cxx2a.C b/gcc/testsuite/g++.dg/cpp2a/feat-cxx2a.C
+index dd15cd6af3c..82fd602f9f1 100644
+--- a/gcc/testsuite/g++.dg/cpp2a/feat-cxx2a.C
++++ b/gcc/testsuite/g++.dg/cpp2a/feat-cxx2a.C
+@@ -1 +1,2 @@
+
++
+diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
+index 3249b93fe88..27a841bbdce 100644
+--- a/libcpp/ChangeLog
++++ b/libcpp/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/libcpp/directives.c b/libcpp/directives.c
+index 983206a5838..10735c8c668 100644
+--- a/libcpp/directives.c
++++ b/libcpp/directives.c
+@@ -1 +1,2 @@
+
++
+diff --git a/libcpp/expr.c b/libcpp/expr.c
+index 317faf50208..df21a4b9fb9 100644
+--- a/libcpp/expr.c
++++ b/libcpp/expr.c
+@@ -1 +1,2 @@
+
++
+diff --git a/libcpp/files.c b/libcpp/files.c
+index 7abae7ae6ec..260e787c329 100644
+--- a/libcpp/files.c
++++ b/libcpp/files.c
+@@ -1 +1,2 @@
+
++
+diff --git a/libcpp/identifiers.c b/libcpp/identifiers.c
+index 562d8fee3b5..9627e1bf4b0 100644
+--- a/libcpp/identifiers.c
++++ b/libcpp/identifiers.c
+@@ -1 +1,2 @@
+
++
+diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
+index 1c26c365347..56cbbd82750 100644
+--- a/libcpp/include/cpplib.h
++++ b/libcpp/include/cpplib.h
+@@ -1 +1,2 @@
+
++
+diff --git a/libcpp/init.c b/libcpp/init.c
+index 2b4923e1451..e798140ef8b 100644
+--- a/libcpp/init.c
++++ b/libcpp/init.c
+@@ -1 +1,2 @@
+
++
+diff --git a/libcpp/internal.h b/libcpp/internal.h
+index 3623baf8191..5453c3bff85 100644
+--- a/libcpp/internal.h
++++ b/libcpp/internal.h
+@@ -1 +1,2 @@
+
++
+diff --git a/libcpp/pch.c b/libcpp/pch.c
+index 607f805bebe..e631050936b 100644
+--- a/libcpp/pch.c
++++ b/libcpp/pch.c
+@@ -1 +1,2 @@
+
++
+diff --git a/libcpp/traditional.c b/libcpp/traditional.c
+index 21c63b47dd5..ff06d31a897 100644
+--- a/libcpp/traditional.c
++++ b/libcpp/traditional.c
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== long-lines.patch ===
+From eb7c7c524556df5364f03adc20f6a9db20858484 Mon Sep 17 00:00:00 2001
+From: Jakub Jelinek <jakub@redhat.com>
+Date: Mon, 13 Jan 2020 14:14:57 +0100
+Subject: [PATCH 0004/2034] tree-opt: Fix bootstrap failure in
+ tree-ssa-forwprop.c some more PR90838
+
+2020-01-13  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/90838
+	* tree-ssa-forwprop.c (simplify_count_trailing_zeroes): Use
+	SCALAR_INT_TYPE_MODE directly in CTZ_DEFINED_VALUE_AT_ZERO macro and and SCALAR_INT_TYPE_MODE directly in and so
+	argument rather than to initialize temporary for targets that
+	don't use the mode argument at all.  Initialize ctzval to avoid
+	warning at -O0.
+---
+ gcc/ChangeLog           | 9 +++++++++
+ gcc/tree-ssa-forwprop.c | 6 +++---
+ 2 files changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index a195863212e..f7df07343d1 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
+index aac31d02b6c..56c470f6ecf 100644
+--- a/gcc/tree-ssa-forwprop.c
++++ b/gcc/tree-ssa-forwprop.c
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== 0735-PR-87488-Add-with-diagnostics-urls-configuration-opt.patch ===
+From 458c8d6459c4005fc9886b6e25d168a6535ac415 Mon Sep 17 00:00:00 2001
+From: Bernd Edlinger <bernd.edlinger@hotmail.de>
+Date: Wed, 29 Jan 2020 15:31:10 +0100
+Subject: [PATCH 0735/2034] PR 87488: Add --with-diagnostics-urls configuration
+ option
+
+2020-02-15  David Malcolm  <dmalcolm@redhat.com>
+	    Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	PR 87488
+	PR other/93168
+	* config.in (DIAGNOSTICS_URLS_DEFAULT): New define.
+	* configure.ac (--with-diagnostics-urls): New configuration
+	option, based on --with-diagnostics-color.
+	(DIAGNOSTICS_URLS_DEFAULT): New define.
+	* config.h: Regenerate.
+	* configure: Regenerate.
+	* diagnostic.c (diagnostic_urls_init): Handle -1 for
+	DIAGNOSTICS_URLS_DEFAULT from configure-time
+	--with-diagnostics-urls=auto-if-env by querying for a GCC_URLS
+	and TERM_URLS environment variable.
+	* diagnostic-url.h (diagnostic_url_format): New enum type.
+	(diagnostic_urls_enabled_p): rename to...
+	(determine_url_format): ... this, and change return type.
+	* diagnostic-color.c (parse_env_vars_for_urls): New helper function.
+	(auto_enable_urls): Disable URLs on xfce4-terminal, gnome-terminal,
+	the linux console, and mingw.
+	(diagnostic_urls_enabled_p): rename to...
+	(determine_url_format): ... this, and adjust.
+	* pretty-print.h (pretty_printer::show_urls): rename to...
+	(pretty_printer::url_format): ... this, and change to enum.
+	* pretty-print.c (pretty_printer::pretty_printer,
+	pp_begin_url, pp_end_url, test_urls): Adjust.
+	* doc/install.texi (--with-diagnostics-urls): Document the new
+	configuration option.
+	(--with-diagnostics-color): Document the existing interaction
+	with GCC_COLORS better.
+	* doc/invoke.texi (-fdiagnostics-urls): Add GCC_URLS and TERM_URLS
+	vindex reference.  Update description of defaults based on the above.
+	(-fdiagnostics-color): Update description of how -fdiagnostics-color
+	interacts with GCC_COLORS.
+---
+ gcc/ChangeLog          |  36 +++++++++++++++
+ gcc/config.in          |   6 +++
+ gcc/configure          |  41 ++++++++++++++++-
+ gcc/configure.ac       |  28 ++++++++++++
+ gcc/diagnostic-color.c | 101 ++++++++++++++++++++++++++++++++++++++---
+ gcc/diagnostic-url.h   |  18 +++++++-
+ gcc/diagnostic.c       |  21 +++++++--
+ gcc/doc/install.texi   |  15 ++++--
+ gcc/doc/invoke.texi    |  39 ++++++++++++++--
+ gcc/pretty-print.c     |  44 +++++++++++++++---
+ gcc/pretty-print.h     |   5 +-
+ 11 files changed, 328 insertions(+), 26 deletions(-)
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index e6eb6ab4c21..22f990a3088 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/config.in b/gcc/config.in
+index 48292861842..01fb18dbbb5 100644
+--- a/gcc/config.in
++++ b/gcc/config.in
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/configure b/gcc/configure
+index 5fa565a40a4..f55cdb8c77f 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index 671b9a67d81..0e6e475950d 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/diagnostic-color.c b/gcc/diagnostic-color.c
+index d5547952921..b1baded2c9e 100644
+--- a/gcc/diagnostic-color.c
++++ b/gcc/diagnostic-color.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/diagnostic-url.h b/gcc/diagnostic-url.h
+index 6be056941f1..d28460b928b 100644
+--- a/gcc/diagnostic-url.h
++++ b/gcc/diagnostic-url.h
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
+index 3386f070256..e4a08f76def 100644
+--- a/gcc/diagnostic.c
++++ b/gcc/diagnostic.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
+index 6ffafacff50..8ddebbb6267 100644
+--- a/gcc/doc/install.texi
++++ b/gcc/doc/install.texi
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+index bd9ecebf103..597151670be 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/pretty-print.c b/gcc/pretty-print.c
+index 817c1059e08..dde138b0533 100644
+--- a/gcc/pretty-print.c
++++ b/gcc/pretty-print.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h
+index 001468c966e..22892f12ab7 100644
+--- a/gcc/pretty-print.h
++++ b/gcc/pretty-print.h
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== 0031-Fix-typo-and-avoid-possible-memory-leak-in-average_n.patch ===
+From b38e86ddb7a9b6d7e87d7cc0b23983d027fcbd96 Mon Sep 17 00:00:00 2001
+From: Kewen Lin <linkw@linux.ibm.com>
+Date: Tue, 14 Jan 2020 02:34:10 -0600
+Subject: [PATCH 0031/2034] Fix typo and avoid possible memory leak in
+ average_num_loop_insns
+
+Function average_num_loop_insns forgets to free loop body in early
+return.  Besides, overflow comparison checks 1000000 (e6) but the
+return value is 100000 (e5), fix this typo.
+
+gcc/ChangeLog
+
+2020-01-14  Kewen Lin  <linkw@gcc.gnu.org>
+
+    * cfgloopanal.c (average_num_loop_insns): Free bbs when early
+    return, fix typo on return value.
+---
+ gcc/ChangeLog     | 5 +++++
+ gcc/cfgloopanal.c | 5 ++++-
+ 2 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index 07e5bebe909..f3301b16464 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/cfgloopanal.c b/gcc/cfgloopanal.c
+index 392b1c337c4..0b33e8272a7 100644
+--- a/gcc/cfgloopanal.c
++++ b/gcc/cfgloopanal.c
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== 0735-PR-87488-Add-with-diagnostics-urls-configuration-opt.patch ===
+From 458c8d6459c4005fc9886b6e25d168a6535ac415 Mon Sep 17 00:00:00 2001
+From: Bernd Edlinger <bernd.edlinger@hotmail.de>
+Date: Wed, 29 Jan 2020 15:31:10 +0100
+Subject: [PATCH 0735/2034] PR 87488: Add --with-diagnostics-urls configuration
+ option
+
+2020-02-15  David Malcolm  <dmalcolm@redhat.com>
+	    Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	PR 87488
+	PR other/93168
+	* config.in (DIAGNOSTICS_URLS_DEFAULT): New define.
+	* configure.ac (--with-diagnostics-urls): New configuration
+	option, based on --with-diagnostics-color.
+	(DIAGNOSTICS_URLS_DEFAULT): New define.
+	* config.h: Regenerate.
+	* configure: Regenerate.
+	* diagnostic.c (diagnostic_urls_init): Handle -1 for
+	DIAGNOSTICS_URLS_DEFAULT from configure-time
+	--with-diagnostics-urls=auto-if-env by querying for a GCC_URLS
+	and TERM_URLS environment variable.
+	* diagnostic-url.h (diagnostic_url_format): New enum type.
+	(diagnostic_urls_enabled_p): rename to...
+	(determine_url_format): ... this, and change return type.
+	* diagnostic-color.c (parse_env_vars_for_urls): New helper function.
+	(auto_enable_urls): Disable URLs on xfce4-terminal, gnome-terminal,
+	the linux console, and mingw.
+	(diagnostic_urls_enabled_p): rename to...
+	(determine_url_format): ... this, and adjust.
+	* pretty-print.h (pretty_printer::show_urls): rename to...
+	(pretty_printer::url_format): ... this, and change to enum.
+	* pretty-print.c (pretty_printer::pretty_printer,
+	pp_begin_url, pp_end_url, test_urls): Adjust.
+	* doc/install.texi (--with-diagnostics-urls): Document the new
+	configuration option.
+	(--with-diagnostics-color): Document the existing interaction
+	with GCC_COLORS better.
+	* doc/invoke.texi (-fdiagnostics-urls): Add GCC_URLS and TERM_URLS
+	vindex reference.  Update description of defaults based on the above.
+	(-fdiagnostics-color): Update description of how -fdiagnostics-color
+	interacts with GCC_COLORS.
+---
+ gcc/ChangeLog          |  36 +++++++++++++++
+ gcc/config.in          |   6 +++
+ gcc/configure          |  41 ++++++++++++++++-
+ gcc/configure.ac       |  28 ++++++++++++
+ gcc/diagnostic-color.c | 101 ++++++++++++++++++++++++++++++++++++++---
+ gcc/diagnostic-url.h   |  18 +++++++-
+ gcc/diagnostic.c       |  21 +++++++--
+ gcc/doc/install.texi   |  15 ++++--
+ gcc/doc/invoke.texi    |  39 ++++++++++++++--
+ gcc/pretty-print.c     |  44 +++++++++++++++---
+ gcc/pretty-print.h     |   5 +-
+ 11 files changed, 328 insertions(+), 26 deletions(-)
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index e6eb6ab4c21..22f990a3088 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/config.in b/gcc/config.in
+index 48292861842..01fb18dbbb5 100644
+--- a/gcc/config.in
++++ b/gcc/config.in
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/configure b/gcc/configure
+index 5fa565a40a4..f55cdb8c77f 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index 671b9a67d81..0e6e475950d 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/diagnostic-color.c b/gcc/diagnostic-color.c
+index d5547952921..b1baded2c9e 100644
+--- a/gcc/diagnostic-color.c
++++ b/gcc/diagnostic-color.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/diagnostic-url.h b/gcc/diagnostic-url.h
+index 6be056941f1..d28460b928b 100644
+--- a/gcc/diagnostic-url.h
++++ b/gcc/diagnostic-url.h
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
+index 3386f070256..e4a08f76def 100644
+--- a/gcc/diagnostic.c
++++ b/gcc/diagnostic.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
+index 6ffafacff50..8ddebbb6267 100644
+--- a/gcc/doc/install.texi
++++ b/gcc/doc/install.texi
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+index bd9ecebf103..597151670be 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/pretty-print.c b/gcc/pretty-print.c
+index 817c1059e08..dde138b0533 100644
+--- a/gcc/pretty-print.c
++++ b/gcc/pretty-print.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h
+index 001468c966e..22892f12ab7 100644
+--- a/gcc/pretty-print.h
++++ b/gcc/pretty-print.h
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== co-authored-by.patch ===
+From d7a65edb629a010f7ef907d457343abcb569fab7 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Thu, 16 Apr 2020 15:39:22 +0200
+Subject: [PATCH 1850/2034] List valid pairs for new and delete operators.
+
+	PR c++/94314
+	* cgraphclones.c (set_new_clone_decl_and_node_flags): Drop
+	DECL_IS_REPLACEABLE_OPERATOR during cloning.
+	* tree-ssa-dce.c (valid_new_delete_pair_p): New function.
+	(propagate_necessity): Check operator names.
+
+	PR c++/94314
+	* g++.dg/pr94314.C: Do not use dg-additional-options
+	and remove not needed stdio.h include.
+	* g++.dg/pr94314-2.C: Likewise.
+	* g++.dg/pr94314-3.C: Likewise.
+	* g++.dg/pr94314-4.C: New test.
+
+co-authored-By: Jakub Jelinek <jakub@redhat.com>
+Co-Authored-by: John Miller <jm@example.com>
+co-authored-by: John Miller2 <jm2@example.com>
+---
+ gcc/ChangeLog                    |  9 +++
+ gcc/cgraphclones.c               |  2 +
+ gcc/testsuite/ChangeLog          | 10 ++++
+ gcc/testsuite/g++.dg/pr94314-2.C |  5 +-
+ gcc/testsuite/g++.dg/pr94314-3.C |  5 +-
+ gcc/testsuite/g++.dg/pr94314-4.C | 30 ++++++++++
+ gcc/testsuite/g++.dg/pr94314.C   |  5 +-
+ gcc/tree-ssa-dce.c               | 98 ++++++++++++++++++++++++++++----
+ 8 files changed, 142 insertions(+), 22 deletions(-)
+ create mode 100644 gcc/testsuite/g++.dg/pr94314-4.C
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index 74dbeeb44c6..9e499ec9c86 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c
+index c73b8f810f0..8f541a28b6e 100644
+--- a/gcc/cgraphclones.c
++++ b/gcc/cgraphclones.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
+index 756f1d759e6..94d2312022d 100644
+--- a/gcc/testsuite/ChangeLog
++++ b/gcc/testsuite/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/pr94314-2.C b/gcc/testsuite/g++.dg/pr94314-2.C
+index 36b93ed6d4d..998ce601767 100644
+--- a/gcc/testsuite/g++.dg/pr94314-2.C
++++ b/gcc/testsuite/g++.dg/pr94314-2.C
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/pr94314-3.C b/gcc/testsuite/g++.dg/pr94314-3.C
+index 575ba9d8ad8..846a5d6a3d8 100644
+--- a/gcc/testsuite/g++.dg/pr94314-3.C
++++ b/gcc/testsuite/g++.dg/pr94314-3.C
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/pr94314-4.C b/gcc/testsuite/g++.dg/pr94314-4.C
+new file mode 100644
+index 00000000000..d097f29d4ad
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/pr94314-4.C
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/g++.dg/pr94314.C b/gcc/testsuite/g++.dg/pr94314.C
+index 86e651d10ba..4e5ae122e9f 100644
+--- a/gcc/testsuite/g++.dg/pr94314.C
++++ b/gcc/testsuite/g++.dg/pr94314.C
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c
+index fd5f24c746c..757cfad5b5e 100644
+--- a/gcc/tree-ssa-dce.c
++++ b/gcc/tree-ssa-dce.c
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== 1699-combine-Fix-split_i2i3-ICE-PR94291.patch ===
+From c23c899aedf11069e992eed7358802b262d62f98 Mon Sep 17 00:00:00 2001
+From: Jakub Jelinek <jakub@redhat.com>
+Date: Tue, 7 Apr 2020 21:30:12 +0200
+Subject: [PATCH 1699/2034] combine: Fix split_i2i3 ICE [PR94291]
+
+The following testcase ICEs on armv7hl-linux-gnueabi.
+try_combine is called on:
+(gdb) p debug_rtx (i3)
+(insn 20 12 22 2 (set (mem/c:SI (plus:SI (reg/f:SI 102 sfp)
+                (const_int -4 [0xfffffffffffffffc])) [1 x+0 S4 A32])
+        (reg:SI 125)) "pr94291.c":7:8 241 {*arm_movsi_insn}
+     (expr_list:REG_DEAD (reg:SI 125)
+        (nil)))
+(gdb) p debug_rtx (i2)
+(insn 12 7 20 2 (parallel [
+            (set (reg:CC 100 cc)
+                (compare:CC (reg:SI 121 [ <retval> ])
+                    (const_int 0 [0])))
+            (set (reg:SI 125)
+                (reg:SI 121 [ <retval> ]))
+        ]) "pr94291.c":7:8 248 {*movsi_compare0}
+     (expr_list:REG_UNUSED (reg:CC 100 cc)
+        (nil)))
+and tries to recognize cc = r121 cmp 0; [sfp-4] = r121 parallel,
+but that isn't recognized, so it splits it into two: split_i2i3
+[sfp-4] = r121 followed by cc = r121 cmp 0 which is recognized, but
+ICEs because the code below insist that the SET_DEST of newi2pat
+(or first set in PARALLEL thereof) must be a REG or SUBREG of REG,
+but it is a MEM in this case.  I don't see any condition that would
+guarantee that, perhaps for the swap_i2i3 case it was somehow guaranteed.
+
+As the code just wants to update LOG_LINKS and LOG_LINKS are only for
+registers, not for MEM or anything else, the patch just doesn't update those
+if it isn't a REG or SUBREG of REG.
+
+2020-04-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR rtl-optimization/94291
+	PR rtl-optimization/84169
+	* combine.c (try_combine): For split_i2i3, don't assume SET_DEST
+	must be a REG or SUBREG of REG; if it is not one of these, don't
+	update LOG_LINKs.
+
+	* gcc.dg/pr94291.c: New test.
+---
+ gcc/ChangeLog                  |  8 +++++++
+ gcc/combine.c                  | 42 +++++++++++++++++++---------------
+ gcc/testsuite/ChangeLog        |  6 +++++
+ gcc/testsuite/gcc.dg/pr94291.c | 14 ++++++++++++
+ 4 files changed, 51 insertions(+), 19 deletions(-)
+ create mode 100644 gcc/testsuite/gcc.dg/pr94291.c
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index a1ab9fb4ef3..12803e90b0a 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/combine.c b/gcc/combine.c
+index 58366a6d331..cff76cd3303 100644
+--- a/gcc/combine.c
++++ b/gcc/combine.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
+index 71b5a14bcbe..3cbf891d58d 100644
+--- a/gcc/testsuite/ChangeLog
++++ b/gcc/testsuite/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.dg/pr94291.c b/gcc/testsuite/gcc.dg/pr94291.c
+new file mode 100644
+index 00000000000..7daa2b01166
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/pr94291.c
+@@ -0,0 +1 @@
++
+-- 
+2.26.1
+
+=== 0001-Add-patch_area_size-and-patch_area_entry-to-crtl.patch ===
+From 6607bdd99994c834f92fce924abdaea3405f62dc Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Fri, 1 May 2020 21:03:10 -0700
+Subject: [PATCH] Add patch_area_size and patch_area_entry to crtl
+
+Currently patchable area is at the wrong place.  It is placed immediately
+after function label and before .cfi_startproc.  A backend should be able
+to add a pseudo patchable area instruction durectly into RTL.  This patch
+adds patch_area_size and patch_area_entry to crtl so that the patchable
+area info is available in RTL passes.
+
+It also limits patch_area_size and patch_area_entry to 65535, which is
+a reasonable maximum size for patchable area.
+
+gcc/
+
+	PR target/93492
+	* cfgexpand.c (pass_expand::execute): Set crtl->patch_area_size
+	and crtl->patch_area_entry.
+	* emit-rtl.h (rtl_data): Add patch_area_size and patch_area_entry.
+	* opts.c (common_handle_option): Limit
+	function_entry_patch_area_size and function_entry_patch_area_start
+	to USHRT_MAX.  Fix a typo in error message.
+	* varasm.c (assemble_start_function): Use crtl->patch_area_size
+	and crtl->patch_area_entry.
+	* doc/invoke.texi: Document the maximum value for
+	-fpatchable-function-entry.
+
+gcc/c-family/
+
+	PR target/12345
+	* c-attribs.c (handle_patchable_function_entry_attribute): Limit
+	value to USHRT_MAX (65535).
+
+---
+ gcc/ChangeLog                                 | 14 ++++++++
+ gcc/c-family/ChangeLog                        |  6 ++++
+ gcc/c-family/c-attribs.c                      |  9 +++++
+ gcc/cfgexpand.c                               | 33 +++++++++++++++++++
+ gcc/doc/invoke.texi                           |  1 +
+ gcc/emit-rtl.h                                |  6 ++++
+ gcc/opts.c                                    |  4 ++-
+ gcc/testsuite/ChangeLog                       |  7 ++++
+ .../patchable_function_entry-error-1.c        |  9 +++++
+ .../patchable_function_entry-error-2.c        |  9 +++++
+ .../patchable_function_entry-error-3.c        | 17 ++++++++++
+ gcc/varasm.c                                  | 30 ++---------------
+ 12 files changed, 116 insertions(+), 29 deletions(-)
+ create mode 100644 gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c
+ create mode 100644 gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c
+ create mode 100644 gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index e85a8e8813e..fb776ba5a0e 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
+index c429b49e68c..69ea1fdc4f3 100644
+--- a/gcc/c-family/ChangeLog
++++ b/gcc/c-family/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/c-family/c-attribs.c b/gcc/c-family/c-attribs.c
+index ac936d5bbbb..a101312c581 100644
+--- a/gcc/c-family/c-attribs.c
++++ b/gcc/c-family/c-attribs.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
+index a7ec77d5c85..86efa22bf60 100644
+--- a/gcc/cfgexpand.c
++++ b/gcc/cfgexpand.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+index 527d362533a..767d1f07801 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/emit-rtl.h b/gcc/emit-rtl.h
+index a878efe3cf7..3d6565c8a30 100644
+--- a/gcc/emit-rtl.h
++++ b/gcc/emit-rtl.h
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/opts.c b/gcc/opts.c
+index c212a1a57dc..3dccef39701 100644
+--- a/gcc/opts.c
++++ b/gcc/opts.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
+index 176aa117904..185f9ea725e 100644
+--- a/gcc/testsuite/ChangeLog
++++ b/gcc/testsuite/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c b/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c
+new file mode 100644
+index 00000000000..f60bf46cfe3
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c b/gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c
+new file mode 100644
+index 00000000000..90f88c78be7
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c b/gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c
+new file mode 100644
+index 00000000000..4490e5c15ca
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c
+@@ -0,0 +1 @@
++
+diff --git a/gcc/varasm.c b/gcc/varasm.c
+index 271a67abf56..f062e48071f 100644
+--- a/gcc/varasm.c
++++ b/gcc/varasm.c
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.2
+
+=== 1957-c-generic-lambda-forwarding-function-PR94546.patch ===
+From aedd04caa945260ea77fd22f29b77292f7dba72e Mon Sep 17 00:00:00 2001
+From: Jason Merrill <jason@redhat.com>
+Date: Wed, 22 Apr 2020 02:27:54 -0400
+Subject: [PATCH 1957/2034] c++: generic lambda forwarding function [PR94546]
+
+While instantiating test(Plot) we partially instantiate the generic lambda.
+We look at forward<T>(rest)... and see that it's just replacing parameter
+packs with new parameter packs and tries to do a direct substitution.  But
+because register_parameter_specializations had built up a
+NONTYPE_ARGUMENT_PACK around the new parameter pack, the substitution
+failed.  So let's not wrap it that way.
+
+gcc/cp/ChangeLog
+2020-04-22  Jason Merrill  <jason@redhat.com>
+
+	PR c++/94546
+	* pt.c (register_parameter_specializations): If the instantiation is
+	still a parameter pack, don't wrap it in a NONTYPE_ARGUMENT_PACK.
+	(tsubst_pack_expansion, tsubst_expr): Adjust.
+---
+ gcc/cp/ChangeLog                              |  7 +++++
+ gcc/cp/pt.c                                   | 28 +++++++------------
+ .../g++.dg/cpp2a/lambda-generic-variadic20.C  | 23 +++++++++++++++
+ 3 files changed, 40 insertions(+), 18 deletions(-)
+ create mode 100644 gcc/testsuite/g++.dg/cpp2a/lambda-generic-variadic20.C
+
+diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
+index 640e4948130..4b6691a77f0 100644
+--- a/gcc/cp/ChangeLog
++++ b/gcc/cp/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
+index 7bf249cee5c..2fe7b66707c 100644
+--- a/gcc/cp/pt.c
++++ b/gcc/cp/pt.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/cpp2a/lambda-generic-variadic20.C b/gcc/testsuite/g++.dg/cpp2a/lambda-generic-variadic20.C
+new file mode 100644
+index 00000000000..3d69dbb8e98
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/cpp2a/lambda-generic-variadic20.C
+@@ -0,0 +1 @@
++
+-- 
+2.26.1
+
+=== 0030-PR-c-92746-ICE-with-noexcept-of-function-concept-che.patch ===
+From edabbec31e3bfc9a9757f80c8610706ed00e5a1a Mon Sep 17 00:00:00 2001
+From: Jason Merrill <jason@redhat.com>
+Date: Mon, 13 Jan 2020 18:13:46 -0500
+Subject: [PATCH 0030/2034] 	PR c++/92746 - ICE with noexcept of function
+ concept check.
+
+Another place that needs to specially handle Concepts TS function-style
+concepts.
+
+	* except.c (check_noexcept_r): Handle concept-check.
+---
+ gcc/cp/ChangeLog                            | 3 +++
+ gcc/cp/except.c                             | 2 ++
+ gcc/testsuite/g++.dg/concepts/fn-concept3.C | 6 ++++++
+ 3 files changed, 11 insertions(+)
+ create mode 100644 gcc/testsuite/g++.dg/concepts/fn-concept3.C
+
+diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
+index 59646c70fa4..4729e3d331d 100644
+--- a/gcc/cp/ChangeLog
++++ b/gcc/cp/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/cp/except.c b/gcc/cp/except.c
+index e073bd4d2bc..55b4b6af442 100644
+--- a/gcc/cp/except.c
++++ b/gcc/cp/except.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/concepts/fn-concept3.C b/gcc/testsuite/g++.dg/concepts/fn-concept3.C
+new file mode 100644
+index 00000000000..ecb7f6b12f7
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/concepts/fn-concept3.C
+@@ -0,0 +1 @@
++
+-- 
+2.26.1
+
+=== 0129-Add-PR-number-to-change-log.patch ===
+From f788c2d66a6ee1ded65dafccbc5e485d42af4808 Mon Sep 17 00:00:00 2001
+From: Richard Sandiford <richard.sandiford@arm.com>
+Date: Fri, 17 Jan 2020 12:22:58 +0000
+Subject: [PATCH 0129/2034] Add PR number to change log
+
+---
+ gcc/ChangeLog | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index 6c6d586ca75..49ca5f92dec 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== 0577-aarch64-Add-an-and.patch ===
+From bba0c624c8b1d6e54dc58091dd21b0c2ab000434 Mon Sep 17 00:00:00 2001
+From: Richard Sandiford <richard.sandiford@arm.com>
+Date: Mon, 3 Feb 2020 21:43:44 +0000
+Subject: [PATCH 0577/2034] aarch64: Add an and/ior-based movk pattern
+ [PR87763]
+
+This patch adds a second movk pattern that models the instruction
+as a "normal" and/ior operation rather than an insertion.  It fixes
+the third insv_1.c failure in PR87763, which was a regression from
+GCC 8.
+
+2020-02-06  Richard Sandiford  <richard.sandiford@arm.com>
+
+gcc/
+	PR target/87763
+	* config/aarch64/aarch64-protos.h (aarch64_movk_shift): Declare.
+	* config/aarch64/aarch64.c (aarch64_movk_shift): New function.
+	* config/aarch64/aarch64.md (aarch64_movk<mode>): New pattern.
+
+gcc/testsuite/
+	PR target/87763
+	* gcc.target/aarch64/movk_2.c: New test.
+---
+ gcc/ChangeLog                             |  7 ++
+ gcc/config/aarch64/aarch64-protos.h       |  1 +
+ gcc/config/aarch64/aarch64.c              | 24 +++++++
+ gcc/config/aarch64/aarch64.md             | 17 +++++
+ gcc/testsuite/ChangeLog                   |  5 ++
+ gcc/testsuite/gcc.target/aarch64/movk_2.c | 78 +++++++++++++++++++++++
+ 6 files changed, 132 insertions(+)
+ create mode 100644 gcc/testsuite/gcc.target/aarch64/movk_2.c
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index efbbbf08225..cea8ffee99c 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h
+index 24cc65a383a..d29975a8921 100644
+--- a/gcc/config/aarch64/aarch64-protos.h
++++ b/gcc/config/aarch64/aarch64-protos.h
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
+index 6581e4cb075..6a1b4099af1 100644
+--- a/gcc/config/aarch64/aarch64.c
++++ b/gcc/config/aarch64/aarch64.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
+index 90eebce85c0..9c1f17d0f85 100644
+--- a/gcc/config/aarch64/aarch64.md
++++ b/gcc/config/aarch64/aarch64.md
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
+index 601bc336290..cdb26581b9c 100644
+--- a/gcc/testsuite/ChangeLog
++++ b/gcc/testsuite/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/aarch64/movk_2.c b/gcc/testsuite/gcc.target/aarch64/movk_2.c
+new file mode 100644
+index 00000000000..a0477ad5d42
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/aarch64/movk_2.c
+@@ -0,0 +1 @@
++
+-- 
+2.26.1
+
+=== 1975-S-390-Fix-several-test-cases.patch ===
+From 803596fe9591026a50b59ff961ebc114097677b5 Mon Sep 17 00:00:00 2001
+From: Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
+Date: Tue, 10 Mar 2020 10:49:28 +0100
+Subject: [PATCH 1975/2034] S/390: Fix several test cases
+
+gcc/ChangeLog:
+
+2020-04-21  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+
+	* config/s390/s390.md ("*<risbg_n>_ior_and_sr_ze<mode>"): Lift from SI
+	mode to DSI. ("*trunc_sidi_and_subreg_ze<clobbercc_or_nocc>"): New
+	insn pattern.
+
+gcc/testsuite/ChangeLog:
+
+2020-04-21  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+
+	* gcc.target/s390/addsub-signed-overflow-1.c: Fix options.
+	* gcc.target/s390/addsub-signed-overflow-2.c: Fix options.
+	* gcc.target/s390/bswap-1.c: Fix scan assembler regex.
+	* gcc.target/s390/global-array-element-pic2.c: Fix scan assembler regex.
+	* gcc.target/s390/load-relative-check.c: Fix options.
+	* gcc.target/s390/morestack.c: Fix options.
+	* gcc.target/s390/nobp-return-mem-z900.c: Temporarily silence this case.
+	* gcc.target/s390/risbg-ll-1.c: Fix scan assembler regex.
+	* gcc.target/s390/risbg-ll-2.c: Fix scan assembler regex.
+	* gcc.target/s390/risbg-ll-3.c: Fix scan assembler regex.
+	* gcc.target/s390/target-attribute/pr82012.c: Fix error message.
+---
+ gcc/config/s390/s390.md                       | 39 ++++++++++++-------
+ .../s390/addsub-signed-overflow-1.c           |  2 +-
+ .../s390/addsub-signed-overflow-2.c           |  2 +-
+ gcc/testsuite/gcc.target/s390/bswap-1.c       |  8 ++--
+ .../s390/global-array-element-pic2.c          |  4 +-
+ .../gcc.target/s390/load-relative-check.c     |  2 +-
+ gcc/testsuite/gcc.target/s390/morestack.c     |  2 +-
+ .../gcc.target/s390/nobp-return-mem-z900.c    | 17 ++++++--
+ gcc/testsuite/gcc.target/s390/risbg-ll-1.c    | 13 +++----
+ gcc/testsuite/gcc.target/s390/risbg-ll-2.c    |  6 +--
+ gcc/testsuite/gcc.target/s390/risbg-ll-3.c    |  2 +-
+ .../s390/target-attribute/pr82012.c           |  2 +-
+ 12 files changed, 59 insertions(+), 40 deletions(-)
+
+diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
+index 44b59659e20..cf53ef1b791 100644
+--- a/gcc/config/s390/s390.md
++++ b/gcc/config/s390/s390.md
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-1.c b/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-1.c
+index 143220d5541..ebc02479587 100644
+--- a/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-1.c
++++ b/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-1.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-2.c b/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-2.c
+index 798e489cece..8bd1a764bc6 100644
+--- a/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-2.c
++++ b/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-2.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/s390/bswap-1.c b/gcc/testsuite/gcc.target/s390/bswap-1.c
+index edfcdf888c0..c11a0ea780b 100644
+--- a/gcc/testsuite/gcc.target/s390/bswap-1.c
++++ b/gcc/testsuite/gcc.target/s390/bswap-1.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/s390/global-array-element-pic2.c b/gcc/testsuite/gcc.target/s390/global-array-element-pic2.c
+index b9398a8042f..72b87d40b85 100644
+--- a/gcc/testsuite/gcc.target/s390/global-array-element-pic2.c
++++ b/gcc/testsuite/gcc.target/s390/global-array-element-pic2.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/s390/load-relative-check.c b/gcc/testsuite/gcc.target/s390/load-relative-check.c
+index 3d4671a6b3f..a55bc2442f1 100644
+--- a/gcc/testsuite/gcc.target/s390/load-relative-check.c
++++ b/gcc/testsuite/gcc.target/s390/load-relative-check.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/s390/morestack.c b/gcc/testsuite/gcc.target/s390/morestack.c
+index aa28b72aa6c..4cfa220e737 100644
+--- a/gcc/testsuite/gcc.target/s390/morestack.c
++++ b/gcc/testsuite/gcc.target/s390/morestack.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c b/gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c
+index 0b318115a8f..3d6aca1f95f 100644
+--- a/gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c
++++ b/gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/s390/risbg-ll-1.c b/gcc/testsuite/gcc.target/s390/risbg-ll-1.c
+index 30350d04c45..1cac15820c0 100644
+--- a/gcc/testsuite/gcc.target/s390/risbg-ll-1.c
++++ b/gcc/testsuite/gcc.target/s390/risbg-ll-1.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/s390/risbg-ll-2.c b/gcc/testsuite/gcc.target/s390/risbg-ll-2.c
+index 754c17311dd..8bf1a0ff88b 100644
+--- a/gcc/testsuite/gcc.target/s390/risbg-ll-2.c
++++ b/gcc/testsuite/gcc.target/s390/risbg-ll-2.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/s390/risbg-ll-3.c b/gcc/testsuite/gcc.target/s390/risbg-ll-3.c
+index 2a2db543cd9..90d37f2c1ce 100644
+--- a/gcc/testsuite/gcc.target/s390/risbg-ll-3.c
++++ b/gcc/testsuite/gcc.target/s390/risbg-ll-3.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/pr82012.c b/gcc/testsuite/gcc.target/s390/target-attribute/pr82012.c
+index 2e1f7ae57be..ad1bf76d4d2 100644
+--- a/gcc/testsuite/gcc.target/s390/target-attribute/pr82012.c
++++ b/gcc/testsuite/gcc.target/s390/target-attribute/pr82012.c
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== 1999-rs6000-Fix-C-14-vs.-C-17-ABI-bug-on-powerpc64le-PR94.patch ===
+From a39ed81b8a0b46320a7c6ece3f7ad4c3f8519609 Mon Sep 17 00:00:00 2001
+From: Jakub Jelinek <jakub@redhat.com>
+Date: Thu, 23 Apr 2020 09:59:57 +0200
+Subject: [PATCH 1999/2034] rs6000: Fix C++14 vs. C++17 ABI bug on powerpc64le
+ [PR94707]
+
+As mentioned in the PR and on IRC, the recently added struct-layout-1.exp
+new tests FAIL on powerpc64le-linux (among other targets).
+FAIL: tmpdir-g++.dg-struct-layout-1/t032 cp_compat_x_tst.o-cp_compat_y_tst.o execute
+FAIL: tmpdir-g++.dg-struct-layout-1/t058 cp_compat_x_tst.o-cp_compat_y_tst.o execute
+FAIL: tmpdir-g++.dg-struct-layout-1/t059 cp_compat_x_tst.o-cp_compat_y_tst.o execute
+in particular.  The problem is that the presence or absence of the C++17
+artificial empty base fields, which have non-zero TYPE_SIZE, but zero
+DECL_SIZE, change the ABI decisions, if it is present (-std=c++17), the type
+might not be considered homogeneous, while if it is absent (-std=c++14), it
+can be.
+
+The following patch fixes that and emits a -Wpsabi inform; perhaps more
+often than it could, because the fact that rs6000_discover_homogeneous_aggregate
+returns true when it didn't in in GCC 7/8/9 with -std=c++17 doesn't still
+mean it will make a different ABI decision, but the warning triggered only
+on the test I've changed (the struct-layout-1.exp tests use -w -Wno-psabi
+already).
+
+2020-04-23  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/94707
+	* config/rs6000/rs6000-call.c (rs6000_aggregate_candidate): Add
+	cxx17_empty_base_seen argument.  Pass it to recursive calls.
+	Ignore cxx17_empty_base_field_p fields after setting
+	*cxx17_empty_base_seen to true.
+	(rs6000_discover_homogeneous_aggregate): Adjust
+	rs6000_aggregate_candidate caller.  With -Wpsabi, diagnose homogeneous
+	aggregates with C++17 empty base fields.
+
+	* g++.dg/tree-ssa/pr27830.C: Use -Wpsabi -w for -std=c++17 and higher.
+---
+ gcc/ChangeLog                           | 13 ++++++++++
+ gcc/config/rs6000/rs6000-call.c         | 34 +++++++++++++++++++++----
+ gcc/testsuite/ChangeLog                 |  3 +++
+ gcc/testsuite/g++.dg/tree-ssa/pr27830.C |  2 ++
+ 4 files changed, 47 insertions(+), 5 deletions(-)
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index 06f7eda0033..93c3076eb86 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
+index e08621ace27..a9ae7ab70ca 100644
+--- a/gcc/config/rs6000/rs6000-call.c
++++ b/gcc/config/rs6000/rs6000-call.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
+index 684e408c1a5..245c1512c76 100644
+--- a/gcc/testsuite/ChangeLog
++++ b/gcc/testsuite/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr27830.C b/gcc/testsuite/g++.dg/tree-ssa/pr27830.C
+index 01c7fc18783..551ebc428cd 100644
+--- a/gcc/testsuite/g++.dg/tree-ssa/pr27830.C
++++ b/gcc/testsuite/g++.dg/tree-ssa/pr27830.C
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== 0001-Add-patch_area_size-and-patch_area_entry-to-crtl.patch ===
+From 6607bdd99994c834f92fce924abdaea3405f62dc Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Fri, 1 May 2020 21:03:10 -0700
+Subject: [PATCH] Add patch_area_size and patch_area_entry to crtl
+
+Currently patchable area is at the wrong place.  It is placed immediately
+after function label and before .cfi_startproc.  A backend should be able
+to add a pseudo patchable area instruction durectly into RTL.  This patch
+adds patch_area_size and patch_area_entry to crtl so that the patchable
+area info is available in RTL passes.
+
+It also limits patch_area_size and patch_area_entry to 65535, which is
+a reasonable maximum size for patchable area.
+
+gcc/
+
+	PR target/93492
+	* cfgexpand.c (pass_expand::execute): Set crtl->patch_area_size
+	and crtl->patch_area_entry.
+	* emit-rtl.h (rtl_data): Add patch_area_size and patch_area_entry.
+	* opts.c (common_handle_option): Limit
+	function_entry_patch_area_size and function_entry_patch_area_start
+	to USHRT_MAX.  Fix a typo in error message.
+	* varasm.c (assemble_start_function): Use crtl->patch_area_size
+	and crtl->patch_area_entry.
+	* doc/invoke.texi: Document the maximum value for
+	-fpatchable-function-entry.
+
+gcc/c-family/
+
+	PR target/12345
+	* c-attribs.c (handle_patchable_function_entry_attribute): Limit
+	value to USHRT_MAX (65535).
+
+---
+ gcc/ChangeLog                                 | 14 ++++++++
+ gcc/c-family/ChangeLog                        |  6 ++++
+ gcc/c-family/c-attribs.c                      |  9 +++++
+ gcc/cfgexpand.c                               | 33 +++++++++++++++++++
+ gcc/doc/invoke.texi                           |  1 +
+ gcc/emit-rtl.h                                |  6 ++++
+ gcc/opts.c                                    |  4 ++-
+ gcc/testsuite/ChangeLog                       |  7 ++++
+ .../patchable_function_entry-error-1.c        |  9 +++++
+ .../patchable_function_entry-error-2.c        |  9 +++++
+ .../patchable_function_entry-error-3.c        | 17 ++++++++++
+ gcc/varasm.c                                  | 30 ++---------------
+ 12 files changed, 116 insertions(+), 29 deletions(-)
+ create mode 100644 gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c
+ create mode 100644 gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c
+ create mode 100644 gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index e85a8e8813e..fb776ba5a0e 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
+index c429b49e68c..69ea1fdc4f3 100644
+--- a/gcc/c-family/ChangeLog
++++ b/gcc/c-family/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/c-family/c-attribs.c b/gcc/c-family/c-attribs.c
+index ac936d5bbbb..a101312c581 100644
+--- a/gcc/c-family/c-attribs.c
++++ b/gcc/c-family/c-attribs.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
+index a7ec77d5c85..86efa22bf60 100644
+--- a/gcc/cfgexpand.c
++++ b/gcc/cfgexpand.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+index 527d362533a..767d1f07801 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/emit-rtl.h b/gcc/emit-rtl.h
+index a878efe3cf7..3d6565c8a30 100644
+--- a/gcc/emit-rtl.h
++++ b/gcc/emit-rtl.h
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/opts.c b/gcc/opts.c
+index c212a1a57dc..3dccef39701 100644
+--- a/gcc/opts.c
++++ b/gcc/opts.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
+index 176aa117904..185f9ea725e 100644
+--- a/gcc/testsuite/ChangeLog
++++ b/gcc/testsuite/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c b/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c
+new file mode 100644
+index 00000000000..f60bf46cfe3
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c b/gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c
+new file mode 100644
+index 00000000000..90f88c78be7
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c b/gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c
+new file mode 100644
+index 00000000000..4490e5c15ca
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c
+@@ -0,0 +1 @@
++
+diff --git a/gcc/varasm.c b/gcc/varasm.c
+index 271a67abf56..f062e48071f 100644
+--- a/gcc/varasm.c
++++ b/gcc/varasm.c
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.2
+
+=== 0002-Bump-date.patch ===
+From a139bafeec76732d964b99e8be3d61b3cab0359d Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Tue, 12 May 2020 09:27:51 +0200
+Subject: [PATCH 2/2] Bump date.
+
+---
+ gcc/DATESTAMP | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
+index c3d42a6f89a..b03d4a0feab 100644
+--- a/gcc/DATESTAMP
++++ b/gcc/DATESTAMP
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.2
+
+=== 0001-Just-test-it.patch ===
+From 6b10b909c0b49ac7ace2cd53021b3ff7ffb2d3f4 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Tue, 12 May 2020 09:25:54 +0200
+Subject: [PATCH 1/2] Just test it.
+
+gcc/ChangeLog:
+
+2020-05-12  Martin Liska  <mliska@suse.cz>
+
+	PR ipa/12345
+	* tree-vrp.c: Done.
+	* tree.c: Done.
+---
+ gcc/tree-vrp.c | 2 ++
+ gcc/tree.c     | 3 +++
+ 2 files changed, 5 insertions(+)
+
+diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
+index a8861670790..32722d2c714 100644
+--- a/gcc/tree-vrp.c
++++ b/gcc/tree-vrp.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/tree.c b/gcc/tree.c
+index 0ddf002e9eb..fa7c6b28a4e 100644
+--- a/gcc/tree.c
++++ b/gcc/tree.c
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.2
+
+=== trailing-whitespaces.patch ===
+From eb7c7c524556df5364f03adc20f6a9db20858484 Mon Sep 17 00:00:00 2001
+From: Jakub Jelinek <jakub@redhat.com>
+Date: Mon, 13 Jan 2020 14:14:57 +0100
+Subject: [PATCH 0004/2034] tree-opt: Fix bootstrap failure in
+ tree-ssa-forwprop.c some more PR90838
+
+2020-01-13  Jakub Jelinek  <jakub@redhat.com>   
+
+	PR tree-optimization/90838
+	* tree-ssa-forwprop.c (simplify_count_trailing_zeroes): Use
+	SCALAR_INT_TYPE_MODE directly in CTZ_DEFINED_VALUE_AT_ZERO macro      
+	argument rather than to initialize temporary for targets that
+	don't use the mode argument at all.  Initialize ctzval to avoid  
+	warning at -O0.
+---
+ gcc/ChangeLog           | 9 +++++++++
+ gcc/tree-ssa-forwprop.c | 6 +++---
+ 2 files changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index a195863212e..f7df07343d1 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
+index aac31d02b6c..56c470f6ecf 100644
+--- a/gcc/tree-ssa-forwprop.c
++++ b/gcc/tree-ssa-forwprop.c
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.1
+
+=== pr-check1.patch ===
+From 5194b51ed9714808d88827531e91474895b6c706 Mon Sep 17 00:00:00 2001
+From: Jason Merrill <jason@redhat.com>
+Date: Thu, 16 Jan 2020 16:55:39 -0500
+Subject: [PATCH 0121/2034] PR c++/93286 - ICE with __is_constructible and
+ variadic template.
+
+Here we had been recursing in tsubst_copy_and_build if type2 was a TREE_LIST
+because that function knew how to deal with pack expansions, and tsubst
+didn't.  But tsubst_copy_and_build expects to be dealing with expressions,
+so we crash when trying to convert_from_reference a type.
+
+gcc/cp/ChangeLog:
+	PR ipa/12345
+	* pt.c (tsubst) [TREE_LIST]: Handle pack expansion.
+	(tsubst_copy_and_build) [TRAIT_EXPR]: Always use tsubst for type2.
+
+gcc/testsuite/ChangeLog:
+	* g++.dg/ext/is_constructible4.C: New file.
+---
+ gcc/cp/ChangeLog                             |  4 ++
+ gcc/cp/pt.c                                  | 74 ++++++++++++++++++--
+ gcc/testsuite/g++.dg/ext/is_constructible4.C | 18 +++++
+ 3 files changed, 89 insertions(+), 7 deletions(-)
+ create mode 100644 gcc/testsuite/g++.dg/ext/is_constructible4.C
+
+diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
+index 3ca5d7a11b4..c37e461bcc5 100644
+--- a/gcc/cp/ChangeLog
++++ b/gcc/cp/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
+index 9bb8cc13e5f..872f8ff8f52 100644
+--- a/gcc/cp/pt.c
++++ b/gcc/cp/pt.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/ext/is_constructible4.C b/gcc/testsuite/g++.dg/ext/is_constructible4.C
+new file mode 100644
+index 00000000000..6dfe3c01661
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/is_constructible4.C
+@@ -0,0 +1 @@
++
+-- 
+2.26.1
+
+=== 0020-IPA-Avoid-segfault-in-devirtualization_time_bonus-PR.patch ===
+From 8472660b98a31b32b7d030c2cdc4d41d326364d5 Mon Sep 17 00:00:00 2001
+From: Martin Jambor <mjambor@suse.cz>
+Date: Mon, 13 Jan 2020 19:13:46 +0100
+Subject: [PATCH 0020/2034] IPA: Avoid segfault in devirtualization_time_bonus
+ (PR 93223)
+
+2020-01-13  Martin Jambor  <mjambor@suse.cz>
+
+	PR ipa/93223
+	* ipa-cp.c (devirtualization_time_bonus): Check whether isummary is
+	NULL.
+
+	testsuite/
+	* g++.dg/ipa/pr93223.C: New test.
+---
+ gcc/ipa-cp.c                       |  2 +-
+ gcc/testsuite/g++.dg/ipa/pr93223.C | 62 ++++++++++++++++++++++++++++++
+ 2 files changed, 63 insertions(+), 1 deletion(-)
+ create mode 100644 gcc/testsuite/g++.dg/ipa/pr93223.C
+
+diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
+index 612f3d0a89b..17da1d8e8a7 100644
+--- a/gcc/ipa-cp.c
++++ b/gcc/ipa-cp.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/ipa/pr93223.C b/gcc/testsuite/g++.dg/ipa/pr93223.C
+new file mode 100644
+index 00000000000..87f98b5e244
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ipa/pr93223.C
+@@ -0,0 +1 @@
++
+-- 
+2.26.1
+
+=== 0043-Compare-TREE_ADDRESSABLE-and-TYPE_MODE-when-ODR-chec.patch ===
+From 288c5324bf6e418dd94d718d1619464a4f68ff8e Mon Sep 17 00:00:00 2001
+From: Jan Hubicka <jh@suse.cz>
+Date: Tue, 14 Jan 2020 21:45:03 +0100
+Subject: [PATCH 0043/2034] Compare TREE_ADDRESSABLE and TYPE_MODE when ODR
+ checking types.
+
+	PR lto/91576
+	* ipa-devirt.c (odr_types_equivalent_p): Compare TREE_ADDRESSABLE and
+	TYPE_MODE.
+
+	* testsuite/g++.dg/lto/odr-8_0.C: New testcase.
+	* testsuite/g++.dg/lto/odr-8_1.C: New testcase.
+---
+ gcc/ChangeLog                      |  6 ++++++
+ gcc/ipa-devirt.c                   | 21 +++++++++++++++++++++
+ gcc/testsuite/ChangeLog            |  6 ++++++
+ gcc/testsuite/g++.dg/lto/odr-8_0.C |  7 +++++++
+ gcc/testsuite/g++.dg/lto/odr-8_1.C | 12 ++++++++++++
+ 5 files changed, 52 insertions(+)
+ create mode 100644 gcc/testsuite/g++.dg/lto/odr-8_0.C
+ create mode 100644 gcc/testsuite/g++.dg/lto/odr-8_1.C
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index 38165123654..33ca91a6467 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c
+index f0031957375..b609a77701d 100644
+--- a/gcc/ipa-devirt.c
++++ b/gcc/ipa-devirt.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
+index 8e3b9105188..dc42601794b 100644
+--- a/gcc/testsuite/ChangeLog
++++ b/gcc/testsuite/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/g++.dg/lto/odr-8_0.C b/gcc/testsuite/g++.dg/lto/odr-8_0.C
+new file mode 100644
+index 00000000000..59f51399fac
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/lto/odr-8_0.C
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/g++.dg/lto/odr-8_1.C b/gcc/testsuite/g++.dg/lto/odr-8_1.C
+new file mode 100644
+index 00000000000..742df8cc906
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/lto/odr-8_1.C
+@@ -0,0 +1 @@
++
+-- 
+2.26.1
+
+=== 0096-GCC-PATCH-AArch64-Add-ACLE-intrinsics-for-dot-produc.patch ===
+From 8c197c851e7528baba7cb837f34c05ba2242f705 Mon Sep 17 00:00:00 2001
+From: Stam Markianos-Wright <stam.markianos-wright@arm.com>
+Date: Thu, 16 Jan 2020 14:20:48 +0000
+Subject: [PATCH 0096/2034] [GCC][PATCH][AArch64]Add ACLE intrinsics for dot
+ product (usdot - vector, <us/su>dot - by element) for AArch64 AdvSIMD ARMv8.6
+ Extension
+
+gcc/ChangeLog:
+
+2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
+
+	* config/aarch64/aarch64-builtins.c: (enum aarch64_type_qualifiers):
+	New qualifier_lane_quadtup_index, TYPES_TERNOP_SSUS,
+	TYPES_QUADOPSSUS_LANE_QUADTUP, TYPES_QUADOPSSSU_LANE_QUADTUP.
+	(aarch64_simd_expand_args): Add case SIMD_ARG_LANE_QUADTUP_INDEX.
+	(aarch64_simd_expand_builtin): Add qualifier_lane_quadtup_index.
+	* config/aarch64/aarch64-simd-builtins.def (usdot, usdot_lane,
+	usdot_laneq, sudot_lane,sudot_laneq): New.
+	* config/aarch64/aarch64-simd.md (aarch64_usdot): New.
+	(aarch64_<sur>dot_lane): New.
+	* config/aarch64/arm_neon.h (vusdot_s32): New.
+	(vusdotq_s32): New.
+	(vusdot_lane_s32): New.
+	(vsudot_lane_s32): New.
+	* config/aarch64/iterators.md (DOTPROD_I8MM): New iterator.
+	(UNSPEC_USDOT, UNSPEC_SUDOT): New unspecs.
+
+gcc/testsuite/ChangeLog:
+
+2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
+
+	* gcc.target/aarch64/advsimd-intrinsics/vdot-compile-3-1.c: New test.
+	* gcc.target/aarch64/advsimd-intrinsics/vdot-compile-3-2.c: New test.
+	* gcc.target/aarch64/advsimd-intrinsics/vdot-compile-3-3.c: New test.
+	* gcc.target/aarch64/advsimd-intrinsics/vdot-compile-3-4.c: New test.
+---
+ gcc/ChangeLog                                 |  18 +++
+ gcc/config/aarch64/aarch64-builtins.c         |  45 +++++-
+ gcc/config/aarch64/aarch64-simd-builtins.def  |   5 +
+ gcc/config/aarch64/aarch64-simd.md            |  34 +++++
+ gcc/config/aarch64/arm_neon.h                 |  83 +++++++++++
+ gcc/config/aarch64/iterators.md               |   7 +
+ gcc/testsuite/ChangeLog                       |   7 +
+ .../aarch64/advsimd-intrinsics/vdot-3-1.c     | 136 +++++++++++++++++
+ .../aarch64/advsimd-intrinsics/vdot-3-2.c     | 137 ++++++++++++++++++
+ .../aarch64/advsimd-intrinsics/vdot-3-3.c     |  31 ++++
+ .../aarch64/advsimd-intrinsics/vdot-3-4.c     |  31 ++++
+ 11 files changed, 531 insertions(+), 3 deletions(-)
+ create mode 100755 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-1.c
+ create mode 100755 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-2.c
+ create mode 100755 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-3.c
+ create mode 100755 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-4.c
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index 9a949980699..49dcecb6777 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c
+index f0e0461b7f0..f50c4857e1c 100644
+--- a/gcc/config/aarch64/aarch64-builtins.c
++++ b/gcc/config/aarch64/aarch64-builtins.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/config/aarch64/aarch64-simd-builtins.def b/gcc/config/aarch64/aarch64-simd-builtins.def
+index 57fc5933b43..4744dd1f6b2 100644
+--- a/gcc/config/aarch64/aarch64-simd-builtins.def
++++ b/gcc/config/aarch64/aarch64-simd-builtins.def
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md
+index 2989096b170..9e56e8caf35 100644
+--- a/gcc/config/aarch64/aarch64-simd.md
++++ b/gcc/config/aarch64/aarch64-simd.md
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h
+index eaba156e26c..c96214003dd 100644
+--- a/gcc/config/aarch64/arm_neon.h
++++ b/gcc/config/aarch64/arm_neon.h
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md
+index b9843b83c5f..83720d9802a 100644
+--- a/gcc/config/aarch64/iterators.md
++++ b/gcc/config/aarch64/iterators.md
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
+index 0d8aa6063a7..8b01aa06a40 100644
+--- a/gcc/testsuite/ChangeLog
++++ b/gcc/testsuite/ChangeLog
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-1.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-1.c
+new file mode 100755
+index 00000000000..ac4f821e771
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-1.c
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-2.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-2.c
+new file mode 100755
+index 00000000000..96bca2356e4
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-2.c
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-3.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-3.c
+new file mode 100755
+index 00000000000..18ecabef8dc
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-3.c
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-4.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-4.c
+new file mode 100755
+index 00000000000..66c87d48694
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-4.c
+@@ -0,0 +1 @@
++
+-- 
+2.26.1
+
+=== 0001-c-Alias.patch ===
+From 3f1a149fc35cdba988464562e2fb824b10652d6b Mon Sep 17 00:00:00 2001
+From: Nathan Sidwell <nathan@acm.org>
+Date: Tue, 19 May 2020 13:29:19 -0700
+Subject: [PATCH] c++: Alias template instantiation template info
+
+I discovered that the alias instantiation machinery would setup
+template_info, and then sometime later overwrite that with equivalent
+info.  This broke modules, because the template info, once set, is
+logically immutable.  Let's just not do that.
+
+	* pt.c (lookup_template_class_1): Do not reinit template_info of an
+	alias here.
+
+(cherry picked from commit 74744bb1f2847b5b9ce3e97e0fec9c23bb0e499f)
+---
+ gcc/cp/pt.c | 17 +++++++++++++++--
+ 1 file changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
+index b8f03d18541..7230ac724ba 100644
+--- a/gcc/cp/pt.c
++++ b/gcc/cp/pt.c
+@@ -1 +1,2 @@
+
++
+-- 
+2.26.2
+=== 0001-RISC-V-Make-unique.patch ===
+From adce62f53d8ad00e8110a6a2de7962d7a850de16 Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp@keithp.com>
+Date: Wed, 29 Apr 2020 09:49:56 -0700
+Subject: [PATCH] RISC-V: Make unique SECCAT_SRODATA names start with .srodata
+ (not .sdata2)
+
+default_unique_section uses ".sdata2" as a prefix for SECCAT_SRODATA
+unique sections, but RISC-V uses ".srodata" instead. Override the
+TARGET_ASM_UNIQUE_SECTION function to catch this case, allowing the
+default to be used for all other sections.
+
+gcc/
+	* config/riscv/riscv.c (riscv_unique_section): New.
+	(TARGET_ASM_UNIQUE_SECTION): New.
+
+Signed-off-by: Keith Packard <keithp@keithp.com>
+Reviewed-by: Keith Packard <keithp@keithp.com>
+Reviewed-on: Keith Packard <keithp@keithp.com>
+Co-Authored-by: Keith Packard <keithp@keithp.com>
+Acked-By: Keith Packard <keithp@keithp.com>
+Tested-by: Keith Packard <keithp@keithp.com>
+Reported-by: Keith Packard <keithp@keithp.com>
+Suggested-by: Keith Packard <keithp@keithp.com>
+---
+ gcc/ChangeLog            |  5 +++++
+ gcc/config/riscv/riscv.c | 40 ++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 45 insertions(+)
+
+diff --git a/gcc/config/riscv/riscv.c b/gcc/config/riscv/riscv.c
+index e4c08d780db..1ad9799fce4 100644
+--- a/gcc/config/riscv/riscv.c
++++ b/gcc/config/riscv/riscv.c
+@@ -1 +1,2 @@
+
++
+
+-- 
+2.26.2
+
+=== 0001-Fortran-ProcPtr-function.patch ===
+From eb069ae8819c3a84d7f78becc5501e21ee3a9554 Mon Sep 17 00:00:00 2001
+From: Mark Eggleston <markeggleston@gcc.gnu.org>
+Date: Thu, 7 May 2020 08:02:02 +0100
+Subject: [PATCH] Fortran  : ProcPtr function results: 'ppr@' in error message
+ PR39695
+
+The value 'ppr@' is set in the name of result symbol, the actual
+name of the symbol is in the procedure name symbol pointed
+to by the result symbol's namespace (ns). When reporting errors for
+symbols that have the proc_pointer attribute check whether the
+result attribute is set and set the name accordingly.
+
+2020-05-20  Mark Eggleston  <markeggleston@gcc.gnu.org>
+
+gcc/fortran/
+
+	PR fortran/39695
+	* resolve.c (resolve_fl_procedure): Set name depending on
+	whether the result attribute is set.  For PROCEDURE/RESULT
+	conflict use the name in sym->ns->proc_name->name.
+	* symbol.c (gfc_add_type): Add check for function and result
+	attributes use sym->ns->proc_name->name if both are set.
+	Where the symbol cannot have a type use the name in
+	sym->ns->proc_name->name.
+
+2020-05-20  Mark Eggleston  <markeggleston@gcc.gnu.org>
+
+gcc/testsuite/
+
+	PR fortran/39695
+	* gfortran.dg/pr39695_1.f90: New test.
+	* gfortran.dg/pr39695_2.f90: New test.
+	* gfortran.dg/pr39695_3.f90: New test.
+	* gfortran.dg/pr39695_4.f90: New test.
+---
+ gcc/fortran/ChangeLog                   | 11 +++++++++++
+ gcc/fortran/resolve.c                   |  6 ++++--
+ gcc/fortran/symbol.c                    |  7 +++++--
+ gcc/testsuite/ChangeLog                 |  8 ++++++++
+ gcc/testsuite/gfortran.dg/pr39695_1.f90 |  8 ++++++++
+ gcc/testsuite/gfortran.dg/pr39695_2.f90 | 12 ++++++++++++
+ gcc/testsuite/gfortran.dg/pr39695_3.f90 | 11 +++++++++++
+ gcc/testsuite/gfortran.dg/pr39695_4.f90 | 14 ++++++++++++++
+ 8 files changed, 73 insertions(+), 4 deletions(-)
+ create mode 100644 gcc/testsuite/gfortran.dg/pr39695_1.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/pr39695_2.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/pr39695_3.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/pr39695_4.f90
+
+diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
+index f6e10ea379c..aaee5eb6b9b 100644
+--- a/gcc/fortran/resolve.c
++++ b/gcc/fortran/resolve.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
+index 59f602d80d5..b96706138c9 100644
+--- a/gcc/fortran/symbol.c
++++ b/gcc/fortran/symbol.c
+@@ -1 +1,2 @@
+
++
+diff --git a/gcc/testsuite/gfortran.dg/pr39695_1.f90 b/gcc/testsuite/gfortran.dg/pr39695_1.f90
+new file mode 100644
+index 00000000000..4c4b3045f69
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/pr39695_1.f90
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/gfortran.dg/pr39695_2.f90 b/gcc/testsuite/gfortran.dg/pr39695_2.f90
+new file mode 100644
+index 00000000000..8534724959a
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/pr39695_2.f90
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/gfortran.dg/pr39695_3.f90 b/gcc/testsuite/gfortran.dg/pr39695_3.f90
+new file mode 100644
+index 00000000000..661e2540bb3
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/pr39695_3.f90
+@@ -0,0 +1 @@
++
+diff --git a/gcc/testsuite/gfortran.dg/pr39695_4.f90 b/gcc/testsuite/gfortran.dg/pr39695_4.f90
+new file mode 100644
+index 00000000000..ecb0a43929f
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/pr39695_4.f90
+@@ -0,0 +1 @@
++
+-- 
+2.26.2
+
+=== 0001-c-C-20-DR-2237.patch ===
+From 4b38d56dbac6742b038551a36ec80200313123a1 Mon Sep 17 00:00:00 2001
+From: Marek Polacek <polacek@redhat.com>
+Date: Sat, 4 Apr 2020 18:09:53 -0400
+Subject: [PATCH] c++: C++20 DR 2237, disallow simple-template-id in cdtor.
+
+This patch implements DR 2237 which says that a simple-template-id is
+no longer valid as the declarator-id of a constructor or destructor;
+see [diff.cpp17.class]#2.  It is not explicitly stated but out-of-line
+destructors with a simple-template-id are also meant to be ill-formed
+now.  (Out-of-line constructors like that are invalid since DR1435 I
+think.)  This change only applies to C++20; it is not a DR against C++17.
+
+I'm not crazy about the diagnostic in constructors but ISTM that
+cp_parser_constructor_declarator_p shouldn't print errors.
+
+	DR 2237
+	* parser.c (cp_parser_unqualified_id): Reject simple-template-id as
+	the declarator-id of a destructor.
+---
+diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
+index a6a5d975af3..a8082d39aca 100644
+--- a/gcc/cp/parser.c
++++ b/gcc/cp/parser.c
+@@ -1 +1,2 @@
+
++
+
+=== 0001-go-in-ignored-location.patch ===
+From 81994eab700da7fea6644541c163aa0f0f3b8cf1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Cl=C3=A9ment=20Chigot?= <chigot.c@gmail.com>
+Date: Tue, 19 May 2020 16:03:54 +0200
+Subject: libgo: update x/sys/cpu after gccgo support added
+
+Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/234597
+---
+ gcc/go/gofrontend/MERGE                       |  2 +-
+ .../sys/cpu/{cpu_aix_ppc64.go => cpu_aix.go}  |  2 +-
+ .../golang.org/x/sys/cpu/syscall_aix_gccgo.go | 27 +++++++++++++++++++
+ 3 files changed, 29 insertions(+), 2 deletions(-)
+ rename libgo/go/golang.org/x/sys/cpu/{cpu_aix_ppc64.go => cpu_aix.go} (96%)
+ create mode 100644 libgo/go/golang.org/x/sys/cpu/syscall_aix_gccgo.go
+
+diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
+index bc9c1f07eda..284374820b0 100644
+--- a/gcc/go/gofrontend/MERGE
++++ b/gcc/go/gofrontend/MERGE
+@@ -1 +1,2 @@
+
++
+diff --git a/libgo/go/golang.org/x/sys/cpu/cpu_aix_ppc64.go b/libgo/go/golang.org/x/sys/cpu/cpu_aix.go
+similarity index 96%
+rename from libgo/go/golang.org/x/sys/cpu/cpu_aix_ppc64.go
+rename to libgo/go/golang.org/x/sys/cpu/cpu_aix.go
+index b0ede112d4e..02d03129e50 100644
+--- a/libgo/go/golang.org/x/sys/cpu/cpu_aix_ppc64.go
++++ b/libgo/go/golang.org/x/sys/cpu/cpu_aix.go
+@@ -1 +1,2 @@
+
++
+diff --git a/libgo/go/golang.org/x/sys/cpu/syscall_aix_gccgo.go b/libgo/go/golang.org/x/sys/cpu/syscall_aix_gccgo.go
+new file mode 100644
+index 00000000000..2609cc49ae7
+--- /dev/null
++++ b/libgo/go/golang.org/x/sys/cpu/syscall_aix_gccgo.go
+@@ -0,0 +1 @@
++
+
+-- 
+2.27.0.rc0.183.gde8f92d652-goog
+=== 0001-Update-merge.sh-to-reflect.patch  ===
+From b3d566f570f4416299240b51654b70c74f6cba6a Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Mon, 25 May 2020 20:55:29 +0200
+Subject: [PATCH] Update merge.sh to reflect usage of git.
+
+After switching to GIT, we should use it in libsanitizer
+merge script. I'll do merge from master as soon as
+PR95311 gets fixed.
+
+I'm going to install the patch.
+
+libsanitizer/ChangeLog:
+
+	* LOCAL_PATCHES: Use git hash instead of SVN id.
+	* merge.sh: Use git instead of VCS.  Update paths
+	relative to upstream git repository.
+---
+ libsanitizer/LOCAL_PATCHES |  2 +-
+ libsanitizer/merge.sh      | 10 ++++------
+ 2 files changed, 5 insertions(+), 7 deletions(-)
+
+diff --git a/libsanitizer/LOCAL_PATCHES b/libsanitizer/LOCAL_PATCHES
+index 292b7a6e489..7732de3d436 100644
+--- a/libsanitizer/LOCAL_PATCHES
++++ b/libsanitizer/LOCAL_PATCHES
+@@ -1 +1,2 @@
+
++
+diff --git a/libsanitizer/merge.sh b/libsanitizer/merge.sh
+index dfa7bf3d196..3f4f1629a22 100755
+--- a/libsanitizer/merge.sh
++++ b/libsanitizer/merge.sh
+@@ -1 +1,2 @@
+
++
+ 
+-- 
+2.26.2
+=== 0001-Ada-Reuse-Is_Package_Or_Generic_Package-where-possib.patch ===
+From 557b268fffffdeb0980a17411f458eee333f55c6 Mon Sep 17 00:00:00 2001
+From: Piotr Trojanek <trojanek@adacore.com>
+Date: Thu, 12 Dec 2019 11:45:24 +0100
+Subject: [PATCH] [Ada] Reuse Is_Package_Or_Generic_Package where possible
+
+2020-05-26  Piotr Trojanek  <trojanek@adacore.com>
+
+gcc/ada/
+
+	* contracts.adb, einfo.adb, exp_ch9.adb, sem_ch12.adb,
+	sem_ch4.adb, sem_ch7.adb, sem_ch8.adb, sem_elab.adb,
+	sem_type.adb, sem_util.adb: Reuse Is_Package_Or_Generic_Package
+	where possible (similarly, reuse Is_Concurrent_Type if it was
+	possible in the same expressions).
+---
+ gcc/ada/contracts.adb |  2 +-
+ gcc/ada/einfo.adb     | 22 +++++++++++-----------
+ gcc/ada/exp_ch9.adb   |  2 +-
+ gcc/ada/sem_ch12.adb  |  2 +-
+ gcc/ada/sem_ch4.adb   |  2 +-
+ gcc/ada/sem_ch7.adb   |  6 +++---
+ gcc/ada/sem_ch8.adb   |  6 +++---
+ gcc/ada/sem_elab.adb  |  2 +-
+ gcc/ada/sem_type.adb  |  2 +-
+ gcc/ada/sem_util.adb  |  6 +++---
+ 10 files changed, 26 insertions(+), 26 deletions(-)
+
+diff --git a/gcc/ada/contracts.adb b/gcc/ada/contracts.adb
+index 981bb91..d58f136 100644
+--- a/gcc/ada/contracts.adb
++++ b/gcc/ada/contracts.adb
+@@ -0,0 +1 @@
++
+diff --git a/gcc/ada/einfo.adb b/gcc/ada/einfo.adb
+index 98b508f..1df8ed0 100644
+--- a/gcc/ada/einfo.adb
++++ b/gcc/ada/einfo.adb
+@@ -0,0 +1 @@
++
+diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb
+index 64ac353..392a221 100644
+--- a/gcc/ada/exp_ch9.adb
++++ b/gcc/ada/exp_ch9.adb
+@@ -0,0 +1 @@
++
+diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb
+index dc3a3c2..209e060 100644
+--- a/gcc/ada/sem_ch12.adb
++++ b/gcc/ada/sem_ch12.adb
+@@ -0,0 +1 @@
++
+diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb
+index 5910112..702f265 100644
+--- a/gcc/ada/sem_ch4.adb
++++ b/gcc/ada/sem_ch4.adb
+@@ -0,0 +1 @@
++
+diff --git a/gcc/ada/sem_ch7.adb b/gcc/ada/sem_ch7.adb
+index 6d9a1db..f217dfd 100644
+--- a/gcc/ada/sem_ch7.adb
++++ b/gcc/ada/sem_ch7.adb
+@@ -0,0 +1 @@
++
+diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
+index f083f7c..7f50b40 100644
+--- a/gcc/ada/sem_ch8.adb
++++ b/gcc/ada/sem_ch8.adb
+@@ -0,0 +1 @@
++
+diff --git a/gcc/ada/sem_elab.adb b/gcc/ada/sem_elab.adb
+index f3cac46..dbf3fac 100644
+--- a/gcc/ada/sem_elab.adb
++++ b/gcc/ada/sem_elab.adb
+@@ -0,0 +1 @@
++
+diff --git a/gcc/ada/sem_type.adb b/gcc/ada/sem_type.adb
+index e5d01dd..1868568 100644
+--- a/gcc/ada/sem_type.adb
++++ b/gcc/ada/sem_type.adb
+@@ -0,0 +1 @@
++
+diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
+index b980b4c..c1b1d9e 100644
+--- a/gcc/ada/sem_util.adb
++++ b/gcc/ada/sem_util.adb
+@@ -0,0 +1 @@
++
+-- 
+2.1.4
+
+=== 0001-Ada-Add-support-for-XDR-streaming-in-the-default-run.patch ===
+From ed248d9bc3b72b6888a1b9cd84a8ef26809249f0 Mon Sep 17 00:00:00 2001
+From: Arnaud Charlet <charlet@adacore.com>
+Date: Thu, 23 Apr 2020 05:46:29 -0400
+Subject: [PATCH] [Ada] Add support for XDR streaming in the default runtime
+
+--!# FROM: /homes/derodat/tron/gnat2fsf/gnat
+--!# COMMIT: 5ad4cabb9f70114eb61c025e91406d4fba253f95
+--!# Change-Id: I21f92cad27933747495cdfa544a048f62f944cbd
+--!# TN: T423-014
+
+Currently we provide a separate implementation of Stream_Attributes via
+s-stratt__xdr.adb which needs to be recompiled manually.
+
+This change introduces instead a new binder switch to choose at bind
+time which stream implementation to use and replaces s-stratt__xdr.adb
+by a new unit System.Stream_Attributes.XDR.
+
+2020-05-04  Arnaud Charlet  <charlet@adacore.com>
+
+gcc/ada/
+
+	* Makefile.rtl: Add s-statxd.o.
+	* bindgen.adb (Gen_Adainit): Add support for XDR_Stream.
+	* bindusg.adb (Display): Add mention of -xdr.
+	* gnatbind.adb: Process -xdr switch.
+	* init.c (__gl_xdr_stream): New.
+	* opt.ads (XDR_Stream): New.
+	* libgnat/s-stratt__xdr.adb: Rename to...
+	* libgnat/s-statxd.adb: this and adjust.
+	* libgnat/s-statxd.ads: New.
+	* libgnat/s-stratt.ads, libgnat/s-stratt.adb: Choose between
+	default and XDR implementation at runtime.
+	* libgnat/s-ststop.ads: Update comments.
+	* doc/gnat_rm/implementation_advice.rst: Update doc on XDR
+	streaming.
+	* gnat_rm.texi: Regenerate.
+---
+ gcc/ada/Makefile.rtl                          |   1 +
+ gcc/ada/bindgen.adb                           |  29 +-
+ gcc/ada/bindusg.adb                           |   5 +
+ gcc/ada/doc/gnat_rm/implementation_advice.rst |  35 +--
+ gcc/ada/gnat_rm.texi                          |  36 +--
+ gcc/ada/gnatbind.adb                          |   5 +
+ gcc/ada/init.c                                |   1 +
+ .../{s-stratt__xdr.adb => s-statxd.adb}       |  63 ++--
+ gcc/ada/libgnat/s-statxd.ads                  | 117 +++++++
+ gcc/ada/libgnat/s-stratt.adb                  | 286 +++++++++++++++---
+ gcc/ada/libgnat/s-stratt.ads                  |   7 +-
+ gcc/ada/libgnat/s-ststop.ads                  |   4 +-
+ gcc/ada/opt.ads                               |   6 +-
+ 13 files changed, 428 insertions(+), 167 deletions(-)
+ rename gcc/ada/libgnat/{s-stratt__xdr.adb => s-statxd.adb} (96%)
+ create mode 100644 gcc/ada/libgnat/s-statxd.ads
+
+diff --git a/gcc/ada/Makefile.rtl b/gcc/ada/Makefile.rtl
+index b340a9ef919..15e4f68ccdb 100644
+--- a/gcc/ada/Makefile.rtl
++++ b/gcc/ada/Makefile.rtl
+@@ -1 +1,2 @@
+ 
++
+diff --git a/gcc/ada/bindgen.adb b/gcc/ada/bindgen.adb
+index 99ad3009d13..91b4cb38486 100644
+--- a/gcc/ada/bindgen.adb
++++ b/gcc/ada/bindgen.adb
+@@ -1 +1,2 @@
+ 
++
+diff --git a/gcc/ada/bindusg.adb b/gcc/ada/bindusg.adb
+index 45215d2ebea..6fd55ee8721 100644
+--- a/gcc/ada/bindusg.adb
++++ b/gcc/ada/bindusg.adb
+@@ -1 +1,2 @@
+ 
++
+diff --git a/gcc/ada/doc/gnat_rm/implementation_advice.rst b/gcc/ada/doc/gnat_rm/implementation_advice.rst
+index 31376d92461..998d0c597df 100644
+--- a/gcc/ada/doc/gnat_rm/implementation_advice.rst
++++ b/gcc/ada/doc/gnat_rm/implementation_advice.rst
+@@ -1 +1,2 @@
+ 
++
+diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi
+index c174073d508..d72f905a2df 100644
+--- a/gcc/ada/gnat_rm.texi
++++ b/gcc/ada/gnat_rm.texi
+@@ -1 +1,2 @@
+ 
++
+diff --git a/gcc/ada/gnatbind.adb b/gcc/ada/gnatbind.adb
+index 4907082a42c..4372152b439 100644
+--- a/gcc/ada/gnatbind.adb
++++ b/gcc/ada/gnatbind.adb
+@@ -1 +1,2 @@
+ 
++
+diff --git a/gcc/ada/init.c b/gcc/ada/init.c
+index f9f627ebcff..e76aa79c5a8 100644
+--- a/gcc/ada/init.c
++++ b/gcc/ada/init.c
+@@ -1 +1,2 @@
+ 
++
+diff --git a/gcc/ada/libgnat/s-stratt__xdr.adb b/gcc/ada/libgnat/s-statxd.adb
+similarity index 96%
+rename from gcc/ada/libgnat/s-stratt__xdr.adb
+rename to gcc/ada/libgnat/s-statxd.adb
+index 7e32fcf9b91..fcefae7e6f2 100644
+--- a/gcc/ada/libgnat/s-stratt__xdr.adb
++++ b/gcc/ada/libgnat/s-statxd.adb
+@@ -1 +1,2 @@
+ 
++
+diff --git a/gcc/ada/libgnat/s-statxd.ads b/gcc/ada/libgnat/s-statxd.ads
+new file mode 100644
+index 00000000000..cca5e5471bd
+--- /dev/null
++++ b/gcc/ada/libgnat/s-statxd.ads
+@@ -1 +1,2 @@
+ 
++
+diff --git a/gcc/ada/libgnat/s-stratt.adb b/gcc/ada/libgnat/s-stratt.adb
+index 64f3f040081..366dabdc7b6 100644
+--- a/gcc/ada/libgnat/s-stratt.adb
++++ b/gcc/ada/libgnat/s-stratt.adb
+@@ -1 +1,2 @@
+ 
++
+diff --git a/gcc/ada/libgnat/s-stratt.ads b/gcc/ada/libgnat/s-stratt.ads
+index 73369490146..c8c453aad2a 100644
+--- a/gcc/ada/libgnat/s-stratt.ads
++++ b/gcc/ada/libgnat/s-stratt.ads
+@@ -1 +1,2 @@
+ 
++
+diff --git a/gcc/ada/libgnat/s-ststop.ads b/gcc/ada/libgnat/s-ststop.ads
+index d0da0609d9d..321460b89d8 100644
+--- a/gcc/ada/libgnat/s-ststop.ads
++++ b/gcc/ada/libgnat/s-ststop.ads
+@@ -1 +1,2 @@
+ 
++
+diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads
+index 9e0263b431d..37f3d030e3f 100644
+--- a/gcc/ada/opt.ads
++++ b/gcc/ada/opt.ads
+@@ -1 +1,2 @@
+ 
++
+-- 
+2.20.1
+=== 0001-Fortran-type-is-real-kind-1.patch ===
+From 3ea6977d0f1813d982743a09660eec1760e981ec Mon Sep 17 00:00:00 2001
+From: Mark Eggleston <markeggleston@gcc.gnu.org>
+Date: Wed, 1 Apr 2020 09:52:41 +0100
+Subject: [PATCH] Fortran  : "type is( real(kind(1.)) )" spurious syntax error
+ PR94397
+
+Based on a patch in the comments of the PR. That patch fixed this
+problem but caused the test cases for PR93484 to fail. It has been
+changed to reduce initialisation expressions if the expression is
+not EXPR_VARIABLE and not EXPR_CONSTANT.
+
+2020-05-28  Steven G. Kargl  <kargl@gcc.gnu.org>
+	    Mark Eggleston  <markeggleston@gcc.gnu.org>
+
+gcc/fortran/
+
+	PR fortran/94397
+	* match.c (gfc_match_type_spec): New variable ok initialised
+	to true. Set ok with the return value of gfc_reduce_init_expr
+	called only if the expression is not EXPR_CONSTANT and is not
+	EXPR_VARIABLE. Add !ok to the check for type not being integer
+	or the rank being greater than zero.
+
+2020-05-28  Mark Eggleston  <markeggleston@gcc.gnu.org>
+
+gcc/testsuite/
+
+	PR fortran/94397
+	* gfortran.dg/pr94397.F90: New test.
+---
+ gcc/fortran/match.c                   |  5 ++++-
+ gcc/testsuite/gfortran.dg/pr94397.F90 | 26 ++++++++++++++++++++++++++
+ 2 files changed, 30 insertions(+), 1 deletion(-)
+ create mode 100644 gcc/testsuite/gfortran.dg/pr94397.F90
+
+diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
+index 8ae34a94a95..82d2b5087e5 100644
+--- a/gcc/fortran/match.c
++++ b/gcc/fortran/match.c
+@@ -1 +1,2 @@
+ 
++
+diff --git a/gcc/testsuite/gfortran.dg/pr94397.F90 b/gcc/testsuite/gfortran.dg/pr94397.F90
+new file mode 100644
+index 00000000000..fda10c1a88b
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/pr94397.F90
+@@ -0,0 +1 @@
++
+-- 
+2.26.2
+
+=== 0001-Missing-change-description.patch ===
+From 8ec655bd94615ba45adabae9b50df299edb74eda Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Fri, 29 May 2020 13:42:57 +0200
+Subject: [PATCH] Test me.
+
+gcc/ChangeLog:
+
+	* ipa-icf-gimple.c (compare_gimple_asm):
+	* ipa-icf-gimple2.c (compare_gimple_asm): Good.
+	* ipa-icf-gimple3.c (compare_gimple_asm):
+---
+ contrib/gcc-changelog/git_commit.py | 10 ++++++++++
+ gcc/ipa-icf-gimple.c                |  1 +
+ 2 files changed, 11 insertions(+)
+
+diff --git a/gcc/ipa-icf-gimple.c b/gcc/ipa-icf-gimple.c
+index 1cd5872c03d..6f95aedb3d3 100644
+--- a/gcc/ipa-icf-gimple.c
++++ b/gcc/ipa-icf-gimple.c
+@@ -850,3 +850,4 @@
+ }
+ 
+ } // ipa_icf_gimple namespace
++
+-- 
+2.26.2
+
+=== 0001-Fix-text-of-hyperlink-in-manual.patch ===
+From c7904d9e08a0ca3f733be3c2e8a3b912fa851fc5 Mon Sep 17 00:00:00 2001
+From: Jonathan Wakely <jwakely@redhat.com>
+Date: Fri, 8 Mar 2019 13:56:53 +0000
+Subject: [PATCH] Fix text of hyperlink in manual
+
+	* doc/xml/manual/using.xml: Use link element instead of xref.
+	* doc/html/*: Regenerate.
+
+---
+ libstdc++-v3/ChangeLog                         | 3 +++
+ libstdc++-v3/doc/html/manual/using_macros.html | 3 ++-
+ libstdc++-v3/doc/xml/manual/using.xml          | 4 ++--
+ 3 files changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/libstdc++-v3/doc/html/manual/using_macros.html b/libstdc++-v3/doc/html/manual/using_macros.html
+index 7030bd2d0fd..dad6564a97d 100644
+--- a/libstdc++-v3/doc/html/manual/using_macros.html
++++ b/libstdc++-v3/doc/html/manual/using_macros.html
+@@ -1 +1,2 @@
+ 
++
+diff --git a/libstdc++-v3/doc/xml/manual/using.xml b/libstdc++-v3/doc/xml/manual/using.xml
+index 2d44a739406..7647e9b8dad 100644
+--- a/libstdc++-v3/doc/xml/manual/using.xml
++++ b/libstdc++-v3/doc/xml/manual/using.xml
+@@ -1 +1,2 @@
+ 
++
+-- 
+2.25.4
+
+=== 0002-libstdc-Fake-test-change-1.patch ===
+From fe4ade6778d1d97214db12bf2c40d0f40e7f953a Mon Sep 17 00:00:00 2001
+From: Jonathan Wakely <jwakely@redhat.com>
+Date: Tue, 2 Jun 2020 11:52:34 +0100
+Subject: [PATCH] libstdc++: Fake change for testing git_commit.py
+
+libstdc++-v3/ChangeLog:
+
+	* doc/xml/faq.xml: Fake change.
+	* doc/html/*: Regenerated.
+---
+ libstdc++-v3/doc/xml/faq.xml | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libstdc++-v3/doc/xml/faq.xml b/libstdc++-v3/doc/xml/faq.xml
+index e419d3c22a0..bcc14dd6d90 100644
+--- a/libstdc++-v3/doc/xml/faq.xml
++++ b/libstdc++-v3/doc/xml/faq.xml
+@@ -1 +1,2 @@
+ 
++
+-- 
+2.25.4
+
+=== 0003-libstdc-Fake-test-change-2.patch ===
+From e460effb3a42c1c046b682fe266da418f2693ef3 Mon Sep 17 00:00:00 2001
+From: Jonathan Wakely <jwakely@redhat.com>
+Date: Tue, 2 Jun 2020 11:52:34 +0100
+Subject: [PATCH] libstdc++: Fake change for testing 2
+
+libstdc++-v3/ChangeLog:
+
+	* doc/xml/faq.xml: Fake change.
+---
+ libstdc++-v3/doc/html/faq.html | 2 +-
+ libstdc++-v3/doc/xml/faq.xml   | 1 +
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/libstdc++-v3/doc/html/faq.html b/libstdc++-v3/doc/html/faq.html
+index 967e5f5f348..95d21b5bf9f 100644
+--- a/libstdc++-v3/doc/html/faq.html
++++ b/libstdc++-v3/doc/html/faq.html
+@@ -1 +1,2 @@
+ 
++
+--- a/libstdc++-v3/doc/xml/faq.xml
++++ b/libstdc++-v3/doc/xml/faq.xml
+@@ -1 +1,2 @@
+ 
++
+-- 
+2.25.4
+=== 0001-configure.patch ===
+From dbe341cf6a77bb28c5fdf8b32dcb0ff1c2a27348 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Tue, 9 Jun 2020 09:39:36 +0200
+Subject: [PATCH] c++: Fix --disable-bootstrap with older g++.
+
+Previously I had AX_CXX_COMPILE_STDCXX in the gcc directory configure, which
+added -std=c++11 to CXX if needed, but then CXX is overridden from the
+toplevel directory, so it didn't have the desired effect.  Fixed by moving
+the check to the toplevel.  Currently it is only used when building GCC
+without bootstrapping; other packages that share the toplevel directory
+can adjust the condition if they also want to require C++11 support.
+
+ChangeLog:
+
+	* configure.ac: Check AX_CXX_COMPILE_STDCXX if not bootstrapping.
+	* configure: Regenerate.
+
+gcc/ChangeLog:
+
+	* aclocal.m4: Remove ax_cxx_compile_stdcxx.m4.
+	* configure.ac: Remove AX_CXX_COMPILE_STDCXX.
+	* configure: Regenerate.
+
+---
+ configure        | 999 ++++++++++++++++++++++++++++++++++++++++++++++-
+ configure.ac     |   6 +-
+ gcc/aclocal.m4   |   1 -
+ gcc/configure    | 997 +---------------------------------------------
+ gcc/configure.ac |   2 -
+ 5 files changed, 1004 insertions(+), 1001 deletions(-)
+
+diff --git a/configure b/configure
+index b7897446c70..a0c5aca9e8d 100755
+--- a/configure
++++ b/configure
+@@ -1 +1,2 @@
+ 
++
+diff --git a/configure.ac b/configure.ac
+index 59bd92a3e53..1a53ed418e4 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1 +1,2 @@
+ 
++
+diff --git a/gcc/aclocal.m4 b/gcc/aclocal.m4
+index e93c1535063..1737d59d1cb 100644
+--- a/gcc/aclocal.m4
++++ b/gcc/aclocal.m4
+@@ -1 +1,2 @@
+ 
++
+diff --git a/gcc/configure b/gcc/configure
+index 46850710424..629c7c7e153 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -1 +1,2 @@
+ 
++
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index 60d83c30771..9e7efd13ecc 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -1 +1,2 @@
+ 
++
+-- 
+2.26.2
+
+=== 0001-asan-fix-RTX-emission.patch ===
+From e1d68582022cfa2b1dc76646724b397ba2739439 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Thu, 11 Jun 2020 09:34:41 +0200
+Subject: [PATCH] asan: fix RTX emission for ilp32
+
+gcc/ChangeLog:
+
+	PR sanitizer/95634
+	* asan.c (asan_emit_stack_protection): Fix emission for ilp32
+	by using Pmode instead of ptr_mode.
+
+Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
+(cherry picked from commit 8cff672cb9a132d3d3158c2edfc9a64b55292b80)
+---
+ gcc/asan.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/gcc/asan.c b/gcc/asan.c
+index 823eb539993..4ec22162c12 100644
+--- a/gcc/asan.c
++++ b/gcc/asan.c
+@@ -1 +1,2 @@
+ 
++
+-- 
+2.27.0
+
+=== 0001-Check-for-more-missing-math-decls-on-vxworks.patch ===
+From 0edfc1fd22405ee8e946101e44cd8edc0ee12047 Mon Sep 17 00:00:00 2001
+From: Douglas B Rupp <douglas.b.rupp@gmail.com>
+Date: Sun, 31 May 2020 13:25:28 -0700
+Subject: [PATCH] Check for more missing math decls on vxworks.
+
+Use the GLIBCXX_CHECK_MATH_DECL macro to check for the full list of
+vxworks math decls.
+
+for libstdc++-v3/ChangeLog:
+
+	* crossconfig.m4 <*-vxworks>: Check for more math decls.
+	* configure [FAKEPATCH]: Rebuild.
+---
+ libstdc++-v3/configure      | 255 ++++++++++++++++++++++++++++++++++++++++++++
+ libstdc++-v3/crossconfig.m4 |   3 +-
+ 2 files changed, 257 insertions(+), 1 deletion(-)
+
+diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
+index b5beb45..4ef678e 100755
+--- a/libstdc++-v3/configure
++++ b/libstdc++-v3/configure
+@@ -1 +1,2 @@
+ 
++
+diff --git a/libstdc++-v3/crossconfig.m4 b/libstdc++-v3/crossconfig.m4
+index fe18288..313f84d 100644
+--- a/libstdc++-v3/crossconfig.m4
++++ b/libstdc++-v3/crossconfig.m4
+@@ -1 +1,2 @@
+ 
++
+-- 
+2.7.4
+
diff --git a/contrib/gcc-git-customization.sh b/contrib/gcc-git-customization.sh
index a932bf8..200b81e 100755
--- a/contrib/gcc-git-customization.sh
+++ b/contrib/gcc-git-customization.sh
@@ -25,6 +25,11 @@
 git config alias.gcc-descr \!"f() { if test \${1:-no} = --full; then c=\${2:-master}; r=\$(git describe --all --abbrev=40 --match 'basepoints/gcc-[0-9]*' \$c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); expr match \${r:-no} '^r[0-9]\\+\$' >/dev/null && r=\${r}-0-g\$(git rev-parse \${2:-master}); else c=\${1:-master}; r=\$(git describe --all --match 'basepoints/gcc-[0-9]*' \$c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-\\([0-9]\\+\\)-\\([0-9]\\+\\)-g[0-9a-f]*\$,r\\2-\\3,p;s,^\\(tags/\\)\\?basepoints/gcc-\\([0-9]\\+\\)\$,r\\2-0,p'); fi; if test -n \$r; then o=\$(git config --get gcc-config.upstream); rr=\$(echo \$r | sed -n 's,^r\\([0-9]\\+\\)-[0-9]\\+\\(-g[0-9a-f]\\+\\)\\?\$,\\1,p'); if git rev-parse --verify --quiet \${o:-origin}/releases/gcc-\$rr >/dev/null; then m=releases/gcc-\$rr; else m=master; fi; git merge-base --is-ancestor \$c \${o:-origin}/\$m && \echo \${r}; fi; }; f"
 git config alias.gcc-undescr \!"f() { o=\$(git config --get gcc-config.upstream); r=\$(echo \$1 | sed -n 's,^r\\([0-9]\\+\\)-[0-9]\\+\$,\\1,p'); n=\$(echo \$1 | sed -n 's,^r[0-9]\\+-\\([0-9]\\+\\)\$,\\1,p'); test -z \$r && echo Invalid id \$1 && exit 1; h=\$(git rev-parse --verify --quiet \${o:-origin}/releases/gcc-\$r); test -z \$h && h=\$(git rev-parse --verify --quiet \${o:-origin}/master); p=\$(git describe --all --match 'basepoints/gcc-'\$r \$h | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-[0-9]\\+-\\([0-9]\\+\\)-g[0-9a-f]*\$,\\2,p;s,^\\(tags/\\)\\?basepoints/gcc-[0-9]\\+\$,0,p'); git rev-parse --verify \$h~\$(expr \$p - \$n); }; f"
 
+git config alias.gcc-verify '!f() { "`git rev-parse --show-toplevel`/contrib/gcc-changelog/git_check_commit.py" $@; } ; f'
+git config alias.gcc-backport '!f() { "`git rev-parse --show-toplevel`/contrib/git-backport.py" $@; } ; f'
+git config alias.gcc-mklog '!f() { "`git rev-parse --show-toplevel`/contrib/mklog.py" $@; } ; f'
+git config alias.gcc-commit-mklog '!f() { GCC_FORCE_MKLOG=1 git commit "$@"; }; f'
+
 # Make diff on MD files use "(define" as a function marker.
 # Use this in conjunction with a .gitattributes file containing
 # *.md    diff=md
@@ -122,6 +127,17 @@
 ask "personal area on the gcc server)" $old_pfx new_pfx
 git config "gcc-config.userpfx" "$new_pfx"
 
+echo
+ask "Install prepare-commit-msg git hook for 'git commit-mklog' alias" yes dohook
+if [ "x$dohook" = xyes ]; then
+    hookdir=`git rev-parse --git-path hooks`
+    if [ -f "$hookdir/prepare-commit-msg" ]; then
+	echo " Moving existing prepare-commit-msg hook to prepare-commit-msg.bak"
+	mv "$hookdir/prepare-commit-msg" "$hookdir/prepare-commit-msg.bak"
+    fi
+    install -c "`git rev-parse --show-toplevel`/contrib/prepare-commit-msg" "$hookdir"
+fi
+
 # Scan the existing settings to see if there are any we need to rewrite.
 vendors=$(git config --get-all "remote.${upstream}.fetch" "refs/vendors/" | sed -r "s:.*refs/vendors/([^/]+)/.*:\1:" | sort | uniq)
 url=$(git config --get "remote.${upstream}.url")
diff --git a/contrib/git-backport.py b/contrib/git-backport.py
new file mode 100755
index 0000000..2b8e468
--- /dev/null
+++ b/contrib/git-backport.py
@@ -0,0 +1,65 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2020 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING.  If not, write to
+# the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+import argparse
+import subprocess
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description='Backport a git revision and '
+                                     'stash all ChangeLog files.')
+    parser.add_argument('revision', help='Revision')
+    args = parser.parse_args()
+
+    r = subprocess.run('git cherry-pick -x %s' % args.revision, shell=True)
+    if r.returncode == 0:
+        cmd = 'git show --name-only --pretty="" -- "*ChangeLog"'
+        changelogs = subprocess.check_output(cmd, shell=True, encoding='utf8')
+        changelogs = changelogs.strip()
+        if changelogs:
+            for changelog in changelogs.split('\n'):
+                subprocess.check_output('git checkout HEAD~ %s' % changelog,
+                                        shell=True)
+        subprocess.check_output('git commit --amend --no-edit', shell=True)
+    else:
+        # 1) remove all ChangeLog files from conflicts
+        out = subprocess.check_output('git diff --name-only --diff-filter=U',
+                                      shell=True,
+                                      encoding='utf8')
+        conflicts = out.strip().split('\n')
+        changelogs = [c for c in conflicts if c.endswith('ChangeLog')]
+        if changelogs:
+            cmd = 'git checkout --theirs %s' % ' '.join(changelogs)
+            subprocess.check_output(cmd, shell=True)
+        # 2) remove all ChangeLog files from index
+        cmd = 'git diff --name-only --diff-filter=M HEAD'
+        out = subprocess.check_output(cmd, shell=True, encoding='utf8')
+        out = out.strip().split('\n')
+        modified = [c for c in out if c.endswith('ChangeLog')]
+        for m in modified:
+            subprocess.check_output('git reset %s' % m, shell=True)
+            subprocess.check_output('git checkout %s' % m, shell=True)
+
+        # try to continue
+        if len(conflicts) == len(changelogs):
+            cmd = 'git -c core.editor=true cherry-pick --continue'
+            subprocess.check_output(cmd, shell=True)
+        else:
+            print('Please resolve all remaining file conflicts.')
diff --git a/contrib/mklog b/contrib/legacy/mklog
similarity index 100%
rename from contrib/mklog
rename to contrib/legacy/mklog
diff --git a/contrib/mklog.pl b/contrib/legacy/mklog.pl
similarity index 100%
rename from contrib/mklog.pl
rename to contrib/legacy/mklog.pl
diff --git a/contrib/mklog.py b/contrib/mklog.py
new file mode 100755
index 0000000..243edbb
--- /dev/null
+++ b/contrib/mklog.py
@@ -0,0 +1,261 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2020 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING.  If not, write to
+# the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+# This script parses a .diff file generated with 'diff -up' or 'diff -cp'
+# and adds a skeleton ChangeLog file to the file. It does not try to be
+# too smart when parsing function names, but it produces a reasonable
+# approximation.
+#
+# Author: Martin Liska <mliska@suse.cz>
+
+import argparse
+import os
+import re
+import sys
+from itertools import takewhile
+
+import requests
+
+from unidiff import PatchSet
+
+pr_regex = re.compile(r'(\/(\/|\*)|[Cc*!])\s+(?P<pr>PR [a-z+-]+\/[0-9]+)')
+dr_regex = re.compile(r'(\/(\/|\*)|[Cc*!])\s+(?P<dr>DR [0-9]+)')
+identifier_regex = re.compile(r'^([a-zA-Z0-9_#].*)')
+comment_regex = re.compile(r'^\/\*')
+struct_regex = re.compile(r'^(class|struct|union|enum)\s+'
+                          r'(GTY\(.*\)\s+)?([a-zA-Z0-9_]+)')
+macro_regex = re.compile(r'#\s*(define|undef)\s+([a-zA-Z0-9_]+)')
+super_macro_regex = re.compile(r'^DEF[A-Z0-9_]+\s*\(([a-zA-Z0-9_]+)')
+fn_regex = re.compile(r'([a-zA-Z_][^()\s]*)\s*\([^*]')
+template_and_param_regex = re.compile(r'<[^<>]*>')
+bugzilla_url = 'https://gcc.gnu.org/bugzilla/rest.cgi/bug?id=%s&' \
+               'include_fields=summary'
+
+function_extensions = set(['.c', '.cpp', '.C', '.cc', '.h', '.inc', '.def'])
+
+help_message = """\
+Generate ChangeLog template for PATCH.
+PATCH must be generated using diff(1)'s -up or -cp options
+(or their equivalent in git).
+"""
+
+script_folder = os.path.realpath(__file__)
+gcc_root = os.path.dirname(os.path.dirname(script_folder))
+
+
+def find_changelog(path):
+    folder = os.path.split(path)[0]
+    while True:
+        if os.path.exists(os.path.join(gcc_root, folder, 'ChangeLog')):
+            return folder
+        folder = os.path.dirname(folder)
+        if folder == '':
+            return folder
+    raise AssertionError()
+
+
+def extract_function_name(line):
+    if comment_regex.match(line):
+        return None
+    m = struct_regex.search(line)
+    if m:
+        # Struct declaration
+        return m.group(1) + ' ' + m.group(3)
+    m = macro_regex.search(line)
+    if m:
+        # Macro definition
+        return m.group(2)
+    m = super_macro_regex.search(line)
+    if m:
+        # Supermacro
+        return m.group(1)
+    m = fn_regex.search(line)
+    if m:
+        # Discard template and function parameters.
+        fn = m.group(1)
+        fn = re.sub(template_and_param_regex, '', fn)
+        return fn.rstrip()
+    return None
+
+
+def try_add_function(functions, line):
+    fn = extract_function_name(line)
+    if fn and fn not in functions:
+        functions.append(fn)
+    return bool(fn)
+
+
+def sort_changelog_files(changed_file):
+    return (changed_file.is_added_file, changed_file.is_removed_file)
+
+
+def get_pr_titles(prs):
+    output = ''
+    for pr in prs:
+        id = pr.split('/')[-1]
+        r = requests.get(bugzilla_url % id)
+        bugs = r.json()['bugs']
+        if len(bugs) == 1:
+            output += '%s - %s\n' % (pr, bugs[0]['summary'])
+            print(output)
+    if output:
+        output += '\n'
+    return output
+
+
+def generate_changelog(data, no_functions=False, fill_pr_titles=False):
+    changelogs = {}
+    changelog_list = []
+    prs = []
+    out = ''
+    diff = PatchSet(data)
+
+    for file in diff:
+        changelog = find_changelog(file.path)
+        if changelog not in changelogs:
+            changelogs[changelog] = []
+            changelog_list.append(changelog)
+        changelogs[changelog].append(file)
+
+        # Extract PR entries from newly added tests
+        if 'testsuite' in file.path and file.is_added_file:
+            for line in list(file)[0]:
+                m = pr_regex.search(line.value)
+                if m:
+                    pr = m.group('pr')
+                    if pr not in prs:
+                        prs.append(pr)
+                else:
+                    m = dr_regex.search(line.value)
+                    if m:
+                        dr = m.group('dr')
+                        if dr not in prs:
+                            prs.append(dr)
+                    else:
+                        break
+
+    if fill_pr_titles:
+        out += get_pr_titles(prs)
+
+    # sort ChangeLog so that 'testsuite' is at the end
+    for changelog in sorted(changelog_list, key=lambda x: 'testsuite' in x):
+        files = changelogs[changelog]
+        out += '%s:\n' % os.path.join(changelog, 'ChangeLog')
+        out += '\n'
+        for pr in prs:
+            out += '\t%s\n' % pr
+        # new and deleted files should be at the end
+        for file in sorted(files, key=sort_changelog_files):
+            assert file.path.startswith(changelog)
+            in_tests = 'testsuite' in changelog or 'testsuite' in file.path
+            relative_path = file.path[len(changelog):].lstrip('/')
+            functions = []
+            if file.is_added_file:
+                msg = 'New test' if in_tests else 'New file'
+                out += '\t* %s: %s.\n' % (relative_path, msg)
+            elif file.is_removed_file:
+                out += '\t* %s: Removed.\n' % (relative_path)
+            elif hasattr(file, 'is_rename') and file.is_rename:
+                out += '\t* %s: Moved to...\n' % (relative_path)
+                new_path = file.target_file[2:]
+                # A file can be theoretically moved to a location that
+                # belongs to a different ChangeLog.  Let user fix it.
+                if new_path.startswith(changelog):
+                    new_path = new_path[len(changelog):].lstrip('/')
+                out += '\t* %s: ...here.\n' % (new_path)
+            else:
+                if not no_functions:
+                    for hunk in file:
+                        # Do not add function names for testsuite files
+                        extension = os.path.splitext(relative_path)[1]
+                        if not in_tests and extension in function_extensions:
+                            last_fn = None
+                            modified_visited = False
+                            success = False
+                            for line in hunk:
+                                m = identifier_regex.match(line.value)
+                                if line.is_added or line.is_removed:
+                                    if not line.value.strip():
+                                        continue
+                                    modified_visited = True
+                                    if m and try_add_function(functions,
+                                                              m.group(1)):
+                                        last_fn = None
+                                        success = True
+                                elif line.is_context:
+                                    if last_fn and modified_visited:
+                                        try_add_function(functions, last_fn)
+                                        last_fn = None
+                                        modified_visited = False
+                                        success = True
+                                    elif m:
+                                        last_fn = m.group(1)
+                                        modified_visited = False
+                            if not success:
+                                try_add_function(functions,
+                                                 hunk.section_header)
+                if functions:
+                    out += '\t* %s (%s):\n' % (relative_path, functions[0])
+                    for fn in functions[1:]:
+                        out += '\t(%s):\n' % fn
+                else:
+                    out += '\t* %s:\n' % relative_path
+        out += '\n'
+    return out
+
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description=help_message)
+    parser.add_argument('input', nargs='?',
+                        help='Patch file (or missing, read standard input)')
+    parser.add_argument('-s', '--no-functions', action='store_true',
+                        help='Do not generate function names in ChangeLogs')
+    parser.add_argument('-p', '--fill-up-bug-titles', action='store_true',
+                        help='Download title of mentioned PRs')
+    parser.add_argument('-c', '--changelog',
+                        help='Append the ChangeLog to a git commit message '
+                             'file')
+    args = parser.parse_args()
+    if args.input == '-':
+        args.input = None
+
+    input = open(args.input) if args.input else sys.stdin
+    data = input.read()
+    output = generate_changelog(data, args.no_functions,
+                                args.fill_up_bug_titles)
+    if args.changelog:
+        lines = open(args.changelog).read().split('\n')
+        start = list(takewhile(lambda l: not l.startswith('#'), lines))
+        end = lines[len(start):]
+        with open(args.changelog, 'w') as f:
+            if start:
+                # appent empty line
+                if start[-1] != '':
+                    start.append('')
+            else:
+                # append 2 empty lines
+                start = 2 * ['']
+            f.write('\n'.join(start))
+            f.write('\n')
+            f.write(output)
+            f.write('\n'.join(end))
+    else:
+        print(output, end='')
diff --git a/contrib/prepare-commit-msg b/contrib/prepare-commit-msg
new file mode 100755
index 0000000..969847d
--- /dev/null
+++ b/contrib/prepare-commit-msg
@@ -0,0 +1,81 @@
+#!/bin/sh
+
+# Copyright (C) 2020 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING.  If not, write to
+# the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+COMMIT_MSG_FILE=$1
+COMMIT_SOURCE=$2
+SHA1=$3
+
+# We might be on a branch before the file was added.
+if ! [ -x contrib/mklog.py ]; then exit 0; fi
+
+# Can't do anything if $COMMIT_MSG_FILE isn't a file.
+if ! [ -f "$COMMIT_MSG_FILE" ]; then exit 0; fi
+
+# Don't do anything unless requested to.
+if [ -z "$GCC_FORCE_MKLOG" ]; then exit 0; fi
+
+if [ -z "$COMMIT_SOURCE" ] || [ $COMMIT_SOURCE = template ]; then
+    # No source or "template" means new commit.
+    cmd="diff --cached"
+
+elif [ $COMMIT_SOURCE = message ]; then
+    # "message" means -m; assume a new commit if there are any changes staged.
+    if ! git diff --cached --quiet; then
+	cmd="diff --cached"
+    else
+	cmd="diff --cached HEAD^"
+    fi
+
+elif [ $COMMIT_SOURCE = commit ]; then
+    # The message of an existing commit.  If it's HEAD, assume --amend;
+    # otherwise, assume a new commit with -C.
+    if [ $SHA1 = HEAD ]; then
+	cmd="diff --cached HEAD^"
+	if [ "$(git config gcc-config.mklog-hook-type)" = "smart-amend" ]; then
+	    # Check if the existing message still describes the staged changes.
+	    f=$(mktemp /tmp/git-commit.XXXXXX) || exit 1
+	    git log -1 --pretty=email HEAD > $f
+	    printf '\n---\n\n' >> $f
+	    git $cmd >> $f
+	    if contrib/gcc-changelog/git_email.py "$f" >/dev/null 2>&1; then
+		# Existing commit message is still OK for amended commit.
+		rm $f
+		exit 0
+	    fi
+	    rm $f
+	fi
+    else
+	cmd="diff --cached"
+    fi
+else
+    # Do nothing for merge or squash.
+    exit 0
+fi
+
+# Save diff to a file if requested.
+DIFF_FILE=$(git config gcc-config.diff-file)
+if ! [ -z "$DIFF_FILE" ]; then
+    tee="tee $DIFF_FILE"
+else
+    tee="cat"
+fi
+
+git $cmd | $tee | git gcc-mklog -c "$COMMIT_MSG_FILE"
diff --git a/contrib/test_mklog.py b/contrib/test_mklog.py
new file mode 100755
index 0000000..344b7a2
--- /dev/null
+++ b/contrib/test_mklog.py
@@ -0,0 +1,439 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2020 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING.  If not, write to
+# the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+# This script parses a .diff file generated with 'diff -up' or 'diff -cp'
+# and adds a skeleton ChangeLog file to the file. It does not try to be
+# too smart when parsing function names, but it produces a reasonable
+# approximation.
+#
+# Author: Martin Liska <mliska@suse.cz>
+
+import unittest
+
+from mklog import generate_changelog
+
+import unidiff
+
+unidiff_supports_renaming = hasattr(unidiff.PatchedFile(), 'is_rename')
+
+
+PATCH1 = '''\
+diff --git a/gcc/config/riscv/riscv.h b/gcc/config/riscv/riscv.h
+index 567c23380fe..e6209ede9d6 100644
+--- a/gcc/config/riscv/riscv.h
++++ b/gcc/config/riscv/riscv.h
+@@ -920,6 +920,7 @@ extern unsigned riscv_stack_boundary;
+ #define SHIFT_RS1 15
+ #define SHIFT_IMM 20
+ #define IMM_BITS 12
++#define C_S_BITS 5
+ #define C_SxSP_BITS 6
+ 
+ #define IMM_REACH (1LL << IMM_BITS)
+@@ -929,6 +930,10 @@ extern unsigned riscv_stack_boundary;
+ #define SWSP_REACH (4LL << C_SxSP_BITS)
+ #define SDSP_REACH (8LL << C_SxSP_BITS)
+ 
++/* This is the maximum value that can be represented in a compressed load/store
++   offset (an unsigned 5-bit value scaled by 4).  */
++#define CSW_MAX_OFFSET ((4LL << C_S_BITS) - 1) & ~3
++
+ /* Called from RISCV_REORG, this is defined in riscv-sr.c.  */
+ 
+ extern void riscv_remove_unneeded_save_restore_calls (void);
+
+'''
+
+EXPECTED1 = '''\
+gcc/ChangeLog:
+
+	* config/riscv/riscv.h (C_S_BITS):
+	(CSW_MAX_OFFSET):
+
+'''
+
+PATCH2 = '''\
+diff --git a/gcc/targhooks.h b/gcc/targhooks.h
+index 9704d23f1db..b572a36e8cf 100644
+--- a/gcc/targhooks.h
++++ b/gcc/targhooks.h
+@@ -120,7 +120,7 @@ extern bool default_empty_mask_is_expensive (unsigned);
+ extern void *default_init_cost (class loop *);
+ extern unsigned default_add_stmt_cost (class vec_info *, void *, int,
+ 				       enum vect_cost_for_stmt,
+-				       class _stmt_vec_info *, int,
++				       class _stmt_vec_info *, tree, int,
+ 				       enum vect_cost_model_location);
+ extern void default_finish_cost (void *, unsigned *, unsigned *, unsigned *);
+ extern void default_destroy_cost_data (void *);
+@@ -186,6 +186,7 @@ extern tree default_emutls_var_init (tree, tree, tree);
+ extern unsigned int default_hard_regno_nregs (unsigned int, machine_mode);
+ extern bool default_hard_regno_scratch_ok (unsigned int);
+ extern bool default_mode_dependent_address_p (const_rtx, addr_space_t);
++extern bool default_new_address_profitable_p (rtx, rtx_insn *, rtx);
+ extern bool default_target_option_valid_attribute_p (tree, tree, tree, int);
+ extern bool default_target_option_pragma_parse (tree, tree);
+ extern bool default_target_can_inline_p (tree, tree);
+
+'''
+
+EXPECTED2 = '''\
+gcc/ChangeLog:
+
+	* targhooks.h (default_add_stmt_cost):
+	(default_new_address_profitable_p):
+
+'''
+
+PATCH3 = '''\
+diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
+index 2b1e33f94ae..7f47402f9b9 100644
+--- a/libcpp/include/cpplib.h
++++ b/libcpp/include/cpplib.h
+@@ -173,7 +173,7 @@ enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_GNUC11, CLK_GNUC17, CLK_GNUC2X,
+ 	     CLK_STDC2X,
+ 	     CLK_GNUCXX, CLK_CXX98, CLK_GNUCXX11, CLK_CXX11,
+ 	     CLK_GNUCXX14, CLK_CXX14, CLK_GNUCXX17, CLK_CXX17,
+-	     CLK_GNUCXX2A, CLK_CXX2A, CLK_ASM};
++	     CLK_GNUCXX20, CLK_CXX20, CLK_ASM};
+ 
+ /* Payload of a NUMBER, STRING, CHAR or COMMENT token.  */
+ struct GTY(()) cpp_string {
+@@ -484,7 +484,7 @@ struct cpp_options
+   /* Nonzero for C2X decimal floating-point constants.  */
+   unsigned char dfp_constants;
+ 
+-  /* Nonzero for C++2a __VA_OPT__ feature.  */
++  /* Nonzero for C++20 __VA_OPT__ feature.  */
+   unsigned char va_opt;
+ 
+   /* Nonzero for the '::' token.  */
+
+'''
+
+EXPECTED3 = '''\
+libcpp/ChangeLog:
+
+	* include/cpplib.h (enum c_lang):
+	(struct cpp_options):
+
+'''
+
+EXPECTED3B = '''\
+libcpp/ChangeLog:
+
+	* include/cpplib.h:
+
+'''
+
+PATCH4 = '''\
+diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c
+index aab79492357..f0df1002488 100644
+--- a/gcc/ipa-icf.c
++++ b/gcc/ipa-icf.c
+@@ -1,5 +1,7 @@
+ 
+ 
++
++
+ /* Interprocedural Identical Code Folding pass
+    Copyright (C) 2014-2020 Free Software Foundation, Inc.
+ 
+diff --git a/gcc/testsuite/gcc.dg/pr32374.c b/gcc/testsuite/gcc.dg/pr32374.c
+deleted file mode 100644
+index de15d559f5b..00000000000
+--- a/gcc/testsuite/gcc.dg/pr32374.c
++++ /dev/null
+@@ -1,20 +0,0 @@
+-/* { dg-do compile } */
+-/* { dg-options "-O2" } */
+-
+-extern int *stderr;
+-
+-void f (int *, const char *, ...);
+-
+-void g (const char *conf_name)
+-{
+-  typedef struct
+-  {
+-    const char *label;
+-    const int value;
+-  } Section;
+-
+-  const Section sections[2] = { {"", 0}, {"", 1} };
+-
+-  f (stderr, "", "", conf_name, 0, sections[0]);
+-  f (stderr, "", "", conf_name, 0, sections[0]);
+-}
+diff --git a/gcc/testsuite/gcc.dg/pr40209.c b/gcc/testsuite/gcc.dg/pr40209.c
+index 4e77df5c2e6..c23d69d1f1b 100644
+--- a/gcc/testsuite/gcc.dg/pr40209.c
++++ b/gcc/testsuite/gcc.dg/pr40209.c
+@@ -1,6 +1,8 @@
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fprofile-use -fopt-info -Wno-missing-profile" } */
+ 
++
++
+ void process(const char *s);
+ 
+ struct BaseHolder {
+diff --git a/gcc/testsuite/gcc.dg/pr50209.c b/gcc/testsuite/gcc.dg/pr50209.c
+new file mode 100644
+index 00000000000..b28b04f6431
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/pr50209.c
+@@ -0,0 +1,3 @@
++
++
++
+diff --git a/gcc/testsuite/gcc.dg/pr63567-1.c b/gcc/testsuite/gcc.dg/pr63567-1.c
+index 97da171563e..00c5ecc11fa 100644
+--- a/gcc/testsuite/gcc.dg/pr63567-1.c
++++ b/gcc/testsuite/gcc.dg/pr63567-1.c
+@@ -1,3 +1,4 @@
++
+ /* PR c/63567 */
+ /* { dg-do compile } */
+ /* { dg-options "" } */
+diff --git a/gcc/varasm.c b/gcc/varasm.c
+index f062e48071f..fd3c7ca8cf3 100644
+--- a/gcc/varasm.c
++++ b/gcc/varasm.c
+@@ -1,3 +1,5 @@
++
++
+ /* Output variables, constants and external declarations, for GNU compiler.
+    Copyright (C) 1987-2020 Free Software Foundation, Inc.
+ 
+diff --git a/libssp/gets-chk.c b/libssp/gets-chk.c
+index 4ad78c1f77b..6687b368038 100644
+--- a/libssp/gets-chk.c
++++ b/libssp/gets-chk.c
+@@ -32,6 +32,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ 
++
++
+ #include "config.h"
+ #include <ssp/ssp.h>
+ #include <stdarg.h>
+'''
+
+EXPECTED4 = '''\
+gcc/ChangeLog:
+
+	* ipa-icf.c:
+	* varasm.c:
+
+libssp/ChangeLog:
+
+	* gets-chk.c:
+
+gcc/testsuite/ChangeLog:
+
+	* gcc.dg/pr40209.c:
+	* gcc.dg/pr63567-1.c:
+	* gcc.dg/pr32374.c: Removed.
+	* gcc.dg/pr50209.c: New test.
+
+'''
+
+PATCH5 = '''\
+diff --git a/gcc/testsuite/gcc.target/i386/pr95046-6.c b/gcc/testsuite/gcc.target/i386/pr95046-6.c
+new file mode 100644
+index 00000000000..dcc8999c446
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/i386/pr95046-6.c
+@@ -0,0 +1,44 @@
++/* PR target/95046 */
++/* { dg-do compile { target { ! ia32 } } } */
++/* { dg-options "-O3 -mavx512vl" } */
++
++
++double r[2];
++int s[2];
++unsigned int u[2];
++
++void
++test_float (void)
++{
++  for (int i = 0; i < 2; i++)
++    r[i] = s[i];
++}
++
++/* { dg-final { scan-assembler "\tvcvtdq2pd" } } */
++
++void
++test_ufloat (void)
++{
++  for (int i = 0; i < 2; i++)
++    r[i] = u[i];
++}
++
++/* { dg-final { scan-assembler "\tvcvtudq2pd" } } */
++
++void
++test_fix (void)
++{
++  for (int i = 0; i < 2; i++)
++    s[i] = r[i];
++}
++
++/* { dg-final { scan-assembler "\tvcvttpd2dqx" } } */
++
++void
++test_ufix (void)
++{
++  for (int i = 0; i < 2; i++)
++    u[i] = r[i];
++}
++
++/* { dg-final { scan-assembler "\tvcvttpd2udqx" } } */
+-- 
+2.26.2
+
+'''
+
+EXPECTED5 = '''\
+PR target/95046 - Vectorize V2SFmode operations
+
+gcc/testsuite/ChangeLog:
+
+	PR target/95046
+	* gcc.target/i386/pr95046-6.c: New test.
+
+'''
+
+PATCH6 = '''\
+diff --git a/gcc/cgraph.h b/gcc/cgraph.h
+index 5ddeb65269b..cfae6e91da9 100644
+--- a/gcc/cgraph.h
++++ b/gcc/cgraph.h
+@@ -937,7 +937,8 @@ struct GTY((tag ("SYMTAB_FUNCTION"))) cgraph_node : public symtab_node
+       split_part (false), indirect_call_target (false), local (false),
+       versionable (false), can_change_signature (false),
+       redefined_extern_inline (false), tm_may_enter_irr (false),
+-      ipcp_clone (false), m_uid (uid), m_summary_id (-1)
++      ipcp_clone (false), declare_variant_alt (false),
++      calls_declare_variant_alt (false), m_uid (uid), m_summary_id (-1)
+   {}
+ 
+   /* Remove the node from cgraph and all inline clones inlined into it.
+
+'''
+
+EXPECTED6 = '''\
+gcc/ChangeLog:
+
+	* cgraph.h (struct cgraph_node):
+
+'''
+
+PATCH7 = '''\
+diff --git a/gcc/testsuite/g++.dg/DRs/dr2237.C b/gcc/testsuite/g++.dg/DRs/dr2237.C
+new file mode 100644
+index 00000000000..f3d6d11e61e
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/DRs/dr2237.C
+@@ -0,0 +1,18 @@
++// DR 2237 - Can a template-id name a constructor?
++
++template<class T>
++struct X {
++  X<T>(); // { dg-error "expected" "" { target c++20 } }
++  X(int); // OK, injected-class-name used
++  ~X<T>(); // { dg-error "template-id not allowed for destructor" "" { target c++20 } }
++};
++
++// ill-formed since DR1435
++template<typename T> X<T>::X<T>() {} // { dg-error "names the constructor|as no template constructors" }
++template<typename T> X<T>::~X<T>() {} // { dg-error "template-id not allowed for destructor" "" { target c++20 } }
++
++struct Q {
++  // ill-formed since DR1435
++  template<typename T> friend X<T>::X<T>(); // { dg-error "names the constructor|as no template constructors" }
++  template<typename T> friend X<T>::~X<T>(); // { dg-error "template-id not allowed for destructor" "" { target c++20 } }
++};
+'''
+
+EXPECTED7 = '''\
+gcc/testsuite/ChangeLog:
+
+	DR 2237
+	* g++.dg/DRs/dr2237.C: New test.
+
+'''
+
+PATCH8 = '''\
+diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf2.c
+similarity index 100%
+rename from gcc/ipa-icf.c
+rename to gcc/ipa-icf2.c
+'''
+
+EXPECTED8 = '''\
+gcc/ChangeLog:
+
+	* ipa-icf.c: Moved to...
+	* ipa-icf2.c: ...here.
+
+'''
+
+class TestMklog(unittest.TestCase):
+    def test_macro_definition(self):
+        changelog = generate_changelog(PATCH1)
+        assert changelog == EXPECTED1
+
+    def test_changed_argument(self):
+        changelog = generate_changelog(PATCH2)
+        assert changelog == EXPECTED2
+
+    def test_enum_and_struct(self):
+        changelog = generate_changelog(PATCH3)
+        assert changelog == EXPECTED3
+
+    def test_no_function(self):
+        changelog = generate_changelog(PATCH3, True)
+        assert changelog == EXPECTED3B
+
+    def test_sorting(self):
+        changelog = generate_changelog(PATCH4)
+        assert changelog == EXPECTED4
+
+    def test_pr_bugzilla_download(self):
+        changelog = generate_changelog(PATCH5, fill_pr_titles=True)
+        assert changelog == EXPECTED5
+
+    def test_gty_in_struct(self):
+        changelog = generate_changelog(PATCH6, fill_pr_titles=True)
+        assert changelog == EXPECTED6
+
+    def test_dr_detection_in_test_case(self):
+        changelog = generate_changelog(PATCH7)
+        assert changelog == EXPECTED7
+
+    @unittest.skipIf(not unidiff_supports_renaming,
+                     'Newer version of unidiff is needed (0.6.0+)')
+    def test_renaming(self):
+        changelog = generate_changelog(PATCH8)
+        assert changelog == EXPECTED8
diff --git a/contrib/vimrc b/contrib/vimrc
index fa0208d..356d455 100644
--- a/contrib/vimrc
+++ b/contrib/vimrc
@@ -39,9 +39,13 @@
     setlocal shiftwidth=2
     setlocal noexpandtab
   endif
-  setlocal textwidth=80
+  if &filetype == "gitcommit"
+    setlocal textwidth=72
+  else
+    setlocal textwidth=80
+  endif
   setlocal formatoptions-=ro formatoptions+=cqlt
-  if index(l:c_exts, l:ext) != -1
+  if index(l:c_exts, l:ext) != -1 || &filetype == "c" || &filetype == "cpp"
     setlocal cindent
     setlocal cinoptions=>4,n-2,{2,^-2,:2,=2,g0,f0,h2,p4,t0,+2,(0,u0,w1,m0
   endif
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c3a573e..9cf1f97 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,174 +1,4224 @@
-2020-08-07  Giuliano Belinasssi <giuliano.belinassi@usp.br>
+2020-08-16  Roger Sayle  <roger@nextmovesoftware.com>
 
-	* cgraphunit.c (childno): New variable.
-	(maybe_compile_in_parallel): Store current child number.
-	* gcc.c (sort_asm_files): New function.
-	* toplev.c (init_additional_asm_names_file): Output child number.
-	* toplev.h (init_additional_asm_names_file): Update interface.
-	* tree.c (get_file_function_name): Do not use randomness when
-	promoting names.
+	* simplify-rtx.c (simplify_unary_operation_1) [SIGN_EXTEND]:
+	Simplify (sign_extend:M (truncate:N (lshiftrt:M x C))) to
+	(ashiftrt:M x C) when the shift sets the high bits appropriately.
 
-2020-08-06  Giuliano Belinasssi <giuliano.belinassi@usp.br>
+2020-08-14  Martin Sebor  <msebor@redhat.com>
 
-	* symtab.c (change_decl_assembler_name): Remove RTL output if
-	assember name is changed afterward.
+	PR middle-end/78257
+	* builtins.c (expand_builtin_memory_copy_args): Rename called function.
+	(expand_builtin_stpcpy_1): Remove argument from call.
+	(expand_builtin_memcmp): Rename called function.
+	(inline_expand_builtin_bytecmp): Same.
+	* expr.c (convert_to_bytes): New function.
+	(constant_byte_string): New function (formerly string_constant).
+	(string_constant): Call constant_byte_string.
+	(byte_representation): New function.
+	* expr.h (byte_representation): Declare.
+	* fold-const-call.c (fold_const_call): Rename called function.
+	* fold-const.c (c_getstr): Remove an argument.
+	(getbyterep): Define a new function.
+	* fold-const.h (c_getstr): Remove an argument.
+	(getbyterep): Declare a new function.
+	* gimple-fold.c (gimple_fold_builtin_memory_op): Rename callee.
+	(gimple_fold_builtin_string_compare): Same.
+	(gimple_fold_builtin_memchr): Same.
 
-2020-07-31  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+2020-08-14  David Malcolm  <dmalcolm@redhat.com>
 
-	* Makefile.in: Use `+' on rule calling GCC
+	* doc/analyzer.texi (Overview): Add tip about how to get a
+	gimple dump if the analyzer ICEs.
 
-2020-07-29  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+2020-08-14  Uroš Bizjak  <ubizjak@gmail.com>
 
-	* cgraphunit.c (lto_merge_comdat_map): Avoid crash due to
-	division by zero.
+	* config/i386/i386-builtin.def (__builtin_ia32_llwpcb)
+	(__builtin_ia32_slwpcb, __builtin_ia32_lwpval32)
+	(__builtin_ia32_lwpval64, __builtin_ia32_lwpins32)
+	(__builtin_ia32_lwpins64): Use CODE_FOR_nothing.
+	* config/i386/i386.md (@lwp_llwpcb<mode>):
+	Implement as parametrized name pattern.
+	(@lwp_slwpcb<mode>): Ditto.
+	(@lwp_lwpval<mode>): Ditto.
+	(@lwp_lwpins<mode>): Ditto.
+	* config/i386/i386-expand.c (ix86_expand_special_args_builtin)
+	[case VOID_FTYPE_UINT_UINT_UINT, case VOID_FTYPE_UINT64_UINT_UINT]
+	[case UCHAR_FTYPE_UINT_UINT_UINT, case UCHAR_FTYPE_UINT64_UINT_UINT]:
+	Remove.
+	(ix86_expand_builtin)
+	[ case IX86_BUILTIN_LLWPCB, case IX86_BUILTIN_LLWPCB]:
+	Update for parameterized name patterns.
+	[case IX86_BUILTIN_LWPVAL32, case IX86_BUILTIN_LWPVAL64]
+	[case IX86_BUILTIN_LWPINS32, case IX86_BUILTIN_LWPINS64]: Expand here.
 
-2020-07-29  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+2020-08-14  Lewis Hyatt  <lhyatt@gmail.com>
 
-	* lto-partition.c (balance_partitions): Accept number of jobs as
-	argument.
+	* common.opt: Add new option -fdiagnostics-plain-output.
+	* doc/invoke.texi: Document it.
+	* opts-common.c (decode_cmdline_options_to_array): Implement it.
+	(decode_cmdline_option): Add missing const qualifier to argv.
 
-2020-07-29  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+2020-08-14  Jakub Jelinek  <jakub@redhat.com>
+	    Jonathan Wakely  <jwakely@redhat.com>
+	    Jonathan Wakely   <jwakely@redhat.com>
 
-	* cgraphunit.c (maybe_compile_in_parallel): Implement automatic
-	jobserver detection flag.
-	* jobserver.cc (jobserver_initialize): Check if Make fds are FIFOs.
-	(jobserver_finalize): Set nonblock_mode back to false.
+	* system.h: Include type_traits.
+	* vec.h (vec<T, A, vl_embed>::embedded_size): Use offsetof and asserts
+	on vec_stdlayout, which is conditionally a vec (for standard layout T)
+	and otherwise vec_embedded.
 
-2020-07-27  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+2020-08-14  Jojo R  <jiejie_rong@c-sky.com>
 
-	* Makefile.in: Mark jobserver.cc to be compiled.
-	* jobserver.cc: New file.
-	* cgraphunit.c (is_number): New function.
-	* (compile): Move parallelization logic to...
-	* (maybe_compile_in_parallel): Here.
-	* common.opt: New flag.
-	* gcc.c (execute): Check for fparallel-jobs before calling
-	append_split_outputs.
-	* toplev.c (main): Finalize jobserver before exit.
+	* config/csky/csky-elf.h (ASM_SPEC): Use mfloat-abi.
+	* config/csky/csky-linux-elf.h (ASM_SPEC): mfloat-abi.
 
-2020-07-16  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+2020-08-13  David Malcolm  <dmalcolm@redhat.com>
 
-	* ipa-sra.c (gate): Enable when split_outputs.
-	* lto-partition.c (merge_static_calls): Also merge inlined functions.
+	PR analyzer/93032
+	PR analyzer/93938
+	PR analyzer/94011
+	PR analyzer/94099
+	PR analyzer/94399
+	PR analyzer/94458
+	PR analyzer/94503
+	PR analyzer/94640
+	PR analyzer/94688
+	PR analyzer/94689
+	PR analyzer/94839
+	PR analyzer/95026
+	PR analyzer/95042
+	PR analyzer/95240
+	* Makefile.in (ANALYZER_OBJS): Add analyzer/region.o,
+	analyzer/region-model-impl-calls.o,
+	analyzer/region-model-manager.o,
+	analyzer/region-model-reachability.o, analyzer/store.o, and
+	analyzer/svalue.o.
+	* doc/analyzer.texi: Update for changes to analyzer
+	implementation.
+	* tristate.h (tristate::get_value): New accessor.
 
-2020-07-14  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+2020-08-13  Uroš Bizjak  <ubizjak@gmail.com>
 
-	* symtab.c (find_by_order): New function.
-	(find_by_name): New function.
-	(find_by_asm_naem): New function.
-	* lto-cgraph.c (handle_node_in_boundary): Promote varnode in boundary
-	to be external.
+	* config/i386/i386-builtin.def (CET_NORMAL): Merge to CET BDESC array.
+	(__builtin_ia32_rddspd, __builtin_ia32_rddspq, __builtin_ia32_incsspd)
+	(__builtin_ia32_incsspq, __builtin_ia32_wrssd, __builtin_ia32_wrssq)
+	(__builtin_ia32_wrussd, __builtin_ia32_wrussq): Use CODE_FOR_nothing.
+	* config/i386/i386-builtins.c: Remove handling of CET_NORMAL builtins.
+	* config/i386/i386.md (@rdssp<mode>): Implement as parametrized
+	name pattern.  Use SWI48 mode iterator.  Introduce input operand
+	and remove explicit XOR zeroing from insn template.
+	(@incssp<mode>): Implement as parametrized name pattern.
+	Use SWI48 mode iterator.
+	(@wrss<mode>): Ditto.
+	(@wruss<mode>): Ditto.
+	(rstorssp): Remove expander.  Rename insn pattern from *rstorssp<mode>.
+	Use DImode memory operand.
+	(clrssbsy): Remove expander.  Rename insn pattern from *clrssbsy<mode>.
+	Use DImode memory operand.
+	(save_stack_nonlocal): Update for parametrized name patterns.
+	Use cleared register as an argument to gen_rddsp.
+	(restore_stack_nonlocal): Update for parametrized name patterns.
+	* config/i386/i386-expand.c (ix86_expand_builtin):
+	[case IX86_BUILTIN_RDSSPD, case IX86_BUILTIN_RDSSPQ]: Expand here.
+	[case IX86_BUILTIN_INCSSPD, case IX86_BUILTIN_INCSSPQ]: Ditto.
+	[case IX86_BUILTIN_RSTORSSP, case IX86_BUILTIN_CLRSSBSY]:
+	Generate DImode memory operand.
+	[case IX86_BUILTIN_WRSSD, case IX86_BUILTIN_WRSSQ]
+	[case IX86_BUILTIN_WRUSSD, case IX86_BUILTIN_WRUSSD]:
+	Update for parameterized name patterns.
 
-2020-07-14  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+2020-08-13  Peter Bergner  <bergner@linux.ibm.com>
 
-	* cgraphunit.c (ipa_passes): Move split_outputs to.
-	(symbol_table::compile): Here. Also make sure it runs after the IPA
-	transformation stage.
-	* ipa-fnsummary.c (gate): Make sure it runs once in split_outputs.
-	* lto-cgraph.c (handle_node_in_boundary): Implemement case where
-	body should not be removed.
-	(compute_boundary): New function.
-	* symtab.c: Show aux2 variable on dump.
+	PR target/96506
+	* config/rs6000/rs6000-call.c (rs6000_promote_function_mode): Disallow
+	MMA types as return values.
+	(rs6000_function_arg): Disallow MMA types as function arguments.
 
-2020-07-08  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+2020-08-13  Richard Sandiford  <richard.sandiford@arm.com>
 
-	* cgraphunit.c (ipa_passes): Use params instead of literals.
-	* lto-partition.c (merge_static_calls): Be careful with
-	SYMBOL_DUPLICATE.
-	* params.def: New params promote-statics and balance-partitions.
+	Revert:
+	2020-08-12  Peixin Qiao  <qiaopeixin@huawei.com>
 
-2020-07-07  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+	* config/aarch64/aarch64.c (aarch64_function_value): Add if
+	condition to check ag_mode after entering if condition of
+	aarch64_vfp_is_call_or_return_candidate. If TARGET_FLOAT is
+	set as false by -mgeneral-regs-only, report the diagnostic
+	information of -mgeneral-regs-only imcompatible with the use
+	of fp/simd register(s).
 
-	* ipa-cp.c (initialize_node_lattices): Uncoment `gcc_unreachable'.
-	* ipa-profile.c (ipa_propagate_frequency): Uncoment assert.
-	* lto-cgraph.c (handle_node_in_boundary): New function.
-	* (lto_apply_partition_mask): Remove call to remove_unreachable_nodes,
-	and expand LTRANS boundary based on partitioned nodes.
+2020-08-13  Martin Liska  <mliska@suse.cz>
 
-2020-07-07  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+	PR ipa/96482
+	* ipa-cp.c (ipcp_bits_lattice::meet_with_1): Mask m_value
+	with m_mask.
 
-	* cgraphunit.c (ipa_passes): Quick switch between promote statics
-	and balance.
-	* ipa-sra.c (gate): Disable it for split_outputs.
-	* ipa.c (remove_unreachable_nodes): Force output vnodes are
-	obviously needed.
-	* lto-cgraph.c (lto_apply_partition_mask): use aux2 instead of aux,
-	and mark nodes in the boundary to not be removed.
-	* lto-partition.c (merge_comdat_nodes): Handle references.
-	(balance_partitions): Avoid generating several small partitions.
-	(merge_contained_symbols): New function.
-	(lto_merge_comdat_map): Handle contained symbols.
-	(lto_promote_cross_file_statics): Set promoted nodes to be
-	non-local.
-	* tree.c (filter_name): New function.
-	(get_file_function_name): Filter buf so that it do not confuse ld.
+2020-08-13  Jakub Jelinek  <jakub@redhat.com>
 
-2020-07-02  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+	* gimplify.c (gimplify_omp_taskloop_expr): New function.
+	(gimplify_omp_for): Use it.  For OMP_FOR_NON_RECTANGULAR
+	loops adjust in outer taskloop the var-outer decls.
+	* omp-expand.c (expand_omp_taskloop_for_inner): Handle non-rectangular
+	loops.
+	(expand_omp_for): Don't reject non-rectangular taskloop.
+	* omp-general.c (omp_extract_for_data): Don't assert that
+	non-rectangular loops have static schedule, instead treat loop->m1
+	or loop->m2 as if loop->n1 or loop->n2 is non-constant.
 
-	* cgraphunit.c (ipa_passes): Update ipa_passes.
-	* lto-partition.c (balance_partitions): New function.
-	* (merge_comdat_nodes): New function.
-	* (merge_static_calls): New function.
-	* (lto_merge_comdat_map): Refactor.
-	* lto-partition.h: Update lto_merge_comdat_map.
+2020-08-13  Hongtao Liu  <hongtao.liu@intel.com>
 
-2020-07-02  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+	PR target/96246
+	* config/i386/sse.md (<avx512>_load<mode>_mask,
+	<avx512>_load<mode>_mask): Extend to generate blendm
+	instructions.
+	(<avx512>_blendm<mode>, <avx512>_blendm<mode>): Change
+	define_insn to define_expand.
 
-	* cgraphunit.c (ipa_passes): Call lto_merge_comdat_map.
-	* ipa-cp.c (initialize_node_lattices): Comment assertion for now.
-	* ipa-profile.c (ipa_propagate_frequency): Comment assertion for now.
-	* lto-partition.c (merge_comdat_nodes): New function.
-	(privatize_symbol_name_1): New argument wpa.
-	(privatize_symbol_name): Check if in WPA mode.
-	(lto_merge_comdat_map): New function.
-	* lto-partition.h: Declare lto_merge_comdat_map.
+2020-08-12  Roger Sayle  <roger@nextmovesoftware.com>
+	    Uroš Bizjak  <ubizjak@gmail.com>
 
-2020-06-30  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+	PR target/96558
+	* config/i386/i386.md (peephole2): Only reorder register clearing
+	instructions to allow use of xor for general registers.
 
-	* lto-partition.c (analyse_symbol_references): Dump information if
-	dump_file is provided.
-	(analyse_symbol_1): Same as above.
-	(analyse_symbol_1): Same as above.
-	(lto_max_no_alonevap_map): Same as above.
+2020-08-12  Martin Liska  <mliska@suse.cz>
 
-2020-06-30  Giuliano Belinassi  <giuliano.belinassi@usp.br>
-	* lto-cgraph.c (lto_apply_partition_mask): Avoid removal of nodes
-	in partition.
-	(maybe_release_function_dominators): Move from.
-	* cgraph.c (maybe_release_dominators): To here.
-	* ipa-visibility.c (localize_node): Skip assertion if
-	split_outputs.
-	* lto-partition.c (analyse_symbol_references): Merge
-	partitions if reference to static varnode instead of any global.
-	(promote_symbol): Correctly handle statics.
-	(lto_max_no_alonevap_map): Remove quick returns.
-	(privatize_symbol_name_1): Implement hashing of static names.
+	PR ipa/96482
+	* ipa-cp.c (ipcp_bits_lattice::meet_with_1): Drop value bits
+	for bits that are unknown.
+	(ipcp_bits_lattice::set_to_constant): Likewise.
+	* tree-ssa-ccp.c (get_default_value): Add sanity check that
+	IPA CP bit info has all bits set to zero in bits that
+	are unknown.
 
-2020-06-24  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+2020-08-12  Peixin Qiao  <qiaopeixin@huawei.com>
 
-	* cgraphunit.c (ipa_passes): Assert for non-empty partition.
-	* lto-partition.c: Remove currrent_working_partition.
-	(add_symbol_to_partition): Remove useless check.
-	(lto_max_no_alonevap_map): Use an heuristic to merge small
-	partitions. Also fix creation of empty partitions.
+	* config/aarch64/aarch64.c (aarch64_function_value): Add if
+	condition to check ag_mode after entering if condition of
+	aarch64_vfp_is_call_or_return_candidate. If TARGET_FLOAT is
+	set as false by -mgeneral-regs-only, report the diagnostic
+	information of -mgeneral-regs-only imcompatible with the use
+	of fp/simd register(s).
 
-2020-06-23  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+2020-08-12  Jakub Jelinek  <jakub@redhat.com>
 
-	* cgraphunit.c (ipa_passes): Run ipa passes also when
-	split_outputs.
-	* ipa-icf.c (gate): Don't run when split_outputs.
-	* lto-cgraph.c (lto_apply_partition_mask): Correctly set nodes in
-	the partition boundary.
+	PR tree-optimization/96535
+	* toplev.c (process_options): Move flag_unroll_loops and
+	flag_cunroll_grow_size handling from here to ...
+	* opts.c (finish_options): ... here.  For flag_cunroll_grow_size,
+	don't check for AUTODETECT_VALUE, but instead check
+	opts_set->x_flag_cunroll_grow_size.
+	* common.opt (funroll-completely-grow-size): Default to 0.
+	* config/rs6000/rs6000.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE):
+	Redefine.
+	(rs6000_override_options_after_change): New function.
+	(rs6000_option_override_internal): Call it.  Move there the
+	flag_cunroll_grow_size, unroll_only_small_loops and
+	flag_rename_registers handling.
 
-2020-06-18  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+2020-08-12  Tom de Vries  <tdevries@suse.de>
 
-	* toplev.c (lang_dependent_init): Move call to init_asm output to
-	* cgraphunit.c (compile): Here. Also run handle_additional_asm if
-	split_outputs is provided.
-	* gcc.c (append_split_ouputs): Record asm temporary file.
-	(execute): Run a max of 4 jobs in parallel instead of n_commands.
-	* cgraph.h: Update finalize_compilation_unit and compile
-	declarations.
+	* config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Make elt_size an
+	unsigned HOST_WIDE_INT.  Print init_frag.remaining using
+	HOST_WIDE_INT_PRINT_UNSIGNED.
+
+2020-08-12  Roger Sayle  <roger@nextmovesoftware.com>
+	    Uroš Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/i386.md (peephole2): Reduce unnecessary
+	register shuffling produced by register allocation.
+
+2020-08-12  Aldy Hernandez  <aldyh@redhat.com>
+
+	* ipa-fnsummary.c (evaluate_conditions_for_known_args): Use vec<>
+	instead of std::vector<>.
+	(evaluate_properties_for_edge): Same.
+	(ipa_fn_summary_t::duplicate): Same.
+	(estimate_ipcp_clone_size_and_time): Same.
+	* vec.h (<T, A, vl_embed>::embedded_size): Change vec_embedded
+	type to contain a char[].
+
+2020-08-12  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+	PR target/96308
+	* config/s390/s390.c (s390_cannot_force_const_mem): Reject an
+	unary minus for everything not being a numeric constant.
+	(legitimize_tls_address): Move a NEG out of the CONST rtx.
+
+2020-08-12  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+	PR target/96456
+	* config/s390/s390.h (TARGET_NONSIGNALING_VECTOR_COMPARE_OK): New
+	macro.
+	* config/s390/vector.md (vcond_comparison_operator): Use new macro
+	for the check.
+
+2020-08-11  Jakub Jelinek  <jakub@redhat.com>
+
+	PR rtl-optimization/96539
+	* expr.c (emit_block_move_hints): Don't copy anything if x and y
+	are the same and neither is MEM_VOLATILE_P.
+
+2020-08-11  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c/96549
+	* tree.c (get_narrower): Use TREE_TYPE (ret) instead of
+	TREE_TYPE (win) for COMPOUND_EXPRs.
+
+2020-08-11  Jan Hubicka  <hubicka@ucw.cz>
+
+	* predict.c (not_loop_guard_equal_edge_p): New function.
+	(maybe_predict_edge): New function.
+	(predict_paths_for_bb): Use it.
+	(predict_paths_leading_to_edge): Use it.
+
+2020-08-11  Martin Liska  <mliska@suse.cz>
+
+	* dbgcnt.def (DEBUG_COUNTER): Add ipa_cp_bits.
+	* ipa-cp.c (ipcp_store_bits_results): Use it when we store known
+	bits for parameters.
+
+2020-08-10  Marek Polacek  <polacek@redhat.com>
+
+	* doc/sourcebuild.texi: Document dg-ice.
+
+2020-08-10  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* config/i386/i386-expand.c (ix86_expand_int_movcc): Expand
+	signed MIN_EXPR against zero as "x < 0 ? x : 0" instead of
+	"x <= 0 ? x : 0" to enable sign_bit_compare_p optimizations.
+
+2020-08-10  Aldy Hernandez  <aldyh@redhat.com>
+
+	* value-range.h (gt_ggc_mx): Declare inline.
+	(gt_pch_nx): Same.
+
+2020-08-10  Marc Glisse  <marc.glisse@inria.fr>
+
+	PR tree-optimization/95433
+	* match.pd (X * C1 == C2): Handle wrapping overflow.
+	* expr.c (maybe_optimize_mod_cmp): Qualify call to mod_inv.
+	(mod_inv): Move...
+	* wide-int.cc (mod_inv): ... here.
+	* wide-int.h (mod_inv): Declare it.
+
+2020-08-10  Jan Hubicka  <hubicka@ucw.cz>
+
+	* predict.c (filter_predictions): Document semantics of filter.
+	(equal_edge_p): Rename to ...
+	(not_equal_edge_p): ... this; reverse semantics.
+	(remove_predictions_associated_with_edge): Fix.
+
+2020-08-10  Hongtao Liu  <hongtao.liu@intel.com>
+
+	PR target/96243
+	* config/i386/i386-expand.c (ix86_expand_sse_cmp): Refine for
+	maskcmp.
+	(ix86_expand_mask_vec_cmp): Change prototype.
+	* config/i386/i386-protos.h (ix86_expand_mask_vec_cmp): Change prototype.
+	* config/i386/i386.c (ix86_print_operand): Remove operand
+	modifier 'I'.
+	* config/i386/sse.md
+	(*<avx512>_cmp<mode>3<mask_scalar_merge_name><round_saeonly_name>): Deleted.
+	(*<avx512>_cmp<mode>3<mask_scalar_merge_name>): Ditto.
+	(*<avx512>_ucmp<mode>3<mask_scalar_merge_name>): Ditto.
+	(*<avx512>_ucmp<mode>3<mask_scalar_merge_name>,
+	avx512f_maskcmp<mode>3): Ditto.
+
+2020-08-09  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* expmed.c (init_expmed_one_conv): Restore all->reg's mode.
+	(init_expmed_one_mode): Set all->reg to desired mode.
+
+2020-08-08  Peter Bergner  <bergner@linux.ibm.com>
+
+	PR target/96530
+	* config/rs6000/rs6000.c (rs6000_invalid_conversion): Use canonical
+	types for type comparisons.  Refactor code to simplify it.
+
+2020-08-08  Jakub Jelinek  <jakub@redhat.com>
+
+	PR fortran/93553
+	* tree-nested.c (convert_nonlocal_omp_clauses): For
+	OMP_CLAUSE_REDUCTION, OMP_CLAUSE_LASTPRIVATE and OMP_CLAUSE_LINEAR
+	save info->new_local_var_chain around walks of the clause gimple
+	sequences and declare_vars if needed into the sequence.
+
+2020-08-08  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/96424
+	* omp-expand.c: Include tree-eh.h.
+	(expand_omp_for_init_vars): Handle -fexceptions -fnon-call-exceptions
+	by forcing floating point comparison into a bool temporary.
+
+2020-08-07  Marc Glisse  <marc.glisse@inria.fr>
+
+	* generic-match-head.c (optimize_vectors_before_lowering_p): New
+	function.
+	* gimple-match-head.c (optimize_vectors_before_lowering_p):
+	Likewise.
+	* match.pd ((v ? w : 0) ? a : b, c1 ? c2 ? a : b : b): Use it.
+
+2020-08-07  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/96514
+	* tree-if-conv.c (if_convertible_bb_p): If the last stmt
+	is a call that is control-altering, fail.
+
+2020-08-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
+
+	* config/bpf/bpf.md: Remove trailing whitespaces.
+	* config/bpf/constraints.md: Likewise.
+	* config/bpf/predicates.md: Likewise.
+
+2020-08-07  Michael Meissner  <meissner@linux.ibm.com>
+
+	* config/rs6000/rs6000.md (bswaphi2_reg): Add ISA 3.1 support.
+	(bswapsi2_reg): Add ISA 3.1 support.
+	(bswapdi2): Rename bswapdi2_xxbrd to bswapdi2_brd.
+	(bswapdi2_brd,bswapdi2_xxbrd): Rename.  Add ISA 3.1 support.
+
+2020-08-07  Alan Modra  <amodra@gmail.com>
+
+	PR target/96493
+	* config/rs6000/predicates.md (current_file_function_operand): Don't
+	accept functions that differ in r2 usage.
+
+2020-08-06  Hans-Peter Nilsson  <hp@bitrange.com>
+
+	* config/mmix/mmix.md (MM): New mode_iterator.
+	("mov<mode>"): New expander to expand for all MM-modes.
+	("*movqi_expanded", "*movhi_expanded", "*movsi_expanded")
+	("*movsf_expanded", "*movdf_expanded"): Rename from the
+	corresponding mov<M> named pattern.  Add to the condition that
+	either operand must be a register_operand.
+	("*movdi_expanded"): Similar, but also allow STCO in the condition.
+
+2020-08-06  Richard Sandiford  <richard.sandiford@arm.com>
+
+	PR target/96191
+	* config/arm/arm.md (arm_stack_protect_test_insn): Zero out
+	operand 2 after use.
+	* config/arm/thumb1.md (thumb1_stack_protect_test_insn): Likewise.
+
+2020-08-06  Peter Bergner  <bergner@linux.ibm.com>
+
+	PR target/96446
+	* config/rs6000/mma.md (*movpxi): Add xxsetaccz generation.
+	Disable split for zero constant source operand.
+	(mma_xxsetaccz): Change to define_expand.  Call gen_movpxi.
+
+2020-08-06  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/96480
+	* tree-ssa-reassoc.c (suitable_cond_bb): Add TEST_SWAPPED_P argument.
+	If TEST_BB ends in cond and has one edge to *OTHER_BB and another
+	through an empty bb to that block too, if PHI args don't match, retry
+	them through the other path from TEST_BB.
+	(maybe_optimize_range_tests): Adjust callers.  Handle such LAST_BB
+	through inversion of the condition.
+
+2020-08-06  Jose E. Marchesi  <jose.marchesi@oracle.com>
+
+	* config/bpf/bpf-helpers.h (KERNEL_HELPER): Define.
+	(KERNEL_VERSION): Remove.
+	* config/bpf/bpf-helpers.def: Delete.
+	* config/bpf/bpf.c (bpf_handle_fndecl_attribute): New function.
+	(bpf_attribute_table): Define.
+	(bpf_helper_names): Delete.
+	(bpf_helper_code): Likewise.
+	(enum bpf_builtins): Adjust to new helpers mechanism.
+	(bpf_output_call): Likewise.
+	(bpf_init_builtins): Likewise.
+	(bpf_init_builtins): Likewise.
+	* doc/extend.texi (BPF Function Attributes): New section.
+	(BPF Kernel Helpers): Delete section.
+
+2020-08-06  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/96491
+	* tree-ssa-sink.c (sink_common_stores_to_bb): Avoid
+	sinking across abnormal edges.
+
+2020-08-06  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/96483
+	* tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
+	POLY_INT_CST.
+
+2020-08-06  Richard Biener  <rguenther@suse.de>
+
+	* graphite-isl-ast-to-gimple.c (ivs_params): Use hash_map instead
+	of std::map.
+	(ivs_params_clear): Adjust.
+	(gcc_expression_from_isl_ast_expr_id): Likewise.
+	(graphite_create_new_loop): Likewise.
+	(add_parameters_to_ivs_params): Likewise.
+
+2020-08-06  Roger Sayle  <roger@nextmovesoftware.com>
+	    Uroš Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/i386.md (MAXMIN_IMODE): No longer needed.
+	(<maxmin><mode>3):  Support SWI248 and general_operand for
+	second operand, when TARGET_CMOVE.
+	(<maxmin><mode>3_1 splitter): Optimize comparisons against
+	0, 1 and -1 to use "test" instead of "cmp".
+	(*<maxmin>di3_doubleword): Likewise, allow general_operand
+	and enable on TARGET_CMOVE.
+	(peephole2): Convert clearing a register after a flag setting
+	instruction into an xor followed by the original flag setter.
+
+2020-08-06  Gerald Pfeifer  <gerald@pfeifer.com>
+
+	* ipa-fnsummary.c (INCLUDE_VECTOR): Define.
+	Remove direct inclusion of <vector>.
+
+2020-08-06  Kewen Lin  <linkw@gcc.gnu.org>
+
+	* config/rs6000/rs6000.c (rs6000_adjust_vect_cost_per_loop): New
+	function.
+	(rs6000_finish_cost): Call rs6000_adjust_vect_cost_per_loop.
+	* tree-vect-loop.c (vect_estimate_min_profitable_iters): Add cost
+	modeling for vector with length.
+	(vect_rgroup_iv_might_wrap_p): New function, factored out from...
+	* tree-vect-loop-manip.c (vect_set_loop_controls_directly): ...this.
+	Update function comment.
+	* tree-vect-stmts.c (vect_gen_len): Update function comment.
+	* tree-vectorizer.h (vect_rgroup_iv_might_wrap_p): New declare.
+
+2020-08-06  Kewen Lin  <linkw@linux.ibm.com>
+
+	* tree-vectorizer.c (try_vectorize_loop_1): Skip the epilogue loops
+	for dbgcnt check.
+
+2020-08-05  Marc Glisse  <marc.glisse@inria.fr>
+
+	PR tree-optimization/95906
+	PR target/70314
+	* match.pd ((c ? a : b) op d, (c ? a : b) op (c ? d : e),
+	(v ? w : 0) ? a : b, c1 ? c2 ? a : b : b): New transformations.
+	(op (c ? a : b)): Update to match the new transformations.
+
+2020-08-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	PR target/96191
+	* config/aarch64/aarch64.md (stack_protect_test_<mode>): Set the
+	CC register directly, instead of a GPR.  Replace the original GPR
+	destination with an extra scratch register.  Zero out operand 3
+	after use.
+	(stack_protect_test): Update accordingly.
+
+2020-08-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64.md (load_pair_sw_<SX:mode><SX2:mode>)
+	(load_pair_dw_<DX:mode><DX2:mode>, load_pair_dw_tftf)
+	(store_pair_sw_<SX:mode><SX2:mode>)
+	(store_pair_dw_<DX:mode><DX2:mode>, store_pair_dw_tftf)
+	(*load_pair_extendsidi2_aarch64)
+	(*load_pair_zero_extendsidi2_aarch64): Use %z for the memory operand.
+	* config/aarch64/aarch64-simd.md (load_pair<DREG:mode><DREG2:mode>)
+	(vec_store_pair<DREG:mode><DREG2:mode>, load_pair<VQ:mode><VQ2:mode>)
+	(vec_store_pair<VQ:mode><VQ2:mode>): Likewise.
+
+2020-08-05  Richard Biener  <rguenther@suse.de>
+
+	* tree-ssa-loop-im.c (invariantness_dom_walker): Remove.
+	(invariantness_dom_walker::before_dom_children): Move to ...
+	(compute_invariantness): ... this function.
+	(move_computations): Inline ...
+	(tree_ssa_lim): ... here, share RPO order and avoid some
+	cfun references.
+	(analyze_memory_references): Remove sorting of location
+	lists, instead assert they are sorted already when checking.
+	(prev_flag_edges): Remove.
+	(execute_sm_if_changed): Pass down and adjust prev edge state.
+	(execute_sm_exit): Likewise.
+	(hoist_memory_references): Likewise.  Commit edge insertions
+	of each processed exit.
+	(store_motion_loop): Do not commit edge insertions on all
+	edges in the function.
+	(tree_ssa_lim_initialize): Do not call alloc_aux_for_edges.
+	(tree_ssa_lim_finalize): Do not call free_aux_for_edges.
+
+2020-08-05  Richard Biener  <rguenther@suse.de>
+
+	* genmatch.c (fail_label): New global.
+	(expr::gen_transform): Branch to fail_label instead of
+	returning.  Fix indent of call argument checking.
+	(dt_simplify::gen_1): Compute and emit fail_label, branch
+	to it instead of returning early.
+
+2020-08-05  Jakub Jelinek  <jakub@redhat.com>
+
+	* omp-expand.c (expand_omp_for): Don't disallow combined non-rectangular
+	loops.
+
+2020-08-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/96459
+	* omp-low.c (lower_omp_taskreg): Call lower_reduction_clauses even in
+	for host teams.
+
+2020-08-05  Jakub Jelinek  <jakub@redhat.com>
+
+	* omp-expand.c (expand_omp_for_init_counts): Remember
+	first_inner_iterations, factor and n1o from the number of iterations
+	computation in *fd.
+	(expand_omp_for_init_vars): Use more efficient logical iteration number
+	to actual iterator values computation even for non-rectangular loops
+	where number of loop iterations could not be computed at compile time.
+
+2020-08-05  2020-08-04  Carl Love  <cel@us.ibm.com>
+
+	* config/rs6000/altivec.h (vec_blendv, vec_permx): Add define.
+	* config/rs6000/altivec.md (UNSPEC_XXBLEND, UNSPEC_XXPERMX.): New
+	unspecs.
+	(VM3): New define_mode.
+	(VM3_char): New define_attr.
+	(xxblend_<mode> mode VM3): New define_insn.
+	(xxpermx): New define_expand.
+	(xxpermx_inst): New define_insn.
+	* config/rs6000/rs6000-builtin.def (VXXBLEND_V16QI, VXXBLEND_V8HI,
+	VXXBLEND_V4SI, VXXBLEND_V2DI, VXXBLEND_V4SF, VXXBLEND_V2DF): New
+	BU_P10V_3 definitions.
+	(XXBLEND): New BU_P10_OVERLOAD_3 definition.
+	(XXPERMX): New BU_P10_OVERLOAD_4 definition.
+	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
+	(P10_BUILTIN_VXXPERMX): Add if statement.
+	* config/rs6000/rs6000-call.c (P10_BUILTIN_VXXBLEND_V16QI,
+	P10_BUILTIN_VXXBLEND_V8HI, P10_BUILTIN_VXXBLEND_V4SI,
+	P10_BUILTIN_VXXBLEND_V2DI, P10_BUILTIN_VXXBLEND_V4SF,
+	P10_BUILTIN_VXXBLEND_V2DF, P10_BUILTIN_VXXPERMX): Define
+	overloaded arguments.
+	(rs6000_expand_quaternop_builtin): Add if case for CODE_FOR_xxpermx.
+	(builtin_quaternary_function_type): Add v16uqi_type and xxpermx_type
+	variables, add case statement for P10_BUILTIN_VXXPERMX.
+	(builtin_function_type): Add case statements for
+	P10_BUILTIN_VXXBLEND_V16QI, P10_BUILTIN_VXXBLEND_V8HI,
+	P10_BUILTIN_VXXBLEND_V4SI, P10_BUILTIN_VXXBLEND_V2DI.
+	* doc/extend.texi: Add documentation for vec_blendv and vec_permx.
+
+2020-08-05  2020-08-04  Carl Love  <cel@us.ibm.com>
+
+	* config/rs6000/altivec.h (vec_splati, vec_splatid, vec_splati_ins):
+	Add defines.
+	* config/rs6000/altivec.md (UNSPEC_XXSPLTIW, UNSPEC_XXSPLTID,
+	UNSPEC_XXSPLTI32DX): New.
+	(vxxspltiw_v4si, vxxspltiw_v4sf_inst, vxxspltidp_v2df_inst,
+	vxxsplti32dx_v4si_inst, vxxsplti32dx_v4sf_inst): New define_insn.
+	(vxxspltiw_v4sf, vxxspltidp_v2df, vxxsplti32dx_v4si,
+	vxxsplti32dx_v4sf.): New define_expands.
+	* config/rs6000/predicates.md (u1bit_cint_operand,
+	s32bit_cint_operand, c32bit_cint_operand): New predicates.
+	* config/rs6000/rs6000-builtin.def (VXXSPLTIW_V4SI, VXXSPLTIW_V4SF,
+	VXXSPLTID): New definitions.
+	(VXXSPLTI32DX_V4SI, VXXSPLTI32DX_V4SF): New BU_P10V_3
+	definitions.
+	(XXSPLTIW, XXSPLTID): New definitions.
+	(XXSPLTI32DX): Add definitions.
+	* config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_XXSPLTIW,
+	P10_BUILTIN_VEC_XXSPLTID, P10_BUILTIN_VEC_XXSPLTI32DX):
+	New definitions.
+	* config/rs6000/rs6000-protos.h (rs6000_constF32toI32): New extern
+	declaration.
+	* config/rs6000/rs6000.c (rs6000_constF32toI32): New function.
+	* doc/extend.texi: Add documentation for vec_splati,
+	vec_splatid, and vec_splati_ins.
+
+2020-08-05  2020-08-04  Carl Love  <cel@us.ibm.com>
+
+	* config/rs6000/altivec.h (vec_sldb, vec_srdb): New defines.
+	* config/rs6000/altivec.md (UNSPEC_SLDB, UNSPEC_SRDB): New.
+	(SLDB_lr): New attribute.
+	(VSHIFT_DBL_LR): New iterator.
+	(vs<SLDB_lr>db_<mode>): New define_insn.
+	* config/rs6000/rs6000-builtin.def (VSLDB_V16QI, VSLDB_V8HI,
+	VSLDB_V4SI, VSLDB_V2DI, VSRDB_V16QI, VSRDB_V8HI, VSRDB_V4SI,
+	VSRDB_V2DI): New BU_P10V_3 definitions.
+	(SLDB, SRDB): New BU_P10_OVERLOAD_3 definitions.
+	* config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_SLDB,
+	P10_BUILTIN_VEC_SRDB): New definitions.
+	(rs6000_expand_ternop_builtin) [CODE_FOR_vsldb_v16qi,
+	CODE_FOR_vsldb_v8hi, CODE_FOR_vsldb_v4si, CODE_FOR_vsldb_v2di,
+	CODE_FOR_vsrdb_v16qi, CODE_FOR_vsrdb_v8hi, CODE_FOR_vsrdb_v4si,
+	CODE_FOR_vsrdb_v2di]: Add clauses.
+	* doc/extend.texi: Add description for vec_sldb and vec_srdb.
+
+2020-08-05  2020-08-04 Carl Love  <cel@us.ibm.com>
+
+	* config/rs6000/altivec.h: Add define for vec_replace_elt and
+	vec_replace_unaligned.
+	* config/rs6000/vsx.md (UNSPEC_REPLACE_ELT, UNSPEC_REPLACE_UN): New
+	unspecs.
+	(REPLACE_ELT): New mode iterator.
+	(REPLACE_ELT_char, REPLACE_ELT_sh, REPLACE_ELT_max): New mode attributes.
+	(vreplace_un_<mode>, vreplace_elt_<mode>_inst): New.
+	* config/rs6000/rs6000-builtin.def (VREPLACE_ELT_V4SI,
+	VREPLACE_ELT_UV4SI, VREPLACE_ELT_V4SF, VREPLACE_ELT_UV2DI,
+	VREPLACE_ELT_V2DF, VREPLACE_UN_V4SI, VREPLACE_UN_UV4SI,
+	VREPLACE_UN_V4SF, VREPLACE_UN_V2DI, VREPLACE_UN_UV2DI,
+	VREPLACE_UN_V2DF, (REPLACE_ELT, REPLACE_UN, VREPLACE_ELT_V2DI): New builtin
+	entries.
+	* config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_REPLACE_ELT,
+	P10_BUILTIN_VEC_REPLACE_UN): New builtin argument definitions.
+	(rs6000_expand_quaternop_builtin): Add 3rd argument checks for
+	CODE_FOR_vreplace_elt_v4si, CODE_FOR_vreplace_elt_v4sf,
+	CODE_FOR_vreplace_un_v4si, CODE_FOR_vreplace_un_v4sf.
+	(builtin_function_type) [P10_BUILTIN_VREPLACE_ELT_UV4SI,
+	P10_BUILTIN_VREPLACE_ELT_UV2DI, P10_BUILTIN_VREPLACE_UN_UV4SI,
+	P10_BUILTIN_VREPLACE_UN_UV2DI]: New cases.
+	* doc/extend.texi: Add description for vec_replace_elt and
+	vec_replace_unaligned builtins.
+
+2020-08-05  2020-08-04  Carl Love  <cel@us.ibm.com>
+
+	* config/rs6000/altivec.h (vec_insertl, vec_inserth): New defines.
+	* config/rs6000/rs6000-builtin.def (VINSERTGPRBL, VINSERTGPRHL,
+	VINSERTGPRWL, VINSERTGPRDL, VINSERTVPRBL, VINSERTVPRHL, VINSERTVPRWL,
+	VINSERTGPRBR, VINSERTGPRHR, VINSERTGPRWR, VINSERTGPRDR, VINSERTVPRBR,
+	VINSERTVPRHR, VINSERTVPRWR): New builtins.
+	(INSERTL, INSERTH): New builtins.
+	* config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_INSERTL,
+	P10_BUILTIN_VEC_INSERTH): New overloaded definitions.
+	(P10_BUILTIN_VINSERTGPRBL, P10_BUILTIN_VINSERTGPRHL,
+	P10_BUILTIN_VINSERTGPRWL, P10_BUILTIN_VINSERTGPRDL,
+	P10_BUILTIN_VINSERTVPRBL, P10_BUILTIN_VINSERTVPRHL,
+	P10_BUILTIN_VINSERTVPRWL): Add case entries.
+	* config/rs6000/vsx.md (define_c_enum): Add UNSPEC_INSERTL,
+	UNSPEC_INSERTR.
+	(define_expand): Add vinsertvl_<mode>, vinsertvr_<mode>,
+	vinsertgl_<mode>, vinsertgr_<mode>, mode is VI2.
+	(define_ins): vinsertvl_internal_<mode>, vinsertvr_internal_<mode>,
+	vinsertgl_internal_<mode>, vinsertgr_internal_<mode>, mode VEC_I.
+	* doc/extend.texi: Add documentation for vec_insertl, vec_inserth.
+
+2020-08-05  2020-08-04  Carl Love  <cel@us.ibm.com>
+
+	* config/rs6000/altivec.md: (UNSPEC_EXTRACTL, UNSPEC_EXTRACTR)
+	(vextractl<mode>, vextractr<mode>)
+	(vextractl<mode>_internal, vextractr<mode>_internal for mode VI2)
+	(VI2): Move to ...
+	* config/rs6000/vsx.md:	(UNSPEC_EXTRACTL, UNSPEC_EXTRACTR)
+	(vextractl<mode>, vextractr<mode>)
+	(vextractl<mode>_internal, vextractr<mode>_internal for mode VI2)
+	(VI2):  ..here.
+	* doc/extend.texi: Update documentation for vec_extractl.
+	Replace builtin name vec_extractr with vec_extracth.  Update
+	description of vec_extracth.
+
+2020-08-04  Jim Wilson  <jimw@sifive.com>
+
+	* doc/invoke.texi (AArch64 Options): Delete duplicate
+	-mstack-protector-guard docs.
+
+2020-08-04  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* config/nvptx/nvptx.md (smulhi3_highpart, smulsi3_highpart)
+	(umulhi3_highpart, umulsi3_highpart): New instructions.
+
+2020-08-04  Andrew Stubbs  <ams@codesourcery.com>
+
+	* config/gcn/gcn-run.c (R_AMDGPU_NONE): Delete.
+	(R_AMDGPU_ABS32_LO): Delete.
+	(R_AMDGPU_ABS32_HI): Delete.
+	(R_AMDGPU_ABS64): Delete.
+	(R_AMDGPU_REL32): Delete.
+	(R_AMDGPU_REL64): Delete.
+	(R_AMDGPU_ABS32): Delete.
+	(R_AMDGPU_GOTPCREL): Delete.
+	(R_AMDGPU_GOTPCREL32_LO): Delete.
+	(R_AMDGPU_GOTPCREL32_HI): Delete.
+	(R_AMDGPU_REL32_LO): Delete.
+	(R_AMDGPU_REL32_HI): Delete.
+	(reserved): Delete.
+	(R_AMDGPU_RELATIVE64): Delete.
+
+2020-08-04  Omar Tahir  <omar.tahir@arm.com>
+
+	* config/arm/arm-cpus.in (armv8.1-m.main): Tune for Cortex-M55.
+
+2020-08-04  Hu Jiangping  <hujiangping@cn.fujitsu.com>
+
+	* config/aarch64/aarch64.c (aarch64_if_then_else_costs): Delete
+	redundant extra_cost variable.
+
+2020-08-04  Zhiheng Xie  <xiezhiheng@huawei.com>
+
+	* config/aarch64/aarch64-builtins.c (aarch64_call_properties):
+	Use FLOAT_MODE_P macro instead of enumerating all floating-point
+	modes and add global flag FLAG_AUTO_FP.
+
+2020-08-04  Jakub Jelinek  <jakub@redhat.com>
+
+	* doc/extend.texi (symver): Add @cindex for symver function attribute.
+
+2020-08-04  Marc Glisse  <marc.glisse@inria.fr>
+
+	PR tree-optimization/95433
+	* match.pd (X * C1 == C2): New transformation.
+
+2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+
+	* gimple-ssa-sprintf.c (get_int_range): Adjust for irange API.
+	(format_integer): Same.
+	(handle_printf_call): Same.
+
+2020-08-04  Andrew Stubbs  <ams@codesourcery.com>
+
+	* config/gcn/gcn.md ("<expander>ti3"): New.
+
+2020-08-04  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/88240
+	* tree-ssa-sccvn.h (vn_reference_s::punned): New flag.
+	* tree-ssa-sccvn.c (vn_reference_insert): Initialize punned.
+	(vn_reference_insert_pieces): Likewise.
+	(visit_reference_op_call): Likewise.
+	(visit_reference_op_load): Track whether a ref was punned.
+	* tree-ssa-pre.c (do_hoist_insertion): Refuse to perform hoist
+	insertion on punned floating point loads.
+
+2020-08-04  Sudakshina Das  <sudi.das@arm.com>
+
+	* config/aarch64/aarch64.c (aarch64_gen_store_pair): Add case
+	for E_V4SImode.
+	(aarch64_gen_load_pair): Likewise.
+	(aarch64_copy_one_block_and_progress_pointers): Handle 256 bit copy.
+	(aarch64_expand_cpymem): Expand copy_limit to 256bits where
+	appropriate.
+
+2020-08-04  Andrea Corallo  <andrea.corallo@arm.com>
+
+	* config/aarch64/aarch64.md (aarch64_fjcvtzs): Add missing
+	clobber.
+	* doc/sourcebuild.texi (aarch64_fjcvtzs_hw) Document new
+	target supports option.
+
+2020-08-04  Tom de Vries  <tdevries@suse.de>
+
+	PR target/96428
+	* config/nvptx/nvptx.c (nvptx_gen_shuffle): Handle V2SI/V2DI.
+
+2020-08-04  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/96426
+	* tree-vect-generic.c (expand_vector_conversion): Replace .VEC_CONVERT
+	call with GIMPLE_NOP if there is no lhs.
+
+2020-08-04  Jakub Jelinek  <jakub@redhat.com>
+
+	PR debug/96354
+	* gimple-fold.c (maybe_canonicalize_mem_ref_addr): Add IS_DEBUG
+	argument.  Return false instead of gcc_unreachable if it is true and
+	get_addr_base_and_unit_offset returns NULL.
+	(fold_stmt_1) <case GIMPLE_DEBUG>: Adjust caller.
+
+2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+
+	* vr-values.c (simplify_using_ranges::vrp_evaluate_conditional):
+	Call is_gimple_min_invariant dropped from previous patch.
+
+2020-08-04  Jakub Jelinek  <jakub@redhat.com>
+
+	* omp-expand.c (expand_omp_for_init_counts): For triangular loops
+	compute number of iterations at runtime more efficiently.
+	(expand_omp_for_init_vars): Adjust immediate dominators.
+	(extract_omp_for_update_vars): Likewise.
+
+2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+
+	* vr-values.c (simplify_using_ranges::two_valued_val_range_p):
+	Use irange API.
+
+2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+
+	* vr-values.c (simplify_conversion_using_ranges): Convert to irange API.
+
+2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+
+	* vr-values.c (test_for_singularity): Use irange API.
+	(simplify_using_ranges::simplify_cond_using_ranges_1): Do not
+	special case VR_RANGE.
+
+2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+
+	* vr-values.c (simplify_using_ranges::vrp_evaluate_conditional): Adjust
+	for irange API.
+
+2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+
+	* vr-values.c (simplify_using_ranges::op_with_boolean_value_range_p): Adjust
+	for irange API.
+
+2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+
+	* tree-ssanames.c (get_range_info): Use irange instead of value_range.
+	* tree-ssanames.h (get_range_info): Same.
+
+2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+
+	* fold-const.c (expr_not_equal_to): Adjust for irange API.
+
+2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+
+	* builtins.c (determine_block_size): Remove ad-hoc range canonicalization.
+
+2020-08-04  Xionghu Luo  <luoxhu@linux.ibm.com>
+
+	PR rtl-optimization/71309
+	* dse.c (find_shift_sequence): Use subreg of shifted from high part
+	register to avoid loading from address.
+
+2020-08-03  Jonathan Wakely  <jwakely@redhat.com>
+
+	* doc/cpp.texi (Variadic Macros): Use the exact ... token in
+	code examples.
+
+2020-08-03  Nathan Sidwell  <nathan@acm.org>
+
+	* doc/invoke.texi: Refer to c++20
+
+2020-08-03  Julian Brown  <julian@codesourcery.com>
+	    Thomas Schwinge  <thomas@codesourcery.com>
+
+	* gimplify.c (gimplify_omp_target_update): Allow GOMP_MAP_TO_PSET
+	without a preceding data-movement mapping.
+
+2020-08-03  Iain Sandoe  <iain@sandoe.co.uk>
+
+	* config/darwin.h (ASM_DECLARE_FUNCTION_NAME): UNDEF before
+	use.
+	(DEF_MIN_OSX_VERSION): Only define if there's no existing
+	def.
+
+2020-08-03  Iain Sandoe  <iain@sandoe.co.uk>
+
+	* config/darwin.c (IN_TARGET_CODE): Remove.
+	(darwin_mergeable_constant_section): Handle poly-int machine modes.
+	(machopic_select_rtx_section): Likewise.
+
+2020-08-03  Aldy Hernandez  <aldyh@redhat.com>
+
+	PR tree-optimization/96430
+	* range-op.cc (operator_tests): Do not shift by 31 on targets with
+	integer's smaller than 32 bits.
+
+2020-08-03  Martin Jambor  <mjambor@suse.cz>
+
+	* hsa-brig-format.h: Moved to brig/brigfrontend.
+	* hsa-brig.c: Removed.
+	* hsa-builtins.def: Likewise.
+	* hsa-common.c: Likewise.
+	* hsa-common.h: Likewise.
+	* hsa-dump.c: Likewise.
+	* hsa-gen.c: Likewise.
+	* hsa-regalloc.c: Likewise.
+	* ipa-hsa.c: Likewise.
+	* omp-grid.c: Likewise.
+	* omp-grid.h: Likewise.
+	* Makefile.in (BUILTINS_DEF): Remove hsa-builtins.def.
+	(OBJS): Remove hsa-common.o, hsa-gen.o, hsa-regalloc.o, hsa-brig.o,
+	hsa-dump.o, ipa-hsa.c and omp-grid.o.
+	(GTFILES): Removed hsa-common.c and omp-expand.c.
+	* builtins.def: Remove processing of hsa-builtins.def.
+	(DEF_HSA_BUILTIN): Remove.
+	* common.opt (flag_disable_hsa): Remove.
+	(-Whsa): Ignore.
+	* config.in (ENABLE_HSA): Removed.
+	* configure.ac: Removed handling configuration for hsa offloading.
+	(ENABLE_HSA): Removed.
+	* configure: Regenerated.
+	* doc/install.texi (--enable-offload-targets): Remove hsa from the
+	example.
+	(--with-hsa-runtime): Reword to reference any HSA run-time, not
+	specifically HSA offloading.
+	* doc/invoke.texi (Option Summary): Remove -Whsa.
+	(Warning Options): Likewise.
+	(Optimize Options): Remove hsa-gen-debug-stores.
+	* doc/passes.texi (Regular IPA passes): Remove section on IPA HSA
+	pass.
+	* gimple-low.c (lower_stmt): Remove GIMPLE_OMP_GRID_BODY case.
+	* gimple-pretty-print.c (dump_gimple_omp_for): Likewise.
+	(dump_gimple_omp_block): Likewise.
+	(pp_gimple_stmt_1): Likewise.
+	* gimple-walk.c (walk_gimple_stmt): Likewise.
+	* gimple.c (gimple_build_omp_grid_body): Removed function.
+	(gimple_copy): Remove GIMPLE_OMP_GRID_BODY case.
+	* gimple.def (GIMPLE_OMP_GRID_BODY): Removed.
+	* gimple.h (gf_mask): Removed GF_OMP_PARALLEL_GRID_PHONY,
+	OMP_FOR_KIND_GRID_LOOP, GF_OMP_FOR_GRID_PHONY,
+	GF_OMP_FOR_GRID_INTRA_GROUP, GF_OMP_FOR_GRID_GROUP_ITER and
+	GF_OMP_TEAMS_GRID_PHONY.  Renumbered GF_OMP_FOR_KIND_SIMD and
+	GF_OMP_TEAMS_HOST.
+	(gimple_build_omp_grid_body): Removed declaration.
+	(gimple_has_substatements): Remove GIMPLE_OMP_GRID_BODY case.
+	(gimple_omp_for_grid_phony): Removed.
+	(gimple_omp_for_set_grid_phony): Likewise.
+	(gimple_omp_for_grid_intra_group): Likewise.
+	(gimple_omp_for_grid_intra_group): Likewise.
+	(gimple_omp_for_grid_group_iter): Likewise.
+	(gimple_omp_for_set_grid_group_iter): Likewise.
+	(gimple_omp_parallel_grid_phony): Likewise.
+	(gimple_omp_parallel_set_grid_phony): Likewise.
+	(gimple_omp_teams_grid_phony): Likewise.
+	(gimple_omp_teams_set_grid_phony): Likewise.
+	(CASE_GIMPLE_OMP): Remove GIMPLE_OMP_GRID_BODY case.
+	* lto-section-in.c (lto_section_name): Removed hsa.
+	* lto-streamer.h (lto_section_type): Removed LTO_section_ipa_hsa.
+	* lto-wrapper.c (compile_images_for_offload_targets): Remove special
+	handling of hsa.
+	* omp-expand.c: Do not include hsa-common.h and gt-omp-expand.h.
+	(parallel_needs_hsa_kernel_p): Removed.
+	(grid_launch_attributes_trees): Likewise.
+	(grid_launch_attributes_trees): Likewise.
+	(grid_create_kernel_launch_attr_types): Likewise.
+	(grid_insert_store_range_dim): Likewise.
+	(grid_get_kernel_launch_attributes): Likewise.
+	(get_target_arguments): Remove code passing HSA grid sizes.
+	(grid_expand_omp_for_loop): Remove.
+	(grid_arg_decl_map): Likewise.
+	(grid_remap_kernel_arg_accesses): Likewise.
+	(grid_expand_target_grid_body): Likewise.
+	(expand_omp): Remove call to grid_expand_target_grid_body.
+	(omp_make_gimple_edges): Remove GIMPLE_OMP_GRID_BODY case.
+	* omp-general.c: Do not include hsa-common.h.
+	(omp_maybe_offloaded): Do not check for HSA offloading.
+	(omp_context_selector_matches): Likewise.
+	* omp-low.c: Do not include hsa-common.h and omp-grid.h.
+	(build_outer_var_ref): Remove handling of GIMPLE_OMP_GRID_BODY.
+	(scan_sharing_clauses): Remove handling of OMP_CLAUSE__GRIDDIM_.
+	(scan_omp_parallel): Remove handling of the phoney variant.
+	(check_omp_nesting_restrictions): Remove handling of
+	GIMPLE_OMP_GRID_BODY and GF_OMP_FOR_KIND_GRID_LOOP.
+	(scan_omp_1_stmt): Remove handling of GIMPLE_OMP_GRID_BODY.
+	(lower_omp_for_lastprivate): Remove handling of gridified loops.
+	(lower_omp_for): Remove phony loop handling.
+	(lower_omp_taskreg): Remove phony construct handling.
+	(lower_omp_teams): Likewise.
+	(lower_omp_grid_body): Removed.
+	(lower_omp_1): Remove GIMPLE_OMP_GRID_BODY case.
+	(execute_lower_omp): Do not call omp_grid_gridify_all_targets.
+	* opts.c (common_handle_option): Do not handle hsa when processing
+	OPT_foffload_.
+	* params.opt (hsa-gen-debug-stores): Remove.
+	* passes.def: Remove pass_ipa_hsa and pass_gen_hsail.
+	* timevar.def: Remove TV_IPA_HSA.
+	* toplev.c: Do not include hsa-common.h.
+	(compile_file): Do not call hsa_output_brig.
+	* tree-core.h (enum omp_clause_code): Remove OMP_CLAUSE__GRIDDIM_.
+	(tree_omp_clause): Remove union field dimension.
+	* tree-nested.c (convert_nonlocal_omp_clauses): Remove the
+	OMP_CLAUSE__GRIDDIM_ case.
+	(convert_local_omp_clauses): Likewise.
+	* tree-pass.h (make_pass_gen_hsail): Remove declaration.
+	(make_pass_ipa_hsa): Likewise.
+	* tree-pretty-print.c (dump_omp_clause): Remove GIMPLE_OMP_GRID_BODY
+	case.
+	* tree.c (omp_clause_num_ops): Remove the element corresponding to
+	OMP_CLAUSE__GRIDDIM_.
+	(omp_clause_code_name): Likewise.
+	(walk_tree_1): Remove GIMPLE_OMP_GRID_BODY case.
+	* tree.h (OMP_CLAUSE__GRIDDIM__DIMENSION): Remove.
+	(OMP_CLAUSE__GRIDDIM__SIZE): Likewise.
+	(OMP_CLAUSE__GRIDDIM__GROUP): Likewise.
+
+2020-08-03  Bu Le  <bule1@huawei.com>
+
+	* config/aarch64/aarch64-sve.md (sub<mode>3): Add support for
+	unpacked vectors.
+
+2020-08-03  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+	* config/msp430/msp430.h (ASM_SPEC): Don't pass on "-md" option.
+
+2020-08-03  Yunde Zhong  <zhongyunde@huawei.com>
+
+	PR rtl-optimization/95696
+	* regrename.c (regrename_analyze): New param include_all_block_p
+	with default value TRUE.  If set to false, avoid disrupting SMS
+	schedule.
+	* regrename.h (regrename_analyze): Adjust prototype.
+
+2020-08-03  Wei Wentao  <weiwt.fnst@cn.fujitsu.com>
+
+	* doc/tm.texi.in (VECTOR_STORE_FLAG_VALUE): Fix a typo.
+	* doc/tm.texi: Regenerate.
+
+2020-08-03  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* doc/invoke.texi: Add missing comma after octeontx2f95mm entry.
+
+2020-08-03  Qian jianhua  <qianjh@cn.fujitsu.com>
+
+	* config/aarch64/aarch64-cores.def (a64fx): New core.
+	* config/aarch64/aarch64-tune.md: Regenerated.
+	* config/aarch64/aarch64.c (a64fx_prefetch_tune, a64fx_tunings): New.
+	* doc/invoke.texi: Add a64fx to the list.
+
+2020-08-03  Roger Sayle  <roger@nextmovesoftware.com>
+
+	PR rtl-optimization/61494
+	* simplify-rtx.c (simplify_binary_operation_1) [MINUS]: Don't
+	simplify x - 0.0 with -fsignaling-nans.
+
+2020-08-03  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* genmatch.c (decision_tree::gen): Emit stub functions for
+	tree code operand counts that have no simplifications.
+	(main): Correct comment typo.
+
+2020-08-03  Jonathan Wakely  <jwakely@redhat.com>
+
+	* gimple-ssa-sprintf.c: Fix typos in comments.
+
+2020-08-03  Tamar Christina  <tamar.christina@arm.com>
+
+	* config/aarch64/driver-aarch64.c (readline): Check return value fgets.
+
+2020-08-03  Richard Biener  <rguenther@suse.de>
+
+	* doc/match-and-simplify.texi: Amend accordingly.
+
+2020-08-03  Richard Biener  <rguenther@suse.de>
+
+	* genmatch.c (parser::gimple): New.
+	(parser::parser): Initialize gimple flag member.
+	(parser::parse_expr): Error on ! operator modifier when
+	not targeting GIMPLE.
+	(main): Pass down gimple flag to parser ctor.
+
+2020-08-03  Aldy Hernandez  <aldyh@redhat.com>
+
+	* Makefile.in (GTFILES): Move value-range.h up.
+	* gengtype-lex.l: Set yylval to handle GTY markers on templates.
+	* ipa-cp.c (initialize_node_lattices): Call value_range
+	constructor.
+	(ipcp_propagate_stage): Use in-place new so value_range construct
+	is called.
+	* ipa-fnsummary.c (evaluate_conditions_for_known_args): Use std
+	vec instead of GCC's vec<>.
+	(evaluate_properties_for_edge): Adjust for std vec.
+	(ipa_fn_summary_t::duplicate): Same.
+	(estimate_ipcp_clone_size_and_time): Same.
+	* ipa-prop.c (ipa_get_value_range): Use in-place new for
+	value_range.
+	* ipa-prop.h (struct GTY): Remove class keyword for m_vr.
+	* range-op.cc (empty_range_check): Rename to...
+	(empty_range_varying): ...this and adjust for varying.
+	(undefined_shift_range_check): Adjust for irange.
+	(range_operator::wi_fold): Same.
+	(range_operator::fold_range): Adjust for irange.  Special case
+	single pairs for performance.
+	(range_operator::op1_range): Adjust for irange.
+	(range_operator::op2_range): Same.
+	(value_range_from_overflowed_bounds): Same.
+	(value_range_with_overflow): Same.
+	(create_possibly_reversed_range): Same.
+	(range_true): Same.
+	(range_false): Same.
+	(range_true_and_false): Same.
+	(get_bool_state):  Adjust for irange and tweak for performance.
+	(operator_equal::fold_range): Adjust for irange.
+	(operator_equal::op1_range): Same.
+	(operator_equal::op2_range): Same.
+	(operator_not_equal::fold_range): Same.
+	(operator_not_equal::op1_range): Same.
+	(operator_not_equal::op2_range): Same.
+	(build_lt): Same.
+	(build_le): Same.
+	(build_gt): Same.
+	(build_ge): Same.
+	(operator_lt::fold_range): Same.
+	(operator_lt::op1_range): Same.
+	(operator_lt::op2_range): Same.
+	(operator_le::fold_range): Same.
+	(operator_le::op1_range): Same.
+	(operator_le::op2_range): Same.
+	(operator_gt::fold_range): Same.
+	(operator_gt::op1_range): Same.
+	(operator_gt::op2_range): Same.
+	(operator_ge::fold_range): Same.
+	(operator_ge::op1_range): Same.
+	(operator_ge::op2_range): Same.
+	(operator_plus::wi_fold): Same.
+	(operator_plus::op1_range): Same.
+	(operator_plus::op2_range): Same.
+	(operator_minus::wi_fold): Same.
+	(operator_minus::op1_range): Same.
+	(operator_minus::op2_range): Same.
+	(operator_min::wi_fold): Same.
+	(operator_max::wi_fold): Same.
+	(cross_product_operator::wi_cross_product): Same.
+	(operator_mult::op1_range): New.
+	(operator_mult::op2_range): New.
+	(operator_mult::wi_fold): Adjust for irange.
+	(operator_div::wi_fold): Same.
+	(operator_exact_divide::op1_range): Same.
+	(operator_lshift::fold_range): Same.
+	(operator_lshift::wi_fold): Same.
+	(operator_lshift::op1_range): New.
+	(operator_rshift::op1_range): New.
+	(operator_rshift::fold_range): Adjust for irange.
+	(operator_rshift::wi_fold): Same.
+	(operator_cast::truncating_cast_p): Abstract out from
+	operator_cast::fold_range.
+	(operator_cast::fold_range): Adjust for irange and tweak for
+	performance.
+	(operator_cast::inside_domain_p): Abstract out from fold_range.
+	(operator_cast::fold_pair): Same.
+	(operator_cast::op1_range): Use abstracted methods above.  Adjust
+	for irange and tweak for performance.
+	(operator_logical_and::fold_range): Adjust for irange.
+	(operator_logical_and::op1_range): Same.
+	(operator_logical_and::op2_range): Same.
+	(unsigned_singleton_p): New.
+	(operator_bitwise_and::remove_impossible_ranges): New.
+	(operator_bitwise_and::fold_range): New.
+	(wi_optimize_and_or):  Adjust for irange.
+	(operator_bitwise_and::wi_fold): Same.
+	(set_nonzero_range_from_mask): New.
+	(operator_bitwise_and::simple_op1_range_solver): New.
+	(operator_bitwise_and::op1_range): Adjust for irange.
+	(operator_bitwise_and::op2_range): Same.
+	(operator_logical_or::fold_range): Same.
+	(operator_logical_or::op1_range): Same.
+	(operator_logical_or::op2_range): Same.
+	(operator_bitwise_or::wi_fold): Same.
+	(operator_bitwise_or::op1_range): Same.
+	(operator_bitwise_or::op2_range): Same.
+	(operator_bitwise_xor::wi_fold): Same.
+	(operator_bitwise_xor::op1_range): New.
+	(operator_bitwise_xor::op2_range): New.
+	(operator_trunc_mod::wi_fold):  Adjust for irange.
+	(operator_logical_not::fold_range): Same.
+	(operator_logical_not::op1_range): Same.
+	(operator_bitwise_not::fold_range): Same.
+	(operator_bitwise_not::op1_range): Same.
+	(operator_cst::fold_range): Same.
+	(operator_identity::fold_range): Same.
+	(operator_identity::op1_range): Same.
+	(class operator_unknown): New.
+	(operator_unknown::fold_range): New.
+	(class operator_abs): Adjust for irange.
+	(operator_abs::wi_fold): Same.
+	(operator_abs::op1_range): Same.
+	(operator_absu::wi_fold): Same.
+	(class operator_negate): Same.
+	(operator_negate::fold_range): Same.
+	(operator_negate::op1_range): Same.
+	(operator_addr_expr::fold_range): Same.
+	(operator_addr_expr::op1_range): Same.
+	(pointer_plus_operator::wi_fold): Same.
+	(pointer_min_max_operator::wi_fold): Same.
+	(pointer_and_operator::wi_fold): Same.
+	(pointer_or_operator::op1_range): New.
+	(pointer_or_operator::op2_range): New.
+	(pointer_or_operator::wi_fold):  Adjust for irange.
+	(integral_table::integral_table): Add entries for IMAGPART_EXPR
+	and POINTER_DIFF_EXPR.
+	(range_cast):  Adjust for irange.
+	(build_range3): New.
+	(range3_tests): New.
+	(widest_irange_tests): New.
+	(multi_precision_range_tests): New.
+	(operator_tests): New.
+	(range_tests): New.
+	* range-op.h (class range_operator): Adjust for irange.
+	(range_cast): Same.
+	* tree-vrp.c (range_fold_binary_symbolics_p): Adjust for irange and
+	tweak for performance.
+	(range_fold_binary_expr): Same.
+	(masked_increment): Change to extern.
+	* tree-vrp.h (masked_increment): New.
+	* tree.c (cache_wide_int_in_type_cache): New function abstracted
+	out from wide_int_to_tree_1.
+	(wide_int_to_tree_1): Cache 0, 1, and MAX for pointers.
+	* value-range-equiv.cc (value_range_equiv::deep_copy): Use kind
+	method.
+	(value_range_equiv::move): Same.
+	(value_range_equiv::check): Adjust for irange.
+	(value_range_equiv::intersect): Same.
+	(value_range_equiv::union_): Same.
+	(value_range_equiv::dump): Same.
+	* value-range.cc (irange::operator=): Same.
+	(irange::maybe_anti_range): New.
+	(irange::copy_legacy_range): New.
+	(irange::set_undefined): Adjust for irange.
+	(irange::swap_out_of_order_endpoints): Abstract out from set().
+	(irange::set_varying): Adjust for irange.
+	(irange::irange_set): New.
+	(irange::irange_set_anti_range): New.
+	(irange::set): Adjust for irange.
+	(value_range::set_nonzero): Move to header file.
+	(value_range::set_zero): Move to header file.
+	(value_range::check): Rename to...
+	(irange::verify_range): ...this.
+	(value_range::num_pairs): Rename to...
+	(irange::legacy_num_pairs): ...this, and adjust for irange.
+	(value_range::lower_bound): Rename to...
+	(irange::legacy_lower_bound): ...this, and adjust for irange.
+	(value_range::upper_bound): Rename to...
+	(irange::legacy_upper_bound): ...this, and adjust for irange.
+	(value_range::equal_p): Rename to...
+	(irange::legacy_equal_p): ...this.
+	(value_range::operator==): Move to header file.
+	(irange::equal_p): New.
+	(irange::symbolic_p): Adjust for irange.
+	(irange::constant_p): Same.
+	(irange::singleton_p): Same.
+	(irange::value_inside_range): Same.
+	(irange::may_contain_p): Same.
+	(irange::contains_p): Same.
+	(irange::normalize_addresses): Same.
+	(irange::normalize_symbolics): Same.
+	(irange::legacy_intersect): Same.
+	(irange::legacy_union): Same.
+	(irange::union_): Same.
+	(irange::intersect): Same.
+	(irange::irange_union): New.
+	(irange::irange_intersect): New.
+	(subtract_one): New.
+	(irange::invert): Adjust for irange.
+	(dump_bound_with_infinite_markers): New.
+	(irange::dump): Adjust for irange.
+	(debug): Add irange versions.
+	(range_has_numeric_bounds_p): Adjust for irange.
+	(vrp_val_max): Move to header file.
+	(vrp_val_min): Move to header file.
+	(DEFINE_INT_RANGE_GC_STUBS): New.
+	(DEFINE_INT_RANGE_INSTANCE): New.
+	* value-range.h (class irange): New.
+	(class int_range): New.
+	(class value_range): Rename to a instantiation of int_range.
+	(irange::legacy_mode_p): New.
+	(value_range::value_range): Remove.
+	(irange::kind): New.
+	(irange::num_pairs): Adjust for irange.
+	(irange::type): Adjust for irange.
+	(irange::tree_lower_bound): New.
+	(irange::tree_upper_bound): New.
+	(irange::type): Adjust for irange.
+	(irange::min): Same.
+	(irange::max): Same.
+	(irange::varying_p): Same.
+	(irange::undefined_p): Same.
+	(irange::zero_p): Same.
+	(irange::nonzero_p): Same.
+	(irange::supports_type_p): Same.
+	(range_includes_zero_p): Same.
+	(gt_ggc_mx): New.
+	(gt_pch_nx): New.
+	(irange::irange): New.
+	(int_range::int_range): New.
+	(int_range::operator=): New.
+	(irange::set): Moved from value-range.cc and adjusted for irange.
+	(irange::set_undefined): Same.
+	(irange::set_varying): Same.
+	(irange::operator==): Same.
+	(irange::lower_bound): Same.
+	(irange::upper_bound): Same.
+	(irange::union_): Same.
+	(irange::intersect): Same.
+	(irange::set_nonzero): Same.
+	(irange::set_zero): Same.
+	(irange::normalize_min_max): New.
+	(vrp_val_max): Move from value-range.cc.
+	(vrp_val_min): Same.
+	* vr-values.c (vr_values::get_lattice_entry): Call value_range
+	constructor.
+
+2020-08-02  Sergei Trofimovich  <siarheit@google.com>
+
+	PR bootstrap/96404
+	* var-tracking.c (vt_find_locations): Fully initialize
+	all 'in_pending' bits.
+
+2020-08-01  Jan Hubicka  <jh@suse.cz>
+
+	* symtab.c (symtab_node::verify_base): Verify order.
+	(symtab_node::verify_symtab_nodes): Verify order.
+
+2020-08-01  Jan Hubicka  <jh@suse.cz>
+
+	* predict.c (estimate_bb_frequencies): Cap recursive calls by 90%.
+
+2020-08-01  Jojo R  <jiejie_rong@c-sky.com>
+
+	* config/csky/csky_opts.h (float_abi_type): New.
+	* config/csky/csky.h (TARGET_SOFT_FLOAT): New.
+	(TARGET_HARD_FLOAT): New.
+	(TARGET_HARD_FLOAT_ABI): New.
+	(OPTION_DEFAULT_SPECS): Use mfloat-abi.
+	* config/csky/csky.opt (mfloat-abi): New.
+	* doc/invoke.texi (C-SKY Options): Document -mfloat-abi=.
+
+2020-08-01  Cooper Qu  <cooper.qu@linux.alibaba.com>
+
+	* config/csky/t-csky-linux: Delete big endian CPUs' multilib.
+
+2020-07-31  Roger Sayle  <roger@nextmovesoftware.com>
+	    Tom de Vries  <tdevries@suse.de>
+
+	PR target/90928
+	* config/nvptx/nvptx.c (nvptx_truly_noop_truncation): Implement.
+	(TARGET_TRULY_NOOP_TRUNCATION): Define.
+
+2020-07-31  Richard Biener  <rguenther@suse.de>
+
+	PR debug/96383
+	* langhooks-def.h (lhd_finalize_early_debug): Declare.
+	(LANG_HOOKS_FINALIZE_EARLY_DEBUG): Define.
+	(LANG_HOOKS_INITIALIZER): Amend.
+	* langhooks.c: Include cgraph.h and debug.h.
+	(lhd_finalize_early_debug): Default implementation from
+	former code in finalize_compilation_unit.
+	* langhooks.h (lang_hooks::finalize_early_debug): Add.
+	* cgraphunit.c (symbol_table::finalize_compilation_unit):
+	Call the finalize_early_debug langhook.
+
+2020-07-31  Richard Biener  <rguenther@suse.de>
+
+	* genmatch.c (expr::force_leaf): Add and initialize.
+	(expr::gen_transform): Honor force_leaf by passing
+	NULL as sequence argument to maybe_push_res_to_seq.
+	(parser::parse_expr): Allow ! marker on result expression
+	operations.
+	* doc/match-and-simplify.texi: Amend.
+
+2020-07-31  Kewen Lin  <linkw@linux.ibm.com>
+
+	* tree-vect-loop.c (vect_get_known_peeling_cost): Don't consider branch
+	taken costs for prologue and epilogue if they don't exist.
+	(vect_estimate_min_profitable_iters): Likewise.
+
+2020-07-31  Martin Liska  <mliska@suse.cz>
+
+	* cgraph.h: Remove leading empty lines.
+	* cgraphunit.c (enum cgraph_order_sort_kind): Remove
+	ORDER_UNDEFINED.
+	(struct cgraph_order_sort): Add constructors.
+	(cgraph_order_sort::process): New.
+	(cgraph_order_cmp): New.
+	(output_in_order): Simplify and push nodes to vector.
+
+2020-07-31  Richard Biener  <rguenther@suse.de>
+
+	PR middle-end/96369
+	* fold-const.c (fold_range_test): Special-case constant
+	LHS for short-circuiting operations.
+
+2020-07-31  Martin Liska  <mliska@suse.cz>
+
+	* gcov-io.h (GCOV_PREALLOCATED_KVP): New.
+
+2020-07-31  Zhiheng Xie  <xiezhiheng@huawei.com>
+
+	* config/aarch64/aarch64-builtins.c (aarch64_general_add_builtin):
+	Add new argument ATTRS.
+	(aarch64_call_properties): New function.
+	(aarch64_modifies_global_state_p): Likewise.
+	(aarch64_reads_global_state_p): Likewise.
+	(aarch64_could_trap_p): Likewise.
+	(aarch64_add_attribute): Likewise.
+	(aarch64_get_attributes): Likewise.
+	(aarch64_init_simd_builtins): Add attributes for each built-in function.
+
+2020-07-31  Richard Biener  <rguenther@suse.de>
+
+	PR debug/78288
+	* var-tracking.c (vt_find_locations): Use
+	rev_post_order_and_mark_dfs_back_seme and separately iterate
+	over toplevel SCCs.
+
+2020-07-31  Richard Biener  <rguenther@suse.de>
+
+	* cfganal.h (rev_post_order_and_mark_dfs_back_seme): Adjust
+	prototype.
+	* cfganal.c (rpoamdbs_bb_data): New struct with pre BB data.
+	(tag_header): New helper.
+	(cmp_edge_dest_pre): Likewise.
+	(rev_post_order_and_mark_dfs_back_seme): Compute SCCs,
+	find SCC exits and perform a DFS walk with extra edges to
+	compute a RPO with adjacent SCC members when requesting an
+	iteration optimized order and populate the toplevel SCC array.
+	* tree-ssa-sccvn.c (do_rpo_vn): Remove ad-hoc computation
+	of max_rpo and fill it in from SCC extent info instead.
+
+2020-07-30  Will Schmidt  <will_schmidt@vnet.ibm.com>
+
+	* config/rs6000/altivec.h (vec_test_lsbb_all_ones): New define.
+	(vec_test_lsbb_all_zeros): New define.
+	* config/rs6000/rs6000-builtin.def (BU_P10_VSX_1): New built-in
+	handling macro.
+	(XVTLSBB_ZEROS, XVTLSBB_ONES): New builtin defines.
+	(xvtlsbb_all_zeros, xvtlsbb_all_ones): New builtin overloads.
+	* config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_XVTLSBB_ZEROS,
+	P10_BUILTIN_VEC_XVTLSBB_ONES): New altivec_builtin_types entries.
+	* config/rs6000/rs6000.md (UNSPEC_XVTLSBB):  New unspec.
+	* config/rs6000/vsx.md (*xvtlsbb_internal): New instruction define.
+	(xvtlsbbo, xvtlsbbz): New instruction expands.
+
+2020-07-30  Cooper Qu  <cooper.qu@linux.alibaba.com>
+
+	* config/riscv/riscv-opts.h (stack_protector_guard): New enum.
+	* config/riscv/riscv.c (riscv_option_override): Handle
+	the new options.
+	* config/riscv/riscv.md (stack_protect_set): New pattern to handle
+	flexible stack protector guard settings.
+	(stack_protect_set_<mode>): Ditto.
+	(stack_protect_test): Ditto.
+	(stack_protect_test_<mode>): Ditto.
+	* config/riscv/riscv.opt (mstack-protector-guard=,
+	mstack-protector-guard-reg=, mstack-protector-guard-offset=): New
+	options.
+	* doc/invoke.texi (Option Summary) [RISC-V Options]:
+	Add -mstack-protector-guard=, -mstack-protector-guard-reg=, and
+	-mstack-protector-guard-offset=.
+	(RISC-V Options): Ditto.
+
+2020-07-30  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR bootstrap/96202
+	* configure: Regenerated.
+
+2020-07-30  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/96370
+	* tree-ssa-reassoc.c (rewrite_expr_tree): Add operation
+	code parameter and use it instead of picking it up from
+	the stmt that is being rewritten.
+	(reassociate_bb): Pass down the operation code.
+
+2020-07-30  Roger Sayle  <roger@nextmovesoftware.com>
+	    Tom de Vries  <tdevries@suse.de>
+
+	* config/nvptx/nvptx.md (nvptx_vector_index_operand): New predicate.
+	(VECELEM): New mode attribute for a vector's uppercase element mode.
+	(Vecelem): New mode attribute for a vector's lowercase element mode.
+	(*vec_set<mode>_0, *vec_set<mode>_1, *vec_set<mode>_2)
+	(*vec_set<mode>_3): New instructions.
+	(vec_set<mode>): New expander to generate one of the above insns.
+	(vec_extract<mode><Vecelem>): New instruction.
+
+2020-07-30  Martin Liska  <mliska@suse.cz>
+
+	PR target/95435
+	* config/i386/x86-tune-costs.h: Use libcall for large sizes for
+	-m32. Start using libcall from 128+ bytes.
+
+2020-07-30  Martin Liska  <mliska@suse.cz>
+
+	* config/i386/x86-tune-costs.h: Change code formatting.
+
+2020-07-29  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* config/nvptx/nvptx.md (recip<mode>2): New instruction.
+
+2020-07-29  Fangrui Song  <maskray@google.com>
+
+	PR debug/95096
+	* opts.c (common_handle_option): Don't make -gsplit-dwarf imply -g.
+	* doc/invoke.texi (-gsplit-dwarf): Update documentation.
+
+2020-07-29  Joe Ramsay  <joe.ramsay@arm.com>
+
+	* config/arm/arm-protos.h (arm_coproc_mem_operand_no_writeback):
+	Declare prototype.
+	(arm_mve_mode_and_operands_type_check): Declare prototype.
+	* config/arm/arm.c (arm_coproc_mem_operand): Refactor to use
+	_arm_coproc_mem_operand.
+	(arm_coproc_mem_operand_wb): New function to cover full, limited
+	and no writeback.
+	(arm_coproc_mem_operand_no_writeback): New constraint for memory
+	operand with no writeback.
+	(arm_print_operand): Extend 'E' specifier for memory operand
+	that does not support writeback.
+	(arm_mve_mode_and_operands_type_check): New constraint check for
+	MVE memory operands.
+	* config/arm/constraints.md: Add Uj constraint for VFP vldr.16
+	and vstr.16.
+	* config/arm/vfp.md (*mov_load_vfp_hf16): New pattern for
+	vldr.16.
+	(*mov_store_vfp_hf16): New pattern for vstr.16.
+	(*mov<mode>_vfp_<mode>16): Remove MVE moves.
+
+2020-07-29  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/96349
+	* tree-ssa-loop-split.c (stmt_semi_invariant_p_1): When the
+	condition runs into a loop PHI with an abnormal entry value give up.
+
+2020-07-29  Richard Biener  <rguenther@suse.de>
+
+	* tree-vectorizer.c (vectorize_loops): Reset the SCEV
+	cache if we removed any SIMD UID SSA defs.
+	* gimple-loop-interchange.cc (pass_linterchange::execute):
+	Reset the scev cache if we interchanged a loop.
+
+2020-07-29  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95679
+	* tree-ssa-propagate.h
+	(substitute_and_fold_engine::propagate_into_phi_args): Return
+	whether anything changed.
+	* tree-ssa-propagate.c
+	(substitute_and_fold_engine::propagate_into_phi_args): Likewise.
+	(substitute_and_fold_dom_walker::before_dom_children): Update
+	something_changed.
+
+2020-07-29  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+
+	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
+	Ensure that loop variable npeel_tmp advances in each iteration.
+
+2020-07-29  Hans-Peter Nilsson  <hp@bitrange.com>
+
+	* config/mmix/mmix.h (NO_FUNCTION_CSE): Define to 1.
+
+2020-07-29  Hans-Peter Nilsson  <hp@bitrange.com>
+
+	* config/mmix/mmix.h (ASM_OUTPUT_EXTERNAL): Define to
+	default_elf_asm_output_external.
+
+2020-07-28  Sergei Trofimovich  <siarheit@google.com>
+
+	PR ipa/96291
+	* ipa-cp.c (has_undead_caller_from_outside_scc_p): Consider
+	unoptimized callers as undead.
+
+2020-07-28  Roger Sayle  <roger@nextmovesoftware.com>
+	    Richard Biener  <rguenther@suse.de>
+
+	* match.pd (popcount(x)&1 -> parity(x)): New simplification.
+	(parity(~x) -> parity(x)): New simplification.
+	(parity(x)^parity(y) -> parity(x^y)): New simplification.
+	(parity(x&1) -> x&1): New simplification.
+	(popcount(x) -> x>>C): New simplification.
+
+2020-07-28  Roger Sayle  <roger@nextmovesoftware.com>
+	    Tom de Vries  <tdevries@suse.de>
+
+	* config/nvptx/nvptx.md (extendqihi2): New instruction.
+	(ashl<mode>3, ashr<mode>3, lshr<mode>3): Support HImode.
+
+2020-07-28  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/96335
+	* calls.c (maybe_warn_rdwr_sizes): Add FNDECL and FNTYPE arguments,
+	instead of trying to rediscover them in the body.
+	(initialize_argument_information): Adjust caller.
+
+2020-07-28  Kewen Lin  <linkw@linux.ibm.com>
+
+	* tree-vect-loop.c (vect_get_known_peeling_cost): Factor out some code
+	to determine peel_iters_epilogue to...
+	(vect_get_peel_iters_epilogue): ...this new function.
+	(vect_estimate_min_profitable_iters): Refactor cost calculation on
+	peel_iters_prologue and peel_iters_epilogue.
+
+2020-07-27  Martin Sebor  <msebor@redhat.com>
+
+	PR tree-optimization/84079
+	* gimple-array-bounds.cc (array_bounds_checker::check_addr_expr):
+	Only allow just-past-the-end references for the most significant
+	array bound.
+
+2020-07-27  Hu Jiangping  <hujiangping@cn.fujitsu.com>
+
+	PR driver/96247
+	* opts.c (check_alignment_argument): Set the -falign-Name
+	on/off flag on and set the -falign-Name string value null,
+	when the command-line specified argument is zero.
+
+2020-07-27  Martin Liska  <mliska@suse.cz>
+
+	PR tree-optimization/96058
+	* expr.c (string_constant): Build string_constant only
+	for a type that has same precision as char_type_node
+	and is an integral type.
+
+2020-07-27  Richard Biener  <rguenther@suse.de>
+
+	* var-tracking.c (variable_tracking_main_1): Remove call
+	to mark_dfs_back_edges.
+
+2020-07-27  Martin Liska  <mliska@suse.cz>
+
+	PR tree-optimization/96128
+	* tree-vect-generic.c (expand_vector_comparison): Do not expand
+	vector comparison with VEC_COND_EXPR.
+
+2020-07-27  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR bootstrap/96203
+	* common.opt: Add -fcf-protection=check.
+	* flag-types.h (cf_protection_level): Add CF_CHECK.
+	* lto-wrapper.c (merge_and_complain): Issue an error for
+	mismatching -fcf-protection values with -fcf-protection=check.
+	Otherwise, merge -fcf-protection values.
+	* doc/invoke.texi: Document -fcf-protection=check.
+
+2020-07-27  Martin Liska  <mliska@suse.cz>
+
+	PR lto/45375
+	* symbol-summary.h: Call vec_safe_reserve before grow is called
+	in order to grow to a reasonable size.
+	* vec.h (vec_safe_reserve): Add missing function for vl_ptr
+	type.
+
+2020-07-26  Hans-Peter Nilsson  <hp@bitrange.com>
+
+	* configure.ac (out-of-tree linker .hidden support): Don't turn off
+	for mmix-knuth-mmixware.
+	* configure: Regenerate.
+
+2020-07-26  Aaron Sawdey  <acsawdey@linux.ibm.com>
+
+	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+	Set the default value for -mblock-ops-unaligned-vsx.
+	* config/rs6000/rs6000.opt: Add -mblock-ops-unaligned-vsx.
+	* doc/invoke.texi: Document -mblock-ops-unaligned-vsx.
+
+2020-07-25  Hans-Peter Nilsson  <hp@bitrange.com>
+
+	* config/mmix/mmix.c (TARGET_ASM_OUTPUT_IDENT): Override the default
+	with default_asm_output_ident_directive.
+
+2020-07-25  Andrew Stubbs  <ams@codesourcery.com>
+
+	* config/gcn/gcn.c (gcn_scalar_mode_supported_p): New function.
+	(TARGET_SCALAR_MODE_SUPPORTED_P): New define.
+
+2020-07-24  David Edelsohn  <dje.gcc@gmail.com>
+	    Clement Chigot  <clement.chigot@atos.net>
+
+	* config.gcc (powerpc-ibm-aix7.1): Use t-aix64 and biarch64 for
+	cpu_is_64bit.
+	* config/rs6000/aix71.h (ASM_SPEC): Remove aix64 option.
+	(ASM_SPEC32): New.
+	(ASM_SPEC64): New.
+	(ASM_CPU_SPEC): Remove vsx and altivec options.
+	(CPP_SPEC_COMMON): Rename from CPP_SPEC.
+	(CPP_SPEC32): New.
+	(CPP_SPEC64): New.
+	(CPLUSPLUS_CPP_SPEC): Rename to CPLUSPLUS_CPP_SPEC_COMMON..
+	(TARGET_DEFAULT): Use 64 bit mask if BIARCH.
+	(LIB_SPEC_COMMON): Rename from LIB_SPEC.
+	(LIB_SPEC32): New.
+	(LIB_SPEC64): New.
+	(LINK_SPEC_COMMON): Rename from LINK_SPEC.
+	(LINK_SPEC32): New.
+	(LINK_SPEC64): New.
+	(STARTFILE_SPEC): Add 64 bit version of crtcxa and crtdbase.
+	(ASM_SPEC): Define 32 and 64 bit alternatives using DEFAULT_ARCH64_P.
+	(CPP_SPEC): Same.
+	(CPLUSPLUS_CPP_SPEC): Same.
+	(LIB_SPEC): Same.
+	(LINK_SPEC): Same.
+	(SUBTARGET_EXTRA_SPECS): Add new 32/64 specs.
+	* config/rs6000/aix72.h (TARGET_DEFAULT): Use 64 bit mask if BIARCH.
+	* config/rs6000/defaultaix64.h: Delete.
+
+2020-07-24  Segher Boessenkool  <segher@kernel.crashing.org>
+
+	* config/rs6000/rs6000.opt: Delete -mpower10.
+
+2020-07-24  Alexandre Oliva  <oliva@adacore.com>
+
+	* config/i386/intelmic-mkoffload.c
+	(generate_target_descr_file): Use dumppfx for save_temps
+	files.  Pass -dumpbase et al down to the compiler.
+	(generate_target_offloadend_file): Likewise.
+	(generate_host_descr_file): Likewise.
+	(prepare_target_image): Likewise.  Move out_obj_filename
+	setting...
+	(main): ... here.  Detect -dumpbase, set dumppfx too.
+
+2020-07-24  Alexandre Oliva  <oliva@adacore.com>
+
+	PR driver/96230
+	* gcc.c (process_command): Adjust and document conditions to
+	reset dumpbase_ext.
+
+2020-07-24  Matthias Klose  <doko@ubuntu.com>
+
+	* config/aarch64/aarch64.c (+aarch64_offload_options,
+	TARGET_OFFLOAD_OPTIONS): New.
+
+2020-07-24  Uroš Bizjak  <ubizjak@gmail.com>
+
+	PR target/95750
+	* config/i386/sync.md (mmem_thread_fence): Emit mfence_sse2 for -Os.
+
+2020-07-23  Roger Sayle  <roger@nextmovesoftware.com>
+
+	PR rtl-optimization/96298
+	* simplify-rtx.c (simplify_binary_operation_1) [XOR]: Xor doesn't
+	distribute over xor, so (a^b)^(c^b) is not the same as (a^c)^b.
+
+2020-07-23  Dong JianQiang  <dongjianqiang2@huawei.com>
+
+	PR gcov-profile/96267
+	* gcov-io.c (gcov_open): enable if IN_GCOV_TOOL.
+
+2020-07-23  Kewen Lin  <linkw@linux.ibm.com>
+
+	* config/rs6000/rs6000.c (adjust_vectorization_cost): Renamed to ...
+	(rs6000_adjust_vect_cost_per_stmt): ... here.
+	(rs6000_add_stmt_cost): Rename adjust_vectorization_cost to
+	rs6000_adjust_vect_cost_per_stmt.
+
+2020-07-23  Kewen Lin  <linkw@linux.ibm.com>
+
+	* tree-ssa-loop-ivopts.c (get_mem_type_for_internal_fn): Handle
+	IFN_LEN_LOAD and IFN_LEN_STORE.
+	(get_alias_ptr_type_for_ptr_address): Likewise.
+
+2020-07-23  Kito Cheng  <kito.cheng@sifive.com>
+
+	PR target/96260
+	* asan.c (asan_shadow_offset_set_p): New.
+	* asan.h (asan_shadow_offset_set_p): Ditto.
+	* toplev.c (process_options): Allow -fsanitize=kernel-address
+	even TARGET_ASAN_SHADOW_OFFSET not implemented, only check when
+	asan stack protection is enabled.
+
+2020-07-22  Peter Bergner  <bergner@linux.ibm.com>
+
+	PR target/96236
+	* config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Handle
+	little-endian memory ordering.
+
+2020-07-22  Nathan Sidwell  <nathan@acm.org>
+
+	* dumpfile.c (parse_dump_option): Deal with filenames
+	containing '-'
+
+2020-07-22  Nathan Sidwell  <nathan@acm.org>
+
+	* incpath.c (add_path): Avoid multiple strlen calls.
+
+2020-07-22  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+	* expmed.c (expand_sdiv_pow2): Check return value from emit_store_flag
+	is not NULL_RTX before use.
+
+2020-07-22  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+	* expr.c (convert_modes): Allow a constant integer to be converted to
+	any scalar int mode.
+
+2020-07-22  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+
+	* config/aarch64/aarch64-ldpstp.md: Add two peepholes for adjusted vector
+	V2SI, V2SF, V2DI, V2DF load pair and store pair modes.
+	* config/aarch64/aarch64-protos.h (aarch64_gen_adjusted_ldpstp):
+	Change mode parameter to machine_mode.
+	(aarch64_operands_adjust_ok_for_ldpstp): Change mode parameter to
+	machine_mode.
+	* config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp):
+	Change mode parameter to machine_mode.
+	(aarch64_gen_adjusted_ldpstp): Change mode parameter to machine_mode.
+	* config/aarch64/iterators.md (VP_2E): New iterator for 2 element vectors.
+
+2020-07-22  Wei Wentao  <weiwt.fnst@cn.fujitsu.com>
+
+	* doc/languages.texi: Fix “then”/“than” typo.
+
+2020-07-21  Sunil K Pandey  <skpgkp2@gmail.com>
+
+	PR target/95237
+	* config/i386/i386-protos.h (ix86_local_alignment): Add
+	another function parameter may_lower alignment. Default is
+	false.
+	* config/i386/i386.c (ix86_lower_local_decl_alignment): New
+	function.
+	(ix86_local_alignment): Amend ix86_local_alignment to accept
+	another parameter may_lower. If may_lower is true, new align
+	may be lower than incoming alignment. If may_lower is false,
+	new align will be greater or equal to incoming alignment.
+	(TARGET_LOWER_LOCAL_DECL_ALIGNMENT): Define.
+	* doc/tm.texi: Regenerate.
+	* doc/tm.texi.in (TARGET_LOWER_LOCAL_DECL_ALIGNMENT): New
+	hook.
+	* target.def (lower_local_decl_alignment): New hook.
+
+2020-07-21  Uroš Bizjak  <ubizjak@gmail.com>
+
+	PR target/95750
+	* config/i386/sync.md (mfence_sse2): Enable for
+	TARGET_64BIT and TARGET_SSE2.
+	(mfence_nosse): Always enable.
+
+2020-07-21  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+	* config/msp430/msp430-protos.h (msp430_do_not_relax_short_jumps):
+	Remove.
+	* config/msp430/msp430.c (msp430_do_not_relax_short_jumps): Likewise.
+	* config/msp430/msp430.md (cbranchhi4_real): Remove special case for
+	msp430_do_not_relax_short_jumps.
+
+2020-07-21  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+	* config/msp430/msp430.md: New "extendqipsi2" define_insn.
+
+2020-07-21  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+	* config/msp430/msp430.h (NO_FUNCTION_CSE): Set to true at -O2 and
+	above.
+
+2020-07-21  Xionghu Luo  <luoxhu@linux.ibm.com>
+
+	PR rtl-optimization/89310
+	* config/rs6000/rs6000.md (movsf_from_si2): New define_insn_and_split.
+
+2020-07-20  Hans-Peter Nilsson  <hp@bitrange.com>
+
+	* config/mmix/mmix.c (mmix_expand_prologue): Calculate the total
+	allocated size and set current_function_static_stack_size, if
+	flag_stack_usage_info.
+
+2020-07-20  Sergei Trofimovich  <siarheit@google.com>
+
+	PR target/96190
+	* config/sparc/linux.h (ENDFILE_SPEC): Use GNU_USER_TARGET_ENDFILE_SPEC
+	to get crtendS.o for !no-pie mode.
+	* config/sparc/linux64.h (ENDFILE_SPEC): Ditto.
+
+2020-07-20  Yang Yang  <yangyang305@huawei.com>
+
+	* tree-vect-stmts.c (vectorizable_simd_clone_call): Add
+	VIEW_CONVERT_EXPRs if the arguments types and return type
+	of simd clone function are distinct with the vectype of stmt.
+
+2020-07-20  Uroš Bizjak  <ubizjak@gmail.com>
+
+	PR target/95750
+	* config/i386/i386.h (TARGET_AVOID_MFENCE):
+	Rename from TARGET_USE_XCHG_FOR_ATOMIC_STORE.
+	* config/i386/sync.md (mfence_sse2): Disable for TARGET_AVOID_MFENCE.
+	(mfence_nosse): Enable also for TARGET_AVOID_MFENCE. Emit stack
+	referred memory in word_mode.
+	(mem_thread_fence): Do not generate mfence_sse2 pattern when
+	TARGET_AVOID_MFENCE is true.
+	(atomic_store<mode>): Update for rename.
+	* config/i386/x86-tune.def (X86_TUNE_AVOID_MFENCE):
+	Rename from X86_TUNE_USE_XCHG_FOR_ATOMIC_STORE.
+
+2020-07-20  Martin Sebor  <msebor@redhat.com>
+
+	PR middle-end/95189
+	PR middle-end/95886
+	* builtins.c (inline_expand_builtin_string_cmp): Rename...
+	(inline_expand_builtin_bytecmp): ...to this.
+	(builtin_memcpy_read_str): Don't expect data to be nul-terminated.
+	(expand_builtin_memory_copy_args): Handle object representations
+	with embedded nul bytes.
+	(expand_builtin_memcmp): Same.
+	(expand_builtin_strcmp): Adjust call to naming change.
+	(expand_builtin_strncmp): Same.
+	* expr.c (string_constant): Create empty strings with nonzero size.
+	* fold-const.c (c_getstr): Rename locals and update comments.
+	* tree.c (build_string): Accept null pointer argument.
+	(build_string_literal): Same.
+	* tree.h (build_string): Provide a default.
+	(build_string_literal): Same.
+
+2020-07-20  Richard Biener  <rguenther@suse.de>
+
+	* cfganal.c (rev_post_order_and_mark_dfs_back_seme): Remove
+	write-only post array.
+
+2020-07-20  Jakub Jelinek  <jakub@redhat.com>
+
+	PR libstdc++/93121
+	* gimple-fold.c (fold_const_aggregate_ref_1): For COMPONENT_REF
+	of a bitfield not aligned on byte boundaries try to
+	fold_ctor_reference DECL_BIT_FIELD_REPRESENTATIVE if any and
+	adjust it depending on endianity.
+
+2020-07-20  Jakub Jelinek  <jakub@redhat.com>
+
+	PR libstdc++/93121
+	* fold-const.c (native_encode_initializer): Handle bit-fields.
+
+2020-07-20  Kewen Lin  <linkw@linux.ibm.com>
+
+	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+	Set param_vect_partial_vector_usage to 0 explicitly.
+	* doc/invoke.texi (vect-partial-vector-usage): Document new option.
+	* optabs-query.c (get_len_load_store_mode): New function.
+	* optabs-query.h (get_len_load_store_mode): New declare.
+	* params.opt (vect-partial-vector-usage): New.
+	* tree-vect-loop-manip.c (vect_set_loop_controls_directly): Add the
+	handlings for vectorization using length-based partial vectors, call
+	vect_gen_len for length generation, and rename some variables with
+	items instead of scalars.
+	(vect_set_loop_condition_partial_vectors): Add the handlings for
+	vectorization using length-based partial vectors.
+	(vect_do_peeling): Allow remaining eiters less than epilogue vf for
+	LOOP_VINFO_USING_PARTIAL_VECTORS_P.
+	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Init
+	epil_using_partial_vectors_p.
+	(_loop_vec_info::~_loop_vec_info): Call release_vec_loop_controls
+	for lengths destruction.
+	(vect_verify_loop_lens): New function.
+	(vect_analyze_loop): Add handlings for epilogue of loop when it's
+	marked to use vectorization using partial vectors.
+	(vect_analyze_loop_2): Add the check to allow only one vectorization
+	approach using partial vectorization at the same time.  Check param
+	vect-partial-vector-usage for partial vectors decision.  Mark
+	LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P if the epilogue is
+	considerable to use partial vectors.  Call release_vec_loop_controls
+	for lengths destruction.
+	(vect_estimate_min_profitable_iters): Adjust for loop vectorization
+	using length-based partial vectors.
+	(vect_record_loop_mask): Init factor to 1 for vectorization using
+	mask-based partial vectors.
+	(vect_record_loop_len): New function.
+	(vect_get_loop_len): Likewise.
+	* tree-vect-stmts.c (check_load_store_for_partial_vectors): Add
+	checks for vectorization using length-based partial vectors.  Factor
+	some code to lambda function get_valid_nvectors.
+	(vectorizable_store): Add handlings when using length-based partial
+	vectors.
+	(vectorizable_load): Likewise.
+	(vect_gen_len): New function.
+	* tree-vectorizer.h (struct rgroup_controls): Add field factor
+	mainly for length-based partial vectors.
+	(vec_loop_lens): New typedef.
+	(_loop_vec_info): Add lens and epil_using_partial_vectors_p.
+	(LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P): New macro.
+	(LOOP_VINFO_LENS): Likewise.
+	(LOOP_VINFO_FULLY_WITH_LENGTH_P): Likewise.
+	(vect_record_loop_len): New declare.
+	(vect_get_loop_len): Likewise.
+	(vect_gen_len): Likewise.
+
+2020-07-20  Hans-Peter Nilsson  <hp@bitrange.com>
+
+	* config/mmix/mmix.c (mmix_option_override): Reinstate default
+	integer-emitting targetm.asm_out pseudos when dumping detailed
+	assembly-code.
+	(mmix_assemble_integer): Update comment.
+
+2020-07-19  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/95973
+	PR target/96238
+	* config/i386/cpuid.h: Add include guard.
+	(__cpuidex): New.
+
+2020-07-18  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/95620
+	* config/i386/x86-64.h (ASM_OUTPUT_ALIGNED_DECL_LOCAL): New.
+
+2020-07-18  Peter Bergner  <bergner@linux.ibm.com>
+
+	PR target/92488
+	* config/rs6000/dfp.md (trunctdsd2): New define_insn.
+	* config/rs6000/rs6000.md (define_attr "isa"): Add p9.
+	(define_attr "enabled"): Handle p9.
+
+2020-07-17  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* function.c (assign_parm_setup_block): Use the macro
+	TRULY_NOOP_TRUNCATION_MODES_P instead of calling
+	targetm.truly_noop_truncation directly.
+
+2020-07-17  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/96186
+	PR target/88713
+	* config/i386/sse.md (VF_AVX512VL_VF1_128_256): Renamed to ...
+	(VF1_AVX512ER_128_256): This.  Drop DF vector modes.
+	(rsqrt<mode>2): Replace VF_AVX512VL_VF1_128_256 with
+	VF1_AVX512ER_128_256.
+
+2020-07-17  Tamar Christina  <tamar.christina@arm.com>
+
+	* doc/sourcebuild.texi (dg-set-compiler-env-var,
+	dg-set-target-env-var): Document.
+
+2020-07-17  Tamar Christina  <tamar.christina@arm.com>
+
+	* config/arm/driver-arm.c (host_detect_local_cpu): Add GCC_CPUINFO.
+
+2020-07-17  Tamar Christina  <tamar.christina@arm.com>
+
+	* config/aarch64/driver-aarch64.c (host_detect_local_cpu):
+	Add GCC_CPUINFO.
+
+2020-07-17  Tamar Christina  <tamar.christina@arm.com>
+
+	* config/aarch64/driver-aarch64.c (INCLUDE_SET): New.
+	(parse_field): Use std::string.
+	(split_words, readline, find_field): New.
+	(host_detect_local_cpu): Fix truncation issues.
+
+2020-07-17  Andrew Stubbs  <ams@codesourcery.com>
+
+	* config/gcn/mkoffload.c (EM_AMDGPU): Undefine before defining.
+	(ELFOSABI_AMDGPU_HSA): Likewise.
+	(ELFABIVERSION_AMDGPU_HSA): Likewise.
+	(EF_AMDGPU_MACH_AMDGCN_GFX803): Likewise.
+	(EF_AMDGPU_MACH_AMDGCN_GFX900): Likewise.
+	(EF_AMDGPU_MACH_AMDGCN_GFX906): Likewise.
+	(reserved): Delete.
+
+2020-07-17  Andrew Pinski  <apinksi@marvell.com>
+	    Dmitrij Pochepko  <dmitrij.pochepko@bell-sw.com>
+
+	PR target/93720
+	* config/aarch64/aarch64.c (aarch64_evpc_ins): New function.
+	(aarch64_expand_vec_perm_const_1): Call it.
+	* config/aarch64/aarch64-simd.md (aarch64_simd_vec_copy_lane): Make
+	public, and add a "@" prefix.
+
+2020-07-17  Andrew Pinski  <apinksi@marvell.com>
+	    Dmitrij Pochepko  <dmitrij.pochepko@bell-sw.com>
+
+	PR target/82199
+	* config/aarch64/aarch64.c (aarch64_evpc_reencode): New function.
+	(aarch64_expand_vec_perm_const_1): Call it.
+
+2020-07-17  Zhiheng Xie  <xiezhiheng@huawei.com>
+
+	* config/aarch64/aarch64-builtins.c (enum aarch64_type_qualifiers):
+	Add new field flags.
+	(VAR1): Add new field FLAG in macro.
+	(VAR2): Likewise.
+	(VAR3): Likewise.
+	(VAR4): Likewise.
+	(VAR5): Likewise.
+	(VAR6): Likewise.
+	(VAR7): Likewise.
+	(VAR8): Likewise.
+	(VAR9): Likewise.
+	(VAR10): Likewise.
+	(VAR11): Likewise.
+	(VAR12): Likewise.
+	(VAR13): Likewise.
+	(VAR14): Likewise.
+	(VAR15): Likewise.
+	(VAR16): Likewise.
+	(aarch64_general_fold_builtin): Likewise.
+	(aarch64_general_gimple_fold_builtin): Likewise.
+	* config/aarch64/aarch64-simd-builtins.def: Add default flag for
+	each built-in function.
+	* config/aarch64/geniterators.sh: Add new field in BUILTIN macro.
+
+2020-07-17  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+	PR target/96127
+	* config/s390/s390.c (s390_expand_insv): Invoke the movstrict
+	expanders to generate the pattern.
+	* config/s390/s390.md ("*movstricthi", "*movstrictqi"): Remove the
+	'*' to have callable expanders.
+
+2020-07-16  Hans-Peter Nilsson  <hp@axis.com>
+	    Segher Boessenkool  <segher@kernel.crashing.org>
+
+	PR target/93372
+	* combine.c (is_just_move): Take an rtx_insn* as argument.  Use
+	single_set on it.
+
+2020-07-16  Uroš Bizjak  <ubizjak@gmail.com>
+
+	PR target/96189
+	* config/i386/sync.md
+	(peephole2 to remove unneded compare after CMPXCHG):
+	New pattern, also handle XOR zeroing and load of -1 by OR.
+
+2020-07-16  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+
+	* config/i386/i386.c (ix86_compute_frame_layout): Minor tweak.
+	(ix86_adjust_stack_and_probe): Delete.
+	(ix86_adjust_stack_and_probe_stack_clash): Rename to above and add
+	PROTECTION_AREA parameter.  If it is true, probe PROBE_INTERVAL plus
+	a small dope beyond SIZE bytes.
+	(ix86_emit_probe_stack_range): Use local variable.
+	(ix86_expand_prologue): Adjust calls to ix86_adjust_stack_and_probe
+	and tidy up the stack checking code.
+	* explow.c (get_stack_check_protect): Fix head comment.
+	(anti_adjust_stack_and_probe_stack_clash): Likewise.
+	(allocate_dynamic_stack_space): Add comment.
+	* tree-nested.c (lookup_field_for_decl): Set the DECL_IGNORED_P and
+	TREE_NO_WARNING but not TREE_ADDRESSABLE flags on the field.
+
+2020-07-16  Andrew Stubbs  <ams@codesourcery.com>
+
+	* config/gcn/mkoffload.c: Include simple-object.h and elf.h.
+	(EM_AMDGPU): New macro.
+	(ELFOSABI_AMDGPU_HSA): New macro.
+	(ELFABIVERSION_AMDGPU_HSA): New macro.
+	(EF_AMDGPU_MACH_AMDGCN_GFX803): New macro.
+	(EF_AMDGPU_MACH_AMDGCN_GFX900): New macro.
+	(EF_AMDGPU_MACH_AMDGCN_GFX906): New macro.
+	(R_AMDGPU_NONE): New macro.
+	(R_AMDGPU_ABS32_LO): New macro.
+	(R_AMDGPU_ABS32_HI): New macro.
+	(R_AMDGPU_ABS64): New macro.
+	(R_AMDGPU_REL32): New macro.
+	(R_AMDGPU_REL64): New macro.
+	(R_AMDGPU_ABS32): New macro.
+	(R_AMDGPU_GOTPCREL): New macro.
+	(R_AMDGPU_GOTPCREL32_LO): New macro.
+	(R_AMDGPU_GOTPCREL32_HI): New macro.
+	(R_AMDGPU_REL32_LO): New macro.
+	(R_AMDGPU_REL32_HI): New macro.
+	(reserved): New macro.
+	(R_AMDGPU_RELATIVE64): New macro.
+	(gcn_s1_name): Delete global variable.
+	(gcn_s2_name): Delete global variable.
+	(gcn_o_name): Delete global variable.
+	(gcn_cfile_name): Delete global variable.
+	(files_to_cleanup): New global variable.
+	(offload_abi): New global variable.
+	(tool_cleanup): Use files_to_cleanup, not explicit list.
+	(copy_early_debug_info): New function.
+	(main): New local variables gcn_s1_name, gcn_s2_name, gcn_o_name,
+	gcn_cfile_name.
+	Create files_to_cleanup obstack.
+	Recognize -march options.
+	Copy early debug info from input .o files.
+
+2020-07-16  Andrea Corallo  <andrea.corallo@arm.com>
+
+	* Makefile.in (TAGS): Remove 'params.def'.
+
+2020-07-16  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* target.def (TARGET_TRULY_NOOP_TRUNCATION): Clarify that
+	targets that return false, indicating SUBREGs shouldn't be
+	used, also need to provide a trunc?i?i2 optab that performs this
+	truncation.
+	* doc/tm.texi: Regenerate.
+
+2020-07-15  Uroš Bizjak  <ubizjak@gmail.com>
+
+	PR target/96189
+	* config/i386/sync.md
+	(peephole2 to remove unneded compare after CMPXCHG): New pattern.
+
+2020-07-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR libgomp/96198
+	* omp-general.h (struct omp_for_data): Rename min_inner_iterations
+	member to first_inner_iterations, adjust comment.
+	* omp-general.c (omp_extract_for_data): Adjust for the above change.
+	Always use n1first and n2first to compute it, rather than depending
+	on single_nonrect_cond_code.  Similarly, always compute factor
+	as (m2 - m1) * outer_step / inner_step rather than sometimes m1 - m2
+	depending on single_nonrect_cond_code.
+	* omp-expand.c (expand_omp_for_init_vars): Rename min_inner_iterations
+	to first_inner_iterations and min_inner_iterationsd to
+	first_inner_iterationsd.
+
+2020-07-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/96174
+	* config/i386/avx512fintrin.h (_mm512_cmpeq_pd_mask,
+	_mm512_mask_cmpeq_pd_mask, _mm512_cmplt_pd_mask,
+	_mm512_mask_cmplt_pd_mask, _mm512_cmple_pd_mask,
+	_mm512_mask_cmple_pd_mask, _mm512_cmpunord_pd_mask,
+	_mm512_mask_cmpunord_pd_mask, _mm512_cmpneq_pd_mask,
+	_mm512_mask_cmpneq_pd_mask, _mm512_cmpnlt_pd_mask,
+	_mm512_mask_cmpnlt_pd_mask, _mm512_cmpnle_pd_mask,
+	_mm512_mask_cmpnle_pd_mask, _mm512_cmpord_pd_mask,
+	_mm512_mask_cmpord_pd_mask, _mm512_cmpeq_ps_mask,
+	_mm512_mask_cmpeq_ps_mask, _mm512_cmplt_ps_mask,
+	_mm512_mask_cmplt_ps_mask, _mm512_cmple_ps_mask,
+	_mm512_mask_cmple_ps_mask, _mm512_cmpunord_ps_mask,
+	_mm512_mask_cmpunord_ps_mask, _mm512_cmpneq_ps_mask,
+	_mm512_mask_cmpneq_ps_mask, _mm512_cmpnlt_ps_mask,
+	_mm512_mask_cmpnlt_ps_mask, _mm512_cmpnle_ps_mask,
+	_mm512_mask_cmpnle_ps_mask, _mm512_cmpord_ps_mask,
+	_mm512_mask_cmpord_ps_mask): Move outside of __OPTIMIZE__ guarded
+	section.
+
+2020-07-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/96176
+	* builtins.c: Include gimple-ssa.h, tree-ssa-live.h and
+	tree-outof-ssa.h.
+	(expand_expr_force_mode): If exp is a SSA_NAME with different mode
+	from MODE and get_gimple_for_ssa_name is a cast from MODE, use the
+	cast's rhs.
+
+2020-07-15  Jiufu Guo   <guojiufu@cn.ibm.com>
+
+	* config/rs6000/rs6000.c (rs6000_loop_unroll_adjust): Refine hook.
+
+2020-07-14  David Edelsohn  <dje.gcc@gmail.com>
+
+	* config/rs6000/rs6000.md (rotldi3_insert_sf): Add TARGET_POWERPC64
+	condition.
+	* config/rs6000/rs6000.c (rs6000_expand_vector_init): Add
+	TARGET_POWERPC64 requirement to TARGET_P8_VECTOR case.
+
+2020-07-14  Lewis Hyatt  <lhyatt@gmail.com>
+
+	PR preprocessor/49973
+	PR other/86904
+	* common.opt: Handle -ftabstop here instead of in c-family
+	options.  Add -fdiagnostics-column-unit= and
+	-fdiagnostics-column-origin= options.
+	* opts.c (common_handle_option): Handle the new options.
+	* diagnostic-format-json.cc (json_from_expanded_location): Add
+	diagnostic_context argument.  Use it to convert column numbers as per
+	the new options.
+	(json_from_location_range): Likewise.
+	(json_from_fixit_hint): Likewise.
+	(json_end_diagnostic): Pass the new context argument to helper
+	functions above.  Add "column-origin" field to the output.
+	(test_unknown_location): Add the new context argument to calls to
+	helper functions.
+	(test_bad_endpoints): Likewise.
+	* diagnostic-show-locus.c
+	(exploc_with_display_col::exploc_with_display_col): Support
+	tabstop parameter.
+	(layout_point::layout_point): Make use of class
+	exploc_with_display_col.
+	(layout_range::layout_range): Likewise.
+	(struct line_bounds): Clarify that the units are now always
+	display columns.  Rename members accordingly.  Add constructor.
+	(layout::print_source_line): Add support for tab expansion.
+	(make_range): Adapt to class layout_range changes.
+	(layout::maybe_add_location_range): Likewise.
+	(layout::layout): Adapt to class exploc_with_display_col changes.
+	(layout::calculate_x_offset_display): Support tabstop parameter.
+	(layout::print_annotation_line): Adapt to struct line_bounds changes.
+	(layout::print_line): Likewise.
+	(line_label::line_label): Add diagnostic_context argument.
+	(get_affected_range): Likewise.
+	(get_printed_columns): Likewise.
+	(layout::print_any_labels): Adapt to struct line_label changes.
+	(class correction): Add m_tabstop member.
+	(correction::correction): Add tabstop argument.
+	(correction::compute_display_cols): Use m_tabstop.
+	(class line_corrections): Add m_context member.
+	(line_corrections::line_corrections): Add diagnostic_context argument.
+	(line_corrections::add_hint): Use m_context to handle tabstops.
+	(layout::print_trailing_fixits): Adapt to class line_corrections
+	changes.
+	(test_layout_x_offset_display_utf8): Support tabstop parameter.
+	(test_layout_x_offset_display_tab): New selftest.
+	(test_one_liner_colorized_utf8): Likewise.
+	(test_tab_expansion): Likewise.
+	(test_diagnostic_show_locus_one_liner_utf8): Call the new tests.
+	(diagnostic_show_locus_c_tests): Likewise.
+	(test_overlapped_fixit_printing): Adapt to helper class and
+	function changes.
+	(test_overlapped_fixit_printing_utf8): Likewise.
+	(test_overlapped_fixit_printing_2): Likewise.
+	* diagnostic.h (enum diagnostics_column_unit): New enum.
+	(struct diagnostic_context): Add members for the new options.
+	(diagnostic_converted_column): Declare.
+	(json_from_expanded_location): Add new context argument.
+	* diagnostic.c (diagnostic_initialize): Initialize new members.
+	(diagnostic_converted_column): New function.
+	(maybe_line_and_column): Be willing to output a column of 0.
+	(diagnostic_get_location_text): Convert column number as per the new
+	options.
+	(diagnostic_report_current_module): Likewise.
+	(assert_location_text): Add origin and column_unit arguments for
+	testing the new functionality.
+	(test_diagnostic_get_location_text): Test the new functionality.
+	* doc/invoke.texi: Document the new options and behavior.
+	* input.h (location_compute_display_column): Add tabstop argument.
+	* input.c (location_compute_display_column): Likewise.
+	(test_cpp_utf8): Add selftests for tab expansion.
+	* tree-diagnostic-path.cc (default_tree_make_json_for_path): Pass the
+	new context argument to json_from_expanded_location().
+
+2020-07-14  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/96194
+	* expr.c (expand_constructor): Don't create temporary for store to
+	volatile MEM if exp has an addressable type.
+
+2020-07-14  Nathan Sidwell  <nathan@acm.org>
+
+	* hash-map.h (hash_map::get): Note it is a pointer to value.
+	* incpath.h (incpath_kind): Align comments.
+
+2020-07-14  Nathan Sidwell  <nathan@acm.org>
+
+	* tree-core.h (tree_decl_with_vis, tree_function_decl):
+	Note additional padding on 64-bits
+	* tree.c (cache_integer_cst): Note why no caching of enum literals.
+	(get_tree_code_name): Robustify error case.
+
+2020-07-14  Nathan Sidwell  <nathan@acm.org>
+
+	* doc/gty.texi: Fic gt_cleare_cache name.
+	* doc/invoke.texi: Remove duplicate opindex Wabi-tag.
+
+2020-07-14  Jakub Jelinek  <jakub@redhat.com>
+
+	* omp-general.h (struct omp_for_data): Add adjn1 member.
+	* omp-general.c (omp_extract_for_data): For non-rect loop, punt on
+	count computing if n1, n2 or step are not INTEGER_CST earlier.
+	Narrow the outer iterator range if needed so that non-rect loop
+	has at least one iteration for each outer range iteration.  Compute
+	adjn1.
+	* omp-expand.c (expand_omp_for_init_vars): Use adjn1 if non-NULL
+	instead of the outer loop's n1.
+
+2020-07-14  Matthias Klose  <doko@ubuntu.com>
+
+	PR lto/95604
+	* lto-wrapper.c (merge_and_complain): Add decoded options as parameter,
+	error on different values for -fcf-protection.
+	(append_compiler_options): Pass -fcf-protection option.
+	(find_and_merge_options): Add decoded options as parameter,
+	pass decoded_options to merge_and_complain.
+	(run_gcc): Pass decoded options to find_and_merge_options.
+	* lto-opts.c (lto_write_options): Pass -fcf-protection option.
+
+2020-07-13  Alan Modra  <amodra@gmail.com>
+
+	* config/rs6000/rs6000.md (sibcall_local): Merge sibcall_local32
+	and sibcall_local64.
+	(sibcall_value_local): Similarly.
+
+2020-07-13  Nathan Sidwell  <nathan@acm.org>
+
+	* Makefile.in (distclean): Remove long gone cxxmain.c
+
+2020-07-13  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/95443
+	* config/i386/i386.md (cmpstrnsi): Pass a copy of the string
+	length to cmpstrnqi patterns.
+
+2020-07-13  Jakub Jelinek  <jakub@redhat.com>
+
+	PR ipa/96130
+	* ipa-fnsummary.c (analyze_function_body): Treat NULL bb->aux
+	as false predicate.
+
+2020-07-13  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/96163
+	* tree-vect-slp.c (vect_schedule_slp_instance): Put new stmts
+	at least after region begin.
+
+2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Add
+	__ARM_FEATURE_PAC_DEFAULT support.
+
+2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	PR target/94891
+	* doc/extend.texi: Update the text for  __builtin_return_address.
+
+2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	PR target/94891
+	* config/aarch64/aarch64.c (aarch64_return_address_signing_enabled):
+	Disable return address signing if __builtin_eh_return is used.
+
+2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	PR target/94891
+	PR target/94791
+	* config/aarch64/aarch64-protos.h (aarch64_return_addr_rtx): Declare.
+	* config/aarch64/aarch64.c (aarch64_return_addr_rtx): New.
+	(aarch64_return_addr): Use aarch64_return_addr_rtx.
+	* config/aarch64/aarch64.h (PROFILE_HOOK): Likewise.
+
+2020-07-13  Richard Sandiford  <richard.sandiford@arm.com>
+
+	PR middle-end/95114
+	* tree.h (virtual_method_call_p): Add a default-false parameter
+	that indicates whether the function is being called from dump
+	routines.
+	(obj_type_ref_class): Likewise.
+	* tree.c (virtual_method_call_p): Likewise.
+	* ipa-devirt.c (obj_type_ref_class): Likewise.  Lazily add ODR
+	type information for the type when the parameter is false.
+	* tree-pretty-print.c (dump_generic_node): Update calls to
+	virtual_method_call_p and obj_type_ref_class accordingly.
+
+2020-07-13  Julian Brown  <julian@codesourcery.com>
+	    Thomas Schwinge  <thomas@codesourcery.com>
+
+	* gimplify.c (gimplify_scan_omp_clauses): Do not strip
+	GOMP_MAP_TO_PSET/GOMP_MAP_POINTER for OpenACC enter/exit data
+	directives (see also PR92929).
+
+2020-07-13  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* convert.c (convert_to_integer_1): Narrow integer operations
+	even on targets that require explicit truncation instructions.
+
+2020-07-13  Hans-Peter Nilsson  <hp@axis.com>
+
+	PR target/93372
+	* config/cris/cris-passes.def: New file.
+	* config/cris/t-cris (PASSES_EXTRA): Add cris-passes.def.
+	* config/cris/cris.c: Add infrastructure bits and pass execute
+	function cris_postdbr_cmpelim.
+	* config/cris/cris-protos.h (make_pass_cris_postdbr_cmpelim): Declare.
+
+2020-07-13  Hans-Peter Nilsson  <hp@axis.com>
+
+	* config/cris/t-cris: Remove gt-cris.h-related excessive cargo.
+
+2020-07-13  Hans-Peter Nilsson  <hp@axis.com>
+
+	PR target/93372
+	* config/cris/cris.md ("*add<mode>3_addi"): New splitter.
+	("*addi_b_<mode>"): New pattern.
+	("*addsi3<setnz>"): Remove stale %-related comment.
+
+2020-07-13  Hans-Peter Nilsson  <hp@axis.com>
+
+	* config/cris/cris.md ("setnz_subst", "setnz_subst", "setcc_subst"):
+	Use match_dup in output template, not match_operand.
+
+2020-07-13  Richard Biener  <rguenther@suse.de>
+
+	* var-tracking.c (bb_heap_node_t): Remove unused typedef.
+	(vt_find_locations): Eliminate visited bitmap in favor of
+	RPO order check.  Dump statistics about the number of
+	local BB dataflow computes.
+
+2020-07-13  Richard Biener  <rguenther@suse.de>
+
+	PR middle-end/94600
+	* expr.c (expand_constructor): Make a temporary also if we're
+	storing to volatile memory.
+
+2020-07-13  Xionghu Luo  <luoxhu@linux.ibm.com>
+
+	* config/rs6000/rs6000.md (rotl_unspec): New
+	define_insn_and_split.
+
+2020-07-13  Xionghu Luo  <luoxhu@linux.ibm.com>
+
+	* config/rs6000/rs6000.c (rs6000_expand_vector_init):
+	Move V4SF to V4SI, init vector like V4SI and move to V4SF back.
+
+2020-07-11  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* internal-fn.c (expand_mul_overflow): When checking for signed
+	overflow from a widening multiplication, we access the truncated
+	lowpart RES twice, so keep this value in a pseudo register.
+
+2020-07-11  Richard Sandiford  <richard.sandiford@arm.com>
+
+	PR tree-optimization/96146
+	* value-range.cc (value_range::set): Only decompose POLY_INT_CST
+	bounds to integers for VR_RANGE.  Decay to VR_VARYING for anti-ranges
+	involving POLY_INT_CSTs.
+
+2020-07-10  David Edelsohn  <dje.gcc@gmail.com>
+
+	PR target/77373
+	* config/rs6000/rs6000.c (rs6000_xcoff_select_section): Only
+	create named section for VAR_DECL or FUNCTION_DECL.
+
+2020-07-10  Joseph Myers  <joseph@codesourcery.com>
+
+	* glimits.h [__STDC_VERSION__ > 201710L] (BOOL_MAX, BOOL_WIDTH):
+	New macros.
+
+2020-07-10  Alexander Popov  <alex.popov@linux.com>
+
+	* shrink-wrap.c (try_shrink_wrapping): Improve debug output.
+
+2020-07-10  Richard Sandiford  <richard.sandiford@arm.com>
+
+	PR middle-end/96151
+	* expr.c (expand_expr_real_2): When reducing bit fields,
+	clear the target if it has a different mode from the expression.
+	(reduce_to_bit_field_precision): Don't do that here.  Instead
+	assert that the target already has the correct mode.
+
+2020-07-10  Richard Sandiford  <richard.sandiford@arm.com>
+
+	PR target/92789
+	PR target/95726
+	* config/arm/arm.c (arm_attribute_table): Add
+	"Advanced SIMD type".
+	(arm_comp_type_attributes): Check that the "Advanced SIMD type"
+	attributes are equal.
+	* config/arm/arm-builtins.c: Include stringpool.h and
+	attribs.h.
+	(arm_mangle_builtin_vector_type): Use the mangling recorded
+	in the "Advanced SIMD type" attribute.
+	(arm_init_simd_builtin_types): Add an "Advanced SIMD type"
+	attribute to each Advanced SIMD type, using the mangled type
+	as the attribute's single argument.
+
+2020-07-10  Carl Love  <cel@us.ibm.com>
+
+	* config/rs6000/vsx.md  (VSX_MM): New define_mode_iterator.
+	(VSX_MM4): New define_mode_iterator.
+	(vec_mtvsrbmi): New define_insn.
+	(vec_mtvsr_<mode>): New define_insn.
+	(vec_cntmb_<mode>): New define_insn.
+	(vec_extract_<mode>): New define_insn.
+	(vec_expand_<mode>): New define_insn.
+	(define_c_enum unspec): Add entries UNSPEC_MTVSBM, UNSPEC_VCNTMB,
+	UNSPEC_VEXTRACT, UNSPEC_VEXPAND.
+	* config/rs6000/altivec.h ( vec_genbm, vec_genhm, vec_genwm,
+	vec_gendm, vec_genqm, vec_cntm, vec_expandm, vec_extractm): Add
+	defines.
+	* config/rs6000/rs6000-builtin.def: Add defines BU_P10_2, BU_P10_1.
+	(BU_P10_1): Add definitions for mtvsrbm, mtvsrhm, mtvsrwm,
+	mtvsrdm, mtvsrqm, vexpandmb, vexpandmh, vexpandmw, vexpandmd,
+	vexpandmq, vextractmb, vextractmh, vextractmw, vextractmd, vextractmq.
+	(BU_P10_2): Add definitions for cntmbb, cntmbh, cntmbw, cntmbd.
+	(BU_P10_OVERLOAD_1): Add definitions for mtvsrbm, mtvsrhm,
+	mtvsrwm, mtvsrdm, mtvsrqm, vexpandm, vextractm.
+	(BU_P10_OVERLOAD_2): Add defition for cntm.
+	* config/rs6000/rs6000-call.c (rs6000_expand_binop_builtin): Add
+	checks for CODE_FOR_vec_cntmbb_v16qi, CODE_FOR_vec_cntmb_v8hi,
+	CODE_FOR_vec_cntmb_v4si, CODE_FOR_vec_cntmb_v2di.
+	(altivec_overloaded_builtins): Add overloaded argument entries for
+	P10_BUILTIN_VEC_MTVSRBM, P10_BUILTIN_VEC_MTVSRHM,
+	P10_BUILTIN_VEC_MTVSRWM, P10_BUILTIN_VEC_MTVSRDM,
+	P10_BUILTIN_VEC_MTVSRQM, P10_BUILTIN_VEC_VCNTMBB,
+	P10_BUILTIN_VCNTMBB, P10_BUILTIN_VCNTMBH,
+	P10_BUILTIN_VCNTMBW, P10_BUILTIN_VCNTMBD,
+	P10_BUILTIN_VEXPANDMB, P10_BUILTIN_VEXPANDMH,
+	P10_BUILTIN_VEXPANDMW, P10_BUILTIN_VEXPANDMD,
+	P10_BUILTIN_VEXPANDMQ, P10_BUILTIN_VEXTRACTMB,
+	P10_BUILTIN_VEXTRACTMH, P10_BUILTIN_VEXTRACTMW,
+	P10_BUILTIN_VEXTRACTMD, P10_BUILTIN_VEXTRACTMQ.
+	(builtin_function_type): Add case entries for P10_BUILTIN_MTVSRBM,
+	P10_BUILTIN_MTVSRHM, P10_BUILTIN_MTVSRWM, P10_BUILTIN_MTVSRDM,
+	P10_BUILTIN_MTVSRQM, P10_BUILTIN_VCNTMBB, P10_BUILTIN_VCNTMBH,
+	P10_BUILTIN_VCNTMBW, P10_BUILTIN_VCNTMBD,
+	P10_BUILTIN_VEXPANDMB, P10_BUILTIN_VEXPANDMH,
+	P10_BUILTIN_VEXPANDMW, P10_BUILTIN_VEXPANDMD,
+	P10_BUILTIN_VEXPANDMQ.
+	* config/rs6000/rs6000-builtin.def (altivec_overloaded_builtins): Add
+	entries	for MTVSRBM, MTVSRHM, MTVSRWM, MTVSRDM, MTVSRQM, VCNTM,
+	VEXPANDM, VEXTRACTM.
+
+2020-07-10  Bill Seurer, 507-253-3502, seurer@us.ibm.com  <(no_default)>
+
+	PR target/95581
+	* config/rs6000/rs6000-call.c: Add new type v16qi_ftype_pcvoid.
+	(altivec_init_builtins) Change __builtin_altivec_mask_for_load to use
+	v16qi_ftype_pcvoid with correct number of parameters.
+
+2020-07-10  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/96144
+	* config/i386/i386-expand.c (ix86_emit_swsqrtsf): Check
+	TARGET_AVX512VL when enabling FMA.
+
+2020-07-10  Andrea Corallo  <andrea.corallo@arm.com>
+	    Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
+	    Iain Apreotesei  <iain.apreotesei@arm.com>
+
+	* config/arm/arm-protos.h (arm_target_insn_ok_for_lob): New
+	prototype.
+	* config/arm/arm.c (TARGET_INVALID_WITHIN_DOLOOP): Define.
+	(arm_invalid_within_doloop): Implement invalid_within_doloop hook.
+	(arm_target_insn_ok_for_lob): New function.
+	* config/arm/arm.h (TARGET_HAVE_LOB): Define macro.
+	* config/arm/thumb2.md (*doloop_end_internal, doloop_begin)
+	(dls_insn): Add new patterns.
+	(doloop_end): Modify to select LR when LOB is available.
+	* config/arm/unspecs.md: Add new unspec.
+	* doc/sourcebuild.texi (arm_v8_1_lob_ok)
+	(arm_thumb2_ok_no_arm_v8_1_lob): Document new target supports
+	options.
+
+2020-07-10  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/96133
+	* gimple-fold.c (fold_array_ctor_reference): Do not
+	recurse to folding a CTOR that does not fully cover the
+	asked for object.
+
+2020-07-10  Cui,Lili  <lili.cui@intel.com>
+
+	* common/config/i386/cpuinfo.h
+	(get_intel_cpu): Handle sapphirerapids.
+	* common/config/i386/i386-common.c
+	(processor_names): Add sapphirerapids and alderlake.
+	(processor_alias_table): Add sapphirerapids and alderlake.
+	* common/config/i386/i386-cpuinfo.h
+	(processor_subtypes): Add INTEL_COREI7_ALDERLAKE and
+	INTEL_COREI7_ALDERLAKE.
+	* config.gcc: Add -march=sapphirerapids and alderlake.
+	* config/i386/driver-i386.c
+	(host_detect_local_cpu) Handle sapphirerapids and alderlake.
+	* config/i386/i386-c.c
+	(ix86_target_macros_internal): Handle sapphirerapids and alderlake.
+	* config/i386/i386-options.c
+	(m_SAPPHIRERAPIDS) : Define.
+	(m_ALDERLAKE): Ditto.
+	(m_CORE_AVX512) : Add m_SAPPHIRERAPIDS.
+	(processor_cost_table): Add sapphirerapids and alderlake.
+	(ix86_option_override_internal) Handle PTA_WAITPKG, PTA_ENQCMD,
+	PTA_CLDEMOTE, PTA_SERIALIZE, PTA_TSXLDTRK.
+	* config/i386/i386.h
+	(ix86_size_cost) : Define SAPPHIRERAPIDS and ALDERLAKE.
+	(processor_type) : Add PROCESSOR_SAPPHIRERAPIDS and
+	PROCESSOR_ALDERLAKE.
+	(PTA_ENQCMD): New.
+	(PTA_CLDEMOTE): Ditto.
+	(PTA_SERIALIZE): Ditto.
+	(PTA_TSXLDTRK): New.
+	(PTA_SAPPHIRERAPIDS): Ditto.
+	(PTA_ALDERLAKE): Ditto.
+	(processor_type) : Add PROCESSOR_SAPPHIRERAPIDS and
+	PROCESSOR_ALDERLAKE.
+	* doc/extend.texi: Add sapphirerapids and alderlake.
+	* doc/invoke.texi: Add sapphirerapids and alderlake.
+
+2020-07-10  Martin Liska  <mliska@suse.cz>
+
+	* dumpfile.c [profile-report]: Add new profile dump.
+	* dumpfile.h (enum tree_dump_index): Ad TDI_profile_report.
+	* passes.c (pass_manager::dump_profile_report): Change stderr
+	to dump_file.
+
+2020-07-10  Kewen Lin  <linkw@linux.ibm.com>
+
+	* tree-vect-loop.c (vect_transform_loop): Use LOOP_VINFO_NITERS which
+	is adjusted by considering peeled prologue for non
+	vect_use_loop_mask_for_alignment_p cases.
+
+2020-07-09  Peter Bergner  <bergner@linux.ibm.com>
+
+	PR target/96125
+	* config/rs6000/rs6000-call.c (rs6000_init_builtins): Define the MMA
+	specific types __vector_quad and __vector_pair, and initialize the
+	MMA built-ins if TARGET_EXTRA_BUILTINS is set.
+	(mma_init_builtins): Don't test for mask set in rs6000_builtin_mask.
+	Remove now unneeded mask variable.
+	* config/rs6000/rs6000.c (rs6000_option_override_internal): Add the
+	OPTION_MASK_MMA flag for power10 if not already set.
+
+2020-07-09  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/96133
+	* tree-vect-slp.c (vect_build_slp_tree_1): Compare load_p
+	status between stmts.
+
+2020-07-09  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/88713
+	* config/i386/i386-expand.c (ix86_emit_swsqrtsf): Enable FMA.
+	* config/i386/sse.md (VF_AVX512VL_VF1_128_256): New.
+	(rsqrt<mode>2): Replace VF1_128_256 with VF_AVX512VL_VF1_128_256.
+	(rsqrtv16sf2): Removed.
+
+2020-07-09  Richard Biener  <rguenther@suse.de>
+
+	* tree-vectorizer.h (vect_verify_datarefs_alignment): Remove.
+	(vect_slp_analyze_and_verify_instance_alignment): Rename to ...
+	(vect_slp_analyze_instance_alignment): ... this.
+	* tree-vect-data-refs.c (verify_data_ref_alignment): Remove.
+	(vect_verify_datarefs_alignment): Likewise.
+	(vect_enhance_data_refs_alignment): Do not call
+	vect_verify_datarefs_alignment.
+	(vect_slp_analyze_node_alignment): Rename from
+	vect_slp_analyze_and_verify_node_alignment and do not
+	call verify_data_ref_alignment.
+	(vect_slp_analyze_instance_alignment): Rename from
+	vect_slp_analyze_and_verify_instance_alignment.
+	* tree-vect-stmts.c (vectorizable_store): Dump when
+	we vectorize an unaligned access.
+	(vectorizable_load): Likewise.
+	* tree-vect-loop.c (vect_analyze_loop_2): Do not call
+	vect_verify_datarefs_alignment.
+	* tree-vect-slp.c (vect_slp_analyze_bb_1): Adjust.
+
+2020-07-09  Bin Cheng  <bin.cheng@linux.alibaba.com>
+
+	PR tree-optimization/95804
+	* tree-loop-distribution.c (break_alias_scc_partitions): Force
+	negative post order to reduction partition.
+
+2020-07-09  Jakub Jelinek  <jakub@redhat.com>
+
+	* omp-general.h (struct omp_for_data): Add min_inner_iterations
+	and factor members.
+	* omp-general.c (omp_extract_for_data): Initialize them and remember
+	them in OMP_CLAUSE_COLLAPSE_COUNT if needed and restore from there.
+	* omp-expand.c (expand_omp_for_init_counts): Fix up computation of
+	counts[fd->last_nonrect] if fd->loop.n2 is INTEGER_CST.
+	(expand_omp_for_init_vars): For
+	fd->first_nonrect + 1 == fd->last_nonrect loops with for now
+	INTEGER_CST fd->loop.n2 find quadratic equation roots instead of
+	using fallback method when possible.
+
+2020-07-09  Omar Tahir  <omar.tahir@arm.com>
+
+	* ira.c (move_unallocated_pseudos): Zero first_moveable_pseudo and
+	last_moveable_pseudo before returning.
+
+2020-07-09  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Add
+	__ARM_FEATURE_BTI_DEFAULT support.
+
+2020-07-09  Matthew Malcomson  <matthew.malcomson@arm.com>
+
+	* config/aarch64/aarch64-protos.h (aarch64_indirect_call_asm):
+	New declaration.
+	* config/aarch64/aarch64.c (aarch64_regno_regclass): Handle new
+	stub registers class.
+	(aarch64_class_max_nregs): Likewise.
+	(aarch64_register_move_cost): Likewise.
+	(aarch64_sls_shared_thunks): Global array to store stub labels.
+	(aarch64_sls_emit_function_stub): New.
+	(aarch64_create_blr_label): New.
+	(aarch64_sls_emit_blr_function_thunks): New.
+	(aarch64_sls_emit_shared_blr_thunks): New.
+	(aarch64_asm_file_end): New.
+	(aarch64_indirect_call_asm): New.
+	(TARGET_ASM_FILE_END): Use aarch64_asm_file_end.
+	(TARGET_ASM_FUNCTION_EPILOGUE): Use
+	aarch64_sls_emit_blr_function_thunks.
+	* config/aarch64/aarch64.h (STB_REGNUM_P): New.
+	(enum reg_class): Add STUB_REGS class.
+	(machine_function): Introduce `call_via` array for
+	function-local stub labels.
+	* config/aarch64/aarch64.md (*call_insn, *call_value_insn): Use
+	aarch64_indirect_call_asm to emit code when hardening BLR
+	instructions.
+	* config/aarch64/constraints.md (Ucr): New constraint
+	representing registers for indirect calls.  Is GENERAL_REGS
+	usually, and STUB_REGS when hardening BLR instruction against
+	SLS.
+	* config/aarch64/predicates.md (aarch64_general_reg): STUB_REGS class
+	is also a general register.
+
+2020-07-09  Matthew Malcomson  <matthew.malcomson@arm.com>
+
+	* config/aarch64/aarch64-protos.h (aarch64_sls_barrier): New.
+	* config/aarch64/aarch64.c (aarch64_output_casesi): Emit
+	speculation barrier after BR instruction if needs be.
+	(aarch64_trampoline_init): Handle ptr_mode value & adjust size
+	of code copied.
+	(aarch64_sls_barrier): New.
+	(aarch64_asm_trampoline_template): Add needed barriers.
+	* config/aarch64/aarch64.h (AARCH64_ISA_SB): New.
+	(TARGET_SB): New.
+	(TRAMPOLINE_SIZE): Account for barrier.
+	* config/aarch64/aarch64.md (indirect_jump, *casesi_dispatch,
+	simple_return, *do_return, *sibcall_insn, *sibcall_value_insn):
+	Emit barrier if needs be, also account for possible barrier using
+	"sls_length" attribute.
+	(sls_length): New attribute.
+	(length): Determine default using any non-default sls_length
+	value.
+
+2020-07-09  Matthew Malcomson  <matthew.malcomson@arm.com>
+
+	* config/aarch64/aarch64-protos.h (aarch64_harden_sls_retbr_p):
+	New.
+	(aarch64_harden_sls_blr_p): New.
+	* config/aarch64/aarch64.c (enum aarch64_sls_hardening_type):
+	New.
+	(aarch64_harden_sls_retbr_p): New.
+	(aarch64_harden_sls_blr_p): New.
+	(aarch64_validate_sls_mitigation): New.
+	(aarch64_override_options): Parse options for SLS mitigation.
+	* config/aarch64/aarch64.opt (-mharden-sls): New option.
+	* doc/invoke.texi: Document new option.
+
+2020-07-09  Kewen Lin  <linkw@linux.ibm.com>
+
+	* tree-vect-stmts.c (vectorizable_condition): Prohibit vectorization
+	with partial vectors explicitly excepting for EXTRACT_LAST_REDUCTION
+	or nested-cycle reduction.
+
+2020-07-09  Kewen Lin  <linkw@linux.ibm.com>
+
+	* tree-vect-loop.c (vect_analyze_loop_2): Update dumping string
+	for fully masking to be more common.
+
+2020-07-09  Kito Cheng  <kito.cheng@sifive.com>
+
+	* config/riscv/riscv.md (get_thread_pointer<mode>): New.
+	(TP_REGNUM): Ditto.
+	* doc/extend.texi (Target Builtins): Add RISC-V built-in section.
+	Document __builtin_thread_pointer.
+
+2020-07-09  Kito Cheng  <kito.cheng@sifive.com>
+
+	* config/riscv/riscv-sr.c (riscv_remove_unneeded_save_restore_calls):
+	Abort if any arguments on stack.
+
+2020-07-08  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+
+	* gimple-fold.c (gimple_fold_builtin_memory_op): Do not fold if
+	either type has reverse scalar storage order.
+	* tree-ssa-sccvn.c (vn_reference_lookup_3): Do not propagate through
+	a memory copy if either type has reverse scalar storage order.
+
+2020-07-08  Tobias Burnus  <tobias@codesourcery.com>
+
+	* config/gcn/mkoffload.c (compile_native, main): Pass -fPIC/-fpic
+	on to the native compiler, if used.
+	* config/nvptx/mkoffload.c (compile_native, main): Likewise.
+
+2020-07-08  Will Schmidt  <will_schmidt@vnet.ibm.com>
+
+	* config/rs6000/altivec.h (vec_vmsumudm): New define.
+	* config/rs6000/altivec.md (UNSPEC_VMSUMUDM): New unspec.
+	  (altivec_vmsumudm): New define_insn.
+	* config/rs6000/rs6000-builtin.def (altivec_vmsumudm): New BU_ALTIVEC_3
+	  entry. (vmsumudm): New BU_ALTIVEC_OVERLOAD_3 entry.
+	* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add entries for
+	  ALTIVEC_BUILTIN_VMSUMUDM variants of vec_msum.
+	* doc/extend.texi: Add document for vmsumudm behind vmsum.
+
+2020-07-08  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-stmts.c (get_group_load_store_type): Pass
+	in the SLP node and the alignment support scheme output.
+	Set that.
+	(get_load_store_type): Likewise.
+	(vectorizable_store): Adjust.
+	(vectorizable_load): Likewise.
+
+2020-07-08  Richard Sandiford  <richard.sandiford@arm.com>
+
+	PR middle-end/95694
+	* expr.c (expand_expr_real_2): Get the mode from the type rather
+	than the rtx, and assert that it is consistent with the mode of
+	the rtx (where known).  Optimize all constant integers, not just
+	those that can be represented in poly_int64.
+
+2020-07-08  Kewen Lin  <linkw@linux.ibm.com>
+
+	* config/rs6000/vsx.md (len_load_v16qi): New define_expand.
+	(len_store_v16qi): Likewise.
+
+2020-07-08  Kewen Lin  <linkw@linux.ibm.com>
+
+	* doc/md.texi (len_load_@var{m}): Document.
+	(len_store_@var{m}): Likewise.
+	* internal-fn.c (len_load_direct): New macro.
+	(len_store_direct): Likewise.
+	(expand_len_load_optab_fn): Likewise.
+	(expand_len_store_optab_fn): Likewise.
+	(direct_len_load_optab_supported_p): Likewise.
+	(direct_len_store_optab_supported_p): Likewise.
+	(expand_mask_load_optab_fn): New macro.  Original renamed to ...
+	(expand_partial_load_optab_fn): ... here.  Add handlings for
+	len_load_optab.
+	(expand_mask_store_optab_fn): New macro.  Original renamed to ...
+	(expand_partial_store_optab_fn): ... here. Add handlings for
+	len_store_optab.
+	(internal_load_fn_p): Handle IFN_LEN_LOAD.
+	(internal_store_fn_p): Handle IFN_LEN_STORE.
+	(internal_fn_stored_value_index): Handle IFN_LEN_STORE.
+	* internal-fn.def (LEN_LOAD): New internal function.
+	(LEN_STORE): Likewise.
+	* optabs.def (len_load_optab, len_store_optab): New optab.
+
+2020-07-07  Anton Youdkevitch  <anton.youdkevitch@bell-sw.com>
+
+	* config/aarch64/aarch64.c (thunderx2t99_regmove_cost,
+	thunderx2t99_vector_cost): Likewise.
+
+2020-07-07  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Fix
+	group overlap condition to allow negative step DR groups.
+	* tree-vect-stmts.c (get_group_load_store_type): For
+	multi element SLP groups force VMAT_STRIDED_SLP when the step
+	is negative.
+
+2020-07-07  Qian Jianhua  <qianjh@cn.fujitsu.com>
+
+	* doc/generic.texi: Fix typo.
+
+2020-07-07  Richard Biener  <rguenther@suse.de>
+
+	* lto-streamer-out.c (cmp_symbol_files): Use the computed
+	order map to sort symbols from the same sub-file together.
+	(lto_output): Compute a map of sub-file to an order number
+	it appears in the symbol output array.
+
+2020-07-06  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/96075
+	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
+	TYPE_SIZE_UNIT of the vector component type instead of DR_STEP
+	for the misalignment calculation for negative step.
+
+2020-07-06  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* config/nvptx/nvptx.md (*vadd_addsi4): New instruction.
+	(*vsub_addsi4): New instruction.
+
+2020-07-06  Hans-Peter Nilsson  <hp@axis.com>
+
+	* config/cris/cris.md (movulsr): New peephole2.
+
+2020-07-06  Hans-Peter Nilsson  <hp@axis.com>
+
+	* config/cris/sync.md ("cris_atomic_fetch_<atomic_op_name><mode>_1"):
+	Correct gcc_assert of overlapping operands.
+
+2020-07-05  Hans-Peter Nilsson  <hp@axis.com>
+
+	* config/cris/cris.c (cris_select_cc_mode): Always return
+	CC_NZmode for matching comparisons.  Clarify comments.
+	* config/cris/cris-modes.def: Clarify mode comment.
+	* config/cris/cris.md (plusminus, plusminusumin, plusumin): New
+	code iterators.
+	(addsub, addsubbo, nd): New code iterator attributes.
+	("*<addsub><su>qihi"): Rename from "*extopqihi".  Use code
+	iterator constructs instead of match_operator constructs.
+	("*<addsubbo><su><nd><mode>si<setnz>"): Similar from
+	"*extop<mode>si<setnz>".
+	("*add<su>qihi_swap"): Similar from "*addxqihi_swap".
+	("*<addsubbo><su><nd><mode>si<setnz>_swap"): Similar from
+	"*extop<mode>si<setnz>_swap".
+
+2020-07-05  Hans-Peter Nilsson  <hp@axis.com>
+
+	* config/cris/cris.md ("*extopqihi", "*extop<mode>si<setnz>_swap")
+	("*extop<mode>si<setnz>", "*addxqihi_swap"): Reinstate.
+
+2020-07-03  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+
+	* gimple-fold.c (gimple_fold_builtin_memory_op): Fold calls that
+	were initially created for the assignment of a variable-sized
+	object and whose source is now a string constant.
+	* gimple-ssa-store-merging.c (struct merged_store_group): Document
+	STRING_CST for rhs_code field.
+	Add string_concatenation boolean field.
+	(merged_store_group::merged_store_group): Initialize it as well as
+	bit_insertion here.
+	(merged_store_group::do_merge): Set it upon seeing a STRING_CST.
+	Also set bit_insertion here upon seeing a BIT_INSERT_EXPR.
+	(merged_store_group::apply_stores): Clear it for small regions.
+	Do not create a power-of-2-sized buffer if it is still true.
+	And do not set bit_insertion here again.
+	(encode_tree_to_bitpos): Deal with BLKmode for the expression.
+	(merged_store_group::can_be_merged_into): Deal with STRING_CST.
+	(imm_store_chain_info::coalesce_immediate_stores): Set bit_insertion
+	to true after changing MEM_REF stores into BIT_INSERT_EXPR stores.
+	(count_multiple_uses): Return 0 for STRING_CST.
+	(split_group): Do not split the group for a string concatenation.
+	(imm_store_chain_info::output_merged_store): Constify and rename
+	some local variables.  Build an array type as destination type
+	for a string concatenation, as well as a zero mask, and call
+	build_string to build the source.
+	(lhs_valid_for_store_merging_p): Return true for VIEW_CONVERT_EXPR.
+	(pass_store_merging::process_store): Accept STRING_CST on the RHS.
+	* gimple.h (gimple_call_alloca_for_var_p): New accessor function.
+	* gimplify.c (gimplify_modify_expr_to_memcpy): Set alloca_for_var.
+	* tree.h (CALL_ALLOCA_FOR_VAR_P): Document it for BUILT_IN_MEMCPY.
+
+2020-07-03  Martin Jambor  <mjambor@suse.cz>
+
+	PR ipa/96040
+	* ipa-sra.c (all_callee_accesses_present_p): Do not accept type
+	mismatched accesses.
+
+2020-07-03  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* config/nvptx/nvptx.md (popcount<mode>2): New instructions.
+	(mulhishi3, mulsidi3, umulhisi3, umulsidi3): New instructions.
+
+2020-07-03  Martin Liska  <mliska@suse.cz>
+	    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	PR bootstrap/96046
+	* gcov-dump.c (tag_function): Use gcov_position_t
+	type.
+
+2020-07-03  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/96037
+	* tree-vect-stmts.c (vect_is_simple_use): Initialize *slp_def.
+
+2020-07-03  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-slp.c (vect_bb_slp_scalar_cost): Cost the
+	original non-pattern stmts, look at the pattern stmt
+	vectorization status.
+
+2020-07-03  Andrew Stubbs  <ams@codesourcery.com>
+
+	* config/gcn/gcn-valu.md (fold_left_plus_<mode>): New.
+
+2020-07-03  Richard Biener  <rguenther@suse.de>
+
+	* tree-vectorizer.h (vec_info::insert_on_entry): New.
+	(vec_info::insert_seq_on_entry): Likewise.
+	* tree-vectorizer.c (vec_info::insert_on_entry): Implement.
+	(vec_info::insert_seq_on_entry): Likewise.
+	* tree-vect-stmts.c (vect_init_vector_1): Use
+	vec_info::insert_on_entry.
+	(vect_finish_stmt_generation): Set modified bit after
+	adjusting VUSE.
+	* tree-vect-slp.c (vect_create_constant_vectors): Simplify
+	by using vec_info::insert_seq_on_entry and bypassing
+	vec_init_vector.
+	(vect_schedule_slp_instance): Deal with all-constant
+	children later.
+
+2020-07-03  Roger Sayle  <roger@nextmovesoftware.com>
+	    Tom de Vries  <tdevries@suse.de>
+
+	PR target/90932
+	* config/nvptx/nvptx.c (nvptx_vector_alignment): Use tree_to_uhwi
+	to access TYPE_SIZE (type).  Return at least the mode's alignment.
+
+2020-07-02  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/96028
+	* tree-vect-slp.c (vect_slp_convert_to_external): Make sure
+	we have scalar stmts to use.
+	(vect_slp_analyze_node_operations): When analyzing a child
+	failed try externalizing the parent node.
+
+2020-07-02  Martin Jambor  <mjambor@suse.cz>
+
+	PR debug/95343
+	* ipa-param-manipulation.c (ipa_param_adjustments::modify_call): Adjust
+	argument index if necessary.
+
+2020-07-02  Martin Liska  <mliska@suse.cz>
+
+	PR middle-end/95830
+	* tree-vect-generic.c (expand_vector_condition): Forward declaration.
+	(expand_vector_comparison): Do not expand a comparison if all
+	uses are consumed by a VEC_COND_EXPR.
+	(expand_vector_operation): Change void return type to bool.
+	(expand_vector_operations_1): Pass dce_ssa_names.
+
+2020-07-02  Ilya Leoshkevich  <iii@linux.ibm.com>
+
+	PR bootstrap/95700
+	* system.h (NULL): Redefine to nullptr.
+
+2020-07-02  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/95857
+	* tree-cfg.c (group_case_labels_stmt): When removing an unreachable
+	base_bb, remember all forced and non-local labels on it and later
+	treat those as if they have NULL label_to_block.  Formatting fix.
+	Fix a comment typo.
+
+2020-07-02  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/96022
+	* tree-vect-stmts.c (vectorizable_shift): Only use the
+	first vector stmt when extracting the scalar shift amount.
+	* tree-vect-slp.c (vect_build_slp_tree_2): Also build unary
+	nodes with all-scalar children from scalars but not stores.
+	(vect_analyze_slp_instance): Mark the node not failed.
+
+2020-07-02  Felix Yang  <felix.yang@huawei.com>
+
+	PR tree-optimization/95961
+	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Use the
+	number of scalars instead of the number of vectors as an upper bound
+	for the loop saving info about DR in the hash table.  Remove unused
+	local variables.
+
+2020-07-02  Jakub Jelinek  <jakub@redhat.com>
+
+	* omp-expand.c (expand_omp_for): Diagnose non-rectangular loops with
+	invalid steps - ((m2 - m1) * incr_outer) % incr must be 0 in valid
+	OpenMP non-rectangular loops.  Use XALLOCAVEC.
+
+2020-07-02  Martin Liska  <mliska@suse.cz>
+
+	PR gcov-profile/95348
+	* coverage.c (read_counts_file): Read only COUNTERS that are
+	not all-zero.
+	* gcov-dump.c (tag_function): Change signature from unsigned to
+	signed integer.
+	(tag_blocks): Likewise.
+	(tag_arcs): Likewise.
+	(tag_lines): Likewise.
+	(tag_counters): Likewise.
+	(tag_summary): Likewise.
+	* gcov.c (read_count_file): Read all non-zero counters
+	sensitively.
+
+2020-07-02  Kito Cheng  <kito.cheng@sifive.com>
+
+	* config/riscv/multilib-generator (arch_canonicalize): Handle
+	multi-letter extension.
+	Using underline as separator between different extensions.
+
+2020-07-01  Pip Cet  <pipcet@gmail.com>
+
+	* spellcheck.c (test_data): Add problematic strings.
+	(test_metric_conditions): Don't test the triangle inequality
+	condition, which our distance function does not satisfy.
+
+2020-07-01  Omar Tahir  <omar.tahir@arm.com>
+
+	* config/aarch64/aarch64.c (aarch64_asm_trampoline_template): Always
+	generate a BTI instruction.
+
+2020-07-01  Jeff Law  <law@redhat.com>
+
+	PR tree-optimization/94882
+	* match.pd (x & y) - (x | y) - 1 -> ~(x ^ y): New simplification.
+
+2020-07-01  Jeff Law  <law@redhat.com>
+
+	* config/m68k/m68k.c (m68k_output_btst): Drop "register" keyword.
+	(emit_move_sequence, output_iorsi3, output_xorsi3): Likewise.
+
+2020-07-01  Andrea Corallo  <andrea.corallo@arm.com>
+
+	* config/aarch64/aarch64-builtins.c (aarch64_builtins): Add enums
+	for 64bits fpsr/fpcr getter setters builtin variants.
+	(aarch64_init_fpsr_fpcr_builtins): New function.
+	(aarch64_general_init_builtins): Modify to make use of the later.
+	(aarch64_expand_fpsr_fpcr_setter): New function.
+	(aarch64_general_expand_builtin): Modify to make use of the later.
+	* config/aarch64/aarch64.md (@aarch64_set_<fpscr_name><GPI:mode>)
+	(@aarch64_get_<fpscr_name><GPI:mode>): New patterns replacing and
+	generalizing 'get_fpcr', 'set_fpsr'.
+	* config/aarch64/iterators.md (GET_FPSCR, SET_FPSCR): New int
+	iterators.
+	(fpscr_name): New int attribute.
+	* doc/extend.texi (__builtin_aarch64_get_fpcr64)
+	(__builtin_aarch64_set_fpcr64, __builtin_aarch64_get_fpsr64)
+	(__builtin_aarch64_set_fpsr64): Add into AArch64 Built-in
+	Functions.
+
+2020-07-01  Martin Liska  <mliska@suse.cz>
+
+	* gcov.c (print_usage): Avoid trailing space for -j option.
+
+2020-07-01  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95839
+	* tree-vect-slp.c (vect_slp_tree_uniform_p): Pre-existing
+	vectors are not uniform.
+	(vect_build_slp_tree_1): Handle BIT_FIELD_REFs of
+	vector registers.
+	(vect_build_slp_tree_2): For groups of lane extracts
+	from a vector register generate a permute node
+	with a special child representing the pre-existing vector.
+	(vect_prologue_cost_for_slp): Pre-existing vectors cost nothing.
+	(vect_slp_analyze_node_operations): Use SLP_TREE_LANES.
+	(vectorizable_slp_permutation): Do not generate or cost identity
+	permutes.
+	(vect_schedule_slp_instance): Handle pre-existing vector
+	that are function arguments.
+
+2020-07-01  Richard Biener  <rguenther@suse.de>
+
+	* system.h (INCLUDE_ISL): New guarded include.
+	* graphite-dependences.c: Use it.
+	* graphite-isl-ast-to-gimple.c: Likewise.
+	* graphite-optimize-isl.c: Likewise.
+	* graphite-poly.c: Likewise.
+	* graphite-scop-detection.c: Likewise.
+	* graphite-sese-to-poly.c: Likewise.
+	* graphite.c: Likewise.
+	* graphite.h: Drop the includes here.
+
+2020-07-01  Martin Liska  <mliska@suse.cz>
+
+	* gcov.c (print_usage): Shorted option description for -j
+	option.
+
+2020-07-01  Martin Liska  <mliska@suse.cz>
+
+	* doc/gcov.texi: Rename 2 options.
+	* gcov.c (print_usage): Rename -i,--json-format to
+	-j,--json-format and -j,--human-readable to -H,--human-readable.
+	(process_args): Fix up parsing.  Document obsolete options and
+	how are they changed.
+
+2020-07-01  Jeff Law  <law@redhat.com>
+
+	* config/pa/pa.c (pa_emit_move_sequence): Drop register keyword.
+	(pa_output_ascii): Likewise.
+
+2020-07-01  Kito Cheng  <kito.cheng@sifive.com>
+
+	* common/config/riscv/riscv-common.c (riscv_subset_t): New field
+	added.
+	(riscv_subset_list::parsing_subset_version): Add parameter for
+	indicate explicitly version, and handle explicitly version.
+	(riscv_subset_list::handle_implied_ext): Ditto.
+	(riscv_subset_list::add): Ditto.
+	(riscv_subset_t::riscv_subset_t): Init new field.
+	(riscv_subset_list::to_string): Always output version info if version
+	explicitly specified.
+	(riscv_subset_list::parsing_subset_version): Handle explicitly
+	arch version.
+	(riscv_subset_list::parse_std_ext): Ditto.
+	(riscv_subset_list::parse_multiletter_ext): Ditto.
+
+2020-06-30  Richard Sandiford  <richard.sandiford@arm.com>
+
+	PR target/92789
+	PR target/95726
+	* config/aarch64/aarch64.c (aarch64_attribute_table): Add
+	"Advanced SIMD type".
+	(aarch64_comp_type_attributes): Check that the "Advanced SIMD type"
+	attributes are equal.
+	* config/aarch64/aarch64-builtins.c: Include stringpool.h and
+	attribs.h.
+	(aarch64_mangle_builtin_vector_type): Use the mangling recorded
+	in the "Advanced SIMD type" attribute.
+	(aarch64_init_simd_builtin_types): Add an "Advanced SIMD type"
+	attribute to each Advanced SIMD type, using the mangled type
+	as the attribute's single argument.
+
+2020-06-30  Christophe Lyon  <christophe.lyon@linaro.org>
+
+	PR target/94743
+	* config/arm/arm.c (arm_handle_isr_attribute): Warn if
+	-mgeneral-regs-only is not used.
+
+2020-06-30  Yang Yang  <yangyang305@huawei.com>
+
+	PR tree-optimization/95855
+	* gimple-ssa-split-paths.c (is_feasible_trace): Add extra
+	checks to recognize a missed if-conversion opportunity when
+	judging whether to duplicate a block.
+
+2020-06-29  Segher Boessenkool  <segher@kernel.crashing.org>
+
+	* doc/extend.texi: Change references to "future architecture" to
+	"ISA 3.1", "-mcpu=future" to "-mcpu=power10", and remove vaguer
+	references to "future" (because the future is now).
+
+2020-06-29  Segher Boessenkool  <segher@kernel.crashing.org>
+
+	* config/rs6000/rs6000.md (isa): Rename "fut" to "p10".
+
+2020-06-29  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* simplify-rtx.c (simplify_distributive_operation): New function
+	to un-distribute a binary operation of two binary operations.
+	(X & C) ^ (Y & C) to (X ^ Y) & C, when C is simple (i.e. a constant).
+	(simplify_binary_operation_1) <IOR, XOR, AND>: Call it from here
+	when appropriate.
+	(test_scalar_int_ops): New function for unit self-testing
+	scalar integer transformations in simplify-rtx.c.
+	(test_scalar_ops): Call test_scalar_int_ops for each integer mode.
+	(simplify_rtx_c_tests): Call test_scalar_ops.
+
+2020-06-29  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95916
+	* tree-vect-slp.c (vect_schedule_slp_instance): Explicitely handle
+	the case of not vectorized externals.
+
+2020-06-29  Richard Biener  <rguenther@suse.de>
+
+	* tree-vectorizer.h: Do not include <utility>.
+
+2020-06-29  Martin Liska  <mliska@suse.cz>
+
+	* tree-ssa-ccp.c (gsi_prev_dom_bb_nondebug): Use gsi_bb
+	instead of gimple_stmt_iterator::bb.
+	* tree-ssa-math-opts.c (insert_reciprocals): Likewise.
+	* tree-vectorizer.h: Likewise.
+
+2020-06-29  Andrew Stubbs  <ams@codesourcery.com>
+
+	* config/gcn/gcn-hsa.h (DBX_REGISTER_NUMBER): New macro.
+	* config/gcn/gcn-protos.h (gcn_dwarf_register_number): New prototype.
+	* config/gcn/gcn.c (gcn_expand_prologue): Add RTX_FRAME_RELATED_P
+	and REG_FRAME_RELATED_EXPR to stack and frame pointer adjustments.
+	(gcn_dwarf_register_number): New function.
+	(gcn_dwarf_register_span): New function.
+	(TARGET_DWARF_REGISTER_SPAN): New hook macro.
+
+2020-06-29  Kaipeng Zhou  <zhoukaipeng3@huawei.com>
+
+	PR tree-optimization/95854
+	* gimple-ssa-store-merging.c (find_bswap_or_nop_1): Return NULL
+	if operand 1 or 2 of a BIT_FIELD_REF cannot be converted to
+	unsigned HOST_WIDE_INT.
+
+2020-06-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* config/sparc/sparc.c (epilogue_renumber): Remove register.
+	(sparc_print_operand_address): Likewise.
+	(sparc_type_code): Likewise.
+	(set_extends): Likewise.
+
+2020-06-29  Martin Liska  <mliska@suse.cz>
+
+	PR tree-optimization/92860
+	* optc-save-gen.awk: Add exceptions for arc target.
+
+2020-06-29  Frederik Harwath  <frederik@codesourcery.com>
+
+	* doc/sourcebuild.texi: Describe globbing of the
+	dump file scanning commands "suffix" argument.
+
+2020-06-28  Martin Sebor  <msebor@redhat.com>
+
+	PR c++/86568
+	* calls.c (maybe_warn_rdwr_sizes): Use location of argument if
+	available.
+	* tree-ssa-ccp.c (pass_post_ipa_warn::execute): Same.  Adjust
+	indentation.
+	* tree.c (get_nonnull_args): Consider the this pointer implicitly
+	nonnull.
+	* var-tracking.c (deps_vec): New type.
+	(var_loc_dep_vec): New function.
+	(VAR_LOC_DEP_VEC): Use it.
+
+2020-06-28  Kewen Lin  <linkw@linux.ibm.com>
+
+	* internal-fn.c (direct_mask_load_optab_supported_p): Use
+	convert_optab_supported_p instead of direct_optab_supported_p.
+	(direct_mask_store_optab_supported_p): Likewise.
+
+2020-06-27  Aldy Hernandez  <aldyh@redhat.com>
+
+	* gimple-ssa-evrp-analyze.h (vrp_visit_cond_stmt): Use
+	simplify_using_ranges class.
+	* gimple-ssa-evrp.c (class evrp_folder): New simplify_using_ranges
+	field.  Adjust all methods to use new field.
+	* tree-ssa-dom.c (simplify_stmt_for_jump_threading): Use
+	simplify_using_ranges class.
+	* tree-vrp.c (class vrp_folder): New simplify_using_ranges
+	field.  Adjust all methods to use new field.
+	(simplify_stmt_for_jump_threading): Use simplify_using_ranges class.
+	(vrp_prop::vrp_finalize): New vrp_folder argument.
+	(execute_vrp): Pass folder to vrp_finalize.  Use
+	simplify_using_ranges class.
+	Remove cleanup_edges_and_switches call.
+	* vr-values.c (vr_values::op_with_boolean_value_range_p): Change
+	value_range_equiv uses to value_range.
+	(simplify_using_ranges::op_with_boolean_value_range_p): Use
+	simplify_using_ranges class.
+	(check_for_binary_op_overflow): Make static.
+	(vr_values::extract_range_basic): Pass this to
+	check_for_binary_op_overflow.
+	(compare_range_with_value): Change value_range_equiv uses to
+	value_range.
+	(vr_values::vr_values): Initialize simplifier field.
+	Remove uses of to_remove_edges and to_update_switch_stmts.
+	(vr_values::~vr_values): Remove uses of to_remove_edges and
+	to_update_switch_stmts.
+	(vr_values::get_vr_for_comparison): Move to simplify_using_ranges
+	class.
+	(vr_values::compare_name_with_value): Same.
+	(vr_values::compare_names): Same.
+	(vr_values::vrp_evaluate_conditional_warnv_with_ops): Same.
+	(vr_values::vrp_evaluate_conditional): Same.
+	(vr_values::vrp_visit_cond_stmt): Same.
+	(find_case_label_ranges): Change value_range_equiv uses to
+	value_range.
+	(vr_values::extract_range_from_stmt): Use simplify_using_ranges class.
+	(vr_values::simplify_truth_ops_using_ranges): Move to
+	simplify_using_ranges class.
+	(vr_values::simplify_div_or_mod_using_ranges): Same.
+	(vr_values::simplify_min_or_max_using_ranges): Same.
+	(vr_values::simplify_abs_using_ranges): Same.
+	(vr_values::simplify_bit_ops_using_ranges): Same.
+	(test_for_singularity): Change value_range_equiv uses to
+	value_range.
+	(range_fits_type_p): Same.
+	(vr_values::simplify_cond_using_ranges_1): Same.
+	(vr_values::simplify_cond_using_ranges_2): Make extern.
+	(vr_values::fold_cond): Move to simplify_using_ranges class.
+	(vr_values::simplify_switch_using_ranges): Same.
+	(vr_values::cleanup_edges_and_switches): Same.
+	(vr_values::simplify_float_conversion_using_ranges): Same.
+	(vr_values::simplify_internal_call_using_ranges): Same.
+	(vr_values::two_valued_val_range_p): Same.
+	(vr_values::simplify_stmt_using_ranges): Move to...
+	(simplify_using_ranges::simplify): ...here.
+	* vr-values.h (class vr_values): Move all the simplification of
+	statements using ranges methods and code from here...
+	(class simplify_using_ranges): ...to here.
+	(simplify_cond_using_ranges_2): New extern prototype.
+
+2020-06-27  Jakub Jelinek  <jakub@redhat.com>
+
+	* omp-general.h (struct omp_for_data_loop): Add non_rect_referenced
+	member, move outer member.
+	(struct omp_for_data): Add first_nonrect and last_nonrect members.
+	* omp-general.c (omp_extract_for_data): Initialize first_nonrect,
+	last_nonrect and non_rect_referenced members.
+	* omp-expand.c (expand_omp_for_init_counts): Handle non-rectangular
+	loops.
+	(expand_omp_for_init_vars): Add nonrect_bounds parameter.  Handle
+	non-rectangular loops.
+	(extract_omp_for_update_vars): Likewise.
+	(expand_omp_for_generic, expand_omp_for_static_nochunk,
+	expand_omp_for_static_chunk, expand_omp_simd,
+	expand_omp_taskloop_for_outer, expand_omp_taskloop_for_inner): Adjust
+	expand_omp_for_init_vars and extract_omp_for_update_vars callers.
+	(expand_omp_for): Don't sorry on non-composite worksharing-loop or
+	distribute.
+
+2020-06-26  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/95655
+	* config/i386/gnu-user.h (SUBTARGET_FRAME_POINTER_REQUIRED):
+	Removed.
+	* config/i386/i386.c (ix86_frame_pointer_required): Update
+	comments.
+
+2020-06-26  Yichao Yu  <yyc1992@gmail.com>
+
+	* multiple_target.c (redirect_to_specific_clone): Fix tests
+	to check individual attribute rather than an attribute list.
+
+2020-06-26  Peter Bergner  <bergner@linux.ibm.com>
+
+	* config/rs6000/rs6000-call.c (cpu_is_info) <power10>: New.
+	* doc/extend.texi (PowerPC Built-in Functions): Document power10,
+	arch_3_1 and mma.
+
+2020-06-26  Marek Polacek  <polacek@redhat.com>
+
+	* doc/invoke.texi (C Dialect Options): Adjust -std default for C++.
+	* doc/standards.texi (C Language): Correct the default dialect.
+	(C++ Language): Update the default for C++ to gnu++17.
+
+2020-06-26  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+
+	* tree-ssa-reassoc.c (dump_range_entry): New function.
+	(debug_range_entry): New debug function.
+	(update_range_test): Invoke dump_range_entry for dumping.
+	(optimize_range_tests_to_bit_test): Merge the entry test in the
+	bit test when possible and lower the profitability threshold.
+
+2020-06-26  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95897
+	* tree-vectorizer.h (vectorizable_induction): Remove
+	unused gimple_stmt_iterator * parameter.
+	* tree-vect-loop.c (vectorizable_induction): Likewise.
+	(vect_analyze_loop_operations): Adjust.
+	* tree-vect-stmts.c (vect_analyze_stmt): Likewise.
+	(vect_transform_stmt): Likewise.
+	* tree-vect-slp.c (vect_schedule_slp_instance): Adjust
+	for fold-left reductions, clarify existing reduction case.
+
+2020-06-25  Nick Clifton  <nickc@redhat.com>
+
+	* config/m32r/m32r.md (movsicc): Disable pattern.
+
+2020-06-25  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95839
+	* tree-vect-slp.c (vect_slp_analyze_bb_1): Remove premature
+	check on the number of datarefs.
+
+2020-06-25  Iain Sandoe  <iain@sandoe.co.uk>
+
+	* config/rs6000/rs6000-call.c (mma_init_builtins): Cast
+	the insn_data n_operands value to unsigned.
+
+2020-06-25  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-slp.c (vect_schedule_slp_instance): Always use
+	vector defs to determine insertion place.
+
+2020-06-25  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/95874
+	* config/i386/i386.h (PTA_ICELAKE_CLIENT): Remove PTA_CLWB.
+	(PTA_ICELAKE_SERVER): Add PTA_CLWB.
+	(PTA_TIGERLAKE): Add PTA_CLWB.
+
+2020-06-25  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95866
+	* tree-vect-stmts.c (vectorizable_shift): Reject incompatible
+	vectorized shift operands.  For scalar shifts use lane zero
+	of a vectorized shift operand.
+
+2020-06-25  Martin Liska  <mliska@suse.cz>
+
+	PR tree-optimization/95745
+	PR middle-end/95830
+	* gimple-isel.cc (gimple_expand_vec_cond_exprs): Delete dead
+	SSA_NAMEs used as the first argument of a VEC_COND_EXPR.  Always
+	return 0.
+	* tree-vect-generic.c (expand_vector_condition): Remove dead
+	SSA_NAMEs used as the first argument of a VEC_COND_EXPR.
+
+2020-06-24  Will Schmidt  <will_schmidt@vnet.ibm.com>
+
+	PR target/94954
+	* config/rs6000/altivec.h (vec_pack_to_short_fp32): Update.
+	* config/rs6000/altivec.md (UNSPEC_CONVERT_4F32_8F16): New unspec.
+	(convert_4f32_8f16): New define_expand
+	* config/rs6000/rs6000-builtin.def (convert_4f32_8f16): New builtin define
+	and overload.
+	* config/rs6000/rs6000-call.c (P9V_BUILTIN_VEC_CONVERT_4F32_8F16): New
+	overloaded builtin entry.
+	* config/rs6000/vsx.md (UNSPEC_VSX_XVCVSPHP): New unspec.
+	(vsx_xvcvsphp): New define_insn.
+
+2020-06-24  Roger Sayle  <roger@nextmovesoftware.com>
+	    Segher Boessenkool  <segher@kernel.crashing.org>
+
+	* simplify-rtx.c (simplify_unary_operation_1): Simplify rotates by 0.
+
+2020-06-24  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* simplify-rtx.c (simplify_unary_operation_1): Simplify
+	(parity (parity x)) as (parity x), i.e. PARITY is idempotent.
+
+2020-06-24  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95866
+	* tree-vect-slp.c (vect_slp_tree_uniform_p): New.
+	(vect_build_slp_tree_2): Properly reset matches[0],
+	ignore uniform constants.
+
+2020-06-24  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/95660
+	* common/config/i386/cpuinfo.h (get_intel_cpu): Remove brand_id.
+	(cpu_indicator_init): Likewise.
+	* config/i386/driver-i386.c (host_detect_local_cpu): Updated.
+
+2020-06-24  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/95774
+	* common/config/i386/cpuinfo.h (get_intel_cpu): Add Cooper Lake
+	detection with AVX512BF16.
+
+2020-06-24  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/95843
+	* common/config/i386/i386-isas.h: New file.  Extracted from
+	gcc/config/i386/i386-builtins.c.
+	(_isa_names_table): Add option.
+	(ISA_NAMES_TABLE_START): New.
+	(ISA_NAMES_TABLE_END): Likewise.
+	(ISA_NAMES_TABLE_ENTRY): Likewise.
+	(isa_names_table): Defined with ISA_NAMES_TABLE_START,
+	ISA_NAMES_TABLE_END and ISA_NAMES_TABLE_ENTRY.  Add more ISAs
+	from enum processor_features.
+	* config/i386/driver-i386.c: Include
+	"common/config/i386/cpuinfo.h" and
+	"common/config/i386/i386-isas.h".
+	(has_feature): New macro.
+	(host_detect_local_cpu): Call cpu_indicator_init to get CPU
+	features.  Use has_feature to detect processor features.  Call
+	Call get_intel_cpu to get the newer Intel CPU name.  Use
+	isa_names_table to generate command-line options.
+	* config/i386/i386-builtins.c: Include
+	"common/config/i386/i386-isas.h".
+	(_arch_names_table): Removed.
+	(isa_names_table): Likewise.
+
+2020-06-24  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/95259
+	* common/config/i386/cpuinfo.h: New file.
+	(__processor_model): Moved from libgcc/config/i386/cpuinfo.h.
+	(__processor_model2): New.
+	(CHECK___builtin_cpu_is): New.  Defined as empty if not defined.
+	(has_cpu_feature): New function.
+	(set_cpu_feature): Likewise.
+	(get_amd_cpu): Moved from libgcc/config/i386/cpuinfo.c.  Use
+	CHECK___builtin_cpu_is.  Return AMD CPU name.
+	(get_intel_cpu): Moved from libgcc/config/i386/cpuinfo.c.  Use
+	Use CHECK___builtin_cpu_is.  Return Intel CPU name.
+	(get_available_features): Moved from libgcc/config/i386/cpuinfo.c.
+	Also check FEATURE_3DNOW, FEATURE_3DNOWP, FEATURE_ADX,
+	FEATURE_ABM, FEATURE_CLDEMOTE, FEATURE_CLFLUSHOPT, FEATURE_CLWB,
+	FEATURE_CLZERO, FEATURE_CMPXCHG16B, FEATURE_CMPXCHG8B,
+	FEATURE_ENQCMD, FEATURE_F16C, FEATURE_FSGSBASE, FEATURE_FXSAVE,
+	FEATURE_HLE, FEATURE_IBT, FEATURE_LAHF_LM, FEATURE_LM,
+	FEATURE_LWP, FEATURE_LZCNT, FEATURE_MOVBE, FEATURE_MOVDIR64B,
+	FEATURE_MOVDIRI, FEATURE_MWAITX, FEATURE_OSXSAVE,
+	FEATURE_PCONFIG, FEATURE_PKU, FEATURE_PREFETCHWT1, FEATURE_PRFCHW,
+	FEATURE_PTWRITE, FEATURE_RDPID, FEATURE_RDRND, FEATURE_RDSEED,
+	FEATURE_RTM, FEATURE_SERIALIZE, FEATURE_SGX, FEATURE_SHA,
+	FEATURE_SHSTK, FEATURE_TBM, FEATURE_TSXLDTRK, FEATURE_VAES,
+	FEATURE_WAITPKG, FEATURE_WBNOINVD, FEATURE_XSAVE, FEATURE_XSAVEC,
+	FEATURE_XSAVEOPT and FEATURE_XSAVES
+	(cpu_indicator_init): Moved from libgcc/config/i386/cpuinfo.c.
+	Also update cpu_model2.
+	* common/config/i386/i386-cpuinfo.h (processor_vendor): Add
+	Add VENDOR_CENTAUR, VENDOR_CYRIX and VENDOR_NSC.
+	(processor_features): Moved from gcc/config/i386/i386-builtins.c.
+	Renamed F_XXX to FEATURE_XXX.  Add FEATURE_3DNOW, FEATURE_3DNOWP,
+	FEATURE_ADX, FEATURE_ABM, FEATURE_CLDEMOTE, FEATURE_CLFLUSHOPT,
+	FEATURE_CLWB, FEATURE_CLZERO, FEATURE_CMPXCHG16B,
+	FEATURE_CMPXCHG8B, FEATURE_ENQCMD, FEATURE_F16C,
+	FEATURE_FSGSBASE, FEATURE_FXSAVE, FEATURE_HLE, FEATURE_IBT,
+	FEATURE_LAHF_LM, FEATURE_LM, FEATURE_LWP, FEATURE_LZCNT,
+	FEATURE_MOVBE, FEATURE_MOVDIR64B, FEATURE_MOVDIRI,
+	FEATURE_MWAITX, FEATURE_OSXSAVE, FEATURE_PCONFIG,
+	FEATURE_PKU, FEATURE_PREFETCHWT1, FEATURE_PRFCHW,
+	FEATURE_PTWRITE, FEATURE_RDPID, FEATURE_RDRND, FEATURE_RDSEED,
+	FEATURE_RTM, FEATURE_SERIALIZE, FEATURE_SGX, FEATURE_SHA,
+	FEATURE_SHSTK, FEATURE_TBM, FEATURE_TSXLDTRK, FEATURE_VAES,
+	FEATURE_WAITPKG, FEATURE_WBNOINVD, FEATURE_XSAVE, FEATURE_XSAVEC,
+	FEATURE_XSAVEOPT, FEATURE_XSAVES and CPU_FEATURE_MAX.
+	(SIZE_OF_CPU_FEATURES): New.
+	* config/i386/i386-builtins.c (processor_features): Removed.
+	(isa_names_table): Replace F_XXX with FEATURE_XXX.
+	(fold_builtin_cpu): Change __cpu_features2 to an array.
+
+2020-06-24  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/95842
+	* common/config/i386/i386-common.c (processor_alias_table): Add
+	processor model and priority to each entry.
+	(pta_size): Updated with -6.
+	(num_arch_names): New.
+	* common/config/i386/i386-cpuinfo.h: New file.
+	* config/i386/i386-builtins.c (feature_priority): Removed.
+	(processor_model): Likewise.
+	(_arch_names_table): Likewise.
+	(arch_names_table): Likewise.
+	(_isa_names_table): Replace P_ZERO with P_NONE.
+	(get_builtin_code_for_version): Replace P_ZERO with P_NONE.  Use
+	processor_alias_table.
+	(fold_builtin_cpu): Replace arch_names_table with
+	processor_alias_table.
+	* config/i386/i386.h: Include "common/config/i386/i386-cpuinfo.h".
+	(pta): Add model and priority.
+	(num_arch_names): New.
+
+2020-06-24  Richard Biener  <rguenther@suse.de>
+
+	* tree-vectorizer.h (vect_find_first_scalar_stmt_in_slp):
+	Declare.
+	* tree-vect-data-refs.c (vect_preserves_scalar_order_p):
+	Simplify for new position of vectorized SLP loads.
+	(vect_slp_analyze_node_dependences): Adjust for it.
+	(vect_slp_analyze_and_verify_node_alignment): Compute alignment
+	for the first stmts dataref.
+	* tree-vect-slp.c (vect_find_first_scalar_stmt_in_slp): New.
+	(vect_schedule_slp_instance): Emit loads before the
+	first scalar stmt.
+	* tree-vect-stmts.c (vectorizable_load): Do what the comment
+	says and use vect_find_first_scalar_stmt_in_slp.
+
+2020-06-24  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95856
+	* tree-vectorizer.c (vect_stmt_dominates_stmt_p): Honor
+	region marker -1u.
+
+2020-06-24  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/95810
+	* fold-const.c (fold_cond_expr_with_comparison): Optimize
+	A <= 0 ? A : -A into (type)-absu(A) rather than -abs(A).
+
+2020-06-24  Jakub Jelinek  <jakub@redhat.com>
+
+	* omp-low.c (lower_omp_for): Fix two pastos.
+
+2020-06-24  Martin Liska  <mliska@suse.cz>
+
+	* optc-save-gen.awk: Compare string options in cl_optimization_compare
+	by strcmp.
+
+2020-06-23  Aaron Sawdey  <acsawdey@linux.ibm.com>
+
+	* config.gcc: Identify power10 as a 64-bit processor and as valid
+	for --with-cpu and --with-tune.
+
+2020-06-23  David Edelsohn  <dje.gcc@gmail.com>
+
+	* Makefile.in (LANG_MAKEFRAGS): Same.
+	(tmake_file): Use -include.
+	(xmake_file): Same.
+
+2020-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+	* REVISION: Delete file meant for a private branch.
+
+2020-06-23  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+
+	PR target/95646
+	* config/arm/arm.c: (cmse_nonsecure_entry_clear_before_return): Use
+	'callee_saved_reg_p' instead of 'calL_used_or_fixed_reg_p'.
+
+2020-06-23  Alexandre Oliva  <oliva@adacore.com>
+
+	* collect-utils.h (dumppfx): New.
+	* collect-utils.c (dumppfx): Likewise.
+	* lto-wrapper.c (run_gcc): Set global dumppfx.
+	(compile_offload_image): Pass a -dumpbase on to mkoffload.
+	* config/nvptx/mkoffload.c (ptx_dumpbase): New.
+	(main): Handle incoming -dumpbase.  Set ptx_dumpbase.  Obey
+	save_temps.
+	(compile_native): Pass -dumpbase et al to compiler.
+	* config/gcn/mkoffload.c (gcn_dumpbase): New.
+	(main): Handle incoming -dumpbase.  Set gcn_dumpbase.  Obey
+	save_temps.  Pass -dumpbase et al to offload target compiler.
+	(compile_native): Pass -dumpbase et al to compiler.
+
+2020-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+	* REVISION: New file.
+
+2020-06-22  Segher Boessenkool  <segher@kernel.crashing.org>
+
+	* config/rs6000/altivec.h: Use _ARCH_PWR10, not _ARCH_PWR_FUTURE.
+	Update comment for ISA 3.1.
+	* config/rs6000/altivec.md: Use TARGET_POWER10, not TARGET_FUTURE.
+	* config/rs6000/driver-rs6000.c (asm_names): Use -mpwr10 for power10
+	on AIX, and -mpower10 elsewhere.
+	* config/rs6000/future.md: Delete.
+	* config/rs6000/linux64.h: Update comments.  Use TARGET_POWER10, not
+	TARGET_FUTURE.
+	* config/rs6000/power10.md: New file.
+	* config/rs6000/ppc-auxv.h: Use PPC_PLATFORM_POWER10, not
+	PPC_PLATFORM_FUTURE.
+	* config/rs6000/rs6000-builtin.def: Update comments.  Use BU_P10V_*
+	names instead of BU_FUTURE_V_* names.  Use RS6000_BTM_P10 instead of
+	RS6000_BTM_FUTURE.  Use P10_BUILTIN_* instead of FUTURE_BUILTIN_*.
+	Use BU_P10_* instead of BU_FUTURE_*.
+	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
+	_ARCH_PWR10 instead of _ARCH_PWR_FUTURE.
+	(altivec_resolve_overloaded_builtin): Use P10_BUILTIN_VEC_XXEVAL, not
+	FUTURE_BUILTIN_VEC_XXEVAL.
+	* config/rs6000/rs6000-call.c: Use P10_BUILTIN_*, not FUTURE_BUILTIN_*.
+	Update compiler messages.
+	* config/rs6000/rs6000-cpus.def: Update comments.  Use ISA_3_1_*, not
+	ISA_FUTURE_*.  Use OPTION_MASK_POWER10, not OPTION_MASK_FUTURE.
+	* config/rs6000/rs6000-opts.h: Use PROCESSOR_POWER10, not
+	PROCESSOR_FUTURE.
+	* config/rs6000/rs6000-string.c: Ditto.
+	* config/rs6000/rs6000-tables.opt (rs6000_cpu_opt_value): Use "power10"
+	instead of "future", reorder it to right after "power9".
+	* config/rs6000/rs6000.c: Update comments.  Use OPTION_MASK_POWER10,
+	not OPTION_MASK_FUTURE.  Use TARGET_POWER10, not TARGET_FUTURE.  Use
+	RS6000_BTM_P10, not RS6000_BTM_FUTURE.  Update compiler messages.
+	Use PROCESSOR_POWER10, not PROCESSOR_FUTURE.  Use ISA_3_1_MASKS_SERVER,
+	not ISA_FUTURE_MASKS_SERVER.
+	(rs6000_opt_masks): Use "power10" instead of "future".
+	(rs6000_builtin_mask_names): Ditto.
+	(rs6000_disable_incompatible_switches): Ditto.
+	* config/rs6000/rs6000.h: Use -mpower10, not -mfuture.  Use
+	-mcpu=power10, not -mcpu=future.  Use MASK_POWER10, not MASK_FUTURE.
+	Use OPTION_MASK_POWER10, not OPTION_MASK_FUTURE.  Use RS6000_BTM_P10,
+	not RS6000_BTM_FUTURE.
+	* config/rs6000/rs6000.md: Use "power10", not "future".  Use
+	TARGET_POWER10, not TARGET_FUTURE.  Include "power10.md", not
+	"future.md".
+	* config/rs6000/rs6000.opt (mfuture): Delete.
+	(mpower10): New.
+	* config/rs6000/t-rs6000: Use "power10.md", not "future.md".
+	* config/rs6000/vsx.md: Use TARGET_POWER10, not TARGET_FUTURE.
+
+2020-06-22  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* coretypes.h (first_type): Delete.
+	* recog.h (insn_gen_fn::operator()): Go back to using a decltype.
+
+2020-06-22  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+
+	* doc/sourcebuild.texi (arm_v8_1m_mve_fp_ok): Add item.
+	(arm_mve_hw): Likewise.
+
+2020-06-22  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/95791
+	* config/i386/i386.c (ix86_dirflag_mode_needed): Skip
+	EXT_REX_SSE_REG_P.
+
+2020-06-22  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95770
+	* tree-vect-slp.c (vect_schedule_slp_instance): Also consider
+	external defs.
+
+2020-06-22  Andrew Stubbs  <ams@codesourcery.com>
+
+	* config/gcn/gcn.c (gcn_function_arg): Disallow vector arguments.
+	(gcn_return_in_memory): Return vectors in memory.
+
+2020-06-22  Jakub Jelinek  <jakub@redhat.com>
+
+	* omp-general.c (omp_extract_for_data): For triangular loops with
+	all loop invariant expressions constant where the innermost loop is
+	executed at least once compute number of iterations at compile time.
+
+2020-06-22  Kito Cheng  <kito.cheng@sifive.com>
+
+	* config/riscv/riscv.h (ASM_SPEC): Remove riscv_expand_arch call.
+	(DRIVER_SELF_SPECS): New.
+
+2020-06-22  Kito Cheng  <kito.cheng@sifive.com>
+
+	* config/riscv/riscv-builtins.c (RISCV_FTYPE_NAME0): New.
+	(RISCV_FTYPE_ATYPES0): New.
+	(riscv_builtins): Using RISCV_USI_FTYPE for frflags.
+	* config/riscv/riscv-ftypes.def: Remove VOID argument.
+
+2020-06-21  David Edelsohn  <dje.gcc@gmail.com>
+
+	* config.gcc: Use t-aix64, biarch64 and default64 for cpu_is_64bit.
+	* config/rs6000/aix72.h (ASM_SPEC): Remove aix64 option.
+	(ASM_SPEC32): New.
+	(ASM_SPEC64): New.
+	(ASM_CPU_SPEC): Remove vsx and altivec options.
+	(CPP_SPEC_COMMON): Rename from CPP_SPEC.
+	(CPP_SPEC32): New.
+	(CPP_SPEC64): New.
+	(CPLUSPLUS_CPP_SPEC): Rename to CPLUSPLUS_CPP_SPEC_COMMON..
+	(TARGET_DEFAULT): Only define if not BIARCH.
+	(LIB_SPEC_COMMON): Rename from LIB_SPEC.
+	(LIB_SPEC32): New.
+	(LIB_SPEC64): New.
+	(LINK_SPEC_COMMON): Rename from LINK_SPEC.
+	(LINK_SPEC32): New.
+	(LINK_SPEC64): New.
+	(STARTFILE_SPEC): Add 64 bit version of crtcxa and crtdbase.
+	(ASM_SPEC): Define 32 and 64 bit alternatives using DEFAULT_ARCH64_P.
+	(CPP_SPEC): Same.
+	(CPLUSPLUS_CPP_SPEC): Same.
+	(LIB_SPEC): Same.
+	(LINK_SPEC): Same.
+	(SUBTARGET_EXTRA_SPECS): Add new 32/64 specs.
+	* config/rs6000/defaultaix64.h: New file.
+	* config/rs6000/t-aix64: New file.
+
+2020-06-21  Peter Bergner  <bergner@linux.ibm.com>
+
+	* config/rs6000/predicates.md (mma_assemble_input_operand): New.
+	* config/rs6000/rs6000-builtin.def (BU_MMA_1, BU_MMA_V2, BU_MMA_3,
+	BU_MMA_5, BU_MMA_6, BU_VSX_1): Add support macros for defining MMA
+	built-in functions.
+	(ASSEMBLE_ACC, ASSEMBLE_PAIR, DISASSEMBLE_ACC, DISASSEMBLE_PAIR,
+	PMXVBF16GER2, PMXVBF16GER2NN, PMXVBF16GER2NP, PMXVBF16GER2PN,
+	PMXVBF16GER2PP, PMXVF16GER2, PMXVF16GER2NN, PMXVF16GER2NP,
+	PMXVF16GER2PN, PMXVF16GER2PP, PMXVF32GER, PMXVF32GERNN,
+	PMXVF32GERNP, PMXVF32GERPN, PMXVF32GERPP, PMXVF64GER, PMXVF64GERNN,
+	PMXVF64GERNP, PMXVF64GERPN, PMXVF64GERPP, PMXVI16GER2, PMXVI16GER2PP,
+	PMXVI16GER2S, PMXVI16GER2SPP, PMXVI4GER8, PMXVI4GER8PP, PMXVI8GER4,
+	PMXVI8GER4PP, PMXVI8GER4SPP, XVBF16GER2, XVBF16GER2NN, XVBF16GER2NP,
+	XVBF16GER2PN, XVBF16GER2PP, XVCVBF16SP, XVCVSPBF16, XVF16GER2,
+	XVF16GER2NN, XVF16GER2NP, XVF16GER2PN, XVF16GER2PP, XVF32GER,
+	XVF32GERNN, XVF32GERNP, XVF32GERPN, XVF32GERPP, XVF64GER, XVF64GERNN,
+	XVF64GERNP, XVF64GERPN, XVF64GERPP, XVI16GER2, XVI16GER2PP, XVI16GER2S,
+	XVI16GER2SPP, XVI4GER8, XVI4GER8PP, XVI8GER4, XVI8GER4PP, XVI8GER4SPP,
+	XXMFACC, XXMTACC, XXSETACCZ): Add MMA built-ins.
+	* config/rs6000/rs6000.c (rs6000_emit_move): Use CONST_INT_P.
+	Allow zero constants.
+	(print_operand) <case 'A'>: New output modifier.
+	(rs6000_split_multireg_move): Add support for inserting accumulator
+	priming and depriming instructions.  Add support for splitting an
+	assemble accumulator pattern.
+	* config/rs6000/rs6000-call.c (mma_init_builtins, mma_expand_builtin,
+	rs6000_gimple_fold_mma_builtin): New functions.
+	(RS6000_BUILTIN_M): New macro.
+	(def_builtin): Handle RS6000_BTC_QUAD and RS6000_BTC_PAIR attributes.
+	(bdesc_mma): Add new MMA built-in support.
+	(htm_expand_builtin): Use RS6000_BTC_OPND_MASK.
+	(rs6000_invalid_builtin): Add handling of RS6000_BTM_FUTURE and
+	RS6000_BTM_MMA.
+	(rs6000_builtin_valid_without_lhs): Handle RS6000_BTC_VOID attribute.
+	(rs6000_gimple_fold_builtin): Call rs6000_builtin_is_supported_p
+	and rs6000_gimple_fold_mma_builtin.
+	(rs6000_expand_builtin): Call mma_expand_builtin.
+	Use RS6000_BTC_OPND_MASK.
+	(rs6000_init_builtins): Adjust comment.  Call mma_init_builtins.
+	(htm_init_builtins): Use RS6000_BTC_OPND_MASK.
+	(builtin_function_type): Handle VSX_BUILTIN_XVCVSPBF16 and
+	VSX_BUILTIN_XVCVBF16SP.
+	* config/rs6000/rs6000.h (RS6000_BTC_QUINARY, RS6000_BTC_SENARY,
+	RS6000_BTC_OPND_MASK, RS6000_BTC_QUAD, RS6000_BTC_PAIR,
+	RS6000_BTC_QUADPAIR, RS6000_BTC_GIMPLE): New defines.
+	(RS6000_BTC_PREDICATE, RS6000_BTC_ABS, RS6000_BTC_DST,
+	RS6000_BTC_TYPE_MASK, RS6000_BTC_ATTR_MASK): Adjust values.
+	* config/rs6000/mma.md (MAX_MMA_OPERANDS): New define_constant.
+	(UNSPEC_MMA_ASSEMBLE_ACC, UNSPEC_MMA_PMXVBF16GER2,
+	UNSPEC_MMA_PMXVBF16GER2NN, UNSPEC_MMA_PMXVBF16GER2NP,
+	UNSPEC_MMA_PMXVBF16GER2PN, UNSPEC_MMA_PMXVBF16GER2PP,
+	UNSPEC_MMA_PMXVF16GER2, UNSPEC_MMA_PMXVF16GER2NN,
+	UNSPEC_MMA_PMXVF16GER2NP, UNSPEC_MMA_PMXVF16GER2PN,
+	UNSPEC_MMA_PMXVF16GER2PP, UNSPEC_MMA_PMXVF32GER,
+	UNSPEC_MMA_PMXVF32GERNN, UNSPEC_MMA_PMXVF32GERNP,
+	UNSPEC_MMA_PMXVF32GERPN, UNSPEC_MMA_PMXVF32GERPP,
+	UNSPEC_MMA_PMXVF64GER, UNSPEC_MMA_PMXVF64GERNN,
+	UNSPEC_MMA_PMXVF64GERNP, UNSPEC_MMA_PMXVF64GERPN,
+	UNSPEC_MMA_PMXVF64GERPP, UNSPEC_MMA_PMXVI16GER2,
+	UNSPEC_MMA_PMXVI16GER2PP, UNSPEC_MMA_PMXVI16GER2S,
+	UNSPEC_MMA_PMXVI16GER2SPP, UNSPEC_MMA_PMXVI4GER8,
+	UNSPEC_MMA_PMXVI4GER8PP, UNSPEC_MMA_PMXVI8GER4,
+	UNSPEC_MMA_PMXVI8GER4PP, UNSPEC_MMA_PMXVI8GER4SPP,
+	UNSPEC_MMA_XVBF16GER2, UNSPEC_MMA_XVBF16GER2NN,
+	UNSPEC_MMA_XVBF16GER2NP, UNSPEC_MMA_XVBF16GER2PN,
+	UNSPEC_MMA_XVBF16GER2PP, UNSPEC_MMA_XVF16GER2, UNSPEC_MMA_XVF16GER2NN,
+	UNSPEC_MMA_XVF16GER2NP, UNSPEC_MMA_XVF16GER2PN, UNSPEC_MMA_XVF16GER2PP,
+	UNSPEC_MMA_XVF32GER, UNSPEC_MMA_XVF32GERNN, UNSPEC_MMA_XVF32GERNP,
+	UNSPEC_MMA_XVF32GERPN, UNSPEC_MMA_XVF32GERPP, UNSPEC_MMA_XVF64GER,
+	UNSPEC_MMA_XVF64GERNN, UNSPEC_MMA_XVF64GERNP, UNSPEC_MMA_XVF64GERPN,
+	UNSPEC_MMA_XVF64GERPP, UNSPEC_MMA_XVI16GER2, UNSPEC_MMA_XVI16GER2PP,
+	UNSPEC_MMA_XVI16GER2S, UNSPEC_MMA_XVI16GER2SPP, UNSPEC_MMA_XVI4GER8,
+	UNSPEC_MMA_XVI4GER8PP, UNSPEC_MMA_XVI8GER4, UNSPEC_MMA_XVI8GER4PP,
+	UNSPEC_MMA_XVI8GER4SPP, UNSPEC_MMA_XXMFACC, UNSPEC_MMA_XXMTACC): New.
+	(MMA_ACC, MMA_VV, MMA_AVV, MMA_PV, MMA_APV, MMA_VVI4I4I8,
+	MMA_AVVI4I4I8, MMA_VVI4I4I2, MMA_AVVI4I4I2, MMA_VVI4I4,
+	MMA_AVVI4I4, MMA_PVI4I2, MMA_APVI4I2, MMA_VVI4I4I4,
+	MMA_AVVI4I4I4): New define_int_iterator.
+	(acc, vv, avv, pv, apv, vvi4i4i8, avvi4i4i8, vvi4i4i2,
+	avvi4i4i2, vvi4i4, avvi4i4, pvi4i2, apvi4i2, vvi4i4i4,
+	avvi4i4i4): New define_int_attr.
+	(*movpxi): Add zero constant alternative.
+	(mma_assemble_pair, mma_assemble_acc): New define_expand.
+	(*mma_assemble_acc): New define_insn_and_split.
+	(mma_<acc>, mma_xxsetaccz, mma_<vv>, mma_<avv>, mma_<pv>, mma_<apv>,
+	mma_<vvi4i4i8>, mma_<avvi4i4i8>, mma_<vvi4i4i2>, mma_<avvi4i4i2>,
+	mma_<vvi4i4>, mma_<avvi4i4>, mma_<pvi4i2>, mma_<apvi4i2>,
+	mma_<vvi4i4i4>, mma_<avvi4i4i4>): New define_insn.
+	* config/rs6000/rs6000.md (define_attr "type"): New type mma.
+	* config/rs6000/vsx.md (UNSPEC_VSX_XVCVBF16SP): New.
+	(UNSPEC_VSX_XVCVSPBF16): Likewise.
+	(XVCVBF16): New define_int_iterator.
+	(xvcvbf16): New define_int_attr.
+	(vsx_<xvcvbf16>): New define_insn.
+	* doc/extend.texi: Document the mma built-ins.
+
+2020-06-21  Peter Bergner  <bergner@linux.ibm.com>
+	    Michael Meissner  <meissner@linux.ibm.com>
+
+	* config/rs6000/mma.md: New file.
+	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
+	__MMA__ for mma.
+	* config/rs6000/rs6000-call.c (rs6000_init_builtins): Add support
+	for __vector_pair and __vector_quad types.
+	* config/rs6000/rs6000-cpus.def (OTHER_FUTURE_MASKS): Add
+	OPTION_MASK_MMA.
+	(POWERPC_MASKS): Likewise.
+	* config/rs6000/rs6000-modes.def (OI, XI): New integer modes.
+	(POI, PXI): New partial integer modes.
+	* config/rs6000/rs6000.c (TARGET_INVALID_CONVERSION): Define.
+	(rs6000_hard_regno_nregs_internal): Use VECTOR_ALIGNMENT_P.
+	(rs6000_hard_regno_mode_ok_uncached): Likewise.
+	Add support for POImode being allowed in VSX registers and PXImode
+	being allowed in FP registers.
+	(rs6000_modes_tieable_p): Adjust comment.
+	Add support for POImode and PXImode.
+	(rs6000_debug_reg_global) <print_tieable_modes>: Add OImode, POImode
+	XImode, PXImode, V2SImode, V2SFmode and CCFPmode..
+	(rs6000_setup_reg_addr_masks): Use VECTOR_ALIGNMENT_P.
+	Set up appropriate addr_masks for vector pair and vector quad addresses.
+	(rs6000_init_hard_regno_mode_ok): Add support for vector pair and
+	vector quad registers.  Setup reload handlers for POImode and PXImode.
+	(rs6000_builtin_mask_calculate): Add support for RS6000_BTM_MMA.
+	(rs6000_option_override_internal): Error if -mmma is specified
+	without -mcpu=future.
+	(rs6000_slow_unaligned_access): Use VECTOR_ALIGNMENT_P.
+	(quad_address_p): Change size test to less than 16 bytes.
+	(reg_offset_addressing_ok_p): Add support for ISA 3.1 vector pair
+	and vector quad instructions.
+	(avoiding_indexed_address_p): Likewise.
+	(rs6000_emit_move): Disallow POImode and PXImode moves involving
+	constants.
+	(rs6000_preferred_reload_class): Prefer VSX registers for POImode
+	and FP registers for PXImode.
+	(rs6000_split_multireg_move): Support splitting POImode and PXImode
+	move instructions.
+	(rs6000_mangle_type): Adjust comment.  Add support for mangling
+	__vector_pair and __vector_quad types.
+	(rs6000_opt_masks): Add entry for mma.
+	(rs6000_builtin_mask_names): Add RS6000_BTM_MMA and RS6000_BTM_FUTURE.
+	(rs6000_function_value): Use VECTOR_ALIGNMENT_P.
+	(address_to_insn_form): Likewise.
+	(reg_to_non_prefixed): Likewise.
+	(rs6000_invalid_conversion): New function.
+	* config/rs6000/rs6000.h (MASK_MMA): Define.
+	(BIGGEST_ALIGNMENT): Set to 512 if MMA support is enabled.
+	(VECTOR_ALIGNMENT_P): New helper macro.
+	(ALTIVEC_VECTOR_MODE): Use VECTOR_ALIGNMENT_P.
+	(RS6000_BTM_MMA): Define.
+	(RS6000_BTM_COMMON): Add RS6000_BTM_MMA and RS6000_BTM_FUTURE.
+	(rs6000_builtin_type_index): Add RS6000_BTI_vector_pair and
+	RS6000_BTI_vector_quad.
+	(vector_pair_type_node): New.
+	(vector_quad_type_node): New.
+	* config/rs6000/rs6000.md: Include mma.md.
+	(define_mode_iterator RELOAD): Add POI and PXI.
+	* config/rs6000/t-rs6000 (MD_INCLUDES): Add mma.md.
+	* config/rs6000/rs6000.opt (-mmma): New.
+	* doc/invoke.texi: Document -mmma.
+
+2020-06-20  Bin Cheng  <bin.cheng@linux.alibaba.com>
+
+	PR tree-optimization/95638
+	* tree-loop-distribution.c (pg_edge_callback_data): New field.
+	(loop_distribution::break_alias_scc_partitions): Record and restore
+	postorder information.  Fix memory leak.
+
+2020-06-19  Tobias Burnus  <tobias@codesourcery.com>
+
+	* config/gcn/gcn.c (gcn_related_vector_mode): Add ARG_UNUSED.
+	(output_file_start): Use const 'char *'.
+
+2020-06-19  Przemyslaw Wirkus  <Przemyslaw.Wirkus@arm.com>
+
+	PR tree-optimization/94880
+	* match.pd (A | B) - B -> (A & ~B): New simplification.
+
+2020-06-19  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-slp.c (vect_bb_slp_scalar_cost): Adjust
+	for lane permutations.
+
+2020-06-19  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95761
+	* tree-vect-slp.c (vect_schedule_slp_instance): Walk all
+	vectorized stmts for finding the last one.
+
+2020-06-18  Felix Yang  <felix.yang@huawei.com>
+
+	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Call
+	vect_relevant_for_alignment_p to filter out data references in
+	the loop whose alignment is irrelevant when trying loop peeling
+	to force alignment.
+
+2020-06-18  Uroš Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/i386.md (*cmpqi_ext<mode>_1): Use SWI248 mode
+	iterator instead of SImode for ZERO_EXTRACT RTX.  Use SWI248
+	mode iterator for the first operand of ZERO_EXTRACT RTX.
+	Change ext_register_operand predicate to register_operand.
+	Rename from *cmpqi_ext_1.
+	(*cmpqi_ext<mode>_2): Ditto.  Rename from *cmpqi_ext_2.
+	(*cmpqi_ext<mode>_3): Ditto.  Rename from *cmpqi_ext_3.
+	(*cmpqi_ext<mode>_4): Ditto.  Rename from *cmpqi_ext_4.
+	(cmpi_ext_3): Use HImode instead of SImode for ZERO_EXTRACT RTX.
+	(*extv<mode>): Use SWI24 mode iterator for the first operand
+	of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
+	to register_operand.
+	(*extzv<mode>): Use SWI248 mode iterator for the first operand
+	of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
+	to register_operand.
+	(*extzvqi): Use SWI248 mode iterator instead of SImode for
+	ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the first operand
+	of ZERO_EXTRACT RTX.  Change ext_register_operand predicate to
+	register_operand.
+	(*extzvqi_mem_rex64 and corresponding peephole2):  Use SWI248 mode
+	iterator instead of SImode for ZERO_EXTRACT RTX.  Use SWI248
+	mode iterator for the first operand of ZERO_EXTRACT RTX.
+	Change ext_register_operand predicate to register_operand.
+	(@insv<mode>_1): Use SWI248 mode iterator for the first operand
+	of ZERO_EXTRACT RTX.  Change ext_register_operand predicate to
+	register_operand.
+	(*insvqi_1): Use SWI248 mode iterator instead of SImode
+	for ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the
+	first operand of ZERO_EXTRACT RTX.  Change ext_register_operand
+	predicate to register_operand.
+	(*insvqi_2): Ditto.
+	(*insvqi_3): Ditto.
+	(*insvqi_1_mem_rex64 and corresponding peephole2):  Use SWI248 mode
+	iterator instead of SImode for ZERO_EXTRACT RTX.  Use SWI248
+	mode iterator for the first operand of ZERO_EXTRACT RTX.
+	Change ext_register_operand predicate to register_operand.
+	(addqi_ext_1): New expander.
+	(*addqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode
+	for ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the first
+	operand of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
+	to register_operand.  Rename from *addqi_ext_1.
+	(*addqi_ext<mode>_2): Ditto. Rename from *addqi_ext_2.
+	(divmodqi4): Use HImode instead of SImode for ZERO_EXTRACT RTX.
+	(udivmodqi4): Ditto.
+	(testqi_ext_1): Use HImode instead of SImode for ZERO_EXTRACT RTX.
+	(*testqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode
+	for ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the first
+	operand of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
+	to register_operand.  Rename from *testqi_ext_1.
+	(*testqi_ext<mode>_2): Ditto.  Rename from *testqi_ext_2.
+	(andqi_ext_1): New expander.
+	(*andqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode
+	for ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the first
+	operand of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
+	to register_operand.  Rename from andqi_ext_1.
+	(*andqi_ext<mode>_1_cc): Ditto.  Rename from *andqi_ext_1_cc.
+	(*andqi_ext<mode>_2): Ditto.  Rename from *andqi_ext_2.
+	(*<code>qi_ext<mode>_1): Ditto.  Rename from *<code>qi_ext_1.
+	(*<code>qi_ext<mode>_2): Ditto.  Rename from *<code>qi_ext_2.
+	(xorqi_ext_1_cc): Use HImode instead of SImode for ZERO_EXTRACT RTX.
+	(*xorqi_ext<mode>_1_cc):  Use SWI248 mode iterator instead of SImode
+	for ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the first
+	operand of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
+	to register_operand.  Rename from *xorqi_ext_1_cc.
+	* config/i386/i386-expand.c (ix86_split_idivmod): Emit ZERO_EXTRACT
+	in mode, matching its first operand.
+	(promote_duplicated_reg): Update for renamed insv<mode>_1.
+	* config/i386/predicates.md (ext_register_operand): Remove predicate.
+
+2020-06-18  Martin Sebor  <msebor@redhat.com>
+
+	PR middle-end/95667
+	PR middle-end/92814
+	* builtins.c (compute_objsize): Remove call to
+	compute_builtin_object_size and instead compute conservative sizes
+	directly here.
+
+2020-06-18  Martin Liska  <mliska@suse.cz>
+
+	* coretypes.h (struct iterator_range): New type.
+	* tree-vect-patterns.c (vect_determine_precisions): Use
+	range-based iterator.
+	(vect_pattern_recog): Likewise.
+	* tree-vect-slp.c (_bb_vec_info):  Likewise.
+	(_bb_vec_info::~_bb_vec_info): Likewise.
+	(vect_slp_check_for_constructors): Likewise.
+	* tree-vectorizer.h:Add new iterators
+	and functions that use it.
+
+2020-06-18  Martin Liska  <mliska@suse.cz>
+
+	* config/rs6000/rs6000-call.c (fold_build_vec_cmp):
+	Since 502d63b6d6141597bb18fd23c87736a1b384cf8f, first argument
+	of a VEC_COND_EXPR cannot be tcc_comparison and so that
+	a SSA_NAME needs to be created before we use it for the first
+	argument of the VEC_COND_EXPR.
+	(fold_compare_helper): Pass gsi to fold_build_vec_cmp.
+
+2020-06-18  Richard Biener  <rguenther@suse.de>
+
+	PR middle-end/95739
+	* internal-fn.c (expand_vect_cond_optab_fn): Move the result
+	to the target if necessary.
+	(expand_vect_cond_mask_optab_fn): Likewise.
+
+2020-06-18  Martin Liska  <mliska@suse.cz>
+
+	* tree-ssa-reassoc.c (ovce_extract_ops): Replace *vcond with
+	vcond as we check for NULL pointer.
+
+2020-06-18  Tobias Burnus  <tobias@codesourcery.com>
+
+	* gimple-pretty-print.c (dump_binary_rhs): Use braces to
+	silence empty-body warning with gcc_fallthrough.
+
+2020-06-18  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/95699
+	* tree-ssa-phiopt.c (minmax_replacement): Treat (signed int)x < 0
+	as x > INT_MAX and (signed int)x >= 0 as x <= INT_MAX.  Move variable
+	declarations to the statements that set them where possible.
+
+2020-06-18  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/95713
+	* tree-ssa-forwprop.c (simplify_vector_constructor): Don't allow
+	scalar mode halfvectype other than vector boolean for
+	VEC_PACK_TRUNC_EXPR.
 
 2020-06-18  Richard Biener  <rguenther@suse.de>
 
@@ -182,174 +4232,4444 @@
 	to add_constant_to_table.
 	(tree_output_constant_def): Defer output of constants.
 
-2020-06-17  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+2020-06-18  Richard Biener  <rguenther@suse.de>
 
-	* cgraphunit.c (ipa_passes): Flush asm file, and handle
-	crash of child process.
-	* gcc.c (execute): Print additional ld call if verbose flag is
-	provided.
-	* ipa-visibility.c (gate): Run if split_outputs.
-	* lto-cgraph.c (lto_apply_partition_mask): Only mark body_removed
-	if node is not a defintion.
-	* lto-partition.c (analyse_symbol_references): Merge partitions of
-	functions which we take address of.
-	(lto_promote_cross_file_statics): call promote_symbol only if
-	promote is provided.
-	* lto-partition.h: update lto_promote_cross_file_statics
+	* tree-vectorizer.h (_slp_tree::two_operators): Remove.
+	(_slp_tree::lane_permutation): New member.
+	(_slp_tree::code): Likewise.
+	(SLP_TREE_TWO_OPERATORS): Remove.
+	(SLP_TREE_LANE_PERMUTATION): New.
+	(SLP_TREE_CODE): Likewise.
+	(vect_stmt_dominates_stmt_p): Declare.
+	* tree-vectorizer.c (vect_stmt_dominates_stmt_p): New function.
+	* tree-vect-stmts.c (vect_model_simple_cost): Remove
+	SLP_TREE_TWO_OPERATORS handling.
+	* tree-vect-slp.c (_slp_tree::_slp_tree): Amend.
+	(_slp_tree::~_slp_tree): Likewise.
+	(vect_two_operations_perm_ok_p): Remove.
+	(vect_build_slp_tree_1): Remove verification of two-operator
+	permutation here.
+	(vect_build_slp_tree_2): When we have two different operators
+	build two computation SLP nodes and a blend.
+	(vect_print_slp_tree): Print the lane permutation if it exists.
+	(slp_copy_subtree): Copy it.
+	(vect_slp_rearrange_stmts): Re-arrange it.
+	(vect_slp_analyze_node_operations_1): Handle SLP_TREE_CODE
+	VEC_PERM_EXPR explicitely.
+	(vect_schedule_slp_instance): Likewise.  Remove old
+	SLP_TREE_TWO_OPERATORS code.
+	(vectorizable_slp_permutation): New function.
+
+2020-06-18  Martin Liska  <mliska@suse.cz>
+
+	* tree-vect-generic.c (expand_vector_condition): Check
+	for gassign before inspecting RHS.
+
+2020-06-17  Thomas Schwinge  <thomas@codesourcery.com>
+
+	* gimplify.c (omp_notice_threadprivate_variable)
+	(omp_default_clause, omp_notice_variable): 'inform' after 'error'
+	diagnostic.  Adjust all users.
+
+2020-06-17  Thomas Schwinge  <thomas@codesourcery.com>
+
+	* hsa-gen.c (gen_hsa_insns_for_call): Move 'function_decl ==
+	NULL_TREE' check earlier.
+
+2020-06-17  Forrest Timour  <forrest.timour@gmail.com>
+
+	* doc/extend.texi (attribute access): Fix a typo.
+
+2020-06-17  Bin Cheng  <bin.cheng@linux.alibaba.com>
+	    Kaipeng Zhou  <zhoukaipeng3@huawei.com>
+
+	PR tree-optimization/95199
+	* tree-vect-stmts.c: Eliminate common stmts for bump and offset in
+	strided load/store operations and remove redundant code.
+
+2020-06-17  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* coretypes.h (first_type): New alias template.
+	* recog.h (insn_gen_fn::operator()): Use it instead of a decltype.
+	Remove spurious “...” and split the function type out into a typedef.
+
+2020-06-17  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+	* config/s390/s390.c (s390_fix_long_loop_prediction): Exit early
+	for PARALLELs.
+
+2020-06-17  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-slp.c (vect_build_slp_tree_1): Set the passed
+	in *vectype parameter.
+	(vect_build_slp_tree_2): Set SLP_TREE_VECTYPE from what
+	vect_build_slp_tree_1 computed.
+	(vect_analyze_slp_instance): Set SLP_TREE_VECTYPE.
+	(vect_slp_analyze_node_operations_1): Use the SLP node vector type.
+	(vect_schedule_slp_instance): Likewise.
+	* tree-vect-stmts.c (vect_is_simple_use): Take the vector type
+	from SLP_TREE_VECTYPE.
+
+2020-06-17  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95717
+	* tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg):
+	Move BB SSA updating before exit/latch PHI current def copying.
+
+2020-06-17  Martin Liska  <mliska@suse.cz>
+
+	* Makefile.in: Add new file.
+	* expr.c (expand_expr_real_2): Add gcc_unreachable as we should
+	not meet this condition.
+	(do_store_flag): Likewise.
+	* gimplify.c (gimplify_expr): Gimplify first argument of
+	VEC_COND_EXPR to be a SSA name.
+	* internal-fn.c (vec_cond_mask_direct): New.
+	(vec_cond_direct): Likewise.
+	(vec_condu_direct): Likewise.
+	(vec_condeq_direct): Likewise.
+	(expand_vect_cond_optab_fn):  New.
+	(expand_vec_cond_optab_fn): Likewise.
+	(expand_vec_condu_optab_fn): Likewise.
+	(expand_vec_condeq_optab_fn): Likewise.
+	(expand_vect_cond_mask_optab_fn): Likewise.
+	(expand_vec_cond_mask_optab_fn): Likewise.
+	(direct_vec_cond_mask_optab_supported_p): Likewise.
+	(direct_vec_cond_optab_supported_p): Likewise.
+	(direct_vec_condu_optab_supported_p): Likewise.
+	(direct_vec_condeq_optab_supported_p): Likewise.
+	* internal-fn.def (VCOND): New OPTAB.
+	(VCONDU): Likewise.
+	(VCONDEQ): Likewise.
+	(VCOND_MASK): Likewise.
+	* optabs.c (get_rtx_code): Make it global.
+	(expand_vec_cond_mask_expr): Removed.
+	(expand_vec_cond_expr): Removed.
+	* optabs.h (expand_vec_cond_expr): Likewise.
+	(vector_compare_rtx): Make it global.
+	* passes.def: Add new pass_gimple_isel pass.
+	* tree-cfg.c (verify_gimple_assign_ternary): Add check
+	for VEC_COND_EXPR about first argument.
+	* tree-pass.h (make_pass_gimple_isel): New.
+	* tree-ssa-forwprop.c (pass_forwprop::execute): Prevent
+	propagation of the first argument of a VEC_COND_EXPR.
+	* tree-ssa-reassoc.c (ovce_extract_ops): Support SSA_NAME as
+	first argument of a VEC_COND_EXPR.
+	(optimize_vec_cond_expr): Likewise.
+	* tree-vect-generic.c (expand_vector_divmod): Make SSA_NAME
+	for a first argument of created VEC_COND_EXPR.
+	(expand_vector_condition): Fix coding style.
+	* tree-vect-stmts.c (vectorizable_condition): Gimplify
+	first argument.
+	* gimple-isel.cc: New file.
+
+2020-06-17  Andrew Stubbs  <ams@codesourcery.com>
+
+	* config/gcn/gcn-hsa.h (TEXT_SECTION_ASM_OP): Use ".text".
+	(BSS_SECTION_ASM_OP): Use ".bss".
+	(ASM_SPEC): Remove "-mattr=-code-object-v3".
+	(LINK_SPEC): Add "--export-dynamic".
+	* config/gcn/gcn-opts.h (processor_type): Replace PROCESSOR_VEGA with
+	PROCESSOR_VEGA10 and PROCESSOR_VEGA20.
+	* config/gcn/gcn-run.c (HSA_RUNTIME_LIB): Use ".so.1" variant.
+	(load_image): Remove obsolete relocation handling.
+	Add ".kd" suffix to the symbol names.
+	* config/gcn/gcn.c (MAX_NORMAL_SGPR_COUNT): Set to 62.
+	(gcn_option_override): Update gcn_isa test.
+	(gcn_kernel_arg_types): Update all the assembler directives.
+	Remove the obsolete options.
+	(gcn_conditional_register_usage): Update MAX_NORMAL_SGPR_COUNT usage.
+	(gcn_omp_device_kind_arch_isa): Handle PROCESSOR_VEGA10 and
+	PROCESSOR_VEGA20.
+	(output_file_start): Rework assembler file header.
+	(gcn_hsa_declare_function_name): Rework kernel metadata.
+	* config/gcn/gcn.h (GCN_KERNEL_ARG_TYPES): Set to 16.
+	* config/gcn/gcn.opt (PROCESSOR_VEGA): Remove enum.
+	(PROCESSOR_VEGA10): New enum value.
+	(PROCESSOR_VEGA20): New enum value.
+
+2020-06-17  Martin Liska  <mliska@suse.cz>
+
+	* gcov-dump.c (print_version): Collapse lisence header to 2 lines
+	in --version.
+	* gcov-tool.c (print_version): Likewise.
+	* gcov.c (print_version): Likewise.
+
+2020-06-17  liuhongt  <hongtao.liu@intel.com>
+
+	PR target/95524
+	* config/i386/i386-expand.c
+	(ix86_expand_vec_shift_qihi_constant): New function.
+	* config/i386/i386-protos.h
+	(ix86_expand_vec_shift_qihi_constant): Declare.
+	* config/i386/sse.md (<shift_insn><mode>3): Optimize shift
+	V*QImode by constant.
+
+2020-06-16  Aldy Hernandez  <aldyh@redhat.com>
+
+	PR tree-optimization/95649
+	* tree-ssa-propagate.c (propagate_into_phi_args): Do not propagate unless
+	value is a constant.
+
+2020-06-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+
+	* config.in: Regenerate.
+	* config/s390/s390.c (print_operand): Emit vector alignment hints
+	for target z13, if AS accepts them.  For other targets the logic
+	stays the same.
+	* config/s390/s390.h (TARGET_VECTOR_LOADSTORE_ALIGNMENT_HINTS): Define
+	macro.
+	* configure: Regenerate.
+	* configure.ac: Check HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS_ON_Z13.
+
+2020-06-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+
+	* config/arm/arm_mve.h (__arm_vaddq_m_n_s8): Correct the intrinsic
+	arguments.
+	(__arm_vaddq_m_n_s32): Likewise.
+	(__arm_vaddq_m_n_s16): Likewise.
+	(__arm_vaddq_m_n_u8): Likewise.
+	(__arm_vaddq_m_n_u32): Likewise.
+	(__arm_vaddq_m_n_u16): Likewise.
+	(__arm_vaddq_m): Modify polymorphic variant.
+
+2020-06-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+
+	* config/arm/mve.md (mve_uqrshll_sat<supf>_di): Correct the predicate
+	and constraint of all the operands.
+	(mve_sqrshrl_sat<supf>_di): Likewise.
+	(mve_uqrshl_si): Likewise.
+	(mve_sqrshr_si): Likewise.
+	(mve_uqshll_di): Likewise.
+	(mve_urshrl_di): Likewise.
+	(mve_uqshl_si): Likewise.
+	(mve_urshr_si): Likewise.
+	(mve_sqshl_si): Likewise.
+	(mve_srshr_si): Likewise.
+	(mve_srshrl_di): Likewise.
+	(mve_sqshll_di): Likewise.
+	* config/arm/predicates.md (arm_low_register_operand): Define.
+
+2020-06-16  Jakub Jelinek  <jakub@redhat.com>
+
+	* tree.h (OMP_FOR_NON_RECTANGULAR): Define.
+	* gimplify.c (gimplify_omp_for): Diagnose schedule, ordered
+	or dist_schedule clause on non-rectangular loops.  Handle
+	gimplification of non-rectangular lb/b expressions.  When changing
+	iteration variable, adjust also non-rectangular lb/b expressions
+	referencing that.
+	* omp-general.h (struct omp_for_data_loop): Add m1, m2 and outer
+	members.
+	(struct omp_for_data): Add non_rect member.
+	* omp-general.c (omp_extract_for_data): Handle non-rectangular
+	loops.  Fill in non_rect, m1, m2 and outer.
+	* omp-low.c (lower_omp_for): Handle non-rectangular lb/b expressions.
+	* omp-expand.c (expand_omp_for): Emit sorry_at for unsupported
+	non-rectangular loop cases and assert for cases that can't be
+	non-rectangular.
+	* tree-pretty-print.c (dump_mem_ref): Formatting fix.
+	(dump_omp_loop_non_rect_expr): New function.
+	(dump_generic_node): Handle non-rectangular OpenMP loops.
+	* tree-pretty-print.h (dump_omp_loop_non_rect_expr): Declare.
+	* gimple-pretty-print.c (dump_gimple_omp_for): Handle non-rectangular
+	OpenMP loops.
+
+2020-06-16  Richard Biener  <rguenther@suse.de>
+
+	PR middle-end/95690
+	* varasm.c (build_constant_desc): Remove set_mem_attributes call.
+
+2020-06-16  Kito Cheng  <kito.cheng@sifive.com>
+
+	PR target/95683
+	* config/riscv/riscv.c (riscv_gpr_save_operation_p): Remove
+	assertion and turn it into a early exit check.
+
+2020-06-15  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+
+	* gimplify.c (gimplify_init_constructor) <AGGREGATE_TYPE>: Declare
+	new ENSURE_SINGLE_ACCESS constant and move variables down.  If it is
+	true and all elements are zero, then always clear.  Return GS_ERROR
+	if a temporary would be created for it and NOTIFY_TEMP_CREATION set.
+	(gimplify_modify_expr_rhs) <VAR_DECL>: If the target is volatile but
+	the type is aggregate non-addressable, ask gimplify_init_constructor
+	whether it can generate a single access to the target.
+
+2020-06-15  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+
+	* tree-sra.c (propagate_subaccesses_from_rhs): When a non-scalar
+	access on the LHS is replaced with a scalar access, propagate the
+	TYPE_REVERSE_STORAGE_ORDER flag of the type of the original access.
+
+2020-06-15  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* config/xtensa/xtensa.c (TARGET_HAVE_TLS): Remove
+	TARGET_THREADPTR reference.
+	(xtensa_tls_symbol_p, xtensa_tls_referenced_p): Use
+	targetm.have_tls instead of TARGET_HAVE_TLS.
+	(xtensa_option_override): Set targetm.have_tls to false in
+	configurations without THREADPTR.
+
+2020-06-15  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* config/xtensa/elf.h (ASM_SPEC, LINK_SPEC): Pass ABI switch to
+	assembler/linker.
+	* config/xtensa/linux.h (ASM_SPEC, LINK_SPEC): Ditto.
+	* config/xtensa/uclinux.h (ASM_SPEC, LINK_SPEC): Ditto.
+	* config/xtensa/xtensa.c (xtensa_option_override): Initialize
+	xtensa_windowed_abi if needed.
+	* config/xtensa/xtensa.h (TARGET_WINDOWED_ABI_DEFAULT): New
+	macro.
+	(TARGET_WINDOWED_ABI): Redefine to xtensa_windowed_abi.
+	* config/xtensa/xtensa.opt (xtensa_windowed_abi): New target
+	option variable.
+	(mabi=call0, mabi=windowed): New options.
+	* doc/invoke.texi: Document new -mabi= Xtensa-specific options.
+
+2020-06-15  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* config/xtensa/xtensa.c (xtensa_can_eliminate): New function.
+	(TARGET_CAN_ELIMINATE): New macro.
+	* config/xtensa/xtensa.h
+	(XTENSA_WINDOWED_HARD_FRAME_POINTER_REGNUM)
+	(XTENSA_CALL0_HARD_FRAME_POINTER_REGNUM): New macros.
+	(HARD_FRAME_POINTER_REGNUM): Define using
+	XTENSA_*_HARD_FRAME_POINTER_REGNUM.
+	(ELIMINABLE_REGS): Replace lines with HARD_FRAME_POINTER_REGNUM
+	by lines with XTENSA_WINDOWED_HARD_FRAME_POINTER_REGNUM and
+	XTENSA_CALL0_HARD_FRAME_POINTER_REGNUM.
+
+2020-06-15  Felix Yang  <felix.yang@huawei.com>
+
+	* tree-vect-data-refs.c (vect_verify_datarefs_alignment): Rename
+	parameter to loop_vinfo and update uses.  Use LOOP_VINFO_DATAREFS
+	when possible.
+	(vect_analyze_data_refs_alignment): Likewise, and use LOOP_VINFO_DDRS
+	when possible.
+	* tree-vect-loop.c (vect_dissolve_slp_only_groups): Use
+	LOOP_VINFO_DATAREFS when possible.
+	(update_epilogue_loop_vinfo): Likewise.
+
+2020-06-15  Kito Cheng  <kito.cheng@sifive.com>
+
+	* config/riscv/riscv.c (riscv_gen_gpr_save_insn): Change type to
+	unsigned for i.
+	(riscv_gpr_save_operation_p): Change type to unsigned for i and
+	len.
+
+2020-06-15   Hongtao Liu  <hongtao.liu@intel.com>
+
+	PR target/95488
+	* config/i386/i386-expand.c (ix86_expand_vecmul_qihi): New
+	function.
+	* config/i386/i386-protos.h (ix86_expand_vecmul_qihi): Declare.
+	* config/i386/sse.md (mul<mode>3): Drop mask_name since
+	there's no real simd int8 multiplication instruction with
+	mask. Also optimize it under TARGET_AVX512BW.
+	(mulv8qi3): New expander.
+
+2020-06-12  Marco Elver  <elver@google.com>
+
+	* gimplify.c (gimplify_function_tree): Optimize and do not emit
+	IFN_TSAN_FUNC_EXIT in a finally block if we do not need it.
+	* params.opt: Add --param=tsan-instrument-func-entry-exit=.
+	* tsan.c (instrument_memory_accesses): Make
+	fentry_exit_instrument bool depend on new param.
+
+2020-06-12  Felix Yang  <felix.yang@huawei.com>
+
+	PR tree-optimization/95570
+	* tree-vect-data-refs.c (vect_relevant_for_alignment_p): New function.
+	(vect_verify_datarefs_alignment): Call it to filter out data references
+	in the loop whose alignment is irrelevant.
+	(vect_get_peeling_costs_all_drs): Likewise.
+	(vect_peeling_supportable): Likewise.
+	(vect_enhance_data_refs_alignment): Likewise.
+
+2020-06-12  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95633
+	* tree-vect-stmts.c (vectorizable_condition): Properly
+	guard the vec_else_clause access with EXTRACT_LAST_REDUCTION.
+
+2020-06-12  Martin Liška  <mliska@suse.cz>
+
+	* cgraphunit.c (process_symver_attribute): Wrap weakref keyword.
+	* dbgcnt.c (dbg_cnt_set_limit_by_index): Do not print extra new
+	line.
+	* lto-wrapper.c (merge_and_complain): Wrap option names.
+
+2020-06-12  Kewen Lin  <linkw@gcc.gnu.org>
+
+	* tree-vect-loop-manip.c (vect_set_loop_controls_directly): Rename
+	LOOP_VINFO_MASK_COMPARE_TYPE to LOOP_VINFO_RGROUP_COMPARE_TYPE.  Rename
+	LOOP_VINFO_MASK_IV_TYPE to LOOP_VINFO_RGROUP_IV_TYPE.
+	(vect_set_loop_condition_masked): Renamed to ...
+	(vect_set_loop_condition_partial_vectors): ... this.  Rename
+	LOOP_VINFO_MASK_COMPARE_TYPE to LOOP_VINFO_RGROUP_COMPARE_TYPE.  Rename
+	vect_iv_limit_for_full_masking to vect_iv_limit_for_partial_vectors.
+	(vect_set_loop_condition_unmasked): Renamed to ...
+	(vect_set_loop_condition_normal): ... this.
+	(vect_set_loop_condition): Rename vect_set_loop_condition_unmasked to
+	vect_set_loop_condition_normal.  Rename vect_set_loop_condition_masked
+	to vect_set_loop_condition_partial_vectors.
+	(vect_prepare_for_masked_peels): Rename LOOP_VINFO_MASK_COMPARE_TYPE
+	to LOOP_VINFO_RGROUP_COMPARE_TYPE.
+	* tree-vect-loop.c (vect_known_niters_smaller_than_vf): New, factored
+	out from ...
+	(vect_analyze_loop_costing): ... this.
+	(_loop_vec_info::_loop_vec_info): Rename mask_compare_type to
+	compare_type.
+	(vect_min_prec_for_max_niters): New, factored out from ...
+	(vect_verify_full_masking): ... this.  Rename
+	vect_iv_limit_for_full_masking to vect_iv_limit_for_partial_vectors.
+	Rename LOOP_VINFO_MASK_COMPARE_TYPE to LOOP_VINFO_RGROUP_COMPARE_TYPE.
+	Rename LOOP_VINFO_MASK_IV_TYPE to LOOP_VINFO_RGROUP_IV_TYPE.
+	(vectorizable_reduction): Update some dumpings with partial
+	vectors instead of fully-masked.
+	(vectorizable_live_operation): Likewise.
+	(vect_iv_limit_for_full_masking): Renamed to ...
+	(vect_iv_limit_for_partial_vectors): ... this.
+	* tree-vect-stmts.c (check_load_store_masking): Renamed to ...
+	(check_load_store_for_partial_vectors): ... this.  Update some
+	dumpings with partial vectors instead of fully-masked.
+	(vectorizable_store): Rename check_load_store_masking to
+	check_load_store_for_partial_vectors.
+	(vectorizable_load): Likewise.
+	* tree-vectorizer.h (LOOP_VINFO_MASK_COMPARE_TYPE): Renamed to ...
+	(LOOP_VINFO_RGROUP_COMPARE_TYPE): ... this.
+	(LOOP_VINFO_MASK_IV_TYPE): Renamed to ...
+	(LOOP_VINFO_RGROUP_IV_TYPE): ... this.
+	(vect_iv_limit_for_full_masking): Renamed to ...
+	(vect_iv_limit_for_partial_vectors): this.
+	(_loop_vec_info): Rename mask_compare_type to rgroup_compare_type.
+	Rename iv_type to rgroup_iv_type.
+
+2020-06-12  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* recog.h (insn_gen_fn::f0, insn_gen_fn::f1, insn_gen_fn::f2)
+	(insn_gen_fn::f3, insn_gen_fn::f4, insn_gen_fn::f5, insn_gen_fn::f6)
+	(insn_gen_fn::f7, insn_gen_fn::f8, insn_gen_fn::f9, insn_gen_fn::f10)
+	(insn_gen_fn::f11, insn_gen_fn::f12, insn_gen_fn::f13)
+	(insn_gen_fn::f14, insn_gen_fn::f15, insn_gen_fn::f16): Delete.
+	(insn_gen_fn::operator()): Replace overloaded definitions with
+	a parameter-pack version.
+
+2020-06-12  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/93492
+	* config/i386/i386-features.c (rest_of_insert_endbranch):
+	Renamed to ...
+	(rest_of_insert_endbr_and_patchable_area): Change return type
+	to void. Add need_endbr and patchable_area_size arguments.
+	Don't call timevar_push nor timevar_pop.  Replace
+	endbr_queued_at_entrance with insn_queued_at_entrance.  Insert
+	UNSPECV_PATCHABLE_AREA for patchable area.
+	(pass_data_insert_endbranch): Renamed to ...
+	(pass_data_insert_endbr_and_patchable_area): This.  Change
+	pass name to endbr_and_patchable_area.
+	(pass_insert_endbranch): Renamed to ...
+	(pass_insert_endbr_and_patchable_area): This.  Add need_endbr
+	and patchable_area_size;.
+	(pass_insert_endbr_and_patchable_area::gate): Set and check
+	need_endbr and patchable_area_size.
+	(pass_insert_endbr_and_patchable_area::execute): Call
+	timevar_push and timevar_pop.  Pass need_endbr and
+	patchable_area_size to rest_of_insert_endbr_and_patchable_area.
+	(make_pass_insert_endbranch): Renamed to ...
+	(make_pass_insert_endbr_and_patchable_area): This.
+	* config/i386/i386-passes.def: Replace pass_insert_endbranch
+	with pass_insert_endbr_and_patchable_area.
+	* config/i386/i386-protos.h (ix86_output_patchable_area): New.
+	(make_pass_insert_endbranch): Renamed to ...
+	(make_pass_insert_endbr_and_patchable_area): This.
+	* config/i386/i386.c (ix86_asm_output_function_label): Set
+	function_label_emitted to true.
+	(ix86_print_patchable_function_entry): New function.
+	(ix86_output_patchable_area): Likewise.
+	(x86_function_profiler): Replace endbr_queued_at_entrance with
+	insn_queued_at_entrance.  Generate ENDBR only for TYPE_ENDBR.
+	Call ix86_output_patchable_area to generate patchable area if
+	needed.
+	(TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY): New.
+	* config/i386/i386.h (queued_insn_type): New.
+	(machine_function): Add function_label_emitted.  Replace
+	endbr_queued_at_entrance with insn_queued_at_entrance.
+	* config/i386/i386.md (UNSPECV_PATCHABLE_AREA): New.
+	(patchable_area): New.
+
+2020-06-11  Martin Liska  <mliska@suse.cz>
+
+	* config/rs6000/rs6000.c (rs6000_density_test): Fix GNU coding
+	style.
+
+2020-06-11  Martin Liska  <mliska@suse.cz>
+
+	PR target/95627
+	* config/rs6000/rs6000.c (rs6000_density_test): Skip debug
+	statements.
+
+2020-06-11  Martin Liska  <mliska@suse.cz>
+	    Jakub Jelinek  <jakub@redhat.com>
+
+	PR sanitizer/95634
+	* asan.c (asan_emit_stack_protection): Fix emission for ilp32
+	by using Pmode instead of ptr_mode.
+
+2020-06-11  Kewen Lin  <linkw@gcc.gnu.org>
+
+	* tree-vect-loop-manip.c (vect_set_loop_mask): Renamed to ...
+	(vect_set_loop_control): ... this.
+	(vect_maybe_permute_loop_masks): Rename rgroup_masks related things.
+	(vect_set_loop_masks_directly): Renamed to ...
+	(vect_set_loop_controls_directly): ... this.  Also rename some
+	variables with ctrl instead of mask.  Rename vect_set_loop_mask to
+	vect_set_loop_control.
+	(vect_set_loop_condition_masked): Rename rgroup_masks related things.
+	Also rename some variables with ctrl instead of mask.
+	* tree-vect-loop.c (release_vec_loop_masks): Renamed to ...
+	(release_vec_loop_controls): ... this.  Rename rgroup_masks related
+	things.
+	(_loop_vec_info::~_loop_vec_info): Rename release_vec_loop_masks to
+	release_vec_loop_controls.
+	(can_produce_all_loop_masks_p): Rename rgroup_masks related things.
+	(vect_get_max_nscalars_per_iter): Likewise.
+	(vect_estimate_min_profitable_iters): Likewise.
+	(vect_record_loop_mask): Likewise.
+	(vect_get_loop_mask): Likewise.
+	* tree-vectorizer.h (struct rgroup_masks): Renamed to ...
+	(struct rgroup_controls): ... this.  Also rename mask_type
+	to type and rename masks to controls.
+
+2020-06-11  Kewen Lin  <linkw@gcc.gnu.org>
+
+	* tree-vect-loop-manip.c (vect_set_loop_condition): Rename
+	LOOP_VINFO_FULLY_MASKED_P to LOOP_VINFO_USING_PARTIAL_VECTORS_P.
+	(vect_gen_vector_loop_niters): Likewise.
+	(vect_do_peeling): Likewise.
+	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Rename
+	fully_masked_p to using_partial_vectors_p.
+	(vect_analyze_loop_costing): Rename LOOP_VINFO_FULLY_MASKED_P to
+	LOOP_VINFO_USING_PARTIAL_VECTORS_P.
+	(determine_peel_for_niter): Likewise.
+	(vect_estimate_min_profitable_iters): Likewise.
+	(vect_transform_loop): Likewise.
+	* tree-vectorizer.h (LOOP_VINFO_FULLY_MASKED_P): Updated.
+	(LOOP_VINFO_USING_PARTIAL_VECTORS_P): New macro.
+
+2020-06-11  Kewen Lin  <linkw@gcc.gnu.org>
+
+	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Rename
+	can_fully_mask_p to can_use_partial_vectors_p.
+	(vect_analyze_loop_2): Rename LOOP_VINFO_CAN_FULLY_MASK_P to
+	LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P.  Rename saved_can_fully_mask_p
+	to saved_can_use_partial_vectors_p.
+	(vectorizable_reduction): Rename LOOP_VINFO_CAN_FULLY_MASK_P to
+	LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P.
+	(vectorizable_live_operation): Likewise.
+	* tree-vect-stmts.c (permute_vec_elements): Likewise.
+	(check_load_store_masking): Likewise.
+	(vectorizable_operation): Likewise.
+	(vectorizable_store): Likewise.
+	(vectorizable_load): Likewise.
+	(vectorizable_condition): Likewise.
+	* tree-vectorizer.h (LOOP_VINFO_CAN_FULLY_MASK_P): Renamed to ...
+	(LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P): ... this.
+	(_loop_vec_info): Rename can_fully_mask_p to can_use_partial_vectors_p.
+
+2020-06-11  Martin Liska  <mliska@suse.cz>
+
+	* optc-save-gen.awk: Quote error string.
+
+2020-06-11  Alexandre Oliva  <oliva@adacore.com>
+
+	* print-rtl.c (print_mem_expr): Enable TDF_SLIM in dump_flags.
+
+2020-06-11  Kito Cheng  <kito.cheng@sifive.com>
+
+	* config/riscv/riscv-protos.h (riscv_output_gpr_save): Remove.
+	* config/riscv/riscv-sr.c (riscv_sr_match_prologue): Update
+	value.
+	* config/riscv/riscv.c (riscv_output_gpr_save): Remove.
+	* config/riscv/riscv.md (gpr_save): Update output asm pattern.
+
+2020-06-11  Kito Cheng  <kito.cheng@sifive.com>
+
+	* config/riscv/predicates.md (gpr_save_operation): New.
+	* config/riscv/riscv-protos.h (riscv_gen_gpr_save_insn): New.
+	(riscv_gpr_save_operation_p): Ditto.
+	* config/riscv/riscv-sr.c (riscv_remove_unneeded_save_restore_calls):
+	Ignore USEs for gpr_save patter.
+	* config/riscv/riscv.c (gpr_save_reg_order): New.
+	(riscv_expand_prologue): Use riscv_gen_gpr_save_insn to gen gpr_save.
+	(riscv_gen_gpr_save_insn): New.
+	(riscv_gpr_save_operation_p): Ditto.
+	* config/riscv/riscv.md (S3_REGNUM): New.
+	(S4_REGNUM): Ditto.
+	(S5_REGNUM): Ditto.
+	(S6_REGNUM): Ditto.
+	(S7_REGNUM): Ditto.
+	(S8_REGNUM): Ditto.
+	(S9_REGNUM): Ditto.
+	(S10_REGNUM): Ditto.
+	(S11_REGNUM): Ditto.
+	(gpr_save): Model USEs correctly.
+
+2020-06-10  Martin Sebor  <msebor@redhat.com>
+
+	PR middle-end/95353
+	PR middle-end/92939
+	* builtins.c (inform_access): New function.
+	(check_access): Call it.  Add argument.
+	(addr_decl_size): Remove.
+	(get_range): New function.
+	(compute_objsize): New overload.  Only use compute_builtin_object_size
+	with raw memory function.
+	(check_memop_access): Pass new argument to compute_objsize and
+	check_access.
+	(expand_builtin_memchr, expand_builtin_strcat): Same.
+	(expand_builtin_strcpy, expand_builtin_stpcpy_1): Same.
+	(expand_builtin_stpncpy, check_strncat_sizes): Same.
+	(expand_builtin_strncat, expand_builtin_strncpy): Same.
+	(expand_builtin_memcmp): Same.
+	* builtins.h (check_nul_terminated_array): Declare extern.
+	(check_access): Add argument.
+	(struct access_ref, struct access_data): New structs.
+	* gimple-ssa-warn-restrict.c (clamp_offset): New helper.
+	(builtin_access::overlap): Call it.
+	* tree-object-size.c (decl_init_size): Declare extern.
+	(addr_object_size): Correct offset computation.
+	* tree-object-size.h (decl_init_size): Declare.
+	* tree-ssa-strlen.c (handle_integral_assign): Remove a call
+	to maybe_warn_overflow when assigning to an SSA_NAME.
+
+2020-06-10  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-loop.c (vect_determine_vectorization_factor):
+	Skip debug stmts.
+	(_loop_vec_info::_loop_vec_info): Likewise.
+	(vect_update_vf_for_slp): Likewise.
+	(vect_analyze_loop_operations): Likewise.
+	(update_epilogue_loop_vinfo): Likewise.
+	* tree-vect-patterns.c (vect_determine_precisions): Likewise.
+	(vect_pattern_recog): Likewise.
+	* tree-vect-slp.c (vect_detect_hybrid_slp): Likewise.
+	(_bb_vec_info::_bb_vec_info): Likewise.
+	* tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized):
+	Likewise.
+
+2020-06-10  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95576
+	* tree-vect-slp.c (vect_slp_bb): Skip leading debug stmts.
+
+2020-06-10  Haijian Zhang  <z.zhanghaijian@huawei.com>
+
+	PR target/95523
+	* config/aarch64/aarch64-sve-builtins.h
+	(sve_switcher::m_old_maximum_field_alignment): New member.
+	* config/aarch64/aarch64-sve-builtins.cc
+	(sve_switcher::sve_switcher): Save maximum_field_alignment in
+	m_old_maximum_field_alignment and clear maximum_field_alignment.
+	(sve_switcher::~sve_switcher): Restore maximum_field_alignment.
+
+2020-06-10  Richard Biener  <rguenther@suse.de>
+
+	* tree-vectorizer.h (_slp_tree::vec_stmts): Make it a vector
+	of gimple * stmts.
+	(_stmt_vec_info::vec_stmts): Likewise.
+	(vec_info::stmt_vec_info_ro): New flag.
+	(vect_finish_replace_stmt): Adjust declaration.
+	(vect_finish_stmt_generation): Likewise.
+	(vectorizable_induction): Likewise.
+	(vect_transform_reduction): Likewise.
+	(vectorizable_lc_phi): Likewise.
+	* tree-vect-data-refs.c (vect_create_data_ref_ptr): Do not
+	allocate stmt infos for increments.
+	(vect_record_grouped_load_vectors): Adjust.
+	* tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
+	(vectorize_fold_left_reduction): Likewise.
+	(vect_transform_reduction): Likewise.
+	(vect_transform_cycle_phi): Likewise.
+	(vectorizable_lc_phi): Likewise.
+	(vectorizable_induction): Likewise.
+	(vectorizable_live_operation): Likewise.
+	(vect_transform_loop): Likewise.
+	* tree-vect-patterns.c (vect_pattern_recog): Set stmt_vec_info_ro.
+	* tree-vect-slp.c (vect_get_slp_vect_def): Adjust.
+	(vect_get_slp_defs): Likewise.
+	(vect_transform_slp_perm_load): Likewise.
+	(vect_schedule_slp_instance): Likewise.
+	(vectorize_slp_instance_root_stmt): Likewise.
+	* tree-vect-stmts.c (vect_get_vec_defs_for_operand): Likewise.
+	(vect_finish_stmt_generation_1): Do not allocate a stmt info.
+	(vect_finish_replace_stmt): Do not return anything.
+	(vect_finish_stmt_generation): Likewise.
+	(vect_build_gather_load_calls): Adjust.
+	(vectorizable_bswap): Likewise.
+	(vectorizable_call): Likewise.
+	(vectorizable_simd_clone_call): Likewise.
+	(vect_create_vectorized_demotion_stmts): Likewise.
+	(vectorizable_conversion): Likewise.
+	(vectorizable_assignment): Likewise.
+	(vectorizable_shift): Likewise.
+	(vectorizable_operation): Likewise.
+	(vectorizable_scan_store): Likewise.
+	(vectorizable_store): Likewise.
+	(vectorizable_load): Likewise.
+	(vectorizable_condition): Likewise.
+	(vectorizable_comparison): Likewise.
+	(vect_transform_stmt): Likewise.
+	* tree-vectorizer.c (vec_info::vec_info): Initialize
+	stmt_vec_info_ro.
+	(vec_info::replace_stmt): Copy over stmt UID rather than
+	unsetting/setting a stmt info allocating a new UID.
+	(vec_info::set_vinfo_for_stmt): Assert !stmt_vec_info_ro.
+
+2020-06-10  Aldy Hernandez  <aldyh@redhat.com>
+
+	* gimple-loop-versioning.cc (loop_versioning::name_prop::get_value):
+	Add stmt parameter.
+	* gimple-ssa-evrp.c (class evrp_folder): New.
+	(class evrp_dom_walker): Remove.
+	(execute_early_vrp): Use evrp_folder instead of evrp_dom_walker.
+	* tree-ssa-ccp.c (ccp_folder::get_value): Add stmt parameter.
+	* tree-ssa-copy.c (copy_folder::get_value): Same.
+	* tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in):
+	Pass stmt to get_value.
+	(substitute_and_fold_engine::replace_phi_args_in): Same.
+	(substitute_and_fold_dom_walker::after_dom_children): Call
+	post_fold_bb.
+	(substitute_and_fold_dom_walker::foreach_new_stmt_in_bb): New.
+	(substitute_and_fold_dom_walker::propagate_into_phi_args): New.
+	(substitute_and_fold_dom_walker::before_dom_children): Adjust to
+	call virtual functions for folding, pre_folding, and post folding.
+	Call get_value with PHI.  Tweak dump.
+	* tree-ssa-propagate.h (class substitute_and_fold_engine):
+	New argument to get_value.
+	New virtual function pre_fold_bb.
+	New virtual function post_fold_bb.
+	New virtual function pre_fold_stmt.
+	New virtual function post_new_stmt.
+	New function propagate_into_phi_args.
+	* tree-vrp.c (vrp_folder::get_value): Add stmt argument.
+	* vr-values.c (vr_values::extract_range_from_stmt): Adjust dump
+	output.
+	(vr_values::fold_cond): New.
+	(vr_values::simplify_cond_using_ranges_1): Call fold_cond.
+	* vr-values.h (class vr_values): Add
+	simplify_cond_using_ranges_when_edge_is_known.
+
+2020-06-10  Martin Liska  <mliska@suse.cz>
+
+	PR sanitizer/94910
+	* asan.c (asan_emit_stack_protection): Emit
+	also **SavedFlagPtr(FakeStack, class_id) = 0 in order to release
+	a stack frame.
+
+2020-06-10  Tamar Christina  <tamar.christina@arm.com>
+
+	* config/aarch64/aarch64.c (aarch64_rtx_mult_cost): Adjust costs for mul.
+
+2020-06-10  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-data-refs.c (vect_vfa_access_size): Adjust.
+	(vect_record_grouped_load_vectors): Likewise.
+	* tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
+	(vectorize_fold_left_reduction): Likewise.
+	(vect_transform_reduction): Likewise.
+	(vect_transform_cycle_phi): Likewise.
+	(vectorizable_lc_phi): Likewise.
+	(vectorizable_induction): Likewise.
+	(vectorizable_live_operation): Likewise.
+	(vect_transform_loop): Likewise.
+	* tree-vect-slp.c (vect_get_slp_defs): New function, split out
+	from overload.
+	* tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Remove.
+	(vect_get_vec_def_for_operand): Likewise.
+	(vect_get_vec_def_for_stmt_copy): Likewise.
+	(vect_get_vec_defs_for_stmt_copy): Likewise.
+	(vect_get_vec_defs_for_operand): New function.
+	(vect_get_vec_defs): Likewise.
+	(vect_build_gather_load_calls): Adjust.
+	(vect_get_gather_scatter_ops): Likewise.
+	(vectorizable_bswap): Likewise.
+	(vectorizable_call): Likewise.
+	(vectorizable_simd_clone_call): Likewise.
+	(vect_get_loop_based_defs): Remove.
+	(vect_create_vectorized_demotion_stmts): Adjust.
+	(vectorizable_conversion): Likewise.
+	(vectorizable_assignment): Likewise.
+	(vectorizable_shift): Likewise.
+	(vectorizable_operation): Likewise.
+	(vectorizable_scan_store): Likewise.
+	(vectorizable_store): Likewise.
+	(vectorizable_load): Likewise.
+	(vectorizable_condition): Likewise.
+	(vectorizable_comparison): Likewise.
+	(vect_transform_stmt): Adjust and remove no longer applicable
+	sanity checks.
+	* tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize
+	STMT_VINFO_VEC_STMTS.
+	(vec_info::free_stmt_vec_info): Relase it.
+	* tree-vectorizer.h (_stmt_vec_info::vectorized_stmt): Remove.
+	(_stmt_vec_info::vec_stmts): Add.
+	(STMT_VINFO_VEC_STMT): Remove.
+	(STMT_VINFO_VEC_STMTS): New.
+	(vect_get_vec_def_for_operand_1): Remove.
+	(vect_get_vec_def_for_operand): Likewise.
+	(vect_get_vec_defs_for_stmt_copy): Likewise.
+	(vect_get_vec_def_for_stmt_copy): Likewise.
+	(vect_get_vec_defs): New overloads.
+	(vect_get_vec_defs_for_operand): New.
+	(vect_get_slp_defs): Declare.
+
+2020-06-10  Qian Chao  <qianchao9@huawei.com>
+
+	PR tree-optimization/95569
+	* trans-mem.c (expand_assign_tm): Ensure that rtmp is marked TREE_ADDRESSABLE.
+
+2020-06-10  Martin Liska  <mliska@suse.cz>
+
+	PR tree-optimization/92860
+	* optc-save-gen.awk: Generate new function cl_optimization_compare.
+	* opth-gen.awk: Generate declaration of the function.
+
+2020-06-09  Michael Meissner  <meissner@linux.ibm.com>
+
+	* config/rs6000/ppc-auxv.h (PPC_PLATFORM_FUTURE): Allocate
+	'future' PowerPC platform.
+	(PPC_FEATURE2_ARCH_3_1): New HWCAP2 bit for ISA 3.1.
+	(PPC_FEATURE2_MMA): New HWCAP2 bit for MMA.
+	* config/rs6000/rs6000-call.c (cpu_supports_info): Add ISA 3.1 and
+	MMA HWCAP2 bits.
+	* config/rs6000/rs6000.c (CLONE_ISA_3_1): New clone support.
+	(rs6000_clone_map): Add 'future' system target_clones support.
+
+2020-06-09  Michael Kuhn  <gcc@ikkoku.de>
+
+	* Makefile.in (ZSTD_INC): Define.
+	(ZSTD_LIB): Include ZSTD_LDFLAGS.
+	(CFLAGS-lto-compress.o): Add ZSTD_INC.
+	* configure.ac (ZSTD_CPPFLAGS, ZSTD_LDFLAGS): New variables for
+	AC_SUBST.
+	* configure: Rebuilt.
+
+2020-06-09  Jason Merrill  <jason@redhat.com>
+
+	PR c++/95552
+	* tree.c (walk_tree_1): Call func on the TYPE_DECL of a DECL_EXPR.
+
+2020-06-09  Marco Elver  <elver@google.com>
+
+	* params.opt: Define --param=tsan-distinguish-volatile=[0,1].
+	* sanitizer.def (BUILT_IN_TSAN_VOLATILE_READ1): Define new
+	builtin for volatile instrumentation of reads/writes.
+	(BUILT_IN_TSAN_VOLATILE_READ2): Likewise.
+	(BUILT_IN_TSAN_VOLATILE_READ4): Likewise.
+	(BUILT_IN_TSAN_VOLATILE_READ8): Likewise.
+	(BUILT_IN_TSAN_VOLATILE_READ16): Likewise.
+	(BUILT_IN_TSAN_VOLATILE_WRITE1): Likewise.
+	(BUILT_IN_TSAN_VOLATILE_WRITE2): Likewise.
+	(BUILT_IN_TSAN_VOLATILE_WRITE4): Likewise.
+	(BUILT_IN_TSAN_VOLATILE_WRITE8): Likewise.
+	(BUILT_IN_TSAN_VOLATILE_WRITE16): Likewise.
+	* tsan.c (get_memory_access_decl): Argument if access is
+	volatile. If param tsan-distinguish-volatile is non-zero, and
+	access if volatile, return volatile instrumentation decl.
+	(instrument_expr): Check if access is volatile.
+
+2020-06-09  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-loop.c (vectorizable_induction): Remove dead code.
+
+2020-06-09  Tobias Burnus  <tobias@codesourcery.com>
+
+	* omp-offload.c (add_decls_addresses_to_decl_constructor,
+	omp_finish_file): With in_lto_p, stream out all offload-table
+	items even if the symtab_node does not exist.
+
+2020-06-09  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-stmts.c (vect_transform_stmt): Remove dead code.
+
+2020-06-09  Martin Liska  <mliska@suse.cz>
+
+	* gcov-dump.c (print_usage): Fix spacing for --raw option
+	in --help.
+
+2020-06-09  Martin Liska  <mliska@suse.cz>
+
+	* cif-code.def (ATTRIBUTE_MISMATCH): Rename to...
+	(SANITIZE_ATTRIBUTE_MISMATCH): ...this.
+	* ipa-inline.c (sanitize_attrs_match_for_inline_p):
+	Handle all sanitizer options.
+	(can_inline_edge_p): Use renamed CIF_* enum value.
+
+2020-06-09  Joe Ramsay  <joe.ramsay@arm.com>
+
+	* config/aarch64/aarch64-sve.md (<optab><mode>2): Add support for
+	unpacked vectors.
+	(@aarch64_pred_<optab><mode>): Add support for unpacked vectors.
+	(@aarch64_bic<mode>): Enable unpacked BIC.
+	(*bic<mode>3): Enable unpacked BIC.
+
+2020-06-09  Martin Liska  <mliska@suse.cz>
+
+	PR gcov-profile/95365
+	* doc/gcov.texi: Compile and link one example in 2 steps.
+
+2020-06-09  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/95527
+	* match.pd (__builtin_ffs (X) cmp CST): New optimizations.
+
+2020-06-09  Michael Meissner  <meissner@linux.ibm.com>
+
+	* config/rs6000/ppc-auxv.h (PPC_PLATFORM_FUTURE): Allocate
+	'future' PowerPC platform.
+	(PPC_FEATURE2_ARCH_3_1): New HWCAP2 bit for ISA 3.1.
+	(PPC_FEATURE2_MMA): New HWCAP2 bit for MMA.
+	* config/rs6000/rs6000-call.c (cpu_supports_info): Add ISA 3.1 and
+	MMA HWCAP2 bits.
+	* config/rs6000/rs6000.c (CLONE_ISA_3_1): New clone support.
+	(rs6000_clone_map): Add 'future' system target_clones support.
+
+2020-06-08  Tobias Burnus  <tobias@codesourcery.com>
+
+	PR lto/94848
+	PR middle-end/95551
+	* omp-offload.c (add_decls_addresses_to_decl_constructor,
+	omp_finish_file): Skip removed items.
+	* lto-cgraph.c (output_offload_tables): Likewise; set force_output
+	to this node for variables and functions.
+
+2020-06-08  Jason Merrill  <jason@redhat.com>
+
+	* aclocal.m4: Remove ax_cxx_compile_stdcxx.m4.
+	* configure.ac: Remove AX_CXX_COMPILE_STDCXX.
+	* configure: Regenerate.
+
+2020-06-08  Martin Sebor  <msebor@redhat.com>
+
+	* postreload.c (reload_cse_simplify_operands): Clear first array element
+	before using it.  Assert a precondition.
+
+2020-06-08  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/95528
+	* tree-ssa-forwprop.c (simplify_vector_constructor): Don't use
+	VEC_UNPACK*_EXPR or VEC_PACK_TRUNC_EXPR with scalar modes unless the
+	type is vector boolean.
+
+2020-06-08  Tamar Christina  <tamar.christina@arm.com>
+
+	* config/aarch64/aarch64.c (aarch64_layout_frame): Expand comments.
+
+2020-06-08  Christophe Lyon  <christophe.lyon@linaro.org>
+
+	* config/arm/predicates.md (vfp_register_operand): Use VFP_HI_REGS
+	instead of VFP_REGS.
+
+2020-06-08  Martin Liska  <mliska@suse.cz>
+
+	* config/rs6000/vector.md: Replace FAIL with gcc_unreachable
+	in all vcond* patterns.
+
+2020-06-08  Christophe Lyon  <christophe.lyon@linaro.org>
+
+	* common/config/arm/arm-common.c (INCLUDE_ALGORITHM):
+	Define. No longer include <algorithm>.
+
+2020-06-07  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* config/i386/i386.md (paritydi2, paritysi2): Expand reduction
+	via shift and xor to an USPEC PARITY matching a parityhi2_cmp.
+	(paritydi2_cmp, paritysi2_cmp): Delete these define_insn_and_split.
+	(parityhi2, parityqi2): New expanders.
+	(parityhi2_cmp): Implement set parity flag with xorb insn.
+	(parityqi2_cmp): Implement set parity flag with testb insn.
+	New peephole2s to use these insns (UNSPEC PARITY) when appropriate.
+
+2020-06-07  Jiufu Guo  <guojiufu@linux.ibm.com>
+
+	PR target/95018
+	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+	Override flag_cunroll_grow_size.
+
+2020-06-07  Jiufu Guo  <guojiufu@linux.ibm.com>
+
+	* common.opt (flag_cunroll_grow_size): New flag.
+	* toplev.c (process_options): Set flag_cunroll_grow_size.
+	* tree-ssa-loop-ivcanon.c (pass_complete_unroll::execute):
+	Use flag_cunroll_grow_size.
+
+2020-06-06  Jan Hubicka  <hubicka@ucw.cz>
+
+	PR lto/95548
+	* ipa-devirt.c (struct odr_enum_val): Turn values to wide_int.
+	(ipa_odr_summary_write): Update streaming.
+	(ipa_odr_read_section): Update streaming.
+
+2020-06-06  Alexandre Oliva  <oliva@adacore.com>
+
+	PR driver/95456
+	* gcc.c (do_spec_1): Don't call memcpy (_, NULL, 0).
+
+2020-06-05  Thomas Schwinge  <thomas@codesourcery.com>
+	    Julian Brown  <julian@codesourcery.com>
+
+	* gimplify.c (gimplify_adjust_omp_clauses): Remove
+	'GOMP_MAP_STRUCT' mapping from OpenACC 'exit data' directives.
+
+2020-06-05  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95539
+	* tree-vect-data-refs.c
+	(vect_slp_analyze_and_verify_instance_alignment): Use
+	SLP_TREE_REPRESENTATIVE for the data-ref check.
+	* tree-vect-stmts.c (vectorizable_load): Reset stmt_info
+	back to the first scalar stmt rather than the
+	SLP_TREE_REPRESENTATIVE to match previous behavior.
+
+2020-06-05  Felix Yang  <felix.yang@huawei.com>
+
+	PR target/95254
+	* expr.c (emit_move_insn): Check src and dest of the copy to see
+	if one or both of them are subregs, try to remove the subregs when
+	innermode and outermode are equal in size and the mode change involves
+	an implicit round trip through memory.
+
+2020-06-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/95535
+	* config/i386/i386.md (*ctzsi2_zext, *clzsi2_lzcnt_zext): New
+	define_insn_and_split patterns.
+	(*ctzsi2_zext_falsedep, *clzsi2_lzcnt_zext_falsedep): New
+	define_insn patterns.
+
+2020-06-05  Jonathan Wakely  <jwakely@redhat.com>
+
+	* alloc-pool.h (object_allocator::remove_raw): New.
+	* tree-ssa-math-opts.c (struct occurrence): Use NSMDI.
+	(occurrence::occurrence): Add.
+	(occurrence::~occurrence): Likewise.
+	(occurrence::new): Likewise.
+	(occurrence::delete): Likewise.
+	(occ_new): Remove.
+	(insert_bb): Use new occurence (...) instead of occ_new.
+	(register_division_in): Likewise.
+	(free_bb): Use delete occ instead of manually removing
+	from the pool.
+
+2020-06-05  Richard Biener  <rguenther@suse.de>
+
+	PR middle-end/95493
+	* cfgexpand.c (expand_debug_expr): Avoid calling
+	set_mem_attributes_minus_bitpos when we were expanding
+	an SSA name.
+	* emit-rtl.c (set_mem_attributes_minus_bitpos): Remove
+	ARRAY_REF special-casing, add CONSTRUCTOR to the set of
+	special-cases we do not want MEM_EXPRs for.  Assert
+	we end up with reasonable MEM_EXPRs.
+
+2020-06-05  Lili Cui  <lili.cui@intel.com>
+
+	PR target/95525
+	* config/i386/i386.h (PTA_WAITPKG): Change bitmask value.
+
+2020-06-04  Martin Sebor  <msebor@redhat.com>
+
+	PR middle-end/10138
+	PR middle-end/95136
+	* attribs.c (init_attr_rdwr_indices): Move function here.
+	* attribs.h (rdwr_access_hash, rdwr_map): Define.
+	(attr_access): Add 'none'.
+	(init_attr_rdwr_indices): Declared function.
+	* builtins.c (warn_for_access)): New function.
+	(check_access): Call it.
+	* builtins.h (checK-access): Add an optional argument.
+	* calls.c (rdwr_access_hash, rdwr_map): Move to attribs.h.
+	(init_attr_rdwr_indices): Declare extern.
+	(append_attrname): Handle attr_access::none.
+	(maybe_warn_rdwr_sizes): Same.
+	(initialize_argument_information): Update comments.
+	* doc/extend.texi (attribute access): Document 'none'.
+	* tree-ssa-uninit.c (struct wlimits): New.
+	(maybe_warn_operand): New function.
+	(maybe_warn_pass_by_reference): Same.
+	(warn_uninitialized_vars): Refactor code into maybe_warn_operand.
+	Also call for function calls.
+	(pass_late_warn_uninitialized::execute): Adjust comments.
+	(execute_early_warn_uninitialized): Same.
+
+2020-06-04  Vladimir Makarov  <vmakarov@redhat.com>
+
+	PR middle-end/95464
+	* lra.c (lra_emit_move): Add processing STRICT_LOW_PART.
+	* lra-constraints.c (match_reload): Use STRICT_LOW_PART in output
+	reload if the original insn has it too.
+
+2020-06-04  Richard Biener  <rguenther@suse.de>
+
+	* config/aarch64/aarch64.c (aarch64_gimplify_va_arg_expr):
+	Ensure that tmp_ha is marked TREE_ADDRESSABLE.
+
+2020-06-04  Martin Jambor  <mjambor@suse.cz>
+
+	PR ipa/95113
+	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Move non-call
+	exceptions check to...
+	* tree-eh.c (stmt_unremovable_because_of_non_call_eh_p): ...this
+	new function.
+	* tree-eh.h (stmt_unremovable_because_of_non_call_eh_p): Declare it.
+	* ipa-sra.c (isra_track_scalar_value_uses): Use it.  New parameter
+	fun.
+
+2020-06-04  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+
+	PR target/94735
+	* config/arm/predicates.md (mve_scatter_memory): Define to
+	match (mem (reg)) for scatter store memory.
+	* config/arm/mve.md (mve_vstrbq_scatter_offset_<supf><mode>): Modify
+	define_insn to define_expand.
+	(mve_vstrbq_scatter_offset_p_<supf><mode>): Likewise.
+	(mve_vstrhq_scatter_offset_<supf><mode>): Likewise.
+	(mve_vstrhq_scatter_shifted_offset_p_<supf><mode>): Likewise.
+	(mve_vstrhq_scatter_shifted_offset_<supf><mode>): Likewise.
+	(mve_vstrdq_scatter_offset_p_<supf>v2di): Likewise.
+	(mve_vstrdq_scatter_offset_<supf>v2di): Likewise.
+	(mve_vstrdq_scatter_shifted_offset_p_<supf>v2di): Likewise.
+	(mve_vstrdq_scatter_shifted_offset_<supf>v2di): Likewise.
+	(mve_vstrhq_scatter_offset_fv8hf): Likewise.
+	(mve_vstrhq_scatter_offset_p_fv8hf): Likewise.
+	(mve_vstrhq_scatter_shifted_offset_fv8hf): Likewise.
+	(mve_vstrhq_scatter_shifted_offset_p_fv8hf): Likewise.
+	(mve_vstrwq_scatter_offset_fv4sf): Likewise.
+	(mve_vstrwq_scatter_offset_p_fv4sf): Likewise.
+	(mve_vstrwq_scatter_offset_p_<supf>v4si): Likewise.
+	(mve_vstrwq_scatter_offset_<supf>v4si): Likewise.
+	(mve_vstrwq_scatter_shifted_offset_fv4sf): Likewise.
+	(mve_vstrwq_scatter_shifted_offset_p_fv4sf): Likewise.
+	(mve_vstrwq_scatter_shifted_offset_p_<supf>v4si): Likewise.
+	(mve_vstrwq_scatter_shifted_offset_<supf>v4si): Likewise.
+	(mve_vstrbq_scatter_offset_<supf><mode>_insn): Define insn for scatter
+	stores.
+	(mve_vstrbq_scatter_offset_p_<supf><mode>_insn): Likewise.
+	(mve_vstrhq_scatter_offset_<supf><mode>_insn): Likewise.
+	(mve_vstrhq_scatter_shifted_offset_p_<supf><mode>_insn): Likewise.
+	(mve_vstrhq_scatter_shifted_offset_<supf><mode>_insn): Likewise.
+	(mve_vstrdq_scatter_offset_p_<supf>v2di_insn): Likewise.
+	(mve_vstrdq_scatter_offset_<supf>v2di_insn): Likewise.
+	(mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn): Likewise.
+	(mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn): Likewise.
+	(mve_vstrhq_scatter_offset_fv8hf_insn): Likewise.
+	(mve_vstrhq_scatter_offset_p_fv8hf_insn): Likewise.
+	(mve_vstrhq_scatter_shifted_offset_fv8hf_insn): Likewise.
+	(mve_vstrhq_scatter_shifted_offset_p_fv8hf_insn): Likewise.
+	(mve_vstrwq_scatter_offset_fv4sf_insn): Likewise.
+	(mve_vstrwq_scatter_offset_p_fv4sf_insn): Likewise.
+	(mve_vstrwq_scatter_offset_p_<supf>v4si_insn): Likewise.
+	(mve_vstrwq_scatter_offset_<supf>v4si_insn): Likewise.
+	(mve_vstrwq_scatter_shifted_offset_fv4sf_insn): Likewise.
+	(mve_vstrwq_scatter_shifted_offset_p_fv4sf_insn): Likewise.
+	(mve_vstrwq_scatter_shifted_offset_p_<supf>v4si_insn): Likewise.
+	(mve_vstrwq_scatter_shifted_offset_<supf>v4si_insn): Likewise.
+
+2020-06-04  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+
+	* config/arm/arm_mve.h (__arm_vbicq_n_u16): Correct the intrinsic
+	arguments.
+	(__arm_vbicq_n_s16): Likewise.
+	(__arm_vbicq_n_u32): Likewise.
+	(__arm_vbicq_n_s32): Likewise.
+	(__arm_vbicq): Modify polymorphic variant.
+
+2020-06-04  Richard Biener  <rguenther@suse.de>
+
+	* tree-vectorizer.h (vect_get_slp_vect_def): Declare.
+	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use it.
+	* tree-vect-stmts.c (vect_transform_stmt): Likewise.
+	(vect_is_simple_use): Use SLP_TREE_REPRESENTATIVE.
+	* tree-vect-slp.c (vect_get_slp_vect_defs): Fold into single
+	use ...
+	(vect_get_slp_defs): ... here.
+	(vect_get_slp_vect_def): New function.
+
+2020-06-04  Richard Biener  <rguenther@suse.de>
+
+	* tree-vectorizer.h (_slp_tree::lanes): New.
+	(SLP_TREE_LANES): Likewise.
+	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use it.
+	(vectorizable_reduction): Likewise.
+	(vect_transform_cycle_phi): Likewise.
+	(vectorizable_induction): Likewise.
+	(vectorizable_live_operation): Likewise.
+	* tree-vect-slp.c (_slp_tree::_slp_tree): Initialize lanes.
+	(vect_create_new_slp_node): Likewise.
+	(slp_copy_subtree): Copy it.
+	(vect_optimize_slp): Use it.
+	(vect_slp_analyze_node_operations_1): Likewise.
+	(vect_slp_convert_to_external): Likewise.
+	(vect_bb_vectorization_profitable_p): Likewise.
+	* tree-vect-stmts.c (vectorizable_load): Likewise.
+	(get_vectype_for_scalar_type): Likewise.
+
+2020-06-04  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-slp.c (vect_update_all_shared_vectypes): Remove.
+	(vect_build_slp_tree_2): Simplify building all external op
+	nodes from scalars.
+	(vect_slp_analyze_node_operations): Remove push/pop of
+	STMT_VINFO_DEF_TYPE.
+	(vect_schedule_slp_instance): Likewise.
+	* tree-vect-stmts.c (ect_check_store_rhs): Pass in the
+	stmt_info, use the vect_is_simple_use overload combining
+	SLP and stmt_info analysis.
+	(vect_is_simple_cond): Likewise.
+	(vectorizable_store): Adjust.
+	(vectorizable_condition): Likewise.
+	(vect_is_simple_use): Fully handle invariant SLP nodes
+	here.  Amend stmt_info operand extraction with COND_EXPR
+	and masked stores.
+	* tree-vect-loop.c (vectorizable_reduction): Deal with
+	COND_EXPR representation ugliness.
+
+2020-06-04  Hongtao Liu  <hongtao.liu@inte.com>
+
+	PR target/95254
+	* config/i386/sse.md (*vcvtps2ph_store<merge_mask_name>):
+	Refine from *vcvtps2ph_store<mask_name>.
+	(vcvtps2ph256<mask_name>): Refine constraint from vm to v.
+	(<mask_codefor>avx512f_vcvtps2ph512<mask_name>): Ditto.
+	(*vcvtps2ph256<merge_mask_name>): New define_insn.
+	(*avx512f_vcvtps2ph512<merge_mask_name>): Ditto.
+	* config/i386/subst.md (merge_mask): New define_subst.
+	(merge_mask_name): New define_subst_attr.
+	(merge_mask_operand3): Ditto.
+
+2020-06-04  Hao Liu  <hliu@os.amperecomputing.com>
+
+	PR tree-optimization/89430
+	* tree-ssa-phiopt.c
+	(struct name_to_bb): Rename to ref_to_bb; add a new field exp;
+	remove ssa_name_ver, store, offset fields.
+	(struct ssa_names_hasher): Rename to refs_hasher; update functions.
+	(class nontrapping_dom_walker): Rename m_seen_ssa_names to m_seen_refs.
+	(nontrapping_dom_walker::add_or_mark_expr): Extend to support ARRAY_REFs
+	and COMPONENT_REFs.
+
+2020-06-04  Andreas Schwab  <schwab@suse.de>
+
+	PR target/95154
+	* config/ia64/ia64.h (ASM_OUTPUT_FDESC): Call assemble_external.
+
+2020-06-04  Hongtao.liu  <hongtao.liu@intel.com>
+
+	* config/i386/sse.md (pmov_dst_3_lower): New mode attribute.
+	(trunc<mode><pmov_dst_3_lower>2): Refine from
+	trunc<mode><pmov_dst_3>2.
+
+2020-06-03  Vitor Guidi  <vitor.guidi@usp.br>
+
+	* match.pd (tanh/sinh -> 1/cosh): New simplification.
+
+2020-06-03  Aaron Sawdey  <acsawdey@linux.ibm.com>
+
+	PR target/95347
+	* config/rs6000/rs6000.c (is_stfs_insn): Rename to
+	is_lfs_stfs_insn and make it recognize lfs as well.
+	(prefixed_store_p): Use is_lfs_stfs_insn().
+	(prefixed_load_p): Use is_lfs_stfs_insn() to recognize lfs.
+
+2020-06-03  Jan Hubicka  <hubicka@ucw.cz>
+
+	* ipa-devirt.c: Include data-streamer.h, lto-streamer.h and
+	streamer-hooks.h.
+	(odr_enums): New static var.
+	(struct odr_enum_val): New struct.
+	(class odr_enum): New struct.
+	(odr_enum_map): New hashtable.
+	(odr_types_equivalent_p): Drop code testing TYPE_VALUES.
+	(add_type_duplicate): Likewise.
+	(free_odr_warning_data): Do not free TYPE_VALUES.
+	(register_odr_enum): New function.
+	(ipa_odr_summary_write): New function.
+	(ipa_odr_read_section): New function.
+	(ipa_odr_summary_read): New function.
+	(class pass_ipa_odr): New pass.
+	(make_pass_ipa_odr): New function.
+	* ipa-utils.h (register_odr_enum): Declare.
+	* lto-section-in.c: (lto_section_name): Add odr_types section.
+	* lto-streamer.h (enum lto_section_type): Add odr_types section.
+	* passes.def: Add odr_types pass.
+	* lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream
+	TYPE_VALUES.
+	(hash_tree): Likewise.
+	* tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
+	Likewise.
+	* tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
+	Likewise.
+	* timevar.def (TV_IPA_ODR): New timervar.
+	* tree-pass.h (make_pass_ipa_odr): Declare.
+	* tree.c (free_lang_data_in_type): Regiser ODR types.
+
+2020-06-03  Romain Naour  <romain.naour@gmail.com>
+
+	* Makefile.in (SELFTEST_DEPS): Move before including language makefile
+	fragments.
+
+2020-06-03  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95487
+	* tree-vect-stmts.c (vectorizable_store): Use a truth type
+	for the scatter mask.
+
+2020-06-03  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95495
+	* tree-vect-slp.c (vect_slp_analyze_node_operations): Use
+	SLP_TREE_REPRESENTATIVE in the shift assertion.
+
+2020-06-03  Tom Tromey  <tromey@adacore.com>
+
+	* spellcheck.c (CASE_COST): New define.
+	(BASE_COST): New define.
+	(get_edit_distance): Recognize case changes.
+	(get_edit_distance_cutoff): Update.
+	(test_edit_distances): Update.
+	(get_old_cutoff): Update.
+	(test_find_closest_string): Add case sensitivity test.
+
+2020-06-03  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-slp.c (vect_bb_vectorization_profitable_p): Loop over
+	the cost vector to unset the visited flag on stmts.
+
+2020-06-03  Tobias Burnus  <tobias@codesourcery.com>
+
+	* gimplify.c (omp_notice_variable): Use new hook.
+	* langhooks-def.h (lhd_omp_predetermined_mapping): Declare.
+	(LANG_HOOKS_OMP_PREDETERMINED_MAPPING): Define
+	(LANG_HOOKS_DECLS): Add it.
+	* langhooks.c (lhd_omp_predetermined_sharing): Remove bogus unused attr.
+	(lhd_omp_predetermined_mapping): New.
+	* langhooks.h (struct lang_hooks_for_decls): Add new hook.
+
+2020-06-03  Jan Hubicka  <jh@suse.cz>
+
+	* lto-streamer.h (LTO_tags): Reorder so frequent tags has small indexes;
+	add LTO_first_tree_tag and LTO_first_gimple_tag.
+	(lto_tag_is_tree_code_p): Update.
+	(lto_tag_is_gimple_code_p): Update.
+	(lto_gimple_code_to_tag): Update.
+	(lto_tag_to_gimple_code): Update.
+	(lto_tree_code_to_tag): Update.
+	(lto_tag_to_tree_code): Update.
+
+2020-06-02  Felix Yang  <felix.yang@huawei.com>
+
+	PR target/95459
+	* config/aarch64/aarch64.c (aarch64_short_vector_p):
+	Leave later code to report an error if SVE is disabled.
+
+2020-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+	* config/aarch64/aarch64-cores.def (zeus): Define.
+	* config/aarch64/aarch64-tune.md: Regenerate.
+	* doc/invoke.texi (AArch64 Options): Document zeus -mcpu option.
+
+2020-06-02  Aaron Sawdey  <acsawdey@linux.ibm.com>
+
+	PR target/95347
+	* config/rs6000/rs6000.c (prefixed_store_p): Add special case
+	for stfs.
+	(is_stfs_insn): New helper function.
+
+2020-06-02  Jan Hubicka  <jh@suse.cz>
+
+	* lto-streamer-in.c (stream_read_tree_ref): Simplify streaming of
+	references.
+	* lto-streamer-out.c (stream_write_tree_ref): Likewise.
+
+2020-06-02  Andrew Stubbs  <ams@codesourcery.com>
+
+	* config/gcn/gcn-hsa.h (CC1_SPEC): Delete.
+	* config/gcn/gcn.opt (-mlocal-symbol-id): Delete.
+	* config/gcn/mkoffload.c (main): Don't use -mlocal-symbol-id.
+
+2020-06-02  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+
+	PR middle-end/95395
+	* optabs.c (expand_unop): Fix bits/bytes confusion in latest change.
+	* tree-pretty-print.c (dump_generic_node) <ARRAY_TYPE>: Print quals.
+
+2020-06-02  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+
+	* config/s390/s390.c (print_operand): Emit vector alignment
+	hints for z13.
+
+2020-06-02  Martin Liska  <mliska@suse.cz>
+
+	* coverage.c (get_coverage_counts): Skip sanity check for TOP N counters
+	as they have variable number of counters.
+	* gcov-dump.c (main): Add new option -r.
+	(print_usage): Likewise.
+	(tag_counters): All new raw format.
+	* gcov-io.h (struct gcov_kvp): New.
+	(GCOV_TOPN_VALUES): Remove.
+	(GCOV_TOPN_VALUES_COUNTERS): Likewise.
+	(GCOV_TOPN_MEM_COUNTERS): New.
+	(GCOV_TOPN_DISK_COUNTERS): Likewise.
+	(GCOV_TOPN_MAXIMUM_TRACKED_VALUES): Likewise.
+	* ipa-profile.c (ipa_profile_generate_summary): Use
+	GCOV_TOPN_MAXIMUM_TRACKED_VALUES.
+	(ipa_profile_write_edge_summary): Likewise.
+	(ipa_profile_read_edge_summary): Likewise.
+	(ipa_profile): Remove usage of GCOV_TOPN_VALUES.
+	* profile.c (sort_hist_values): Sort variable number
+	of counters.
+	(compute_value_histograms): Special case for TOP N counters
+	that have dynamic number of key-value pairs.
+	* value-prof.c (dump_histogram_value): Dump variable number
+	of key-value pairs.
+	(stream_in_histogram_value): Stream in variable number
+	of key-value pairs for TOP N counter.
+	(get_nth_most_common_value): Deal with variable number
+	of key-value pairs.
+	(dump_ic_profile): Use GCOV_TOPN_MAXIMUM_TRACKED_VALUES
+	for loop iteration.
+	(gimple_find_values_to_profile): Set GCOV_TOPN_MEM_COUNTERS
+	to n_counters.
+	* doc/gcov-dump.texi: Document new -r option.
+
+2020-06-02  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	PR target/95420
+	* config.gcc (arm-wrs-vxworks7*): Set default cpu to generic-armv7-a.
+
+2020-06-01  Jeff Law  <law@torsion.usersys.redhat.com>
+
+	* lower-subreg.c (resolve_simple_move): If simplify_gen_subreg_concatn
+	returns (const_int 0) for the destination, then emit nothing.
+
+2020-06-01  Jan Hubicka  <hubicka@ucw.cz>
+
+	* lto-streamer.h (enum LTO_tags): Remove LTO_field_decl_ref,
+	LTO_function_decl_ref, LTO_label_decl_ref, LTO_namespace_decl_ref,
+	LTO_result_decl_ref, LTO_type_decl_ref, LTO_type_ref,
+	LTO_const_decl_ref, LTO_imported_decl_ref,
+	LTO_translation_unit_decl_ref, LTO_global_decl_ref and
+	LTO_namelist_decl_ref; add LTO_global_stream_ref.
+	* lto-streamer-in.c (lto_input_tree_ref): Simplify.
+	(lto_input_scc): Update.
+	(lto_input_tree_1): Update.
+	* lto-streamer-out.c (lto_indexable_tree_ref): Simlify.
+	* lto-streamer.c (lto_tag_name): Update.
+
+2020-06-01  Jan Hubicka  <hubicka@ucw.cz>
+
+	* ipa-reference.c (stream_out_bitmap): Use lto_output_var_decl_ref.
+	(ipa_reference_read_optimization_summary): Use lto_intput_var_decl_ref.
+	* lto-cgraph.c (lto_output_node): Likewise.
+	(lto_output_varpool_node): Likewise.
+	(output_offload_tables): Likewise.
+	(input_node): Likewise.
+	(input_varpool_node): Likewise.
+	(input_offload_tables): Likewise.
+	* lto-streamer-in.c (lto_input_tree_ref): Declare.
+	(lto_input_var_decl_ref): Declare.
+	(lto_input_fn_decl_ref): Declare.
+	* lto-streamer-out.c (lto_indexable_tree_ref): Use only one decl stream.
+	(lto_output_var_decl_index): Rename to ..
+	(lto_output_var_decl_ref): ... this.
+	(lto_output_fn_decl_index): Rename to ...
+	(lto_output_fn_decl_ref): ... this.
+	* lto-streamer.h (enum lto_decl_stream_e_t): Remove per-type streams.
+	(DEFINE_DECL_STREAM_FUNCS): Remove.
+	(lto_output_var_decl_index): Remove.
+	(lto_output_fn_decl_index): Remove.
+	(lto_output_var_decl_ref): Declare.
+	(lto_output_fn_decl_ref): Declare.
+	(lto_input_var_decl_ref): Declare.
+	(lto_input_fn_decl_ref): Declare.
+
+2020-06-01  Feng Xue  <fxue@os.amperecomputing.com>
+
+	* cgraphclones.c (materialize_all_clones): Adjust replace map dump.
+	* ipa-param-manipulation.c (ipa_dump_adjusted_parameters): Do not
+	dump infomation if there is no adjusted parameter.
+	* (ipa_param_adjustments::dump): Adjust prefix spaces for dump string.
+
+2020-06-01  Aldy Hernandez  <aldyh@redhat.com>
+
+	* Makefile.in (gimple-array-bounds.o): New.
+	* tree-vrp.c: Move array bounds code...
+	* gimple-array-bounds.cc: ...here...
+	* gimple-array-bounds.h: ...and here.
+
+2020-06-01  Aldy Hernandez  <aldyh@redhat.com>
+
+	* Makefile.in (OBJS): Add value-range-equiv.o.
+	* tree-vrp.c (*value_range_equiv*): Move to...
+	* value-range-equiv.cc: ...here.
+	* tree-vrp.h (class value_range_equiv): Move to...
+	* value-range-equiv.h: ...here.
+	* vr-values.h: Include value-range-equiv.h.
+
+2020-06-01  Feng Xue  <fxue@os.amperecomputing.com>
+
+	PR ipa/93429
+	* ipa-cp.c (propagate_aggs_across_jump_function): Check aggregate
+	lattice for simple pass-through by-ref argument.
+
+2020-05-31  Jeff Law  <law@redhat.com>
+
+	* lra.c (add_auto_inc_notes): Remove function.
+	* reload1.c (add_auto_inc_notes): Similarly.  Move into...
+	* rtlanal.c (add_auto_inc_notes): New function.
+	* rtl.h (add_auto_inc_notes): Add prototype.
+	* recog.c (peep2_attempt): Scan and add REG_INC notes to new insns
+	as needed.
+
+2020-05-31  Jan Hubicka  <jh@suse.cz>
+
+	* lto-section-out.c (lto_output_decl_index): Remove.
+	(lto_output_field_decl_index): Move to lto-streamer-out.c
+	(lto_output_fn_decl_index): Move to lto-streamer-out.c
+	(lto_output_namespace_decl_index): Remove.
+	(lto_output_var_decl_index): Remove.
+	(lto_output_type_decl_index): Remove.
+	(lto_output_type_ref_index): Remove.
+	* lto-streamer-out.c (output_type_ref): Remove.
+	(lto_get_index): New function.
+	(lto_output_tree_ref): Remove.
+	(lto_indexable_tree_ref): New function.
+	(lto_output_var_decl_index): Move here from lto-section-out.c; simplify.
+	(lto_output_fn_decl_index): Move here from lto-section-out.c; simplify.
+	(stream_write_tree_ref): Update.
+	(lto_output_tree): Update.
+	* lto-streamer.h (lto_output_decl_index): Remove prototype.
+	(lto_output_field_decl_index): Remove prototype.
+	(lto_output_namespace_decl_index): Remove prototype.
+	(lto_output_type_decl_index): Remove prototype.
+	(lto_output_type_ref_index): Remove prototype.
+	(lto_output_var_decl_index): Move.
+	(lto_output_fn_decl_index): Move
+
+2020-05-31  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/95052
+	* expr.c (store_expr): For shortedned_string_cst, ensure temp has
+	BLKmode.
+
+2020-05-31  Jeff Law  <law@redhat.com>
+
+	* config/h8300/jumpcall.md (brabs, brabc): Disable patterns.
+
+2020-05-31  Jim Wilson  <jimw@sifive.com>
+
+	* config/riscv/riscv.md (zero_extendsidi2_shifted): New.
+
+2020-05-30  Jonathan Yong  <10walls@gmail.com>
+
+	* config/i386/mingw32.h (REAL_LIBGCC_SPEC): Insert -lkernel32
+	after -lmsvcrt. This is necessary as libmsvcrt.a is not a pure
+	import library, but also contains some functions that invoke
+	others in KERNEL32.DLL.
+
+2020-05-29  Segher Boessenkool  <segher@kernel.crashing.org>
+
+	* config/rs6000/altivec.md (altivec_vmrghw_direct): Prefer VSX form.
+	(altivec_vmrglw_direct): Ditto.
+	(altivec_vperm_<mode>_direct): Ditto.
+	(altivec_vperm_v8hiv16qi): Ditto.
+	(*altivec_vperm_<mode>_uns_internal): Ditto.
+	(*altivec_vpermr_<mode>_internal): Ditto.
+	(vperm_v8hiv4si): Ditto.
+	(vperm_v16qiv8hi): Ditto.
+
+2020-05-29  Jan Hubicka  <jh@suse.cz>
+
+	* lto-streamer-in.c (streamer_read_chain): Move here from
+	tree-streamer-in.c.
+	(stream_read_tree_ref): New.
+	(lto_input_tree_1): Simplify.
+	* lto-streamer-out.c (stream_write_tree_ref): New.
+	(lto_write_tree_1): Simplify.
+	(lto_output_tree_1): Simplify.
+	(DFS::DFS_write_tree): Simplify.
+	(streamer_write_chain): Move here from tree-stremaer-out.c.
+	* lto-streamer.h (lto_output_tree_ref): Update prototype.
+	(stream_read_tree_ref): Declare
+	(stream_write_tree_ref): Declare
+	* tree-streamer-in.c (streamer_read_chain): Update to use
+	stream_read_tree_ref.
+	(lto_input_ts_common_tree_pointers): Likewise.
+	(lto_input_ts_vector_tree_pointers): Likewise.
+	(lto_input_ts_poly_tree_pointers): Likewise.
+	(lto_input_ts_complex_tree_pointers): Likewise.
+	(lto_input_ts_decl_minimal_tree_pointers): Likewise.
+	(lto_input_ts_decl_common_tree_pointers): Likewise.
+	(lto_input_ts_decl_with_vis_tree_pointers): Likewise.
+	(lto_input_ts_field_decl_tree_pointers): Likewise.
+	(lto_input_ts_function_decl_tree_pointers): Likewise.
+	(lto_input_ts_type_common_tree_pointers): Likewise.
+	(lto_input_ts_type_non_common_tree_pointers): Likewise.
+	(lto_input_ts_list_tree_pointers): Likewise.
+	(lto_input_ts_vec_tree_pointers): Likewise.
+	(lto_input_ts_exp_tree_pointers): Likewise.
+	(lto_input_ts_block_tree_pointers): Likewise.
+	(lto_input_ts_binfo_tree_pointers): Likewise.
+	(lto_input_ts_constructor_tree_pointers): Likewise.
+	(lto_input_ts_omp_clause_tree_pointers): Likewise.
+	* tree-streamer-out.c (streamer_write_chain): Update to use
+	stream_write_tree_ref.
+	(write_ts_common_tree_pointers): Likewise.
+	(write_ts_vector_tree_pointers): Likewise.
+	(write_ts_poly_tree_pointers): Likewise.
+	(write_ts_complex_tree_pointers): Likewise.
+	(write_ts_decl_minimal_tree_pointers): Likewise.
+	(write_ts_decl_common_tree_pointers): Likewise.
+	(write_ts_decl_non_common_tree_pointers): Likewise.
+	(write_ts_decl_with_vis_tree_pointers): Likewise.
+	(write_ts_field_decl_tree_pointers): Likewise.
+	(write_ts_function_decl_tree_pointers): Likewise.
+	(write_ts_type_common_tree_pointers): Likewise.
+	(write_ts_type_non_common_tree_pointers): Likewise.
+	(write_ts_list_tree_pointers): Likewise.
+	(write_ts_vec_tree_pointers): Likewise.
+	(write_ts_exp_tree_pointers): Likewise.
+	(write_ts_block_tree_pointers): Likewise.
+	(write_ts_binfo_tree_pointers): Likewise.
+	(write_ts_constructor_tree_pointers): Likewise.
+	(write_ts_omp_clause_tree_pointers): Likewise.
+	(streamer_write_tree_body): Likewise.
+	(streamer_write_integer_cst): Likewise.
+	* tree-streamer.h (streamer_read_chain):Declare.
+	(streamer_write_chain):Declare.
+	(streamer_write_tree_body): Update prototype.
+	(streamer_write_integer_cst): Update prototype.
+
+2020-05-29  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR bootstrap/95413
+	* configure: Regenerated.
+
+2020-05-29  Andrew Stubbs  <ams@codesourcery.com>
+
+	* config/gcn/gcn-valu.md (add<mode>3_vcc_zext_dup): Add early clobber.
+	(add<mode>3_vcc_zext_dup_exec): Likewise.
+	(add<mode>3_vcc_zext_dup2): Likewise.
+	(add<mode>3_vcc_zext_dup2_exec): Likewise.
+
+2020-05-29  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95272
+	* tree-vectorizer.h (_slp_tree::representative): Add.
+	(SLP_TREE_REPRESENTATIVE): Likewise.
+	* tree-vect-loop.c (vectorizable_reduction): Adjust SLP
+	node gathering.
+	(vectorizable_live_operation): Use the representative to
+	attach the reduction info to.
+	* tree-vect-slp.c (_slp_tree::_slp_tree): Initialize
+	SLP_TREE_REPRESENTATIVE.
+	(vect_create_new_slp_node): Likewise.
+	(slp_copy_subtree): Copy it.
+	(vect_slp_rearrange_stmts): Re-arrange even COND_EXPR stmts.
+	(vect_slp_analyze_node_operations_1): Pass the representative
+	to vect_analyze_stmt.
+	(vect_schedule_slp_instance): Pass the representative to
+	vect_transform_stmt.
+
+2020-05-29  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95356
+	* tree-vect-stmts.c (vectorizable_shift): Do in-place SLP
+	node hacking during analysis.
+
+2020-05-29  Jan Hubicka  <hubicka@ucw.cz>
+
+	PR lto/95362
+	* lto-streamer-out.c (lto_output_tree): Disable redundant streaming.
+
+2020-05-29  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95403
+	* tree-vect-stmts.c (vect_init_vector_1): Guard against NULL
+	stmt_vinfo.
+
+2020-05-29  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/95315
+	* omp-general.c (omp_resolve_declare_variant): Fix up addition of
+	declare variant cgraph node removal callback.
+
+2020-05-29  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/95052
+	* expr.c (store_expr): If expr_size is constant and significantly
+	larger than TREE_STRING_LENGTH, set temp to just the
+	TREE_STRING_LENGTH portion of the STRING_CST.
+
+2020-05-29  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95393
+	* tree-ssa-phiopt.c (minmax_replacement): Use gimple_build
+	to build the min/max expression so we simplify cases like
+	MAX(0, s) immediately.
+
+2020-05-29  Joe Ramsay  <joe.ramsay@arm.com>
+
+	* config/aarch64/aarch64-sve.md (<LOGICAL:optab><mode>3): Add support
+	for unpacked EOR, ORR, AND.
+
+2020-05-28  Nicolas Bértolo  <nicolasbertolo@gmail.com>
+
+	* Makefile.in: don't look for libiberty in the "pic" subdirectory
+	when building for Mingw. Add dependency on xgcc with the proper
+	extension.
+
+2020-05-28  Jeff Law  <law@redhat.com>
+
+	* config/h8300/logical.md (bclrhi_msx): Remove pattern.
+
+2020-05-28  Jeff Law  <law@redhat.com>
+
+	* config/h8300/logical.md (HImode H8/SX bit-and splitter): Don't
+	make a nonzero adjustment to the memory offset.
+	(b<ior,xor>hi_msx): Turn into a splitter.
+
+2020-05-28  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+
+	* gimple-ssa-store-merging.c (merged_store_group::can_be_merged_into):
+	Fix off-by-one error.
+
+2020-05-28  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64.h (aarch64_frame): Add a comment above
+	wb_candidate1 and wb_candidate2.
+	* config/aarch64/aarch64.c (aarch64_layout_frame): Invalidate
+	wb_candidate1 and wb_candidate2 if we decided not to use them.
+
+2020-05-28  Richard Sandiford  <richard.sandiford@arm.com>
+
+	PR testsuite/95361
+	* config/aarch64/aarch64.c (aarch64_expand_epilogue): Assert that
+	we have at least some CFI operations when using a frame pointer.
+	Only redefine the CFA if we have CFI operations.
+
+2020-05-28  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-slp.c (vect_prologue_cost_for_slp): Remove
+	case for !SLP_TREE_VECTYPE.
+	(vect_slp_analyze_node_operations): Adjust.
+
+2020-05-28  Richard Biener  <rguenther@suse.de>
+
+	* tree-vectorizer.h (_slp_tree::vec_defs): Add.
+	(SLP_TREE_VEC_DEFS): Likewise.
+	* tree-vect-slp.c (_slp_tree::_slp_tree): Adjust.
+	(_slp_tree::~_slp_tree): Likewise.
+	(vect_mask_constant_operand_p): Remove unused function.
+	(vect_get_constant_vectors): Rename to...
+	(vect_create_constant_vectors): ... this.  Take the
+	invariant node as argument and code generate it.  Remove
+	dead code, remove temporary asserts.  Pass a NULL stmt_info
+	to vect_init_vector.
+	(vect_get_slp_defs): Simplify.
+	(vect_schedule_slp_instance): Code-generate externals and
+	invariants using vect_create_constant_vectors.
+
+2020-05-28  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-stmts.c (vect_finish_stmt_generation_1):
+	Conditionalize stmt_info use, assert the new stmt cannot throw
+	when not specified.
+	(vect_finish_stmt_generation): Adjust assert.
+
+2020-05-28  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95273
+	PR tree-optimization/95356
+	* tree-vect-stmts.c (vectorizable_shift): Adjust when and to
+	what we set the vector type of the shift operand SLP node
+	again.
+
+2020-05-28  Andrea Corallo  <andrea.corallo@arm.com>
+
+	* config/arm/arm.c (mve_vector_mem_operand): Fix unwanted
+	fall-throughs.
+
+2020-05-28  Martin Liska  <mliska@suse.cz>
+
+	PR web/95380
+	* doc/invoke.texi: Add missing params, remove max-once-peeled-insns and
+	rename ipcp-unit-growth to ipa-cp-unit-growth.
+
+2020-05-28  Hongtao Liu  <hongtao.liu@intel.com>
+
+	* config/i386/sse.md (*avx512vl_<code>v2div2qi2_store_1): Rename
+	from *avx512vl_<code>v2div2qi_store and refine memory size of
+	the pattern.
+	(*avx512vl_<code>v2div2qi2_mask_store_1): Ditto.
+	(*avx512vl_<code><mode>v4qi2_store_1): Ditto.
+	(*avx512vl_<code><mode>v4qi2_mask_store_1): Ditto.
+	(*avx512vl_<code><mode>v8qi2_store_1): Ditto.
+	(*avx512vl_<code><mode>v8qi2_mask_store_1): Ditto.
+	(*avx512vl_<code><mode>v4hi2_store_1): Ditto.
+	(*avx512vl_<code><mode>v4hi2_mask_store_1): Ditto.
+	(*avx512vl_<code>v2div2hi2_store_1): Ditto.
+	(*avx512vl_<code>v2div2hi2_mask_store_1): Ditto.
+	(*avx512vl_<code>v2div2si2_store_1): Ditto.
+	(*avx512vl_<code>v2div2si2_mask_store_1): Ditto.
+	(*avx512f_<code>v8div16qi2_store_1): Ditto.
+	(*avx512f_<code>v8div16qi2_mask_store_1): Ditto.
+	(*avx512vl_<code>v2div2qi2_store_2): New define_insn_and_split.
+	(*avx512vl_<code>v2div2qi2_mask_store_2): Ditto.
+	(*avx512vl_<code><mode>v4qi2_store_2): Ditto.
+	(*avx512vl_<code><mode>v4qi2_mask_store_2): Ditto.
+	(*avx512vl_<code><mode>v8qi2_store_2): Ditto.
+	(*avx512vl_<code><mode>v8qi2_mask_store_2): Ditto.
+	(*avx512vl_<code><mode>v4hi2_store_2): Ditto.
+	(*avx512vl_<code><mode>v4hi2_mask_store_2): Ditto.
+	(*avx512vl_<code>v2div2hi2_store_2): Ditto.
+	(*avx512vl_<code>v2div2hi2_mask_store_2): Ditto.
+	(*avx512vl_<code>v2div2si2_store_2): Ditto.
+	(*avx512vl_<code>v2div2si2_mask_store_2): Ditto.
+	(*avx512f_<code>v8div16qi2_store_2): Ditto.
+	(*avx512f_<code>v8div16qi2_mask_store_2): Ditto.
+	* config/i386/i386-builtin-types.def: Adjust builtin type.
+	* config/i386/i386-expand.c: Ditto.
+	* config/i386/i386-builtin.def: Adjust builtin.
+	* config/i386/avx512fintrin.h: Ditto.
+	* config/i386/avx512vlbwintrin.h: Ditto.
+	* config/i386/avx512vlintrin.h: Ditto.
+
+2020-05-28  Dong JianQiang  <dongjianqiang2@huawei.com>
+
+	PR gcov-profile/95332
+	* gcov-io.c (gcov_var::endian): Move field.
+	(from_file): Add IN_GCOV_TOOL check.
+	* gcov-io.h (gcov_magic): Ditto.
+
+2020-05-28  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* config/xtensa/xtensa.c (xtensa_delegitimize_address): New
+	function.
+	(TARGET_DELEGITIMIZE_ADDRESS): New macro.
+
+2020-05-27  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+
+	* builtin-types.def (BT_UINT128): New primitive type.
+	(BT_FN_UINT128_UINT128): New function type.
+	* builtins.def (BUILT_IN_BSWAP128): New GCC builtin.
+	* doc/extend.texi (__builtin_bswap128): Document it.
+	* builtins.c (expand_builtin): Deal with BUILT_IN_BSWAP128.
+	(is_inexpensive_builtin): Likewise.
+	* fold-const-call.c (fold_const_call_ss): Likewise.
+	* fold-const.c (tree_call_nonnegative_warnv_p): Likewise.
+	* tree-ssa-ccp.c (evaluate_stmt): Likewise.
+	* tree-vect-stmts.c (vect_get_data_ptr_increment): Likewise.
+	(vectorizable_call): Likewise.
+	* optabs.c (expand_unop): Always use the double word path for it.
+	* tree-core.h (enum tree_index): Add TI_UINT128_TYPE.
+	* tree.h (uint128_type_node): New global type.
+	* tree.c (build_common_tree_nodes): Build it if TImode is supported.
+
+2020-05-27  Uroš Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/mmx.md (*mmx_haddv2sf3): Remove SSE alternatives.
+	(mmx_hsubv2sf3): Ditto.
+	(mmx_haddsubv2sf3): New expander.
+	(*mmx_haddsubv2sf3): Rename from mmx_addsubv2sf3. Correct
+	RTL template to model horizontal subtraction and addition.
+	* config/i386/i386-builtin.def (IX86_BUILTIN_PFPNACC):
+	Update for rename.
+
+2020-05-27  Uroš Bizjak  <ubizjak@gmail.com>
+
+	PR target/95355
+	* config/i386/sse.md
+	(<mask_codefor>avx512f_<code>v16qiv16si2<mask_name>):
+	Remove %q operand modifier from insn template.
+	(avx512f_<code>v8hiv8di2<mask_name>): Ditto.
+
+2020-05-27  Uroš Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/mmx.md (mmx_pswapdsf2): Add SSE alternatives.
+	Enable insn pattern for TARGET_MMX_WITH_SSE.
+	(*mmx_movshdup): New insn pattern.
+	(*mmx_movsldup): Ditto.
+	(*mmx_movss): Ditto.
+	* config/i386/i386-expand.c (ix86_vectorize_vec_perm_const):
+	Handle E_V2SFmode.
+	(expand_vec_perm_movs): Handle E_V2SFmode.
+	(expand_vec_perm_even_odd): Ditto.
+	(expand_vec_perm_broadcast_1): Assert that E_V2SFmode
+	is already handled by standard shuffle patterns.
+
+2020-05-27  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95295
+	* tree-ssa-loop-im.c (sm_seq_valid_bb): Fix sinking after
+	merging stores from paths.
+
+2020-05-27  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95356
+	* tree-vect-stmts.c (vectorizable_shift): Adjust vector
+	type for the shift operand.
+
+2020-05-27  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95335
+	* tree-vect-slp.c (vect_slp_analyze_node_operations): Reset
+	lvisited for nodes made external.
+
+2020-05-27  Richard Biener  <rguenther@suse.de>
+
+	* dump-context.h (debug_dump_context): New class.
+	(dump_context): Make it friend.
+	* dumpfile.c (debug_dump_context::debug_dump_context):
+	Implement.
+	(debug_dump_context::~debug_dump_context): Likewise.
+	* tree-vect-slp.c: Include dump-context.h.
+	(vect_print_slp_tree): Dump a single SLP node.
+	(debug): New overload for slp_tree.
+	(vect_print_slp_graph): Rename from vect_print_slp_tree and
+	use that.
+	(vect_analyze_slp_instance): Adjust.
+
+2020-05-27  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/95315
+	* omp-general.c (omp_declare_variant_remove_hook): New function.
+	(omp_resolve_declare_variant): Always return base if it is already
+	declare_variant_alt magic decl itself.  Register
+	omp_declare_variant_remove_hook as cgraph node removal hook.
+
+2020-05-27  Jeff Law  <law@redhat.com>
+
+	* config/h8300/testcompare.md (tst_extzv_1_n): Do not accept constants
+	for the primary input operand.
+	(tstsi_variable_bit_qi): Similarly.
+
+2020-05-26  Uroš Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/mmx.md (mmx_pswapdv2si2): Add SSE2 alternative.
+
+2020-05-26  Tobias Burnus  <tobias@codesourcery.com>
+
+	PR ipa/95320
+	* ipa-utils.h (odr_type_p): Also permit calls with
+	only flag_generate_offload set.
+
+2020-05-26  Alexandre Oliva  <oliva@adacore.com>
+
+	* gcc.c (validate_switches): Add braced parameter.  Adjust all
+	callers.  Expected and skip trailing brace only if braced.
+	Return after handling one atom otherwise.
+	(DUMPS_OPTIONS): New.
+	(cpp_debug_options): Define in terms of it.
+
+2020-05-26  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/95327
+	* tree-vect-stmts.c (vectorizable_shift): Compute op1_vectype
+	when we are not using a scalar shift.
+
+2020-05-26  Uroš Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/mmx.md (*mmx_pshufd_1): New insn pattern.
+	* config/i386/i386-expand.c (ix86_vectorize_vec_perm_const):
+	Handle E_V2SImode and E_V4HImode.
+	(expand_vec_perm_even_odd_1): Handle E_V4HImode.
+	Assert that E_V2SImode is already handled.
+	(expand_vec_perm_broadcast_1): Assert that E_V2SImode
+	is already handled by standard shuffle patterns.
+
+2020-05-26  Jan Hubicka  <jh@suse.cz>
+
+	* tree.c (free_lang_data_in_type): Simpify types of TYPE_VALUES in
+	enumeral types.
+
+2020-05-26  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/95197
+	* gimplify.c (find_combined_omp_for): Move to omp-general.c.
+	* omp-general.h (find_combined_omp_for): Declare.
+	* omp-general.c: Include tree-iterator.h.
+	(find_combined_omp_for): New function, moved from gimplify.c.
+
+2020-05-26  Alexandre Oliva  <oliva@adacore.com>
+
+	* common.opt (aux_base_name): Define.
+	(dumpbase, dumpdir): Mark as Driver options.
+	(-dumpbase, -dumpdir): Likewise.
+	(dumpbase-ext, -dumpbase-ext): New.
+	(auxbase, auxbase-strip): Drop.
+	* doc/invoke.texi (-dumpbase, -dumpbase-ext, -dumpdir):
+	Document.
+	(-o): Introduce the notion of primary output, mention it
+	influences auxiliary and dump output names as well, add
+	examples.
+	(-save-temps): Adjust, move examples into -dump*.
+	(-save-temps=cwd, -save-temps=obj): Likewise.
+	(-fdump-final-insns): Adjust.
+	* dwarf2out.c (gen_producer_string): Drop auxbase and
+	auxbase_strip; add dumpbase_ext.
+	* gcc.c (enum save_temps): Add SAVE_TEMPS_DUMP.
+	(save_temps_prefix, save_temps_length): Drop.
+	(save_temps_overrides_dumpdir): New.
+	(dumpdir, dumpbase, dumpbase_ext): New.
+	(dumpdir_length, dumpdir_trailing_dash_added): New.
+	(outbase, outbase_length): New.
+	(The Specs Language): Introduce %".  Adjust %b and %B.
+	(ASM_FINAL_SPEC): Use %b.dwo for an aux output name always.
+	Precede object file with %w when it's the primary output.
+	(cpp_debug_options): Do not pass on incoming -dumpdir,
+	-dumpbase and -dumpbase-ext options; recompute them with
+	%:dumps.
+	(cc1_options): Drop auxbase with and without compare-debug;
+	use cpp_debug_options instead of dumpbase.  Mark asm output
+	with %w when it's the primary output.
+	(static_spec_functions): Drop %:compare-debug-auxbase-opt and
+	%:replace-exception.  Add %:dumps.
+	(driver_handle_option): Implement -save-temps=*/-dumpdir
+	mutual overriding logic.  Save dumpdir, dumpbase and
+	dumpbase-ext options.  Do not save output_file in
+	save_temps_prefix.
+	(adds_single_suffix_p): New.
+	(single_input_file_index): New.
+	(process_command): Combine output dir, output base name, and
+	dumpbase into dumpdir and outbase.
+	(set_collect_gcc_options): Pass a possibly-adjusted -dumpdir.
+	(do_spec_1): Optionally dumpdir instead of save_temps_prefix,
+	and outbase instead of input_basename in %b, %B and in
+	-save-temps aux files.  Handle empty argument %".
+	(driver::maybe_run_linker): Adjust dumpdir and auxbase.
+	(compare_debug_dump_opt_spec_function): Adjust gkd dump file
+	naming.  Spec-quote the computed -fdump-final-insns file name.
+	(debug_auxbase_opt): Drop.
+	(compare_debug_self_opt_spec_function): Drop auxbase-strip
+	computation.
+	(compare_debug_auxbase_opt_spec_function): Drop.
+	(not_actual_file_p): New.
+	(replace_extension_spec_func): Drop.
+	(dumps_spec_func): New.
+	(convert_white_space): Split-out parts into...
+	(quote_string, whitespace_to_convert_p): ... these.  New.
+	(quote_spec_char_p, quote_spec, quote_spec_arg): New.
+	(driver::finalize): Release and reset new variables; drop
+	removed ones.
+	* lto-wrapper.c (HAVE_TARGET_EXECUTABLE_SUFFIX): Define if...
+	(TARGET_EXECUTABLE_SUFFIX): ... is defined; define this to the
+	empty string otherwise.
+	(